rsuite 5.23.3 → 5.24.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 (87) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/Calendar/styles/index.less +15 -16
  3. package/DatePicker/styles/index.less +9 -0
  4. package/DatePicker/styles/mixin.less +8 -0
  5. package/Picker/styles/index.less +0 -1
  6. package/Picker/styles/mixin.less +1 -20
  7. package/Sidenav/styles/index.less +7 -2
  8. package/TreePicker/styles/index.less +13 -0
  9. package/cjs/AutoComplete/AutoComplete.d.ts +2 -0
  10. package/cjs/AutoComplete/AutoComplete.js +4 -1
  11. package/cjs/Calendar/MonthDropdown.d.ts +1 -0
  12. package/cjs/Calendar/MonthDropdown.js +14 -10
  13. package/cjs/Calendar/TableHeaderRow.js +3 -3
  14. package/cjs/Cascader/Cascader.js +2 -2
  15. package/cjs/Cascader/utils.d.ts +1 -1
  16. package/cjs/Cascader/utils.js +2 -2
  17. package/cjs/Content/Content.d.ts +1 -1
  18. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  19. package/cjs/DatePicker/DatePicker.js +17 -1
  20. package/cjs/Dropdown/Dropdown.d.ts +2 -0
  21. package/cjs/Dropdown/Dropdown.js +3 -0
  22. package/cjs/Dropdown/DropdownItem.d.ts +5 -1
  23. package/cjs/Dropdown/DropdownItem.js +7 -7
  24. package/cjs/Dropdown/DropdownSeparator.d.ts +14 -0
  25. package/cjs/Dropdown/DropdownSeparator.js +48 -0
  26. package/cjs/Footer/Footer.d.ts +1 -1
  27. package/cjs/Header/Header.d.ts +1 -1
  28. package/cjs/MultiCascader/MultiCascader.js +4 -4
  29. package/cjs/MultiCascader/utils.d.ts +1 -1
  30. package/cjs/MultiCascader/utils.js +2 -2
  31. package/cjs/Navbar/NavbarBrand.d.ts +1 -1
  32. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +3 -2
  33. package/cjs/TreePicker/TreeNode.d.ts +3 -3
  34. package/cjs/TreePicker/TreeNode.js +1 -11
  35. package/cjs/TreePicker/TreePicker.js +8 -1
  36. package/cjs/utils/createComponent.d.ts +3 -3
  37. package/cjs/utils/deprecatePropType.d.ts +9 -0
  38. package/cjs/utils/deprecatePropType.js +27 -0
  39. package/cjs/utils/treeUtils.d.ts +12 -0
  40. package/cjs/utils/treeUtils.js +42 -0
  41. package/dist/rsuite-rtl.css +172 -98
  42. package/dist/rsuite-rtl.min.css +1 -1
  43. package/dist/rsuite-rtl.min.css.map +1 -1
  44. package/dist/rsuite.css +172 -98
  45. package/dist/rsuite.js +29 -18
  46. package/dist/rsuite.js.map +1 -1
  47. package/dist/rsuite.min.css +1 -1
  48. package/dist/rsuite.min.css.map +1 -1
  49. package/dist/rsuite.min.js +1 -1
  50. package/dist/rsuite.min.js.map +1 -1
  51. package/esm/AutoComplete/AutoComplete.d.ts +2 -0
  52. package/esm/AutoComplete/AutoComplete.js +4 -1
  53. package/esm/Calendar/MonthDropdown.d.ts +1 -0
  54. package/esm/Calendar/MonthDropdown.js +12 -9
  55. package/esm/Calendar/TableHeaderRow.js +3 -3
  56. package/esm/Cascader/Cascader.js +2 -2
  57. package/esm/Cascader/utils.d.ts +1 -1
  58. package/esm/Cascader/utils.js +2 -2
  59. package/esm/Content/Content.d.ts +1 -1
  60. package/esm/DatePicker/DatePicker.d.ts +5 -1
  61. package/esm/DatePicker/DatePicker.js +16 -1
  62. package/esm/Dropdown/Dropdown.d.ts +2 -0
  63. package/esm/Dropdown/Dropdown.js +2 -0
  64. package/esm/Dropdown/DropdownItem.d.ts +5 -1
  65. package/esm/Dropdown/DropdownItem.js +5 -7
  66. package/esm/Dropdown/DropdownSeparator.d.ts +14 -0
  67. package/esm/Dropdown/DropdownSeparator.js +35 -0
  68. package/esm/Footer/Footer.d.ts +1 -1
  69. package/esm/Header/Header.d.ts +1 -1
  70. package/esm/MultiCascader/MultiCascader.js +4 -4
  71. package/esm/MultiCascader/utils.d.ts +1 -1
  72. package/esm/MultiCascader/utils.js +2 -2
  73. package/esm/Navbar/NavbarBrand.d.ts +1 -1
  74. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +3 -2
  75. package/esm/TreePicker/TreeNode.d.ts +3 -3
  76. package/esm/TreePicker/TreeNode.js +2 -11
  77. package/esm/TreePicker/TreePicker.js +9 -2
  78. package/esm/utils/createComponent.d.ts +3 -3
  79. package/esm/utils/deprecatePropType.d.ts +9 -0
  80. package/esm/utils/deprecatePropType.js +25 -0
  81. package/esm/utils/treeUtils.d.ts +12 -0
  82. package/esm/utils/treeUtils.js +36 -0
  83. package/package.json +2 -2
  84. package/styles/color-modes/dark.less +1 -0
  85. package/styles/color-modes/high-contrast.less +1 -0
  86. package/styles/color-modes/light.less +1 -0
  87. package/styles/variables.less +7 -8
