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
package/esm/utils/treeUtils.js
DELETED
|
@@ -1,1043 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import _isEmpty from "lodash/isEmpty";
|
|
4
|
-
import _clone from "lodash/clone";
|
|
5
|
-
import _isNil from "lodash/isNil";
|
|
6
|
-
import _isArray from "lodash/isArray";
|
|
7
|
-
import _omit from "lodash/omit";
|
|
8
|
-
import _isUndefined from "lodash/isUndefined";
|
|
9
|
-
import _intersection from "lodash/intersection";
|
|
10
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
-
import React, { useRef, useState, useEffect, useCallback } from 'react';
|
|
14
|
-
import shallowEqualArray from '../utils/shallowEqualArray';
|
|
15
|
-
import { getNodeCheckState } from '../CheckTreePicker/utils';
|
|
16
|
-
import { TREE_NODE_DROP_POSITION, shallowEqual } from '../utils';
|
|
17
|
-
import { shouldDisplay } from '../internals/Picker';
|
|
18
|
-
import reactToString from './reactToString';
|
|
19
|
-
import { TREE_NODE_PADDING, TREE_NODE_ROOT_PADDING } from './constants';
|
|
20
|
-
import { attachParent } from './attachParent';
|
|
21
|
-
// gap of tree node
|
|
22
|
-
var TREE_NODE_GAP = 4;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* according node parentNode expand state decide node whether to show
|
|
26
|
-
* @param {*} expandItemValues
|
|
27
|
-
* @param {*} parentKeys
|
|
28
|
-
*/
|
|
29
|
-
export function shouldShowNodeByParentExpanded(expandItemValues, parentKeys) {
|
|
30
|
-
if (expandItemValues === void 0) {
|
|
31
|
-
expandItemValues = [];
|
|
32
|
-
}
|
|
33
|
-
if (parentKeys === void 0) {
|
|
34
|
-
parentKeys = [];
|
|
35
|
-
}
|
|
36
|
-
var intersectionKeys = _intersection(expandItemValues, parentKeys);
|
|
37
|
-
if (intersectionKeys.length === parentKeys.length) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* flatten tree structure to array
|
|
45
|
-
* @param {*} tree
|
|
46
|
-
* @param {*} childrenKey
|
|
47
|
-
* @param {*} executor
|
|
48
|
-
*
|
|
49
|
-
* @deprecated This {@link UNSAFE_flattenTree} function is considered unsafe because it mutates `tree` argument in-place
|
|
50
|
-
* Use {@link flattenTree} instead.
|
|
51
|
-
*/
|
|
52
|
-
export function UNSAFE_flattenTree(tree, childrenKey, executor) {
|
|
53
|
-
if (childrenKey === void 0) {
|
|
54
|
-
childrenKey = 'children';
|
|
55
|
-
}
|
|
56
|
-
var flattenData = [];
|
|
57
|
-
var traverse = function traverse(data, parent) {
|
|
58
|
-
if (!_isArray(data)) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
data.forEach(function (item, index) {
|
|
62
|
-
var node = typeof executor === 'function' ? executor(item, index) : item;
|
|
63
|
-
flattenData.push(attachParent(node, parent));
|
|
64
|
-
if (item[childrenKey]) {
|
|
65
|
-
traverse(item[childrenKey], item);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
|
-
traverse(tree, null);
|
|
70
|
-
return flattenData;
|
|
71
|
-
}
|
|
72
|
-
export var WalkTreeStrategy;
|
|
73
|
-
(function (WalkTreeStrategy) {
|
|
74
|
-
WalkTreeStrategy[WalkTreeStrategy["DFS"] = 0] = "DFS";
|
|
75
|
-
WalkTreeStrategy[WalkTreeStrategy["BFS"] = 1] = "BFS";
|
|
76
|
-
})(WalkTreeStrategy || (WalkTreeStrategy = {}));
|
|
77
|
-
export function flattenTree(rootNodes, getChildren, walkStrategy) {
|
|
78
|
-
if (walkStrategy === void 0) {
|
|
79
|
-
walkStrategy = WalkTreeStrategy.BFS;
|
|
80
|
-
}
|
|
81
|
-
var result = [];
|
|
82
|
-
if (walkStrategy === WalkTreeStrategy.BFS) {
|
|
83
|
-
walkTreeBfs(rootNodes, getChildren, function (node) {
|
|
84
|
-
return result.push(node);
|
|
85
|
-
});
|
|
86
|
-
} else if (walkStrategy === WalkTreeStrategy.DFS) {
|
|
87
|
-
walkTreeDfs(rootNodes, getChildren, function (node) {
|
|
88
|
-
return result.push(node);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
return result;
|
|
92
|
-
}
|
|
93
|
-
export function walkTreeBfs(rootNodes, getChildren, callback) {
|
|
94
|
-
for (var queue = [].concat(rootNodes); queue.length > 0;) {
|
|
95
|
-
var _node = queue.shift();
|
|
96
|
-
callback(_node);
|
|
97
|
-
var children = getChildren(_node);
|
|
98
|
-
if (children) {
|
|
99
|
-
queue.push.apply(queue, children);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export function walkTreeDfs(rootNodes, getChildren, callback) {
|
|
104
|
-
for (var _iterator = _createForOfIteratorHelperLoose(rootNodes), _step; !(_step = _iterator()).done;) {
|
|
105
|
-
var _node2 = _step.value;
|
|
106
|
-
callback(_node2);
|
|
107
|
-
var children = getChildren(_node2);
|
|
108
|
-
if (children) {
|
|
109
|
-
walkTreeDfs(children, getChildren, callback);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* get all ancestor nodes of given node
|
|
116
|
-
* @param {*} node
|
|
117
|
-
*/
|
|
118
|
-
export function getNodeParents(node, parentKey, valueKey) {
|
|
119
|
-
if (parentKey === void 0) {
|
|
120
|
-
parentKey = 'parent';
|
|
121
|
-
}
|
|
122
|
-
var parents = [];
|
|
123
|
-
var traverse = function traverse(node) {
|
|
124
|
-
if (node !== null && node !== void 0 && node[parentKey]) {
|
|
125
|
-
traverse(node[parentKey]);
|
|
126
|
-
if (valueKey) {
|
|
127
|
-
parents.push(node[parentKey][valueKey]);
|
|
128
|
-
} else {
|
|
129
|
-
parents.push(node[parentKey]);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
traverse(node);
|
|
134
|
-
return parents;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* get all parentKeys of given node
|
|
139
|
-
* @param nodes
|
|
140
|
-
* @param node
|
|
141
|
-
* @param valueKey
|
|
142
|
-
*/
|
|
143
|
-
export function getNodeParentKeys(nodes, node, valueKey) {
|
|
144
|
-
var parentKeys = [];
|
|
145
|
-
var traverse = function traverse(node) {
|
|
146
|
-
var _node$parent;
|
|
147
|
-
if (node !== null && node !== void 0 && (_node$parent = node.parent) !== null && _node$parent !== void 0 && _node$parent.refKey) {
|
|
148
|
-
var _node$parent2;
|
|
149
|
-
traverse(nodes[node.parent.refKey]);
|
|
150
|
-
parentKeys.push(node === null || node === void 0 ? void 0 : (_node$parent2 = node.parent) === null || _node$parent2 === void 0 ? void 0 : _node$parent2[valueKey]);
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
traverse(node);
|
|
154
|
-
return parentKeys;
|
|
155
|
-
}
|
|
156
|
-
export function hasVisibleChildren(node, childrenKey) {
|
|
157
|
-
if (!Array.isArray(node[childrenKey])) {
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
160
|
-
return node[childrenKey].some(function (child) {
|
|
161
|
-
return child.visible;
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* shallow equal array
|
|
167
|
-
* @param a
|
|
168
|
-
* @param b
|
|
169
|
-
*/
|
|
170
|
-
export function compareArray(a, b) {
|
|
171
|
-
return _isArray(a) && _isArray(b) && !shallowEqualArray(a, b);
|
|
172
|
-
}
|
|
173
|
-
export function getDefaultExpandItemValues(data, props) {
|
|
174
|
-
var valueKey = props.valueKey,
|
|
175
|
-
defaultExpandAll = props.defaultExpandAll,
|
|
176
|
-
childrenKey = props.childrenKey,
|
|
177
|
-
_props$defaultExpandI = props.defaultExpandItemValues,
|
|
178
|
-
defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI;
|
|
179
|
-
if (defaultExpandAll) {
|
|
180
|
-
return UNSAFE_flattenTree(data, childrenKey).filter(function (item) {
|
|
181
|
-
return Array.isArray(item[childrenKey]) && item[childrenKey].length > 0;
|
|
182
|
-
}).map(function (item) {
|
|
183
|
-
return item[valueKey];
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
return defaultExpandItemValues;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* 获取 expandItemValues 的 value
|
|
191
|
-
* @param props
|
|
192
|
-
*/
|
|
193
|
-
export function getExpandItemValues(props) {
|
|
194
|
-
var expandItemValues = props.expandItemValues,
|
|
195
|
-
defaultExpandItemValues = props.defaultExpandItemValues;
|
|
196
|
-
if (!_isUndefined(expandItemValues) && Array.isArray(expandItemValues)) {
|
|
197
|
-
return expandItemValues;
|
|
198
|
-
}
|
|
199
|
-
if (!_isUndefined(defaultExpandItemValues) && Array.isArray(defaultExpandItemValues)) {
|
|
200
|
-
return defaultExpandItemValues;
|
|
201
|
-
}
|
|
202
|
-
return [];
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* get dragNode and it's children node keys
|
|
207
|
-
* @param node
|
|
208
|
-
* @param childrenKey
|
|
209
|
-
* @param valueKey
|
|
210
|
-
*/
|
|
211
|
-
export function getDragNodeKeys(dragNode, childrenKey, valueKey) {
|
|
212
|
-
var dragNodeKeys = [dragNode[valueKey]];
|
|
213
|
-
var traverse = function traverse(data) {
|
|
214
|
-
if ((data === null || data === void 0 ? void 0 : data.length) > 0) {
|
|
215
|
-
data.forEach(function (node) {
|
|
216
|
-
dragNodeKeys = dragNodeKeys.concat([node[valueKey]]);
|
|
217
|
-
if (node[childrenKey]) {
|
|
218
|
-
traverse(node[childrenKey]);
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
traverse(dragNode[childrenKey]);
|
|
224
|
-
return dragNodeKeys;
|
|
225
|
-
}
|
|
226
|
-
export function calDropNodePosition(event, treeNodeElement) {
|
|
227
|
-
var clientY = event.clientY;
|
|
228
|
-
var _treeNodeElement$getB = treeNodeElement.getBoundingClientRect(),
|
|
229
|
-
top = _treeNodeElement$getB.top,
|
|
230
|
-
bottom = _treeNodeElement$getB.bottom;
|
|
231
|
-
var gap = TREE_NODE_GAP;
|
|
232
|
-
|
|
233
|
-
// bottom of node
|
|
234
|
-
if (clientY >= bottom - gap && clientY <= bottom) {
|
|
235
|
-
return TREE_NODE_DROP_POSITION.DRAG_OVER_BOTTOM;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// top of node
|
|
239
|
-
if (clientY <= top + gap && clientY >= top) {
|
|
240
|
-
return TREE_NODE_DROP_POSITION.DRAG_OVER_TOP;
|
|
241
|
-
}
|
|
242
|
-
if (clientY >= top + gap && clientY <= bottom - gap) {
|
|
243
|
-
return TREE_NODE_DROP_POSITION.DRAG_OVER;
|
|
244
|
-
}
|
|
245
|
-
return -1;
|
|
246
|
-
}
|
|
247
|
-
export function removeDragNode(data, params, _ref) {
|
|
248
|
-
var valueKey = _ref.valueKey,
|
|
249
|
-
childrenKey = _ref.childrenKey;
|
|
250
|
-
var dragNode = params.dragNode;
|
|
251
|
-
var traverse = function traverse(items, parent) {
|
|
252
|
-
for (var _index = 0; _index < items.length; _index += 1) {
|
|
253
|
-
var _item = items[_index];
|
|
254
|
-
if (shallowEqual(_item[valueKey], dragNode[valueKey])) {
|
|
255
|
-
items.splice(_index, 1);
|
|
256
|
-
// when children is empty, delete children prop for hidden anchor
|
|
257
|
-
if (items.length === 0 && parent) {
|
|
258
|
-
delete parent.children;
|
|
259
|
-
}
|
|
260
|
-
break;
|
|
261
|
-
}
|
|
262
|
-
if (Array.isArray(_item[childrenKey])) {
|
|
263
|
-
traverse(_item[childrenKey], _item);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
traverse(data);
|
|
268
|
-
}
|
|
269
|
-
export function createUpdateTreeDataFunction(params, _ref2) {
|
|
270
|
-
var valueKey = _ref2.valueKey,
|
|
271
|
-
childrenKey = _ref2.childrenKey;
|
|
272
|
-
return function (tree) {
|
|
273
|
-
var data = [].concat(tree);
|
|
274
|
-
var dragNode = params.dragNode,
|
|
275
|
-
dropNode = params.dropNode,
|
|
276
|
-
dropNodePosition = params.dropNodePosition;
|
|
277
|
-
var cloneDragNode = _extends({}, dragNode);
|
|
278
|
-
removeDragNode(data, params, {
|
|
279
|
-
valueKey: valueKey,
|
|
280
|
-
childrenKey: childrenKey
|
|
281
|
-
});
|
|
282
|
-
var updateTree = function updateTree(items) {
|
|
283
|
-
for (var _index2 = 0; _index2 < items.length; _index2 += 1) {
|
|
284
|
-
var _item2 = items[_index2];
|
|
285
|
-
if (shallowEqual(_item2[valueKey], dropNode[valueKey])) {
|
|
286
|
-
// drag to node inside
|
|
287
|
-
if (dropNodePosition === TREE_NODE_DROP_POSITION.DRAG_OVER) {
|
|
288
|
-
_item2[childrenKey] = _isNil(_item2[childrenKey]) ? [] : _item2[childrenKey];
|
|
289
|
-
_item2[childrenKey].push(cloneDragNode);
|
|
290
|
-
break;
|
|
291
|
-
} else if (dropNodePosition === TREE_NODE_DROP_POSITION.DRAG_OVER_TOP) {
|
|
292
|
-
// drag to top of node
|
|
293
|
-
items.splice(_index2, 0, cloneDragNode);
|
|
294
|
-
break;
|
|
295
|
-
} else if (dropNodePosition === TREE_NODE_DROP_POSITION.DRAG_OVER_BOTTOM) {
|
|
296
|
-
// drag to bottom of node
|
|
297
|
-
items.splice(_index2 + 1, 0, cloneDragNode);
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
if (Array.isArray(_item2[childrenKey]) && _item2[childrenKey].length > 0) {
|
|
302
|
-
updateTree(_item2[childrenKey]);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
};
|
|
306
|
-
updateTree(data);
|
|
307
|
-
return [].concat(data);
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
export function findNodeOfTree(data, check) {
|
|
311
|
-
var findNode = function findNode(nodes) {
|
|
312
|
-
if (nodes === void 0) {
|
|
313
|
-
nodes = [];
|
|
314
|
-
}
|
|
315
|
-
for (var i = 0; i < nodes.length; i += 1) {
|
|
316
|
-
var _item3 = nodes[i];
|
|
317
|
-
if (_isArray(_item3.children)) {
|
|
318
|
-
var _node3 = findNode(_item3.children);
|
|
319
|
-
if (_node3) {
|
|
320
|
-
return _node3;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
if (check(_item3)) {
|
|
324
|
-
return _item3;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
return undefined;
|
|
328
|
-
};
|
|
329
|
-
return findNode(data);
|
|
330
|
-
}
|
|
331
|
-
export function filterNodesOfTree(data, check) {
|
|
332
|
-
var findNodes = function findNodes(nodes) {
|
|
333
|
-
if (nodes === void 0) {
|
|
334
|
-
nodes = [];
|
|
335
|
-
}
|
|
336
|
-
var nextNodes = [];
|
|
337
|
-
for (var i = 0; i < nodes.length; i += 1) {
|
|
338
|
-
if (_isArray(nodes[i].children)) {
|
|
339
|
-
var nextChildren = findNodes(nodes[i].children);
|
|
340
|
-
if (nextChildren.length) {
|
|
341
|
-
var _item4 = _clone(nodes[i]);
|
|
342
|
-
_item4.children = nextChildren;
|
|
343
|
-
nextNodes.push(_item4);
|
|
344
|
-
continue;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
if (check(nodes[i])) {
|
|
348
|
-
nextNodes.push(nodes[i]);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
return nextNodes;
|
|
352
|
-
};
|
|
353
|
-
return findNodes(data);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* get all focusable items
|
|
358
|
-
* exclude not visible and disabled node
|
|
359
|
-
* @param filteredData - filtered tree data
|
|
360
|
-
* @param props - TreeProps
|
|
361
|
-
* @param isSearching - component is in Searching
|
|
362
|
-
* @returns
|
|
363
|
-
*/
|
|
364
|
-
export var getFocusableItems = function getFocusableItems(filteredData, props, isSearching) {
|
|
365
|
-
var disabledItemValues = props.disabledItemValues,
|
|
366
|
-
valueKey = props.valueKey,
|
|
367
|
-
childrenKey = props.childrenKey,
|
|
368
|
-
expandItemValues = props.expandItemValues;
|
|
369
|
-
var items = [];
|
|
370
|
-
var loop = function loop(nodes) {
|
|
371
|
-
nodes.forEach(function (node) {
|
|
372
|
-
var disabled = disabledItemValues.some(function (disabledItem) {
|
|
373
|
-
return shallowEqual(disabledItem, node[valueKey]);
|
|
374
|
-
});
|
|
375
|
-
if (!disabled && node.visible) {
|
|
376
|
-
items.push(node);
|
|
377
|
-
}
|
|
378
|
-
// always expand when searching
|
|
379
|
-
var expand = isSearching ? true : expandItemValues.includes(node[valueKey]);
|
|
380
|
-
if (node[childrenKey] && expand) {
|
|
381
|
-
loop(node[childrenKey]);
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
};
|
|
385
|
-
loop(filteredData);
|
|
386
|
-
return items;
|
|
387
|
-
};
|
|
388
|
-
|
|
389
|
-
/**
|
|
390
|
-
* return all focusable Item and active Element index
|
|
391
|
-
* @param focusItemValue
|
|
392
|
-
* @param focusableItems items
|
|
393
|
-
*/
|
|
394
|
-
export var getActiveIndex = function getActiveIndex(focusItemValue, focusItems, valueKey) {
|
|
395
|
-
var activeIndex = -1;
|
|
396
|
-
focusItems.forEach(function (item, index) {
|
|
397
|
-
if (shallowEqual(item[valueKey], focusItemValue)) {
|
|
398
|
-
activeIndex = index;
|
|
399
|
-
}
|
|
400
|
-
});
|
|
401
|
-
return activeIndex;
|
|
402
|
-
};
|
|
403
|
-
|
|
404
|
-
/**
|
|
405
|
-
* get current active element and node data
|
|
406
|
-
* @param flattenNodes - flattenData
|
|
407
|
-
*/
|
|
408
|
-
export var getActiveItem = function getActiveItem(focusItemValue, flattenNodes, valueKey) {
|
|
409
|
-
var nodeData = null;
|
|
410
|
-
var activeNode = Object.values(flattenNodes).find(function (node) {
|
|
411
|
-
return shallowEqual(node[valueKey], focusItemValue);
|
|
412
|
-
});
|
|
413
|
-
if (activeNode) {
|
|
414
|
-
nodeData = activeNode;
|
|
415
|
-
}
|
|
416
|
-
return nodeData;
|
|
417
|
-
};
|
|
418
|
-
export var getElementByDataKey = function getElementByDataKey(dataKey, treeNodesRefs, selector) {
|
|
419
|
-
var ele = treeNodesRefs[dataKey];
|
|
420
|
-
if (ele instanceof Element) {
|
|
421
|
-
return ele.querySelector(selector);
|
|
422
|
-
}
|
|
423
|
-
return null;
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* focus to specify tree node
|
|
428
|
-
* @param refKey - target node refKey
|
|
429
|
-
* @param treeNodeRefs - all tree node refs object
|
|
430
|
-
* @param selector - node css selector
|
|
431
|
-
*/
|
|
432
|
-
export var focusTreeNode = function focusTreeNode(refKey, treeNodeRefs, selector) {
|
|
433
|
-
var _node$focus;
|
|
434
|
-
var node = getElementByDataKey(refKey, treeNodeRefs, selector);
|
|
435
|
-
node === null || node === void 0 ? void 0 : (_node$focus = node.focus) === null || _node$focus === void 0 ? void 0 : _node$focus.call(node);
|
|
436
|
-
};
|
|
437
|
-
/**
|
|
438
|
-
* focus next item with keyboard
|
|
439
|
-
* @param param
|
|
440
|
-
*/
|
|
441
|
-
export var focusNextItem = function focusNextItem(_ref3) {
|
|
442
|
-
var focusItemValue = _ref3.focusItemValue,
|
|
443
|
-
focusableItems = _ref3.focusableItems,
|
|
444
|
-
treeNodesRefs = _ref3.treeNodesRefs,
|
|
445
|
-
selector = _ref3.selector,
|
|
446
|
-
valueKey = _ref3.valueKey,
|
|
447
|
-
callback = _ref3.callback;
|
|
448
|
-
var activeIndex = getActiveIndex(focusItemValue, focusableItems, valueKey);
|
|
449
|
-
if (focusableItems.length === 0) {
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
var nextIndex = activeIndex === focusableItems.length - 1 ? 0 : activeIndex + 1;
|
|
453
|
-
var nextFocusItemValue = focusableItems[nextIndex][valueKey];
|
|
454
|
-
callback === null || callback === void 0 ? void 0 : callback(nextFocusItemValue);
|
|
455
|
-
focusTreeNode(focusableItems[nextIndex].refKey, treeNodesRefs, selector);
|
|
456
|
-
};
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
* focus prev item with keyboard
|
|
460
|
-
* @param param
|
|
461
|
-
*/
|
|
462
|
-
export var focusPreviousItem = function focusPreviousItem(_ref4) {
|
|
463
|
-
var focusItemValue = _ref4.focusItemValue,
|
|
464
|
-
focusableItems = _ref4.focusableItems,
|
|
465
|
-
treeNodesRefs = _ref4.treeNodesRefs,
|
|
466
|
-
selector = _ref4.selector,
|
|
467
|
-
valueKey = _ref4.valueKey,
|
|
468
|
-
callback = _ref4.callback;
|
|
469
|
-
var activeIndex = getActiveIndex(focusItemValue, focusableItems, valueKey);
|
|
470
|
-
if (focusableItems.length === 0) {
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
var prevIndex = activeIndex === 0 ? focusableItems.length - 1 : activeIndex - 1;
|
|
474
|
-
prevIndex = prevIndex >= 0 ? prevIndex : 0;
|
|
475
|
-
var prevFocusItemValue = focusableItems[prevIndex][valueKey];
|
|
476
|
-
callback === null || callback === void 0 ? void 0 : callback(prevFocusItemValue);
|
|
477
|
-
focusTreeNode(focusableItems[prevIndex].refKey, treeNodesRefs, selector);
|
|
478
|
-
};
|
|
479
|
-
/**
|
|
480
|
-
* Left arrow keyboard event handler
|
|
481
|
-
* When focus is on an open node, closes the node.
|
|
482
|
-
* When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.
|
|
483
|
-
* When focus is on a root node that is also either an end node or a closed node, does nothing.
|
|
484
|
-
* @see https://www.w3.org/TR/wai-aria-practices/#TreeView
|
|
485
|
-
*/
|
|
486
|
-
export function leftArrowHandler(_ref5) {
|
|
487
|
-
var focusItem = _ref5.focusItem,
|
|
488
|
-
expand = _ref5.expand,
|
|
489
|
-
onExpand = _ref5.onExpand,
|
|
490
|
-
onFocusItem = _ref5.onFocusItem;
|
|
491
|
-
if (_isEmpty(focusItem)) {
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
494
|
-
if (expand) {
|
|
495
|
-
onExpand(_extends({}, focusItem, {
|
|
496
|
-
expand: expand
|
|
497
|
-
}));
|
|
498
|
-
} else if (focusItem !== null && focusItem !== void 0 && focusItem.parent) {
|
|
499
|
-
onFocusItem();
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
/**
|
|
504
|
-
* Right arrow keyboard event handler
|
|
505
|
-
* When focus is on a closed node, opens the node; focus does not move.
|
|
506
|
-
* When focus is on a open node, moves focus to the first child node.
|
|
507
|
-
* When focus is on an end node, does nothing.
|
|
508
|
-
* @see https://www.w3.org/TR/wai-aria-practices/#TreeView
|
|
509
|
-
*/
|
|
510
|
-
export function rightArrowHandler(_ref6) {
|
|
511
|
-
var focusItem = _ref6.focusItem,
|
|
512
|
-
expand = _ref6.expand,
|
|
513
|
-
childrenKey = _ref6.childrenKey,
|
|
514
|
-
onExpand = _ref6.onExpand,
|
|
515
|
-
onFocusItem = _ref6.onFocusItem;
|
|
516
|
-
if (_isEmpty(focusItem) || !Array.isArray(focusItem[childrenKey])) {
|
|
517
|
-
return;
|
|
518
|
-
}
|
|
519
|
-
if (!expand) {
|
|
520
|
-
onExpand(_extends({}, focusItem, {
|
|
521
|
-
expand: expand
|
|
522
|
-
}));
|
|
523
|
-
} else {
|
|
524
|
-
onFocusItem();
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
/**
|
|
529
|
-
* get scrollIndex in virtualized list
|
|
530
|
-
* @param nodes - data
|
|
531
|
-
* @param value - activeItem value
|
|
532
|
-
* @param valueKey
|
|
533
|
-
*/
|
|
534
|
-
export var getScrollToIndex = function getScrollToIndex(nodes, value, valueKey) {
|
|
535
|
-
return nodes.filter(function (n) {
|
|
536
|
-
return n.visible;
|
|
537
|
-
}).findIndex(function (item) {
|
|
538
|
-
return item[valueKey] === value;
|
|
539
|
-
});
|
|
540
|
-
};
|
|
541
|
-
|
|
542
|
-
/**
|
|
543
|
-
* when searching, expand state always return true
|
|
544
|
-
* @param searchKeyword
|
|
545
|
-
* @param expand
|
|
546
|
-
*/
|
|
547
|
-
export function getExpandWhenSearching(searchKeyword, expand) {
|
|
548
|
-
return isSearching(searchKeyword) ? true : expand;
|
|
549
|
-
}
|
|
550
|
-
function getTreeActiveNode(nodes, value, valueKey) {
|
|
551
|
-
if (_isUndefined(value)) {
|
|
552
|
-
return undefined;
|
|
553
|
-
}
|
|
554
|
-
for (var refKey in nodes) {
|
|
555
|
-
if (shallowEqual(nodes[refKey][valueKey], value)) {
|
|
556
|
-
return nodes[refKey];
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
export { getTreeActiveNode };
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
-
* toggle tree node
|
|
564
|
-
* @param param0
|
|
565
|
-
*/
|
|
566
|
-
export function toggleExpand(_ref7) {
|
|
567
|
-
var node = _ref7.node,
|
|
568
|
-
isExpand = _ref7.isExpand,
|
|
569
|
-
expandItemValues = _ref7.expandItemValues,
|
|
570
|
-
valueKey = _ref7.valueKey;
|
|
571
|
-
var newExpandItemValues = new Set(expandItemValues);
|
|
572
|
-
if (isExpand) {
|
|
573
|
-
newExpandItemValues.add(node[valueKey]);
|
|
574
|
-
} else {
|
|
575
|
-
newExpandItemValues.delete(node[valueKey]);
|
|
576
|
-
}
|
|
577
|
-
return Array.from(newExpandItemValues);
|
|
578
|
-
}
|
|
579
|
-
export function getTreeNodeTitle(label) {
|
|
580
|
-
if (typeof label === 'string') {
|
|
581
|
-
return label;
|
|
582
|
-
} else if ( /*#__PURE__*/React.isValidElement(label)) {
|
|
583
|
-
var _nodes = reactToString(label);
|
|
584
|
-
return _nodes.join('');
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
/**
|
|
589
|
-
* get all children from flattenNodes object by given parent node
|
|
590
|
-
* @param nodes
|
|
591
|
-
* @param parent
|
|
592
|
-
*/
|
|
593
|
-
export function getChildrenByFlattenNodes(nodes, parent) {
|
|
594
|
-
if (!_isNil(parent.refKey) && _isNil(nodes[parent.refKey])) {
|
|
595
|
-
return [];
|
|
596
|
-
}
|
|
597
|
-
return Object.values(nodes).filter(function (item) {
|
|
598
|
-
var _item$parent;
|
|
599
|
-
return (item === null || item === void 0 ? void 0 : (_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent.refKey) === parent.refKey && item.refKey && !nodes[item.refKey].uncheckable;
|
|
600
|
-
});
|
|
601
|
-
}
|
|
602
|
-
export function useTreeDrag() {
|
|
603
|
-
// current dragging node
|
|
604
|
-
var dragNode = useRef(null);
|
|
605
|
-
var _useState = useState(null),
|
|
606
|
-
dragOverNodeKey = _useState[0],
|
|
607
|
-
setDragOverNodeKey = _useState[1]; // drag node and it's children nodes key
|
|
608
|
-
var _useState2 = useState([]),
|
|
609
|
-
dragNodeKeys = _useState2[0],
|
|
610
|
-
setDragNodeKeys = _useState2[1];
|
|
611
|
-
var _useState3 = useState(null),
|
|
612
|
-
dropNodePosition = _useState3[0],
|
|
613
|
-
setDropNodePosition = _useState3[1];
|
|
614
|
-
var setDragNode = function setDragNode(node) {
|
|
615
|
-
dragNode.current = node;
|
|
616
|
-
};
|
|
617
|
-
return {
|
|
618
|
-
dragNode: dragNode === null || dragNode === void 0 ? void 0 : dragNode.current,
|
|
619
|
-
dragOverNodeKey: dragOverNodeKey,
|
|
620
|
-
dragNodeKeys: dragNodeKeys,
|
|
621
|
-
dropNodePosition: dropNodePosition,
|
|
622
|
-
setDragNode: setDragNode,
|
|
623
|
-
setDragOverNodeKey: setDragOverNodeKey,
|
|
624
|
-
setDragNodeKeys: setDragNodeKeys,
|
|
625
|
-
setDropNodePosition: setDropNodePosition
|
|
626
|
-
};
|
|
627
|
-
}
|
|
628
|
-
/**
|
|
629
|
-
* hooks for flatten tree structure
|
|
630
|
-
* @param param0
|
|
631
|
-
*/
|
|
632
|
-
export function useFlattenTreeData(_ref8) {
|
|
633
|
-
var data = _ref8.data,
|
|
634
|
-
labelKey = _ref8.labelKey,
|
|
635
|
-
valueKey = _ref8.valueKey,
|
|
636
|
-
childrenKey = _ref8.childrenKey,
|
|
637
|
-
_ref8$uncheckableItem = _ref8.uncheckableItemValues,
|
|
638
|
-
uncheckableItemValues = _ref8$uncheckableItem === void 0 ? [] : _ref8$uncheckableItem,
|
|
639
|
-
callback = _ref8.callback;
|
|
640
|
-
var _useState4 = useState(Object.create(null)),
|
|
641
|
-
dispatch = _useState4[1];
|
|
642
|
-
var forceUpdate = useCallback(function () {
|
|
643
|
-
dispatch(Object.create(null));
|
|
644
|
-
}, [dispatch]);
|
|
645
|
-
var flattenNodes = useRef({});
|
|
646
|
-
var flattenTreeData = useCallback(function (treeData, parent, layer) {
|
|
647
|
-
if (layer === void 0) {
|
|
648
|
-
layer = 1;
|
|
649
|
-
}
|
|
650
|
-
if (!Array.isArray(treeData) || treeData.length === 0) {
|
|
651
|
-
return [];
|
|
652
|
-
}
|
|
653
|
-
treeData.map(function (node) {
|
|
654
|
-
var _extends2;
|
|
655
|
-
var value = node[valueKey];
|
|
656
|
-
/**
|
|
657
|
-
* because the value of the node's type is string or number,
|
|
658
|
-
* so it can used as the key of the object directly
|
|
659
|
-
* to avoid number value is converted to string. 1 and '1' will be convert to '1'
|
|
660
|
-
* we used `String_` or `Number_` prefix
|
|
661
|
-
*/
|
|
662
|
-
var refKey = getNodeFormattedRefKey(value);
|
|
663
|
-
node.refKey = refKey;
|
|
664
|
-
flattenNodes.current[refKey] = _extends((_extends2 = {
|
|
665
|
-
layer: layer
|
|
666
|
-
}, _extends2[labelKey] = node[labelKey], _extends2[valueKey] = node[valueKey], _extends2.uncheckable = uncheckableItemValues.some(function (value) {
|
|
667
|
-
return shallowEqual(node[valueKey], value);
|
|
668
|
-
}), _extends2), node);
|
|
669
|
-
if (parent) {
|
|
670
|
-
flattenNodes.current[refKey].parent = _omit(parent, 'parent', 'children');
|
|
671
|
-
}
|
|
672
|
-
flattenTreeData(node[childrenKey], node, layer + 1);
|
|
673
|
-
});
|
|
674
|
-
callback === null || callback === void 0 ? void 0 : callback(flattenNodes.current);
|
|
675
|
-
}, [childrenKey, valueKey, labelKey, callback, uncheckableItemValues]);
|
|
676
|
-
var serializeListOnlyParent = useCallback(function (nodes, key) {
|
|
677
|
-
var list = [];
|
|
678
|
-
Object.keys(nodes).forEach(function (refKey) {
|
|
679
|
-
var currentNode = nodes[refKey];
|
|
680
|
-
if (!_isNil(currentNode.parent) && !_isNil(currentNode.parent.refKey)) {
|
|
681
|
-
var parentNode = nodes[currentNode.parent.refKey];
|
|
682
|
-
if (currentNode[key]) {
|
|
683
|
-
if (!(parentNode !== null && parentNode !== void 0 && parentNode.checkAll)) {
|
|
684
|
-
list.push(nodes[refKey][valueKey]);
|
|
685
|
-
} else if (parentNode !== null && parentNode !== void 0 && parentNode.uncheckable) {
|
|
686
|
-
list.push(nodes[refKey][valueKey]);
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
} else {
|
|
690
|
-
if (currentNode[key]) {
|
|
691
|
-
list.push(nodes[refKey][valueKey]);
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
});
|
|
695
|
-
return list;
|
|
696
|
-
}, [valueKey]);
|
|
697
|
-
|
|
698
|
-
/**
|
|
699
|
-
* using in CheckTreePicker, to unSerializeList check property
|
|
700
|
-
*/
|
|
701
|
-
var unSerializeList = useCallback(function (_ref9) {
|
|
702
|
-
var nodes = _ref9.nodes,
|
|
703
|
-
key = _ref9.key,
|
|
704
|
-
_ref9$value = _ref9.value,
|
|
705
|
-
value = _ref9$value === void 0 ? [] : _ref9$value,
|
|
706
|
-
cascade = _ref9.cascade,
|
|
707
|
-
uncheckableItemValues = _ref9.uncheckableItemValues;
|
|
708
|
-
// Reset values to false
|
|
709
|
-
Object.keys(nodes).forEach(function (refKey) {
|
|
710
|
-
var node = nodes[refKey];
|
|
711
|
-
if (cascade && !_isNil(node.parent) && !_isNil(node.parent.refKey)) {
|
|
712
|
-
node[key] = nodes[node.parent.refKey][key];
|
|
713
|
-
} else {
|
|
714
|
-
node[key] = false;
|
|
715
|
-
}
|
|
716
|
-
value.forEach(function (value) {
|
|
717
|
-
if (shallowEqual(nodes[refKey][valueKey], value) && !uncheckableItemValues.some(function (uncheckableValue) {
|
|
718
|
-
return shallowEqual(value, uncheckableValue);
|
|
719
|
-
})) {
|
|
720
|
-
nodes[refKey][key] = true;
|
|
721
|
-
}
|
|
722
|
-
});
|
|
723
|
-
});
|
|
724
|
-
}, [valueKey]);
|
|
725
|
-
var formatVirtualizedTreeData = function formatVirtualizedTreeData(nodes, data, expandItemValues, options) {
|
|
726
|
-
var cascade = options.cascade,
|
|
727
|
-
searchKeyword = options.searchKeyword;
|
|
728
|
-
return UNSAFE_flattenTree(data, childrenKey, function (node) {
|
|
729
|
-
var formatted = {};
|
|
730
|
-
var curNode = nodes === null || nodes === void 0 ? void 0 : nodes[node.refKey];
|
|
731
|
-
var parentKeys = getNodeParentKeys(nodes, curNode, valueKey);
|
|
732
|
-
/**
|
|
733
|
-
* When using virtualized,
|
|
734
|
-
* if the parent node is collapsed, the child nodes should be hidden
|
|
735
|
-
* avoid component height calculation errors
|
|
736
|
-
*/
|
|
737
|
-
var visible = curNode !== null && curNode !== void 0 && curNode.parent ? shouldShowNodeByParentExpanded(expandItemValues, parentKeys) : true;
|
|
738
|
-
|
|
739
|
-
/**
|
|
740
|
-
* when searching, every node default expand
|
|
741
|
-
* the node's visible should follow the original state
|
|
742
|
-
*/
|
|
743
|
-
if (isSearching(searchKeyword)) {
|
|
744
|
-
visible = node.visible;
|
|
745
|
-
}
|
|
746
|
-
if (curNode) {
|
|
747
|
-
var checkState = !_isUndefined(cascade) ? getNodeCheckState({
|
|
748
|
-
node: curNode,
|
|
749
|
-
cascade: cascade,
|
|
750
|
-
nodes: nodes,
|
|
751
|
-
childrenKey: childrenKey
|
|
752
|
-
}) : undefined;
|
|
753
|
-
formatted = _extends({}, node, {
|
|
754
|
-
check: curNode.check,
|
|
755
|
-
uncheckable: curNode.uncheckable,
|
|
756
|
-
hasChildren: !!node[childrenKey],
|
|
757
|
-
layer: curNode.layer,
|
|
758
|
-
parent: curNode.parent,
|
|
759
|
-
checkState: checkState,
|
|
760
|
-
visible: visible
|
|
761
|
-
});
|
|
762
|
-
}
|
|
763
|
-
return formatted;
|
|
764
|
-
});
|
|
765
|
-
};
|
|
766
|
-
useEffect(function () {
|
|
767
|
-
// when data is changed, should clear the flattenNodes, avoid duplicate keys
|
|
768
|
-
flattenNodes.current = {};
|
|
769
|
-
flattenTreeData(data);
|
|
770
|
-
}, [data]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
771
|
-
|
|
772
|
-
return {
|
|
773
|
-
forceUpdate: forceUpdate,
|
|
774
|
-
flattenNodes: flattenNodes.current,
|
|
775
|
-
flattenTreeData: flattenTreeData,
|
|
776
|
-
serializeListOnlyParent: serializeListOnlyParent,
|
|
777
|
-
unSerializeList: unSerializeList,
|
|
778
|
-
formatVirtualizedTreeData: formatVirtualizedTreeData
|
|
779
|
-
};
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
/**
|
|
783
|
-
* A hook that saving every tree node ref
|
|
784
|
-
*/
|
|
785
|
-
export function useTreeNodeRefs() {
|
|
786
|
-
var treeNodeRefs = useRef({});
|
|
787
|
-
var saveTreeNodeRef = function saveTreeNodeRef(ref, refKey) {
|
|
788
|
-
if (!_isNil(refKey)) {
|
|
789
|
-
treeNodeRefs.current[refKey] = ref;
|
|
790
|
-
}
|
|
791
|
-
};
|
|
792
|
-
return {
|
|
793
|
-
treeNodesRefs: treeNodeRefs.current,
|
|
794
|
-
saveTreeNodeRef: saveTreeNodeRef
|
|
795
|
-
};
|
|
796
|
-
}
|
|
797
|
-
/**
|
|
798
|
-
* A hook that handles tree search filter options
|
|
799
|
-
* @param props
|
|
800
|
-
*/
|
|
801
|
-
export function useTreeSearch(props) {
|
|
802
|
-
var labelKey = props.labelKey,
|
|
803
|
-
childrenKey = props.childrenKey,
|
|
804
|
-
searchKeyword = props.searchKeyword,
|
|
805
|
-
data = props.data,
|
|
806
|
-
searchBy = props.searchBy,
|
|
807
|
-
callback = props.callback;
|
|
808
|
-
var filterVisibleData = useCallback(function (data, searchKeyword) {
|
|
809
|
-
var setVisible = function setVisible(nodes) {
|
|
810
|
-
return nodes.forEach(function (item) {
|
|
811
|
-
item.visible = searchBy ? searchBy(searchKeyword, item[labelKey], item) : shouldDisplay(item[labelKey], searchKeyword);
|
|
812
|
-
if (_isArray(item[childrenKey])) {
|
|
813
|
-
filterVisibleData(item[childrenKey], searchKeyword);
|
|
814
|
-
item[childrenKey].forEach(function (child) {
|
|
815
|
-
if (child.visible) {
|
|
816
|
-
item.visible = child.visible;
|
|
817
|
-
}
|
|
818
|
-
});
|
|
819
|
-
}
|
|
820
|
-
});
|
|
821
|
-
};
|
|
822
|
-
setVisible(data);
|
|
823
|
-
return data;
|
|
824
|
-
}, [childrenKey, labelKey, searchBy]);
|
|
825
|
-
|
|
826
|
-
// Use search keywords to filter options.
|
|
827
|
-
var _useState5 = useState(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : ''),
|
|
828
|
-
searchKeywordState = _useState5[0],
|
|
829
|
-
setSearchKeyword = _useState5[1];
|
|
830
|
-
var _useState6 = useState(function () {
|
|
831
|
-
return filterVisibleData(data, searchKeywordState);
|
|
832
|
-
}),
|
|
833
|
-
filteredData = _useState6[0],
|
|
834
|
-
setFilteredData = _useState6[1];
|
|
835
|
-
var handleSearch = function handleSearch(searchKeyword, event) {
|
|
836
|
-
var filteredData = filterVisibleData(data, searchKeyword);
|
|
837
|
-
setFilteredData(filteredData);
|
|
838
|
-
setSearchKeyword(searchKeyword);
|
|
839
|
-
event && (callback === null || callback === void 0 ? void 0 : callback(searchKeyword, filteredData, event));
|
|
840
|
-
};
|
|
841
|
-
useEffect(function () {
|
|
842
|
-
handleSearch(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : '');
|
|
843
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
844
|
-
}, [searchKeyword]);
|
|
845
|
-
var handleSetFilteredData = useCallback(function (data, searchKeyword) {
|
|
846
|
-
setFilteredData(filterVisibleData(data, searchKeyword));
|
|
847
|
-
}, [filterVisibleData]);
|
|
848
|
-
return {
|
|
849
|
-
searchKeywordState: searchKeywordState,
|
|
850
|
-
filteredData: filteredData,
|
|
851
|
-
setFilteredData: handleSetFilteredData,
|
|
852
|
-
setSearchKeyword: setSearchKeyword,
|
|
853
|
-
handleSearch: handleSearch
|
|
854
|
-
};
|
|
855
|
-
}
|
|
856
|
-
export function useGetTreeNodeChildren(treeData, valueKey, childrenKey) {
|
|
857
|
-
var _useState7 = useState([]),
|
|
858
|
-
loadingNodeValues = _useState7[0],
|
|
859
|
-
setLoadingNodeValues = _useState7[1];
|
|
860
|
-
var _useState8 = useState(treeData),
|
|
861
|
-
data = _useState8[0],
|
|
862
|
-
setData = _useState8[1];
|
|
863
|
-
var concatChildren = useCallback(function (treeNode, children) {
|
|
864
|
-
var value = treeNode[valueKey];
|
|
865
|
-
treeNode = findNodeOfTree(data, function (item) {
|
|
866
|
-
return value === item[valueKey];
|
|
867
|
-
});
|
|
868
|
-
treeNode[childrenKey] = children;
|
|
869
|
-
var newData = data.concat([]);
|
|
870
|
-
setData(newData);
|
|
871
|
-
return newData;
|
|
872
|
-
}, [data, valueKey, childrenKey]);
|
|
873
|
-
var loadChildren = useCallback(function (node, getChildren) {
|
|
874
|
-
setLoadingNodeValues(function (prev) {
|
|
875
|
-
return prev.concat(node[valueKey]);
|
|
876
|
-
});
|
|
877
|
-
var children = getChildren(node);
|
|
878
|
-
if (children instanceof Promise) {
|
|
879
|
-
children.then(function (res) {
|
|
880
|
-
var newData = concatChildren(node, res);
|
|
881
|
-
setData(newData);
|
|
882
|
-
setLoadingNodeValues(function (prev) {
|
|
883
|
-
return prev.filter(function (item) {
|
|
884
|
-
return !shallowEqual(item, node[valueKey]);
|
|
885
|
-
});
|
|
886
|
-
});
|
|
887
|
-
});
|
|
888
|
-
} else {
|
|
889
|
-
setData(concatChildren(node, children));
|
|
890
|
-
setLoadingNodeValues(function (prev) {
|
|
891
|
-
return prev.filter(function (item) {
|
|
892
|
-
return !shallowEqual(item, node[valueKey]);
|
|
893
|
-
});
|
|
894
|
-
});
|
|
895
|
-
}
|
|
896
|
-
}, [concatChildren, valueKey]);
|
|
897
|
-
return {
|
|
898
|
-
data: data,
|
|
899
|
-
setData: setData,
|
|
900
|
-
loadingNodeValues: loadingNodeValues,
|
|
901
|
-
loadChildren: loadChildren
|
|
902
|
-
};
|
|
903
|
-
}
|
|
904
|
-
/**
|
|
905
|
-
* Focus to active tree node.
|
|
906
|
-
* @param param0
|
|
907
|
-
*/
|
|
908
|
-
export function focusToActiveTreeNode(_ref10) {
|
|
909
|
-
var _activeItem$focus;
|
|
910
|
-
var list = _ref10.list,
|
|
911
|
-
valueKey = _ref10.valueKey,
|
|
912
|
-
activeNode = _ref10.activeNode,
|
|
913
|
-
virtualized = _ref10.virtualized,
|
|
914
|
-
container = _ref10.container,
|
|
915
|
-
selector = _ref10.selector,
|
|
916
|
-
formattedNodes = _ref10.formattedNodes;
|
|
917
|
-
if (!container) return;
|
|
918
|
-
if (virtualized && activeNode) {
|
|
919
|
-
var _list$scrollToRow;
|
|
920
|
-
var scrollIndex = getScrollToIndex(formattedNodes, activeNode === null || activeNode === void 0 ? void 0 : activeNode[valueKey], valueKey);
|
|
921
|
-
(_list$scrollToRow = list.scrollToRow) === null || _list$scrollToRow === void 0 ? void 0 : _list$scrollToRow.call(list, scrollIndex);
|
|
922
|
-
return;
|
|
923
|
-
}
|
|
924
|
-
var activeItem = container.querySelector(selector);
|
|
925
|
-
if (!activeItem) {
|
|
926
|
-
return;
|
|
927
|
-
}
|
|
928
|
-
activeItem === null || activeItem === void 0 ? void 0 : (_activeItem$focus = activeItem.focus) === null || _activeItem$focus === void 0 ? void 0 : _activeItem$focus.call(activeItem);
|
|
929
|
-
}
|
|
930
|
-
export function isSearching(searchKeyword) {
|
|
931
|
-
return !_isEmpty(searchKeyword);
|
|
932
|
-
}
|
|
933
|
-
export function getTreeNodeIndent(rtl, layer, absolute) {
|
|
934
|
-
var _ref12;
|
|
935
|
-
if (absolute === void 0) {
|
|
936
|
-
absolute = false;
|
|
937
|
-
}
|
|
938
|
-
// layer start from 1
|
|
939
|
-
var offset = layer * TREE_NODE_PADDING + TREE_NODE_ROOT_PADDING;
|
|
940
|
-
if (absolute) {
|
|
941
|
-
var _ref11;
|
|
942
|
-
return _ref11 = {}, _ref11[rtl ? 'right' : 'left'] = offset, _ref11;
|
|
943
|
-
}
|
|
944
|
-
return _ref12 = {}, _ref12[rtl ? 'paddingRight' : 'paddingLeft'] = offset, _ref12;
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
/**
|
|
948
|
-
* according to the value type to get the formatted valueKey of the node
|
|
949
|
-
* @param value
|
|
950
|
-
* @returns
|
|
951
|
-
*/
|
|
952
|
-
export function getNodeFormattedRefKey(value) {
|
|
953
|
-
return "" + (typeof value === 'number' ? 'Number_' : 'String_') + value;
|
|
954
|
-
}
|
|
955
|
-
|
|
956
|
-
/**
|
|
957
|
-
* create drag preview when tree node start drag
|
|
958
|
-
* @param name
|
|
959
|
-
* @param className
|
|
960
|
-
* @returns
|
|
961
|
-
*/
|
|
962
|
-
export function createDragPreview(name, className) {
|
|
963
|
-
var dragPreview = document.createElement('div');
|
|
964
|
-
dragPreview.id = 'rs-tree-drag-preview';
|
|
965
|
-
dragPreview.innerHTML = name;
|
|
966
|
-
dragPreview.classList.add(className);
|
|
967
|
-
document.body.appendChild(dragPreview);
|
|
968
|
-
return dragPreview;
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
/**
|
|
972
|
-
* remove drag preview when tree node drop
|
|
973
|
-
*/
|
|
974
|
-
export function removeDragPreview() {
|
|
975
|
-
var _dragPreview$parentNo, _dragPreview$parentNo2;
|
|
976
|
-
var dragPreview = document.getElementById('rs-tree-drag-preview');
|
|
977
|
-
dragPreview === null || dragPreview === void 0 ? void 0 : (_dragPreview$parentNo = dragPreview.parentNode) === null || _dragPreview$parentNo === void 0 ? void 0 : (_dragPreview$parentNo2 = _dragPreview$parentNo.removeChild) === null || _dragPreview$parentNo2 === void 0 ? void 0 : _dragPreview$parentNo2.call(_dragPreview$parentNo, dragPreview);
|
|
978
|
-
}
|
|
979
|
-
export function stringifyTreeNodeLabel(label) {
|
|
980
|
-
if (typeof label === 'string') {
|
|
981
|
-
return label;
|
|
982
|
-
} else if ( /*#__PURE__*/React.isValidElement(label)) {
|
|
983
|
-
var _nodes2 = reactToString(label);
|
|
984
|
-
return _nodes2.join('');
|
|
985
|
-
}
|
|
986
|
-
return '';
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
/**
|
|
990
|
-
* Returns a WeakMap that maps each item in `items` to its parent
|
|
991
|
-
* indicated by `getChildren` function
|
|
992
|
-
*/
|
|
993
|
-
export function getParentMap(items, getChildren) {
|
|
994
|
-
var map = new WeakMap();
|
|
995
|
-
for (var queue = [].concat(items); queue.length > 0;) {
|
|
996
|
-
var _item5 = queue.shift();
|
|
997
|
-
var children = getChildren(_item5);
|
|
998
|
-
if (children) {
|
|
999
|
-
for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {
|
|
1000
|
-
var child = _step2.value;
|
|
1001
|
-
map.set(child, _item5);
|
|
1002
|
-
queue.push(child);
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
}
|
|
1006
|
-
return map;
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
/**
|
|
1010
|
-
* Returns a Map that maps each item's "key", indicated by `getKey` function,
|
|
1011
|
-
* to its parent indicated by `getChildren` function
|
|
1012
|
-
*
|
|
1013
|
-
* NOTICE:
|
|
1014
|
-
* Using this function is discouraged.
|
|
1015
|
-
* Use {@link getParentMap} whenever possible.
|
|
1016
|
-
*/
|
|
1017
|
-
export function getKeyParentMap(items, getKey, getChildren) {
|
|
1018
|
-
var map = new Map();
|
|
1019
|
-
for (var queue = [].concat(items); queue.length > 0;) {
|
|
1020
|
-
var _item6 = queue.shift();
|
|
1021
|
-
var children = getChildren(_item6);
|
|
1022
|
-
if (children) {
|
|
1023
|
-
for (var _iterator3 = _createForOfIteratorHelperLoose(children), _step3; !(_step3 = _iterator3()).done;) {
|
|
1024
|
-
var child = _step3.value;
|
|
1025
|
-
map.set(getKey(child), _item6);
|
|
1026
|
-
queue.push(child);
|
|
1027
|
-
}
|
|
1028
|
-
}
|
|
1029
|
-
}
|
|
1030
|
-
return map;
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
|
-
/**
|
|
1034
|
-
* Returns an array indicating the hierarchy path from root towards `target` item
|
|
1035
|
-
*/
|
|
1036
|
-
export function getPathTowardsItem(target, getParent) {
|
|
1037
|
-
if (!target) return [];
|
|
1038
|
-
var path = [target];
|
|
1039
|
-
for (var parent = getParent(target); !!parent; parent = getParent(parent)) {
|
|
1040
|
-
path.unshift(parent);
|
|
1041
|
-
}
|
|
1042
|
-
return path;
|
|
1043
|
-
}
|