rsuite 5.43.0 → 5.45.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 (90) hide show
  1. package/Button/styles/index.less +1 -1
  2. package/CHANGELOG.md +24 -0
  3. package/Drawer/styles/index.less +1 -1
  4. package/Modal/styles/index.less +24 -2
  5. package/Picker/styles/index.less +0 -4
  6. package/cjs/Cascader/Cascader.d.ts +2 -2
  7. package/cjs/CheckPicker/CheckPicker.d.ts +1 -1
  8. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  9. package/cjs/CheckTreePicker/CheckTreePicker.js +2 -2
  10. package/cjs/DatePicker/DatePicker.d.ts +3 -1
  11. package/cjs/DatePicker/DatePicker.js +18 -5
  12. package/cjs/DatePicker/PredefinedRanges.d.ts +2 -2
  13. package/cjs/DatePicker/PredefinedRanges.js +8 -8
  14. package/cjs/DatePicker/Toolbar.js +4 -4
  15. package/cjs/DateRangePicker/DateRangePicker.d.ts +3 -1
  16. package/cjs/DateRangePicker/DateRangePicker.js +18 -5
  17. package/cjs/DateRangePicker/types.d.ts +2 -2
  18. package/cjs/Drawer/Drawer.d.ts +2 -0
  19. package/cjs/Drawer/Drawer.js +16 -5
  20. package/cjs/Drawer/DrawerContext.d.ts +9 -0
  21. package/cjs/Drawer/DrawerContext.js +10 -0
  22. package/cjs/FormControl/FormControl.js +1 -1
  23. package/cjs/InputPicker/InputPicker.d.ts +1 -1
  24. package/cjs/InputPicker/InputPicker.js +1 -1
  25. package/cjs/Modal/Modal.d.ts +2 -4
  26. package/cjs/Modal/Modal.js +24 -13
  27. package/cjs/Modal/ModalBody.js +14 -8
  28. package/cjs/Modal/ModalContext.d.ts +1 -3
  29. package/cjs/Modal/ModalHeader.js +9 -6
  30. package/cjs/Modal/index.d.ts +1 -0
  31. package/cjs/Modal/utils.d.ts +4 -1
  32. package/cjs/Modal/utils.js +9 -4
  33. package/cjs/MultiCascader/MultiCascader.d.ts +2 -2
  34. package/cjs/Picker/PickerToggle.d.ts +2 -0
  35. package/cjs/Picker/PickerToggle.js +10 -4
  36. package/cjs/Picker/utils.js +3 -2
  37. package/cjs/SelectPicker/SelectPicker.d.ts +1 -3
  38. package/cjs/TreePicker/TreePicker.d.ts +1 -1
  39. package/cjs/toaster/useToaster.js +22 -19
  40. package/dist/rsuite-no-reset-rtl.css +33 -7
  41. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  42. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  43. package/dist/rsuite-no-reset.css +33 -7
  44. package/dist/rsuite-no-reset.min.css +1 -1
  45. package/dist/rsuite-no-reset.min.css.map +1 -1
  46. package/dist/rsuite-rtl.css +33 -7
  47. package/dist/rsuite-rtl.min.css +1 -1
  48. package/dist/rsuite-rtl.min.css.map +1 -1
  49. package/dist/rsuite.css +33 -7
  50. package/dist/rsuite.js +45 -23
  51. package/dist/rsuite.js.map +1 -1
  52. package/dist/rsuite.min.css +1 -1
  53. package/dist/rsuite.min.css.map +1 -1
  54. package/dist/rsuite.min.js +1 -1
  55. package/dist/rsuite.min.js.map +1 -1
  56. package/esm/Cascader/Cascader.d.ts +2 -2
  57. package/esm/CheckPicker/CheckPicker.d.ts +1 -1
  58. package/esm/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  59. package/esm/CheckTreePicker/CheckTreePicker.js +2 -2
  60. package/esm/DatePicker/DatePicker.d.ts +3 -1
  61. package/esm/DatePicker/DatePicker.js +18 -5
  62. package/esm/DatePicker/PredefinedRanges.d.ts +2 -2
  63. package/esm/DatePicker/PredefinedRanges.js +8 -8
  64. package/esm/DatePicker/Toolbar.js +4 -4
  65. package/esm/DateRangePicker/DateRangePicker.d.ts +3 -1
  66. package/esm/DateRangePicker/DateRangePicker.js +18 -5
  67. package/esm/DateRangePicker/types.d.ts +2 -2
  68. package/esm/Drawer/Drawer.d.ts +2 -0
  69. package/esm/Drawer/Drawer.js +15 -5
  70. package/esm/Drawer/DrawerContext.d.ts +9 -0
  71. package/esm/Drawer/DrawerContext.js +4 -0
  72. package/esm/FormControl/FormControl.js +1 -1
  73. package/esm/InputPicker/InputPicker.d.ts +1 -1
  74. package/esm/InputPicker/InputPicker.js +1 -1
  75. package/esm/Modal/Modal.d.ts +2 -4
  76. package/esm/Modal/Modal.js +25 -14
  77. package/esm/Modal/ModalBody.js +14 -8
  78. package/esm/Modal/ModalContext.d.ts +1 -3
  79. package/esm/Modal/ModalHeader.js +9 -6
  80. package/esm/Modal/index.d.ts +1 -0
  81. package/esm/Modal/utils.d.ts +4 -1
  82. package/esm/Modal/utils.js +9 -4
  83. package/esm/MultiCascader/MultiCascader.d.ts +2 -2
  84. package/esm/Picker/PickerToggle.d.ts +2 -0
  85. package/esm/Picker/PickerToggle.js +10 -4
  86. package/esm/Picker/utils.js +3 -2
  87. package/esm/SelectPicker/SelectPicker.d.ts +1 -3
  88. package/esm/TreePicker/TreePicker.d.ts +1 -1
  89. package/esm/toaster/useToaster.js +22 -19
  90. package/package.json +2 -2
