rsuite 5.45.0 → 5.46.1

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 (60) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/DatePicker/styles/index.less +15 -0
  3. package/cjs/Calendar/MonthDropdown.js +1 -2
  4. package/cjs/Calendar/MonthDropdownItem.js +26 -13
  5. package/cjs/Calendar/Table.js +2 -1
  6. package/cjs/Calendar/TableCell.d.ts +14 -0
  7. package/cjs/Calendar/TableCell.js +72 -0
  8. package/cjs/Calendar/TableHeaderRow.js +3 -1
  9. package/cjs/Calendar/TableRow.d.ts +1 -0
  10. package/cjs/Calendar/TableRow.js +31 -49
  11. package/cjs/Calendar/useCalendarDate.d.ts +1 -1
  12. package/cjs/Calendar/utils.d.ts +7 -0
  13. package/cjs/Calendar/utils.js +15 -0
  14. package/cjs/Cascader/Cascader.js +13 -3
  15. package/cjs/DatePicker/DatePicker.js +145 -38
  16. package/cjs/InputPicker/InputPicker.js +7 -4
  17. package/cjs/Picker/PickerToggle.js +3 -0
  18. package/cjs/Picker/utils.js +21 -12
  19. package/cjs/RangeSlider/RangeSlider.js +14 -6
  20. package/cjs/Slider/Slider.js +7 -3
  21. package/cjs/Table/Table.d.ts +7 -7
  22. package/dist/rsuite-no-reset-rtl.css +110 -62
  23. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  24. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  25. package/dist/rsuite-no-reset.css +110 -62
  26. package/dist/rsuite-no-reset.min.css +1 -1
  27. package/dist/rsuite-no-reset.min.css.map +1 -1
  28. package/dist/rsuite-rtl.css +110 -62
  29. package/dist/rsuite-rtl.min.css +1 -1
  30. package/dist/rsuite-rtl.min.css.map +1 -1
  31. package/dist/rsuite.css +110 -62
  32. package/dist/rsuite.js +60 -17
  33. package/dist/rsuite.js.map +1 -1
  34. package/dist/rsuite.min.css +1 -1
  35. package/dist/rsuite.min.css.map +1 -1
  36. package/dist/rsuite.min.js +1 -1
  37. package/dist/rsuite.min.js.map +1 -1
  38. package/esm/Calendar/MonthDropdown.js +1 -2
  39. package/esm/Calendar/MonthDropdownItem.js +28 -15
  40. package/esm/Calendar/Table.js +2 -1
  41. package/esm/Calendar/TableCell.d.ts +14 -0
  42. package/esm/Calendar/TableCell.js +66 -0
  43. package/esm/Calendar/TableHeaderRow.js +3 -1
  44. package/esm/Calendar/TableRow.d.ts +1 -0
  45. package/esm/Calendar/TableRow.js +32 -50
  46. package/esm/Calendar/useCalendarDate.d.ts +1 -1
  47. package/esm/Calendar/utils.d.ts +7 -0
  48. package/esm/Calendar/utils.js +12 -0
  49. package/esm/Cascader/Cascader.js +13 -3
  50. package/esm/DatePicker/DatePicker.js +147 -40
  51. package/esm/InputPicker/InputPicker.js +7 -4
  52. package/esm/Picker/PickerToggle.js +3 -0
  53. package/esm/Picker/utils.js +21 -12
  54. package/esm/RangeSlider/RangeSlider.js +14 -6
  55. package/esm/Slider/Slider.js +7 -3
  56. package/esm/Table/Table.d.ts +7 -7
  57. package/package.json +2 -2
  58. package/styles/color-modes/dark.less +1 -41
  59. package/styles/color-modes/high-contrast.less +1 -36
  60. package/styles/color-modes/light.less +0 -46
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
13
13
  var _pick = _interopRequireDefault(require("lodash/pick"));
14
14
  var _omit = _interopRequireDefault(require("lodash/omit"));
15
+ var _delay = _interopRequireDefault(require("lodash/delay"));
15
16
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
16
17
  var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"));
17
18
  var _ClockO = _interopRequireDefault(require("@rsuite/icons/legacy/ClockO"));
@@ -22,9 +23,11 @@ var _Toolbar = _interopRequireDefault(require("./Toolbar"));
22
23
  var _Stack = _interopRequireDefault(require("../Stack"));
23
24
  var _PredefinedRanges = _interopRequireDefault(require("./PredefinedRanges"));
24
25
  var _utils = require("../utils");
26
+ var _dateUtils = require("../utils/dateUtils");
25
27
  var _Picker = require("../Picker");
26
28
  var _OverlayTrigger = require("../Overlay/OverlayTrigger");
27
29
  var _deprecatePropType = require("../utils/deprecatePropType");
30
+ var _utils2 = require("../Calendar/utils");
28
31
  var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
29
32
  var _props$as = props.as,
