rsuite 5.73.0 → 5.73.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 (58) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CheckTree/styles/index.css +0 -1
  3. package/CheckTree/styles/index.less +0 -1
  4. package/CheckTreePicker/styles/index.css +0 -1
  5. package/Checkbox/styles/mixin.less +1 -1
  6. package/RadioTile/styles/index.css +69 -0
  7. package/RadioTile/styles/index.less +3 -1
  8. package/Rate/styles/index.less +1 -1
  9. package/Slider/styles/index.less +1 -1
  10. package/TagInput/styles/index.css +0 -3
  11. package/TagPicker/styles/index.css +0 -3
  12. package/TagPicker/styles/index.less +0 -2
  13. package/Tree/styles/index.css +0 -3
  14. package/Tree/styles/index.less +0 -6
  15. package/TreePicker/styles/index.css +0 -3
  16. package/cjs/Calendar/hooks/useCalendarState.d.ts +1 -1
  17. package/cjs/Calendar/hooks/useCalendarState.js +15 -8
  18. package/cjs/Drawer/Drawer.js +6 -15
  19. package/cjs/FormControl/hooks/useField.js +3 -0
  20. package/cjs/Modal/Modal.d.ts +4 -0
  21. package/cjs/Modal/Modal.js +12 -13
  22. package/cjs/Modal/ModalBody.js +6 -5
  23. package/cjs/Modal/ModalContext.d.ts +4 -0
  24. package/cjs/Modal/ModalHeader.js +4 -4
  25. package/cjs/internals/hooks/useFocusVirtualListItem.d.ts +5 -2
  26. package/cjs/internals/hooks/useFocusVirtualListItem.js +23 -7
  27. package/dist/rsuite-no-reset-rtl.css +0 -7
  28. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  29. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  30. package/dist/rsuite-no-reset.css +0 -7
  31. package/dist/rsuite-no-reset.min.css +1 -1
  32. package/dist/rsuite-no-reset.min.css.map +1 -1
  33. package/dist/rsuite-rtl.css +0 -7
  34. package/dist/rsuite-rtl.min.css +1 -1
  35. package/dist/rsuite-rtl.min.css.map +1 -1
  36. package/dist/rsuite.css +0 -7
  37. package/dist/rsuite.js +7 -18
  38. package/dist/rsuite.js.map +1 -1
  39. package/dist/rsuite.min.css +1 -1
  40. package/dist/rsuite.min.css.map +1 -1
  41. package/dist/rsuite.min.js +1 -1
  42. package/dist/rsuite.min.js.map +1 -1
  43. package/esm/Calendar/hooks/useCalendarState.d.ts +1 -1
  44. package/esm/Calendar/hooks/useCalendarState.js +16 -9
  45. package/esm/Drawer/Drawer.js +6 -13
  46. package/esm/FormControl/hooks/useField.js +4 -1
  47. package/esm/Modal/Modal.d.ts +4 -0
  48. package/esm/Modal/Modal.js +13 -14
  49. package/esm/Modal/ModalBody.js +6 -5
  50. package/esm/Modal/ModalContext.d.ts +4 -0
  51. package/esm/Modal/ModalHeader.js +4 -4
  52. package/esm/internals/hooks/useFocusVirtualListItem.d.ts +5 -2
  53. package/esm/internals/hooks/useFocusVirtualListItem.js +23 -7
  54. package/package.json +1 -1
  55. package/cjs/Drawer/DrawerContext.d.ts +0 -9
  56. package/cjs/Drawer/DrawerContext.js +0 -9
  57. package/esm/Drawer/DrawerContext.d.ts +0 -9
  58. package/esm/Drawer/DrawerContext.js +0 -4
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## [5.73.1](https://github.com/rsuite/rsuite/compare/v5.73.0...v5.73.1) (2024-10-25)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **Calendar:** fix not triggering the `onToggleTimeDropdown` event when collapsing the time panel ([#4009](https://github.com/rsuite/rsuite/issues/4009)) ([9e2d69e](https://github.com/rsuite/rsuite/commit/9e2d69e232b1317e00b856a470e97c2d7b4ddd37))
7
+ * **CheckTree:** fix focus lost when search keyword matches selected item ([#4017](https://github.com/rsuite/rsuite/issues/4017)) ([119fed2](https://github.com/rsuite/rsuite/commit/119fed2778c2defb5cb772050cc52e9f72f63d87))
8
+ * **Modal:** the style of Modal is messy when it's rendered inside of a Drawer ([#4016](https://github.com/rsuite/rsuite/issues/4016)) ([922ab04](https://github.com/rsuite/rsuite/commit/922ab04eb09f0437fa21db91b69cf7c8d9e407fc))
9
+
10
+
11
+ ### Features
12
+
13
+ * **FormErrorMessage:** support display react element ([#4013](https://github.com/rsuite/rsuite/issues/4013)) ([50f22fc](https://github.com/rsuite/rsuite/commit/50f22fc104aa0e32c255aed4da89b6cb2c6a2447))
14
+
15
+
16
+
1
17
  # [5.73.0](https://github.com/rsuite/rsuite/compare/v5.72.0...v5.73.0) (2024-10-18)
2
18
 
3
19
 
@@ -3627,7 +3627,6 @@ label:hover .rs-checkbox-control .rs-checkbox-inner::before {
3627
3627
  border-radius: 6px;
3628
3628
  }
3629
3629
  .rs-check-tree-node .rs-check-item.rs-checkbox-disabled .rs-checkbox-label {
3630
- cursor: not-allowed;
3631
3630
  color: #717273;
3632
3631
  color: var(--rs-text-disabled);
3633
3632
  background: none;
@@ -103,7 +103,6 @@
103
103
 
104
104
  &.rs-checkbox-disabled {
105
105
  .rs-checkbox-label {
106
- cursor: not-allowed;
107
106
  color: var(--rs-text-disabled);
108
107
  background: none;
109
108
  }
@@ -3627,7 +3627,6 @@ label:hover .rs-checkbox-control .rs-checkbox-inner::before {
3627
3627
  border-radius: 6px;
3628
3628
  }
3629
3629
  .rs-check-tree-node .rs-check-item.rs-checkbox-disabled .rs-checkbox-label {
3630
- cursor: not-allowed;
3631
3630
  color: #717273;
3632
3631
  color: var(--rs-text-disabled);
3633
3632
  background: none;
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  &&-disabled label {
32
- cursor: not-allowed;
32
+ cursor: @cursor-disabled;
33
33
  }
34
34
 
35
35
  // Disabled text styles.
@@ -1,6 +1,67 @@
1
+ :root,
2
+ .rs-theme-light {
3
+ --rs-gray-200: #e5e5ea;
4
+ --rs-gray-300: #d9d9d9;
5
+ --rs-gray-400: #b6b7b8;
6
+ --rs-gray-600: #717273;
7
+ --rs-gray-800: #343434;
8
+ --rs-primary-200: #a6d7ff;
9
+ --rs-primary-500: #3498ff;
10
+ --rs-primary-900: #004299;
11
+ --rs-text-secondary: var(--rs-gray-600);
12
+ --rs-text-disabled: var(--rs-gray-600);
13
+ --rs-radio-tile-border: var(--rs-gray-300);
14
+ --rs-radio-tile-checked-color: var(--rs-primary-500);
15
+ --rs-radio-tile-checked-mark-color: #fff;
16
+ --rs-radio-tile-checked-disabled-color: var(--rs-primary-200);
17
+ --rs-radio-tile-icon-size: 32px;
18
+ }
19
+ .rs-theme-dark {
20
+ --rs-gray-200: #a4a9b3;
21
+ --rs-gray-300: #858b94;
22
+ --rs-gray-400: #6a6f76;
23
+ --rs-gray-600: #3c3f43;
24
+ --rs-gray-800: #1a1d24;
25
+ --rs-primary-200: #a6e9ff;
26
+ --rs-primary-500: #34c3ff;
27
+ --rs-primary-900: #006199;
28
+ --rs-text-secondary: var(--rs-gray-200);
29
+ --rs-text-disabled: var(--rs-gray-400);
30
+ --rs-radio-tile-border: var(--rs-gray-300);
31
+ --rs-radio-tile-checked-color: var(--rs-primary-500);
32
+ --rs-radio-tile-checked-mark-color: var(--rs-gray-800);
33
+ --rs-radio-tile-checked-disabled-color: var(--rs-primary-900);
34
+ }
35
+ .rs-theme-high-contrast {
36
+ --rs-gray-200: #a4a9b3;
37
+ --rs-gray-300: #858b94;
38
+ --rs-gray-400: #6a6f76;
39
+ --rs-gray-600: #3c3f43;
40
+ --rs-gray-800: #1a1d24;
41
+ --rs-primary-200: #fffa91;
42
+ --rs-primary-500: #ffff00;
43
+ --rs-primary-900: #8f9900;
44
+ --rs-text-secondary: var(--rs-gray-200);
45
+ --rs-text-disabled: var(--rs-gray-400);
46
+ --rs-radio-tile-border: var(--rs-gray-300);
47
+ --rs-radio-tile-checked-color: var(--rs-primary-500);
48
+ --rs-radio-tile-checked-mark-color: var(--rs-gray-800);
49
+ --rs-radio-tile-checked-disabled-color: var(--rs-primary-900);
50
+ }
51
+ /* stylelint-disable */
52
+ *[class*='rs-'] {
53
+ -webkit-box-sizing: border-box;
54
+ box-sizing: border-box;
55
+ }
56
+ *[class*='rs-']::before,
57
+ *[class*='rs-']::after {
58
+ -webkit-box-sizing: border-box;
59
+ box-sizing: border-box;
60
+ }
1
61
  .rs-radio-tile {
2
62
  border-radius: 6px;
3
63
  overflow: hidden;
64
+ border: 2px solid #d9d9d9;
4
65
  border: 2px solid var(--rs-radio-tile-border);
5
66
  padding: 10px;
6
67
  position: relative;
@@ -10,9 +71,11 @@
10
71
  font-weight: bold;
11
72
  }
12
73
  .rs-radio-tile-content {
74
+ color: #717273;
13
75
  color: var(--rs-text-secondary);
14
76
  }
15
77
  .rs-radio-tile-mark {
78
+ background: #3498ff;
16
79
  background: var(--rs-radio-tile-checked-color);
17
80
  border-bottom-left-radius: 50%;
18
81
  height: 48px;
@@ -28,23 +91,28 @@
28
91
  font-size: 16px;
29
92
  top: 25px;
30
93
  left: 7px;
94
+ color: #fff;
31
95
  color: var(--rs-radio-tile-checked-mark-color);
32
96
  }
33
97
  .rs-radio-tile-checked .rs-radio-tile-mark {
34
98
  opacity: 1;
35
99
  }
36
100
  .rs-radio-tile-checked.rs-radio-tile-disabled {
101
+ border-color: #a6d7ff;
37
102
  border-color: var(--rs-radio-tile-checked-disabled-color);
38
103
  }
39
104
  .rs-radio-tile-checked.rs-radio-tile-disabled .rs-radio-tile-mark {
105
+ background-color: #a6d7ff;
40
106
  background-color: var(--rs-radio-tile-checked-disabled-color);
41
107
  }
42
108
  .rs-radio-tile-checked,
43
109
  .rs-radio-tile:hover:not(.rs-radio-tile-disabled) {
110
+ border: 2px solid #3498ff;
44
111
  border: 2px solid var(--rs-radio-tile-checked-color);
45
112
  }
46
113
  .rs-radio-tile-disabled,
47
114
  .rs-radio-tile-disabled .rs-radio-tile-content {
115
+ color: #717273;
48
116
  color: var(--rs-text-disabled);
49
117
  cursor: not-allowed;
50
118
  }
@@ -55,6 +123,7 @@
55
123
  position: absolute;
56
124
  }
57
125
  .rs-radio-tile-icon {
126
+ font-size: 32px;
58
127
  font-size: var(--rs-radio-tile-icon-size);
59
128
  }
60
129
 
@@ -1,3 +1,5 @@
1
+ @import '../../styles/common';
2
+
1
3
  .rs-radio-tile {
2
4
  border-radius: 6px;
3
5
  overflow: hidden;
@@ -53,7 +55,7 @@
53
55
  &-disabled,
54
56
  &-disabled &-content {
55
57
  color: var(--rs-text-disabled);
56
- cursor: not-allowed;
58
+ cursor: @cursor-disabled;
57
59
  }
58
60
 
59
61
  input {
@@ -94,7 +94,7 @@
94
94
  }
95
95
 
96
96
  &-disabled &-character {
97
- cursor: not-allowed;
97
+ cursor: @cursor-disabled;
98
98
  }
99
99
 
100
100
  &-readonly &-character {
@@ -19,7 +19,7 @@
19
19
 
20
20
  &-disabled {
21
21
  opacity: 0.5;
22
- cursor: not-allowed;
22
+ cursor: @cursor-disabled;
23
23
 
24
24
  .rs-slider-bar,
25
25
  .rs-slider-handle::before {
@@ -3706,9 +3706,6 @@ textarea.rs-picker-search-input {
3706
3706
  left: 0;
3707
3707
  cursor: text;
3708
3708
  }
3709
- .rs-picker-tag.rs-picker-disabled {
3710
- cursor: not-allowed;
3711
- }
3712
3709
  .rs-picker-tag.rs-picker-disabled .rs-picker-toggle {
3713
3710
  position: absolute;
3714
3711
  }
@@ -3706,9 +3706,6 @@ textarea.rs-picker-search-input {
3706
3706
  left: 0;
3707
3707
  cursor: text;
3708
3708
  }
3709
- .rs-picker-tag.rs-picker-disabled {
3710
- cursor: not-allowed;
3711
- }
3712
3709
  .rs-picker-tag.rs-picker-disabled .rs-picker-toggle {
3713
3710
  position: absolute;
3714
3711
  }
@@ -13,8 +13,6 @@
13
13
  }
14
14
 
15
15
  &.rs-picker-disabled {
16
- cursor: not-allowed;
17
-
18
16
  .rs-picker-toggle {
19
17
  position: absolute;
20
18
  }
@@ -313,9 +313,6 @@
313
313
  display: block;
314
314
  bottom: -4px;
315
315
  }
316
- .rs-tree-node-drag-disabled.rs-tree-node-label {
317
- cursor: not-allowed;
318
- }
319
316
  .rs-tree-node-disabled .rs-tree-node-label {
320
317
  background: none;
321
318
  color: #b6b7b8;
@@ -135,12 +135,6 @@
135
135
  }
136
136
  }
137
137
 
138
- &-drag-disabled {
139
- &.rs-tree-node-label {
140
- cursor: not-allowed;
141
- }
142
- }
143
-
144
138
  &-disabled {
145
139
  .rs-tree-node-label {
146
140
  background: none;
@@ -313,9 +313,6 @@
313
313
  display: block;
314
314
  bottom: -4px;
315
315
  }
316
- .rs-tree-node-drag-disabled.rs-tree-node-label {
317
- cursor: not-allowed;
318
- }
319
316
  .rs-tree-node-disabled .rs-tree-node-label {
320
317
  background: none;
321
318
  color: #b6b7b8;
@@ -18,5 +18,5 @@ export declare const useCalendarState: (props: CalendarStateProps) => {
18
18
  onToggleTimeDropdown: (...args: any[]) => any;
19
19
  onToggleMonthDropdown: (...args: any[]) => any;
20
20
  };
21
- reset: () => void;
21
+ reset: (...args: any[]) => any;
22
22
  };
@@ -15,9 +15,16 @@ var useCalendarState = exports.useCalendarState = function useCalendarState(prop
15
15
  var _useState = (0, _react.useState)(props.defaultState),
16
16
  calendarState = _useState[0],
17
17
  setCalendarState = _useState[1];
18
- var reset = (0, _react.useCallback)(function () {
18
+ var reset = (0, _hooks.useEventCallback)(function () {
19
19
  setCalendarState(undefined);
20
- }, []);
20
+ if (calendarState === CalendarState.TIME) {
21
+ var _props$onToggleTimeDr;
22
+ (_props$onToggleTimeDr = props.onToggleTimeDropdown) === null || _props$onToggleTimeDr === void 0 ? void 0 : _props$onToggleTimeDr.call(props, false);
23
+ } else if (calendarState === CalendarState.MONTH) {
24
+ var _props$onToggleMonthD;
25
+ (_props$onToggleMonthD = props.onToggleMonthDropdown) === null || _props$onToggleMonthD === void 0 ? void 0 : _props$onToggleMonthD.call(props, false);
26
+ }
27
+ });
21
28
  var onMoveForward = (0, _hooks.useEventCallback)(function () {
22
29
  var _props$onMoveForward;
23
30
  (_props$onMoveForward = props.onMoveForward) === null || _props$onMoveForward === void 0 ? void 0 : _props$onMoveForward.call(props, (0, _date.addMonths)(props.calendarDate, 1));
@@ -27,22 +34,22 @@ var useCalendarState = exports.useCalendarState = function useCalendarState(prop
27
34
  (_props$onMoveBackward = props.onMoveBackward) === null || _props$onMoveBackward === void 0 ? void 0 : _props$onMoveBackward.call(props, (0, _date.addMonths)(props.calendarDate, -1));
28
35
  });
29
36
  var onToggleTimeDropdown = (0, _hooks.useEventCallback)(function () {
30
- var _props$onToggleTimeDr;
37
+ var _props$onToggleTimeDr2;
31
38
  if (calendarState === CalendarState.TIME) {
32
- reset();
39
+ setCalendarState(undefined);
33
40
  } else {
34
41
  setCalendarState(CalendarState.TIME);
35
42
  }
36
- (_props$onToggleTimeDr = props.onToggleTimeDropdown) === null || _props$onToggleTimeDr === void 0 ? void 0 : _props$onToggleTimeDr.call(props, calendarState !== CalendarState.TIME);
43
+ (_props$onToggleTimeDr2 = props.onToggleTimeDropdown) === null || _props$onToggleTimeDr2 === void 0 ? void 0 : _props$onToggleTimeDr2.call(props, calendarState !== CalendarState.TIME);
37
44
  });
38
45
  var onToggleMonthDropdown = (0, _hooks.useEventCallback)(function () {
39
- var _props$onToggleMonthD;
46
+ var _props$onToggleMonthD2;
40
47
  if (calendarState === CalendarState.MONTH) {
41
- reset();
48
+ setCalendarState(undefined);
42
49
  } else {
43
50
  setCalendarState(CalendarState.MONTH);
44
51
  }
45
- (_props$onToggleMonthD = props.onToggleMonthDropdown) === null || _props$onToggleMonthD === void 0 ? void 0 : _props$onToggleMonthD.call(props, calendarState !== CalendarState.MONTH);
52
+ (_props$onToggleMonthD2 = props.onToggleMonthDropdown) === null || _props$onToggleMonthD2 === void 0 ? void 0 : _props$onToggleMonthD2.call(props, calendarState !== CalendarState.MONTH);
46
53
  });
47
54
  var handlers = (0, _react.useMemo)(function () {
48
55
  return {
@@ -6,13 +6,12 @@ exports.__esModule = true;
6
6
  exports.default = void 0;
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
8
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
- var _react = _interopRequireWildcard(require("react"));
9
+ var _react = _interopRequireDefault(require("react"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _Slide = _interopRequireDefault(require("../Animation/Slide"));
12
12
  var _Modal = _interopRequireDefault(require("../Modal"));
13
13
  var _hooks = require("../internals/hooks");
14
14
  var _utils = require("../internals/utils");
15
- var _DrawerContext = _interopRequireDefault(require("./DrawerContext"));
16
15
  var _propTypes2 = require("../internals/propTypes");
17
16
  var _DrawerBody = _interopRequireDefault(require("./DrawerBody"));
18
17
  var _DrawerHeader = _interopRequireDefault(require("./DrawerHeader"));
@@ -20,8 +19,6 @@ var _DrawerActions = _interopRequireDefault(require("./DrawerActions"));
20
19
  var _DrawerFooter = _interopRequireDefault(require("./DrawerFooter"));
21
20
  var _DrawerTitle = _interopRequireDefault(require("./DrawerTitle"));
22
21
  var _excluded = ["className", "placement", "classPrefix", "animation", "closeButton"];
23
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
22
  /**
26
23
  * The Drawer component is used to display extra content from a main content.
27
24
  * @see https://rsuitejs.com/components/drawer
@@ -44,22 +41,16 @@ var Drawer = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
44
41
  var animationProps = {
45
42
  placement: placement
46
43
  };
47
- var contextValue = (0, _react.useMemo)(function () {
48
- return {
49
- closeButton: closeButton,
50
- isDrawer: true
51
- };
52
- }, [closeButton]);
53
- return /*#__PURE__*/_react.default.createElement(_DrawerContext.default.Provider, {
54
- value: contextValue
55
- }, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
44
+ return /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
56
45
  ref: ref,
57
46
  overflow: false,
58
47
  classPrefix: classPrefix,
59
48
  className: classes,
60
49
  animation: animation,
61
- animationProps: animationProps
62
- })));
50
+ animationProps: animationProps,
51
+ isDrawer: true,
52
+ closeButton: closeButton
53
+ }));
63
54
  });
64
55
  _DrawerBody.default.displayName = 'DrawerBody';
65
56
  _DrawerHeader.default.displayName = 'DrawerHeader';
@@ -22,6 +22,9 @@ function getErrorMessage(error) {
22
22
  if (error !== null && error !== void 0 && error.array && ((_error$array = error.array) === null || _error$array === void 0 ? void 0 : _error$array.length) > 0) {
23
23
  return error.array[0].errorMessage;
24
24
  }
25
+ if ( /*#__PURE__*/(0, _react.isValidElement)(error)) {
26
+ return error;
27
+ }
25
28
  return error === null || error === void 0 ? void 0 : error.errorMessage;
26
29
  }
27
30
  function useField(props) {
@@ -27,6 +27,10 @@ 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
+ /** Indicates if the component should be displayed as a drawer */
31
+ isDrawer?: boolean;
32
+ /** Custom close button, used when rendered as a Drawer */
33
+ closeButton?: React.ReactNode | boolean;
30
34
  }
31
35
  interface ModalComponent extends RsRefForwardingComponent<'div', ModalProps> {
32
36
  Body: typeof ModalBody;
@@ -24,9 +24,8 @@ var _ModalTitle = _interopRequireDefault(require("./ModalTitle"));
24
24
  var _ModalFooter = _interopRequireDefault(require("./ModalFooter"));
25
25
  var _utils2 = require("./utils");
26
26
  var _propTypes2 = require("../internals/propTypes");
27
- var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
28
27
  var _templateObject, _templateObject2, _templateObject3;
29
- var _excluded = ["animation", "animationProps", "animationTimeout", "aria-labelledby", "aria-describedby", "backdropClassName", "backdrop", "className", "children", "classPrefix", "dialogClassName", "dialogStyle", "dialogAs", "enforceFocus", "full", "overflow", "open", "onClose", "onEntered", "onEntering", "onExited", "role", "size", "id"],
28
+ var _excluded = ["animation", "animationProps", "animationTimeout", "aria-labelledby", "aria-describedby", "backdropClassName", "backdrop", "className", "children", "classPrefix", "dialogClassName", "dialogStyle", "dialogAs", "enforceFocus", "full", "overflow", "open", "onClose", "onEntered", "onEntering", "onExited", "role", "size", "id", "isDrawer", "closeButton"],
30
29
  _excluded2 = ["className"];
31
30
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
32
31
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -69,6 +68,9 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
69
68
  _props$size = props.size,
70
69
  size = _props$size === void 0 ? 'sm' : _props$size,
71
70
  idProp = props.id,
71
+ _props$isDrawer = props.isDrawer,
72
+ isDrawer = _props$isDrawer === void 0 ? false : _props$isDrawer,
73
+ closeButton = props.closeButton,
72
74
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
73
75
  var inClass = {
74
76
  in: open && !animation
@@ -85,11 +87,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
85
87
  var dialogRef = (0, _react.useRef)(null);
86
88
  var transitionEndListener = (0, _react.useRef)();
87
89
 
88
- // Render Modal as Drawer
89
- var _ref = (0, _react.useContext)(_DrawerContext.default) || {},
90
- _ref$isDrawer = _ref.isDrawer,
91
- isDrawer = _ref$isDrawer === void 0 ? false : _ref$isDrawer;
92
-
93
90
  // The style of the Modal body will be updated with the size of the window or container.
94
91
  var _useBodyStyles = (0, _utils2.useBodyStyles)(dialogRef, {
95
92
  overflow: overflow,
@@ -106,9 +103,11 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
106
103
  onModalClose: onClose,
107
104
  getBodyStyles: function getBodyStyles() {
108
105
  return bodyStyles;
109
- }
106
+ },
107
+ closeButton: closeButton,
108
+ isDrawer: isDrawer
110
109
  };
111
- }, [dialogId, onClose, bodyStyles]);
110
+ }, [dialogId, onClose, closeButton, isDrawer, bodyStyles]);
112
111
  var handleExited = (0, _react.useCallback)(function (node) {
113
112
  var _transitionEndListene;
114
113
  onExited === null || onExited === void 0 ? void 0 : onExited(node);
@@ -164,8 +163,8 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
164
163
  });
165
164
  var sizeKey = 'width';
166
165
  if (isDrawer) {
167
- var _ref2 = animationProps || {},
168
- placement = _ref2.placement;
166
+ var _ref = animationProps || {},
167
+ placement = _ref.placement;
169
168
  // The width or height of the drawer depends on the placement.
170
169
  sizeKey = placement === 'top' || placement === 'bottom' ? 'height' : 'width';
171
170
  }
@@ -206,7 +205,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
206
205
  onClick: backdrop ? handleBackdropClick : undefined,
207
206
  onMouseDown: handleMouseDown
208
207
  }), function (transitionProps, transitionRef) {
209
- var _ref3;
208
+ var _ref2;
210
209
  var transitionClassName = transitionProps.className,
211
210
  transitionRest = (0, _objectWithoutPropertiesLoose2.default)(transitionProps, _excluded2);
212
211
  return /*#__PURE__*/_react.default.createElement(Dialog, (0, _extends2.default)({
@@ -214,7 +213,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
214
213
  id: dialogId,
215
214
  "aria-labelledby": ariaLabelledby !== null && ariaLabelledby !== void 0 ? ariaLabelledby : dialogId + "-title",
216
215
  "aria-describedby": ariaDescribedby,
217
- style: (_ref3 = {}, _ref3[sizeKey] = modalSizes.includes(size) ? undefined : size, _ref3)
216
+ style: (_ref2 = {}, _ref2[sizeKey] = modalSizes.includes(size) ? undefined : size, _ref2)
218
217
  }, transitionRest, (0, _pick.default)(rest, Object.keys(_ModalDialog.modalDialogPropTypes)), {
219
218
  ref: (0, _utils.mergeRefs)(dialogRef, transitionRef),
220
219
  classPrefix: classPrefix,
@@ -12,12 +12,10 @@ var _hooks = require("../internals/hooks");
12
12
  var _ModalContext = require("./ModalContext");
13
13
  var _IconButton = _interopRequireDefault(require("../IconButton"));
14
14
  var _Close = _interopRequireDefault(require("@rsuite/icons/Close"));
15
- var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
16
15
  var _excluded = ["as", "classPrefix", "className", "style", "children"];
17
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
18
  var ModalBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
20
- var _context$getBodyStyle, _useContext;
21
19
  var _props$as = props.as,
22
20
  Component = _props$as === void 0 ? 'div' : _props$as,
23
21
  _props$classPrefix = props.classPrefix,
@@ -32,8 +30,11 @@ var ModalBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
32
30
  prefix = _useClassNames.prefix;
33
31
  var classes = merge(className, withClassPrefix());
34
32
  var context = (0, _react.useContext)(_ModalContext.ModalContext);
35
- var bodyStyles = context === null || context === void 0 ? void 0 : (_context$getBodyStyle = context.getBodyStyles) === null || _context$getBodyStyle === void 0 ? void 0 : _context$getBodyStyle.call(context);
36
- var closeButton = (_useContext = (0, _react.useContext)(_DrawerContext.default)) === null || _useContext === void 0 ? void 0 : _useContext.closeButton;
33
+ var _ref = context || {},
34
+ getBodyStyles = _ref.getBodyStyles,
35
+ closeButton = _ref.closeButton,
36
+ onModalClose = _ref.onModalClose;
37
+ var bodyStyles = getBodyStyles === null || getBodyStyles === void 0 ? void 0 : getBodyStyles();
37
38
  var buttonElement = null;
38
39
  if (closeButton) {
39
40
  buttonElement = typeof closeButton === 'boolean' ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
@@ -41,7 +42,7 @@ var ModalBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
41
42
  appearance: "subtle",
42
43
  size: "sm",
43
44
  className: prefix('close'),
44
- onClick: context === null || context === void 0 ? void 0 : context.onModalClose
45
+ onClick: onModalClose
45
46
  }) : closeButton;
46
47
  }
47
48
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
@@ -6,5 +6,9 @@ export interface ModalContextProps {
6
6
  onModalClose?: (event: React.MouseEvent<Element, MouseEvent>) => void;
7
7
  /** Pass the latest style to body. */
8
8
  getBodyStyles?: () => React.CSSProperties | null;
9
+ /** Indicates if the component should be displayed as a drawer */
10
+ isDrawer?: boolean;
11
+ /** Custom close button used when rendered as a Drawer */
12
+ closeButton?: React.ReactNode | boolean;
9
13
  }
10
14
  export declare const ModalContext: React.Context<ModalContextProps | null>;
@@ -14,12 +14,10 @@ var _ModalContext = require("./ModalContext");
14
14
  var _CloseButton = _interopRequireDefault(require("../internals/CloseButton"));
15
15
  var _Close = _interopRequireDefault(require("@rsuite/icons/Close"));
16
16
  var _IconButton = _interopRequireDefault(require("../IconButton"));
17
- var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
18
17
  var _excluded = ["as", "classPrefix", "className", "closeButton", "children", "onClose"];
19
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
20
  var ModalHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
22
- var _useContext, _useContext2;
23
21
  var _props$as = props.as,
24
22
  Component = _props$as === void 0 ? 'div' : _props$as,
25
23
  _props$classPrefix = props.classPrefix,
@@ -35,8 +33,10 @@ var ModalHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
33
  withClassPrefix = _useClassNames.withClassPrefix,
36
34
  prefix = _useClassNames.prefix;
37
35
  var classes = merge(className, withClassPrefix());
38
- var onModalClose = (_useContext = (0, _react.useContext)(_ModalContext.ModalContext)) === null || _useContext === void 0 ? void 0 : _useContext.onModalClose;
39
- var isDrawer = (_useContext2 = (0, _react.useContext)(_DrawerContext.default)) === null || _useContext2 === void 0 ? void 0 : _useContext2.isDrawer;
36
+ var context = (0, _react.useContext)(_ModalContext.ModalContext);
37
+ var _ref = context || {},
38
+ isDrawer = _ref.isDrawer,
39
+ onModalClose = _ref.onModalClose;
40
40
  var buttonElement = isDrawer ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
41
41
  icon: /*#__PURE__*/_react.default.createElement(_Close.default, null),
42
42
  appearance: "subtle",
@@ -1,7 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  /**
3
- * Virtualized list loses focus when scrolling or clicking options, causing the component to re-render.
4
- * To solve this problem, we need to refocus on the selected option after the component is re-rendered.
3
+ * Ensures that a virtualized list item retains focus after scrolling or clicking on options,
4
+ * preventing unnecessary re-renders and loss of focus. If the current focus is on an interactive
5
+ * element (such as input, textarea, select, button, or contenteditable), the focus is not shifted.
6
+ * @param focused - Boolean indicating if the item should be focused.
7
+ * @returns A ref to be attached to the list item element.
5
8
  */
6
9
  export declare function useFocusVirtualListItem<T extends HTMLElement>(focused?: boolean): import("react").RefObject<T>;
7
10
  export default useFocusVirtualListItem;
@@ -6,19 +6,35 @@ exports.default = void 0;
6
6
  exports.useFocusVirtualListItem = useFocusVirtualListItem;
7
7
  var _react = require("react");
8
8
  /**
9
- * Virtualized list loses focus when scrolling or clicking options, causing the component to re-render.
10
- * To solve this problem, we need to refocus on the selected option after the component is re-rendered.
9
+ * Ensures that a virtualized list item retains focus after scrolling or clicking on options,
10
+ * preventing unnecessary re-renders and loss of focus. If the current focus is on an interactive
11
+ * element (such as input, textarea, select, button, or contenteditable), the focus is not shifted.
12
+ * @param focused - Boolean indicating if the item should be focused.
13
+ * @returns A ref to be attached to the list item element.
11
14
  */
12
15
  function useFocusVirtualListItem(focused) {
13
16
  var itemRef = (0, _react.useRef)(null);
14
17
  (0, _react.useEffect)(function () {
15
- if (!focused) {
18
+ if (!focused || !itemRef.current) {
16
19
  return;
17
20
  }
18
- if (document.activeElement !== itemRef.current) {
19
- var _itemRef$current;
20
- // Focus on the selected option.
21
- (_itemRef$current = itemRef.current) === null || _itemRef$current === void 0 ? void 0 : _itemRef$current.focus();
21
+ var activeElement = document.activeElement;
22
+
23
+ // Helper function to determine if the element should retain focus
24
+ var isInteractiveElement = function isInteractiveElement(element) {
25
+ var tagName = element.tagName;
26
+ return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT' || tagName === 'BUTTON' || element.isContentEditable || element.tabIndex >= 0 // Elements with tabindex are considered focusable
27
+ ;
28
+ };
29
+
30
+ // If the active element is an interactive one, don't shift focus.
31
+ if (activeElement && isInteractiveElement(activeElement)) {
32
+ return;
33
+ }
34
+
35
+ // If the currently focused element is not the target item, focus it.
36
+ if (activeElement !== itemRef.current) {
37
+ itemRef.current.focus();
22
38
  }
23
39
  }, [focused]);
24
40
  return itemRef;
@@ -4485,7 +4485,6 @@ label:hover .rs-checkbox-control .rs-checkbox-inner::before {
4485
4485
  border-radius: 6px;
4486
4486
  }
4487
4487
  .rs-check-tree-node .rs-check-item.rs-checkbox-disabled .rs-checkbox-label {
4488
- cursor: not-allowed;
4489
4488
  color: #717273;
4490
4489
  color: var(--rs-text-disabled);
4491
4490
  background: none;
@@ -14381,9 +14380,6 @@ textarea.rs-inline-edit-sm .rs-plaintext {
14381
14380
  right: 0;
14382
14381
  cursor: text;
14383
14382
  }
14384
- .rs-picker-tag.rs-picker-disabled {
14385
- cursor: not-allowed;
14386
- }
14387
14383
  .rs-picker-tag.rs-picker-disabled .rs-picker-toggle {
14388
14384
  position: absolute;
14389
14385
  }
@@ -15505,9 +15501,6 @@ textarea.rs-inline-edit-sm .rs-plaintext {
15505
15501
  display: block;
15506
15502
  bottom: -4px;
15507
15503
  }
15508
- .rs-tree-node-drag-disabled.rs-tree-node-label {
15509
- cursor: not-allowed;
15510
- }
15511
15504
  .rs-tree-node-disabled .rs-tree-node-label {
15512
15505
  background: none;
15513
15506
  color: #b6b7b8;