@@ -24,7 +24,7 @@
24
24
  text-decoration: none;
25
25
  color: var(--rs-btn-default-text);
26
26
  background-color: var(--rs-btn-default-bg);
27
- border-radius: @border-radius;
27
+ border-radius: @btn-border-radius;
28
28
 
29
29
  .high-contrast-mode({
30
30
  transition: none;
package/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ # [5.45.0](https://github.com/rsuite/rsuite/compare/v5.44.0...v5.45.0) (2023-11-17)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Button:** fix button radius using wrong less variable ([#3451](https://github.com/rsuite/rsuite/issues/3451)) ([037a2b3](https://github.com/rsuite/rsuite/commit/037a2b3fb2696a55390018958a3d84cd0dc38958))
6
+ - formControll will pass undefined as value when value is null defaultValue is undefined ([#3456](https://github.com/rsuite/rsuite/issues/3456)) ([cde5a88](https://github.com/rsuite/rsuite/commit/cde5a889036f1873115b8be2ac31a31b8ff28bd3))
7
+
8
+ ### Features
9
+
10
+ - **Drawer:** add support for closeButton ([#3450](https://github.com/rsuite/rsuite/issues/3450)) ([90f25d0](https://github.com/rsuite/rsuite/commit/90f25d09e131e606c9ebd6dca41c0047e02f7908))
11
+ - **Modal,Drawer:** size prop supports number and string values ([#3103](https://github.com/rsuite/rsuite/issues/3103)) ([39741b7](https://github.com/rsuite/rsuite/commit/39741b755460e29cb8cfefb32bf4056b14cbf985))
12
+
13
+ # [5.44.0](https://github.com/rsuite/rsuite/compare/5.43.0...5.44.0) (2023-11-10)
14
+
15
+ ### Bug Fixes
16
+
17
+ - **DatePicker,DateRangePicker:** fix inability to clear values via Backspace key ([#3446](https://github.com/rsuite/rsuite/issues/3446)) ([ca7dcdd](https://github.com/rsuite/rsuite/commit/ca7dcddb1406b8d6a20ff4ad11755fbac83be07e))
18
+ - **toaster:** fix useToaster not keep same reference when re-renders ([#3440](https://github.com/rsuite/rsuite/issues/3440)) ([a603033](https://github.com/rsuite/rsuite/commit/a603033eeb0a1de2299938c506fb42ee13375f2c))
19
+
20
+ ### Features
21
+
22
+ - add loading prop for all pickers ([#3444](https://github.com/rsuite/rsuite/issues/3444)) ([3c5b2af](https://github.com/rsuite/rsuite/commit/3c5b2af3658bb44c8eb22f1c59f8a9c989c7e62e))
23
+ - **DatePicker,DateRangePicker:** add support for onShortcutClick ([#3439](https://github.com/rsuite/rsuite/issues/3439)) ([ae00f90](https://github.com/rsuite/rsuite/commit/ae00f9045fd7dba95739f1f3fc8a21d671b6875b))
24
+
1
25
  # [5.43.0](https://github.com/rsuite/rsuite/compare/5.42.0...5.43.0) (2023-11-03)
2
26
 
3
27
  ### Bug Fixes
@@ -73,7 +73,7 @@
73
73
 
74
74
  // Full page
75
75
  &-full {
76
- @max-width: ~'calc(100% - @{drawer-full-size-margin})';
76
+ @max-width: 100%;
77
77
  @max-height: @max-width;
78
78
 
79
79
  &.rs-drawer-top,
@@ -72,8 +72,30 @@
72
72
  }
73
73
 
74
74
  &-full {
75
- @modal-full-size-margin-value: @modal-full-size-margin* 2;
76
- .content-width(~'calc(100% - @{modal-full-size-margin-value})');
75
+ margin: 0;
76
+ height: 100%;
77
+
78
+ .rs-modal-content {
79
+ position: absolute;
80
+ height: 100%;
81
+ width: 100%;
82
+ border-radius: 0;
83
+ display: flex;
84
+ flex-direction: column;
85
+
86
+ .rs-modal-header {
87
+ flex: 0 0 auto;
88
+ }
89
+
90
+ .rs-modal-body {
91
+ flex: 1 1 auto;
92
+ overflow: auto;
93
+ }
94
+
95
+ .rs-modal-footer {
96
+ flex: 0 0 auto;
97
+ }
98
+ }
77
99
  }
78
100
  }
79
101
 
@@ -18,10 +18,6 @@
18
18
  max-width: 100%;
19
19
  }
20
20
 
21
- &-toggle {
22
- min-width: 75px;
23
- }
24
-
25
21
  &-toggle.rs-btn {
26
22
  .rs-ripple-pond {
27
23
  display: none !important;
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { PickerLocale } from '../locales';
3
- import { PickerHandle } from '../Picker';
3
+ import { PickerHandle, PickerToggleProps } from '../Picker';
4
4
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
5
5
  export declare type ValueType = number | string;
6
- export interface CascaderProps<T = ValueType> extends FormControlPickerProps<T | null, PickerLocale, ItemDataType<T>> {
6
+ export interface CascaderProps<T = ValueType> extends FormControlPickerProps<T | null, PickerLocale, ItemDataType<T>>, Pick<PickerToggleProps, 'loading'> {
7
7
  /** Sets the width of the menu */
8
8
  menuWidth?: number;
9
9
  /** Sets the height of the menu */
@@ -4,7 +4,7 @@ import { PickerHandle, PickerToggleProps } from '../Picker';
4
4
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
5
5
  import type { MultipleSelectProps } from '../SelectPicker';
6
6
  export declare type ValueType = (number | string)[];
7
- export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>>, MultipleSelectProps<T>, Pick<PickerToggleProps, 'label' | 'caretAs'> {
7
+ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>>, MultipleSelectProps<T>, Pick<PickerToggleProps, 'label' | 'caretAs' | 'loading'> {
8
8
  /** Top the selected option in the options */
9
9
  sticky?: boolean;
10
10
  /** A picker that can be counted */
@@ -4,7 +4,7 @@ import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { TreeBaseProps } from '../Tree/Tree';
5
5
  import { FormControlPickerProps, ItemDataType } from '../@types/common';
6
6
  export declare type ValueType = (string | number)[];
7
- export interface CheckTreePickerProps<T = ValueType> extends TreeBaseProps<T, ItemDataType>, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs'> {
7
+ export interface CheckTreePickerProps<T = ValueType> extends TreeBaseProps<T, ItemDataType>, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs' | 'loading'> {
8
8
  /** Tree node cascade */
9
9
  cascade?: boolean;
10
10
  /** A picker that can be counted */
@@ -487,7 +487,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
487
487
  handleSelect(activeItem, event);
488
488
  }
489
489
  }, [flattenNodes, focusItemValue, handleSelect, uncheckableItemValues, valueKey]);
490
- var onPickerKeydown = (0, _Picker.useToggleKeyDownEvent)({
490
+ var onPickerKeydown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
491
491
  toggle: !focusItemValue || !active,
492
492
  triggerRef: triggerRef,
493
493
  targetRef: targetRef,
@@ -510,7 +510,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
510
510
  del: handleClean
511
511
  });
512
512
  }
513
- });
513
+ }, rest));
514
514
  var handleTreeKeydown = (0, _react.useCallback)(function (event) {
515
515
  if (!treeViewRef.current) {
516
516
  return;
@@ -4,7 +4,7 @@ import { DatePickerLocale } from '../locales';
4
4
  import { PickerToggleProps } from '../Picker';
5
5
  import { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
6
6
  export type { RangeType } from './Toolbar';
7
- export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext'> {
7
+ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext' | 'loading'> {
8
8
  /** Predefined date Ranges */
9
9
  ranges?: RangeType<Date>[];
10
10
  /** Calendar panel default presentation date and time */
@@ -94,6 +94,8 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
94
94
  onNextMonth?: (date: Date) => void;
95
95
  /** Called after clicking the OK button */
96
96
  onOk?: (date: Date, event: React.SyntheticEvent) => void;
97
+ /** Called after clicking the shortcut button */
98
+ onShortcutClick?: (range: RangeType<Date>, event: React.MouseEvent) => void;
97
99
  /** Called when clean */
98
100
  onClean?: (event: React.MouseEvent) => void;
99
101
  /** Custom render value */
@@ -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 _debounce = _interopRequireDefault(require("lodash/debounce"));
15
16
  var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"));
16
17
  var _ClockO = _interopRequireDefault(require("@rsuite/icons/legacy/ClockO"));
17
18
  var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarContainer"));
@@ -81,7 +82,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
81
82
  onSelect = props.onSelect,
82
83
  onToggleMonthDropdown = props.onToggleMonthDropdown,
83
84
  onToggleTimeDropdown = props.onToggleTimeDropdown,
84
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "format", "isoWeek", "limitEndYear", "limitStartYear", "locale", "menuClassName", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "toggleAs", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "renderValue", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown"]);
85
+ onShortcutClick = props.onShortcutClick,
86
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "format", "isoWeek", "limitEndYear", "limitStartYear", "locale", "menuClassName", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "toggleAs", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "renderValue", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick"]);
85
87
  var _useCustom = (0, _utils.useCustom)('DatePicker', overrideLocale),
86
88
  locale = _useCustom.locale,
87
89
  formatDate = _useCustom.formatDate,
@@ -180,10 +182,12 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
180
182
  /**
181
183
  * The callback triggered after the date in the shortcut area is clicked.
182
184
  */
183
- var handleShortcutPageDate = (0, _react.useCallback)(function (value, closeOverlay, event) {
185
+ var handleShortcutPageDate = (0, _react.useCallback)(function (range, closeOverlay, event) {
186
+ var value = range.value;
184
187
  updateValue(event, value, closeOverlay);
185
188
  handleDateChange(value, event);
186
- }, [handleDateChange, updateValue]);
189
+ onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, event);
190
+ }, [handleDateChange, onShortcutClick, updateValue]);
187
191
 
188
192
  /**
189
193
  * The callback triggered after clicking the OK button.
@@ -296,6 +300,14 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
296
300
  }
297
301
  setInputState('Initial');
298
302
  }, [inputState, calendarDate, updateValue]);
303
+ var handleInputBackspace = (0, _react.useCallback)(function (event) {
304
+ var value = event.target.value;
305
+
306
+ // When the input box is empty, the date is cleared.
307
+ if (value === '') {
308
+ handleClean(event);
309
+ }
310
+ }, [handleClean]);
299
311
  var handleEntered = (0, _react.useCallback)(function () {
300
312
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
301
313
  setActive(true);
@@ -386,14 +398,14 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
386
398
  calendarDate: calendarDate,
387
399
  locale: locale,
388
400
  disabledShortcut: disabledToolbarHandle,
389
- onClickShortcut: handleShortcutPageDate
401
+ onShortcutClick: handleShortcutPageDate
390
402
  }), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, calendar, /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
391
403
  locale: locale,
392
404
  ranges: bottomRanges,
393
405
  calendarDate: calendarDate,
394
406
  disabledOkBtn: isOKButtonDisabled,
395
407
  disabledShortcut: disabledToolbarHandle,
396
- onClickShortcut: handleShortcutPageDate,
408
+ onShortcutClick: handleShortcutPageDate,
397
409
  onOk: handleOK,
398
410
  hideOkBtn: oneTap
399
411
  }))));
@@ -451,6 +463,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
451
463
  onInputChange: handleInputChange,
452
464
  onInputBlur: handleInputPressEnd,
453
465
  onInputPressEnter: handleInputPressEnd,
466
+ onInputBackspace: (0, _debounce.default)(handleInputBackspace, 10),
454
467
  onKeyDown: onPickerKeyDown,
455
468
  onClean: (0, _utils.createChainedFunction)(handleClean, onClean),
456
469
  cleanable: cleanable && !disabled,
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import { StackProps } from '../Stack';
3
- import { RangeType } from './types';
3
+ import { InnerRange, RangeType } from './types';
4
4
  import { CalendarLocale } from '../locales';
5
5
  export interface PredefinedRangesProps<T = any, Shortcut = T> extends StackProps {
6
6
  ranges?: RangeType<Shortcut>[];
7
7
  calendarDate: T;
8
8
  locale: CalendarLocale;
9
9
  disabledShortcut?: (value: T) => boolean;
10
- onClickShortcut?: (value: Shortcut, closeOverlay: boolean, event: React.MouseEvent) => void;
10
+ onShortcutClick?: (range: InnerRange<Shortcut>, closeOverlay: boolean, event: React.MouseEvent) => void;
11
11
  }
12
12
  declare const PredefinedRanges: React.ForwardRefExoticComponent<PredefinedRangesProps<any, any> & React.RefAttributes<HTMLDivElement>>;
13
13
  export default PredefinedRanges;
@@ -15,11 +15,11 @@ var _utils2 = require("./utils");
15
15
  var PredefinedRanges = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
16
16
  var className = props.className,
17
17
  disabledShortcut = props.disabledShortcut,
18
- onClickShortcut = props.onClickShortcut,
18
+ onShortcutClick = props.onShortcutClick,
19
19
  calendarDate = props.calendarDate,
20
20
  rangesProp = props.ranges,
21
21
  locale = props.locale,
22
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "disabledShortcut", "onClickShortcut", "calendarDate", "ranges", "locale"]);
22
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "disabledShortcut", "onShortcutClick", "calendarDate", "ranges", "locale"]);
23
23
  var _useState = (0, _react.useState)((0, _utils2.getRanges)(props)),
24
24
  ranges = _useState[0],
25
25
  setRanges = _useState[1];
@@ -42,17 +42,17 @@ var PredefinedRanges = /*#__PURE__*/_react.default.forwardRef(function (props, r
42
42
  ref: ref,
43
43
  alignItems: "flex-start",
44
44
  spacing: 4
45
- }, rest), ranges.map(function (_ref, index) {
46
- var value = _ref.value,
47
- closeOverlay = _ref.closeOverlay,
48
- label = _ref.label,
49
- rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["value", "closeOverlay", "label"]);
45
+ }, rest), ranges.map(function (range, index) {
46
+ var value = range.value,
47
+ closeOverlay = range.closeOverlay,
48
+ label = range.label,
49
+ rest = (0, _objectWithoutPropertiesLoose2.default)(range, ["value", "closeOverlay", "label"]);
50
50
  var disabled = disabledShortcut === null || disabledShortcut === void 0 ? void 0 : disabledShortcut(value);
51
51
  var handleClickShortcut = function handleClickShortcut(event) {
52
52
  if (disabled) {
53
53
  return;
54
54
  }
55
- onClickShortcut === null || onClickShortcut === void 0 ? void 0 : onClickShortcut(value, closeOverlay !== false ? true : false, event);
55
+ onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, closeOverlay !== false ? true : false, event);
56
56
  };
57
57
  return /*#__PURE__*/_react.default.createElement(_Button.default, (0, _extends2.default)({
58
58
  appearance: "link",
@@ -41,11 +41,11 @@ var Toolbar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
41
41
  disabledShortcut = props.disabledShortcut,
42
42
  hideOkBtn = props.hideOkBtn,
43
43
  onOk = props.onOk,
44
- onClickShortcut = props.onClickShortcut,
44
+ onShortcutClick = props.onShortcutClick,
45
45
  calendarDate = props.calendarDate,
46
46
  ranges = props.ranges,
47
47
  locale = props.locale,
48
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "classPrefix", "disabledOkBtn", "disabledShortcut", "hideOkBtn", "onOk", "onClickShortcut", "calendarDate", "ranges", "locale"]);
48
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "classPrefix", "disabledOkBtn", "disabledShortcut", "hideOkBtn", "onOk", "onShortcutClick", "calendarDate", "ranges", "locale"]);
49
49
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
50
50
  merge = _useClassNames.merge,
51
51
  prefix = _useClassNames.prefix,
@@ -66,7 +66,7 @@ var Toolbar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
66
66
  calendarDate: calendarDate,
67
67
  locale: locale,
68
68
  disabledShortcut: disabledShortcut,
69
- onClickShortcut: onClickShortcut
69
+ onShortcutClick: onShortcutClick
70
70
  }), /*#__PURE__*/_react.default.createElement("div", {
71
71
  className: prefix('right')
72
72
  }, /*#__PURE__*/_react.default.createElement(SubmitButton, {
@@ -82,7 +82,7 @@ Toolbar.propTypes = {
82
82
  className: _propTypes.default.string,
83
83
  classPrefix: _propTypes.default.string,
84
84
  calendarDate: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.arrayOf(_propTypes.default.instanceOf(Date))]).isRequired,
85
- onClickShortcut: _propTypes.default.func,
85
+ onShortcutClick: _propTypes.default.func,
86
86
  onOk: _propTypes.default.func,
87
87
  disabledShortcut: _propTypes.default.func,
88
88
  disabledOkBtn: _propTypes.default.func,
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { FormControlBaseProps, PickerBaseProps } from '../@types/common';
3
3
  import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { DisabledDateFunction, RangeType, DateRange } from './types';
5
- export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext'> {
5
+ export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext' | 'loading'> {
6
6
  /** Predefined date ranges */
7
7
  ranges?: RangeType[];
8
8
  /** Format date */
@@ -43,6 +43,8 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
43
43
  onSelect?: (date: Date, event?: React.SyntheticEvent) => void;
44
44
  /** Called after clicking the OK button */
45
45
  onOk?: (date: DateRange, event: React.SyntheticEvent) => void;
46
+ /** Called after clicking the shortcut button */
47
+ onShortcutClick?: (range: RangeType, event: React.MouseEvent) => void;
46
48
  /** Called when clean */
47
49
  onClean?: (event: React.MouseEvent) => void;
48
50
  /** Custom render value */
@@ -12,6 +12,7 @@ var _isNil = _interopRequireDefault(require("lodash/isNil"));
12
12
  var _omit = _interopRequireDefault(require("lodash/omit"));
13
13
  var _partial = _interopRequireDefault(require("lodash/partial"));
14
14
  var _pick = _interopRequireDefault(require("lodash/pick"));
15
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
15
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
16
17
  var _react = _interopRequireWildcard(require("react"));
17
18
  var _CustomProvider = require("../CustomProvider");
@@ -81,8 +82,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
81
82
  onOk = props.onOk,
82
83
  onOpen = props.onOpen,
83
84
  onSelect = props.onSelect,
85
+ onShortcutClick = props.onShortcutClick,
84
86
  renderTitle = props.renderTitle,
85
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "isoWeek", "limitEndYear", "limitStartYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect", "renderTitle"]);
87
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "isoWeek", "limitEndYear", "limitStartYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect", "onShortcutClick", "renderTitle"]);
86
88
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
87
89
  merge = _useClassNames.merge,
88
90
  prefix = _useClassNames.prefix;
@@ -408,10 +410,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
408
410
  /**
409
411
  * Toolbar operation callback function
410
412
  */
411
- var handleShortcutPageDate = (0, _react.useCallback)(function (value, closeOverlay, event) {
413
+ var handleShortcutPageDate = (0, _react.useCallback)(function (range, closeOverlay, event) {
412
414
  if (closeOverlay === void 0) {
413
415
  closeOverlay = false;
414
416
  }
417
+ var value = range.value;
415
418
  updateCalendarDateRange({
416
419
  dateRange: value
417
420
  });
@@ -420,10 +423,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
420
423
  } else {
421
424
  setSelectedDates(value !== null && value !== void 0 ? value : []);
422
425
  }
426
+ onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, event);
423
427
 
424
428
  // End unfinished selections.
425
429
  setSelectedIdle(true);
426
- }, [handleValueUpdate, updateCalendarDateRange]);
430
+ }, [handleValueUpdate, onShortcutClick, updateCalendarDateRange]);
427
431
  var handleOK = (0, _react.useCallback)(function (event) {
428
432
  handleValueUpdate(event, selectedDates);
429
433
  onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event);
@@ -481,6 +485,14 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
481
485
  }
482
486
  setInputState('Initial');
483
487
  }, [handleValueUpdate, selectedDates, inputState]);
488
+ var handleInputBackspace = (0, _react.useCallback)(function (event) {
489
+ var value = event.target.value;
490
+
491
+ // When the input box is empty, the date is cleared.
492
+ if (value === '') {
493
+ handleClean(event);
494
+ }
495
+ }, [handleClean]);
484
496
  var handleEnter = (0, _react.useCallback)(function () {
485
497
  var nextCalendarDate;
486
498
  if (value && value.length) {
@@ -611,7 +623,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
611
623
  calendarDate: calendarDate,
612
624
  locale: locale,
613
625
  disabledShortcut: disabledShortcutButton,
614
- onClickShortcut: handleShortcutPageDate
626
+ onShortcutClick: handleShortcutPageDate
615
627
  }), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
616
628
  className: prefix('daterange-content')
617
629
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -633,7 +645,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
633
645
  disabledShortcut: disabledShortcutButton,
634
646
  hideOkBtn: oneTap,
635
647
  onOk: handleOK,
636
- onClickShortcut: handleShortcutPageDate,
648
+ onShortcutClick: handleShortcutPageDate,
637
649
  ranges: bottomRanges
638
650
  })))));