30
33
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -98,12 +101,17 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
98
101
  calendarDate = _useCalendarDate.calendarDate,
99
102
  setCalendarDate = _useCalendarDate.setCalendarDate,
100
103
  resetCalendarDate = _useCalendarDate.resetCalendarDate;
101
- var _useState = (0, _react.useState)(),
102
- inputState = _useState[0],
103
- setInputState = _useState[1];
104
- var _useState2 = (0, _react.useState)(false),
105
- active = _useState2[0],
106
- setActive = _useState2[1];
104
+ var _useState = (0, _react.useState)(false),
105
+ showMonthDropdown = _useState[0],
106
+ setShowMonthDropdown = _useState[1]; // Show only the calendar month panel. formatStr = 'yyyy-MM'
107
+ var onlyShowMonth = (0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr);
108
+ var showMonth = onlyShowMonth || showMonthDropdown;
109
+ var _useState2 = (0, _react.useState)(),
110
+ inputState = _useState2[0],
111
+ setInputState = _useState2[1];
112
+ var _useState3 = (0, _react.useState)(false),
113
+ active = _useState3[0],
114
+ setActive = _useState3[1];
107
115
  var triggerRef = (0, _react.useRef)(null);
108
116
  var rootRef = (0, _react.useRef)(null);
109
117
  var targetRef = (0, _react.useRef)(null);
@@ -157,9 +165,9 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
157
165
  * The callback triggered when PM/AM is switched.
158
166
  */
159
167
  var handleToggleMeridian = (0, _react.useCallback)(function () {
160
- var hours = _utils.DateUtils.getHours(calendarDate);
168
+ var hours = (0, _dateUtils.getHours)(calendarDate);
161
169
  var nextHours = hours >= 12 ? hours - 12 : hours + 12;
162
- var nextDate = _utils.DateUtils.setHours(calendarDate, nextHours);
170
+ var nextDate = (0, _dateUtils.setHours)(calendarDate, nextHours);
163
171
  handleChangeTime(nextDate);
164
172
  }, [calendarDate, handleChangeTime]);
165
173
  var updateValue = (0, _react.useCallback)(function (event, nextPageDate, closeOverlay) {
@@ -189,13 +197,57 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
189
197
  onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, event);
190
198
  }, [handleDateChange, onShortcutClick, updateValue]);
191
199
 
200
+ /**
201
+ * Get the corresponding container based on date selection and month selection
202
+ */
203
+ var getOverlayContainer = (0, _react.useCallback)(function () {
204
+ var _overlayRef$current;
205
+ return (_overlayRef$current = overlayRef.current) === null || _overlayRef$current === void 0 ? void 0 : _overlayRef$current.querySelector(showMonth ? '[role="menu"]' : '[role="grid"]');
206
+ }, [showMonth]);
207
+
208
+ /**
209
+ * Check whether the date is focusable
210
+ */
211
+ var checkFocusable = (0, _react.useCallback)(function (date) {
212
+ var formatStr = showMonth ? locale.formattedMonthPattern : locale.formattedDayPattern;
213
+ var ariaLabel = (0, _utils2.getAriaLabel)(date, formatStr, formatDate);
214
+ var container = getOverlayContainer();
215
+ var dateElement = container.querySelector("[aria-label=\"" + ariaLabel + "\"]");
216
+ if (dateElement !== null && dateElement !== void 0 && dateElement.hasAttribute('aria-disabled')) {
217
+ return false;
218
+ }
219
+ return true;
220
+ }, [formatDate, getOverlayContainer, locale, showMonth]);
221
+
222
+ /**
223
+ * Focus on the currently selected date element
224
+ */
225
+ var focusSelectedDate = (0, _react.useCallback)(function () {
226
+ (0, _delay.default)(function () {
227
+ var container = getOverlayContainer();
228
+ var selectedElement = container === null || container === void 0 ? void 0 : container.querySelector('[aria-selected="true"]');
229
+ selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.focus();
230
+ }, 1);
231
+ }, [getOverlayContainer]);
232
+
233
+ /**
234
+ * Focus on the input element
235
+ */
236
+ var focusTargetButton = (0, _react.useCallback)(function () {
237
+ (0, _delay.default)(function () {
238
+ var _targetRef$current, _targetRef$current$qu;
239
+ (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$qu = _targetRef$current.querySelector('input')) === null || _targetRef$current$qu === void 0 ? void 0 : _targetRef$current$qu.focus();
240
+ }, 100);
241
+ }, []);
242
+
192
243
  /**
193
244
  * The callback triggered after clicking the OK button.
194
245
  */
195
246
  var handleOK = (0, _react.useCallback)(function (event) {
196
247
  updateValue(event);
197
248
  onOk === null || onOk === void 0 ? void 0 : onOk(calendarDate, event);
198
- }, [updateValue, onOk, calendarDate]);
249
+ focusTargetButton();
250
+ }, [updateValue, onOk, calendarDate, focusTargetButton]);
199
251
 
