You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Custom react hook that clamp multiline text to a specified line number. Can optionally specify trailing spaces.
Fix some bugs and use cleaner implementation. Modified from:
constcomponent=()=>{const{
longEnoughToClamp,
textContainerRef,
addOnsContainerRef,
wrapperContainerRef,
clamped,
clampedText,
toggleClamp,}=useClampText<{WrapperContainer: HTMLDivElement;TextContainer: HTMLSpanElement;AddonsContainer: HTMLButtonElement;}>({originalText: 'some potentially really long text...',lines: 2,// At most how many linesendSpaceNumber: 4,// how many trailing space,unitSpaceChar: '*',// single trailing space should be the width of this chardebounceTime: 100,// in miliseconds});return(<divref={wrapperContainerRef}><spanref={textContainerRef}>{clampedText}</span>{longEnoughToClamp ? (<buttonref={addOnsContainerRef}onClick={toggleClamp}>{clamped ? '...show more' : '...show less'}</button>) : null}</div>);};
API reference
Arguments
property
type
required
default
description
originalText
string
false
''
Text you wish to clamp.
lines
number
false
2
Number of visible lines when collapsed.
debounceTime
number
false
300
How many time in miliseconds before the clamp action will be triggered when window resizes.
minSpaceCharNum
number
false
0
The minium trailing space number, will make the process of adding space to the end of the addons component more efficient.
unitSpaceChar
string
false
'.'
The width of single trailing space, pass a char for the measurement of width.
endSpaceNumber
number
false
0
How many trailing spaces. Each of them will be the width of unitSpaceChar.
Returns
property
type
description
longEnoughtToClamp
boolean
Whether the originalText is longer enough to exceeds the given line number by it self.
clampedText
string
The string to be rendered.
clamped
boolean
A state indicating whether the text should be clamped if long enough.