639
651
  };
@@ -670,6 +682,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
670
682
  onInputChange: handleInputChange,
671
683
  onInputBlur: handleInputPressEnd,
672
684
  onInputPressEnter: handleInputPressEnd,
685
+ onInputBackspace: (0, _debounce.default)(handleInputBackspace, 10),
673
686
  onKeyDown: onPickerKeyDown,
674
687
  onClean: (0, _utils.createChainedFunction)(handleClean, onClean),
675
688
  cleanable: cleanable && !disabled,
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import { DATERANGE_DISABLED_TARGET } from '../utils/constants';
3
3
  export declare type ValueType = [Date?, Date?];
4
4
  export declare type DateRange = [Date, Date];
5
- export interface RangeType {
5
+ export interface RangeType<T = DateRange> {
6
6
  label: React.ReactNode;
7
- value: DateRange | ((value?: ValueType) => DateRange);
7
+ value: T | ((value?: T) => T);
8
8
  closeOverlay?: boolean;
9
9
  placement?: 'bottom' | 'left';
10
10
  }
@@ -4,6 +4,8 @@ import { TypeAttributes, RsRefForwardingComponent } from '../@types/common';
4
4
  export interface DrawerProps extends ModalProps {
5
5
  /** The placement of Drawer */
6
6
  placement?: TypeAttributes.Placement4;
7
+ /** Custom close button */
8
+ closeButton?: React.ReactNode | boolean;
7
9
  }
8
10
  declare const DrawerBody: RsRefForwardingComponent<'div', ModalBodyProps>;
9
11
  declare const DrawerHeader: RsRefForwardingComponent<'div', ModalHeaderProps>;
@@ -1,17 +1,19 @@
1
1
  'use client';
2
2
  "use strict";
3
3
 
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
6
  exports.__esModule = true;
6
7
  exports.default = void 0;
7
8
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
12
  var _Slide = _interopRequireDefault(require("../Animation/Slide"));
12
13
  var _Modal = _interopRequireDefault(require("../Modal"));
13
14
  var _utils = require("../utils");
14
15
  var _deprecateComponent = _interopRequireDefault(require("../utils/deprecateComponent"));
16
+ var _DrawerContext = _interopRequireDefault(require("./DrawerContext"));
15
17
  var DrawerBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
16
18
  return /*#__PURE__*/_react.default.createElement(_Modal.default.Body, (0, _extends2.default)({
17
19
  classPrefix: "drawer-body"
@@ -55,7 +57,9 @@ var Drawer = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
55
57
  classPrefix = _props$classPrefix === void 0 ? 'drawer' : _props$classPrefix,
56
58
  _props$animation = props.animation,
57
59
  animation = _props$animation === void 0 ? _Slide.default : _props$animation,
58
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "placement", "classPrefix", "animation"]);
60
+ _props$closeButton = props.closeButton,
61
+ closeButton = _props$closeButton === void 0 ? true : _props$closeButton,
62
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "placement", "classPrefix", "animation", "closeButton"]);
59
63
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
60
64
  merge = _useClassNames.merge,
