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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface FocusStateProps {
|
|
3
|
+
target: React.RefObject<HTMLElement>;
|
|
4
|
+
onEnter?: (node: HTMLElement) => void;
|
|
5
|
+
onExit?: (node: HTMLElement) => void;
|
|
6
|
+
}
|
|
7
|
+
declare function useFocusState(props: FocusStateProps): {
|
|
8
|
+
active: boolean;
|
|
9
|
+
focusItemValue: string | number | null | undefined;
|
|
10
|
+
setFocusItemValue: import("react").Dispatch<import("react").SetStateAction<string | number | null | undefined>>;
|
|
11
|
+
triggerProps: {
|
|
12
|
+
onEnter: (...args: any[]) => any;
|
|
13
|
+
onExit: (...args: any[]) => any;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export default useFocusState;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useEventCallback } from '../../utils';
|
|
4
|
+
function useFocusState(props) {
|
|
5
|
+
var target = props.target;
|
|
6
|
+
var _useState = useState(false),
|
|
7
|
+
active = _useState[0],
|
|
8
|
+
setActive = _useState[1];
|
|
9
|
+
var _useState2 = useState(null),
|
|
10
|
+
focusItemValue = _useState2[0],
|
|
11
|
+
setFocusItemValue = _useState2[1];
|
|
12
|
+
var focusTarget = useEventCallback(function () {
|
|
13
|
+
var _target$current;
|
|
14
|
+
(_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
|
|
15
|
+
});
|
|
16
|
+
var onEnter = useEventCallback(function (node) {
|
|
17
|
+
var _props$onEnter;
|
|
18
|
+
setActive(true);
|
|
19
|
+
(_props$onEnter = props.onEnter) === null || _props$onEnter === void 0 ? void 0 : _props$onEnter.call(props, node);
|
|
20
|
+
});
|
|
21
|
+
var onExit = useEventCallback(function (node) {
|
|
22
|
+
var _props$onExit;
|
|
23
|
+
setActive(false);
|
|
24
|
+
focusTarget();
|
|
25
|
+
(_props$onExit = props.onExit) === null || _props$onExit === void 0 ? void 0 : _props$onExit.call(props, node);
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
active: active,
|
|
29
|
+
focusItemValue: focusItemValue,
|
|
30
|
+
setFocusItemValue: setFocusItemValue,
|
|
31
|
+
triggerProps: {
|
|
32
|
+
onEnter: onEnter,
|
|
33
|
+
onExit: onExit
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export default useFocusState;
|
|
@@ -126,7 +126,9 @@ export var useDateField = function useDateField(format, localize, date) {
|
|
|
126
126
|
if (typeof value === 'number') {
|
|
127
127
|
value = padNumber(value, pattern.length);
|
|
128
128
|
}
|
|
129
|
-
|
|
129
|
+
if (typeof value !== 'undefined') {
|
|
130
|
+
str = str.replace(pattern, value);
|
|
131
|
+
}
|
|
130
132
|
}
|
|
131
133
|
});
|
|
132
134
|
return str;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
import React, {
|
|
4
|
+
import React, { useRef, useMemo } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import Input from '../Input';
|
|
7
7
|
import { mergeRefs, useCustom, useControlled, useEventCallback } from '../utils';
|
|
8
|
-
import { getInputSelectedState, validateDateTime,
|
|
9
|
-
import useDateInputState from './useDateInputState';
|
|
10
|
-
import useKeyboardInputEvent from './useKeyboardInputEvent';
|
|
11
|
-
import useIsFocused from './useIsFocused';
|
|
8
|
+
import { getInputSelectedState, validateDateTime, useInputSelection } from './utils';
|
|
9
|
+
import useDateInputState from './hooks/useDateInputState';
|
|
10
|
+
import useKeyboardInputEvent from './hooks/useKeyboardInputEvent';
|
|
11
|
+
import useIsFocused from './hooks/useIsFocused';
|
|
12
|
+
import useFieldCursor from './hooks/useFieldCursor';
|
|
13
|
+
import useSelectedState from './hooks/useSelectedState';
|
|
12
14
|
/**
|
|
13
15
|
* The DateInput component lets users select a date with the keyboard.
|
|
14
16
|
* @version 5.58.0
|
|
@@ -26,13 +28,9 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
26
28
|
onFocus = props.onFocus,
|
|
27
29
|
rest = _objectWithoutPropertiesLoose(props, ["format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus"]);
|
|
28
30
|
var inputRef = useRef();
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
selectionEnd: 0
|
|
33
|
-
}),
|
|
34
|
-
selectedState = _useState[0],
|
|
35
|
-
setSelectedState = _useState[1];
|
|
31
|
+
var _useSelectedState = useSelectedState(),
|
|
32
|
+
selectedState = _useSelectedState.selectedState,
|
|
33
|
+
setSelectedState = _useSelectedState.setSelectedState;
|
|
36
34
|
var _useCustom = useCustom('Calendar'),
|
|
37
35
|
locale = _useCustom.locale;
|
|
38
36
|
var dateLocale = locale.dateLocale;
|
|
@@ -52,6 +50,10 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
52
50
|
getDateField = _useDateInputState.getDateField,
|
|
53
51
|
toDateString = _useDateInputState.toDateString,
|
|
54
52
|
isEmptyValue = _useDateInputState.isEmptyValue;
|
|
53
|
+
var _useFieldCursor = useFieldCursor(formatStr, valueProp),
|
|
54
|
+
isMoveCursor = _useFieldCursor.isMoveCursor,
|
|
55
|
+
increment = _useFieldCursor.increment,
|
|
56
|
+
reset = _useFieldCursor.reset;
|
|
55
57
|
var dateString = toDateString();
|
|
56
58
|
var keyPressOptions = useMemo(function () {
|
|
57
59
|
return {
|
|
@@ -74,8 +76,9 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
74
76
|
input: input,
|
|
75
77
|
direction: direction
|
|
76
78
|
}));
|
|
77
|
-
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
78
79
|
setSelectedState(state);
|
|
80
|
+
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
81
|
+
reset();
|
|
79
82
|
});
|
|
80
83
|
var onSegmentValueChange = useEventCallback(function (event) {
|
|
81
84
|
var input = event.target;
|
|
@@ -98,6 +101,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
98
101
|
if (!pattern) {
|
|
99
102
|
return;
|
|
100
103
|
}
|
|
104
|
+
increment();
|
|
101
105
|
var field = getDateField(pattern);
|
|
102
106
|
var value = parseInt(key, 10);
|
|
103
107
|
var padValue = parseInt("" + (field.value || '') + key, 10);
|
|
@@ -107,10 +111,6 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
107
111
|
if (validateDateTime(field.name, padValue)) {
|
|
108
112
|
newValue = padValue;
|
|
109
113
|
}
|
|
110
|
-
if (pattern === 'M') {
|
|
111
|
-
// Month cannot be less than 1.
|
|
112
|
-
newValue = Math.max(1, newValue);
|
|
113
|
-
}
|
|
114
114
|
setDateField(pattern, newValue, function (date) {
|
|
115
115
|
return handleChange(date, event);
|
|
116
116
|
});
|
|
@@ -126,7 +126,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
126
126
|
setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
|
|
127
127
|
|
|
128
128
|
// If the field is full value, move the cursor to the next field
|
|
129
|
-
if (
|
|
129
|
+
if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
|
|
130
130
|
onSegmentChange(event, 'right');
|
|
131
131
|
}
|
|
132
132
|
});
|
|
@@ -142,6 +142,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
142
142
|
setDateField(selectedState.selectedPattern, null, function (date) {
|
|
143
143
|
return handleChange(date, event);
|
|
144
144
|
});
|
|
145
|
+
reset();
|
|
145
146
|
}
|
|
146
147
|
});
|
|
147
148
|
var handleClick = useEventCallback(function (event) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useEffect } from 'react';
|
|
3
3
|
import startCase from 'lodash/startCase';
|
|
4
|
-
import { addDays, addMonths, addYears, addHours, addMinutes, addSeconds, format, isLastDayOfMonth, lastDayOfMonth, isValid } from '
|
|
5
|
-
import { useDateField, patternMap } from '
|
|
4
|
+
import { addDays, addMonths, addYears, addHours, addMinutes, addSeconds, format, isLastDayOfMonth, lastDayOfMonth, isValid } from '../../utils/dateUtils';
|
|
5
|
+
import { useDateField, patternMap } from '../DateField';
|
|
6
6
|
export function useDateInputState(_ref) {
|
|
7
7
|
var formatStr = _ref.formatStr,
|
|
8
8
|
locale = _ref.locale,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useRef } from 'react';
|
|
3
|
+
import { getPatternGroups } from '../utils';
|
|
4
|
+
import useUpdateEffect from '../../utils/useUpdateEffect';
|
|
5
|
+
export function useFieldCursor(format, value) {
|
|
6
|
+
var typeCount = useRef(0);
|
|
7
|
+
var increment = function increment() {
|
|
8
|
+
typeCount.current += 1;
|
|
9
|
+
};
|
|
10
|
+
var reset = function reset() {
|
|
11
|
+
typeCount.current = 0;
|
|
12
|
+
};
|
|
13
|
+
var isMoveCursor = useCallback(function (value, pattern) {
|
|
14
|
+
var patternGroup = getPatternGroups(format, pattern);
|
|
15
|
+
if (value.toString().length === patternGroup.length) {
|
|
16
|
+
return true;
|
|
17
|
+
} else if (pattern === 'y' && typeCount.current === 4) {
|
|
18
|
+
return true;
|
|
19
|
+
} else if (pattern !== 'y' && typeCount.current === 2) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
switch (pattern) {
|
|
23
|
+
case 'M':
|
|
24
|
+
return parseInt(value + "0") > 12;
|
|
25
|
+
case 'd':
|
|
26
|
+
return parseInt(value + "0") > 31;
|
|
27
|
+
case 'H':
|
|
28
|
+
return parseInt(value + "0") > 23;
|
|
29
|
+
case 'h':
|
|
30
|
+
return parseInt(value + "0") > 12;
|
|
31
|
+
case 'm':
|
|
32
|
+
case 's':
|
|
33
|
+
return parseInt(value + "0") > 59;
|
|
34
|
+
default:
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}, [format]);
|
|
38
|
+
useUpdateEffect(function () {
|
|
39
|
+
if (!value) {
|
|
40
|
+
reset();
|
|
41
|
+
}
|
|
42
|
+
}, [value]);
|
|
43
|
+
return {
|
|
44
|
+
increment: increment,
|
|
45
|
+
reset: reset,
|
|
46
|
+
isMoveCursor: isMoveCursor
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export default useFieldCursor;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare function useSelectedState(): {
|
|
3
|
+
selectedState: {
|
|
4
|
+
selectedPattern: string;
|
|
5
|
+
selectionStart: number;
|
|
6
|
+
selectionEnd: number;
|
|
7
|
+
};
|
|
8
|
+
setSelectedState: import("react").Dispatch<import("react").SetStateAction<{
|
|
9
|
+
selectedPattern: string;
|
|
10
|
+
selectionStart: number;
|
|
11
|
+
selectionEnd: number;
|
|
12
|
+
}>>;
|
|
13
|
+
};
|
|
14
|
+
export default useSelectedState;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
var defaultSelectedState = {
|
|
4
|
+
selectedPattern: 'y',
|
|
5
|
+
selectionStart: 0,
|
|
6
|
+
selectionEnd: 0
|
|
7
|
+
};
|
|
8
|
+
export function useSelectedState() {
|
|
9
|
+
var _useState = useState(defaultSelectedState),
|
|
10
|
+
selectedState = _useState[0],
|
|
11
|
+
setSelectedState = _useState[1];
|
|
12
|
+
return {
|
|
13
|
+
selectedState: selectedState,
|
|
14
|
+
setSelectedState: setSelectedState
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export default useSelectedState;
|
package/esm/DateInput/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import DateInput from './DateInput';
|
|
2
|
-
export { useDateInputState } from './useDateInputState';
|
|
3
|
-
export { useKeyboardInputEvent } from './useKeyboardInputEvent';
|
|
4
|
-
export { useIsFocused } from './useIsFocused';
|
|
2
|
+
export { useDateInputState } from './hooks/useDateInputState';
|
|
3
|
+
export { useKeyboardInputEvent } from './hooks/useKeyboardInputEvent';
|
|
4
|
+
export { useIsFocused } from './hooks/useIsFocused';
|
|
5
|
+
export { useSelectedState } from './hooks/useSelectedState';
|
|
6
|
+
export { useFieldCursor } from './hooks/useFieldCursor';
|
|
5
7
|
export * from './utils';
|
|
6
8
|
export type { DateInputProps } from './DateInput';
|
|
7
9
|
export default DateInput;
|
package/esm/DateInput/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import DateInput from './DateInput';
|
|
3
|
-
export { useDateInputState } from './useDateInputState';
|
|
4
|
-
export { useKeyboardInputEvent } from './useKeyboardInputEvent';
|
|
5
|
-
export { useIsFocused } from './useIsFocused';
|
|
3
|
+
export { useDateInputState } from './hooks/useDateInputState';
|
|
4
|
+
export { useKeyboardInputEvent } from './hooks/useKeyboardInputEvent';
|
|
5
|
+
export { useIsFocused } from './hooks/useIsFocused';
|
|
6
|
+
export { useSelectedState } from './hooks/useSelectedState';
|
|
7
|
+
export { useFieldCursor } from './hooks/useFieldCursor';
|
|
6
8
|
export * from './utils';
|
|
7
9
|
export default DateInput;
|
package/esm/DateInput/utils.d.ts
CHANGED
|
@@ -58,6 +58,5 @@ export declare function getInputSelectedState(options: SelectedStateOptions): {
|
|
|
58
58
|
};
|
|
59
59
|
export declare function validateDateTime(type: string, value: number): boolean;
|
|
60
60
|
export declare function modifyDate(date: Date, type: string, value: number): Date;
|
|
61
|
-
export declare function isFieldFullValue(formatStr: string, value: number, pattern: string): boolean;
|
|
62
61
|
export declare function useInputSelection(input: React.RefObject<any>): (selectionStart: number, selectionEnd: number) => void;
|
|
63
62
|
export {};
|
package/esm/DateInput/utils.js
CHANGED
|
@@ -215,31 +215,10 @@ export function modifyDate(date, type, value) {
|
|
|
215
215
|
}
|
|
216
216
|
return date;
|
|
217
217
|
}
|
|
218
|
-
export function isFieldFullValue(formatStr, value, pattern) {
|
|
219
|
-
var patternGroup = getPatternGroups(formatStr, pattern);
|
|
220
|
-
if (value.toString().length === patternGroup.length) {
|
|
221
|
-
return true;
|
|
222
|
-
}
|
|
223
|
-
switch (pattern) {
|
|
224
|
-
case 'M':
|
|
225
|
-
return parseInt(value + "0") > 12;
|
|
226
|
-
case 'd':
|
|
227
|
-
return parseInt(value + "0") > 31;
|
|
228
|
-
case 'H':
|
|
229
|
-
return parseInt(value + "0") > 23;
|
|
230
|
-
case 'h':
|
|
231
|
-
return parseInt(value + "0") > 12;
|
|
232
|
-
case 'm':
|
|
233
|
-
case 's':
|
|
234
|
-
return parseInt(value + "0") > 59;
|
|
235
|
-
default:
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
var isTestEnvironment = typeof process !== 'undefined' && undefined === 'test';
|
|
240
218
|
export function useInputSelection(input) {
|
|
241
219
|
return function setSelectionRange(selectionStart, selectionEnd) {
|
|
242
|
-
|
|
220
|
+
var isTest = input.current.dataset.test === 'true';
|
|
221
|
+
if (isTest) {
|
|
243
222
|
safeSetSelection(input.current, selectionStart, selectionEnd);
|
|
244
223
|
return;
|
|
245
224
|
}
|
|
@@ -82,6 +82,10 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
|
|
|
82
82
|
onShortcutClick?: (range: RangeType<Date>, event: React.MouseEvent) => void;
|
|
83
83
|
/** Called when clean */
|
|
84
84
|
onClean?: (event: React.MouseEvent) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Custom rendering of the selected date.
|
|
87
|
+
*/
|
|
88
|
+
renderValue?: (value: Date, format: string) => string;
|
|
85
89
|
/**
|
|
86
90
|
* Custom rendering calendar cell content.
|
|
87
91
|
*
|
|
@@ -19,6 +19,7 @@ import { mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEve
|
|
|
19
19
|
import { shouldRenderMonth, shouldRenderDate, shouldRenderTime, shouldOnlyRenderTime, setHours, getHours, isValid, disableTime, copyTime, calendarOnlyProps } from '../utils/dateUtils';
|
|
20
20
|
import { PickerPopup, PickerLabel, PickerIndicator, PickerToggleTrigger, pickerPropTypes, pickTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../internals/Picker';
|
|
21
21
|
import { OverlayCloseCause } from '../internals/Overlay/OverlayTrigger';
|
|
22
|
+
import Input from '../Input';
|
|
22
23
|
import DateInput from '../DateInput';
|
|
23
24
|
import InputGroup from '../InputGroup';
|
|
24
25
|
import { splitRanges, deprecatedPropTypes, getRestProps } from './utils';
|
|
@@ -88,11 +89,12 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
88
89
|
onToggleTimeDropdown = props.onToggleTimeDropdown,
|
|
89
90
|
onShortcutClick = props.onShortcutClick,
|
|
90
91
|
renderCell = props.renderCell,
|
|
92
|
+
renderValue = props.renderValue,
|
|
91
93
|
DEPRECATED_disabledDate = props.disabledDate,
|
|
92
94
|
DEPRECATED_disabledHours = props.disabledHours,
|
|
93
95
|
DEPRECATED_disabledMinutes = props.disabledMinutes,
|
|
94
96
|
DEPRECATED_disabledSeconds = props.disabledSeconds,
|
|
95
|
-
restProps = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEntered", "onExited", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"]);
|
|
97
|
+
restProps = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEntered", "onExited", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "renderValue", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"]);
|
|
96
98
|
var id = useUniqueId('rs-', idProp);
|
|
97
99
|
var _usePickerRef = usePickerRef(ref),
|
|
98
100
|
trigger = _usePickerRef.trigger,
|
|
@@ -457,6 +459,19 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
457
459
|
ariaProps = _partitionHTMLProps[0],
|
|
458
460
|
rest = _partitionHTMLProps[1];
|
|
459
461
|
var invalidValue = value && isErrorValue(value);
|
|
462
|
+
|
|
463
|
+
// Custom rendering of the selected value
|
|
464
|
+
var customValue = null;
|
|
465
|
+
|
|
466
|
+
// Input box is read-only when the component is uneditable or loading state
|
|
467
|
+
var inputReadOnly = readOnly || !editable || loading || false;
|
|
468
|
+
if (typeof renderValue === 'function' && value) {
|
|
469
|
+
customValue = renderValue(value, formatStr);
|
|
470
|
+
|
|
471
|
+
// If the custom rendering value, the input box is read-only
|
|
472
|
+
inputReadOnly = true;
|
|
473
|
+
}
|
|
474
|
+
var TargetInput = customValue ? Input : DateInput;
|
|
460
475
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
461
476
|
trigger: "active",
|
|
462
477
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
@@ -477,24 +492,24 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
477
492
|
}) : /*#__PURE__*/React.createElement(InputGroup, _extends({}, getRestProps(rest, usedClassNamePropKeys), {
|
|
478
493
|
inside: true,
|
|
479
494
|
size: size,
|
|
495
|
+
disabled: disabled,
|
|
480
496
|
onClick: handleClick
|
|
481
497
|
}), /*#__PURE__*/React.createElement(PickerLabel, {
|
|
482
498
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["label"]))),
|
|
483
499
|
id: id + "-label"
|
|
484
|
-
}, label), /*#__PURE__*/React.createElement(
|
|
500
|
+
}, label), /*#__PURE__*/React.createElement(TargetInput, _extends({
|
|
485
501
|
"aria-haspopup": "dialog",
|
|
486
502
|
"aria-invalid": invalidValue,
|
|
487
503
|
"aria-labelledby": label ? id + "-label" : undefined
|
|
488
504
|
}, ariaProps, {
|
|
489
505
|
ref: target,
|
|
490
506
|
id: id,
|
|
491
|
-
value: value,
|
|
507
|
+
value: customValue || value,
|
|
492
508
|
format: formatStr,
|
|
493
509
|
placeholder: placeholder ? placeholder : formatStr,
|
|
494
510
|
disabled: disabled,
|
|
495
511
|
onChange: handleInputChange,
|
|
496
|
-
readOnly:
|
|
497
|
-
plaintext: plaintext,
|
|
512
|
+
readOnly: inputReadOnly,
|
|
498
513
|
onKeyDown: handleInputKeyDown
|
|
499
514
|
})), /*#__PURE__*/React.createElement(PickerIndicator, {
|
|
500
515
|
loading: loading,
|
|
@@ -5,7 +5,7 @@ import React, { useState, useRef, useMemo } from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import Input from '../Input';
|
|
7
7
|
import { mergeRefs, useClassNames, useCustom, useControlled, useEventCallback } from '../utils';
|
|
8
|
-
import { validateDateTime,
|
|
8
|
+
import { validateDateTime, useDateInputState, useInputSelection, useKeyboardInputEvent, useIsFocused, useSelectedState, useFieldCursor } from '../DateInput';
|
|
9
9
|
import { getInputSelectedState, DateType, getDateType, isSwitchDateType } from './utils';
|
|
10
10
|
/**
|
|
11
11
|
* The DateRangeInput component lets users select a date with the keyboard.
|
|
@@ -34,13 +34,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
34
34
|
merge = _useClassNames.merge;
|
|
35
35
|
var classes = merge(className, withClassPrefix());
|
|
36
36
|
var inputRef = useRef();
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
selectionEnd: 0
|
|
41
|
-
}),
|
|
42
|
-
selectedState = _useState[0],
|
|
43
|
-
setSelectedState = _useState[1];
|
|
37
|
+
var _useSelectedState = useSelectedState(),
|
|
38
|
+
selectedState = _useSelectedState.selectedState,
|
|
39
|
+
setSelectedState = _useSelectedState.setSelectedState;
|
|
44
40
|
var _useCustom = useCustom('Calendar'),
|
|
45
41
|
locale = _useCustom.locale;
|
|
46
42
|
var rangeFormatStr = "" + formatStr + character + formatStr;
|
|
@@ -49,9 +45,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
49
45
|
value = _useControlled[0],
|
|
50
46
|
setValue = _useControlled[1],
|
|
51
47
|
isControlled = _useControlled[2];
|
|
52
|
-
var
|
|
53
|
-
dateType =
|
|
54
|
-
setDateType =
|
|
48
|
+
var _useState = useState(DateType.Start),
|
|
49
|
+
dateType = _useState[0],
|
|
50
|
+
setDateType = _useState[1];
|
|
55
51
|
var dateInputOptions = {
|
|
56
52
|
formatStr: formatStr,
|
|
57
53
|
locale: dateLocale,
|
|
@@ -63,6 +59,10 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
63
59
|
var endDateState = useDateInputState(_extends({}, dateInputOptions, {
|
|
64
60
|
date: (value === null || value === void 0 ? void 0 : value[1]) || null
|
|
65
61
|
}));
|
|
62
|
+
var _useFieldCursor = useFieldCursor(formatStr, valueProp),
|
|
63
|
+
isMoveCursor = _useFieldCursor.isMoveCursor,
|
|
64
|
+
increment = _useFieldCursor.increment,
|
|
65
|
+
reset = _useFieldCursor.reset;
|
|
66
66
|
var getActiveState = function getActiveState(type) {
|
|
67
67
|
if (type === void 0) {
|
|
68
68
|
type = dateType;
|
|
@@ -116,8 +116,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
116
116
|
input: input,
|
|
117
117
|
direction: direction
|
|
118
118
|
}));
|
|
119
|
-
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
120
119
|
setSelectedState(state);
|
|
120
|
+
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
121
|
+
reset();
|
|
121
122
|
});
|
|
122
123
|
var onSegmentValueChange = useEventCallback(function (event) {
|
|
123
124
|
var input = event.target;
|
|
@@ -140,6 +141,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
140
141
|
if (!pattern) {
|
|
141
142
|
return;
|
|
142
143
|
}
|
|
144
|
+
increment();
|
|
143
145
|
var field = getActiveState().getDateField(pattern);
|
|
144
146
|
var value = parseInt(key, 10);
|
|
145
147
|
var padValue = parseInt("" + (field.value || '') + key, 10);
|
|
@@ -149,10 +151,6 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
149
151
|
if (validateDateTime(field.name, padValue)) {
|
|
150
152
|
newValue = padValue;
|
|
151
153
|
}
|
|
152
|
-
if (pattern === 'M') {
|
|
153
|
-
// Month cannot be less than 1.
|
|
154
|
-
newValue = Math.max(1, newValue);
|
|
155
|
-
}
|
|
156
154
|
getActiveState().setDateField(pattern, newValue, function (date) {
|
|
157
155
|
return handleChange(date, event);
|
|
158
156
|
});
|
|
@@ -168,7 +166,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
168
166
|
setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
|
|
169
167
|
|
|
170
168
|
// If the field is full value, move the cursor to the next field
|
|
171
|
-
if (
|
|
169
|
+
if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
|
|
172
170
|
onSegmentChange(event, 'right');
|
|
173
171
|
}
|
|
174
172
|
});
|
|
@@ -184,6 +182,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
184
182
|
getActiveState().setDateField(selectedState.selectedPattern, null, function (date) {
|
|
185
183
|
return handleChange(date, event);
|
|
186
184
|
});
|
|
185
|
+
reset();
|
|
187
186
|
}
|
|
188
187
|
});
|
|
189
188
|
var handleClick = useEventCallback(function (event) {
|
|
@@ -192,7 +191,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
192
191
|
return;
|
|
193
192
|
}
|
|
194
193
|
var cursorIndex = input.selectionStart === renderedValue.length ? 0 : input.selectionStart;
|
|
195
|
-
var dateType = getDateType(renderedValue, character, cursorIndex);
|
|
194
|
+
var dateType = getDateType(renderedValue || rangeFormatStr, character, cursorIndex);
|
|
196
195
|
var state = getInputSelectedState(_extends({}, keyPressOptions, {
|
|
197
196
|
dateType: dateType,
|
|
198
197
|
selectedMonth: getActiveState(dateType).dateField.month,
|