200
252
  /**
201
253
  * Callback after clicking the clear button.
@@ -204,6 +256,54 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
204
256
  updateValue(event, null);
205
257
  resetCalendarDate(null);
206
258
  }, [resetCalendarDate, updateValue]);
259
+ var handlePickerToggleKeyDown = (0, _react.useCallback)(function (event) {
260
+ var _event$target;
261
+ var tagName = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName;
262
+ if (tagName === 'INPUT') {
263
+ if (event.key === 'ArrowDown') {
264
+ event.preventDefault();
265
+ focusSelectedDate();
266
+ } else if (event.key === 'Enter') {
267
+ var _triggerRef$current2, _triggerRef$current2$;
268
+ (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.open) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);
269
+ }
270
+ }
271
+ }, [focusSelectedDate]);
272
+ var handlePickerOverlayKeyDown = (0, _react.useCallback)(function (event) {
273
+ var delta = 0;
274
+ var step = showMonth ? 6 : 7;
275
+ var changeDateFunc = showMonth ? _dateUtils.addMonths : _dateUtils.addDays;
276
+ (0, _Picker.onMenuKeyDown)(event, {
277
+ down: function down() {
278
+ delta = step;
279
+ },
280
+ up: function up() {
281
+ delta = -step;
282
+ },
283
+ right: function right() {
284
+ delta = 1;
285
+ },
286
+ left: function left() {
287
+ delta = -1;
288
+ },
289
+ enter: function enter() {
290
+ handleOK(event);
291
+ }
292
+ });
293
+ var nextDate = changeDateFunc(calendarDate, delta);
294
+ if (checkFocusable(nextDate)) {
295
+ setCalendarDate(nextDate);
296
+ focusSelectedDate();
297
+ }
298
+ }, [showMonth, calendarDate, checkFocusable, handleOK, setCalendarDate, focusSelectedDate]);
299
+
300
+ /**
301
+ * The callback triggered after the month selection box is opened or closed.
302
+ */
303
+ var handleToggleMonthDropdown = (0, _react.useCallback)(function (toggle) {
304
+ onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(toggle);
305
+ setShowMonthDropdown(toggle);
306
+ }, [onToggleMonthDropdown]);
207
307
 
