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.
Files changed (115) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/Cascader/styles/index.less +4 -4
  3. package/DateRangePicker/styles/index.less +15 -5
  4. package/Dropdown/styles/index.less +5 -4
  5. package/Dropdown/styles/mixin.less +0 -11
  6. package/Picker/styles/index.less +31 -24
  7. package/Picker/styles/mixin.less +17 -13
  8. package/README.md +4 -4
  9. package/TagInput/styles/index.less +1 -1
  10. package/cjs/AutoComplete/AutoComplete.js +25 -26
  11. package/cjs/Calendar/Calendar.d.ts +5 -1
  12. package/cjs/Calendar/CalendarContainer.d.ts +5 -1
  13. package/cjs/Cascader/Cascader.js +46 -48
  14. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  15. package/cjs/CheckPicker/CheckPicker.js +33 -36
  16. package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
  17. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  18. package/cjs/DatePicker/DatePicker.js +2 -4
  19. package/cjs/DatePicker/Toolbar.js +2 -1
  20. package/cjs/DateRangeInput/DateRangeInput.js +2 -2
  21. package/cjs/DateRangePicker/Calendar.js +24 -23
  22. package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
  23. package/cjs/DateRangePicker/DateRangePicker.js +239 -201
  24. package/cjs/DateRangePicker/types.d.ts +11 -3
  25. package/cjs/DateRangePicker/utils.d.ts +2 -1
  26. package/cjs/DateRangePicker/utils.js +7 -5
  27. package/cjs/FormControl/FormControl.d.ts +11 -1
  28. package/cjs/FormControl/FormControl.js +6 -5
  29. package/cjs/InputPicker/InputPicker.js +62 -63
  30. package/cjs/MultiCascader/MultiCascader.js +40 -42
  31. package/cjs/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  32. package/cjs/{DatePicker → Picker}/PickerIndicator.js +2 -1
  33. package/cjs/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  34. package/cjs/Picker/PickerToggle.d.ts +17 -22
  35. package/cjs/Picker/PickerToggle.js +52 -177
  36. package/cjs/Picker/index.d.ts +3 -0
  37. package/cjs/Picker/index.js +10 -1
  38. package/cjs/Picker/usePickerRef.d.ts +3 -1
  39. package/cjs/Picker/usePickerRef.js +13 -7
  40. package/cjs/Picker/utils.d.ts +5 -9
  41. package/cjs/Picker/utils.js +22 -89
  42. package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
  43. package/cjs/SelectPicker/SelectPicker.js +39 -42
  44. package/cjs/TreePicker/TreePicker.js +72 -75
  45. package/cjs/utils/constants.d.ts +2 -1
  46. package/cjs/utils/constants.js +1 -0
  47. package/cjs/utils/dateUtils.d.ts +0 -1
  48. package/cjs/utils/dateUtils.js +0 -6
  49. package/cjs/utils/getStringLength.d.ts +2 -0
  50. package/cjs/utils/getStringLength.js +18 -0
  51. package/cjs/utils/index.d.ts +1 -0
  52. package/cjs/utils/index.js +4 -1
  53. package/dist/rsuite-no-reset-rtl.css +92 -69
  54. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  55. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  56. package/dist/rsuite-no-reset.css +92 -69
  57. package/dist/rsuite-no-reset.min.css +1 -1
  58. package/dist/rsuite-no-reset.min.css.map +1 -1
  59. package/dist/rsuite-rtl.css +92 -69
  60. package/dist/rsuite-rtl.min.css +1 -1
  61. package/dist/rsuite-rtl.min.css.map +1 -1
  62. package/dist/rsuite.css +92 -69
  63. package/dist/rsuite.js +67 -46
  64. package/dist/rsuite.js.map +1 -1
  65. package/dist/rsuite.min.css +1 -1
  66. package/dist/rsuite.min.css.map +1 -1
  67. package/dist/rsuite.min.js +1 -1
  68. package/dist/rsuite.min.js.map +1 -1
  69. package/esm/AutoComplete/AutoComplete.js +28 -29
  70. package/esm/Calendar/Calendar.d.ts +5 -1
  71. package/esm/Calendar/CalendarContainer.d.ts +5 -1
  72. package/esm/Cascader/Cascader.js +49 -51
  73. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  74. package/esm/CheckPicker/CheckPicker.js +36 -39
  75. package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
  76. package/esm/DatePicker/DatePicker.d.ts +5 -1
  77. package/esm/DatePicker/DatePicker.js +1 -3
  78. package/esm/DatePicker/Toolbar.js +2 -1
  79. package/esm/DateRangeInput/DateRangeInput.js +2 -2
  80. package/esm/DateRangePicker/Calendar.js +25 -23
  81. package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
  82. package/esm/DateRangePicker/DateRangePicker.js +241 -203
  83. package/esm/DateRangePicker/types.d.ts +11 -3
  84. package/esm/DateRangePicker/utils.d.ts +2 -1
  85. package/esm/DateRangePicker/utils.js +7 -5
  86. package/esm/FormControl/FormControl.d.ts +11 -1
  87. package/esm/FormControl/FormControl.js +4 -3
  88. package/esm/InputPicker/InputPicker.js +64 -65
  89. package/esm/MultiCascader/MultiCascader.js +43 -45
  90. package/esm/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  91. package/esm/{DatePicker → Picker}/PickerIndicator.js +2 -1
  92. package/esm/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  93. package/esm/Picker/PickerToggle.d.ts +17 -22
  94. package/esm/Picker/PickerToggle.js +54 -179
  95. package/esm/Picker/index.d.ts +3 -0
  96. package/esm/Picker/index.js +3 -0
  97. package/esm/Picker/usePickerRef.d.ts +3 -1
  98. package/esm/Picker/usePickerRef.js +13 -8
  99. package/esm/Picker/utils.d.ts +5 -9
  100. package/esm/Picker/utils.js +24 -90
  101. package/esm/SelectPicker/SelectPicker.d.ts +2 -2
  102. package/esm/SelectPicker/SelectPicker.js +42 -45
  103. package/esm/TreePicker/TreePicker.js +75 -78
  104. package/esm/utils/constants.d.ts +2 -1
  105. package/esm/utils/constants.js +1 -0
  106. package/esm/utils/dateUtils.d.ts +0 -1
  107. package/esm/utils/dateUtils.js +0 -5
  108. package/esm/utils/getStringLength.d.ts +2 -0
  109. package/esm/utils/getStringLength.js +13 -0
  110. package/esm/utils/index.d.ts +1 -0
  111. package/esm/utils/index.js +1 -0
  112. package/package.json +1 -1
  113. package/styles/mixins/combobox.less +10 -0
  114. /package/cjs/{DatePicker → Picker}/PickerLabel.js +0 -0
  115. /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
