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
|
@@ -9,12 +9,20 @@ export interface RangeType<T = DateRange> {
|
|
|
9
9
|
placement?: 'bottom' | 'left';
|
|
10
10
|
}
|
|
11
11
|
export declare type DisabledDateFunction = (
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Date used to determine if disabling is required.
|
|
14
|
+
*/
|
|
13
15
|
date: Date,
|
|
14
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Date selected.
|
|
18
|
+
*/
|
|
15
19
|
selectDate?: ValueType,
|
|
16
20
|
/**
|
|
17
21
|
* Whether to choose to finish now.
|
|
18
22
|
* If `false`, only the start date is selected, waiting for the selection end date.
|
|
19
23
|
*/
|
|
20
|
-
selectedDone?: boolean,
|
|
24
|
+
selectedDone?: boolean,
|
|
25
|
+
/**
|
|
26
|
+
* Call the target of the `shouldDisableDate` function.
|
|
27
|
+
*/
|
|
28
|
+
target?: DATERANGE_DISABLED_TARGET) => boolean;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DateRange } from './types';
|
|
2
|
-
export declare function getSafeCalendarDate({ value, calendarKey }: {
|
|
2
|
+
export declare function getSafeCalendarDate({ value, calendarKey, allowAameMonth }: {
|
|
3
3
|
value: [] | [Date] | [Date, Date] | null;
|
|
4
4
|
calendarKey?: 'start' | 'end';
|
|
5
|
+
allowAameMonth?: boolean;
|
|
5
6
|
}): DateRange;
|
|
6
7
|
export declare const isSameRange: (source: DateRange | null, dest: DateRange | null, format: string) => boolean;
|
|
7
8
|
export declare const getMonthHoverRange: (date: Date) => DateRange;
|
|
@@ -9,29 +9,31 @@ function getSafeCalendarDate(_ref) {
|
|
|
9
9
|
var _value;
|
|
10
10
|
var value = _ref.value,
|
|
11
11
|
_ref$calendarKey = _ref.calendarKey,
|
|
12
|
-
calendarKey = _ref$calendarKey === void 0 ? 'start' : _ref$calendarKey
|
|
12
|
+
calendarKey = _ref$calendarKey === void 0 ? 'start' : _ref$calendarKey,
|
|
13
|
+
allowAameMonth = _ref.allowAameMonth;
|
|
13
14
|
// Update calendarDate if the value is not null
|
|
14
15
|
value = (_value = value) !== null && _value !== void 0 ? _value : [];
|
|
16
|
+
var gap = allowAameMonth ? 0 : 1;
|
|
15
17
|
if (value[0] && value[1]) {
|
|
16
18
|
var diffMonth = (0, _dateUtils.differenceInCalendarMonths)(value[1], value[0]);
|
|
17
19
|
if (calendarKey === 'start') {
|
|
18
20
|
return [value[0], diffMonth <= 0 ? (0, _dateUtils.copyTime)({
|
|
19
21
|
from: value[1],
|
|
20
|
-
to: (0, _dateUtils.addMonths)(value[0],
|
|
22
|
+
to: (0, _dateUtils.addMonths)(value[0], gap)
|
|
21
23
|
}) : value[1]];
|
|
22
24
|
} else if (calendarKey === 'end') {
|
|
23
25
|
return [diffMonth <= 0 ? (0, _dateUtils.copyTime)({
|
|
24
26
|
from: value[0],
|
|
25
|
-
to: (0, _dateUtils.addMonths)(value[1], -
|
|
27
|
+
to: (0, _dateUtils.addMonths)(value[1], -gap)
|
|
26
28
|
}) : value[0], value[1]];
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
// If only the start date
|
|
30
32
|
} else if (value[0]) {
|
|
31
|
-
return [value[0], (0, _dateUtils.addMonths)(value[0],
|
|
33
|
+
return [value[0], (0, _dateUtils.addMonths)(value[0], gap)];
|
|
32
34
|
}
|
|
33
35
|
var todayDate = new Date();
|
|
34
|
-
return [todayDate, (0, _dateUtils.addMonths)(todayDate,
|
|
36
|
+
return [todayDate, (0, _dateUtils.addMonths)(todayDate, gap)];
|
|
35
37
|
}
|
|
36
38
|
var isSameRange = function isSameRange(source, dest, format) {
|
|
37
39
|
// If both are null, reguard as same
|
|
@@ -9,7 +9,17 @@ export declare type FormControlAccepterProps<ValueType = any> = FormControlBaseP
|
|
|
9
9
|
export interface FormControlProps<P = any, ValueType = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLFormElement>, 'value' | 'onChange'> {
|
|
10
10
|
/** Proxied components */
|
|
11
11
|
accepter?: React.ElementType<P & FormControlBaseProps<ValueType>>;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* The name of form-control, support nested path. such as `address.city`.
|
|
14
|
+
* The path will be used to get and set form values.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```js
|
|
18
|
+
* <Form formValue={{ address: { city: 'Shanghai' } }}>
|
|
19
|
+
* <FormControl name="address.city" />
|
|
20
|
+
* </Form>
|
|
21
|
+
* ```
|
|
22
|
+
**/
|
|
13
23
|
name: string;
|
|
14
24
|
/** Value */
|
|
15
25
|
value?: ValueType;
|
|
@@ -6,11 +6,13 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
6
6
|
exports.__esModule = true;
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
|
|
9
|
-
var
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
|
|
14
|
+
var _get = _interopRequireDefault(require("lodash/get"));
|
|
15
|
+
var _set = _interopRequireDefault(require("lodash/set"));
|
|
14
16
|
var _Input = _interopRequireDefault(require("../Input"));
|
|
15
17
|
var _FormErrorMessage = _interopRequireDefault(require("../FormErrorMessage"));
|
|
16
18
|
var _utils = require("../utils");
|
|
@@ -84,7 +86,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
84
86
|
});
|
|
85
87
|
var trigger = checkTrigger || contextCheckTrigger;
|
|
86
88
|
var formValue = (0, _react.useContext)(_FormContext.FormValueContext);
|
|
87
|
-
var val = (0, _isUndefined.default)(value) ?
|
|
89
|
+
var val = (0, _isUndefined.default)(value) ? (0, _get.default)(formValue, name) : value;
|
|
88
90
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
89
91
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
90
92
|
prefix = _useClassNames.prefix;
|
|
@@ -99,7 +101,6 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
99
101
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
100
102
|
};
|
|
101
103
|
var handleFieldCheck = function handleFieldCheck(value, isCheckTrigger) {
|
|
102
|
-
var _extends2;
|
|
103
104
|
var callbackEvents = function callbackEvents(checkResult) {
|
|
104
105
|
// The relevant event is triggered only when the inspection is allowed.
|
|
105
106
|
if (isCheckTrigger) {
|
|
@@ -111,7 +112,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
111
112
|
}
|
|
112
113
|
return checkResult;
|
|
113
114
|
};
|
|
114
|
-
var nextFormValue = (0,
|
|
115
|
+
var nextFormValue = (0, _set.default)(formValue || {}, name, value);
|
|
115
116
|
var model = getCombinedModel();
|
|
116
117
|
if (checkAsync) {
|
|
117
118
|
return model === null || model === void 0 ? void 0 : model.checkForFieldAsync(name, nextFormValue).then(function (checkResult) {
|
|
@@ -143,7 +144,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
143
144
|
className: classes,
|
|
144
145
|
ref: ref,
|
|
145
146
|
"data-testid": "form-control-wrapper"
|
|
146
|
-
}, /*#__PURE__*/_react.default.createElement(AccepterComponent, (0,
|
|
147
|
+
}, /*#__PURE__*/_react.default.createElement(AccepterComponent, (0, _extends2.default)({
|
|
147
148
|
id: controlId,
|
|
148
149
|
"aria-labelledby": controlId ? controlId + "-control-label" : null,
|
|
149
150
|
"aria-describedby": ariaDescribedby,
|
|
@@ -115,11 +115,13 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
115
115
|
if (groupBy === valueKey || groupBy === labelKey) {
|
|
116
116
|
throw Error('`groupBy` can not be equal to `valueKey` and `labelKey`');
|
|
117
117
|
}
|
|
118
|
-
var overlayRef = (0, _react.useRef)(null);
|
|
119
|
-
var targetRef = (0, _react.useRef)(null);
|
|
120
|
-
var triggerRef = (0, _react.useRef)(null);
|
|
121
118
|
var inputRef = (0, _react.useRef)();
|
|
122
|
-
var
|
|
119
|
+
var _usePickerRef = (0, _Picker.usePickerRef)(ref),
|
|
120
|
+
triggerRef = _usePickerRef.trigger,
|
|
121
|
+
root = _usePickerRef.root,
|
|
122
|
+
target = _usePickerRef.target,
|
|
123
|
+
overlay = _usePickerRef.overlay,
|
|
124
|
+
list = _usePickerRef.list;
|
|
123
125
|
var _useCustom = (0, _utils.useCustom)(['Picker', 'InputPicker'], overrideLocale),
|
|
124
126
|
locale = _useCustom.locale;
|
|
125
127
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
@@ -148,34 +150,34 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
148
150
|
value = _useControlled[0],
|
|
149
151
|
setValue = _useControlled[1],
|
|
150
152
|
isControlled = _useControlled[2];
|
|
151
|
-
var cloneValue =
|
|
153
|
+
var cloneValue = function cloneValue() {
|
|
152
154
|
return multi ? (0, _clone.default)(value) || [] : value;
|
|
153
|
-
}
|
|
154
|
-
var handleClose = (0,
|
|
155
|
-
var _triggerRef$current,
|
|
155
|
+
};
|
|
156
|
+
var handleClose = (0, _utils.useEventCallback)(function () {
|
|
157
|
+
var _triggerRef$current, _target$current, _target$current$focus;
|
|
156
158
|
triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
|
|
157
159
|
|
|
158
160
|
// The focus is on the trigger button after closing
|
|
159
|
-
(
|
|
160
|
-
}
|
|
161
|
+
(_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);
|
|
162
|
+
});
|
|
161
163
|
|
|
162
164
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
163
165
|
var _useFocusItemValue = (0, _Picker.useFocusItemValue)(multi ? value === null || value === void 0 ? void 0 : value[0] : value, {
|
|
164
166
|
data: getAllDataAndCache(),
|
|
165
167
|
valueKey: valueKey,
|
|
166
168
|
target: function target() {
|
|
167
|
-
return
|
|
169
|
+
return overlay.current;
|
|
168
170
|
}
|
|
169
171
|
}),
|
|
170
172
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
171
173
|
setFocusItemValue = _useFocusItemValue.setFocusItemValue,
|
|
172
174
|
onKeyDown = _useFocusItemValue.onKeyDown;
|
|
173
|
-
var handleSearchCallback = (0,
|
|
175
|
+
var handleSearchCallback = (0, _utils.useEventCallback)(function (searchKeyword, filteredData, event) {
|
|
174
176
|
var _filteredData$;
|
|
175
177
|
// The first option after filtering is the focus.
|
|
176
178
|
setFocusItemValue(disabledOptions ? searchKeyword : (filteredData === null || filteredData === void 0 ? void 0 : (_filteredData$ = filteredData[0]) === null || _filteredData$ === void 0 ? void 0 : _filteredData$[valueKey]) || searchKeyword);
|
|
177
179
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchKeyword, event);
|
|
178
|
-
}
|
|
180
|
+
});
|
|
179
181
|
|
|
180
182
|
// Use search keywords to filter options.
|
|
181
183
|
var _useSearch = (0, _Picker.useSearch)(getAllData(), {
|
|
@@ -201,12 +203,14 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
201
203
|
if ((_triggerRef$current2 = triggerRef.current) !== null && _triggerRef$current2 !== void 0 && _triggerRef$current2.root) {
|
|
202
204
|
setMaxWidth((0, _getWidth.default)(triggerRef.current.root));
|
|
203
205
|
}
|
|
206
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
204
207
|
}, []);
|
|
205
208
|
|
|
206
209
|
// Update the position of the menu when the search keyword and value change
|
|
207
210
|
(0, _react.useEffect)(function () {
|
|
208
211
|
var _triggerRef$current3, _triggerRef$current3$;
|
|
209
212
|
(_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : (_triggerRef$current3$ = _triggerRef$current3.updatePosition) === null || _triggerRef$current3$ === void 0 ? void 0 : _triggerRef$current3$.call(_triggerRef$current3);
|
|
213
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
210
214
|
}, [searchKeyword, value]);
|
|
211
215
|
var getDateItem = function getDateItem(value) {
|
|
212
216
|
// Find active `MenuItem` by `value`
|
|
@@ -224,23 +228,23 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
224
228
|
itemNode: itemNode
|
|
225
229
|
};
|
|
226
230
|
};
|
|
227
|
-
var getInput =
|
|
231
|
+
var getInput = function getInput() {
|
|
228
232
|
var _inputRef$current;
|
|
229
233
|
return multi ? (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.input : inputRef.current;
|
|
230
|
-
}
|
|
231
|
-
var focusInput =
|
|
234
|
+
};
|
|
235
|
+
var focusInput = function focusInput() {
|
|
232
236
|
var _getInput;
|
|
233
237
|
return (_getInput = getInput()) === null || _getInput === void 0 ? void 0 : _getInput.focus();
|
|
234
|
-
}
|
|
235
|
-
var blurInput =
|
|
238
|
+
};
|
|
239
|
+
var blurInput = function blurInput() {
|
|
236
240
|
var _getInput2;
|
|
237
241
|
return (_getInput2 = getInput()) === null || _getInput2 === void 0 ? void 0 : _getInput2.blur();
|
|
238
|
-
}
|
|
242
|
+
};
|
|
239
243
|
|
|
240
244
|
/**
|
|
241
245
|
* Convert the string of the newly created option into an object.
|
|
242
246
|
*/
|
|
243
|
-
var createOption =
|
|
247
|
+
var createOption = function createOption(value) {
|
|
244
248
|
var _ref2;
|
|
245
249
|
if (groupBy) {
|
|
246
250
|
var _ref;
|
|
@@ -251,11 +255,11 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
251
255
|
return _ref2 = {
|
|
252
256
|
create: true
|
|
253
257
|
}, _ref2[valueKey] = value, _ref2[labelKey] = value, _ref2;
|
|
254
|
-
}
|
|
255
|
-
var handleChange = (0,
|
|
258
|
+
};
|
|
259
|
+
var handleChange = (0, _utils.useEventCallback)(function (value, event) {
|
|
256
260
|
onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
|
|
257
|
-
}
|
|
258
|
-
var handleRemoveItemByTag = (0,
|
|
261
|
+
});
|
|
262
|
+
var handleRemoveItemByTag = (0, _utils.useEventCallback)(function (tag, event) {
|
|
259
263
|
event.stopPropagation();
|
|
260
264
|
var val = cloneValue();
|
|
261
265
|
(0, _remove.default)(val, function (itemVal) {
|
|
@@ -264,15 +268,15 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
264
268
|
setValue(val);
|
|
265
269
|
handleChange(val, event);
|
|
266
270
|
onTagRemove === null || onTagRemove === void 0 ? void 0 : onTagRemove(tag, event);
|
|
267
|
-
}
|
|
268
|
-
var handleSelect = (0,
|
|
271
|
+
});
|
|
272
|
+
var handleSelect = (0, _utils.useEventCallback)(function (value, item, event) {
|
|
269
273
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(value, item, event);
|
|
270
274
|
if (creatable && item.create) {
|
|
271
275
|
delete item.create;
|
|
272
276
|
onCreate === null || onCreate === void 0 ? void 0 : onCreate(value, item, event);
|
|
273
277
|
setNewData(newData.concat(item));
|
|
274
278
|
}
|
|
275
|
-
}
|
|
279
|
+
});
|
|
276
280
|
|
|
277
281
|
/**
|
|
278
282
|
* Callback triggered by single selection
|
|
@@ -280,14 +284,14 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
280
284
|
* @param item
|
|
281
285
|
* @param event
|
|
282
286
|
*/
|
|
283
|
-
var handleSelectItem = function
|
|
287
|
+
var handleSelectItem = (0, _utils.useEventCallback)(function (value, item, event) {
|
|
284
288
|
setValue(value);
|
|
285
289
|
setFocusItemValue(value);
|
|
286
290
|
resetSearch();
|
|
287
291
|
handleSelect(value, item, event);
|
|
288
292
|
handleChange(value, event);
|
|
289
293
|
handleClose();
|
|
290
|
-
};
|
|
294
|
+
});
|
|
291
295
|
|
|
292
296
|
/**
|
|
293
297
|
* Callback triggered by multiple selection
|
|
@@ -296,7 +300,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
296
300
|
* @param event
|
|
297
301
|
* @param checked
|
|
298
302
|
*/
|
|
299
|
-
var handleCheckTag = function
|
|
303
|
+
var handleCheckTag = (0, _utils.useEventCallback)(function (nextItemValue, item, event, checked) {
|
|
300
304
|
var val = cloneValue();
|
|
301
305
|
if (checked) {
|
|
302
306
|
val.push(nextItemValue);
|
|
@@ -311,8 +315,8 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
311
315
|
handleSelect(val, item, event);
|
|
312
316
|
handleChange(val, event);
|
|
313
317
|
focusInput();
|
|
314
|
-
};
|
|
315
|
-
var handleTagKeyPress = (0,
|
|
318
|
+
});
|
|
319
|
+
var handleTagKeyPress = (0, _utils.useEventCallback)(function (event) {
|
|
316
320
|
// When composing, ignore the keypress event.
|
|
317
321
|
if (event.nativeEvent.isComposing) {
|
|
318
322
|
return;
|
|
@@ -348,8 +352,8 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
348
352
|
resetSearch();
|
|
349
353
|
handleSelect(val, focusItem, event);
|
|
350
354
|
handleChange(val, event);
|
|
351
|
-
}
|
|
352
|
-
var handleMenuItemKeyPress = (0,
|
|
355
|
+
});
|
|
356
|
+
var handleMenuItemKeyPress = (0, _utils.useEventCallback)(function (event) {
|
|
353
357
|
if (!focusItemValue || !controlledData) {
|
|
354
358
|
return;
|
|
355
359
|
}
|
|
@@ -378,19 +382,13 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
378
382
|
}
|
|
379
383
|
handleChange(focusItemValue, event);
|
|
380
384
|
handleClose();
|
|
381
|
-
}, [setValue, disabledItemValues, controlledData, focusItemValue, valueKey, searchKeyword, handleClose, resetSearch, createOption, getAllData, handleChange, handleSelect]);
|
|
382
|
-
(0, _Picker.usePublicMethods)(ref, {
|
|
383
|
-
triggerRef: triggerRef,
|
|
384
|
-
overlayRef: overlayRef,
|
|
385
|
-
targetRef: targetRef,
|
|
386
|
-
listRef: listRef
|
|
387
385
|
});
|
|
388
386
|
|
|
389
387
|
/**
|
|
390
388
|
* Remove the last item, after pressing the back key on the keyboard.
|
|
391
389
|
* @param event
|
|
392
390
|
*/
|
|
393
|
-
var removeLastItem = (0,
|
|
391
|
+
var removeLastItem = (0, _utils.useEventCallback)(function (event) {
|
|
394
392
|
var target = event === null || event === void 0 ? void 0 : event.target;
|
|
395
393
|
if ((target === null || target === void 0 ? void 0 : target.tagName) !== 'INPUT') {
|
|
396
394
|
focusInput();
|
|
@@ -403,8 +401,8 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
403
401
|
val.pop();
|
|
404
402
|
setValue(val);
|
|
405
403
|
handleChange(val, event);
|
|
406
|
-
}
|
|
407
|
-
var handleClean = (0,
|
|
404
|
+
});
|
|
405
|
+
var handleClean = (0, _utils.useEventCallback)(function (event) {
|
|
408
406
|
if (disabled || searchKeyword !== '') {
|
|
409
407
|
return;
|
|
410
408
|
}
|
|
@@ -417,14 +415,14 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
417
415
|
handleChange(null, event);
|
|
418
416
|
}
|
|
419
417
|
onClean === null || onClean === void 0 ? void 0 : onClean(event);
|
|
420
|
-
}
|
|
418
|
+
});
|
|
421
419
|
var events = {
|
|
422
420
|
onMenuPressBackspace: multi ? removeLastItem : handleClean,
|
|
423
421
|
onMenuKeyDown: onKeyDown,
|
|
424
422
|
onMenuPressEnter: undefined,
|
|
425
423
|
onKeyDown: undefined
|
|
426
424
|
};
|
|
427
|
-
var handleKeyPress = (0,
|
|
425
|
+
var handleKeyPress = (0, _utils.useEventCallback)(function (event) {
|
|
428
426
|
// When typing a space, create a tag.
|
|
429
427
|
if ((0, _utils.isOneOf)('Space', trigger) && event.key === _utils.KEY_VALUES.SPACE) {
|
|
430
428
|
handleTagKeyPress(event);
|
|
@@ -436,7 +434,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
436
434
|
handleTagKeyPress(event);
|
|
437
435
|
event.preventDefault();
|
|
438
436
|
}
|
|
439
|
-
}
|
|
437
|
+
});
|
|
440
438
|
if (multi) {
|
|
441
439
|
if ((0, _utils.isOneOf)('Enter', trigger)) {
|
|
442
440
|
events.onMenuPressEnter = handleTagKeyPress;
|
|
@@ -448,30 +446,30 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
448
446
|
events.onMenuPressEnter = handleMenuItemKeyPress;
|
|
449
447
|
}
|
|
450
448
|
var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
449
|
+
trigger: triggerRef,
|
|
450
|
+
target: target,
|
|
451
|
+
overlay: overlay
|
|
454
452
|
}, events, rest));
|
|
455
|
-
var handleExited = (0,
|
|
453
|
+
var handleExited = (0, _utils.useEventCallback)(function () {
|
|
456
454
|
setFocusItemValue(multi ? value === null || value === void 0 ? void 0 : value[0] : value);
|
|
457
455
|
resetSearch();
|
|
458
456
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
459
|
-
}
|
|
460
|
-
var handleFocus = (0,
|
|
457
|
+
});
|
|
458
|
+
var handleFocus = (0, _utils.useEventCallback)(function () {
|
|
461
459
|
if (!readOnly) {
|
|
462
460
|
var _triggerRef$current4;
|
|
463
461
|
setOpen(true);
|
|
464
462
|
(_triggerRef$current4 = triggerRef.current) === null || _triggerRef$current4 === void 0 ? void 0 : _triggerRef$current4.open();
|
|
465
463
|
}
|
|
466
|
-
}
|
|
467
|
-
var handleEnter = (0,
|
|
464
|
+
});
|
|
465
|
+
var handleEnter = (0, _utils.useEventCallback)(function () {
|
|
468
466
|
focusInput();
|
|
469
467
|
setOpen(true);
|
|
470
|
-
}
|
|
471
|
-
var handleExit = (0,
|
|
468
|
+
});
|
|
469
|
+
var handleExit = (0, _utils.useEventCallback)(function () {
|
|
472
470
|
blurInput();
|
|
473
471
|
setOpen(false);
|
|
474
|
-
}
|
|
472
|
+
});
|
|
475
473
|
var renderDropdownMenuItem = function renderDropdownMenuItem(label, item) {
|
|
476
474
|
// 'Create option "{0}"' => Create option "xxxxx"
|
|
477
475
|
var newLabel = item.create ? /*#__PURE__*/_react.default.createElement("span", null, (0, _utils.tplTransform)(locale.createOption, label)) : label;
|
|
@@ -553,13 +551,13 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
553
551
|
}
|
|
554
552
|
if (disabledOptions) {
|
|
555
553
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
556
|
-
ref: (0, _utils.mergeRefs)(
|
|
554
|
+
ref: (0, _utils.mergeRefs)(overlay, speakerRef)
|
|
557
555
|
});
|
|
558
556
|
}
|
|
559
557
|
var menu = items.length ? /*#__PURE__*/_react.default.createElement(_Picker.DropdownMenu, {
|
|
560
558
|
id: id ? id + "-listbox" : undefined,
|
|
561
559
|
listProps: listProps,
|
|
562
|
-
listRef:
|
|
560
|
+
listRef: list,
|
|
563
561
|
disabledItemValues: disabledItemValues,
|
|
564
562
|
valueKey: valueKey,
|
|
565
563
|
labelKey: labelKey,
|
|
@@ -587,7 +585,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
587
585
|
className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["none"])))
|
|
588
586
|
}, locale === null || locale === void 0 ? void 0 : locale.noResultsText);
|
|
589
587
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
590
|
-
ref: (0, _utils.mergeRefs)(
|
|
588
|
+
ref: (0, _utils.mergeRefs)(overlay, speakerRef),
|
|
591
589
|
autoWidth: menuAutoWidth,
|
|
592
590
|
className: classes,
|
|
593
591
|
style: styles,
|
|
@@ -640,7 +638,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
640
638
|
}
|
|
641
639
|
return /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({
|
|
642
640
|
localeKey: "notSelected",
|
|
643
|
-
ref:
|
|
641
|
+
ref: target
|
|
644
642
|
}, plaintextProps), itemNode || (tagElements !== null && tagElements !== void 0 && tagElements.length ? tagElements : null) || placeholder);
|
|
645
643
|
}
|
|
646
644
|
var placeholderNode = placeholder || (disabledOptions ? null : locale === null || locale === void 0 ? void 0 : locale.placeholder);
|
|
@@ -658,13 +656,14 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
658
656
|
className: classes,
|
|
659
657
|
style: style,
|
|
660
658
|
onClick: focusInput,
|
|
661
|
-
onKeyDown: onPickerKeyDown
|
|
659
|
+
onKeyDown: onPickerKeyDown,
|
|
660
|
+
ref: root
|
|
662
661
|
}, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
663
662
|
id: id,
|
|
664
663
|
appearance: appearance,
|
|
665
664
|
readOnly: readOnly,
|
|
666
665
|
plaintext: plaintext,
|
|
667
|
-
ref:
|
|
666
|
+
ref: target,
|
|
668
667
|
as: toggleAs,
|
|
669
668
|
tabIndex: tabIndex,
|
|
670
669
|
onClean: handleClean,
|