61
65
  prefix = _useClassNames.prefix;
@@ -63,14 +67,21 @@ var Drawer = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
63
67
  var animationProps = {
64
68
  placement: placement
65
69
  };
66
- return /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
70
+ var contextValue = (0, _react.useMemo)(function () {
71
+ return {
72
+ closeButton: closeButton,
73
+ isDrawer: true
74
+ };
75
+ }, [closeButton]);
76
+ return /*#__PURE__*/_react.default.createElement(_DrawerContext.default.Provider, {
77
+ value: contextValue
78
+ }, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
67
79
  ref: ref,
68
- drawer: true,
69
80
  classPrefix: classPrefix,
70
81
  className: classes,
71
82
  animation: animation,
72
83
  animationProps: animationProps
73
- }));
84
+ })));
74
85
  });
75
86
  DrawerBody.displayName = 'DrawerBody';
76
87
  DrawerHeader.displayName = 'DrawerHeader';
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface DrawerContextProps {
3
+ /** Custom close button */
4
+ closeButton?: React.ReactNode | boolean;
5
+ /** Render Modal as Drawer */
6
+ isDrawer: boolean;
7
+ }
8
+ declare const DrawerContext: React.Context<DrawerContextProps | null>;
9
+ export default DrawerContext;
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var DrawerContext = /*#__PURE__*/_react.default.createContext(null);
9
+ var _default = DrawerContext;
10
+ exports.default = _default;
@@ -134,7 +134,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
134
134
  if (AccepterComponent === _Toggle.default) {
135
135
  valueKey = 'checked';
136
136
  }
