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