208
308
  /**
209
309
  * Handle keyboard events.
@@ -211,8 +311,10 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
211
311
  var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
212
312
  triggerRef: triggerRef,
213
313
  targetRef: targetRef,
314
+ overlayRef: overlayRef,
214
315
  active: active,
215
- onExit: handleClean
316
+ onExit: handleClean,
317
+ onKeyDown: handlePickerToggleKeyDown
216
318
  }, rest));
217
319
 
218
320
  /**
@@ -224,18 +326,18 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
224
326
  }
225
327
  setCalendarDate(
226
328
  // Determine whether the current value contains time, if not, use calendarDate.
227
- _utils.DateUtils.shouldRenderTime(formatStr) ? nextValue : (0, _utils.composeFunctions)(function (d) {
228
- return _utils.DateUtils.setHours(d, _utils.DateUtils.getHours(calendarDate));
329
+ (0, _dateUtils.shouldRenderTime)(formatStr) ? nextValue : (0, _utils.composeFunctions)(function (d) {
330
+ return (0, _dateUtils.setHours)(d, (0, _dateUtils.getHours)(calendarDate));
229
331
  }, function (d) {
230
- return _utils.DateUtils.setMinutes(d, _utils.DateUtils.getMinutes(calendarDate));
332
+ return (0, _dateUtils.setMinutes)(d, (0, _dateUtils.getMinutes)(calendarDate));
231
333
  }, function (d) {
232
- return _utils.DateUtils.setSeconds(d, _utils.DateUtils.getSeconds(calendarDate));
334
+ return (0, _dateUtils.setSeconds)(d, (0, _dateUtils.getSeconds)(calendarDate));
233
335
  })(nextValue));
234
336
  handleDateChange(nextValue);
235
337
  if (oneTap && updatableValue) {
236
338
  updateValue(event, nextValue);
237
339
  }
238
- }, [formatStr, handleDateChange, oneTap, calendarDate, setCalendarDate, updateValue]);
340
+ }, [setCalendarDate, formatStr, handleDateChange, oneTap, calendarDate, updateValue]);
239
341
 
240
342
  /**
241
343
  * A callback triggered when the date on the calendar changes.
@@ -243,13 +345,11 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
243
345
  var handleChangeMonth = (0, _react.useCallback)(function (nextPageDate, event) {
244
346
  setCalendarDate(nextPageDate);
245
347
  handleDateChange(nextPageDate);
246
-
247
- // Show only the calendar month panel. formatStr = 'yyyy-MM'
248
- var onlyShowMonth = _utils.DateUtils.shouldRenderMonth(formatStr) && !_utils.DateUtils.shouldRenderDate(formatStr);
348
+ focusSelectedDate();
249
349
  if (oneTap && onlyShowMonth) {
250
350
  updateValue(event, nextPageDate);
251
351
  }
252
- }, [formatStr, handleDateChange, oneTap, setCalendarDate, updateValue]);
352
+ }, [focusSelectedDate, handleDateChange, oneTap, onlyShowMonth, setCalendarDate, updateValue]);
253
353
  var isDateDisabled = (0, _react.useCallback)(function (date) {
254
354
  if (typeof shouldDisableDate === 'function') {
255
355
  return shouldDisableDate(date);
@@ -268,7 +368,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
268
368
 
269
369
  // isMatch('01/11/2020', 'MM/dd/yyyy') ==> true
270
370
  // isMatch('2020-11-01', 'MM/dd/yyyy') ==> false
271
- if (!_utils.DateUtils.isMatch(value, formatStr, {
371
+ if (!(0, _dateUtils.isMatch)(value, formatStr, {
272
372
  locale: locale.dateLocale
273
373
  })) {
274
374
  setInputState('Error');
@@ -277,10 +377,10 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
277
377
  var date = parseDate(value, formatStr);
278
378
 
279
379
  // If only the time is included in the characters, it will default to today.
280
- if (_utils.DateUtils.shouldOnlyRenderTime(formatStr)) {
281
- date = new Date(_utils.DateUtils.format(new Date(), 'yyyy-MM-dd') + " " + value);
380
+ if ((0, _dateUtils.shouldOnlyRenderTime)(formatStr)) {
381
+ date = new Date((0, _dateUtils.format)(new Date(), 'yyyy-MM-dd') + " " + value);
282
382
  }
283
- if (!_utils.DateUtils.isValid(date)) {
383
+ if (!(0, _dateUtils.isValid)(date)) {
284
384
  setInputState('Error');
285
385
  return;
286
386
  }
@@ -321,7 +421,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
321
421
  var disabledToolbarHandle = (0, _react.useCallback)(function (date) {
322
422
  var _DEPRECATED_disabledD;
323
423
  var allowDate = (_DEPRECATED_disabledD = DEPRECATED_disabledDate === null || DEPRECATED_disabledDate === void 0 ? void 0 : DEPRECATED_disabledDate(date)) !== null && _DEPRECATED_disabledD !== void 0 ? _DEPRECATED_disabledD : false;
324
- var allowTime = _utils.DateUtils.disabledTime(props, date);
424
+ var allowTime = (0, _dateUtils.disabledTime)(props, date);
325
425
  return allowDate || allowTime;
326
426
  }, [DEPRECATED_disabledDate, props]);
327
427
 
@@ -332,13 +432,13 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
332
432
  * - If format is month, disable ok button if all dates in the month of selected date are disabled
333
433
  */
334
434
  var isOKButtonDisabled = (0, _react.useCallback)(function (selectedDate) {
335
- if (_utils.DateUtils.shouldRenderMonth(formatStr) && !_utils.DateUtils.shouldRenderDate(formatStr)) {
435
+ if ((0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr)) {
336
436
  return (0, _MonthDropdown.isEveryDateInMonth)(selectedDate.getFullYear(), selectedDate.getMonth(), disabledToolbarHandle);
337
437
  }
338
438
  return disabledToolbarHandle(selectedDate);
339
439
  }, [disabledToolbarHandle, formatStr]);
340
440
  var calendarProps = (0, _react.useMemo)(function () {
341
- return (0, _mapValues.default)((0, _pick.default)(props, _utils.DateUtils.calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
441
+ return (0, _mapValues.default)((0, _pick.default)(props, _dateUtils.calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
342
442
  return function (next, date) {
343
443
  var _disabledOrHiddenTime;
344
444
  return (_disabledOrHiddenTime = disabledOrHiddenTimeFunc === null || disabledOrHiddenTimeFunc === void 0 ? void 0 : disabledOrHiddenTimeFunc(next, date)) !== null && _disabledOrHiddenTime !== void 0 ? _disabledOrHiddenTime : false;
@@ -361,15 +461,19 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
361
461
  onMoveForward: handleMoveForward,
362
462
  onMoveBackward: handleMoveBackward,
363
463
  onSelect: handleSelect,
364
- onToggleMonthDropdown: onToggleMonthDropdown,
464
+ onToggleMonthDropdown: handleToggleMonthDropdown,
365
465
  onToggleTimeDropdown: onToggleTimeDropdown,
366
466
  onChangeMonth: handleChangeMonth,
367
467
  onChangeTime: handleChangeTime,
368
468
  onToggleMeridian: handleToggleMeridian
369
469
  }));
470
+
471
+ // The shortcut option on the left side of the calendar panel
370
472
  var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
371
473
  return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
372
474
  })) || [];
475
+
476
+ // The shortcut option on the bottom of the calendar panel
373
477
  var bottomRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
374
478
  return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
375
479
  })) || [];