137
- var accepterProps = (_accepterProps = {}, _accepterProps[valueKey] = val !== null && val !== void 0 ? val : defaultValue, _accepterProps);
137
+ var accepterProps = (_accepterProps = {}, _accepterProps[valueKey] = val === undefined ? defaultValue : val, _accepterProps);
138
138
  return /*#__PURE__*/_react.default.createElement(Component, {
139
139
  className: classes,
140
140
  ref: ref
@@ -26,7 +26,7 @@ interface InputItemDataType extends ItemDataType {
26
26
  create?: boolean;
27
27
  }
28
28
  export declare type ValueType = any;
29
- export interface InputPickerProps<T = ValueType> extends FormControlPickerProps<T, InputPickerLocale, InputItemDataType>, SelectProps<T>, Pick<PickerToggleProps, 'caretAs'> {
29
+ export interface InputPickerProps<T = ValueType> extends FormControlPickerProps<T, InputPickerLocale, InputItemDataType>, SelectProps<T>, Pick<PickerToggleProps, 'caretAs' | 'loading'> {
30
30
  tabIndex?: number;
31
31
  /** Settings can create new options */
32
32
  creatable?: boolean;
@@ -611,7 +611,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
611
611
  usedClassNamePropKeys = _usePickerClassName[1];
612
612
  var classes = merge(pickerClasses, (_merge = {}, _merge[prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["tag"])))] = multi, _merge[prefix(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["focused"])))] = open, _merge[prefix(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["disabled-options"])))] = disabledOptions, _merge));
