Skip to content

Commit 7ac3fd9

Browse files
authored
feat(customize-tools): add tool overide to customize table (#1230)
* feat(expandable-text): add new hook for expandable-text * feat(tool-override): add shared types * feat(tool-override): add generic utils in a dedicated files * feat(tool-override): add build utils in a dedicated files * feat(tool-override): table logic on a dedicated hook * feat(customize-tools): add tool overide to customize table * chore: remove console.log * chore: remove console.log on shouldblock * refactor: make the code more readable
1 parent 08b7d96 commit 7ac3fd9

File tree

14 files changed

+5682
-260
lines changed

14 files changed

+5682
-260
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { useState, useCallback } from 'react'
2+
3+
interface UseExpandableTextOptions {
4+
lengthLimit?: number
5+
}
6+
7+
export function useExpandableText(options: UseExpandableTextOptions = {}) {
8+
const { lengthLimit = 200 } = options
9+
const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set())
10+
11+
const toggle = useCallback((key: string) => {
12+
setExpandedKeys((prev) => {
13+
const newSet = new Set(prev)
14+
if (newSet.has(key)) {
15+
newSet.delete(key)
16+
} else {
17+
newSet.add(key)
18+
}
19+
return newSet
20+
})
21+
}, [])
22+
23+
const isExpanded = useCallback(
24+
(key: string) => expandedKeys.has(key),
25+
[expandedKeys]
26+
)
27+
28+
const shouldCollapse = useCallback(
29+
(text: string) => text.length > lengthLimit,
30+
[lengthLimit]
31+
)
32+
33+
return {
34+
toggle,
35+
isExpanded,
36+
shouldCollapse,
37+
lengthLimit,
38+
}
39+
}

0 commit comments

Comments
 (0)