rsuite 5.60.1 → 5.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Accordion/styles/index.css +4 -4
- package/AutoComplete/styles/index.css +58 -22
- package/Button/styles/index.css +12 -8
- package/Button/styles/mixin.less +1 -1
- package/CHANGELOG.md +37 -0
- package/Calendar/styles/index.css +16 -15
- package/CascadeTree/styles/index.css +11 -9
- package/CascadeTree/styles/index.less +7 -0
- package/CascadeTree/styles/search.less +0 -10
- package/Cascader/styles/index.css +60 -31
- package/CheckPicker/styles/index.css +59 -27
- package/CheckPicker/styles/index.less +3 -3
- package/CheckTree/styles/index.css +160 -134
- package/CheckTree/styles/index.less +141 -1
- package/CheckTreePicker/styles/index.css +170 -126
- package/CheckTreePicker/styles/index.less +8 -181
- package/Checkbox/styles/index.css +7 -8
- package/Checkbox/styles/index.less +1 -5
- package/DateInput/styles/index.css +4 -4
- package/DatePicker/styles/index.css +63 -26
- package/DatePicker/styles/index.less +1 -0
- package/DateRangeInput/styles/index.css +4 -4
- package/DateRangePicker/styles/index.css +69 -26
- package/DateRangePicker/styles/index.less +3 -0
- package/Dropdown/styles/index.css +14 -13
- package/Highlight/package.json +7 -0
- package/Highlight/styles/index.css +8 -0
- package/Highlight/styles/index.less +6 -0
- package/IconButton/styles/index.css +11 -10
- package/Input/styles/index.css +4 -4
- package/InputGroup/styles/index.css +18 -17
- package/InputGroup/styles/index.less +1 -1
- package/InputNumber/styles/index.css +19 -18
- package/InputPicker/styles/index.css +58 -22
- package/LICENSE +1 -1
- package/MultiCascadeTree/styles/index.css +61 -36
- package/MultiCascadeTree/styles/index.less +1 -1
- package/MultiCascader/styles/index.css +704 -679
- package/MultiCascader/styles/index.less +0 -1
- package/Nav/styles/index.css +15 -14
- package/Navbar/styles/index.css +14 -13
- package/Pagination/styles/index.css +62 -26
- package/Panel/styles/index.css +4 -4
- package/Placeholder/styles/index.css +2 -3
- package/Placeholder/styles/index.less +2 -3
- package/README.md +53 -90
- package/Radio/styles/index.css +7 -7
- package/Radio/styles/index.less +1 -5
- package/RangeSlider/styles/index.css +2 -2
- package/Rate/styles/index.css +1 -1
- package/Rate/styles/index.less +1 -1
- package/SelectPicker/styles/index.css +58 -22
- package/Slider/styles/index.css +2 -2
- package/Slider/styles/index.less +2 -2
- package/Steps/styles/index.css +6 -1
- package/Steps/styles/index.less +2 -1
- package/Tabs/styles/index.css +15 -14
- package/TagInput/styles/index.css +59 -27
- package/TagPicker/styles/index.css +59 -27
- package/Toggle/styles/index.css +16 -8
- package/Toggle/styles/index.less +2 -1
- package/Tree/styles/indent-line.less +8 -0
- package/Tree/styles/index.css +140 -141
- package/Tree/styles/index.less +188 -1
- package/Tree/styles/toggle.less +36 -0
- package/TreePicker/styles/index.css +142 -134
- package/TreePicker/styles/index.less +4 -234
- package/Uploader/styles/index.css +12 -11
- package/cjs/@types/common.d.ts +41 -4
- package/cjs/AutoComplete/AutoComplete.js +2 -1
- package/cjs/CascadeTree/CascadeTree.js +8 -7
- package/cjs/CascadeTree/SearchView.js +7 -14
- package/cjs/CascadeTree/hooks/usePaths.js +4 -4
- package/cjs/CascadeTree/hooks/useSearch.js +2 -1
- package/cjs/CascadeTree/utils.d.ts +0 -11
- package/cjs/CascadeTree/utils.js +0 -23
- package/cjs/Cascader/Cascader.js +17 -16
- package/cjs/CheckPicker/CheckPicker.js +26 -29
- package/cjs/CheckTree/CheckTree.d.ts +16 -0
- package/cjs/CheckTree/CheckTree.js +112 -0
- package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
- package/cjs/CheckTree/CheckTreeNode.js +117 -0
- package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
- package/cjs/CheckTree/CheckTreeView.js +310 -0
- package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
- package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
- package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
- package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
- package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
- package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
- package/cjs/CheckTree/index.d.ts +2 -14
- package/cjs/CheckTree/index.js +2 -23
- package/cjs/CheckTree/utils.d.ts +53 -0
- package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
- package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
- package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
- package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
- package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
- package/cjs/DateInput/DateField.js +3 -1
- package/cjs/DateInput/DateInput.js +17 -16
- package/{esm/DateInput → cjs/DateInput/hooks}/useDateInputState.d.ts +1 -1
- package/cjs/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
- package/cjs/DateInput/hooks/useFieldCursor.d.ts +6 -0
- package/cjs/DateInput/hooks/useFieldCursor.js +56 -0
- package/cjs/DateInput/hooks/useSelectedState.d.ts +14 -0
- package/cjs/DateInput/hooks/useSelectedState.js +23 -0
- package/cjs/DateInput/index.d.ts +5 -3
- package/cjs/DateInput/index.js +11 -5
- package/cjs/DateInput/utils.d.ts +0 -1
- package/cjs/DateInput/utils.js +2 -24
- package/cjs/DatePicker/DatePicker.d.ts +4 -0
- package/cjs/DatePicker/DatePicker.js +20 -5
- package/cjs/DatePicker/types.d.ts +0 -4
- package/cjs/DateRangeInput/DateRangeInput.js +16 -17
- package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
- package/cjs/DateRangePicker/DateRangePicker.js +71 -51
- package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
- package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
- package/cjs/DateRangePicker/types.d.ts +1 -0
- package/cjs/Highlight/Highlight.d.ts +14 -0
- package/cjs/Highlight/Highlight.js +58 -0
- package/cjs/Highlight/index.d.ts +3 -0
- package/cjs/Highlight/index.js +9 -0
- package/cjs/Highlight/utils/highlightText.d.ts +5 -0
- package/cjs/Highlight/utils/highlightText.js +29 -0
- package/cjs/InputPicker/InputPicker.js +37 -41
- package/cjs/MultiCascadeTree/SearchView.js +6 -14
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
- package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
- package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
- package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
- package/cjs/MultiCascadeTree/utils.d.ts +4 -4
- package/cjs/MultiCascadeTree/utils.js +20 -11
- package/cjs/MultiCascader/MultiCascader.js +12 -12
- package/cjs/SelectPicker/SelectPicker.js +2 -6
- package/cjs/Tree/IndentLine.d.ts +3 -0
- package/cjs/Tree/IndentLine.js +18 -0
- package/cjs/Tree/Tree.d.ts +4 -92
- package/cjs/Tree/Tree.js +79 -20
- package/cjs/Tree/TreeNode.d.ts +101 -0
- package/cjs/Tree/TreeNode.js +147 -0
- package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
- package/cjs/Tree/TreeNodeToggle.js +56 -0
- package/cjs/Tree/TreeProvider.d.ts +52 -0
- package/cjs/Tree/TreeProvider.js +84 -0
- package/cjs/Tree/TreeView.d.ts +68 -0
- package/cjs/Tree/TreeView.js +305 -0
- package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
- package/cjs/Tree/hooks/useExpandTree.js +77 -0
- package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
- package/cjs/Tree/hooks/useFlattenTree.js +98 -0
- package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
- package/cjs/Tree/hooks/useFocusTree.js +158 -0
- package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
- package/cjs/Tree/hooks/useForceUpdate.js +16 -0
- package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
- package/cjs/Tree/hooks/useTreeDrag.js +268 -0
- package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
- package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
- package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
- package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
- package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
- package/cjs/Tree/hooks/useTreeSearch.js +74 -0
- package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
- package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
- package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
- package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
- package/cjs/Tree/types.d.ts +257 -0
- package/cjs/Tree/types.js +33 -0
- package/cjs/Tree/utils/flattenTree.d.ts +25 -0
- package/cjs/Tree/utils/flattenTree.js +95 -0
- package/cjs/Tree/utils/focusableTree.d.ts +55 -0
- package/cjs/Tree/utils/focusableTree.js +157 -0
- package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
- package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
- package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
- package/cjs/Tree/utils/getExpandItemValues.js +21 -0
- package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
- package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
- package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
- package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
- package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
- package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
- package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
- package/cjs/Tree/utils/indentTreeNode.js +18 -0
- package/cjs/Tree/utils/index.d.ts +11 -0
- package/cjs/Tree/utils/index.js +35 -0
- package/cjs/Tree/utils/isExpand.d.ts +6 -0
- package/cjs/Tree/utils/isExpand.js +14 -0
- package/cjs/Tree/utils/isSearching.d.ts +1 -0
- package/cjs/Tree/utils/isSearching.js +10 -0
- package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
- package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
- package/cjs/TreePicker/TreePicker.d.ts +27 -21
- package/cjs/TreePicker/TreePicker.js +155 -575
- package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
- package/cjs/TreePicker/hooks/useFocusState.js +53 -0
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +3 -1
- package/cjs/internals/Picker/Listbox.d.ts +40 -10
- package/cjs/internals/Picker/Listbox.js +21 -16
- package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
- package/cjs/internals/Picker/PickerIndicator.js +7 -3
- package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
- package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
- package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
- package/cjs/internals/Picker/index.d.ts +0 -1
- package/cjs/internals/Picker/index.js +1 -4
- package/cjs/internals/Picker/utils.js +12 -12
- package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
- package/cjs/internals/Tree/index.d.ts +1 -0
- package/cjs/internals/Tree/index.js +8 -0
- package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
- package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
- package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
- package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
- package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
- package/cjs/internals/Tree/utils/getParentMap.js +52 -0
- package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
- package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
- package/cjs/internals/Tree/utils/index.d.ts +4 -0
- package/cjs/internals/Tree/utils/index.js +14 -0
- package/cjs/internals/Windowing/List.d.ts +1 -0
- package/cjs/internals/Windowing/List.js +5 -1
- package/cjs/internals/Windowing/index.d.ts +1 -1
- package/cjs/internals/Windowing/index.js +4 -2
- package/cjs/internals/hooks/index.d.ts +1 -0
- package/cjs/internals/hooks/index.js +8 -0
- package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
- package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
- package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
- package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
- package/cjs/internals/utils/index.d.ts +2 -0
- package/cjs/internals/utils/index.js +9 -0
- package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
- package/cjs/internals/utils/stringifyReactNode.js +17 -0
- package/cjs/utils/constants.d.ts +0 -2
- package/cjs/utils/constants.js +1 -6
- package/cjs/utils/getDataGroupBy.js +3 -3
- package/cjs/utils/index.d.ts +0 -3
- package/cjs/utils/index.js +1 -10
- package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/rsuite-no-reset-rtl.css +301 -302
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +303 -306
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +302 -303
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +304 -307
- package/dist/rsuite.js +657 -140
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/@types/common.d.ts +41 -4
- package/esm/AutoComplete/AutoComplete.js +2 -1
- package/esm/CascadeTree/CascadeTree.js +2 -1
- package/esm/CascadeTree/SearchView.js +6 -13
- package/esm/CascadeTree/hooks/usePaths.js +1 -1
- package/esm/CascadeTree/hooks/useSearch.js +2 -1
- package/esm/CascadeTree/utils.d.ts +0 -11
- package/esm/CascadeTree/utils.js +0 -22
- package/esm/Cascader/Cascader.js +2 -1
- package/esm/CheckPicker/CheckPicker.js +4 -7
- package/esm/CheckTree/CheckTree.d.ts +16 -0
- package/esm/CheckTree/CheckTree.js +105 -0
- package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
- package/esm/CheckTree/CheckTreeNode.js +110 -0
- package/esm/CheckTree/CheckTreeView.d.ts +70 -0
- package/esm/CheckTree/CheckTreeView.js +304 -0
- package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
- package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
- package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
- package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
- package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
- package/esm/CheckTree/hooks/useTreeValue.js +16 -0
- package/esm/CheckTree/index.d.ts +2 -14
- package/esm/CheckTree/index.js +1 -21
- package/esm/CheckTree/utils.d.ts +53 -0
- package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
- package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
- package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
- package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
- package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
- package/esm/DateInput/DateField.js +3 -1
- package/esm/DateInput/DateInput.js +19 -18
- package/{cjs/DateInput → esm/DateInput/hooks}/useDateInputState.d.ts +1 -1
- package/esm/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
- package/esm/DateInput/hooks/useFieldCursor.d.ts +6 -0
- package/esm/DateInput/hooks/useFieldCursor.js +49 -0
- package/esm/DateInput/hooks/useSelectedState.d.ts +14 -0
- package/esm/DateInput/hooks/useSelectedState.js +17 -0
- package/esm/DateInput/index.d.ts +5 -3
- package/esm/DateInput/index.js +5 -3
- package/esm/DateInput/utils.d.ts +0 -1
- package/esm/DateInput/utils.js +2 -23
- package/esm/DatePicker/DatePicker.d.ts +4 -0
- package/esm/DatePicker/DatePicker.js +20 -5
- package/esm/DatePicker/types.d.ts +0 -4
- package/esm/DateRangeInput/DateRangeInput.js +17 -18
- package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
- package/esm/DateRangePicker/DateRangePicker.js +71 -51
- package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
- package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
- package/esm/DateRangePicker/types.d.ts +1 -0
- package/esm/Highlight/Highlight.d.ts +14 -0
- package/esm/Highlight/Highlight.js +52 -0
- package/esm/Highlight/index.d.ts +3 -0
- package/esm/Highlight/index.js +3 -0
- package/esm/Highlight/utils/highlightText.d.ts +5 -0
- package/esm/Highlight/utils/highlightText.js +25 -0
- package/esm/InputPicker/InputPicker.js +3 -7
- package/esm/MultiCascadeTree/SearchView.js +6 -14
- package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
- package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
- package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
- package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
- package/esm/MultiCascadeTree/utils.d.ts +4 -4
- package/esm/MultiCascadeTree/utils.js +18 -9
- package/esm/MultiCascader/MultiCascader.js +1 -1
- package/esm/SelectPicker/SelectPicker.js +2 -6
- package/esm/Tree/IndentLine.d.ts +3 -0
- package/esm/Tree/IndentLine.js +12 -0
- package/esm/Tree/Tree.d.ts +4 -92
- package/esm/Tree/Tree.js +78 -18
- package/esm/Tree/TreeNode.d.ts +101 -0
- package/esm/Tree/TreeNode.js +141 -0
- package/esm/Tree/TreeNodeToggle.d.ts +9 -0
- package/esm/Tree/TreeNodeToggle.js +50 -0
- package/esm/Tree/TreeProvider.d.ts +52 -0
- package/esm/Tree/TreeProvider.js +74 -0
- package/esm/Tree/TreeView.d.ts +68 -0
- package/esm/Tree/TreeView.js +299 -0
- package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
- package/esm/Tree/hooks/useExpandTree.js +70 -0
- package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
- package/esm/Tree/hooks/useFlattenTree.js +92 -0
- package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
- package/esm/Tree/hooks/useFocusTree.js +153 -0
- package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
- package/esm/Tree/hooks/useForceUpdate.js +11 -0
- package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
- package/esm/Tree/hooks/useTreeDrag.js +264 -0
- package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
- package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
- package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
- package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
- package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
- package/esm/Tree/hooks/useTreeSearch.js +69 -0
- package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
- package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
- package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
- package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
- package/esm/Tree/types.d.ts +257 -0
- package/esm/Tree/types.js +30 -0
- package/esm/Tree/utils/flattenTree.d.ts +25 -0
- package/esm/Tree/utils/flattenTree.js +88 -0
- package/esm/Tree/utils/focusableTree.d.ts +55 -0
- package/esm/Tree/utils/focusableTree.js +146 -0
- package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
- package/esm/Tree/utils/formatNodeRefKey.js +7 -0
- package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
- package/esm/Tree/utils/getExpandItemValues.js +17 -0
- package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
- package/esm/Tree/utils/getNodeParentKeys.js +17 -0
- package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
- package/esm/Tree/utils/getTreeActiveNode.js +16 -0
- package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
- package/esm/Tree/utils/hasVisibleChildren.js +12 -0
- package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
- package/esm/Tree/utils/indentTreeNode.js +14 -0
- package/esm/Tree/utils/index.d.ts +11 -0
- package/esm/Tree/utils/index.js +14 -0
- package/esm/Tree/utils/isExpand.d.ts +6 -0
- package/esm/Tree/utils/isExpand.js +11 -0
- package/esm/Tree/utils/isSearching.d.ts +1 -0
- package/esm/Tree/utils/isSearching.js +5 -0
- package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
- package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
- package/esm/TreePicker/TreePicker.d.ts +27 -21
- package/esm/TreePicker/TreePicker.js +158 -579
- package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
- package/esm/TreePicker/hooks/useFocusState.js +48 -0
- package/esm/index.d.ts +2 -0
- package/esm/index.js +1 -0
- package/esm/internals/Picker/Listbox.d.ts +40 -10
- package/esm/internals/Picker/Listbox.js +22 -16
- package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
- package/esm/internals/Picker/PickerIndicator.js +7 -3
- package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
- package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
- package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
- package/esm/internals/Picker/index.d.ts +0 -1
- package/esm/internals/Picker/index.js +0 -1
- package/esm/internals/Picker/utils.js +1 -1
- package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
- package/esm/internals/Tree/index.d.ts +1 -0
- package/esm/internals/Tree/index.js +2 -0
- package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
- package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
- package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
- package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
- package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
- package/esm/internals/Tree/utils/getParentMap.js +47 -0
- package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
- package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
- package/esm/internals/Tree/utils/index.d.ts +4 -0
- package/esm/internals/Tree/utils/index.js +5 -0
- package/esm/internals/Windowing/List.d.ts +1 -0
- package/esm/internals/Windowing/List.js +3 -0
- package/esm/internals/Windowing/index.d.ts +1 -1
- package/esm/internals/Windowing/index.js +1 -1
- package/esm/internals/hooks/index.d.ts +1 -0
- package/esm/internals/hooks/index.js +2 -0
- package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
- package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
- package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
- package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
- package/esm/internals/utils/index.d.ts +2 -0
- package/esm/internals/utils/index.js +3 -0
- package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
- package/esm/internals/utils/stringifyReactNode.js +12 -0
- package/esm/utils/constants.d.ts +0 -2
- package/esm/utils/constants.js +0 -3
- package/esm/utils/getDataGroupBy.js +1 -1
- package/esm/utils/index.d.ts +0 -3
- package/esm/utils/index.js +0 -3
- package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
- package/internals/Picker/styles/index.less +27 -1
- package/package.json +2 -2
- package/styles/color-modes/dark.less +5 -1
- package/styles/color-modes/high-contrast.less +8 -2
- package/styles/color-modes/light.less +10 -5
- package/styles/index.less +1 -0
- package/TreePicker/styles/mixin.less +0 -7
- package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
- package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
- package/cjs/CheckTreePicker/utils.d.ts +0 -44
- package/cjs/Tree/TreeContext.d.ts +0 -6
- package/cjs/Tree/TreeContext.js +0 -10
- package/cjs/TreePicker/TreeNode.d.ts +0 -36
- package/cjs/TreePicker/TreeNode.js +0 -174
- package/cjs/utils/appendTooltip.d.ts +0 -10
- package/cjs/utils/appendTooltip.js +0 -20
- package/cjs/utils/stringToObject.d.ts +0 -2
- package/cjs/utils/stringToObject.js +0 -19
- package/cjs/utils/treeUtils.d.ts +0 -304
- package/cjs/utils/treeUtils.js +0 -1095
- package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
- package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
- package/esm/CheckTreePicker/utils.d.ts +0 -44
- package/esm/Tree/TreeContext.d.ts +0 -6
- package/esm/Tree/TreeContext.js +0 -4
- package/esm/TreePicker/TreeNode.d.ts +0 -36
- package/esm/TreePicker/TreeNode.js +0 -167
- package/esm/utils/appendTooltip.d.ts +0 -10
- package/esm/utils/appendTooltip.js +0 -15
- package/esm/utils/stringToObject.d.ts +0 -2
- package/esm/utils/stringToObject.js +0 -14
- package/esm/utils/treeUtils.d.ts +0 -304
- package/esm/utils/treeUtils.js +0 -1043
- /package/cjs/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
- /package/cjs/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
- /package/cjs/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
- /package/cjs/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
- /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
- /package/esm/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
- /package/esm/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
- /package/esm/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
- /package/esm/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
- /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { useEventCallback } from '../../utils';
|
|
4
|
+
import { getSafeRegExpString } from '../../internals/utils';
|
|
4
5
|
function useSearch(props) {
|
|
5
6
|
var _useState = useState(''),
|
|
6
7
|
searchKeyword = _useState[0],
|
|
@@ -7,14 +7,14 @@ interface ItemKeys {
|
|
|
7
7
|
labelKey: string;
|
|
8
8
|
childrenKey: string;
|
|
9
9
|
}
|
|
10
|
-
declare type MayHasParent<T extends Record<string, unknown>> = T & {
|
|
10
|
+
export declare type MayHasParent<T extends Record<string, unknown>> = T & {
|
|
11
11
|
parent?: MayHasParent<T>;
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* @param node
|
|
14
|
+
* get all ancestor nodes of given node
|
|
15
|
+
* @param {*} node
|
|
16
16
|
*/
|
|
17
|
-
export declare
|
|
17
|
+
export declare function getNodeParents(node: any, parentKey?: string, valueKey?: string): any[];
|
|
18
18
|
/**
|
|
19
19
|
* Check if any child nodes are selected.
|
|
20
20
|
* @param node
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import remove from 'lodash/remove';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @param node
|
|
4
|
+
* get all ancestor nodes of given node
|
|
5
|
+
* @param {*} node
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return parents;
|
|
7
|
+
export function getNodeParents(node, parentKey, valueKey) {
|
|
8
|
+
if (parentKey === void 0) {
|
|
9
|
+
parentKey = 'parent';
|
|
11
10
|
}
|
|
12
|
-
parents
|
|
13
|
-
|
|
11
|
+
var parents = [];
|
|
12
|
+
var traverse = function traverse(node) {
|
|
13
|
+
if (node !== null && node !== void 0 && node[parentKey]) {
|
|
14
|
+
traverse(node[parentKey]);
|
|
15
|
+
if (valueKey) {
|
|
16
|
+
parents.push(node[parentKey][valueKey]);
|
|
17
|
+
} else {
|
|
18
|
+
parents.push(node[parentKey]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
traverse(node);
|
|
14
23
|
return parents;
|
|
15
|
-
}
|
|
24
|
+
}
|
|
16
25
|
|
|
17
26
|
/**
|
|
18
27
|
* Check if any child nodes are selected.
|
|
@@ -7,7 +7,7 @@ import pick from 'lodash/pick';
|
|
|
7
7
|
import omit from 'lodash/omit';
|
|
8
8
|
import isFunction from 'lodash/isFunction';
|
|
9
9
|
import isNil from 'lodash/isNil';
|
|
10
|
-
import { findNodeOfTree } from '../utils
|
|
10
|
+
import { findNodeOfTree } from '../internals/Tree/utils';
|
|
11
11
|
import { getColumnsAndPaths } from '../CascadeTree/utils';
|
|
12
12
|
import { createChainedFunction, mergeRefs, useClassNames, useCustom, useControlled, useEventCallback } from '../utils';
|
|
13
13
|
import { PickerToggle, PickerPopup, SelectedElement, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../internals/Picker';
|
|
@@ -6,7 +6,6 @@ var _templateObject;
|
|
|
6
6
|
import React, { useState } from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import pick from 'lodash/pick';
|
|
9
|
-
import isUndefined from 'lodash/isUndefined';
|
|
10
9
|
import isNil from 'lodash/isNil';
|
|
11
10
|
import isFunction from 'lodash/isFunction';
|
|
12
11
|
import omit from 'lodash/omit';
|
|
@@ -230,11 +229,8 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
230
229
|
listItemAs: ListItem,
|
|
231
230
|
activeItemValues: [value],
|
|
232
231
|
focusItemValue: focusItemValue,
|
|
233
|
-
data: items
|
|
234
|
-
|
|
235
|
-
// `group` is redundant so long as `groupBy` exists
|
|
236
|
-
,
|
|
237
|
-
group: !isUndefined(groupBy),
|
|
232
|
+
data: items,
|
|
233
|
+
query: searchKeyword,
|
|
238
234
|
groupBy: groupBy,
|
|
239
235
|
onSelect: handleItemSelect,
|
|
240
236
|
onGroupTitleClick: onGroupTitleClick,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useClassNames } from '../utils';
|
|
4
|
+
var IndentLine = function IndentLine() {
|
|
5
|
+
var _useClassNames = useClassNames('tree'),
|
|
6
|
+
prefix = _useClassNames.prefix;
|
|
7
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
8
|
+
className: prefix('indent-line'),
|
|
9
|
+
"data-testid": "indent-line"
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
export default IndentLine;
|
package/esm/Tree/Tree.d.ts
CHANGED
|
@@ -1,95 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
* Tree Node Drag Type
|
|
6
|
-
*/
|
|
7
|
-
export declare enum TREE_NODE_DROP_POSITION {
|
|
8
|
-
DRAG_OVER = 0,
|
|
9
|
-
DRAG_OVER_TOP = 1,
|
|
10
|
-
DRAG_OVER_BOTTOM = 2
|
|
11
|
-
}
|
|
12
|
-
export interface DropData<ItemDataType> {
|
|
13
|
-
/** drag node data */
|
|
14
|
-
dragNode: ItemDataType;
|
|
15
|
-
/** dropNode data */
|
|
16
|
-
dropNode: ItemDataType;
|
|
17
|
-
/** node drop position */
|
|
18
|
-
dropNodePosition: TREE_NODE_DROP_POSITION;
|
|
19
|
-
/** Update Data when drop node */
|
|
20
|
-
createUpdateDataFunction: (data: ItemDataType[]) => ItemDataType[];
|
|
21
|
-
}
|
|
22
|
-
export interface TreeDragProps<ItemDataType = Record<string, any>> {
|
|
23
|
-
/** Whether the node can be dragged */
|
|
24
|
-
draggable?: boolean;
|
|
25
|
-
/** Called when scrolling */
|
|
26
|
-
onScroll?: (event: React.SyntheticEvent) => void;
|
|
27
|
-
/** Called when node drag start */
|
|
28
|
-
onDragStart?: (nodeData: ItemDataType, e: React.DragEvent) => void;
|
|
29
|
-
/** Called when node drag enter */
|
|
30
|
-
onDragEnter?: (nodeData: ItemDataType, e: React.DragEvent) => void;
|
|
31
|
-
/** Called when node drag over */
|
|
32
|
-
onDragOver?: (nodeData: ItemDataType, e: React.DragEvent) => void;
|
|
33
|
-
/** Called when node drag leave */
|
|
34
|
-
onDragLeave?: (nodeData: ItemDataType, e: React.DragEvent) => void;
|
|
35
|
-
/** Called when node drag end */
|
|
36
|
-
onDragEnd?: (nodeData: ItemDataType, e: React.DragEvent) => void;
|
|
37
|
-
/** Called when node drop */
|
|
38
|
-
onDrop?: (dropData: DropData<ItemDataType>, e: React.DragEvent) => void;
|
|
39
|
-
}
|
|
40
|
-
export interface TreeBaseProps<ValueType = string | number, ItemDataType = Record<string, any>> extends StandardProps {
|
|
41
|
-
/** The height of Dropdown */
|
|
42
|
-
height?: number;
|
|
43
|
-
/** Whether display search input box */
|
|
44
|
-
searchable?: boolean;
|
|
45
|
-
/** Display an auxiliary line when the tree node is indented. */
|
|
46
|
-
showIndentLine?: boolean;
|
|
47
|
-
/** Whether using virtualized list */
|
|
48
|
-
virtualized?: boolean;
|
|
49
|
-
/** Virtualized List props */
|
|
50
|
-
listProps?: Partial<ListProps>;
|
|
51
|
-
/** Expand all nodes By default */
|
|
52
|
-
defaultExpandAll?: boolean;
|
|
53
|
-
/** searchKeyword (Controlled) */
|
|
54
|
-
searchKeyword?: string;
|
|
55
|
-
/** Set the option value for the expand node */
|
|
56
|
-
defaultExpandItemValues?: any[];
|
|
57
|
-
/** Set the option value for the expand node with controlled*/
|
|
58
|
-
expandItemValues?: any[];
|
|
59
|
-
/** Callback function for data change */
|
|
60
|
-
onExpand?: (expandItemValues: ItemDataType[], activeNode: ItemDataType, concat: (data: ItemDataType[], children: ItemDataType[]) => ItemDataType[]) => void;
|
|
61
|
-
/** Callback function after selecting tree node */
|
|
62
|
-
onSelect?: (activeNode: ItemDataType, value: ValueType, event: React.SyntheticEvent) => void;
|
|
63
|
-
/** Callback when a tree item is clicked */
|
|
64
|
-
onSelectItem?: (item: ItemDataType, path: ItemDataType[]) => void;
|
|
65
|
-
/** Custom Render tree Node */
|
|
66
|
-
renderTreeNode?: (nodeData: ItemDataType) => React.ReactNode;
|
|
67
|
-
/** Custom Render icon */
|
|
68
|
-
renderTreeIcon?: (nodeData: ItemDataType) => React.ReactNode;
|
|
69
|
-
/** callback fired when search */
|
|
70
|
-
onSearch?: (searchKeyword: string, event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
71
|
-
/** Called when clean */
|
|
72
|
-
onClean?: (event: React.SyntheticEvent) => void;
|
|
73
|
-
/** Custom search rules. */
|
|
74
|
-
searchBy?: (keyword: string, label: React.ReactNode, item: any) => boolean;
|
|
75
|
-
/** Customizing the Rendering Menu list */
|
|
76
|
-
renderMenu?: (menu: React.ReactNode) => React.ReactNode;
|
|
77
|
-
/** load node children data asynchronously */
|
|
78
|
-
getChildren?: (activeNode: ItemDataType) => ItemDataType[] | Promise<ItemDataType>;
|
|
79
|
-
}
|
|
80
|
-
export interface TreeProps<T = string | number> extends TreeBaseProps<T, ItemDataType<T>>, TreeDragProps<ItemDataType<T>> {
|
|
81
|
-
/** Tree Data */
|
|
82
|
-
data: ItemDataType<T>[];
|
|
83
|
-
/** Selected value */
|
|
84
|
-
value?: T;
|
|
85
|
-
/** Whether using virtualized list */
|
|
86
|
-
virtualized?: boolean;
|
|
87
|
-
/** Tree data structure Label property name */
|
|
88
|
-
labelKey?: string;
|
|
89
|
-
/** Tree data Structure Value property name */
|
|
90
|
-
valueKey?: string;
|
|
91
|
-
/** Tree data structure Children property name */
|
|
92
|
-
childrenKey?: string;
|
|
1
|
+
import { RsRefForwardingComponent } from '../@types/common';
|
|
2
|
+
import { type TreeViewProps } from './TreeView';
|
|
3
|
+
import type { TreeExtraProps } from './types';
|
|
4
|
+
export interface TreeProps<T = string | number | null> extends TreeViewProps<T>, TreeExtraProps {
|
|
93
5
|
/** Default selected Value */
|
|
94
6
|
defaultValue?: T;
|
|
95
7
|
}
|
package/esm/Tree/Tree.js
CHANGED
|
@@ -1,33 +1,93 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
4
|
import React, { useMemo } from 'react';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
(function (TREE_NODE_DROP_POSITION) {
|
|
11
|
-
TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER"] = 0] = "DRAG_OVER";
|
|
12
|
-
TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_TOP"] = 1] = "DRAG_OVER_TOP";
|
|
13
|
-
TREE_NODE_DROP_POSITION[TREE_NODE_DROP_POSITION["DRAG_OVER_BOTTOM"] = 2] = "DRAG_OVER_BOTTOM";
|
|
14
|
-
})(TREE_NODE_DROP_POSITION || (TREE_NODE_DROP_POSITION = {}));
|
|
5
|
+
import TreeView from './TreeView';
|
|
6
|
+
import { useControlled, useEventCallback } from '../utils';
|
|
7
|
+
import useFlattenTree from './hooks/useFlattenTree';
|
|
8
|
+
import useTreeWithChildren from './hooks/useTreeWithChildren';
|
|
9
|
+
import useExpandTree from './hooks/useExpandTree';
|
|
10
|
+
import { TreeProvider } from './TreeProvider';
|
|
15
11
|
/**
|
|
16
12
|
* The `Tree` component is used to display hierarchical data.
|
|
17
13
|
*
|
|
18
14
|
* @see https://rsuitejs.com/components/tree
|
|
19
15
|
*/
|
|
20
16
|
var Tree = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
21
|
-
var
|
|
17
|
+
var controlledValue = props.value,
|
|
18
|
+
defaultValue = props.defaultValue,
|
|
19
|
+
_props$childrenKey = props.childrenKey,
|
|
20
|
+
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
21
|
+
_props$labelKey = props.labelKey,
|
|
22
|
+
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
23
|
+
_props$valueKey = props.valueKey,
|
|
24
|
+
valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
|
|
25
|
+
data = props.data,
|
|
26
|
+
_props$defaultExpandA = props.defaultExpandAll,
|
|
27
|
+
defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
|
|
28
|
+
_props$defaultExpandI = props.defaultExpandItemValues,
|
|
29
|
+
defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI,
|
|
30
|
+
controlledExpandItemValues = props.expandItemValues,
|
|
31
|
+
virtualized = props.virtualized,
|
|
32
|
+
renderTreeIcon = props.renderTreeIcon,
|
|
33
|
+
renderTreeNode = props.renderTreeNode,
|
|
34
|
+
getChildren = props.getChildren,
|
|
35
|
+
onChange = props.onChange,
|
|
36
|
+
onExpand = props.onExpand,
|
|
37
|
+
rest = _objectWithoutPropertiesLoose(props, ["value", "defaultValue", "childrenKey", "labelKey", "valueKey", "data", "defaultExpandAll", "defaultExpandItemValues", "expandItemValues", "virtualized", "renderTreeIcon", "renderTreeNode", "getChildren", "onChange", "onExpand"]);
|
|
38
|
+
var _useControlled = useControlled(controlledValue, defaultValue),
|
|
39
|
+
value = _useControlled[0],
|
|
40
|
+
setValue = _useControlled[1];
|
|
41
|
+
var itemDataKeys = {
|
|
42
|
+
childrenKey: childrenKey,
|
|
43
|
+
labelKey: labelKey,
|
|
44
|
+
valueKey: valueKey
|
|
45
|
+
};
|
|
46
|
+
var _useTreeWithChildren = useTreeWithChildren(data, itemDataKeys),
|
|
47
|
+
treeData = _useTreeWithChildren.treeData,
|
|
48
|
+
loadingNodeValues = _useTreeWithChildren.loadingNodeValues,
|
|
49
|
+
appendChild = _useTreeWithChildren.appendChild;
|
|
50
|
+
var flattenedNodes = useFlattenTree(treeData, _extends({}, itemDataKeys));
|
|
51
|
+
var _useExpandTree = useExpandTree(data, _extends({}, itemDataKeys, {
|
|
52
|
+
defaultExpandAll: defaultExpandAll,
|
|
53
|
+
defaultExpandItemValues: defaultExpandItemValues,
|
|
54
|
+
controlledExpandItemValues: controlledExpandItemValues,
|
|
55
|
+
onExpand: onExpand,
|
|
56
|
+
getChildren: getChildren,
|
|
57
|
+
appendChild: appendChild
|
|
58
|
+
})),
|
|
59
|
+
expandItemValues = _useExpandTree.expandItemValues,
|
|
60
|
+
handleExpandTreeNode = _useExpandTree.handleExpandTreeNode;
|
|
61
|
+
var handleChange = useEventCallback(function (nextValue, event) {
|
|
62
|
+
setValue(nextValue);
|
|
63
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
64
|
+
});
|
|
65
|
+
var treeContext = useMemo(function () {
|
|
22
66
|
return {
|
|
23
|
-
|
|
67
|
+
props: {
|
|
68
|
+
childrenKey: childrenKey,
|
|
69
|
+
labelKey: labelKey,
|
|
70
|
+
valueKey: valueKey,
|
|
71
|
+
virtualized: virtualized,
|
|
72
|
+
renderTreeIcon: renderTreeIcon,
|
|
73
|
+
renderTreeNode: renderTreeNode
|
|
74
|
+
}
|
|
24
75
|
};
|
|
25
|
-
}, []);
|
|
26
|
-
return /*#__PURE__*/React.createElement(
|
|
27
|
-
value:
|
|
28
|
-
}, /*#__PURE__*/React.createElement(
|
|
76
|
+
}, [childrenKey, labelKey, valueKey, virtualized, renderTreeIcon, renderTreeNode]);
|
|
77
|
+
return /*#__PURE__*/React.createElement(TreeProvider, {
|
|
78
|
+
value: treeContext
|
|
79
|
+
}, /*#__PURE__*/React.createElement(TreeView, _extends({
|
|
29
80
|
ref: ref
|
|
30
|
-
},
|
|
81
|
+
}, rest, {
|
|
82
|
+
value: value,
|
|
83
|
+
data: treeData,
|
|
84
|
+
virtualized: virtualized,
|
|
85
|
+
loadingNodeValues: loadingNodeValues,
|
|
86
|
+
flattenedNodes: flattenedNodes,
|
|
87
|
+
expandItemValues: expandItemValues,
|
|
88
|
+
onChange: handleChange,
|
|
89
|
+
onExpand: handleExpandTreeNode
|
|
90
|
+
})));
|
|
31
91
|
});
|
|
32
92
|
Tree.displayName = 'Tree';
|
|
33
93
|
export default Tree;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
+
import type { TreeNode as TreeNodeData } from './types';
|
|
4
|
+
export declare type DragStatus = 'drag-over' | 'drag-over-top' | 'drag-over-bottom';
|
|
5
|
+
interface TreeDragEventProps {
|
|
6
|
+
/**
|
|
7
|
+
* Callback function called when the drag operation starts.
|
|
8
|
+
*/
|
|
9
|
+
onDragStart?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Callback function called when a dragged item enters the node.
|
|
12
|
+
*/
|
|
13
|
+
onDragEnter?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Callback function called when a dragged item is over the node.
|
|
16
|
+
*/
|
|
17
|
+
onDragOver?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Callback function called when a dragged item leaves the node.
|
|
20
|
+
*/
|
|
21
|
+
onDragLeave?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Callback function called when the drag operation ends.
|
|
24
|
+
*/
|
|
25
|
+
onDragEnd?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Callback function called when a dragged item is dropped on the node.
|
|
28
|
+
*/
|
|
29
|
+
onDrop?: (nodeData: TreeNodeData, event: React.DragEvent<any>) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Props for the TreeNode component.
|
|
33
|
+
*/
|
|
34
|
+
export interface TreeNodeProps extends WithAsProps, TreeDragEventProps {
|
|
35
|
+
/**
|
|
36
|
+
* The layer of the node in the tree hierarchy.
|
|
37
|
+
*/
|
|
38
|
+
layer: number;
|
|
39
|
+
/**
|
|
40
|
+
* The value of the node.
|
|
41
|
+
*/
|
|
42
|
+
value?: TreeNodeData['value'];
|
|
43
|
+
/**
|
|
44
|
+
* The label of the node.
|
|
45
|
+
*/
|
|
46
|
+
label?: TreeNodeData['label'];
|
|
47
|
+
/**
|
|
48
|
+
* Whether the node should be focused.
|
|
49
|
+
*/
|
|
50
|
+
focus?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Whether the node is in a loading state.
|
|
53
|
+
*/
|
|
54
|
+
loading?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Whether the node is expanded.
|
|
57
|
+
*/
|
|
58
|
+
expanded?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Whether the node is active.
|
|
61
|
+
*/
|
|
62
|
+
active?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the node is visible.
|
|
65
|
+
*/
|
|
66
|
+
visible: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The data associated with the node.
|
|
69
|
+
*/
|
|
70
|
+
nodeData: any;
|
|
71
|
+
/**
|
|
72
|
+
* Whether the node is disabled.
|
|
73
|
+
*/
|
|
74
|
+
disabled?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the node is draggable.
|
|
77
|
+
*/
|
|
78
|
+
draggable?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Whether the node is being dragged.
|
|
81
|
+
*/
|
|
82
|
+
dragging?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Drag status of the node.
|
|
85
|
+
*/
|
|
86
|
+
dragStatus?: DragStatus;
|
|
87
|
+
/**
|
|
88
|
+
* Whether the node has children.
|
|
89
|
+
*/
|
|
90
|
+
hasChildren?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Callback function called when the node is expanded.
|
|
93
|
+
*/
|
|
94
|
+
onExpand?: (nodeData: TreeNodeData, expanded?: boolean) => void;
|
|
95
|
+
/**
|
|
96
|
+
* Callback function called when the node is selected.
|
|
97
|
+
*/
|
|
98
|
+
onSelect?: (nodeData: TreeNodeData, event: React.SyntheticEvent) => void;
|
|
99
|
+
}
|
|
100
|
+
declare const TreeNode: RsRefForwardingComponent<'div', TreeNodeProps>;
|
|
101
|
+
export default TreeNode;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import React, { forwardRef, useMemo } from 'react';
|
|
5
|
+
import { useClassNames, useEventCallback, mergeRefs, useCustom } from '../utils';
|
|
6
|
+
import { stringifyReactNode } from '../internals/utils';
|
|
7
|
+
import { useFoucsVirtualListItem } from '../internals/hooks';
|
|
8
|
+
import TreeNodeToggle from './TreeNodeToggle';
|
|
9
|
+
import { useTreeContextProps } from './TreeProvider';
|
|
10
|
+
import { indentTreeNode } from './utils';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Props for the TreeNode component.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
var TreeNode = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
17
|
+
var _props$as = props.as,
|
|
18
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
19
|
+
label = props.label,
|
|
20
|
+
layer = props.layer,
|
|
21
|
+
active = props.active,
|
|
22
|
+
loading = props.loading,
|
|
23
|
+
nodeData = props.nodeData,
|
|
24
|
+
className = props.className,
|
|
25
|
+
_props$classPrefix = props.classPrefix,
|
|
26
|
+
classPrefix = _props$classPrefix === void 0 ? 'tree-node' : _props$classPrefix,
|
|
27
|
+
disabled = props.disabled,
|
|
28
|
+
_props$visible = props.visible,
|
|
29
|
+
visible = _props$visible === void 0 ? true : _props$visible,
|
|
30
|
+
draggable = props.draggable,
|
|
31
|
+
expanded = props.expanded,
|
|
32
|
+
focus = props.focus,
|
|
33
|
+
style = props.style,
|
|
34
|
+
hasChildren = props.hasChildren,
|
|
35
|
+
dragging = props.dragging,
|
|
36
|
+
dragStatus = props.dragStatus,
|
|
37
|
+
onSelect = props.onSelect,
|
|
38
|
+
onDragStart = props.onDragStart,
|
|
39
|
+
onDragOver = props.onDragOver,
|
|
40
|
+
onDragEnter = props.onDragEnter,
|
|
41
|
+
onDragLeave = props.onDragLeave,
|
|
42
|
+
onDragEnd = props.onDragEnd,
|
|
43
|
+
onDrop = props.onDrop,
|
|
44
|
+
onExpand = props.onExpand,
|
|
45
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "label", "layer", "active", "loading", "nodeData", "className", "classPrefix", "disabled", "visible", "draggable", "expanded", "focus", "style", "hasChildren", "dragging", "dragStatus", "onSelect", "onDragStart", "onDragOver", "onDragEnter", "onDragLeave", "onDragEnd", "onDrop", "onExpand"]);
|
|
46
|
+
var _useCustom = useCustom(),
|
|
47
|
+
rtl = _useCustom.rtl;
|
|
48
|
+
var _useTreeContextProps = useTreeContextProps(),
|
|
49
|
+
renderTreeNode = _useTreeContextProps.renderTreeNode,
|
|
50
|
+
virtualized = _useTreeContextProps.virtualized;
|
|
51
|
+
var _useClassNames = useClassNames(classPrefix),
|
|
52
|
+
prefix = _useClassNames.prefix,
|
|
53
|
+
merge = _useClassNames.merge,
|
|
54
|
+
withClassPrefix = _useClassNames.withClassPrefix;
|
|
55
|
+
var labelStr = useMemo(function () {
|
|
56
|
+
return stringifyReactNode(label);
|
|
57
|
+
}, [label]);
|
|
58
|
+
var handleExpand = useEventCallback(function (event) {
|
|
59
|
+
var _event$nativeEvent, _event$nativeEvent$st;
|
|
60
|
+
// Stop propagation when using custom loading icon
|
|
61
|
+
event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : (_event$nativeEvent$st = _event$nativeEvent.stopImmediatePropagation) === null || _event$nativeEvent$st === void 0 ? void 0 : _event$nativeEvent$st.call(_event$nativeEvent);
|
|
62
|
+
event.stopPropagation();
|
|
63
|
+
onExpand === null || onExpand === void 0 ? void 0 : onExpand(nodeData, expanded);
|
|
64
|
+
});
|
|
65
|
+
var handleSelect = useEventCallback(function (event) {
|
|
66
|
+
if (disabled) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, event);
|
|
70
|
+
});
|
|
71
|
+
var handleDragStart = useEventCallback(function (event) {
|
|
72
|
+
onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
|
|
73
|
+
});
|
|
74
|
+
var handleDragEnter = useEventCallback(function (event) {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
event.stopPropagation();
|
|
77
|
+
onDragEnter === null || onDragEnter === void 0 ? void 0 : onDragEnter(nodeData, event);
|
|
78
|
+
});
|
|
79
|
+
var handleDragOver = useEventCallback(function (event) {
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
event.stopPropagation();
|
|
82
|
+
onDragOver === null || onDragOver === void 0 ? void 0 : onDragOver(nodeData, event);
|
|
83
|
+
});
|
|
84
|
+
var handleDragLeave = useEventCallback(function (event) {
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
|
|
87
|
+
});
|
|
88
|
+
var handleDragEnd = useEventCallback(function (event) {
|
|
89
|
+
event.stopPropagation();
|
|
90
|
+
onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(nodeData, event);
|
|
91
|
+
});
|
|
92
|
+
var handleDrop = useEventCallback(function (event) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
event.stopPropagation();
|
|
95
|
+
onDrop === null || onDrop === void 0 ? void 0 : onDrop(nodeData, event);
|
|
96
|
+
});
|
|
97
|
+
var classes = merge(className, withClassPrefix({
|
|
98
|
+
disabled: disabled,
|
|
99
|
+
active: active,
|
|
100
|
+
'text-muted': disabled,
|
|
101
|
+
focus: focus
|
|
102
|
+
}));
|
|
103
|
+
var treeItemRef = useFoucsVirtualListItem(focus);
|
|
104
|
+
var styles = virtualized ? _extends({}, style, indentTreeNode(rtl, layer - 1)) : style;
|
|
105
|
+
return visible ? /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
106
|
+
ref: mergeRefs(treeItemRef, ref),
|
|
107
|
+
role: "treeitem",
|
|
108
|
+
tabIndex: -1,
|
|
109
|
+
"aria-expanded": expanded,
|
|
110
|
+
"aria-label": labelStr,
|
|
111
|
+
"aria-level": layer,
|
|
112
|
+
"aria-disabled": disabled,
|
|
113
|
+
"aria-selected": active,
|
|
114
|
+
"data-layer": layer,
|
|
115
|
+
"data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
|
|
116
|
+
title: labelStr,
|
|
117
|
+
className: classes,
|
|
118
|
+
style: styles,
|
|
119
|
+
draggable: draggable,
|
|
120
|
+
onClick: handleSelect,
|
|
121
|
+
onDragStart: handleDragStart,
|
|
122
|
+
onDragEnter: handleDragEnter,
|
|
123
|
+
onDragOver: handleDragOver,
|
|
124
|
+
onDragLeave: handleDragLeave,
|
|
125
|
+
onDragEnd: handleDragEnd,
|
|
126
|
+
onDrop: handleDrop
|
|
127
|
+
}), /*#__PURE__*/React.createElement(TreeNodeToggle, {
|
|
128
|
+
"aria-label": (expanded ? 'Collapse' : 'Expand') + (" " + labelStr),
|
|
129
|
+
data: nodeData,
|
|
130
|
+
loading: loading,
|
|
131
|
+
expanded: expanded,
|
|
132
|
+
hasChildren: hasChildren,
|
|
133
|
+
onClick: handleExpand
|
|
134
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
135
|
+
className: prefix('label', dragStatus, {
|
|
136
|
+
dragging: dragging
|
|
137
|
+
})
|
|
138
|
+
}, renderTreeNode ? renderTreeNode(nodeData) : label)) : null;
|
|
139
|
+
});
|
|
140
|
+
TreeNode.displayName = 'TreeNode';
|
|
141
|
+
export default TreeNode;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface TreeNodeToggleProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
data: any;
|
|
4
|
+
loading?: boolean;
|
|
5
|
+
expanded?: boolean;
|
|
6
|
+
hasChildren?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare function TreeNodeToggle(props: TreeNodeToggleProps): JSX.Element;
|
|
9
|
+
export default TreeNodeToggle;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import ArrowDownIcon from '@rsuite/icons/ArrowDown';
|
|
6
|
+
import ArrowRightIcon from '@rsuite/icons/ArrowRight';
|
|
7
|
+
import ArrowLeftIcon from '@rsuite/icons/ArrowLeft';
|
|
8
|
+
import Spinner from '@rsuite/icons/legacy/Spinner';
|
|
9
|
+
import { useClassNames, useCustom } from '../utils';
|
|
10
|
+
import { useTreeCustomRenderer } from './TreeProvider';
|
|
11
|
+
function TreeNodeToggle(props) {
|
|
12
|
+
var data = props.data,
|
|
13
|
+
loading = props.loading,
|
|
14
|
+
expanded = props.expanded,
|
|
15
|
+
hasChildren = props.hasChildren,
|
|
16
|
+
rest = _objectWithoutPropertiesLoose(props, ["data", "loading", "expanded", "hasChildren"]);
|
|
17
|
+
var _useCustom = useCustom(),
|
|
18
|
+
rtl = _useCustom.rtl;
|
|
19
|
+
var _useTreeCustomRendere = useTreeCustomRenderer(),
|
|
20
|
+
renderTreeIcon = _useTreeCustomRendere.renderTreeIcon;
|
|
21
|
+
var _useClassNames = useClassNames('tree-node'),
|
|
22
|
+
prefix = _useClassNames.prefix;
|
|
23
|
+
var IconElementType = expanded ? ArrowDownIcon : rtl ? ArrowLeftIcon : ArrowRightIcon;
|
|
24
|
+
var icon = /*#__PURE__*/React.createElement(IconElementType, {
|
|
25
|
+
className: prefix('toggle-icon')
|
|
26
|
+
});
|
|
27
|
+
if (loading) {
|
|
28
|
+
icon = /*#__PURE__*/React.createElement("div", {
|
|
29
|
+
className: prefix('loading-icon')
|
|
30
|
+
}, /*#__PURE__*/React.createElement(Spinner, {
|
|
31
|
+
spin: true
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
if (data !== undefined && typeof renderTreeIcon === 'function') {
|
|
35
|
+
var customIcon = renderTreeIcon(data, expanded);
|
|
36
|
+
icon = customIcon !== null ? /*#__PURE__*/React.createElement("div", {
|
|
37
|
+
className: prefix('custom-icon')
|
|
38
|
+
}, customIcon) : icon;
|
|
39
|
+
}
|
|
40
|
+
return hasChildren ? /*#__PURE__*/React.createElement("div", _extends({
|
|
41
|
+
tabIndex: -1,
|
|
42
|
+
role: "button",
|
|
43
|
+
"aria-busy": loading ? true : undefined,
|
|
44
|
+
"data-ref": data.refKey,
|
|
45
|
+
className: prefix('toggle')
|
|
46
|
+
}, rest), icon) : /*#__PURE__*/React.createElement("div", {
|
|
47
|
+
className: prefix('toggle-placeholder')
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export default TreeNodeToggle;
|