rsuite 5.56.0 → 5.58.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 +30 -0
- package/AutoComplete/styles/index.css +0 -137
- package/CHANGELOG.md +32 -0
- package/CascadeTree/package.json +7 -0
- package/CascadeTree/styles/index.css +273 -0
- package/CascadeTree/styles/index.less +77 -0
- package/CascadeTree/styles/search.less +45 -0
- package/Cascader/styles/index.css +187 -329
- package/Cascader/styles/index.less +1 -122
- package/CheckPicker/styles/index.css +0 -137
- package/CheckTree/styles/index.css +0 -137
- package/CheckTreePicker/styles/index.css +0 -137
- package/DatePicker/styles/index.css +0 -137
- package/DateRangePicker/styles/index.css +0 -137
- package/Dropdown/styles/index.css +35 -8
- package/Dropdown/styles/index.less +24 -13
- package/Heading/package.json +7 -0
- package/Heading/styles/index.css +42 -0
- package/Heading/styles/index.less +41 -0
- package/HeadingGroup/package.json +7 -0
- package/HeadingGroup/styles/index.css +5 -0
- package/HeadingGroup/styles/index.less +3 -0
- package/InputPicker/styles/index.css +29 -146
- package/InputPicker/styles/index.less +28 -12
- package/InputPicker/styles/mixin.less +7 -0
- package/MultiCascadeTree/package.json +7 -0
- package/MultiCascadeTree/styles/index.css +3564 -0
- package/MultiCascadeTree/styles/index.less +37 -0
- package/MultiCascader/styles/index.css +72 -206
- package/MultiCascader/styles/index.less +11 -31
- package/Nav/styles/index.css +35 -8
- package/Navbar/styles/index.css +35 -8
- package/Pagination/styles/index.css +0 -137
- package/Panel/styles/index.css +30 -0
- package/Panel/styles/index.less +1 -0
- package/Popover/styles/index.css +30 -0
- package/Popover/styles/index.less +3 -2
- package/SelectPicker/styles/index.css +0 -137
- package/Tabs/styles/index.css +35 -8
- package/TagInput/styles/index.css +132 -150
- package/TagPicker/styles/index.css +132 -150
- package/TagPicker/styles/index.less +57 -5
- package/TagPicker/styles/mixin.less +21 -0
- package/Text/package.json +7 -0
- package/Text/styles/index.css +192 -0
- package/Text/styles/index.less +117 -0
- package/cjs/@types/common.d.ts +12 -14
- package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
- package/cjs/CascadeTree/CascadeTree.js +174 -0
- package/cjs/CascadeTree/SearchView.d.ts +17 -0
- package/cjs/CascadeTree/SearchView.js +106 -0
- package/cjs/CascadeTree/TreeView.d.ts +20 -0
- package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/cjs/CascadeTree/hooks/index.d.ts +3 -0
- package/cjs/CascadeTree/hooks/index.js +12 -0
- package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/cjs/CascadeTree/hooks/usePaths.js +42 -0
- package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/CascadeTree/hooks/useSearch.js +59 -0
- package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/cjs/CascadeTree/hooks/useSelect.js +64 -0
- package/cjs/CascadeTree/index.d.ts +4 -0
- package/cjs/CascadeTree/index.js +9 -0
- package/cjs/CascadeTree/types.d.ts +66 -0
- package/cjs/CascadeTree/types.js +2 -0
- package/cjs/CascadeTree/utils.d.ts +32 -0
- package/cjs/CascadeTree/utils.js +66 -0
- package/cjs/Cascader/Cascader.d.ts +57 -26
- package/cjs/Cascader/Cascader.js +178 -249
- package/cjs/Cascader/useActive.d.ts +15 -0
- package/cjs/Cascader/useActive.js +43 -0
- package/cjs/CheckPicker/CheckPicker.js +2 -9
- package/cjs/CheckTreePicker/CheckTreePicker.js +2 -10
- package/cjs/DatePicker/DatePicker.js +5 -5
- package/cjs/DateRangePicker/DateRangePicker.js +3 -5
- package/cjs/Dropdown/DropdownItem.d.ts +10 -2
- package/cjs/Dropdown/DropdownItem.js +12 -3
- package/cjs/Heading/Heading.d.ts +16 -0
- package/cjs/Heading/Heading.js +44 -0
- package/cjs/Heading/index.d.ts +3 -0
- package/cjs/Heading/index.js +10 -0
- package/cjs/HeadingGroup/HeadingGroup.d.ts +8 -0
- package/cjs/HeadingGroup/HeadingGroup.js +17 -0
- package/cjs/HeadingGroup/index.d.ts +3 -0
- package/cjs/HeadingGroup/index.js +9 -0
- package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
- package/cjs/InputPicker/InputPicker.js +7 -8
- package/cjs/Loader/Loader.js +5 -4
- package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
- package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
- package/cjs/MultiCascadeTree/SearchView.js +117 -0
- package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
- package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
- package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/cjs/MultiCascadeTree/hooks/index.js +16 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
- package/cjs/MultiCascadeTree/index.d.ts +4 -0
- package/cjs/MultiCascadeTree/index.js +9 -0
- package/cjs/MultiCascadeTree/types.d.ts +26 -0
- package/cjs/MultiCascadeTree/types.js +2 -0
- package/cjs/MultiCascadeTree/utils.d.ts +37 -0
- package/cjs/MultiCascadeTree/utils.js +140 -0
- package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
- package/cjs/MultiCascader/MultiCascader.js +173 -289
- package/cjs/Panel/Panel.js +3 -1
- package/cjs/Popover/Popover.js +3 -1
- package/cjs/SelectPicker/SelectPicker.js +3 -9
- package/cjs/Text/Text.d.ts +47 -0
- package/cjs/Text/Text.js +72 -0
- package/cjs/Text/index.d.ts +3 -0
- package/cjs/Text/index.js +10 -0
- package/cjs/Tree/Tree.d.ts +4 -4
- package/cjs/TreePicker/TreePicker.js +3 -10
- package/cjs/index.d.ts +27 -16
- package/cjs/index.js +30 -19
- package/cjs/internals/Overlay/OverlayTrigger.js +24 -17
- package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
- package/cjs/internals/Picker/PickerToggleTrigger.d.ts +1 -1
- package/cjs/internals/Picker/PickerToggleTrigger.js +1 -1
- package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -2
- package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.js +0 -4
- package/cjs/toaster/ToastContainer.d.ts +9 -2
- package/cjs/toaster/index.d.ts +0 -1
- package/cjs/toaster/index.js +1 -3
- package/cjs/useToaster/index.d.ts +2 -0
- package/cjs/useToaster/index.js +9 -0
- package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/cjs/{toaster → useToaster}/useToaster.js +4 -4
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +5 -2
- package/dist/rsuite-no-reset-rtl.css +393 -219
- 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 +393 -219
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +393 -219
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +393 -219
- package/dist/rsuite.js +321 -57
- 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 +12 -14
- package/esm/CascadeTree/CascadeTree.d.ts +16 -0
- package/esm/CascadeTree/CascadeTree.js +167 -0
- package/esm/CascadeTree/SearchView.d.ts +17 -0
- package/esm/CascadeTree/SearchView.js +100 -0
- package/esm/CascadeTree/TreeView.d.ts +20 -0
- package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/esm/CascadeTree/hooks/index.d.ts +3 -0
- package/esm/CascadeTree/hooks/index.js +4 -0
- package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/esm/CascadeTree/hooks/usePaths.js +36 -0
- package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/CascadeTree/hooks/useSearch.js +54 -0
- package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/esm/CascadeTree/hooks/useSelect.js +59 -0
- package/esm/CascadeTree/index.d.ts +4 -0
- package/esm/CascadeTree/index.js +3 -0
- package/esm/CascadeTree/types.d.ts +66 -0
- package/esm/CascadeTree/types.js +1 -0
- package/esm/CascadeTree/utils.d.ts +32 -0
- package/esm/CascadeTree/utils.js +61 -0
- package/esm/Cascader/Cascader.d.ts +57 -26
- package/esm/Cascader/Cascader.js +165 -235
- package/esm/Cascader/useActive.d.ts +15 -0
- package/esm/Cascader/useActive.js +37 -0
- package/esm/CheckPicker/CheckPicker.js +2 -9
- package/esm/CheckTreePicker/CheckTreePicker.js +2 -10
- package/esm/DatePicker/DatePicker.js +6 -6
- package/esm/DateRangePicker/DateRangePicker.js +3 -5
- package/esm/Dropdown/DropdownItem.d.ts +10 -2
- package/esm/Dropdown/DropdownItem.js +12 -3
- package/esm/Heading/Heading.d.ts +16 -0
- package/esm/Heading/Heading.js +38 -0
- package/esm/Heading/index.d.ts +3 -0
- package/esm/Heading/index.js +4 -0
- package/esm/HeadingGroup/HeadingGroup.d.ts +8 -0
- package/esm/HeadingGroup/HeadingGroup.js +11 -0
- package/esm/HeadingGroup/index.d.ts +3 -0
- package/esm/HeadingGroup/index.js +3 -0
- package/esm/InlineEdit/InlineEdit.d.ts +1 -1
- package/esm/InputPicker/InputPicker.js +7 -8
- package/esm/Loader/Loader.js +6 -5
- package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
- package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
- package/esm/MultiCascadeTree/SearchView.js +111 -0
- package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
- package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
- package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/esm/MultiCascadeTree/hooks/index.js +6 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
- package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
- package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
- package/esm/MultiCascadeTree/index.d.ts +4 -0
- package/esm/MultiCascadeTree/index.js +3 -0
- package/esm/MultiCascadeTree/types.d.ts +26 -0
- package/esm/MultiCascadeTree/types.js +1 -0
- package/esm/MultiCascadeTree/utils.d.ts +37 -0
- package/esm/MultiCascadeTree/utils.js +130 -0
- package/esm/MultiCascader/MultiCascader.d.ts +57 -29
- package/esm/MultiCascader/MultiCascader.js +166 -281
- package/esm/Panel/Panel.js +3 -1
- package/esm/Popover/Popover.js +3 -1
- package/esm/SelectPicker/SelectPicker.js +3 -9
- package/esm/Text/Text.d.ts +47 -0
- package/esm/Text/Text.js +66 -0
- package/esm/Text/index.d.ts +3 -0
- package/esm/Text/index.js +4 -0
- package/esm/Tree/Tree.d.ts +4 -4
- package/esm/TreePicker/TreePicker.js +3 -10
- package/esm/index.d.ts +27 -16
- package/esm/index.js +38 -15
- package/esm/internals/Overlay/OverlayTrigger.js +24 -17
- package/esm/internals/Picker/PickerToggle.d.ts +4 -5
- package/esm/internals/Picker/PickerToggleTrigger.d.ts +1 -1
- package/esm/internals/Picker/PickerToggleTrigger.js +1 -1
- package/esm/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -2
- package/esm/internals/Picker/hooks/useToggleKeyDownEvent.js +0 -4
- package/esm/toaster/ToastContainer.d.ts +9 -2
- package/esm/toaster/index.d.ts +0 -1
- package/esm/toaster/index.js +0 -1
- package/esm/useToaster/index.d.ts +2 -0
- package/esm/useToaster/index.js +3 -0
- package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/esm/{toaster → useToaster}/useToaster.js +4 -4
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +2 -1
- package/internals/Picker/styles/index.less +0 -5
- package/internals/Picker/styles/mixin.less +0 -73
- package/package.json +1 -1
- package/styles/color-modes/light.less +7 -0
- package/styles/index.less +5 -0
- package/useToaster/package.json +7 -0
- package/useToaster/styles/index.css +239 -0
- package/useToaster/styles/index.less +1 -0
- package/cjs/Cascader/DropdownMenu.d.ts +0 -24
- package/cjs/Cascader/DropdownMenu.js +0 -175
- package/cjs/Cascader/TreeView.d.ts +0 -24
- package/cjs/Cascader/utils.js +0 -79
- package/cjs/MultiCascader/TreeView.d.ts +0 -25
- package/cjs/MultiCascader/utils.d.ts +0 -71
- package/cjs/MultiCascader/utils.js +0 -382
- package/esm/Cascader/DropdownMenu.d.ts +0 -24
- package/esm/Cascader/DropdownMenu.js +0 -168
- package/esm/Cascader/TreeView.d.ts +0 -24
- package/esm/Cascader/utils.js +0 -74
- package/esm/MultiCascader/TreeView.d.ts +0 -25
- package/esm/MultiCascader/utils.d.ts +0 -71
- package/esm/MultiCascader/utils.js +0 -369
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
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, {
|
|
5
|
-
import { useSet } from 'react-use-set';
|
|
4
|
+
import React, { useCallback, useMemo } from 'react';
|
|
6
5
|
import PropTypes from 'prop-types';
|
|
7
6
|
import omit from 'lodash/omit';
|
|
8
7
|
import pick from 'lodash/pick';
|
|
9
8
|
import isNil from 'lodash/isNil';
|
|
10
9
|
import isFunction from 'lodash/isFunction';
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
10
|
+
import TreeView from '../CascadeTree/TreeView';
|
|
11
|
+
import SearchView from '../CascadeTree/SearchView';
|
|
12
|
+
import { usePaths, useSelect, useSearch } from '../CascadeTree/hooks';
|
|
13
|
+
import { getParentMap, findNodeOfTree, flattenTree } from '../utils/treeUtils';
|
|
14
|
+
import { deprecatePropTypeNew } from '../internals/propTypes';
|
|
15
|
+
import { createChainedFunction, mergeRefs, shallowEqual, useControlled, useCustom, useClassNames, useEventCallback } from '../utils';
|
|
16
16
|
import { PickerToggle, PickerPopup, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../internals/Picker';
|
|
17
|
-
import SearchBox from '../internals/SearchBox';
|
|
18
17
|
import { useMap } from '../utils/useMap';
|
|
19
18
|
import { oneOf } from '../internals/propTypes';
|
|
19
|
+
import useActive from './useActive';
|
|
20
20
|
var emptyArray = [];
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -49,35 +49,35 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
49
49
|
toggleAs = props.toggleAs,
|
|
50
50
|
style = props.style,
|
|
51
51
|
valueProp = props.value,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
menuHeight = props.menuHeight,
|
|
52
|
+
popupClassName = props.popupClassName,
|
|
53
|
+
popupStyle = props.popupStyle,
|
|
54
|
+
columnHeight = props.columnHeight,
|
|
55
|
+
columnWidth = props.columnWidth,
|
|
57
56
|
_props$searchable = props.searchable,
|
|
58
57
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
59
58
|
parentSelectable = props.parentSelectable,
|
|
60
59
|
_props$placement = props.placement,
|
|
61
60
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
62
61
|
id = props.id,
|
|
63
|
-
|
|
62
|
+
renderColumn = props.renderColumn,
|
|
63
|
+
renderTreeNode = props.renderTreeNode,
|
|
64
64
|
renderSearchItem = props.renderSearchItem,
|
|
65
65
|
renderValue = props.renderValue,
|
|
66
|
-
renderMenu = props.renderMenu,
|
|
67
66
|
renderExtraFooter = props.renderExtraFooter,
|
|
68
|
-
|
|
67
|
+
onEntered = props.onEntered,
|
|
69
68
|
onExited = props.onExited,
|
|
70
69
|
onClean = props.onClean,
|
|
71
70
|
onChange = props.onChange,
|
|
72
71
|
onSelect = props.onSelect,
|
|
73
72
|
onSearch = props.onSearch,
|
|
74
|
-
onClose = props.onClose,
|
|
75
|
-
onOpen = props.onOpen,
|
|
76
73
|
getChildren = props.getChildren,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
DEPRECATED_menuClassName = props.menuClassName,
|
|
75
|
+
DEPRECATED_menuStyle = props.menuStyle,
|
|
76
|
+
DEPRECATED_menuWidth = props.menuWidth,
|
|
77
|
+
DEPRECATED_menuHeight = props.menuHeight,
|
|
78
|
+
DEPRECATED_renderMenuItem = props.renderMenuItem,
|
|
79
|
+
DEPRECATED_renderMenu = props.renderMenu,
|
|
80
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "data", "classPrefix", "childrenKey", "valueKey", "labelKey", "defaultValue", "placeholder", "disabled", "disabledItemValues", "appearance", "cleanable", "locale", "toggleAs", "style", "value", "popupClassName", "popupStyle", "columnHeight", "columnWidth", "searchable", "parentSelectable", "placement", "id", "renderColumn", "renderTreeNode", "renderSearchItem", "renderValue", "renderExtraFooter", "onEntered", "onExited", "onClean", "onChange", "onSelect", "onSearch", "getChildren", "menuClassName", "menuStyle", "menuWidth", "menuHeight", "renderMenuItem", "renderMenu"]);
|
|
81
81
|
var _usePickerRef = usePickerRef(ref),
|
|
82
82
|
trigger = _usePickerRef.trigger,
|
|
83
83
|
root = _usePickerRef.root,
|
|
@@ -86,42 +86,81 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
86
86
|
searchInput = _usePickerRef.searchInput;
|
|
87
87
|
var _ref = useControlled(valueProp, defaultValue),
|
|
88
88
|
value = _ref[0],
|
|
89
|
-
setValue = _ref[1];
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
setValue = _ref[1]; // Store the children of each node
|
|
90
|
+
var childrenMap = useMap();
|
|
91
|
+
|
|
92
|
+
// Store the parent of each node
|
|
93
93
|
var parentMap = useMemo(function () {
|
|
94
94
|
return getParentMap(data, function (item) {
|
|
95
|
-
var
|
|
96
|
-
return (
|
|
95
|
+
var _childrenMap$get;
|
|
96
|
+
return (_childrenMap$get = childrenMap.get(item)) !== null && _childrenMap$get !== void 0 ? _childrenMap$get : item[childrenKey];
|
|
97
97
|
});
|
|
98
|
-
}, [
|
|
98
|
+
}, [childrenMap, childrenKey, data]);
|
|
99
|
+
|
|
100
|
+
// Flatten the tree data
|
|
99
101
|
var flattenedData = useMemo(function () {
|
|
100
102
|
return flattenTree(data, function (item) {
|
|
101
|
-
var
|
|
102
|
-
return (
|
|
103
|
+
var _childrenMap$get2;
|
|
104
|
+
return (_childrenMap$get2 = childrenMap.get(item)) !== null && _childrenMap$get2 !== void 0 ? _childrenMap$get2 : item[childrenKey];
|
|
103
105
|
});
|
|
104
|
-
}, [
|
|
106
|
+
}, [childrenMap, childrenKey, data]);
|
|
105
107
|
|
|
106
|
-
// The item
|
|
107
|
-
var
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
// The selected item
|
|
109
|
+
var selectedItem = flattenedData.find(function (item) {
|
|
110
|
+
return item[valueKey] === value;
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Callback function after selecting the node
|
|
114
|
+
var onSelectCallback = function onSelectCallback(node, event) {
|
|
115
|
+
var _trigger$current;
|
|
116
|
+
var isLeafNode = node.isLeafNode,
|
|
117
|
+
cascadePaths = node.cascadePaths,
|
|
118
|
+
itemData = node.itemData;
|
|
119
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(itemData, cascadePaths, event);
|
|
120
|
+
var nextValue = itemData[valueKey];
|
|
121
|
+
if (isLeafNode) {
|
|
122
|
+
// Determines whether the option is a leaf node, and if so, closes the picker.
|
|
123
|
+
handleClose();
|
|
124
|
+
setValue(nextValue);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// When the parent is optional, the value and the displayed path are updated.
|
|
129
|
+
if (parentSelectable && !shallowEqual(value, nextValue)) {
|
|
130
|
+
setValue(nextValue);
|
|
131
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Update menu position
|
|
135
|
+
(_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.updatePosition();
|
|
136
|
+
};
|
|
137
|
+
var _useSelect = useSelect({
|
|
138
|
+
value: value,
|
|
139
|
+
valueKey: valueKey,
|
|
140
|
+
childrenKey: childrenKey,
|
|
141
|
+
childrenMap: childrenMap,
|
|
142
|
+
selectedItem: selectedItem,
|
|
143
|
+
getChildren: getChildren,
|
|
144
|
+
onChange: onChange,
|
|
145
|
+
onSelect: onSelectCallback
|
|
146
|
+
}),
|
|
147
|
+
activeItem = _useSelect.activeItem,
|
|
148
|
+
setActiveItem = _useSelect.setActiveItem,
|
|
149
|
+
loadingItemsSet = _useSelect.loadingItemsSet,
|
|
150
|
+
handleSelect = _useSelect.handleSelect;
|
|
110
151
|
var _usePaths = usePaths({
|
|
111
152
|
data: data,
|
|
112
153
|
activeItem: activeItem,
|
|
113
|
-
selectedItem:
|
|
114
|
-
return item[valueKey] === value;
|
|
115
|
-
}),
|
|
154
|
+
selectedItem: selectedItem,
|
|
116
155
|
getParent: function getParent(item) {
|
|
117
156
|
return parentMap.get(item);
|
|
118
157
|
},
|
|
119
158
|
getChildren: function getChildren(item) {
|
|
120
|
-
var
|
|
121
|
-
return (
|
|
159
|
+
var _childrenMap$get3;
|
|
160
|
+
return (_childrenMap$get3 = childrenMap.get(item)) !== null && _childrenMap$get3 !== void 0 ? _childrenMap$get3 : item[childrenKey];
|
|
122
161
|
}
|
|
123
162
|
}),
|
|
124
|
-
|
|
163
|
+
columns = _usePaths.columns,
|
|
125
164
|
pathTowardsActiveItem = _usePaths.pathTowardsActiveItem,
|
|
126
165
|
pathTowardsSelectedItem = _usePaths.pathTowardsSelectedItem;
|
|
127
166
|
var _useCustom = useCustom('Picker', overrideLocale),
|
|
@@ -135,37 +174,11 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
135
174
|
var _useClassNames = useClassNames(classPrefix),
|
|
136
175
|
prefix = _useClassNames.prefix,
|
|
137
176
|
merge = _useClassNames.merge;
|
|
138
|
-
var
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return true;
|
|
144
|
-
}
|
|
145
|
-
var parent = parentMap.get(item);
|
|
146
|
-
if (parent && someKeyword(parent)) {
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
return false;
|
|
150
|
-
};
|
|
151
|
-
var getSearchResult = function getSearchResult(keyword) {
|
|
152
|
-
var items = [];
|
|
153
|
-
var result = flattenedData.filter(function (item) {
|
|
154
|
-
if (!parentSelectable && item[childrenKey]) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
return someKeyword(item, keyword);
|
|
158
|
-
});
|
|
159
|
-
for (var i = 0; i < result.length; i++) {
|
|
160
|
-
items.push(result[i]);
|
|
161
|
-
|
|
162
|
-
// A maximum of 100 search results are returned.
|
|
163
|
-
if (i === 99) {
|
|
164
|
-
return items;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return items;
|
|
168
|
-
};
|
|
177
|
+
var onFocusItemCallback = useCallback(function (value) {
|
|
178
|
+
setActiveItem(flattenedData.find(function (item) {
|
|
179
|
+
return item[valueKey] === value;
|
|
180
|
+
}));
|
|
181
|
+
}, [flattenedData, setActiveItem, valueKey]);
|
|
169
182
|
|
|
170
183
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
171
184
|
var _useFocusItemValue = useFocusItemValue(value, {
|
|
@@ -179,20 +192,14 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
179
192
|
getParent: function getParent(item) {
|
|
180
193
|
return parentMap.get(item);
|
|
181
194
|
},
|
|
182
|
-
callback:
|
|
183
|
-
setActiveItem(flattenedData.find(function (item) {
|
|
184
|
-
return item[valueKey] === value;
|
|
185
|
-
}));
|
|
186
|
-
}, [flattenedData, setActiveItem, valueKey])
|
|
195
|
+
callback: onFocusItemCallback
|
|
187
196
|
}),
|
|
188
197
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
189
198
|
setFocusItemValue = _useFocusItemValue.setFocusItemValue,
|
|
190
199
|
setLayer = _useFocusItemValue.setLayer,
|
|
191
200
|
setKeys = _useFocusItemValue.setKeys,
|
|
192
201
|
onFocusItem = _useFocusItemValue.onKeyDown;
|
|
193
|
-
var
|
|
194
|
-
var items = getSearchResult(value);
|
|
195
|
-
setSearchKeyword(value);
|
|
202
|
+
var onSearchCallback = function onSearchCallback(value, items, event) {
|
|
196
203
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
|
|
197
204
|
if (!value || items.length === 0) {
|
|
198
205
|
setFocusItemValue(undefined);
|
|
@@ -203,25 +210,31 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
203
210
|
setLayer(0);
|
|
204
211
|
setKeys([]);
|
|
205
212
|
}
|
|
206
|
-
}
|
|
207
|
-
var
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
213
|
+
};
|
|
214
|
+
var _useSearch = useSearch({
|
|
215
|
+
labelKey: labelKey,
|
|
216
|
+
childrenKey: childrenKey,
|
|
217
|
+
parentMap: parentMap,
|
|
218
|
+
flattenedData: flattenedData,
|
|
219
|
+
parentSelectable: parentSelectable,
|
|
220
|
+
onSearch: onSearchCallback
|
|
221
|
+
}),
|
|
222
|
+
items = _useSearch.items,
|
|
223
|
+
searchKeyword = _useSearch.searchKeyword,
|
|
224
|
+
setSearchKeyword = _useSearch.setSearchKeyword,
|
|
225
|
+
handleSearch = _useSearch.handleSearch;
|
|
226
|
+
var _useActive = useActive({
|
|
227
|
+
onEntered: onEntered,
|
|
228
|
+
onExited: onExited,
|
|
229
|
+
target: target,
|
|
230
|
+
setSearchKeyword: setSearchKeyword
|
|
231
|
+
}),
|
|
232
|
+
active = _useActive.active,
|
|
233
|
+
handleEntered = _useActive.handleEntered,
|
|
234
|
+
handleExited = _useActive.handleExited;
|
|
222
235
|
var handleClose = useEventCallback(function () {
|
|
223
|
-
var _trigger$
|
|
224
|
-
(_trigger$
|
|
236
|
+
var _trigger$current2, _target$current, _target$current$focus;
|
|
237
|
+
(_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.close();
|
|
225
238
|
|
|
226
239
|
// The focus is on the trigger button after closing
|
|
227
240
|
(_target$current = target.current) === null || _target$current === void 0 ? void 0 : (_target$current$focus = _target$current.focus) === null || _target$current$focus === void 0 ? void 0 : _target$current$focus.call(_target$current);
|
|
@@ -261,162 +274,79 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
261
274
|
onMenuKeyDown: onFocusItem,
|
|
262
275
|
onMenuPressEnter: handleMenuPressEnter
|
|
263
276
|
}, rest));
|
|
264
|
-
var handleSelect = useEventCallback(function (node, cascadePaths, isLeafNode, event) {
|
|
265
|
-
var _node$childrenKey, _trigger$current2;
|
|
266
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
267
|
-
setActiveItem(node);
|
|
268
|
-
var nextValue = node[valueKey];
|
|
269
|
-
|
|
270
|
-
// Lazy load node's children
|
|
271
|
-
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0 && !asyncChildrenMap.has(node)) {
|
|
272
|
-
loadingItemsSet.add(node);
|
|
273
|
-
var children = getChildren(node);
|
|
274
|
-
if (children instanceof Promise) {
|
|
275
|
-
children.then(function (data) {
|
|
276
|
-
if (isMounted()) {
|
|
277
|
-
loadingItemsSet.delete(node);
|
|
278
|
-
asyncChildrenMap.set(node, data);
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
} else {
|
|
282
|
-
loadingItemsSet.delete(node);
|
|
283
|
-
asyncChildrenMap.set(node, children);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
if (isLeafNode) {
|
|
287
|
-
// Determines whether the option is a leaf node, and if so, closes the picker.
|
|
288
|
-
handleClose();
|
|
289
|
-
setValue(nextValue);
|
|
290
|
-
if (!shallowEqual(value, nextValue)) {
|
|
291
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
292
|
-
}
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/** When the parent is optional, the value and the displayed path are updated. */
|
|
297
|
-
if (parentSelectable && !shallowEqual(value, nextValue)) {
|
|
298
|
-
setValue(nextValue);
|
|
299
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// Update menu position
|
|
303
|
-
(_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.updatePosition();
|
|
304
|
-
});
|
|
305
277
|
|
|
306
278
|
/**
|
|
307
279
|
* The search structure option is processed after being selected.
|
|
308
280
|
*/
|
|
309
|
-
var handleSearchRowSelect = useEventCallback(function (
|
|
310
|
-
var nextValue =
|
|
281
|
+
var handleSearchRowSelect = useEventCallback(function (itemData, nodes, event) {
|
|
282
|
+
var nextValue = itemData[valueKey];
|
|
311
283
|
handleClose();
|
|
312
284
|
setSearchKeyword('');
|
|
313
285
|
setValue(nextValue);
|
|
314
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(
|
|
286
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(itemData, nodes, event);
|
|
315
287
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
316
288
|
});
|
|
317
|
-
var
|
|
318
|
-
var
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
for (var i = 0; i < a.length; i++) {
|
|
328
|
-
labelElements.push(a[i]);
|
|
329
|
-
if (b && b[i]) {
|
|
330
|
-
labelElements.push( /*#__PURE__*/React.createElement("span", {
|
|
331
|
-
key: i,
|
|
332
|
-
className: prefix('cascader-search-match')
|
|
333
|
-
}, b[i]));
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
return _extends({}, node, (_extends2 = {}, _extends2[labelKey] = labelElements, _extends2));
|
|
337
|
-
});
|
|
338
|
-
var disabled = disabledItemValues.some(function (value) {
|
|
339
|
-
return formattedNodes.some(function (node) {
|
|
340
|
-
return node[valueKey] === value;
|
|
341
|
-
});
|
|
342
|
-
});
|
|
343
|
-
var itemClasses = prefix('cascader-row', {
|
|
344
|
-
'cascader-row-disabled': disabled,
|
|
345
|
-
'cascader-row-focus': item[valueKey] === focusItemValue
|
|
346
|
-
});
|
|
347
|
-
var label = formattedNodes.map(function (node, index) {
|
|
348
|
-
return /*#__PURE__*/React.createElement("span", {
|
|
349
|
-
key: "col-" + index,
|
|
350
|
-
className: prefix('cascader-col')
|
|
351
|
-
}, node[labelKey]);
|
|
352
|
-
});
|
|
353
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
354
|
-
role: "treeitem",
|
|
355
|
-
key: key,
|
|
356
|
-
"aria-disabled": disabled,
|
|
357
|
-
"data-key": item[valueKey],
|
|
358
|
-
className: itemClasses,
|
|
359
|
-
tabIndex: -1,
|
|
360
|
-
onClick: function onClick(event) {
|
|
361
|
-
if (!disabled) {
|
|
362
|
-
handleSearchRowSelect(item, nodes, event);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}, renderSearchItem ? renderSearchItem(label, nodes) : label);
|
|
289
|
+
var renderCascadeColumn = function renderCascadeColumn(childNodes, column) {
|
|
290
|
+
var items = column.items,
|
|
291
|
+
parentItem = column.parentItem,
|
|
292
|
+
layer = column.layer;
|
|
293
|
+
if (typeof renderColumn === 'function') {
|
|
294
|
+
return renderColumn(childNodes, column);
|
|
295
|
+
} else if (typeof DEPRECATED_renderMenu === 'function') {
|
|
296
|
+
return DEPRECATED_renderMenu(items, childNodes, parentItem, layer);
|
|
297
|
+
}
|
|
298
|
+
return childNodes;
|
|
366
299
|
};
|
|
367
|
-
var
|
|
368
|
-
|
|
369
|
-
|
|
300
|
+
var renderCascadeTreeNode = function renderCascadeTreeNode(node, itemData) {
|
|
301
|
+
var render = typeof renderTreeNode === 'function' ? renderTreeNode : DEPRECATED_renderMenuItem;
|
|
302
|
+
if (typeof render === 'function') {
|
|
303
|
+
return render(node, itemData);
|
|
370
304
|
}
|
|
371
|
-
|
|
372
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
373
|
-
className: prefix('cascader-search-panel'),
|
|
374
|
-
"data-layer": 0,
|
|
375
|
-
role: "tree"
|
|
376
|
-
}, items.length ? items.map(renderSearchRow) : /*#__PURE__*/React.createElement("div", {
|
|
377
|
-
className: prefix('none')
|
|
378
|
-
}, locale.noResultsText));
|
|
305
|
+
return node;
|
|
379
306
|
};
|
|
380
307
|
var renderTreeView = function renderTreeView(positionProps, speakerRef) {
|
|
381
308
|
var _ref2 = positionProps || {},
|
|
382
309
|
left = _ref2.left,
|
|
383
310
|
top = _ref2.top,
|
|
384
311
|
className = _ref2.className;
|
|
385
|
-
var styles = _extends({},
|
|
312
|
+
var styles = _extends({}, DEPRECATED_menuStyle, popupStyle, {
|
|
386
313
|
left: left,
|
|
387
314
|
top: top
|
|
388
315
|
});
|
|
389
|
-
var classes = merge(className,
|
|
390
|
-
inline: inline
|
|
391
|
-
}));
|
|
316
|
+
var classes = merge(className, DEPRECATED_menuClassName, popupClassName, prefix('popup-cascader'));
|
|
392
317
|
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
393
318
|
ref: mergeRefs(overlay, speakerRef),
|
|
394
319
|
className: classes,
|
|
395
320
|
style: styles,
|
|
396
321
|
target: trigger,
|
|
397
322
|
onKeyDown: onPickerKeyDown
|
|
398
|
-
}, searchable && /*#__PURE__*/React.createElement(
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
323
|
+
}, searchable && /*#__PURE__*/React.createElement(SearchView, {
|
|
324
|
+
data: items,
|
|
325
|
+
searchKeyword: searchKeyword,
|
|
326
|
+
valueKey: valueKey,
|
|
327
|
+
labelKey: labelKey,
|
|
328
|
+
parentMap: parentMap,
|
|
329
|
+
disabledItemValues: disabledItemValues,
|
|
330
|
+
focusItemValue: focusItemValue,
|
|
331
|
+
inputRef: searchInput,
|
|
332
|
+
renderSearchItem: renderSearchItem,
|
|
333
|
+
onSelect: handleSearchRowSelect,
|
|
334
|
+
onSearch: handleSearch
|
|
335
|
+
}), searchKeyword === '' && /*#__PURE__*/React.createElement(TreeView, {
|
|
336
|
+
columnWidth: columnWidth !== null && columnWidth !== void 0 ? columnWidth : DEPRECATED_menuWidth,
|
|
337
|
+
columnHeight: columnHeight !== null && columnHeight !== void 0 ? columnHeight : DEPRECATED_menuHeight,
|
|
406
338
|
disabledItemValues: disabledItemValues,
|
|
407
339
|
loadingItemsSet: loadingItemsSet,
|
|
408
340
|
valueKey: valueKey,
|
|
409
341
|
labelKey: labelKey,
|
|
410
342
|
childrenKey: childrenKey,
|
|
411
|
-
classPrefix: '
|
|
412
|
-
|
|
343
|
+
classPrefix: 'cascade-tree',
|
|
344
|
+
data: columns,
|
|
413
345
|
cascadePaths: pathTowardsActiveItem,
|
|
414
|
-
activeItemValue: value
|
|
415
|
-
// FIXME make onSelect generic
|
|
416
|
-
,
|
|
346
|
+
activeItemValue: value,
|
|
417
347
|
onSelect: handleSelect,
|
|
418
|
-
|
|
419
|
-
|
|
348
|
+
renderColumn: renderCascadeColumn,
|
|
349
|
+
renderTreeNode: renderCascadeTreeNode
|
|
420
350
|
}), renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
|
|
421
351
|
};
|
|
422
352
|
var selectedElement = placeholder;
|
|
@@ -450,19 +380,15 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
450
380
|
cleanable: cleanable
|
|
451
381
|
})),
|
|
452
382
|
classes = _usePickerClassName[0],
|
|
453
|
-
usedClassNamePropKeys = _usePickerClassName[1];
|
|
454
|
-
// consider an isolated Menu component
|
|
455
|
-
if (inline) {
|
|
456
|
-
return renderTreeView();
|
|
457
|
-
}
|
|
383
|
+
usedClassNamePropKeys = _usePickerClassName[1];
|
|
458
384
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
459
385
|
id: id,
|
|
460
386
|
popupType: "tree",
|
|
461
387
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
462
388
|
ref: trigger,
|
|
463
389
|
placement: placement,
|
|
464
|
-
onEntered:
|
|
465
|
-
onExited:
|
|
390
|
+
onEntered: handleEntered,
|
|
391
|
+
onExited: handleExited,
|
|
466
392
|
speaker: renderTreeView
|
|
467
393
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
468
394
|
className: classes,
|
|
@@ -488,16 +414,20 @@ Cascader.propTypes = _extends({}, listPickerPropTypes, {
|
|
|
488
414
|
disabledItemValues: PropTypes.array,
|
|
489
415
|
locale: PropTypes.any,
|
|
490
416
|
appearance: oneOf(['default', 'subtle']),
|
|
491
|
-
renderMenu: PropTypes.func,
|
|
492
417
|
onSelect: PropTypes.func,
|
|
493
418
|
onSearch: PropTypes.func,
|
|
494
419
|
cleanable: PropTypes.bool,
|
|
495
|
-
|
|
420
|
+
renderColumn: PropTypes.func,
|
|
421
|
+
renderTreeNode: PropTypes.func,
|
|
496
422
|
renderSearchItem: PropTypes.func,
|
|
497
|
-
|
|
498
|
-
|
|
423
|
+
columnWidth: PropTypes.number,
|
|
424
|
+
columnHeight: PropTypes.number,
|
|
499
425
|
searchable: PropTypes.bool,
|
|
500
|
-
|
|
501
|
-
|
|
426
|
+
parentSelectable: PropTypes.bool,
|
|
427
|
+
inline: deprecatePropTypeNew(PropTypes.bool, 'Use `<CascadeTree>` instead.'),
|
|
428
|
+
renderMenu: deprecatePropTypeNew(PropTypes.func, 'Use "renderColumn" property instead.'),
|
|
429
|
+
renderMenuItem: deprecatePropTypeNew(PropTypes.func, 'Use "renderTreeNode" property instead.'),
|
|
430
|
+
menuWidth: deprecatePropTypeNew(PropTypes.number, 'Use "columnWidth" property instead.'),
|
|
431
|
+
menuHeight: deprecatePropTypeNew(PropTypes.number, 'Use "columnHeight" property instead.')
|
|
502
432
|
});
|
|
503
433
|
export default Cascader;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface UseActiveProps {
|
|
3
|
+
target: React.RefObject<HTMLElement>;
|
|
4
|
+
onOpen?: () => void;
|
|
5
|
+
onClose?: () => void;
|
|
6
|
+
onEntered?: (node: HTMLElement) => void;
|
|
7
|
+
onExited?: (node: HTMLElement) => void;
|
|
8
|
+
setSearchKeyword: (keyword: string) => void;
|
|
9
|
+
}
|
|
10
|
+
declare const useActive: (props: UseActiveProps) => {
|
|
11
|
+
active: boolean;
|
|
12
|
+
handleEntered: (...args: any[]) => any;
|
|
13
|
+
handleExited: (...args: any[]) => any;
|
|
14
|
+
};
|
|
15
|
+
export default useActive;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import useEventCallback from '../utils/useEventCallback';
|
|
4
|
+
var useActive = function useActive(props) {
|
|
5
|
+
var onOpen = props.onOpen,
|
|
6
|
+
onClose = props.onClose,
|
|
7
|
+
onEntered = props.onEntered,
|
|
8
|
+
onExited = props.onExited,
|
|
9
|
+
target = props.target,
|
|
10
|
+
setSearchKeyword = props.setSearchKeyword; // Use component active state to support keyboard events.
|
|
11
|
+
var _useState = useState(false),
|
|
12
|
+
active = _useState[0],
|
|
13
|
+
setActive = _useState[1];
|
|
14
|
+
var handleEntered = useEventCallback(function (node) {
|
|
15
|
+
onEntered === null || onEntered === void 0 ? void 0 : onEntered(node);
|
|
16
|
+
if (!target.current) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
20
|
+
setActive(true);
|
|
21
|
+
});
|
|
22
|
+
var handleExited = useEventCallback(function (node) {
|
|
23
|
+
onExited === null || onExited === void 0 ? void 0 : onExited(node);
|
|
24
|
+
if (!target.current) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
28
|
+
setActive(false);
|
|
29
|
+
setSearchKeyword('');
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
active: active,
|
|
33
|
+
handleEntered: handleEntered,
|
|
34
|
+
handleExited: handleExited
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export default useActive;
|
|
@@ -79,9 +79,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
79
79
|
onClean = props.onClean,
|
|
80
80
|
onChange = props.onChange,
|
|
81
81
|
onSelect = props.onSelect,
|
|
82
|
-
|
|
83
|
-
onOpen = props.onOpen,
|
|
84
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "appearance", "classPrefix", "countable", "data", "disabledItemValues", "valueKey", "labelKey", "searchable", "virtualized", "cleanable", "placement", "menuAutoWidth", "menuMaxHeight", "menuClassName", "menuStyle", "locale", "placeholder", "disabled", "toggleAs", "style", "sticky", "value", "defaultValue", "groupBy", "listProps", "id", "sort", "searchBy", "renderMenuItem", "renderMenuGroup", "renderValue", "renderExtraFooter", "renderMenu", "onGroupTitleClick", "onSearch", "onEnter", "onEntered", "onExited", "onClean", "onChange", "onSelect", "onClose", "onOpen"]);
|
|
82
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "appearance", "classPrefix", "countable", "data", "disabledItemValues", "valueKey", "labelKey", "searchable", "virtualized", "cleanable", "placement", "menuAutoWidth", "menuMaxHeight", "menuClassName", "menuStyle", "locale", "placeholder", "disabled", "toggleAs", "style", "sticky", "value", "defaultValue", "groupBy", "listProps", "id", "sort", "searchBy", "renderMenuItem", "renderMenuGroup", "renderValue", "renderExtraFooter", "renderMenu", "onGroupTitleClick", "onSearch", "onEnter", "onEntered", "onExited", "onClean", "onChange", "onSelect"]);
|
|
85
83
|
var _usePickerRef = usePickerRef(ref),
|
|
86
84
|
trigger = _usePickerRef.trigger,
|
|
87
85
|
root = _usePickerRef.root,
|
|
@@ -185,10 +183,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
185
183
|
onExit: handleClean,
|
|
186
184
|
onMenuKeyDown: onFocusItem,
|
|
187
185
|
onMenuPressEnter: handleMenuPressEnter,
|
|
188
|
-
onMenuPressBackspace: handleClean
|
|
189
|
-
onClose: function onClose() {
|
|
190
|
-
setFocusItemValue(null);
|
|
191
|
-
}
|
|
186
|
+
onMenuPressBackspace: handleClean
|
|
192
187
|
}, rest));
|
|
193
188
|
var handleSelect = useEventCallback(function (nextItemValue, item, event) {
|
|
194
189
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextItemValue, item, event);
|
|
@@ -209,13 +204,11 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
209
204
|
});
|
|
210
205
|
var handleEntered = useEventCallback(function () {
|
|
211
206
|
setActive(true);
|
|
212
|
-
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
213
207
|
});
|
|
214
208
|
var handleExited = useEventCallback(function () {
|
|
215
209
|
resetSearch();
|
|
216
210
|
setFocusItemValue(null);
|
|
217
211
|
setActive(false);
|
|
218
|
-
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
219
212
|
});
|
|
220
213
|
var selectedItems = data.filter(function (item) {
|
|
221
214
|
return value === null || value === void 0 ? void 0 : value.some(function (val) {
|