rsuite 5.44.0 → 5.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Button/styles/index.less +1 -1
- package/CHANGELOG.md +12 -0
- package/Drawer/styles/index.less +1 -1
- package/Modal/styles/index.less +24 -2
- package/cjs/Drawer/Drawer.d.ts +2 -0
- package/cjs/Drawer/Drawer.js +16 -5
- package/cjs/Drawer/DrawerContext.d.ts +9 -0
- package/cjs/Drawer/DrawerContext.js +10 -0
- package/cjs/FormControl/FormControl.js +1 -1
- package/cjs/Modal/Modal.d.ts +2 -4
- package/cjs/Modal/Modal.js +24 -13
- package/cjs/Modal/ModalBody.js +14 -8
- package/cjs/Modal/ModalContext.d.ts +1 -3
- package/cjs/Modal/ModalHeader.js +9 -6
- package/cjs/Modal/index.d.ts +1 -0
- package/cjs/Modal/utils.d.ts +4 -1
- package/cjs/Modal/utils.js +9 -4
- package/dist/rsuite-no-reset-rtl.css +33 -4
- 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 +33 -4
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +33 -4
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +33 -4
- package/dist/rsuite.js +18 -7
- 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/Drawer/Drawer.d.ts +2 -0
- package/esm/Drawer/Drawer.js +15 -5
- package/esm/Drawer/DrawerContext.d.ts +9 -0
- package/esm/Drawer/DrawerContext.js +4 -0
- package/esm/FormControl/FormControl.js +1 -1
- package/esm/Modal/Modal.d.ts +2 -4
- package/esm/Modal/Modal.js +25 -14
- package/esm/Modal/ModalBody.js +14 -8
- package/esm/Modal/ModalContext.d.ts +1 -3
- package/esm/Modal/ModalHeader.js +9 -6
- package/esm/Modal/index.d.ts +1 -0
- package/esm/Modal/utils.d.ts +4 -1
- package/esm/Modal/utils.js +9 -4
- package/package.json +2 -2
package/Button/styles/index.less
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
# [5.45.0](https://github.com/rsuite/rsuite/compare/v5.44.0...v5.45.0) (2023-11-17)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **Button:** fix button radius using wrong less variable ([#3451](https://github.com/rsuite/rsuite/issues/3451)) ([037a2b3](https://github.com/rsuite/rsuite/commit/037a2b3fb2696a55390018958a3d84cd0dc38958))
|
|
6
|
+
- formControll will pass undefined as value when value is null defaultValue is undefined ([#3456](https://github.com/rsuite/rsuite/issues/3456)) ([cde5a88](https://github.com/rsuite/rsuite/commit/cde5a889036f1873115b8be2ac31a31b8ff28bd3))
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **Drawer:** add support for closeButton ([#3450](https://github.com/rsuite/rsuite/issues/3450)) ([90f25d0](https://github.com/rsuite/rsuite/commit/90f25d09e131e606c9ebd6dca41c0047e02f7908))
|
|
11
|
+
- **Modal,Drawer:** size prop supports number and string values ([#3103](https://github.com/rsuite/rsuite/issues/3103)) ([39741b7](https://github.com/rsuite/rsuite/commit/39741b755460e29cb8cfefb32bf4056b14cbf985))
|
|
12
|
+
|
|
1
13
|
# [5.44.0](https://github.com/rsuite/rsuite/compare/5.43.0...5.44.0) (2023-11-10)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
package/Drawer/styles/index.less
CHANGED
package/Modal/styles/index.less
CHANGED
|
@@ -72,8 +72,30 @@
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
&-full {
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
margin: 0;
|
|
76
|
+
height: 100%;
|
|
77
|
+
|
|
78
|
+
.rs-modal-content {
|
|
79
|
+
position: absolute;
|
|
80
|
+
height: 100%;
|
|
81
|
+
width: 100%;
|
|
82
|
+
border-radius: 0;
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-direction: column;
|
|
85
|
+
|
|
86
|
+
.rs-modal-header {
|
|
87
|
+
flex: 0 0 auto;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.rs-modal-body {
|
|
91
|
+
flex: 1 1 auto;
|
|
92
|
+
overflow: auto;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.rs-modal-footer {
|
|
96
|
+
flex: 0 0 auto;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
77
99
|
}
|
|
78
100
|
}
|
|
79
101
|
|
package/cjs/Drawer/Drawer.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { TypeAttributes, RsRefForwardingComponent } from '../@types/common';
|
|
|
4
4
|
export interface DrawerProps extends ModalProps {
|
|
5
5
|
/** The placement of Drawer */
|
|
6
6
|
placement?: TypeAttributes.Placement4;
|
|
7
|
+
/** Custom close button */
|
|
8
|
+
closeButton?: React.ReactNode | boolean;
|
|
7
9
|
}
|
|
8
10
|
declare const DrawerBody: RsRefForwardingComponent<'div', ModalBodyProps>;
|
|
9
11
|
declare const DrawerHeader: RsRefForwardingComponent<'div', ModalHeaderProps>;
|
package/cjs/Drawer/Drawer.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
6
|
exports.__esModule = true;
|
|
6
7
|
exports.default = void 0;
|
|
7
8
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
8
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
-
var _react =
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
12
|
var _Slide = _interopRequireDefault(require("../Animation/Slide"));
|
|
12
13
|
var _Modal = _interopRequireDefault(require("../Modal"));
|
|
13
14
|
var _utils = require("../utils");
|
|
14
15
|
var _deprecateComponent = _interopRequireDefault(require("../utils/deprecateComponent"));
|
|
16
|
+
var _DrawerContext = _interopRequireDefault(require("./DrawerContext"));
|
|
15
17
|
var DrawerBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
16
18
|
return /*#__PURE__*/_react.default.createElement(_Modal.default.Body, (0, _extends2.default)({
|
|
17
19
|
classPrefix: "drawer-body"
|
|
@@ -55,7 +57,9 @@ var Drawer = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
55
57
|
classPrefix = _props$classPrefix === void 0 ? 'drawer' : _props$classPrefix,
|
|
56
58
|
_props$animation = props.animation,
|
|
57
59
|
animation = _props$animation === void 0 ? _Slide.default : _props$animation,
|
|
58
|
-
|
|
60
|
+
_props$closeButton = props.closeButton,
|
|
61
|
+
closeButton = _props$closeButton === void 0 ? true : _props$closeButton,
|
|
62
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "placement", "classPrefix", "animation", "closeButton"]);
|
|
59
63
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
60
64
|
merge = _useClassNames.merge,
|
|
61
65
|
prefix = _useClassNames.prefix;
|
|
@@ -63,14 +67,21 @@ var Drawer = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
63
67
|
var animationProps = {
|
|
64
68
|
placement: placement
|
|
65
69
|
};
|
|
66
|
-
|
|
70
|
+
var contextValue = (0, _react.useMemo)(function () {
|
|
71
|
+
return {
|
|
72
|
+
closeButton: closeButton,
|
|
73
|
+
isDrawer: true
|
|
74
|
+
};
|
|
75
|
+
}, [closeButton]);
|
|
76
|
+
return /*#__PURE__*/_react.default.createElement(_DrawerContext.default.Provider, {
|
|
77
|
+
value: contextValue
|
|
78
|
+
}, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
|
|
67
79
|
ref: ref,
|
|
68
|
-
drawer: true,
|
|
69
80
|
classPrefix: classPrefix,
|
|
70
81
|
className: classes,
|
|
71
82
|
animation: animation,
|
|
72
83
|
animationProps: animationProps
|
|
73
|
-
}));
|
|
84
|
+
})));
|
|
74
85
|
});
|
|
75
86
|
DrawerBody.displayName = 'DrawerBody';
|
|
76
87
|
DrawerHeader.displayName = 'DrawerHeader';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface DrawerContextProps {
|
|
3
|
+
/** Custom close button */
|
|
4
|
+
closeButton?: React.ReactNode | boolean;
|
|
5
|
+
/** Render Modal as Drawer */
|
|
6
|
+
isDrawer: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const DrawerContext: React.Context<DrawerContextProps | null>;
|
|
9
|
+
export default DrawerContext;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var DrawerContext = /*#__PURE__*/_react.default.createContext(null);
|
|
9
|
+
var _default = DrawerContext;
|
|
10
|
+
exports.default = _default;
|
|
@@ -134,7 +134,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
134
134
|
if (AccepterComponent === _Toggle.default) {
|
|
135
135
|
valueKey = 'checked';
|
|
136
136
|
}
|
|
137
|
-
var accepterProps = (_accepterProps = {}, _accepterProps[valueKey] = val
|
|
137
|
+
var accepterProps = (_accepterProps = {}, _accepterProps[valueKey] = val === undefined ? defaultValue : val, _accepterProps);
|
|
138
138
|
return /*#__PURE__*/_react.default.createElement(Component, {
|
|
139
139
|
className: classes,
|
|
140
140
|
ref: ref
|
package/cjs/Modal/Modal.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import ModalBody from './ModalBody';
|
|
|
5
5
|
import ModalHeader from './ModalHeader';
|
|
6
6
|
import ModalTitle from './ModalTitle';
|
|
7
7
|
import ModalFooter from './ModalFooter';
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import { ModalSize } from './utils';
|
|
9
|
+
import { RsRefForwardingComponent } from '../@types/common';
|
|
10
10
|
export interface ModalProps extends BaseModalProps, Pick<React.HTMLAttributes<HTMLElement>, 'role' | 'id' | 'aria-labelledby' | 'aria-describedby'> {
|
|
11
11
|
/** A modal can have different sizes */
|
|
12
12
|
size?: ModalSize;
|
|
@@ -27,8 +27,6 @@ export interface ModalProps extends BaseModalProps, Pick<React.HTMLAttributes<HT
|
|
|
27
27
|
dialogAs?: React.ElementType;
|
|
28
28
|
/** Automatically sets the height when the body content is too long. */
|
|
29
29
|
overflow?: boolean;
|
|
30
|
-
/** Render Modal as Drawer */
|
|
31
|
-
drawer?: boolean;
|
|
32
30
|
}
|
|
33
31
|
interface ModalComponent extends RsRefForwardingComponent<'div', ModalProps> {
|
|
34
32
|
Body: typeof ModalBody;
|
package/cjs/Modal/Modal.js
CHANGED
|
@@ -25,9 +25,11 @@ var _ModalFooter = _interopRequireDefault(require("./ModalFooter"));
|
|
|
25
25
|
var _utils2 = require("./utils");
|
|
26
26
|
var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
|
|
27
27
|
var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
|
|
28
|
+
var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
|
|
28
29
|
var _templateObject, _templateObject2;
|
|
29
30
|
var modalSizes = ['xs', 'sm', 'md', 'lg', 'full'];
|
|
30
31
|
var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
32
|
+
var _prefix;
|
|
31
33
|
var className = props.className,
|
|
32
34
|
children = props.children,
|
|
33
35
|
_props$classPrefix = props.classPrefix,
|
|
@@ -50,8 +52,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
50
52
|
animationTimeout = _props$animationTimeo === void 0 ? 300 : _props$animationTimeo,
|
|
51
53
|
_props$overflow = props.overflow,
|
|
52
54
|
overflow = _props$overflow === void 0 ? true : _props$overflow,
|
|
53
|
-
_props$drawer = props.drawer,
|
|
54
|
-
drawer = _props$drawer === void 0 ? false : _props$drawer,
|
|
55
55
|
onClose = props.onClose,
|
|
56
56
|
onEntered = props.onEntered,
|
|
57
57
|
onEntering = props.onEntering,
|
|
@@ -61,7 +61,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
61
61
|
idProp = props.id,
|
|
62
62
|
ariaLabelledby = props['aria-labelledby'],
|
|
63
63
|
ariaDescribedby = props['aria-describedby'],
|
|
64
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "children", "classPrefix", "dialogClassName", "backdropClassName", "backdrop", "dialogStyle", "animation", "open", "size", "full", "dialogAs", "animationProps", "animationTimeout", "overflow", "
|
|
64
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "children", "classPrefix", "dialogClassName", "backdropClassName", "backdrop", "dialogStyle", "animation", "open", "size", "full", "dialogAs", "animationProps", "animationTimeout", "overflow", "onClose", "onEntered", "onEntering", "onExited", "role", "id", "aria-labelledby", "aria-describedby"]);
|
|
65
65
|
var inClass = {
|
|
66
66
|
in: open && !animation
|
|
67
67
|
};
|
|
@@ -71,17 +71,21 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
71
71
|
var _useState = (0, _react.useState)(false),
|
|
72
72
|
shake = _useState[0],
|
|
73
73
|
setShake = _useState[1];
|
|
74
|
-
var classes = merge(className, prefix(
|
|
74
|
+
var classes = merge(className, prefix((_prefix = {
|
|
75
75
|
full: full
|
|
76
|
-
}));
|
|
76
|
+
}, _prefix[size] = modalSizes.includes(size), _prefix)));
|
|
77
77
|
var dialogRef = (0, _react.useRef)(null);
|
|
78
78
|
var transitionEndListener = (0, _react.useRef)();
|
|
79
79
|
|
|
80
|
-
//
|
|
80
|
+
// Render Modal as Drawer
|
|
81
|
+
var _ref = (0, _react.useContext)(_DrawerContext.default) || {},
|
|
82
|
+
_ref$isDrawer = _ref.isDrawer,
|
|
83
|
+
isDrawer = _ref$isDrawer === void 0 ? false : _ref$isDrawer; // The style of the Modal body will be updated with the size of the window or container.
|
|
81
84
|
var _useBodyStyles = (0, _utils2.useBodyStyles)(dialogRef, {
|
|
82
85
|
overflow: overflow,
|
|
83
|
-
drawer:
|
|
84
|
-
prefix: prefix
|
|
86
|
+
drawer: isDrawer,
|
|
87
|
+
prefix: prefix,
|
|
88
|
+
size: size
|
|
85
89
|
}),
|
|
86
90
|
bodyStyles = _useBodyStyles[0],
|
|
87
91
|
onChangeBodyStyles = _useBodyStyles[1],
|
|
@@ -93,10 +97,9 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
93
97
|
onModalClose: onClose,
|
|
94
98
|
getBodyStyles: function getBodyStyles() {
|
|
95
99
|
return bodyStyles;
|
|
96
|
-
}
|
|
97
|
-
isDrawer: drawer
|
|
100
|
+
}
|
|
98
101
|
};
|
|
99
|
-
}, [dialogId, onClose, bodyStyles
|
|
102
|
+
}, [dialogId, onClose, bodyStyles]);
|
|
100
103
|
var handleExited = (0, _react.useCallback)(function (node) {
|
|
101
104
|
var _transitionEndListene;
|
|
102
105
|
onExited === null || onExited === void 0 ? void 0 : onExited(node);
|
|
@@ -150,6 +153,12 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
150
153
|
var _transitionEndListene2;
|
|
151
154
|
(_transitionEndListene2 = transitionEndListener.current) === null || _transitionEndListene2 === void 0 ? void 0 : _transitionEndListene2.off();
|
|
152
155
|
});
|
|
156
|
+
var sizeKey = 'width';
|
|
157
|
+
if (isDrawer) {
|
|
158
|
+
var _ref2 = animationProps || {},
|
|
159
|
+
placement = _ref2.placement; // The width or height of the drawer depends on the placement.
|
|
160
|
+
sizeKey = placement === 'top' || placement === 'bottom' ? 'height' : 'width';
|
|
161
|
+
}
|
|
153
162
|
return /*#__PURE__*/_react.default.createElement(_ModalContext.ModalContext.Provider, {
|
|
154
163
|
value: modalContextValue
|
|
155
164
|
}, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
|
|
@@ -173,13 +182,15 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
173
182
|
onClick: backdrop ? handleBackdropClick : undefined,
|
|
174
183
|
onMouseDown: handleMouseDown
|
|
175
184
|
}), function (transitionProps, transitionRef) {
|
|
185
|
+
var _ref3;
|
|
176
186
|
var transitionClassName = transitionProps.className,
|
|
177
187
|
transitionRest = (0, _objectWithoutPropertiesLoose2.default)(transitionProps, ["className"]);
|
|
178
188
|
return /*#__PURE__*/_react.default.createElement(Dialog, (0, _extends2.default)({
|
|
179
189
|
role: role,
|
|
180
190
|
id: dialogId,
|
|
181
191
|
"aria-labelledby": ariaLabelledby !== null && ariaLabelledby !== void 0 ? ariaLabelledby : dialogId + "-title",
|
|
182
|
-
"aria-describedby": ariaDescribedby
|
|
192
|
+
"aria-describedby": ariaDescribedby,
|
|
193
|
+
style: (_ref3 = {}, _ref3[sizeKey] = modalSizes.includes(size) ? undefined : size, _ref3)
|
|
183
194
|
}, transitionRest, (0, _pick.default)(rest, Object.keys(_ModalDialog.modalDialogPropTypes)), {
|
|
184
195
|
ref: (0, _utils.mergeRefs)(dialogRef, transitionRef),
|
|
185
196
|
classPrefix: classPrefix,
|
|
@@ -202,7 +213,7 @@ Modal.propTypes = (0, _extends2.default)({}, _Modal.modalPropTypes, {
|
|
|
202
213
|
animationTimeout: _propTypes.default.number,
|
|
203
214
|
classPrefix: _propTypes.default.string,
|
|
204
215
|
dialogClassName: _propTypes.default.string,
|
|
205
|
-
size: _propTypes.default.oneOf(modalSizes),
|
|
216
|
+
size: _propTypes.default.oneOfType([_propTypes.default.oneOf(modalSizes), _propTypes.default.number, _propTypes.default.string]),
|
|
206
217
|
dialogStyle: _propTypes.default.object,
|
|
207
218
|
dialogAs: _propTypes.default.elementType,
|
|
208
219
|
full: (0, _deprecatePropType.default)(_propTypes.default.bool, 'Use size="full" instead.'),
|
package/cjs/Modal/ModalBody.js
CHANGED
|
@@ -13,8 +13,9 @@ var _utils = require("../utils");
|
|
|
13
13
|
var _ModalContext = require("./ModalContext");
|
|
14
14
|
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
|
15
15
|
var _Close = _interopRequireDefault(require("@rsuite/icons/Close"));
|
|
16
|
+
var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
|
|
16
17
|
var ModalBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
17
|
-
var _context$getBodyStyle;
|
|
18
|
+
var _context$getBodyStyle, _useContext;
|
|
18
19
|
var _props$as = props.as,
|
|
19
20
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
20
21
|
_props$classPrefix = props.classPrefix,
|
|
@@ -30,17 +31,22 @@ var ModalBody = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
30
31
|
var classes = merge(className, withClassPrefix());
|
|
31
32
|
var context = (0, _react.useContext)(_ModalContext.ModalContext);
|
|
32
33
|
var bodyStyles = context === null || context === void 0 ? void 0 : (_context$getBodyStyle = context.getBodyStyles) === null || _context$getBodyStyle === void 0 ? void 0 : _context$getBodyStyle.call(context);
|
|
34
|
+
var closeButton = (_useContext = (0, _react.useContext)(_DrawerContext.default)) === null || _useContext === void 0 ? void 0 : _useContext.closeButton;
|
|
35
|
+
var buttonElement = null;
|
|
36
|
+
if (closeButton) {
|
|
37
|
+
buttonElement = typeof closeButton === 'boolean' ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
38
|
+
icon: /*#__PURE__*/_react.default.createElement(_Close.default, null),
|
|
39
|
+
appearance: "subtle",
|
|
40
|
+
size: "sm",
|
|
41
|
+
className: prefix('close'),
|
|
42
|
+
onClick: context === null || context === void 0 ? void 0 : context.onModalClose
|
|
43
|
+
}) : closeButton;
|
|
44
|
+
}
|
|
33
45
|
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
34
46
|
ref: ref,
|
|
35
47
|
style: (0, _extends2.default)({}, bodyStyles, style),
|
|
36
48
|
className: classes
|
|
37
|
-
}),
|
|
38
|
-
icon: /*#__PURE__*/_react.default.createElement(_Close.default, null),
|
|
39
|
-
appearance: "subtle",
|
|
40
|
-
size: "sm",
|
|
41
|
-
className: prefix('close'),
|
|
42
|
-
onClick: context === null || context === void 0 ? void 0 : context.onModalClose
|
|
43
|
-
}), children);
|
|
49
|
+
}), buttonElement, children);
|
|
44
50
|
});
|
|
45
51
|
ModalBody.displayName = 'ModalBody';
|
|
46
52
|
ModalBody.propTypes = {
|
|
@@ -5,8 +5,6 @@ export interface ModalContextProps {
|
|
|
5
5
|
/** Pass the close event callback to the header close button. */
|
|
6
6
|
onModalClose?: (event: React.MouseEvent<Element, MouseEvent>) => void;
|
|
7
7
|
/** Pass the latest style to body. */
|
|
8
|
-
getBodyStyles?: () => React.CSSProperties;
|
|
9
|
-
/** Whether this Modal is a Drawer */
|
|
10
|
-
isDrawer: boolean;
|
|
8
|
+
getBodyStyles?: () => React.CSSProperties | null;
|
|
11
9
|
}
|
|
12
10
|
export declare const ModalContext: React.Context<ModalContextProps | null>;
|
package/cjs/Modal/ModalHeader.js
CHANGED
|
@@ -14,7 +14,9 @@ var _ModalContext = require("./ModalContext");
|
|
|
14
14
|
var _CloseButton = _interopRequireDefault(require("../CloseButton"));
|
|
15
15
|
var _Close = _interopRequireDefault(require("@rsuite/icons/Close"));
|
|
16
16
|
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
|
17
|
+
var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
|
|
17
18
|
var ModalHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
19
|
+
var _useContext, _useContext2;
|
|
18
20
|
var _props$as = props.as,
|
|
19
21
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
20
22
|
_props$classPrefix = props.classPrefix,
|
|
@@ -30,16 +32,17 @@ var ModalHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
30
32
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
31
33
|
prefix = _useClassNames.prefix;
|
|
32
34
|
var classes = merge(className, withClassPrefix());
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
onClick: (0, _utils.createChainedFunction)(onClose, context === null || context === void 0 ? void 0 : context.onModalClose)
|
|
37
|
-
}) : /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
35
|
+
var onModalClose = (_useContext = (0, _react.useContext)(_ModalContext.ModalContext)) === null || _useContext === void 0 ? void 0 : _useContext.onModalClose;
|
|
36
|
+
var isDrawer = (_useContext2 = (0, _react.useContext)(_DrawerContext.default)) === null || _useContext2 === void 0 ? void 0 : _useContext2.isDrawer;
|
|
37
|
+
var buttonElement = isDrawer ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
38
38
|
icon: /*#__PURE__*/_react.default.createElement(_Close.default, null),
|
|
39
39
|
appearance: "subtle",
|
|
40
40
|
size: "sm",
|
|
41
41
|
className: prefix('close'),
|
|
42
|
-
onClick: (0, _utils.createChainedFunction)(onClose,
|
|
42
|
+
onClick: (0, _utils.createChainedFunction)(onClose, onModalClose)
|
|
43
|
+
}) : /*#__PURE__*/_react.default.createElement(_CloseButton.default, {
|
|
44
|
+
className: prefix('close'),
|
|
45
|
+
onClick: (0, _utils.createChainedFunction)(onClose, onModalClose)
|
|
43
46
|
});
|
|
44
47
|
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
45
48
|
ref: ref,
|
package/cjs/Modal/index.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export type { ModalDialogProps } from './ModalDialog';
|
|
|
5
5
|
export type { ModalFooterProps } from './ModalFooter';
|
|
6
6
|
export type { ModalHeaderProps } from './ModalHeader';
|
|
7
7
|
export type { ModalTitleProps } from './ModalTitle';
|
|
8
|
+
export type { ModalSize } from './utils';
|
|
8
9
|
export default Modal;
|
package/cjs/Modal/utils.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { TypeAttributes } from '../@types/common';
|
|
3
|
+
export declare type ModalSize = TypeAttributes.Size | 'full' | number | string;
|
|
2
4
|
export declare const useBodyStyles: (ref: React.RefObject<HTMLElement>, options: {
|
|
3
5
|
overflow: boolean;
|
|
4
6
|
drawer: boolean;
|
|
7
|
+
size?: ModalSize | undefined;
|
|
5
8
|
prefix: (...classes: any) => string;
|
|
6
|
-
}) => [import("react").CSSProperties, (entering?: boolean) => void, () => void];
|
|
9
|
+
}) => [import("react").CSSProperties | null, (entering?: boolean) => void, () => void];
|
package/cjs/Modal/utils.js
CHANGED
|
@@ -14,7 +14,8 @@ var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
14
14
|
setBodyStyles = _useState[1];
|
|
15
15
|
var overflow = options.overflow,
|
|
16
16
|
drawer = options.drawer,
|
|
17
|
-
prefix = options.prefix
|
|
17
|
+
prefix = options.prefix,
|
|
18
|
+
size = options.size;
|
|
18
19
|
var windowResizeListener = (0, _react.useRef)();
|
|
19
20
|
var contentElement = (0, _react.useRef)(null);
|
|
20
21
|
var contentElementResizeObserver = (0, _react.useRef)();
|
|
@@ -51,7 +52,11 @@ var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
51
52
|
contentElementResizeObserver.current = null;
|
|
52
53
|
}, []);
|
|
53
54
|
var onChangeBodyStyles = (0, _react.useCallback)(function (entering) {
|
|
54
|
-
if (
|
|
55
|
+
if (drawer || size === 'full') {
|
|
56
|
+
setBodyStyles(null);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (overflow && ref.current) {
|
|
55
60
|
updateBodyStyles(undefined, entering);
|
|
56
61
|
contentElement.current = ref.current.querySelector("." + prefix('content'));
|
|
57
62
|
if (!windowResizeListener.current) {
|
|
@@ -64,11 +69,11 @@ var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
64
69
|
contentElementResizeObserver.current.observe(contentElement.current);
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
|
-
}, [drawer, overflow, prefix, ref, updateBodyStyles]);
|
|
72
|
+
}, [drawer, overflow, prefix, ref, size, updateBodyStyles]);
|
|
68
73
|
(0, _react.useEffect)(function () {
|
|
69
74
|
return onDestroyEvents;
|
|
70
75
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
76
|
}, []);
|
|
72
|
-
return [overflow ? bodyStyles :
|
|
77
|
+
return [overflow ? bodyStyles : null, onChangeBodyStyles, onDestroyEvents];
|
|
73
78
|
};
|
|
74
79
|
exports.useBodyStyles = useBodyStyles;
|
|
@@ -4721,7 +4721,7 @@ label:hover .rs-checkbox-wrapper .rs-checkbox-inner::before {
|
|
|
4721
4721
|
}
|
|
4722
4722
|
.rs-drawer-full.rs-drawer-top,
|
|
4723
4723
|
.rs-drawer-full.rs-drawer-bottom {
|
|
4724
|
-
height:
|
|
4724
|
+
height: 100%;
|
|
4725
4725
|
}
|
|
4726
4726
|
.rs-drawer-full.rs-drawer-top .rs-drawer-content,
|
|
4727
4727
|
.rs-drawer-full.rs-drawer-bottom .rs-drawer-content {
|
|
@@ -4729,7 +4729,7 @@ label:hover .rs-checkbox-wrapper .rs-checkbox-inner::before {
|
|
|
4729
4729
|
}
|
|
4730
4730
|
.rs-drawer-full.rs-drawer-left,
|
|
4731
4731
|
.rs-drawer-full.rs-drawer-right {
|
|
4732
|
-
width:
|
|
4732
|
+
width: 100%;
|
|
4733
4733
|
}
|
|
4734
4734
|
.rs-drawer-right {
|
|
4735
4735
|
left: 0;
|
|
@@ -9473,8 +9473,37 @@ textarea.rs-picker-search-input {
|
|
|
9473
9473
|
max-width: calc(100% - 10px);
|
|
9474
9474
|
}
|
|
9475
9475
|
.rs-modal-full {
|
|
9476
|
-
|
|
9477
|
-
|
|
9476
|
+
margin: 0;
|
|
9477
|
+
height: 100%;
|
|
9478
|
+
}
|
|
9479
|
+
.rs-modal-full .rs-modal-content {
|
|
9480
|
+
position: absolute;
|
|
9481
|
+
height: 100%;
|
|
9482
|
+
width: 100%;
|
|
9483
|
+
border-radius: 0;
|
|
9484
|
+
display: -webkit-box;
|
|
9485
|
+
display: -ms-flexbox;
|
|
9486
|
+
display: flex;
|
|
9487
|
+
-webkit-box-orient: vertical;
|
|
9488
|
+
-webkit-box-direction: normal;
|
|
9489
|
+
-ms-flex-direction: column;
|
|
9490
|
+
flex-direction: column;
|
|
9491
|
+
}
|
|
9492
|
+
.rs-modal-full .rs-modal-content .rs-modal-header {
|
|
9493
|
+
-webkit-box-flex: 0;
|
|
9494
|
+
-ms-flex: 0 0 auto;
|
|
9495
|
+
flex: 0 0 auto;
|
|
9496
|
+
}
|
|
9497
|
+
.rs-modal-full .rs-modal-content .rs-modal-body {
|
|
9498
|
+
-webkit-box-flex: 1;
|
|
9499
|
+
-ms-flex: 1 1 auto;
|
|
9500
|
+
flex: 1 1 auto;
|
|
9501
|
+
overflow: auto;
|
|
9502
|
+
}
|
|
9503
|
+
.rs-modal-full .rs-modal-content .rs-modal-footer {
|
|
9504
|
+
-webkit-box-flex: 0;
|
|
9505
|
+
-ms-flex: 0 0 auto;
|
|
9506
|
+
flex: 0 0 auto;
|
|
9478
9507
|
}
|
|
9479
9508
|
.rs-modal-shake .rs-modal-dialog {
|
|
9480
9509
|
-webkit-animation: 0.3s linear shakeHead;
|