package/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ ## [5.24.1](https://github.com/rsuite/rsuite/compare/v5.24.0...v5.24.1) (2023-01-12)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **DatePicker,DateRangePicker:** fix the background color error when the cell is hovered ([#3018](https://github.com/rsuite/rsuite/issues/3018)) ([9d6f43e](https://github.com/rsuite/rsuite/commit/9d6f43e6db6049b7fdcc8514e071d870b785ecbb))
6
+ - **MultiCascader:** fix load async data error in inline mode ([#3015](https://github.com/rsuite/rsuite/issues/3015)) ([081eb14](https://github.com/rsuite/rsuite/commit/081eb14de9fb37d80a95324a669b8089e29ef03c)), closes [#3014](https://github.com/rsuite/rsuite/issues/3014)
7
+ - **Navbar.Brand:** fix missing href prop ([#3007](https://github.com/rsuite/rsuite/issues/3007)) ([d0a1f27](https://github.com/rsuite/rsuite/commit/d0a1f276d63e25c295fbef94f82559333ba4c148))
8
+ - **Tree:** fix Tree drag preview style error ([#3003](https://github.com/rsuite/rsuite/issues/3003)) ([4830148](https://github.com/rsuite/rsuite/commit/4830148b9e325bee926a2bfefe0786c08952ec79))
9
+
10
+ ### Performance Improvements
11
+
12
+ - **CSS transitions:** improved duration of transitions ([#3016](https://github.com/rsuite/rsuite/issues/3016)) ([d1829da](https://github.com/rsuite/rsuite/commit/d1829da2e77131e031479ef9aa4f6d00d6307a52))
13
+
14
+ # [5.24.0](https://github.com/rsuite/rsuite/compare/v5.23.3...v5.24.0) (2022-12-30)
15
+
16
+ ### Bug Fixes
17
+
18
+ - **AutoComplete:** fix AutoComplete size property not working ([#2990](https://github.com/rsuite/rsuite/issues/2990)) ([add665b](https://github.com/rsuite/rsuite/commit/add665b82b9d2cbd21e07576bf77f74e18991e21))
19
+ - **DatePicker:** fix inconsistency between month selectable state and ok button clickable state ([#2984](https://github.com/rsuite/rsuite/issues/2984)) ([70e6aba](https://github.com/rsuite/rsuite/commit/70e6aba0b7a3216c9f8b59b033826e55bebac1a1))
20
+ - **Sidenav:** fix Sidenav multilevel Nav.Menu arrow icon exception ([#2986](https://github.com/rsuite/rsuite/issues/2986)) ([87f6748](https://github.com/rsuite/rsuite/commit/87f67482b60eae4ed445246fe3e6ac9b0cad0385))
21
+
22
+ ### Features
23
+
24
+ - **Dropdown:** add Dropdown.Separator component ([#2979](https://github.com/rsuite/rsuite/issues/2979)) ([db6fcbb](https://github.com/rsuite/rsuite/commit/db6fcbbd88961e3506f6b2d2146cf43717d1e1db))
25
+
1
26
  ## [5.23.3](https://github.com/rsuite/rsuite/compare/v5.23.2...v5.23.3) (2022-12-16)
2
27
 
3
28
  ### Bug Fixes
@@ -370,7 +370,8 @@
370
370
  }
371
371
  }
372
372
 
373
- .rs-calendar-table-cell {
373
+ .rs-calendar-table-cell,
374
+ .rs-calendar-table-header-cell {
374
375
  display: table-cell;
375
376
  width: 1%;
376
377
  padding: @calendar-table-cell-padding 0;
@@ -418,21 +419,19 @@
418
419
  }
419
420
 
420
421
  // Table header row
421
- .rs-calendar-table-header-row {
422
- .rs-calendar-table-cell-content {
423
- color: var(--rs-text-secondary);
424
- font-size: @font-size-small;
425
- line-height: @line-height-small;
426
- padding-top: 2px;
427
- padding-bottom: 2px;
428
-
429
- &,
430
- &:hover,
431
- &:focus,
432
- &:hover:focus {
433
- background: none;
434
- cursor: auto;
435
- }
422
+ .rs-calendar-table-header-cell-content {
423
+ color: var(--rs-text-secondary);
424
+ font-size: @font-size-small;
425
+ line-height: @line-height-small;
426
+ padding-top: 2px;
427
+ padding-bottom: 2px;
428
+
429
+ &,
430
+ &:hover,
431
+ &:focus,
432
+ &:hover:focus {
433
+ background: none;
434
+ cursor: auto;
436
435
  }
437
436
  }
438
437
 
@@ -2,6 +2,7 @@
2
2
  @import '../../styles/mixins/listbox';
3
3
  @import '../../Button/styles/mixin';
4
4
  @import '../../Picker/styles/mixin';
5
+ @import 'mixin';
5
6
 
6
7
  // DatePicker Picker
7
8
  // ----------------------
@@ -91,6 +92,10 @@
91
92
  .listbox-option-active();
92
93
  }
93
94
 
95
+ .rs-calendar-month-dropdown-cell-active .rs-calendar-month-dropdown-cell-content:hover {
96
+ .calendar-cell-selected-hover();
97
+ }
98
+
94
99
  .rs-calendar-table-header-row .rs-calendar-table-cell-content {
95
100
  height: 24px;
96
101
  padding-top: 0;
@@ -109,6 +114,10 @@
109
114
  .listbox-option-active();
110
115
  }
111
116
 
117
+ .rs-calendar-table-cell-selected:hover .rs-calendar-table-cell-content {
118
+ .calendar-cell-selected-hover();
119
+ }
120
+
112
121
  .rs-calendar-month-dropdown-scroll {
113
122
  height: 227px;
114
123
  }
@@ -0,0 +1,8 @@
1
+ .calendar-cell-selected-hover() {
2
+ background-color: var(--rs-calendar-cell-selected-hover-bg);
3
+ color: var(--rs-calendar-date-selected-text);
4
+
5
+ .high-contrast-mode({
6
+ color: var(--rs-calendar-date-selected-text);
7
+ });
8
+ }
@@ -382,7 +382,6 @@
382
382
  display: block;
383
383
  padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal
384
384
  @picker-item-content-padding-vertical @picker-check-item-content-padding-left;
385
- transition: @picker-item-transition;
386
385
  line-height: @line-height-computed;
387
386
 
388
387
  .high-contrast-mode({
@@ -31,21 +31,15 @@
31
31
  padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal;
32
32
  padding-right: (@padding-x + @dropdown-caret-width + @dropdown-caret-padding);
33
33
  position: relative;
34
- cursor: default;
35
- transition: @picker-item-transition;
34
+ cursor: pointer;
36
35
  color: var(--rs-text-heading);
37
36
 
38
- &:hover {
39
- background-color: var(--rs-state-hover-bg);
40
- }
41
-
42
37
  .rs-@{prefix}-menu-group-caret {
43
38
  display: inline-block;
44
39
  margin-left: 2px;
45
40
  position: absolute;
46
41
  top: @padding-y;
47
42
  right: @padding-x;
48
- transition: transform 0.3s linear;
49
43
  padding: 3px;
50
44
  }
51
45
  }
@@ -60,19 +54,6 @@
60
54
  }
61
55
  }
62
56
 
63
- .picker-select-item() {
64
- display: block;
65
- padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal;
66
- clear: both;
67
- font-weight: normal;
68
- line-height: @line-height-base;
69
- color: var(--rs-text-primary);
70
- cursor: pointer; //fixed link has not [href] style
71
- transition: @picker-item-transition;
72
- text-decoration: none;
73
- width: 100%;
74
- }
75
-
76
57
  .picker-item-hover() {
77
58
  color: var(--rs-text-primary);
78
59
  background-color: var(--rs-state-hover-bg);
@@ -76,14 +76,19 @@
76
76
  top: @sidenav-children-padding-vertical;
77
77
  // width: auto;
78
78
  // height: @sidenav-dropdown-toggle-caret-width;
79
- transform: rotate(90deg);
79
+ // transform: rotate(90deg);
80
80
  }
81
81
  }
82
82
 
83
83
  // Expanded submenu toggle icon
84
- .rs-dropdown-item-expand .rs-dropdown-item-toggle-icon {
84
+ .rs-dropdown-item-expand-icon {
85
85
  transform: rotate(270deg);
86
86
  }
87
+
88
+ // Collapse submenu toggle icon
89
+ .rs-dropdown-item-collapse-icon {
90
+ transform: rotate(90deg);
91
+ }
87
92
  }
88
93
 
89
94
  .high-contrast-mode({
@@ -16,6 +16,19 @@
16
16
  &.rs-tree-virtualized {
17
17
  overflow: hidden;
18
18
  }
19
+
20
+ &-drag-preview {
21
+ position: absolute;
22
+ top: 0;
23
+ color: var(--rs-text-primary);
24
+ background-color: var(--rs-bg-overlay);
25
+ display: inline-block;
26
+ margin: 0;
27
+ padding: @picker-tree-node-padding-vertical @picker-tree-node-padding-horizontal;
28
+ border-radius: 6px;
29
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.12);
30
+ z-index: -1;
31
+ }
19
32
  }
20
33
 
21
34
  .rs-tree-node {
@@ -9,6 +9,8 @@ export interface AutoCompleteProps<T = ValueType> extends WithAsProps, FormContr
9
9
  placement?: TypeAttributes.Placement;
10
10
  /** When set to false, the Enter key selection function is invalid */
11
11
  selectOnEnter?: boolean;
12
+ /** A component can have different sizes */
13
+ size?: TypeAttributes.Size;
12
14
  /** Open the menu and control it */
13
15
  open?: boolean;
14
16
  /** Placeholder text */
@@ -52,6 +52,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
52
52
  valueProp = props.value,
53
53
  open = props.open,
54
54
  style = props.style,
55
+ size = props.size,
55
56
  menuClassName = props.menuClassName,
56
57
  id = props.id,
57
58
  renderMenu = props.renderMenu,
@@ -65,7 +66,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
65
66
  onFocus = props.onFocus,
66
67
  onBlur = props.onBlur,
67
68
  onMenuFocus = props.onMenuFocus,
68
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "className", "placement", "selectOnEnter", "classPrefix", "defaultValue", "menuAutoWidth", "data", "value", "open", "style", "menuClassName", "id", "renderMenu", "renderMenuItem", "onSelect", "filterBy", "onKeyDown", "onChange", "onClose", "onOpen", "onFocus", "onBlur", "onMenuFocus"]);
69
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "className", "placement", "selectOnEnter", "classPrefix", "defaultValue", "menuAutoWidth", "data", "value", "open", "style", "size", "menuClassName", "id", "renderMenu", "renderMenuItem", "onSelect", "filterBy", "onKeyDown", "onChange", "onClose", "onOpen", "onFocus", "onBlur", "onMenuFocus"]);
69
70
  var datalist = (0, _utils3.transformData)(data);
70
71
 
71
72
  var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
@@ -231,6 +232,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
231
232
  id: id,
232
233
  disabled: disabled,
233
234
  value: value,
235
+ size: size,
234
236
  onBlur: handleInputBlur,
235
237
  onFocus: handleInputFocus,
236
238
  onChange: handleChange,
@@ -260,6 +262,7 @@ AutoComplete.propTypes = (0, _extends2.default)({}, _utils2.animationPropTypes,
260
262
  renderMenu: _propTypes.default.func,
261
263
  renderMenuItem: _propTypes.default.func,
262
264
  style: _propTypes.default.object,
265
+ size: _propTypes.default.oneOf(['lg', 'md', 'sm', 'xs']),
263
266
  open: _propTypes.default.bool,
264
267
  selectOnEnter: _propTypes.default.bool,
265
268
  filterBy: _propTypes.default.func
@@ -22,5 +22,6 @@ export interface RowProps {
22
22
  /** Style object to be applied to row (to position it); */
23
23
  style?: React.CSSProperties;
24
24
  }
25
+ export declare function isEveryDateInMonth(year: number, month: number, predicate: (date: Date) => boolean): boolean;
25
26
  declare const MonthDropdown: RsRefForwardingComponent<'div', MonthDropdownProps>;
26
27
  export default MonthDropdown;
@@ -5,6 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
6
 
7
7
  exports.__esModule = true;
8
+ exports.isEveryDateInMonth = isEveryDateInMonth;
8
9
  exports.default = void 0;
9
10
 
10
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
@@ -25,6 +26,18 @@ var _CalendarContext = require("./CalendarContext");
25
26
 
26
27
  var monthMap = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
27
28
 
29
+ function isEveryDateInMonth(year, month, predicate) {
30
+ var days = _utils.DateUtils.getDaysInMonth(new Date(year, month));
31
+
32
+ for (var i = 1; i <= days; i++) {
33
+ if (!predicate(new Date(year, month, i))) {
34
+ return false;
35
+ }
36
+ }
37
+
38
+ return true;
39
+ }
40
+
28
41
  var MonthDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
29
42
  var _props$as = props.as,
30
43
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -60,16 +73,7 @@ var MonthDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
60
73
  }, [limitEndYear, startYear, thisYear]);
61
74
  var isMonthDisabled = (0, _react.useCallback)(function (year, month) {
62
75
  if (disabledMonth) {
63
- var days = _utils.DateUtils.getDaysInMonth(new Date(year, month)); // If all dates in a month are disabled, disable the current month
64
-
65
-
66
- for (var i = 1; i <= days; i++) {
67
- if (!disabledMonth(new Date(year, month, i))) {
68
- return false;
69
- }
70
- }
71
-
72
- return true;
76
+ return isEveryDateInMonth(year, month, disabledMonth);
73
77
  }
74
78
 
75
79
  return false;
@@ -52,15 +52,15 @@ var TableHeaderRow = /*#__PURE__*/_react.default.forwardRef(function (props, ref
52
52
  ref: ref,
53
53
  className: classes
54
54
  }), showWeekNumbers && /*#__PURE__*/_react.default.createElement("div", {
55
- className: prefix('cell'),
55
+ className: prefix('header-cell'),
56
56
  role: "columnheader"
57
57
  }), items.map(function (key) {
58
58
  return /*#__PURE__*/_react.default.createElement("div", {
59
59
  key: key,
60
- className: prefix('cell'),
60
+ className: prefix('header-cell'),
61
61
  role: "columnheader"
62
62
  }, /*#__PURE__*/_react.default.createElement("span", {
63
- className: prefix('cell-content')
63
+ className: prefix('header-cell-content')
64
64
  }, locale === null || locale === void 0 ? void 0 : locale[key]));
65
65
  }));
66
66
  });
@@ -117,7 +117,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
117
117
  valueToPaths = _usePaths.valueToPaths,
118
118
  columnData = _usePaths.columnData,
119
119
  addColumn = _usePaths.addColumn,
120
- romoveColumnByIndex = _usePaths.romoveColumnByIndex,
120
+ removeColumnByIndex = _usePaths.removeColumnByIndex,
121
121
  setValueToPaths = _usePaths.setValueToPaths,
122
122
  setColumnData = _usePaths.setColumnData,
123
123
  setSelectedPaths = _usePaths.setSelectedPaths,
@@ -308,7 +308,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
308
308
  addColumn(node[childrenKey], columnIndex);
309
309
  } else {
310
310
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
311
- romoveColumnByIndex(columnIndex);
311
+ removeColumnByIndex(columnIndex);
312
312
  }
313
313
 
314
314
  if (isLeafNode) {
@@ -18,6 +18,6 @@ export declare function usePaths<T extends Record<string, unknown>>(params: UseP
18
18
  setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
19
19
  setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<T[]>>;
20
20
  addColumn: (column: T[], index: number) => void;
21
- romoveColumnByIndex: (index: number) => void;
21
+ removeColumnByIndex: (index: number) => void;
22
22
  };
23
23
  export {};
@@ -131,7 +131,7 @@ function usePaths(params) {
131
131
  */
132
132
 
133
133
 
134
- function romoveColumnByIndex(index) {
134
+ function removeColumnByIndex(index) {
135
135
  setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
136
136
  }
137
137
  /**
@@ -170,6 +170,6 @@ function usePaths(params) {
170
170
  setColumnData: setColumnData,
171
171
  setSelectedPaths: setSelectedPaths,
172
172
  addColumn: addColumn,
173
- romoveColumnByIndex: romoveColumnByIndex
173
+ removeColumnByIndex: removeColumnByIndex
174
174
  };
175
175
  }
@@ -4,5 +4,5 @@ export declare type ContentProps = ComponentProps;
4
4
  * For Internet Explorer 11 and lower, it's suggested that an ARIA role of "main"
5
5
  * be added to the <main> element to ensure it is accessible
6
6
  */
7
- declare const Content: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
7
+ declare const Content: import("../@types/common").RsRefForwardingComponent<"main", ComponentProps>;
8
8
  export default Content;
@@ -29,7 +29,11 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
29
29
  showMeridian?: boolean;
30
30
  /** one tap to select */
31
31
  oneTap?: boolean;
32
- /** Disabled date */
32
+ /**
33
+ * Whether to disable a date on the calendar view
34
+ *
35
+ * @returns date should be disabled (not selectable)
36
+ */
33
37
  disabledDate?: (date?: Date) => boolean;
34
38
  /** Disabled hours */
35
39
  disabledHours?: (hour: number, date: Date) => boolean;
@@ -29,6 +29,8 @@ var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarCon
29
29
 
30
30
  var _useCalendarDate2 = _interopRequireDefault(require("../Calendar/useCalendarDate"));
31
31
 
32
+ var _MonthDropdown = require("../Calendar/MonthDropdown");
33
+
32
34
  var _Toolbar = _interopRequireDefault(require("./Toolbar"));
33
35
 
34
36
  var _Stack = _interopRequireDefault(require("../Stack"));
@@ -336,6 +338,20 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
336
338
 
337
339
  return allowDate || allowTime;
338
340
  }, [disabledDateProp, props]);
341
+ /**
342
+ * Whether "OK" button is disabled
343
+ *
344
+ * - If format is date, disable ok button if selected date is disabled
345
+ * - If format is month, disable ok button if all dates in the month of selected date are disabled
346
+ */
347
+
348
+ var isOKButtonDisabled = (0, _react.useCallback)(function (selectedDate) {
349
+ if (_utils.DateUtils.shouldRenderMonth(formatStr) && !_utils.DateUtils.shouldRenderDate(formatStr)) {
350
+ return (0, _MonthDropdown.isEveryDateInMonth)(selectedDate.getFullYear(), selectedDate.getMonth(), disabledToolbarHandle);
351
+ }
352
+
353
+ return disabledToolbarHandle(selectedDate);
354
+ }, [disabledToolbarHandle, formatStr]);
339
355
  var calendarProps = (0, _react.useMemo)(function () {
340
356
  return (0, _mapValues.default)((0, _pick.default)(props, _utils.DateUtils.calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
341
357
  return function (next, date) {
@@ -406,7 +422,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
406
422
  locale: locale,
407
423
  ranges: bottomRanges,
408
424
  calendarDate: calendarDate,
409
- disabledOkBtn: disabledToolbarHandle,
425
+ disabledOkBtn: isOKButtonDisabled,
410
426
  disabledShortcut: disabledToolbarHandle,
411
427
  onClickShortcut: handleShortcutPageDate,
412
428
  onOk: handleOK,
@@ -4,6 +4,7 @@ import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types
4
4
  import { IconProps } from '@rsuite/icons/lib/Icon';
5
5
  import DropdownItem from './DropdownItem';
6
6
  import Button from '../Button';
7
+ import DropdownSeparator from './DropdownSeparator';
7
8
  export declare type DropdownTrigger = 'click' | 'hover' | 'contextMenu';
8
9
  export interface DropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect' | 'title'> {
9
10
  /** Define the title as a submenu */
@@ -58,6 +59,7 @@ export interface DropdownComponent extends RsRefForwardingComponent<'div', Dropd
58
59
  } & React.ComponentProps<ToggleAs>, context: any): JSX.Element | null;
59
60
  Item: typeof DropdownItem;
60
61
  Menu: typeof DropdownMenu;
62
+ Separator: typeof DropdownSeparator;
61
63
  }
62
64
  /**
63
65
  * The <Dropdown> API
@@ -43,6 +43,8 @@ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
43
43
 
44
44
  var _Nav = _interopRequireDefault(require("../Nav"));
45
45
 
46
+ var _DropdownSeparator = _interopRequireDefault(require("./DropdownSeparator"));
47
+
46
48
  /**
47
49
  * The <Dropdown> API
48
50
  * When used inside <Sidenav>, renders a <TreeviewRootItem>;
@@ -186,6 +188,7 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
186
188
 
187
189
  Dropdown.Item = _DropdownItem.default;
188
190
  Dropdown.Menu = _DropdownMenu.default;
191
+ Dropdown.Separator = _DropdownSeparator.default;
189
192
  Dropdown.displayName = 'Dropdown';
190
193
  Dropdown.propTypes = {
191
194
  activeKey: _propTypes.default.any,
@@ -8,7 +8,11 @@ export interface DropdownMenuItemProps<T = any> extends WithAsProps, Omit<React.
8
8
  children?: React.ReactNode;
9
9
  /** You can use a custom element for this component */
10
10
  as?: React.ElementType;
11
- /** Whether to display the divider */
11
+ /**
12
+ * Whether to display the divider
13
+ *
14
+ * @deprecated Use dedicated <Dropdown.Separator> component instead
15
+ */
12
16
  divider?: boolean;
13
17
  /** Disable the current option */
14
18
  disabled?: boolean;
@@ -11,11 +11,13 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
13
 
14
+ var _pick2 = _interopRequireDefault(require("lodash/pick"));
15
+
14
16
  var _react = _interopRequireWildcard(require("react"));
15
17
 
16
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
19
 
18
- var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
20
+ var _deprecatePropType = _interopRequireWildcard(require("../utils/deprecatePropType"));
19
21
 
20
22
  var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
21
23
 
@@ -37,6 +39,8 @@ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
37
39
 
38
40
  var _Nav = _interopRequireDefault(require("../Nav"));
39
41
 
42
+ var _DropdownSeparator = _interopRequireDefault(require("./DropdownSeparator"));
43
+
40
44
  /**
41
45
  * The <Dropdown.Item> API
42
46
  * When used inside <Sidenav>, renders a <TreeviewItem>
@@ -106,11 +110,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
106
110
  }
107
111
 
108
112
  if (divider) {
109
- return renderDropdownItem((0, _extends2.default)({
110
- ref: ref,
111
- role: 'separator',
112
- className: merge(prefix('divider'), className)
113
- }, restProps));
113
+ return /*#__PURE__*/_react.default.createElement(_DropdownSeparator.default, (0, _pick2.default)(props, ['data-testid']));
114
114
  }
115
115
 
116
116
  if (panel) {
@@ -159,7 +159,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
159
159
  DropdownItem.displayName = 'Dropdown.Item';
160
160
  DropdownItem.propTypes = {
161
161
  as: _propTypes.default.elementType,
162
- divider: _propTypes.default.bool,
162
+ divider: (0, _deprecatePropType.deprecatePropTypeNew)(_propTypes.default.bool, 'Use Dropdown.Separator component instead.'),
163
163
  panel: _propTypes.default.bool,
164
164
  trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover'])]),
165
165
  open: (0, _deprecatePropType.default)(_propTypes.default.bool),
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
3
+ export interface DropdownSeparatorProps extends WithAsProps, React.HTMLAttributes<HTMLElement> {
4
+ /** You can use a custom element for this component */
5
+ as?: React.ElementType;
6
+ }
7
+ /**
8
+ * The <Dropdown.Separator> API
9
+ *
10
+ * Renders a non-focusable and non-interactive `separator`
11
+ * Per ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/menu/
12
+ */
13
+ declare const DropdownSeparator: RsRefForwardingComponent<'li', DropdownSeparatorProps>;
14
+ export default DropdownSeparator;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _utils = require("../utils");
17
+
18
+ /**
19
+ * The <Dropdown.Separator> API
20
+ *
21
+ * Renders a non-focusable and non-interactive `separator`
22
+ * Per ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/menu/
23
+ */
24
+ var DropdownSeparator = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
25
+ var _props$classPrefix = props.classPrefix,
26
+ classPrefix = _props$classPrefix === void 0 ? 'dropdown-item-divider' : _props$classPrefix,
27
+ className = props.className,
28
+ _props$as = props.as,
29
+ Component = _props$as === void 0 ? 'li' : _props$as,
30
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "as"]);
31
+
32
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
33
+ merge = _useClassNames.merge,
34
+ withClassPrefix = _useClassNames.withClassPrefix;
35
+
36
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
37
+ ref: ref,
38
+ role: "separator",
39
+ className: merge(withClassPrefix(), className)
40
+ }, restProps));
41
+ });
42
+
43
+ DropdownSeparator.displayName = 'Dropdown.Separator';
44
+ DropdownSeparator.propTypes = {
45
+ as: _propTypes.default.elementType
46
+ };
47
+ var _default = DropdownSeparator;
48
+ exports.default = _default;
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type FooterProps = ComponentProps;
3
- declare const Footer: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const Footer: import("../@types/common").RsRefForwardingComponent<"footer", ComponentProps>;
4
4
  export default Footer;
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type HeaderProps = ComponentProps;
3
- declare const Header: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const Header: import("../@types/common").RsRefForwardingComponent<"header", ComponentProps>;
4
4
  export default Header;
@@ -127,7 +127,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
127
127
  columnData = _useColumnData.columnData,
128
128
  setColumnData = _useColumnData.setColumnData,
129
129
  addColumn = _useColumnData.addColumn,
130
- romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
130
+ removeColumnByIndex = _useColumnData.removeColumnByIndex,
131
131
  enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
132
132
 
133
133
  (0, _utils3.useUpdateEffect)(function () {
@@ -223,7 +223,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
223
223
  node.loading = false;
224
224
  node[childrenKey] = data;
225
225
 
226
- if (targetRef.current) {
226
+ if (targetRef.current || inline) {
227
227
  addFlattenData(data, node);
228
228
  addColumn(data, columnIndex);
229
229
  }
@@ -238,11 +238,11 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
238
238
  addColumn(node[childrenKey], columnIndex);
239
239
  } else {
240
240
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
241
- romoveColumnByIndex(columnIndex);
241
+ removeColumnByIndex(columnIndex);
242
242
  }
243
243
 
244
244
  (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
245
- }, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
245
+ }, [onSelect, getChildren, childrenKey, inline, addFlattenData, addColumn, removeColumnByIndex]);
246
246
  var handleCheck = (0, _react.useCallback)(function (node, event, checked) {
247
247
  var nodeValue = node[valueKey];
248
248
  var nextValue = [];
@@ -51,7 +51,7 @@ export declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
51
51
  export declare function useColumnData<T extends MayHasParent<Record<string, unknown>>>(flattenData: T[]): {
52
52
  columnData: T[][];
53
53
  addColumn: (column: T[], index: number) => void;
54
- romoveColumnByIndex: (index: number) => void;
54
+ removeColumnByIndex: (index: number) => void;
55
55
  setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
56
56
  enforceUpdateColumnData: (nextData: T[]) => void;
57
57
  };