rsuite 5.49.0 → 5.50.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/CHANGELOG.md +13 -0
- package/Cascader/styles/index.less +4 -4
- package/DateRangePicker/styles/index.less +15 -5
- package/Dropdown/styles/index.less +5 -4
- package/Dropdown/styles/mixin.less +0 -11
- package/Picker/styles/index.less +31 -24
- package/Picker/styles/mixin.less +17 -13
- package/README.md +4 -4
- package/TagInput/styles/index.less +1 -1
- package/cjs/AutoComplete/AutoComplete.js +25 -26
- package/cjs/Calendar/Calendar.d.ts +5 -1
- package/cjs/Calendar/CalendarContainer.d.ts +5 -1
- package/cjs/Cascader/Cascader.js +46 -48
- package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
- package/cjs/CheckPicker/CheckPicker.js +33 -36
- package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
- package/cjs/DatePicker/DatePicker.d.ts +5 -1
- package/cjs/DatePicker/DatePicker.js +2 -4
- package/cjs/DatePicker/Toolbar.js +2 -1
- package/cjs/DateRangeInput/DateRangeInput.js +2 -2
- package/cjs/DateRangePicker/Calendar.js +24 -23
- package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/cjs/DateRangePicker/DateRangePicker.js +239 -201
- package/cjs/DateRangePicker/types.d.ts +11 -3
- package/cjs/DateRangePicker/utils.d.ts +2 -1
- package/cjs/DateRangePicker/utils.js +7 -5
- package/cjs/FormControl/FormControl.d.ts +11 -1
- package/cjs/FormControl/FormControl.js +6 -5
- package/cjs/InputPicker/InputPicker.js +62 -63
- package/cjs/MultiCascader/MultiCascader.js +40 -42
- package/cjs/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
- package/cjs/{DatePicker → Picker}/PickerIndicator.js +2 -1
- package/cjs/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
- package/cjs/Picker/PickerToggle.d.ts +17 -22
- package/cjs/Picker/PickerToggle.js +52 -177
- package/cjs/Picker/index.d.ts +3 -0
- package/cjs/Picker/index.js +10 -1
- package/cjs/Picker/usePickerRef.d.ts +3 -1
- package/cjs/Picker/usePickerRef.js +13 -7
- package/cjs/Picker/utils.d.ts +5 -9
- package/cjs/Picker/utils.js +22 -89
- package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
- package/cjs/SelectPicker/SelectPicker.js +39 -42
- package/cjs/TreePicker/TreePicker.js +72 -75
- package/cjs/utils/constants.d.ts +2 -1
- package/cjs/utils/constants.js +1 -0
- package/cjs/utils/dateUtils.d.ts +0 -1
- package/cjs/utils/dateUtils.js +0 -6
- package/cjs/utils/getStringLength.d.ts +2 -0
- package/cjs/utils/getStringLength.js +18 -0
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +4 -1
- package/dist/rsuite-no-reset-rtl.css +92 -69
- 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 +92 -69
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +92 -69
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +92 -69
- package/dist/rsuite.js +67 -46
- 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/AutoComplete/AutoComplete.js +28 -29
- package/esm/Calendar/Calendar.d.ts +5 -1
- package/esm/Calendar/CalendarContainer.d.ts +5 -1
- package/esm/Cascader/Cascader.js +49 -51
- package/esm/CheckPicker/CheckPicker.d.ts +2 -2
- package/esm/CheckPicker/CheckPicker.js +36 -39
- package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
- package/esm/DatePicker/DatePicker.d.ts +5 -1
- package/esm/DatePicker/DatePicker.js +1 -3
- package/esm/DatePicker/Toolbar.js +2 -1
- package/esm/DateRangeInput/DateRangeInput.js +2 -2
- package/esm/DateRangePicker/Calendar.js +25 -23
- package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/esm/DateRangePicker/DateRangePicker.js +241 -203
- package/esm/DateRangePicker/types.d.ts +11 -3
- package/esm/DateRangePicker/utils.d.ts +2 -1
- package/esm/DateRangePicker/utils.js +7 -5
- package/esm/FormControl/FormControl.d.ts +11 -1
- package/esm/FormControl/FormControl.js +4 -3
- package/esm/InputPicker/InputPicker.js +64 -65
- package/esm/MultiCascader/MultiCascader.js +43 -45
- package/esm/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
- package/esm/{DatePicker → Picker}/PickerIndicator.js +2 -1
- package/esm/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
- package/esm/Picker/PickerToggle.d.ts +17 -22
- package/esm/Picker/PickerToggle.js +54 -179
- package/esm/Picker/index.d.ts +3 -0
- package/esm/Picker/index.js +3 -0
- package/esm/Picker/usePickerRef.d.ts +3 -1
- package/esm/Picker/usePickerRef.js +13 -8
- package/esm/Picker/utils.d.ts +5 -9
- package/esm/Picker/utils.js +24 -90
- package/esm/SelectPicker/SelectPicker.d.ts +2 -2
- package/esm/SelectPicker/SelectPicker.js +42 -45
- package/esm/TreePicker/TreePicker.js +75 -78
- package/esm/utils/constants.d.ts +2 -1
- package/esm/utils/constants.js +1 -0
- package/esm/utils/dateUtils.d.ts +0 -1
- package/esm/utils/dateUtils.js +0 -5
- package/esm/utils/getStringLength.d.ts +2 -0
- package/esm/utils/getStringLength.js +13 -0
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +1 -0
- package/package.json +1 -1
- package/styles/mixins/combobox.less +10 -0
- /package/cjs/{DatePicker → Picker}/PickerLabel.js +0 -0
- /package/esm/{DatePicker → Picker}/PickerLabel.js +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
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, { useState
|
|
4
|
+
import React, { useState } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import pick from 'lodash/pick';
|
|
7
7
|
import omit from 'lodash/omit';
|
|
8
8
|
import Input from '../Input';
|
|
9
|
-
import { useClassNames, useControlled, PLACEMENT, mergeRefs,
|
|
9
|
+
import { useClassNames, useControlled, useIsMounted, useEventCallback, PLACEMENT, mergeRefs, partitionHTMLProps } from '../utils';
|
|
10
10
|
import { animationPropTypes } from '../Animation/utils';
|
|
11
|
-
import { PickerToggleTrigger, onMenuKeyDown, DropdownMenu, DropdownMenuItem, PickerOverlay, useFocusItemValue,
|
|
11
|
+
import { PickerToggleTrigger, onMenuKeyDown, DropdownMenu, DropdownMenuItem, PickerOverlay, useFocusItemValue, usePickerRef, pickTriggerPropKeys } from '../Picker';
|
|
12
12
|
import { transformData, shouldDisplay } from './utils';
|
|
13
13
|
import Plaintext from '../Plaintext';
|
|
14
14
|
/**
|
|
@@ -63,7 +63,10 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
63
63
|
setFocus = _useState[1];
|
|
64
64
|
var items = (datalist === null || datalist === void 0 ? void 0 : datalist.filter(shouldDisplay(filterBy, value))) || [];
|
|
65
65
|
var hasItems = items.length > 0;
|
|
66
|
-
var
|
|
66
|
+
var _usePickerRef = usePickerRef(ref),
|
|
67
|
+
trigger = _usePickerRef.trigger,
|
|
68
|
+
overlay = _usePickerRef.overlay,
|
|
69
|
+
root = _usePickerRef.root;
|
|
67
70
|
var isMounted = useIsMounted();
|
|
68
71
|
|
|
69
72
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
@@ -71,14 +74,14 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
71
74
|
data: datalist,
|
|
72
75
|
callback: onMenuFocus,
|
|
73
76
|
target: function target() {
|
|
74
|
-
return
|
|
77
|
+
return overlay.current;
|
|
75
78
|
}
|
|
76
79
|
}),
|
|
77
80
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
78
81
|
setFocusItemValue = _useFocusItemValue.setFocusItemValue,
|
|
79
82
|
handleKeyDown = _useFocusItemValue.onKeyDown;
|
|
80
83
|
var handleKeyDownEvent = function handleKeyDownEvent(event) {
|
|
81
|
-
if (!
|
|
84
|
+
if (!overlay.current) {
|
|
82
85
|
return;
|
|
83
86
|
}
|
|
84
87
|
onMenuKeyDown(event, {
|
|
@@ -103,29 +106,29 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
103
106
|
}
|
|
104
107
|
handleClose();
|
|
105
108
|
};
|
|
106
|
-
var handleSelect =
|
|
109
|
+
var handleSelect = useEventCallback(function (item, event) {
|
|
107
110
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.value, item, event);
|
|
108
|
-
}
|
|
109
|
-
var handleChangeValue =
|
|
111
|
+
});
|
|
112
|
+
var handleChangeValue = useEventCallback(function (value, event) {
|
|
110
113
|
onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
|
|
111
|
-
}
|
|
114
|
+
});
|
|
112
115
|
var handleChange = function handleChange(value, event) {
|
|
113
116
|
setFocusItemValue('');
|
|
114
117
|
setValue(value);
|
|
115
118
|
setFocus(true);
|
|
116
119
|
handleChangeValue(value, event);
|
|
117
120
|
};
|
|
118
|
-
var handleClose =
|
|
121
|
+
var handleClose = useEventCallback(function () {
|
|
119
122
|
if (isMounted()) {
|
|
120
123
|
setFocus(false);
|
|
121
124
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
122
125
|
}
|
|
123
|
-
}
|
|
124
|
-
var handleOpen =
|
|
126
|
+
});
|
|
127
|
+
var handleOpen = useEventCallback(function () {
|
|
125
128
|
setFocus(true);
|
|
126
129
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
127
|
-
}
|
|
128
|
-
var handleItemSelect =
|
|
130
|
+
});
|
|
131
|
+
var handleItemSelect = useEventCallback(function (nextItemValue, item, event) {
|
|
129
132
|
setValue(nextItemValue);
|
|
130
133
|
setFocusItemValue(nextItemValue);
|
|
131
134
|
handleSelect(item, event);
|
|
@@ -133,29 +136,24 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
133
136
|
handleChangeValue(nextItemValue, event);
|
|
134
137
|
}
|
|
135
138
|
handleClose();
|
|
136
|
-
}
|
|
137
|
-
var handleInputFocus =
|
|
139
|
+
});
|
|
140
|
+
var handleInputFocus = useEventCallback(function (event) {
|
|
138
141
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
139
142
|
handleOpen();
|
|
140
|
-
}
|
|
141
|
-
var handleInputBlur =
|
|
143
|
+
});
|
|
144
|
+
var handleInputBlur = useEventCallback(function (event) {
|
|
142
145
|
setTimeout(handleClose, 300);
|
|
143
146
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
144
|
-
}
|
|
147
|
+
});
|
|
145
148
|
var _useClassNames = useClassNames(classPrefix),
|
|
146
149
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
147
150
|
merge = _useClassNames.merge;
|
|
148
151
|
var classes = merge(className, withClassPrefix({
|
|
149
152
|
disabled: disabled
|
|
150
153
|
}));
|
|
151
|
-
var triggerRef = useRef(null);
|
|
152
154
|
var _partitionHTMLProps = partitionHTMLProps(omit(rest, pickTriggerPropKeys)),
|
|
153
155
|
htmlInputProps = _partitionHTMLProps[0],
|
|
154
156
|
restProps = _partitionHTMLProps[1];
|
|
155
|
-
usePublicMethods(ref, {
|
|
156
|
-
triggerRef: triggerRef,
|
|
157
|
-
overlayRef: overlayRef
|
|
158
|
-
});
|
|
159
157
|
var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
|
|
160
158
|
var left = positionProps.left,
|
|
161
159
|
top = positionProps.top,
|
|
@@ -176,11 +174,11 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
176
174
|
className: menuClassName
|
|
177
175
|
});
|
|
178
176
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
179
|
-
ref: mergeRefs(
|
|
177
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
180
178
|
style: styles,
|
|
181
179
|
className: className,
|
|
182
180
|
onKeyDown: handleKeyDownEvent,
|
|
183
|
-
target:
|
|
181
|
+
target: trigger,
|
|
184
182
|
autoWidth: menuAutoWidth
|
|
185
183
|
}, renderMenu ? renderMenu(menu) : menu);
|
|
186
184
|
};
|
|
@@ -191,7 +189,7 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
191
189
|
}, typeof value === 'undefined' ? defaultValue : value);
|
|
192
190
|
}
|
|
193
191
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
194
|
-
ref:
|
|
192
|
+
ref: trigger,
|
|
195
193
|
placement: placement,
|
|
196
194
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
197
195
|
trigger: ['click', 'focus'],
|
|
@@ -199,7 +197,8 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
199
197
|
speaker: renderDropdownMenu
|
|
200
198
|
}, /*#__PURE__*/React.createElement(Component, _extends({
|
|
201
199
|
className: classes,
|
|
202
|
-
style: style
|
|
200
|
+
style: style,
|
|
201
|
+
ref: root
|
|
203
202
|
}, restProps), /*#__PURE__*/React.createElement(Input, _extends({}, htmlInputProps, {
|
|
204
203
|
id: id,
|
|
205
204
|
disabled: disabled,
|
|
@@ -7,7 +7,11 @@ export interface CalendarProps extends WithAsProps {
|
|
|
7
7
|
value?: Date;
|
|
8
8
|
/** Default value */
|
|
9
9
|
defaultValue?: Date;
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
|
|
12
|
+
*
|
|
13
|
+
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
|
14
|
+
*/
|
|
11
15
|
isoWeek?: boolean;
|
|
12
16
|
/** Display a compact calendar */
|
|
13
17
|
compact?: boolean;
|
|
@@ -32,7 +32,11 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
|
|
|
32
32
|
hideSeconds?: (second: number, date: Date) => boolean;
|
|
33
33
|
/** The value that mouse hover on in range selection */
|
|
34
34
|
hoverRangeValue?: [Date, Date];
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
|
|
37
|
+
*
|
|
38
|
+
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
|
39
|
+
*/
|
|
36
40
|
isoWeek?: boolean;
|
|
37
41
|
/** Limit showing how many years in the future */
|
|
38
42
|
limitEndYear?: number;
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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, { useState, useCallback, useMemo } from 'react';
|
|
5
5
|
import { useSet } from 'react-use-set';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import omit from 'lodash/omit';
|
|
@@ -12,8 +12,8 @@ import shallowEqual from '../utils/shallowEqual';
|
|
|
12
12
|
import DropdownMenu from './DropdownMenu';
|
|
13
13
|
import { getParentMap, getPathTowardsItem, findNodeOfTree, flattenTree } from '../utils/treeUtils';
|
|
14
14
|
import { usePaths } from './utils';
|
|
15
|
-
import { getSafeRegExpString, createChainedFunction, mergeRefs, useControlled, useCustom, useClassNames, useIsMounted } from '../utils';
|
|
16
|
-
import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, usePickerClassName,
|
|
15
|
+
import { getSafeRegExpString, createChainedFunction, mergeRefs, useControlled, useCustom, useClassNames, useIsMounted, useEventCallback } from '../utils';
|
|
16
|
+
import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
17
17
|
import { useMap } from '../utils/useMap';
|
|
18
18
|
var emptyArray = [];
|
|
19
19
|
|
|
@@ -76,10 +76,12 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
76
76
|
var _useState = useState(false),
|
|
77
77
|
active = _useState[0],
|
|
78
78
|
setActive = _useState[1];
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
var _usePickerRef = usePickerRef(ref),
|
|
80
|
+
trigger = _usePickerRef.trigger,
|
|
81
|
+
root = _usePickerRef.root,
|
|
82
|
+
target = _usePickerRef.target,
|
|
83
|
+
overlay = _usePickerRef.overlay,
|
|
84
|
+
searchInput = _usePickerRef.searchInput;
|
|
83
85
|
var _ref = useControlled(valueProp, defaultValue),
|
|
84
86
|
value = _ref[0],
|
|
85
87
|
setValue = _ref[1];
|
|
@@ -120,11 +122,6 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
120
122
|
columnsToDisplay = _usePaths.columnsToDisplay,
|
|
121
123
|
pathTowardsActiveItem = _usePaths.pathTowardsActiveItem,
|
|
122
124
|
pathTowardsSelectedItem = _usePaths.pathTowardsSelectedItem;
|
|
123
|
-
usePublicMethods(ref, {
|
|
124
|
-
triggerRef: triggerRef,
|
|
125
|
-
overlayRef: overlayRef,
|
|
126
|
-
targetRef: targetRef
|
|
127
|
-
});
|
|
128
125
|
var _useCustom = useCustom('Picker', overrideLocale),
|
|
129
126
|
locale = _useCustom.locale,
|
|
130
127
|
rtl = _useCustom.rtl;
|
|
@@ -139,7 +136,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
139
136
|
var _useState3 = useState(''),
|
|
140
137
|
searchKeyword = _useState3[0],
|
|
141
138
|
setSearchKeyword = _useState3[1];
|
|
142
|
-
var someKeyword =
|
|
139
|
+
var someKeyword = function someKeyword(item, keyword) {
|
|
143
140
|
if (item[labelKey].match(new RegExp(getSafeRegExpString(keyword || searchKeyword), 'i'))) {
|
|
144
141
|
return true;
|
|
145
142
|
}
|
|
@@ -148,8 +145,8 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
148
145
|
return true;
|
|
149
146
|
}
|
|
150
147
|
return false;
|
|
151
|
-
}
|
|
152
|
-
var getSearchResult =
|
|
148
|
+
};
|
|
149
|
+
var getSearchResult = function getSearchResult(keyword) {
|
|
153
150
|
var items = [];
|
|
154
151
|
var result = flattenedData.filter(function (item) {
|
|
155
152
|
if (!parentSelectable && item[childrenKey]) {
|
|
@@ -166,7 +163,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
166
163
|
}
|
|
167
164
|
}
|
|
168
165
|
return items;
|
|
169
|
-
}
|
|
166
|
+
};
|
|
170
167
|
|
|
171
168
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
172
169
|
var _useFocusItemValue = useFocusItemValue(value, {
|
|
@@ -175,7 +172,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
175
172
|
valueKey: valueKey,
|
|
176
173
|
defaultLayer: pathTowardsSelectedItem !== null && pathTowardsSelectedItem !== void 0 && pathTowardsSelectedItem.length ? pathTowardsSelectedItem.length - 1 : 0,
|
|
177
174
|
target: function target() {
|
|
178
|
-
return
|
|
175
|
+
return overlay.current;
|
|
179
176
|
},
|
|
180
177
|
getParent: function getParent(item) {
|
|
181
178
|
return parentMap.get(item);
|
|
@@ -191,7 +188,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
191
188
|
setLayer = _useFocusItemValue.setLayer,
|
|
192
189
|
setKeys = _useFocusItemValue.setKeys,
|
|
193
190
|
onFocusItem = _useFocusItemValue.onKeyDown;
|
|
194
|
-
var handleSearch =
|
|
191
|
+
var handleSearch = useEventCallback(function (value, event) {
|
|
195
192
|
var items = getSearchResult(value);
|
|
196
193
|
setSearchKeyword(value);
|
|
197
194
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
|
|
@@ -204,37 +201,37 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
204
201
|
setLayer(0);
|
|
205
202
|
setKeys([]);
|
|
206
203
|
}
|
|
207
|
-
}
|
|
208
|
-
var handleEntered =
|
|
209
|
-
if (!
|
|
204
|
+
});
|
|
205
|
+
var handleEntered = useEventCallback(function () {
|
|
206
|
+
if (!target.current) {
|
|
210
207
|
return;
|
|
211
208
|
}
|
|
212
209
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
213
210
|
setActive(true);
|
|
214
|
-
}
|
|
215
|
-
var handleExited =
|
|
216
|
-
if (!
|
|
211
|
+
});
|
|
212
|
+
var handleExited = useEventCallback(function () {
|
|
213
|
+
if (!target.current) {
|
|
217
214
|
return;
|
|
218
215
|
}
|
|
219
216
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
220
217
|
setActive(false);
|
|
221
218
|
setSearchKeyword('');
|
|
222
|
-
}
|
|
223
|
-
var handleClose =
|
|
224
|
-
var
|
|
225
|
-
(
|
|
219
|
+
});
|
|
220
|
+
var handleClose = useEventCallback(function () {
|
|
221
|
+
var _trigger$current, _target$current, _target$current$focus;
|
|
222
|
+
(_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.close();
|
|
226
223
|
|
|
227
224
|
// The focus is on the trigger button after closing
|
|
228
|
-
(
|
|
229
|
-
}
|
|
230
|
-
var handleClean =
|
|
231
|
-
if (disabled || !
|
|
225
|
+
(_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);
|
|
226
|
+
});
|
|
227
|
+
var handleClean = useEventCallback(function (event) {
|
|
228
|
+
if (disabled || !target.current) {
|
|
232
229
|
return;
|
|
233
230
|
}
|
|
234
231
|
setValue(null);
|
|
235
232
|
onChange === null || onChange === void 0 ? void 0 : onChange(null, event);
|
|
236
|
-
}
|
|
237
|
-
var handleMenuPressEnter =
|
|
233
|
+
});
|
|
234
|
+
var handleMenuPressEnter = useEventCallback(function (event) {
|
|
238
235
|
var focusItem = findNodeOfTree(data, function (item) {
|
|
239
236
|
return item[valueKey] === focusItemValue;
|
|
240
237
|
});
|
|
@@ -250,20 +247,20 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
250
247
|
}
|
|
251
248
|
handleClose();
|
|
252
249
|
}
|
|
253
|
-
}
|
|
250
|
+
});
|
|
254
251
|
var onPickerKeyDown = useToggleKeyDownEvent(_extends({
|
|
255
252
|
toggle: !focusItemValue || !active,
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
253
|
+
trigger: trigger,
|
|
254
|
+
target: target,
|
|
255
|
+
overlay: overlay,
|
|
256
|
+
searchInput: searchInput,
|
|
260
257
|
active: active,
|
|
261
258
|
onExit: handleClean,
|
|
262
259
|
onMenuKeyDown: onFocusItem,
|
|
263
260
|
onMenuPressEnter: handleMenuPressEnter
|
|
264
261
|
}, rest));
|
|
265
|
-
var handleSelect = function
|
|
266
|
-
var _node$childrenKey,
|
|
262
|
+
var handleSelect = useEventCallback(function (node, cascadePaths, isLeafNode, event) {
|
|
263
|
+
var _node$childrenKey, _trigger$current2;
|
|
267
264
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
268
265
|
setActiveItem(node);
|
|
269
266
|
var nextValue = node[valueKey];
|
|
@@ -301,20 +298,20 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
301
298
|
}
|
|
302
299
|
|
|
303
300
|
// Update menu position
|
|
304
|
-
(
|
|
305
|
-
};
|
|
301
|
+
(_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.updatePosition();
|
|
302
|
+
});
|
|
306
303
|
|
|
307
304
|
/**
|
|
308
305
|
* The search structure option is processed after being selected.
|
|
309
306
|
*/
|
|
310
|
-
var handleSearchRowSelect = function
|
|
307
|
+
var handleSearchRowSelect = useEventCallback(function (node, nodes, event) {
|
|
311
308
|
var nextValue = node[valueKey];
|
|
312
309
|
handleClose();
|
|
313
310
|
setSearchKeyword('');
|
|
314
311
|
setValue(nextValue);
|
|
315
312
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, nodes, event);
|
|
316
313
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
317
|
-
};
|
|
314
|
+
});
|
|
318
315
|
var renderSearchRow = function renderSearchRow(item, key) {
|
|
319
316
|
var regx = new RegExp(getSafeRegExpString(searchKeyword), 'ig');
|
|
320
317
|
var nodes = getPathTowardsItem(item, function (item) {
|
|
@@ -391,16 +388,16 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
391
388
|
inline: inline
|
|
392
389
|
}));
|
|
393
390
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
394
|
-
ref: mergeRefs(
|
|
391
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
395
392
|
className: classes,
|
|
396
393
|
style: styles,
|
|
397
|
-
target:
|
|
394
|
+
target: trigger,
|
|
398
395
|
onKeyDown: onPickerKeyDown
|
|
399
396
|
}, searchable && /*#__PURE__*/React.createElement(SearchBar, {
|
|
400
397
|
placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
|
|
401
398
|
onChange: handleSearch,
|
|
402
399
|
value: searchKeyword,
|
|
403
|
-
inputRef:
|
|
400
|
+
inputRef: searchInput
|
|
404
401
|
}), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
405
402
|
id: id ? id + "-listbox" : undefined,
|
|
406
403
|
menuWidth: menuWidth,
|
|
@@ -459,17 +456,18 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
459
456
|
}
|
|
460
457
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
461
458
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
462
|
-
ref:
|
|
459
|
+
ref: trigger,
|
|
463
460
|
placement: placement,
|
|
464
461
|
onEntered: createChainedFunction(handleEntered, onEnter),
|
|
465
462
|
onExited: createChainedFunction(handleExited, onExited),
|
|
466
463
|
speaker: renderDropdownMenu
|
|
467
464
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
468
465
|
className: classes,
|
|
469
|
-
style: style
|
|
466
|
+
style: style,
|
|
467
|
+
ref: root
|
|
470
468
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
471
469
|
id: id,
|
|
472
|
-
ref:
|
|
470
|
+
ref: target,
|
|
473
471
|
as: toggleAs,
|
|
474
472
|
appearance: appearance,
|
|
475
473
|
disabled: disabled,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { PickerLocale } from '../locales';
|
|
3
3
|
import { PickerHandle, PickerToggleProps } from '../Picker';
|
|
4
4
|
import { ItemDataType, FormControlPickerProps } from '../@types/common';
|
|
@@ -12,7 +12,7 @@ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerL
|
|
|
12
12
|
}
|
|
13
13
|
export interface CheckPickerComponent {
|
|
14
14
|
<T>(props: CheckPickerProps<T> & {
|
|
15
|
-
ref?: Ref<PickerHandle>;
|
|
15
|
+
ref?: React.Ref<PickerHandle>;
|
|
16
16
|
}): JSX.Element | null;
|
|
17
17
|
displayName?: string;
|
|
18
18
|
propTypes?: React.WeakValidationMap<CheckPickerProps<any>>;
|
|
@@ -3,7 +3,7 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
5
|
var _templateObject;
|
|
6
|
-
import React, {
|
|
6
|
+
import React, { useState } from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import clone from 'lodash/clone';
|
|
9
9
|
import isUndefined from 'lodash/isUndefined';
|
|
@@ -13,9 +13,9 @@ import omit from 'lodash/omit';
|
|
|
13
13
|
import pick from 'lodash/pick';
|
|
14
14
|
import isNil from 'lodash/isNil';
|
|
15
15
|
import { filterNodesOfTree } from '../utils/treeUtils';
|
|
16
|
-
import { createChainedFunction, useClassNames, shallowEqual, useCustom, useControlled, mergeRefs } from '../utils';
|
|
16
|
+
import { createChainedFunction, useClassNames, shallowEqual, useCustom, useControlled, useEventCallback, mergeRefs } from '../utils';
|
|
17
17
|
import { getDataGroupBy } from '../utils/getDataGroupBy';
|
|
18
|
-
import { DropdownMenu, DropdownMenuCheckItem as DropdownMenuItem, PickerToggle, PickerOverlay, SearchBar, SelectedElement, PickerToggleTrigger, useFocusItemValue, usePickerClassName, useSearch,
|
|
18
|
+
import { DropdownMenu, DropdownMenuCheckItem as DropdownMenuItem, PickerToggle, PickerOverlay, SearchBar, SelectedElement, PickerToggleTrigger, useFocusItemValue, usePickerClassName, useSearch, useToggleKeyDownEvent, usePickerRef, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
19
19
|
var emptyArray = [];
|
|
20
20
|
/**
|
|
21
21
|
* A component for selecting checkable items in a dropdown list.
|
|
@@ -80,11 +80,13 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
80
80
|
onClose = props.onClose,
|
|
81
81
|
onOpen = props.onOpen,
|
|
82
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", "onClose", "onOpen"]);
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
var _usePickerRef = usePickerRef(ref),
|
|
84
|
+
trigger = _usePickerRef.trigger,
|
|
85
|
+
root = _usePickerRef.root,
|
|
86
|
+
target = _usePickerRef.target,
|
|
87
|
+
overlay = _usePickerRef.overlay,
|
|
88
|
+
list = _usePickerRef.list,
|
|
89
|
+
searchInput = _usePickerRef.searchInput;
|
|
88
90
|
var _useCustom = useCustom('Picker', overrideLocale),
|
|
89
91
|
locale = _useCustom.locale;
|
|
90
92
|
var _useControlled = useControlled(valueProp, defaultValue || []),
|
|
@@ -94,18 +96,18 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
94
96
|
data: data,
|
|
95
97
|
valueKey: valueKey,
|
|
96
98
|
target: function target() {
|
|
97
|
-
return
|
|
99
|
+
return overlay.current;
|
|
98
100
|
}
|
|
99
101
|
}),
|
|
100
102
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
101
103
|
setFocusItemValue = _useFocusItemValue.setFocusItemValue,
|
|
102
104
|
onFocusItem = _useFocusItemValue.onKeyDown;
|
|
103
|
-
var handleSearchCallback =
|
|
105
|
+
var handleSearchCallback = useEventCallback(function (searchKeyword, filteredData, event) {
|
|
104
106
|
var _filteredData$;
|
|
105
107
|
// The first option after filtering is the focus.
|
|
106
108
|
setFocusItemValue(filteredData === null || filteredData === void 0 ? void 0 : (_filteredData$ = filteredData[0]) === null || _filteredData$ === void 0 ? void 0 : _filteredData$[valueKey]);
|
|
107
109
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchKeyword, event);
|
|
108
|
-
}
|
|
110
|
+
});
|
|
109
111
|
|
|
110
112
|
// Use search keywords to filter options.
|
|
111
113
|
var _useSearch = useSearch(data, {
|
|
@@ -139,17 +141,17 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
139
141
|
}
|
|
140
142
|
setStickyItems(nextStickyItems);
|
|
141
143
|
};
|
|
142
|
-
var handleChangeValue =
|
|
144
|
+
var handleChangeValue = useEventCallback(function (value, event) {
|
|
143
145
|
onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
|
|
144
|
-
}
|
|
145
|
-
var handleClean =
|
|
146
|
+
});
|
|
147
|
+
var handleClean = useEventCallback(function (event) {
|
|
146
148
|
if (disabled || !cleanable) {
|
|
147
149
|
return;
|
|
148
150
|
}
|
|
149
151
|
setValue([]);
|
|
150
152
|
onClean === null || onClean === void 0 ? void 0 : onClean(event);
|
|
151
153
|
handleChangeValue([], event);
|
|
152
|
-
}
|
|
154
|
+
});
|
|
153
155
|
var handleMenuPressEnter = function handleMenuPressEnter(event) {
|
|
154
156
|
var nextValue = clone(value);
|
|
155
157
|
if (!focusItemValue) {
|
|
@@ -173,10 +175,10 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
173
175
|
};
|
|
174
176
|
var onPickerKeyDown = useToggleKeyDownEvent(_extends({
|
|
175
177
|
toggle: !focusItemValue || !active,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
trigger: trigger,
|
|
179
|
+
target: target,
|
|
180
|
+
overlay: overlay,
|
|
181
|
+
searchInput: searchInput,
|
|
180
182
|
active: active,
|
|
181
183
|
onExit: handleClean,
|
|
182
184
|
onMenuKeyDown: onFocusItem,
|
|
@@ -186,10 +188,10 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
186
188
|
setFocusItemValue(null);
|
|
187
189
|
}
|
|
188
190
|
}, rest));
|
|
189
|
-
var handleSelect =
|
|
191
|
+
var handleSelect = useEventCallback(function (nextItemValue, item, event) {
|
|
190
192
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextItemValue, item, event);
|
|
191
|
-
}
|
|
192
|
-
var handleItemSelect =
|
|
193
|
+
});
|
|
194
|
+
var handleItemSelect = useEventCallback(function (nextItemValue, item, event, checked) {
|
|
193
195
|
var nextValue = clone(value);
|
|
194
196
|
if (checked) {
|
|
195
197
|
nextValue.push(nextItemValue);
|
|
@@ -202,22 +204,16 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
202
204
|
setFocusItemValue(nextItemValue);
|
|
203
205
|
handleSelect(nextValue, item, event);
|
|
204
206
|
handleChangeValue(nextValue, event);
|
|
205
|
-
}
|
|
206
|
-
var handleEntered =
|
|
207
|
+
});
|
|
208
|
+
var handleEntered = useEventCallback(function () {
|
|
207
209
|
setActive(true);
|
|
208
210
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
209
|
-
}
|
|
210
|
-
var handleExited =
|
|
211
|
+
});
|
|
212
|
+
var handleExited = useEventCallback(function () {
|
|
211
213
|
resetSearch();
|
|
212
214
|
setFocusItemValue(null);
|
|
213
215
|
setActive(false);
|
|
214
216
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
215
|
-
}, [onClose, setFocusItemValue, resetSearch]);
|
|
216
|
-
usePublicMethods(ref, {
|
|
217
|
-
triggerRef: triggerRef,
|
|
218
|
-
overlayRef: overlayRef,
|
|
219
|
-
targetRef: targetRef,
|
|
220
|
-
listRef: listRef
|
|
221
217
|
});
|
|
222
218
|
var selectedItems = data.filter(function (item) {
|
|
223
219
|
return value === null || value === void 0 ? void 0 : value.some(function (val) {
|
|
@@ -281,7 +277,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
281
277
|
var menu = items.length || filteredStickyItems.length ? /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
282
278
|
id: id ? id + "-listbox" : undefined,
|
|
283
279
|
listProps: listProps,
|
|
284
|
-
listRef:
|
|
280
|
+
listRef: list,
|
|
285
281
|
disabledItemValues: disabledItemValues,
|
|
286
282
|
valueKey: valueKey,
|
|
287
283
|
labelKey: labelKey,
|
|
@@ -304,17 +300,17 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
304
300
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["none"])))
|
|
305
301
|
}, locale === null || locale === void 0 ? void 0 : locale.noResultsText);
|
|
306
302
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
307
|
-
ref: mergeRefs(
|
|
303
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
308
304
|
autoWidth: menuAutoWidth,
|
|
309
305
|
className: classes,
|
|
310
306
|
style: styles,
|
|
311
307
|
onKeyDown: onPickerKeyDown,
|
|
312
|
-
target:
|
|
308
|
+
target: trigger
|
|
313
309
|
}, searchable && /*#__PURE__*/React.createElement(SearchBar, {
|
|
314
310
|
placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
|
|
315
311
|
onChange: handleSearch,
|
|
316
312
|
value: searchKeyword,
|
|
317
|
-
inputRef:
|
|
313
|
+
inputRef: searchInput
|
|
318
314
|
}), renderMenu ? renderMenu(menu) : menu, renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
|
|
319
315
|
};
|
|
320
316
|
var _usePickerClassName = usePickerClassName(_extends({}, props, {
|
|
@@ -329,7 +325,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
329
325
|
usedClassNamePropKeys = _usePickerClassName[1];
|
|
330
326
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
331
327
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
332
|
-
ref:
|
|
328
|
+
ref: trigger,
|
|
333
329
|
placement: placement,
|
|
334
330
|
onEnter: createChainedFunction(initStickyItems, onEnter),
|
|
335
331
|
onEntered: createChainedFunction(handleEntered, onEntered),
|
|
@@ -337,10 +333,11 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
337
333
|
speaker: renderDropdownMenu
|
|
338
334
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
339
335
|
className: classes,
|
|
340
|
-
style: style
|
|
336
|
+
style: style,
|
|
337
|
+
ref: root
|
|
341
338
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
342
339
|
id: id,
|
|
343
|
-
ref:
|
|
340
|
+
ref: target,
|
|
344
341
|
appearance: appearance,
|
|
345
342
|
disabled: disabled,
|
|
346
343
|
onClean: handleClean,
|