rsuite 5.44.0 → 5.46.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 +25 -0
- package/DatePicker/styles/index.less +15 -0
- package/Drawer/styles/index.less +1 -1
- package/Modal/styles/index.less +24 -2
- package/cjs/Calendar/MonthDropdown.js +1 -2
- package/cjs/Calendar/MonthDropdownItem.js +26 -13
- package/cjs/Calendar/TableCell.d.ts +14 -0
- package/cjs/Calendar/TableCell.js +72 -0
- package/cjs/Calendar/TableHeaderRow.js +3 -1
- package/cjs/Calendar/TableRow.js +22 -46
- package/cjs/Calendar/useCalendarDate.d.ts +1 -1
- package/cjs/Calendar/utils.d.ts +7 -0
- package/cjs/Calendar/utils.js +15 -0
- package/cjs/Cascader/Cascader.js +13 -3
- package/cjs/DatePicker/DatePicker.js +145 -38
- 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/InputPicker/InputPicker.js +7 -4
- 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/cjs/Picker/PickerToggle.js +3 -0
- package/cjs/Picker/utils.js +21 -12
- package/cjs/Table/Table.d.ts +7 -7
- package/dist/rsuite-no-reset-rtl.css +141 -64
- 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 +141 -64
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +141 -64
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +141 -64
- package/dist/rsuite.js +73 -19
- 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/MonthDropdown.js +1 -2
- package/esm/Calendar/MonthDropdownItem.js +28 -15
- package/esm/Calendar/TableCell.d.ts +14 -0
- package/esm/Calendar/TableCell.js +66 -0
- package/esm/Calendar/TableHeaderRow.js +3 -1
- package/esm/Calendar/TableRow.js +23 -47
- package/esm/Calendar/useCalendarDate.d.ts +1 -1
- package/esm/Calendar/utils.d.ts +7 -0
- package/esm/Calendar/utils.js +12 -0
- package/esm/Cascader/Cascader.js +13 -3
- package/esm/DatePicker/DatePicker.js +147 -40
- 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/InputPicker/InputPicker.js +7 -4
- 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/esm/Picker/PickerToggle.js +3 -0
- package/esm/Picker/utils.js +21 -12
- package/esm/Table/Table.d.ts +7 -7
- package/package.json +2 -2
- package/styles/color-modes/dark.less +0 -40
- package/styles/color-modes/high-contrast.less +0 -35
- package/styles/color-modes/light.less +0 -46
|
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
12
12
|
var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
|
|
13
13
|
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
14
14
|
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
15
|
+
var _delay = _interopRequireDefault(require("lodash/delay"));
|
|
15
16
|
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
16
17
|
var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"));
|
|
17
18
|
var _ClockO = _interopRequireDefault(require("@rsuite/icons/legacy/ClockO"));
|
|
@@ -22,9 +23,11 @@ var _Toolbar = _interopRequireDefault(require("./Toolbar"));
|
|
|
22
23
|
var _Stack = _interopRequireDefault(require("../Stack"));
|
|
23
24
|
var _PredefinedRanges = _interopRequireDefault(require("./PredefinedRanges"));
|
|
24
25
|
var _utils = require("../utils");
|
|
26
|
+
var _dateUtils = require("../utils/dateUtils");
|
|
25
27
|
var _Picker = require("../Picker");
|
|
26
28
|
var _OverlayTrigger = require("../Overlay/OverlayTrigger");
|
|
27
29
|
var _deprecatePropType = require("../utils/deprecatePropType");
|
|
30
|
+
var _utils2 = require("../Calendar/utils");
|
|
28
31
|
var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
29
32
|
var _props$as = props.as,
|
|
30
33
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -98,12 +101,17 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
98
101
|
calendarDate = _useCalendarDate.calendarDate,
|
|
99
102
|
setCalendarDate = _useCalendarDate.setCalendarDate,
|
|
100
103
|
resetCalendarDate = _useCalendarDate.resetCalendarDate;
|
|
101
|
-
var _useState = (0, _react.useState)(),
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
var _useState = (0, _react.useState)(false),
|
|
105
|
+
showMonthDropdown = _useState[0],
|
|
106
|
+
setShowMonthDropdown = _useState[1]; // Show only the calendar month panel. formatStr = 'yyyy-MM'
|
|
107
|
+
var onlyShowMonth = (0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr);
|
|
108
|
+
var showMonth = onlyShowMonth || showMonthDropdown;
|
|
109
|
+
var _useState2 = (0, _react.useState)(),
|
|
110
|
+
inputState = _useState2[0],
|
|
111
|
+
setInputState = _useState2[1];
|
|
112
|
+
var _useState3 = (0, _react.useState)(false),
|
|
113
|
+
active = _useState3[0],
|
|
114
|
+
setActive = _useState3[1];
|
|
107
115
|
var triggerRef = (0, _react.useRef)(null);
|
|
108
116
|
var rootRef = (0, _react.useRef)(null);
|
|
109
117
|
var targetRef = (0, _react.useRef)(null);
|
|
@@ -157,9 +165,9 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
157
165
|
* The callback triggered when PM/AM is switched.
|
|
158
166
|
*/
|
|
159
167
|
var handleToggleMeridian = (0, _react.useCallback)(function () {
|
|
160
|
-
var hours =
|
|
168
|
+
var hours = (0, _dateUtils.getHours)(calendarDate);
|
|
161
169
|
var nextHours = hours >= 12 ? hours - 12 : hours + 12;
|
|
162
|
-
var nextDate =
|
|
170
|
+
var nextDate = (0, _dateUtils.setHours)(calendarDate, nextHours);
|
|
163
171
|
handleChangeTime(nextDate);
|
|
164
172
|
}, [calendarDate, handleChangeTime]);
|
|
165
173
|
var updateValue = (0, _react.useCallback)(function (event, nextPageDate, closeOverlay) {
|
|
@@ -189,13 +197,57 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
189
197
|
onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, event);
|
|
190
198
|
}, [handleDateChange, onShortcutClick, updateValue]);
|
|
191
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Get the corresponding container based on date selection and month selection
|
|
202
|
+
*/
|
|
203
|
+
var getOverlayContainer = (0, _react.useCallback)(function () {
|
|
204
|
+
var _overlayRef$current;
|
|
205
|
+
return (_overlayRef$current = overlayRef.current) === null || _overlayRef$current === void 0 ? void 0 : _overlayRef$current.querySelector(showMonth ? '[role="menu"]' : '[role="grid"]');
|
|
206
|
+
}, [showMonth]);
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Check whether the date is focusable
|
|
210
|
+
*/
|
|
211
|
+
var checkFocusable = (0, _react.useCallback)(function (date) {
|
|
212
|
+
var formatStr = showMonth ? locale.formattedMonthPattern : locale.formattedDayPattern;
|
|
213
|
+
var ariaLabel = (0, _utils2.getAriaLabel)(date, formatStr, formatDate);
|
|
214
|
+
var container = getOverlayContainer();
|
|
215
|
+
var dateElement = container.querySelector("[aria-label=\"" + ariaLabel + "\"]");
|
|
216
|
+
if (dateElement !== null && dateElement !== void 0 && dateElement.hasAttribute('aria-disabled')) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
return true;
|
|
220
|
+
}, [formatDate, getOverlayContainer, locale, showMonth]);
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Focus on the currently selected date element
|
|
224
|
+
*/
|
|
225
|
+
var focusSelectedDate = (0, _react.useCallback)(function () {
|
|
226
|
+
(0, _delay.default)(function () {
|
|
227
|
+
var container = getOverlayContainer();
|
|
228
|
+
var selectedElement = container === null || container === void 0 ? void 0 : container.querySelector('[aria-selected="true"]');
|
|
229
|
+
selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.focus();
|
|
230
|
+
}, 1);
|
|
231
|
+
}, [getOverlayContainer]);
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Focus on the input element
|
|
235
|
+
*/
|
|
236
|
+
var focusTargetButton = (0, _react.useCallback)(function () {
|
|
237
|
+
(0, _delay.default)(function () {
|
|
238
|
+
var _targetRef$current, _targetRef$current$qu;
|
|
239
|
+
(_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$qu = _targetRef$current.querySelector('input')) === null || _targetRef$current$qu === void 0 ? void 0 : _targetRef$current$qu.focus();
|
|
240
|
+
}, 100);
|
|
241
|
+
}, []);
|
|
242
|
+
|
|
192
243
|
/**
|
|
193
244
|
* The callback triggered after clicking the OK button.
|
|
194
245
|
*/
|
|
195
246
|
var handleOK = (0, _react.useCallback)(function (event) {
|
|
196
247
|
updateValue(event);
|
|
197
248
|
onOk === null || onOk === void 0 ? void 0 : onOk(calendarDate, event);
|
|
198
|
-
|
|
249
|
+
focusTargetButton();
|
|
250
|
+
}, [updateValue, onOk, calendarDate, focusTargetButton]);
|
|
199
251
|
|
|
200
252
|
/**
|
|
201
253
|
* Callback after clicking the clear button.
|
|
@@ -204,6 +256,54 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
204
256
|
updateValue(event, null);
|
|
205
257
|
resetCalendarDate(null);
|
|
206
258
|
}, [resetCalendarDate, updateValue]);
|
|
259
|
+
var handlePickerToggleKeyDown = (0, _react.useCallback)(function (event) {
|
|
260
|
+
var _event$target;
|
|
261
|
+
var tagName = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName;
|
|
262
|
+
if (tagName === 'INPUT') {
|
|
263
|
+
if (event.key === 'ArrowDown') {
|
|
264
|
+
event.preventDefault();
|
|
265
|
+
focusSelectedDate();
|
|
266
|
+
} else if (event.key === 'Enter') {
|
|
267
|
+
var _triggerRef$current2, _triggerRef$current2$;
|
|
268
|
+
(_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.open) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}, [focusSelectedDate]);
|
|
272
|
+
var handlePickerOverlayKeyDown = (0, _react.useCallback)(function (event) {
|
|
273
|
+
var delta = 0;
|
|
274
|
+
var step = showMonth ? 6 : 7;
|
|
275
|
+
var changeDateFunc = showMonth ? _dateUtils.addMonths : _dateUtils.addDays;
|
|
276
|
+
(0, _Picker.onMenuKeyDown)(event, {
|
|
277
|
+
down: function down() {
|
|
278
|
+
delta = step;
|
|
279
|
+
},
|
|
280
|
+
up: function up() {
|
|
281
|
+
delta = -step;
|
|
282
|
+
},
|
|
283
|
+
right: function right() {
|
|
284
|
+
delta = 1;
|
|
285
|
+
},
|
|
286
|
+
left: function left() {
|
|
287
|
+
delta = -1;
|
|
288
|
+
},
|
|
289
|
+
enter: function enter() {
|
|
290
|
+
handleOK(event);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
var nextDate = changeDateFunc(calendarDate, delta);
|
|
294
|
+
if (checkFocusable(nextDate)) {
|
|
295
|
+
setCalendarDate(nextDate);
|
|
296
|
+
focusSelectedDate();
|
|
297
|
+
}
|
|
298
|
+
}, [showMonth, calendarDate, checkFocusable, handleOK, setCalendarDate, focusSelectedDate]);
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* The callback triggered after the month selection box is opened or closed.
|
|
302
|
+
*/
|
|
303
|
+
var handleToggleMonthDropdown = (0, _react.useCallback)(function (toggle) {
|
|
304
|
+
onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(toggle);
|
|
305
|
+
setShowMonthDropdown(toggle);
|
|
306
|
+
}, [onToggleMonthDropdown]);
|
|
207
307
|
|
|
208
308
|
/**
|
|
209
309
|
* Handle keyboard events.
|
|
@@ -211,8 +311,10 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
211
311
|
var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
|
|
212
312
|
triggerRef: triggerRef,
|
|
213
313
|
targetRef: targetRef,
|
|
314
|
+
overlayRef: overlayRef,
|
|
214
315
|
active: active,
|
|
215
|
-
onExit: handleClean
|
|
316
|
+
onExit: handleClean,
|
|
317
|
+
onKeyDown: handlePickerToggleKeyDown
|
|
216
318
|
}, rest));
|
|
217
319
|
|
|
218
320
|
/**
|
|
@@ -224,18 +326,18 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
224
326
|
}
|
|
225
327
|
setCalendarDate(
|
|
226
328
|
// Determine whether the current value contains time, if not, use calendarDate.
|
|
227
|
-
|
|
228
|
-
return
|
|
329
|
+
(0, _dateUtils.shouldRenderTime)(formatStr) ? nextValue : (0, _utils.composeFunctions)(function (d) {
|
|
330
|
+
return (0, _dateUtils.setHours)(d, (0, _dateUtils.getHours)(calendarDate));
|
|
229
331
|
}, function (d) {
|
|
230
|
-
return
|
|
332
|
+
return (0, _dateUtils.setMinutes)(d, (0, _dateUtils.getMinutes)(calendarDate));
|
|
231
333
|
}, function (d) {
|
|
232
|
-
return
|
|
334
|
+
return (0, _dateUtils.setSeconds)(d, (0, _dateUtils.getSeconds)(calendarDate));
|
|
233
335
|
})(nextValue));
|
|
234
336
|
handleDateChange(nextValue);
|
|
235
337
|
if (oneTap && updatableValue) {
|
|
236
338
|
updateValue(event, nextValue);
|
|
237
339
|
}
|
|
238
|
-
}, [formatStr, handleDateChange, oneTap, calendarDate,
|
|
340
|
+
}, [setCalendarDate, formatStr, handleDateChange, oneTap, calendarDate, updateValue]);
|
|
239
341
|
|
|
240
342
|
/**
|
|
241
343
|
* A callback triggered when the date on the calendar changes.
|
|
@@ -243,13 +345,11 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
243
345
|
var handleChangeMonth = (0, _react.useCallback)(function (nextPageDate, event) {
|
|
244
346
|
setCalendarDate(nextPageDate);
|
|
245
347
|
handleDateChange(nextPageDate);
|
|
246
|
-
|
|
247
|
-
// Show only the calendar month panel. formatStr = 'yyyy-MM'
|
|
248
|
-
var onlyShowMonth = _utils.DateUtils.shouldRenderMonth(formatStr) && !_utils.DateUtils.shouldRenderDate(formatStr);
|
|
348
|
+
focusSelectedDate();
|
|
249
349
|
if (oneTap && onlyShowMonth) {
|
|
250
350
|
updateValue(event, nextPageDate);
|
|
251
351
|
}
|
|
252
|
-
}, [
|
|
352
|
+
}, [focusSelectedDate, handleDateChange, oneTap, onlyShowMonth, setCalendarDate, updateValue]);
|
|
253
353
|
var isDateDisabled = (0, _react.useCallback)(function (date) {
|
|
254
354
|
if (typeof shouldDisableDate === 'function') {
|
|
255
355
|
return shouldDisableDate(date);
|
|
@@ -268,7 +368,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
268
368
|
|
|
269
369
|
// isMatch('01/11/2020', 'MM/dd/yyyy') ==> true
|
|
270
370
|
// isMatch('2020-11-01', 'MM/dd/yyyy') ==> false
|
|
271
|
-
if (!
|
|
371
|
+
if (!(0, _dateUtils.isMatch)(value, formatStr, {
|
|
272
372
|
locale: locale.dateLocale
|
|
273
373
|
})) {
|
|
274
374
|
setInputState('Error');
|
|
@@ -277,10 +377,10 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
277
377
|
var date = parseDate(value, formatStr);
|
|
278
378
|
|
|
279
379
|
// If only the time is included in the characters, it will default to today.
|
|
280
|
-
if (
|
|
281
|
-
date = new Date(
|
|
380
|
+
if ((0, _dateUtils.shouldOnlyRenderTime)(formatStr)) {
|
|
381
|
+
date = new Date((0, _dateUtils.format)(new Date(), 'yyyy-MM-dd') + " " + value);
|
|
282
382
|
}
|
|
283
|
-
if (!
|
|
383
|
+
if (!(0, _dateUtils.isValid)(date)) {
|
|
284
384
|
setInputState('Error');
|
|
285
385
|
return;
|
|
286
386
|
}
|
|
@@ -321,7 +421,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
321
421
|
var disabledToolbarHandle = (0, _react.useCallback)(function (date) {
|
|
322
422
|
var _DEPRECATED_disabledD;
|
|
323
423
|
var allowDate = (_DEPRECATED_disabledD = DEPRECATED_disabledDate === null || DEPRECATED_disabledDate === void 0 ? void 0 : DEPRECATED_disabledDate(date)) !== null && _DEPRECATED_disabledD !== void 0 ? _DEPRECATED_disabledD : false;
|
|
324
|
-
var allowTime =
|
|
424
|
+
var allowTime = (0, _dateUtils.disabledTime)(props, date);
|
|
325
425
|
return allowDate || allowTime;
|
|
326
426
|
}, [DEPRECATED_disabledDate, props]);
|
|
327
427
|
|
|
@@ -332,13 +432,13 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
332
432
|
* - If format is month, disable ok button if all dates in the month of selected date are disabled
|
|
333
433
|
*/
|
|
334
434
|
var isOKButtonDisabled = (0, _react.useCallback)(function (selectedDate) {
|
|
335
|
-
if (
|
|
435
|
+
if ((0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr)) {
|
|
336
436
|
return (0, _MonthDropdown.isEveryDateInMonth)(selectedDate.getFullYear(), selectedDate.getMonth(), disabledToolbarHandle);
|
|
337
437
|
}
|
|
338
438
|
return disabledToolbarHandle(selectedDate);
|
|
339
439
|
}, [disabledToolbarHandle, formatStr]);
|
|
340
440
|
var calendarProps = (0, _react.useMemo)(function () {
|
|
341
|
-
return (0, _mapValues.default)((0, _pick.default)(props,
|
|
441
|
+
return (0, _mapValues.default)((0, _pick.default)(props, _dateUtils.calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
|
|
342
442
|
return function (next, date) {
|
|
343
443
|
var _disabledOrHiddenTime;
|
|
344
444
|
return (_disabledOrHiddenTime = disabledOrHiddenTimeFunc === null || disabledOrHiddenTimeFunc === void 0 ? void 0 : disabledOrHiddenTimeFunc(next, date)) !== null && _disabledOrHiddenTime !== void 0 ? _disabledOrHiddenTime : false;
|
|
@@ -361,15 +461,19 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
361
461
|
onMoveForward: handleMoveForward,
|
|
362
462
|
onMoveBackward: handleMoveBackward,
|
|
363
463
|
onSelect: handleSelect,
|
|
364
|
-
onToggleMonthDropdown:
|
|
464
|
+
onToggleMonthDropdown: handleToggleMonthDropdown,
|
|
365
465
|
onToggleTimeDropdown: onToggleTimeDropdown,
|
|
366
466
|
onChangeMonth: handleChangeMonth,
|
|
367
467
|
onChangeTime: handleChangeTime,
|
|
368
468
|
onToggleMeridian: handleToggleMeridian
|
|
369
469
|
}));
|
|
470
|
+
|
|
471
|
+
// The shortcut option on the left side of the calendar panel
|
|
370
472
|
var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
371
473
|
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
372
474
|
})) || [];
|
|
475
|
+
|
|
476
|
+
// The shortcut option on the bottom of the calendar panel
|
|
373
477
|
var bottomRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
374
478
|
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
375
479
|
})) || [];
|
|
@@ -387,7 +491,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
387
491
|
className: classes,
|
|
388
492
|
ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
|
|
389
493
|
style: styles,
|
|
390
|
-
target: triggerRef
|
|
494
|
+
target: triggerRef,
|
|
495
|
+
onKeyDown: handlePickerOverlayKeyDown
|
|
391
496
|
}, /*#__PURE__*/_react.default.createElement(_Stack.default, {
|
|
392
497
|
alignItems: "flex-start"
|
|
393
498
|
}, sideRanges.length > 0 && /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
|
|
@@ -428,20 +533,22 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
428
533
|
return (_renderValue = renderValue === null || renderValue === void 0 ? void 0 : renderValue(value, formatStr)) !== null && _renderValue !== void 0 ? _renderValue : formatDate(value, formatStr);
|
|
429
534
|
}, [formatStr, formatDate, placeholder, renderValue, value]);
|
|
430
535
|
var caretAs = (0, _react.useMemo)(function () {
|
|
431
|
-
return caretAsProp || (
|
|
536
|
+
return caretAsProp || ((0, _dateUtils.shouldOnlyRenderTime)(formatStr) ? _ClockO.default : _Calendar.default);
|
|
432
537
|
}, [caretAsProp, formatStr]);
|
|
538
|
+
var handleTriggerClose = (0, _react.useCallback)(function (cause) {
|
|
539
|
+
// Unless overlay is closing on user clicking "OK" button,
|
|
540
|
+
// reset the selected date on calendar panel
|
|
541
|
+
if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
|
|
542
|
+
resetCalendarDate();
|
|
543
|
+
}
|
|
544
|
+
setShowMonthDropdown(false);
|
|
545
|
+
}, [resetCalendarDate]);
|
|
433
546
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
|
|
434
547
|
trigger: "active",
|
|
435
548
|
pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
|
|
436
549
|
ref: triggerRef,
|
|
437
550
|
placement: placement,
|
|
438
|
-
onClose:
|
|
439
|
-
// Unless overlay is closing on user clicking "OK" button,
|
|
440
|
-
// reset the selected date on calendar panel
|
|
441
|
-
if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
|
|
442
|
-
resetCalendarDate();
|
|
443
|
-
}
|
|
444
|
-
},
|
|
551
|
+
onClose: handleTriggerClose,
|
|
445
552
|
onEntered: (0, _utils.createChainedFunction)(handleEntered, onEntered),
|
|
446
553
|
onExited: (0, _utils.createChainedFunction)(handleExited, onExited),
|
|
447
554
|
speaker: renderDropdownMenu
|
|
@@ -449,7 +556,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
449
556
|
className: merge(className, classes),
|
|
450
557
|
style: style,
|
|
451
558
|
ref: rootRef
|
|
452
|
-
}, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys,
|
|
559
|
+
}, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _dateUtils.calendarOnlyProps)), {
|
|
453
560
|
className: prefix({
|
|
454
561
|
error: inputState === 'Error'
|
|
455
562
|
}),
|
|
@@ -459,7 +566,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
459
566
|
editable: editable,
|
|
460
567
|
inputValue: value ? formatDate(value, formatStr) : '',
|
|
461
568
|
inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : formatStr,
|
|
462
|
-
inputMask:
|
|
569
|
+
inputMask: (0, _dateUtils.getDateMask)(formatStr),
|
|
463
570
|
onInputChange: handleInputChange,
|
|
464
571
|
onInputBlur: handleInputPressEnd,
|
|
465
572
|
onInputPressEnter: handleInputPressEnd,
|
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
|
|
@@ -150,9 +150,12 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
150
150
|
return multi ? (0, _clone.default)(value) || [] : value;
|
|
151
151
|
}, [multi, value]);
|
|
152
152
|
var handleClose = (0, _react.useCallback)(function () {
|
|
153
|
-
var _triggerRef$current;
|
|
153
|
+
var _triggerRef$current, _targetRef$current, _targetRef$current$fo;
|
|
154
154
|
triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
|
|
155
|
-
|
|
155
|
+
|
|
156
|
+
// The focus is on the trigger button after closing
|
|
157
|
+
(_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$fo = _targetRef$current.focus) === null || _targetRef$current$fo === void 0 ? void 0 : _targetRef$current$fo.call(_targetRef$current);
|
|
158
|
+
}, []);
|
|
156
159
|
|
|
157
160
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
158
161
|
var _useFocusItemValue = (0, _Picker.useFocusItemValue)(multi ? value === null || value === void 0 ? void 0 : value[0] : value, {
|
|
@@ -658,7 +661,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
658
661
|
plaintext: plaintext,
|
|
659
662
|
ref: targetRef,
|
|
660
663
|
as: toggleAs,
|
|
661
|
-
tabIndex:
|
|
664
|
+
tabIndex: tabIndex,
|
|
662
665
|
onClean: handleClean,
|
|
663
666
|
cleanable: cleanable && !disabled,
|
|
664
667
|
hasValue: hasValue,
|
|
@@ -670,7 +673,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
670
673
|
}), searching || multi && hasValue ? null : itemNode || placeholderNode), !(!multi && disabled) && /*#__PURE__*/_react.default.createElement("div", {
|
|
671
674
|
className: prefix(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["tag-wrapper"])))
|
|
672
675
|
}, tagElements, displaySearchInput && /*#__PURE__*/_react.default.createElement(_InputSearch.default, (0, _extends2.default)({}, inputProps, {
|
|
673
|
-
tabIndex:
|
|
676
|
+
tabIndex: -1,
|
|
674
677
|
readOnly: readOnly,
|
|
675
678
|
onBlur: onBlur,
|
|
676
679
|
onFocus: (0, _utils.createChainedFunction)(handleFocus, onFocus),
|
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 = {
|