@@ -387,7 +491,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
387
491
  className: classes,
388
492
  ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
389
493
  style: styles,
390
- target: triggerRef
494
+ target: triggerRef,
495
+ onKeyDown: handlePickerOverlayKeyDown
391
496
  }, /*#__PURE__*/_react.default.createElement(_Stack.default, {
392
497
  alignItems: "flex-start"
393
498
  }, sideRanges.length > 0 && /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
@@ -428,20 +533,22 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
428
533
  return (_renderValue = renderValue === null || renderValue === void 0 ? void 0 : renderValue(value, formatStr)) !== null && _renderValue !== void 0 ? _renderValue : formatDate(value, formatStr);
429
534
  }, [formatStr, formatDate, placeholder, renderValue, value]);
430
535
  var caretAs = (0, _react.useMemo)(function () {
431
- return caretAsProp || (_utils.DateUtils.shouldOnlyRenderTime(formatStr) ? _ClockO.default : _Calendar.default);
536
+ return caretAsProp || ((0, _dateUtils.shouldOnlyRenderTime)(formatStr) ? _ClockO.default : _Calendar.default);
432
537
  }, [caretAsProp, formatStr]);
538
+ var handleTriggerClose = (0, _react.useCallback)(function (cause) {
539
+ // Unless overlay is closing on user clicking "OK" button,
540
+ // reset the selected date on calendar panel
541
+ if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
542
+ resetCalendarDate();
543
+ }
544
+ setShowMonthDropdown(false);
545
+ }, [resetCalendarDate]);
433
546
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
434
547
  trigger: "active",
435
548
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
436
549
  ref: triggerRef,
437
550
  placement: placement,
438
- onClose: function onClose(cause) {
439
- // Unless overlay is closing on user clicking "OK" button,
440
- // reset the selected date on calendar panel
441
- if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
442
- resetCalendarDate();
443
- }
444
- },
551
+ onClose: handleTriggerClose,
445
552
  onEntered: (0, _utils.createChainedFunction)(handleEntered, onEntered),
446
553
  onExited: (0, _utils.createChainedFunction)(handleExited, onExited),
447
554
  speaker: renderDropdownMenu
@@ -449,7 +556,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
449
556
  className: merge(className, classes),
450
557
  style: style,
451
558
  ref: rootRef
452
- }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _utils.DateUtils.calendarOnlyProps)), {
559
+ }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _dateUtils.calendarOnlyProps)), {
453
560
  className: prefix({
454
561
  error: inputState === 'Error'
455
562
  }),
@@ -459,7 +566,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
459
566
  editable: editable,
460
567
  inputValue: value ? formatDate(value, formatStr) : '',
461
568
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : formatStr,
462
- inputMask: _utils.DateUtils.getDateMask(formatStr),
569
+ inputMask: (0, _dateUtils.getDateMask)(formatStr),
463
570
  onInputChange: handleInputChange,
464
571
  onInputBlur: handleInputPressEnd,
465
572
  onInputPressEnter: handleInputPressEnd,
@@ -150,9 +150,12 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
150
150
  return multi ? (0, _clone.default)(value) || [] : value;
151
151
  }, [multi, value]);
152
152
  var handleClose = (0, _react.useCallback)(function () {
153
- var _triggerRef$current;
153
+ var _triggerRef$current, _targetRef$current, _targetRef$current$fo;
154
154
  triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
155
- }, [triggerRef]);
155
+
156
+ // The focus is on the trigger button after closing
157
+ (_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);
158
+ }, []);
156
159
 
157
160
  // Used to hover the focuse item when trigger `onKeydown`
158
161
  var _useFocusItemValue = (0, _Picker.useFocusItemValue)(multi ? value === null || value === void 0 ? void 0 : value[0] : value, {
@@ -658,7 +661,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
658
661
  plaintext: plaintext,
659
662
  ref: targetRef,
660
663
  as: toggleAs,
661
- tabIndex: undefined,
664
+ tabIndex: tabIndex,
662
665
  onClean: handleClean,
663
666
  cleanable: cleanable && !disabled,
664
667
  hasValue: hasValue,
@@ -670,7 +673,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
670
673
  }), searching || multi && hasValue ? null : itemNode || placeholderNode), !(!multi && disabled) && /*#__PURE__*/_react.default.createElement("div", {
671
674
  className: prefix(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["tag-wrapper"])))