613
613
  var searching = !!searchKeyword && open;
614
- var displaySearchInput = searchable && !disabled;
614
+ var displaySearchInput = searchable && !disabled && !rest.loading;
615
615
  var inputProps = multi ? {
616
616
  inputStyle: {
617
617
  maxWidth: maxWidth - 63
@@ -5,8 +5,8 @@ import ModalBody from './ModalBody';
5
5
  import ModalHeader from './ModalHeader';
6
6
  import ModalTitle from './ModalTitle';
7
7
  import ModalFooter from './ModalFooter';
8
- import { TypeAttributes, RsRefForwardingComponent } from '../@types/common';
9
- export declare type ModalSize = TypeAttributes.Size | 'full';
8
+ import { ModalSize } from './utils';
9
+ import { RsRefForwardingComponent } from '../@types/common';
10
10
  export interface ModalProps extends BaseModalProps, Pick<React.HTMLAttributes<HTMLElement>, 'role' | 'id' | 'aria-labelledby' | 'aria-describedby'> {
11
11
  /** A modal can have different sizes */
12
12
  size?: ModalSize;
@@ -27,8 +27,6 @@ export interface ModalProps extends BaseModalProps, Pick<React.HTMLAttributes<HT
27
27
  dialogAs?: React.ElementType;
28
28
  /** Automatically sets the height when the body content is too long. */
29
29
  overflow?: boolean;
30
- /** Render Modal as Drawer */
31
- drawer?: boolean;
32
30
  }
33
31
  interface ModalComponent extends RsRefForwardingComponent<'div', ModalProps> {
34
32
  Body: typeof ModalBody;