- /** Date used to determine if disabling is required. */
12
+ /**
13
+ * Date used to determine if disabling is required.
14
+ */
13
15
  date: Date,
14
- /** Date selected. */
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, target?: DATERANGE_DISABLED_TARGET) => 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], 1)
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], -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], 1)];
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, 1)];
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
- /** The name of form-control */
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 _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
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) ? formValue === null || formValue === void 0 ? void 0 : formValue[name] : 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, _extends3.default)({}, formValue, (_extends2 = {}, _extends2[name] = value, _extends2));
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, _extends3.default)({
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 listRef = (0, _react.useRef)(null);
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 = (0, _react.useCallback)(function () {
153
+ var cloneValue = function cloneValue() {
152
154
  return multi ? (0, _clone.default)(value) || [] : value;
153
- }, [multi, value]);
154
- var handleClose = (0, _react.useCallback)(function () {
155
- var _triggerRef$current, _targetRef$current, _targetRef$current$fo;
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
- (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$fo = _targetRef$current.focus) === null || _targetRef$current$fo === void 0 ? void 0 : _targetRef$current$fo.call(_targetRef$current);
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 overlayRef.current;
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, _react.useCallback)(function (searchKeyword, filteredData, event) {
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
- }, [disabledOptions, setFocusItemValue, valueKey, onSearch]);
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 = (0, _react.useCallback)(function () {
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
- }, [inputRef, multi]);
231
- var focusInput = (0, _react.useCallback)(function () {
234
+ };
235
+ var focusInput = function focusInput() {
232
236
  var _getInput;
233
237
  return (_getInput = getInput()) === null || _getInput === void 0 ? void 0 : _getInput.focus();
234
- }, [getInput]);
235
- var blurInput = (0, _react.useCallback)(function () {
238
+ };
239
+ var blurInput = function blurInput() {
236
240
  var _getInput2;
237
241
  return (_getInput2 = getInput()) === null || _getInput2 === void 0 ? void 0 : _getInput2.blur();
238
- }, [getInput]);
242
+ };
239
243
 
240
244
  /**
241
245
  * Convert the string of the newly created option into an object.
242
246
  */
243
- var createOption = (0, _react.useCallback)(function (value) {
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
- }, [groupBy, valueKey, labelKey, locale]);
255
- var handleChange = (0, _react.useCallback)(function (value, event) {
258
+ };
259
+ var handleChange = (0, _utils.useEventCallback)(function (value, event) {
256
260
  onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
257
- }, [onChange]);
258
- var handleRemoveItemByTag = (0, _react.useCallback)(function (tag, event) {
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
- }, [cloneValue, setValue, handleChange, onTagRemove]);
268
- var handleSelect = (0, _react.useCallback)(function (value, item, event) {
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
- }, [creatable, newData, onSelect, onCreate]);
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 handleSelectItem(value, item, event) {
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 handleCheckTag(nextItemValue, item, event, checked) {
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, _react.useCallback)(function (event) {
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
- }, [cloneValue, getAllData, focusItemValue, disabledItemValues, disabledOptions, setValue, resetSearch, handleSelect, handleChange, valueKey, createOption]);
352
- var handleMenuItemKeyPress = (0, _react.useCallback)(function (event) {
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, _react.useCallback)(function (event) {
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
- }, [setValue, focusInput, handleChange, cloneValue]);
407
- var handleClean = (0, _react.useCallback)(function (event) {
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
- }, [disabled, searchKeyword, setValue, setFocusItemValue, resetSearch, multi, onClean, handleChange]);
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, _react.useCallback)(function (event) {
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
- }, [handleTagKeyPress, trigger]);
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
- triggerRef: triggerRef,
452
- targetRef: targetRef,
453
- overlayRef: overlayRef
449
+ trigger: triggerRef,
450
+ target: target,
451
+ overlay: overlay
454
452
  }, events, rest));
455
- var handleExited = (0, _react.useCallback)(function () {
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
- }, [setFocusItemValue, resetSearch, onClose, value, multi]);
460
- var handleFocus = (0, _react.useCallback)(function () {
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
- }, [readOnly]);
467
- var handleEnter = (0, _react.useCallback)(function () {
464
+ });
465
+ var handleEnter = (0, _utils.useEventCallback)(function () {
468
466
  focusInput();
469
467
  setOpen(true);
470
- }, [focusInput]);
471
- var handleExit = (0, _react.useCallback)(function () {
468
+ });
469
+ var handleExit = (0, _utils.useEventCallback)(function () {
472
470
  blurInput();
473
471
  setOpen(false);
474
- }, [blurInput]);
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)(overlayRef, speakerRef)
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: 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)(overlayRef, speakerRef),
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: targetRef
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: targetRef,
666
+ ref: target,
668
667
  as: toggleAs,
669
668
  tabIndex: tabIndex,
670
669
  onClean: handleClean,