672
675
  }, tagElements, displaySearchInput && /*#__PURE__*/_react.default.createElement(_InputSearch.default, (0, _extends2.default)({}, inputProps, {
673
- tabIndex: tabIndex,
676
+ tabIndex: -1,
674
677
  readOnly: readOnly,
675
678
  onBlur: onBlur,
676
679
  onFocus: (0, _utils.createChainedFunction)(handleFocus, onFocus),
@@ -148,6 +148,8 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
148
148
  }, [editable, onInputPressEnter, onInputBackspace]);
149
149
  var renderInput = (0, _react.useCallback)(function (ref, props) {
150
150
  return /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({
151
+ type: "text",
152
+ autoComplete: "off",
151
153
  ref: (0, _utils.mergeRefs)(inputRef, ref),
152
154
  name: name,
153
155
  style: {
@@ -197,6 +199,7 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
197
199
  },
198
200
  "data-testid": "spinner"
199
201
  }) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_TextMask.default, {
202
+ keepCharPositions: true,
200
203
  mask: inputMask,
201
204
  value: Array.isArray(inputValue) ? inputValue.toString() : inputValue,
202
205
  onBlur: handleInputBlur,
@@ -194,6 +194,12 @@ var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props)
194
194
  var _useState3 = (0, _react.useState)([]),
195
195
  keys = _useState3[0],
196
196
  setKeys = _useState3[1];
197
+ var focusCallback = (0, _react.useCallback)(function (value, event) {
198
+ var menu = (0, _isFunction.default)(target) ? target() : target;
199
+ var focusElement = menu === null || menu === void 0 ? void 0 : menu.querySelector("[data-key=\"" + value + "\"]");
200
+ focusElement === null || focusElement === void 0 ? void 0 : focusElement.focus();
201
+ callback === null || callback === void 0 ? void 0 : callback(value, event);
202
+ }, [callback, target]);
197
203
  var getScrollContainer = (0, _react.useCallback)(function () {
198
204
  var menu = (0, _isFunction.default)(target) ? target() : target;
199
205
 
@@ -279,11 +285,11 @@ var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props)
279
285
  var focusItem = items[nextIndex];
280
286
  if (!(0, _isUndefined.default)(focusItem)) {
281
287
  setFocusItemValue(focusItem[valueKey]);
282
- callback === null || callback === void 0 ? void 0 : callback(focusItem[valueKey], event);
288
+ focusCallback(focusItem[valueKey], event);
283
289
  scrollListItem('bottom', focusItem[valueKey], willOverflow);
284
290
  }
285
291
  });
286
- }, [callback, findFocusItemIndex, scrollListItem, valueKey]);
292
+ }, [focusCallback, findFocusItemIndex, scrollListItem, valueKey]);
287
293
  var focusPrevMenuItem = (0, _react.useCallback)(function (event) {
288
294
  findFocusItemIndex(function (items, index) {
289
295
  var willOverflow = index === 0;
@@ -291,11 +297,11 @@ var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props)
291
297
  var focusItem = items[nextIndex];
292
298
  if (!(0, _isUndefined.default)(focusItem)) {
293
299
  setFocusItemValue(focusItem[valueKey]);
294
- callback === null || callback === void 0 ? void 0 : callback(focusItem[valueKey], event);
300
+ focusCallback(focusItem[valueKey], event);
295
301
  scrollListItem('top', focusItem[valueKey], willOverflow);
296
302
  }
297
303
  });
298
- }, [callback, findFocusItemIndex, scrollListItem, valueKey]);
304
+ }, [focusCallback, findFocusItemIndex, scrollListItem, valueKey]);
299
305
  var getSubMenuKeys = (0, _react.useCallback)(function (nextLayer) {
300
306
  var menu = (0, _isFunction.default)(target) ? target() : target;
301
307
  var subMenu = menu === null || menu === void 0 ? void 0 : menu.querySelector("[data-layer=\"" + nextLayer + "\"]");
@@ -315,9 +321,9 @@ var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props)
315
321
  setKeys(nextKeys);
316
322
  setLayer(nextLayer);
317
323
  setFocusItemValue(nextKeys[0]);
318
- callback === null || callback === void 0 ? void 0 : callback(nextKeys[0], event);
324
+ focusCallback(nextKeys[0], event);
319
325
  }
320
- }, [callback, getSubMenuKeys, layer]);
326
+ }, [focusCallback, getSubMenuKeys, layer]);
321
327
  var focusPrevLevelMenu = (0, _react.useCallback)(function (event) {
322
328
  var nextLayer = layer - 1;
323
329
  var nextKeys = getSubMenuKeys(nextLayer);
@@ -331,10 +337,10 @@ var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue, props)
331
337
  var parentItemValue = (_getParent = getParent(focusItem)) === null || _getParent === void 0 ? void 0 : _getParent[valueKey];
332
338
  if (parentItemValue) {
333
339
  setFocusItemValue(parentItemValue);
334
- callback === null || callback === void 0 ? void 0 : callback(parentItemValue, event);
340
+ focusCallback(parentItemValue, event);
335
341
  }
336
342
  }
