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.
- package/CHANGELOG.md +16 -0
- package/CheckTree/styles/index.css +0 -1
- package/CheckTree/styles/index.less +0 -1
- package/CheckTreePicker/styles/index.css +0 -1
- package/Checkbox/styles/mixin.less +1 -1
- package/RadioTile/styles/index.css +69 -0
- package/RadioTile/styles/index.less +3 -1
- package/Rate/styles/index.less +1 -1
- package/Slider/styles/index.less +1 -1
- package/TagInput/styles/index.css +0 -3
- package/TagPicker/styles/index.css +0 -3
- package/TagPicker/styles/index.less +0 -2
- package/Tree/styles/index.css +0 -3
- package/Tree/styles/index.less +0 -6
- package/TreePicker/styles/index.css +0 -3
- package/cjs/Calendar/hooks/useCalendarState.d.ts +1 -1
- package/cjs/Calendar/hooks/useCalendarState.js +15 -8
- package/cjs/Drawer/Drawer.js +6 -15
- package/cjs/FormControl/hooks/useField.js +3 -0
- package/cjs/Modal/Modal.d.ts +4 -0
- package/cjs/Modal/Modal.js +12 -13
- package/cjs/Modal/ModalBody.js +6 -5
- package/cjs/Modal/ModalContext.d.ts +4 -0
- package/cjs/Modal/ModalHeader.js +4 -4
- package/cjs/internals/hooks/useFocusVirtualListItem.d.ts +5 -2
- package/cjs/internals/hooks/useFocusVirtualListItem.js +23 -7
- package/dist/rsuite-no-reset-rtl.css +0 -7
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +0 -7
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +0 -7
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +0 -7
- package/dist/rsuite.js +7 -18
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/hooks/useCalendarState.d.ts +1 -1
- package/esm/Calendar/hooks/useCalendarState.js +16 -9
- package/esm/Drawer/Drawer.js +6 -13
- package/esm/FormControl/hooks/useField.js +4 -1
- package/esm/Modal/Modal.d.ts +4 -0
- package/esm/Modal/Modal.js +13 -14
- package/esm/Modal/ModalBody.js +6 -5
- package/esm/Modal/ModalContext.d.ts +4 -0
- package/esm/Modal/ModalHeader.js +4 -4
- package/esm/internals/hooks/useFocusVirtualListItem.d.ts +5 -2
- package/esm/internals/hooks/useFocusVirtualListItem.js +23 -7
- package/package.json +1 -1
- package/cjs/Drawer/DrawerContext.d.ts +0 -9
- package/cjs/Drawer/DrawerContext.js +0 -9
- package/esm/Drawer/DrawerContext.d.ts +0 -9
- 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;
|
|
@@ -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;
|
|
@@ -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:
|
|
58
|
+
cursor: @cursor-disabled;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
input {
|
package/Rate/styles/index.less
CHANGED
package/Slider/styles/index.less
CHANGED
package/Tree/styles/index.css
CHANGED
package/Tree/styles/index.less
CHANGED
|
@@ -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,
|
|
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$
|
|
37
|
+
var _props$onToggleTimeDr2;
|
|
31
38
|
if (calendarState === CalendarState.TIME) {
|
|
32
|
-
|
|
39
|
+
setCalendarState(undefined);
|
|
33
40
|
} else {
|
|
34
41
|
setCalendarState(CalendarState.TIME);
|
|
35
42
|
}
|
|
36
|
-
(_props$
|
|
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$
|
|
46
|
+
var _props$onToggleMonthD2;
|
|
40
47
|
if (calendarState === CalendarState.MONTH) {
|
|
41
|
-
|
|
48
|
+
setCalendarState(undefined);
|
|
42
49
|
} else {
|
|
43
50
|
setCalendarState(CalendarState.MONTH);
|
|
44
51
|
}
|
|
45
|
-
(_props$
|
|
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 {
|
package/cjs/Drawer/Drawer.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
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) {
|
package/cjs/Modal/Modal.d.ts
CHANGED
|
@@ -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;
|
package/cjs/Modal/Modal.js
CHANGED
|
@@ -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
|
|
168
|
-
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
|
|
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: (
|
|
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,
|
package/cjs/Modal/ModalBody.js
CHANGED
|
@@ -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
|
|
36
|
-
|
|
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:
|
|
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>;
|
package/cjs/Modal/ModalHeader.js
CHANGED
|
@@ -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
|
|
39
|
-
var
|
|
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
|
-
*
|
|
4
|
-
*
|
|
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
|
-
*
|
|
10
|
-
*
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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;
|