337
- }, [callback, data, focusItemValue, getParent, getSubMenuKeys, layer, valueKey]);
343
+ }, [focusCallback, data, focusItemValue, getParent, getSubMenuKeys, layer, valueKey]);
338
344
  var handleKeyDown = (0, _react.useCallback)(function (event) {
339
345
  var _onMenuKeyDown;
340
346
  onMenuKeyDown(event, (_onMenuKeyDown = {
@@ -376,10 +382,13 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
376
382
  onMenuPressEnter = props.onMenuPressEnter,
377
383
  onMenuPressBackspace = props.onMenuPressBackspace;
378
384
  var handleClose = (0, _react.useCallback)(function () {
379
- var _triggerRef$current, _triggerRef$current$c;
385
+ var _triggerRef$current, _triggerRef$current$c, _targetRef$current, _targetRef$current$fo;
380
386
  (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$c = _triggerRef$current.close) === null || _triggerRef$current$c === void 0 ? void 0 : _triggerRef$current$c.call(_triggerRef$current);
387
+
388
+ // The focus is on the trigger button after closing
389
+ (_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);
381
390
  onClose === null || onClose === void 0 ? void 0 : onClose();
382
- }, [onClose, triggerRef]);
391
+ }, [onClose, targetRef, triggerRef]);
383
392
  var handleOpen = (0, _react.useCallback)(function () {
384
393
  var _triggerRef$current2, _triggerRef$current2$;
385
394
  (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.open) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);
@@ -541,8 +550,8 @@ function usePublicMethods(ref, parmas) {
541
550
  return (_overlayRef$current = overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) !== null && _overlayRef$current !== void 0 ? _overlayRef$current : null;
542
551
  },
543
552
  get target() {
544
- var _targetRef$current;
545
- return (_targetRef$current = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) !== null && _targetRef$current !== void 0 ? _targetRef$current : null;
553
+ var _targetRef$current2;
554
+ return (_targetRef$current2 = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) !== null && _targetRef$current2 !== void 0 ? _targetRef$current2 : null;
546
555
  },
547
556
  get list() {
548
557
  if (!(listRef !== null && listRef !== void 0 && listRef.current)) {
@@ -36,6 +36,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
36
  progress = _props$progress === void 0 ? true : _props$progress,
37
37
  vertical = props.vertical,
38
38
  disabled = props.disabled,
39
+ readOnly = props.readOnly,
39
40
  _props$classPrefix = props.classPrefix,
40
41
  classPrefix = _props$classPrefix === void 0 ? 'slider' : _props$classPrefix,
41
42
  _props$min = props.min,
@@ -55,7 +56,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
55
56
  renderMark = props.renderMark,
56
57
  onChange = props.onChange,
57
58
  onChangeCommitted = props.onChangeCommitted,
58
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "constraint", "defaultValue", "graduated", "progress", "vertical", "disabled", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
59
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "constraint", "defaultValue", "graduated", "progress", "vertical", "disabled", "readOnly", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
59
60
  var barRef = (0, _react.useRef)(null);
60
61
 
61
62
  // Define the parameter position of the handle
@@ -168,6 +169,9 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
168
169
  * Callback function that is fired when the mousemove is triggered
169
170
  */
170
171
  var handleDragMove = (0, _utils.useEventCallback)(function (event, dataset) {
172
+ if (disabled || readOnly) {
173
+ return;
174
+ }
171
175
  var nextValue = getNextValue(event, dataset);
172
176
  if (isRangeMatchingConstraint(nextValue)) {
173
177
  setValue(nextValue);
@@ -179,12 +183,15 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
179
183
  * Callback function that is fired when the mouseup is triggered
180
184
  */
181
185
  var handleChangeCommitted = (0, _react.useCallback)(function (event, dataset) {
186
+ if (disabled || readOnly) {
187
+ return;
188
+ }
182
189
  var nextValue = getNextValue(event, dataset);
183
190
  if (isRangeMatchingConstraint(nextValue)) {
184
191
  setValue(nextValue);
185
192
  onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
186
193
  }
187
- }, [getNextValue, onChangeCommitted, isRangeMatchingConstraint, setValue]);
194
+ }, [disabled, readOnly, getNextValue, isRangeMatchingConstraint, setValue, onChangeCommitted]);
188
195
  var handleKeyDown = (0, _react.useCallback)(function (event) {
189
196
  var _event$target;
190
197
  var _event$target$dataset = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target['dataset'],
@@ -225,8 +232,8 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
225
232
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
226
233
  }
227
234
  }, [max, min, onChange, rtl, isRangeMatchingConstraint, setValue, step, value]);
228
- var handleClick = (0, _react.useCallback)(function (event) {
229
- if (disabled) {
235
+ var handleBarClick = (0, _react.useCallback)(function (event) {
236
+ if (disabled || readOnly) {
230
237
  return;
231
238
  }
232
239
  var start = value[0],
@@ -245,8 +252,9 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
245
252
  if (isRangeMatchingConstraint(nextValue)) {
246
253
  setValue(nextValue);
247
254
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
255
+ onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
248
256
  }
249
- }, [disabled, getValidValue, getValueByPosition, isRangeMatchingConstraint, onChange, setValue, value]);
257
+ }, [disabled, readOnly, getValidValue, getValueByPosition, isRangeMatchingConstraint, onChange, onChangeCommitted, setValue, value]);
250
258
  var handleProps = (0, _react.useMemo)(function () {
251
259
  return [{
252
260
  value: value[0],
@@ -287,7 +295,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
287
295
  }), /*#__PURE__*/_react.default.createElement("div", {
288
296
  className: merge(barClassName, prefix('bar')),
289
297
  ref: barRef,
290
- onClick: handleClick
298
+ onClick: handleBarClick
291
299
  }, progress && /*#__PURE__*/_react.default.createElement(_ProgressBar.default, {
292
300
  rtl: rtl,
293
301
  vertical: vertical,
@@ -90,9 +90,9 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
90
90
  var classes = merge(className, withClassPrefix({
91
91
  vertical: vertical,
92
92
  disabled: disabled,
93
- readOnly: readOnly,
94
93
  graduated: graduated,
95
- 'with-mark': renderMark
94
+ 'with-mark': renderMark,
95
+ readonly: readOnly
96
96
  }));
97
97
  var max = (0, _react.useMemo)(function () {
98
98
  return (0, _utils2.precisionMath)(Math.floor((maxProp - min) / step) * step + min);
@@ -166,6 +166,10 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
166
166
  var nextValue = getValidValue(getValueByPosition(event));
167
167
  onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
168
168
  }, [disabled, getValidValue, getValueByPosition, onChangeCommitted, readOnly]);
169
+ var handleClickBar = (0, _react.useCallback)(function (event) {
170
+ handleChangeValue(event);
171
+ handleChangeCommitted(event);
172
+ }, [handleChangeCommitted, handleChangeValue]);
169
173
  var handleKeyDown = (0, _react.useCallback)(function (event) {
170
174
  var nextValue;
171
175
  var increaseKey = rtl ? 'ArrowLeft' : 'ArrowRight';
@@ -207,7 +211,7 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
207
211
  }), /*#__PURE__*/_react.default.createElement("div", {
208
212
  ref: barRef,
209
213
  className: merge(barClassName, prefix('bar')),
210
- onClick: handleChangeValue
214
+ onClick: handleClickBar
211
215
  }, progress && /*#__PURE__*/_react.default.createElement(_ProgressBar.default, {
212
216
  rtl: rtl,
213
217
  vertical: vertical,
@@ -1,15 +1,15 @@
1
1
  import React from 'react';
2
- import { Column, TableProps, RowDataType, TableInstance, CellProps as TableCellProps } from 'rsuite-table';
3
- export interface CellProps<T = any> extends Omit<TableCellProps, 'rowData' | 'dataKey'> {
2
+ import { Column, TableProps, RowDataType, TableInstance, CellProps as TableCellProps, RowKeyType } from 'rsuite-table';
3
+ export interface CellProps<Row extends RowDataType> extends Omit<TableCellProps<Row>, 'rowData' | 'dataKey'> {
4
4
  /** Data binding key, but also a sort of key */
5
- dataKey?: string | keyof T;
5
+ dataKey?: string | keyof Row;
6
6
  /** Row Data */
7
- rowData?: T;
7
+ rowData?: Row;
8
8
  }
9
- declare const _default: (<Row extends RowDataType<never>, Key>(props: TableProps<Row, Key> & React.RefAttributes<TableInstance<Row, Key>>) => React.ReactElement<any, string | React.JSXElementConstructor<any>>) & {
10
- Cell: React.ForwardRefExoticComponent<import("rsuite-table/lib/Cell").InnerCellProps & React.RefAttributes<HTMLDivElement>>;
9
+ declare const _default: (<Row extends RowDataType<any>, Key extends RowKeyType>(props: TableProps<Row, Key> & React.RefAttributes<TableInstance<Row, Key>>) => React.ReactElement<any, string | React.JSXElementConstructor<any>>) & {
10
+ Cell: <Row_1 extends RowDataType<any>, Key_1 extends RowKeyType>(props: import("rsuite-table/lib/Cell").InnerCellProps<Row_1, Key_1> & React.RefAttributes<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
11
11
  Column: typeof Column;
12
- HeaderCell: React.ForwardRefExoticComponent<import("rsuite-table").HeaderCellProps & React.RefAttributes<HTMLDivElement>>;
12
+ HeaderCell: <Row_2 extends RowDataType<any>, Key_2 extends RowKeyType>(props: import("rsuite-table").HeaderCellProps<Row_2, Key_2> & React.RefAttributes<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
13
13
  ColumnGroup: React.ForwardRefExoticComponent<import("rsuite-table").ColumnGroupProps & React.RefAttributes<HTMLDivElement>>;
14
14
  };
15
15
  export default _default;