rsuite 5.16.6 → 5.17.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/CHANGELOG.md +6 -0
- package/DatePicker/styles/index.less +0 -10
- package/DateRangePicker/styles/index.less +12 -5
- package/cjs/DatePicker/PredefinedRanges.d.ts +13 -0
- package/cjs/DatePicker/PredefinedRanges.js +79 -0
- package/cjs/DatePicker/Toolbar.d.ts +2 -9
- package/cjs/DatePicker/Toolbar.js +45 -62
- package/cjs/DateRangePicker/DateRangePicker.js +32 -5
- package/cjs/DateRangePicker/types.d.ts +2 -1
- package/dist/rsuite-rtl.css +10 -18
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +10 -18
- package/dist/rsuite.js +34 -12
- 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/DatePicker/PredefinedRanges.d.ts +13 -0
- package/esm/DatePicker/PredefinedRanges.js +62 -0
- package/esm/DatePicker/Toolbar.d.ts +2 -9
- package/esm/DatePicker/Toolbar.js +45 -61
- package/esm/DateRangePicker/DateRangePicker.js +30 -5
- package/esm/DateRangePicker/types.d.ts +2 -1
- package/package.json +2 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StackProps } from '../Stack';
|
|
3
|
+
import { RangeType } from './types';
|
|
4
|
+
import { CalendarLocale } from '../locales';
|
|
5
|
+
export interface PredefinedRangesProps<T = any, Shortcut = T> extends StackProps {
|
|
6
|
+
ranges?: RangeType<Shortcut>[];
|
|
7
|
+
calendarDate: T;
|
|
8
|
+
locale: CalendarLocale;
|
|
9
|
+
disabledShortcut?: (value: T) => boolean;
|
|
10
|
+
onClickShortcut?: (value: Shortcut, closeOverlay: boolean, event: React.MouseEvent) => void;
|
|
11
|
+
}
|
|
12
|
+
declare const PredefinedRanges: React.ForwardRefExoticComponent<PredefinedRangesProps<any, any> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export default PredefinedRanges;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
import React, { useCallback, useState } from 'react';
|
|
4
|
+
import Button from '../Button';
|
|
5
|
+
import Stack from '../Stack';
|
|
6
|
+
import { useUpdateEffect } from '../utils';
|
|
7
|
+
import { getDefaultRanges, getRanges } from './utils';
|
|
8
|
+
var PredefinedRanges = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
9
|
+
var className = props.className,
|
|
10
|
+
disabledShortcut = props.disabledShortcut,
|
|
11
|
+
onClickShortcut = props.onClickShortcut,
|
|
12
|
+
calendarDate = props.calendarDate,
|
|
13
|
+
rangesProp = props.ranges,
|
|
14
|
+
locale = props.locale,
|
|
15
|
+
rest = _objectWithoutPropertiesLoose(props, ["className", "disabledShortcut", "onClickShortcut", "calendarDate", "ranges", "locale"]);
|
|
16
|
+
|
|
17
|
+
var _useState = useState(getRanges(props)),
|
|
18
|
+
ranges = _useState[0],
|
|
19
|
+
setRanges = _useState[1];
|
|
20
|
+
|
|
21
|
+
useUpdateEffect(function () {
|
|
22
|
+
setRanges(getRanges({
|
|
23
|
+
ranges: rangesProp,
|
|
24
|
+
calendarDate: calendarDate
|
|
25
|
+
}));
|
|
26
|
+
}, [calendarDate, rangesProp]);
|
|
27
|
+
var hasLocaleKey = useCallback(function (key) {
|
|
28
|
+
return getDefaultRanges(calendarDate).some(function (item) {
|
|
29
|
+
return item.label === key;
|
|
30
|
+
});
|
|
31
|
+
}, [calendarDate]);
|
|
32
|
+
return /*#__PURE__*/React.createElement(Stack, _extends({
|
|
33
|
+
className: className,
|
|
34
|
+
ref: ref,
|
|
35
|
+
alignItems: "flex-start",
|
|
36
|
+
spacing: 4
|
|
37
|
+
}, rest), ranges.map(function (_ref, index) {
|
|
38
|
+
var value = _ref.value,
|
|
39
|
+
closeOverlay = _ref.closeOverlay,
|
|
40
|
+
label = _ref.label,
|
|
41
|
+
rest = _objectWithoutPropertiesLoose(_ref, ["value", "closeOverlay", "label"]);
|
|
42
|
+
|
|
43
|
+
var disabled = disabledShortcut === null || disabledShortcut === void 0 ? void 0 : disabledShortcut(value);
|
|
44
|
+
|
|
45
|
+
var handleClickShortcut = function handleClickShortcut(event) {
|
|
46
|
+
if (disabled) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
onClickShortcut === null || onClickShortcut === void 0 ? void 0 : onClickShortcut(value, closeOverlay !== false ? true : false, event);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return /*#__PURE__*/React.createElement(Button, _extends({
|
|
54
|
+
appearance: "link",
|
|
55
|
+
size: "sm",
|
|
56
|
+
key: index,
|
|
57
|
+
disabled: disabled,
|
|
58
|
+
onClick: handleClickShortcut
|
|
59
|
+
}, rest), hasLocaleKey(label) && typeof label === 'string' ? locale === null || locale === void 0 ? void 0 : locale[label] : label);
|
|
60
|
+
}));
|
|
61
|
+
});
|
|
62
|
+
export default PredefinedRanges;
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { RangeType } from './types';
|
|
4
|
-
import { CalendarLocale } from '../locales';
|
|
2
|
+
import { PredefinedRangesProps } from './PredefinedRanges';
|
|
5
3
|
export type { RangeType } from './types';
|
|
6
|
-
export interface ToolbarProps<T = any, Shortcut = T> extends
|
|
4
|
+
export interface ToolbarProps<T = any, Shortcut = T> extends PredefinedRangesProps<T, Shortcut> {
|
|
7
5
|
hideOkBtn?: boolean;
|
|
8
|
-
locale?: CalendarLocale;
|
|
9
|
-
calendarDate: T;
|
|
10
|
-
ranges?: RangeType<Shortcut>[];
|
|
11
6
|
disabledOkBtn?: (value: T) => boolean;
|
|
12
|
-
disabledShortcut?: (value: T) => boolean;
|
|
13
7
|
onOk?: (event: React.MouseEvent) => void;
|
|
14
|
-
onClickShortcut?: (value: Shortcut, closeOverlay: boolean, event: React.MouseEvent) => void;
|
|
15
8
|
}
|
|
16
9
|
declare type ToolbarComponent = React.ForwardRefExoticComponent<ToolbarProps> & {
|
|
17
10
|
<T = any, Shortcut = T>(props: ToolbarProps<T, Shortcut>): React.ReactElement | null;
|
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React
|
|
3
|
+
import React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import Button from '../Button';
|
|
6
|
-
import { useClassNames
|
|
7
|
-
import
|
|
6
|
+
import { useClassNames } from '../utils';
|
|
7
|
+
import PredefinedRanges from './PredefinedRanges';
|
|
8
|
+
import Stack from '../Stack';
|
|
8
9
|
|
|
10
|
+
var SubmitButton = function SubmitButton(_ref) {
|
|
11
|
+
var hide = _ref.hide,
|
|
12
|
+
disabledOkBtn = _ref.disabledOkBtn,
|
|
13
|
+
calendarDate = _ref.calendarDate,
|
|
14
|
+
onOk = _ref.onOk,
|
|
15
|
+
children = _ref.children;
|
|
16
|
+
|
|
17
|
+
if (hide) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
var disabled = disabledOkBtn === null || disabledOkBtn === void 0 ? void 0 : disabledOkBtn(calendarDate);
|
|
22
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
23
|
+
appearance: "primary",
|
|
24
|
+
size: "sm",
|
|
25
|
+
disabled: disabled,
|
|
26
|
+
onClick: disabled ? undefined : onOk
|
|
27
|
+
}, children);
|
|
28
|
+
};
|
|
9
29
|
/**
|
|
10
30
|
* Toolbar for DatePicker and DateRangePicker
|
|
11
31
|
*/
|
|
32
|
+
|
|
33
|
+
|
|
12
34
|
var Toolbar = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
13
35
|
var className = props.className,
|
|
14
36
|
_props$classPrefix = props.classPrefix,
|
|
@@ -19,78 +41,40 @@ var Toolbar = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
19
41
|
onOk = props.onOk,
|
|
20
42
|
onClickShortcut = props.onClickShortcut,
|
|
21
43
|
calendarDate = props.calendarDate,
|
|
22
|
-
|
|
44
|
+
ranges = props.ranges,
|
|
23
45
|
locale = props.locale,
|
|
24
46
|
rest = _objectWithoutPropertiesLoose(props, ["className", "classPrefix", "disabledOkBtn", "disabledShortcut", "hideOkBtn", "onOk", "onClickShortcut", "calendarDate", "ranges", "locale"]);
|
|
25
47
|
|
|
26
|
-
var _useState = useState(getRanges(props)),
|
|
27
|
-
ranges = _useState[0],
|
|
28
|
-
setRanges = _useState[1];
|
|
29
|
-
|
|
30
48
|
var _useClassNames = useClassNames(classPrefix),
|
|
31
49
|
merge = _useClassNames.merge,
|
|
32
50
|
prefix = _useClassNames.prefix,
|
|
33
51
|
withClassPrefix = _useClassNames.withClassPrefix;
|
|
34
52
|
|
|
35
|
-
|
|
36
|
-
setRanges(getRanges({
|
|
37
|
-
ranges: rangesProp,
|
|
38
|
-
calendarDate: calendarDate
|
|
39
|
-
}));
|
|
40
|
-
}, [calendarDate, rangesProp]);
|
|
41
|
-
var hasLocaleKey = useCallback(function (key) {
|
|
42
|
-
return getDefaultRanges(calendarDate).some(function (item) {
|
|
43
|
-
return item.label === key;
|
|
44
|
-
});
|
|
45
|
-
}, [calendarDate]);
|
|
46
|
-
var renderOkButton = useCallback(function () {
|
|
47
|
-
if (hideOkBtn) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
var disabled = disabledOkBtn === null || disabledOkBtn === void 0 ? void 0 : disabledOkBtn(calendarDate);
|
|
52
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
53
|
-
className: prefix('right')
|
|
54
|
-
}, /*#__PURE__*/React.createElement(Button, {
|
|
55
|
-
appearance: "primary",
|
|
56
|
-
size: "sm",
|
|
57
|
-
disabled: disabled,
|
|
58
|
-
onClick: disabled ? undefined : onOk
|
|
59
|
-
}, locale === null || locale === void 0 ? void 0 : locale.ok));
|
|
60
|
-
}, [disabledOkBtn, hideOkBtn, locale, onOk, calendarDate, prefix]);
|
|
61
|
-
|
|
62
|
-
if (hideOkBtn && ranges.length === 0) {
|
|
53
|
+
if (hideOkBtn && (ranges === null || ranges === void 0 ? void 0 : ranges.length) === 0) {
|
|
63
54
|
return null;
|
|
64
55
|
}
|
|
65
56
|
|
|
66
57
|
var classes = merge(className, withClassPrefix());
|
|
67
|
-
return /*#__PURE__*/React.createElement(
|
|
58
|
+
return /*#__PURE__*/React.createElement(Stack, _extends({
|
|
68
59
|
ref: ref,
|
|
69
|
-
className: classes
|
|
60
|
+
className: classes,
|
|
61
|
+
justifyContent: "space-between",
|
|
62
|
+
alignItems: "flex-start"
|
|
63
|
+
}, rest), /*#__PURE__*/React.createElement(PredefinedRanges, {
|
|
64
|
+
className: prefix('ranges'),
|
|
65
|
+
ranges: ranges,
|
|
66
|
+
calendarDate: calendarDate,
|
|
67
|
+
locale: locale,
|
|
68
|
+
disabledShortcut: disabledShortcut,
|
|
69
|
+
onClickShortcut: onClickShortcut
|
|
70
70
|
}), /*#__PURE__*/React.createElement("div", {
|
|
71
|
-
className: prefix('
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
var handleClickShortcut = function handleClickShortcut(event) {
|
|
79
|
-
if (disabled) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
onClickShortcut === null || onClickShortcut === void 0 ? void 0 : onClickShortcut(value, closeOverlay !== false ? true : false, event);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
87
|
-
appearance: "link",
|
|
88
|
-
size: "sm",
|
|
89
|
-
key: index,
|
|
90
|
-
disabled: disabled,
|
|
91
|
-
onClick: handleClickShortcut
|
|
92
|
-
}, hasLocaleKey(label) && typeof label === 'string' ? locale === null || locale === void 0 ? void 0 : locale[label] : label);
|
|
93
|
-
})), renderOkButton());
|
|
71
|
+
className: prefix('right')
|
|
72
|
+
}, /*#__PURE__*/React.createElement(SubmitButton, {
|
|
73
|
+
disabledOkBtn: disabledOkBtn,
|
|
74
|
+
hide: hideOkBtn,
|
|
75
|
+
calendarDate: calendarDate,
|
|
76
|
+
onOk: onOk
|
|
77
|
+
}, locale === null || locale === void 0 ? void 0 : locale.ok)));
|
|
94
78
|
});
|
|
95
79
|
Toolbar.displayName = 'Toolbar';
|
|
96
80
|
Toolbar.propTypes = {
|
|
@@ -9,6 +9,8 @@ import PropTypes from 'prop-types';
|
|
|
9
9
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
10
10
|
import { FormattedDate } from '../CustomProvider';
|
|
11
11
|
import Toolbar from '../DatePicker/Toolbar';
|
|
12
|
+
import PredefinedRanges from '../DatePicker/PredefinedRanges';
|
|
13
|
+
import Stack from '../Stack';
|
|
12
14
|
import { omitTriggerPropKeys, PickerOverlay, pickerPropTypes, PickerToggle, PickerToggleTrigger, pickTriggerPropKeys, usePickerClassName, usePublicMethods, useToggleKeyDownEvent } from '../Picker';
|
|
13
15
|
import { createChainedFunction, DATERANGE_DISABLED_TARGET, DateUtils, mergeRefs, useClassNames, useControlled, useCustom } from '../utils';
|
|
14
16
|
import { addMonths, compareAsc, isSameMonth } from '../utils/dateUtils';
|
|
@@ -391,10 +393,17 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
391
393
|
closeOverlay = false;
|
|
392
394
|
}
|
|
393
395
|
|
|
394
|
-
|
|
396
|
+
updateCalendarDateRange(value);
|
|
397
|
+
|
|
398
|
+
if (closeOverlay) {
|
|
399
|
+
handleValueUpdate(event, value, closeOverlay);
|
|
400
|
+
} else {
|
|
401
|
+
setSelectedDates(value !== null && value !== void 0 ? value : []);
|
|
402
|
+
} // End unfinished selections.
|
|
403
|
+
|
|
395
404
|
|
|
396
405
|
hasDoneSelect.current = true;
|
|
397
|
-
}, [handleValueUpdate]);
|
|
406
|
+
}, [handleValueUpdate, updateCalendarDateRange]);
|
|
398
407
|
var handleOK = useCallback(function (event) {
|
|
399
408
|
handleValueUpdate(event, selectedDates);
|
|
400
409
|
onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event);
|
|
@@ -563,13 +572,27 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
563
572
|
renderTitle: renderTitle
|
|
564
573
|
};
|
|
565
574
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
575
|
+
role: "dialog",
|
|
566
576
|
className: classes,
|
|
567
577
|
ref: mergeRefs(overlayRef, speakerRef),
|
|
568
578
|
target: triggerRef,
|
|
569
579
|
style: styles
|
|
570
580
|
}, /*#__PURE__*/React.createElement("div", {
|
|
571
581
|
className: panelClasses
|
|
572
|
-
}, /*#__PURE__*/React.createElement(
|
|
582
|
+
}, /*#__PURE__*/React.createElement(Stack, {
|
|
583
|
+
alignItems: "flex-start"
|
|
584
|
+
}, /*#__PURE__*/React.createElement(PredefinedRanges, {
|
|
585
|
+
direction: "column",
|
|
586
|
+
spacing: 0,
|
|
587
|
+
className: prefix('daterange-predefined'),
|
|
588
|
+
ranges: (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
589
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
590
|
+
})) || [],
|
|
591
|
+
calendarDate: calendarDate,
|
|
592
|
+
locale: locale,
|
|
593
|
+
disabledShortcut: disabledShortcutButton,
|
|
594
|
+
onClickShortcut: handleShortcutPageDate
|
|
595
|
+
}), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
573
596
|
className: prefix('daterange-content')
|
|
574
597
|
}, /*#__PURE__*/React.createElement("div", {
|
|
575
598
|
className: prefix('daterange-header')
|
|
@@ -587,8 +610,10 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
587
610
|
hideOkBtn: oneTap,
|
|
588
611
|
onOk: handleOK,
|
|
589
612
|
onClickShortcut: handleShortcutPageDate,
|
|
590
|
-
ranges: ranges
|
|
591
|
-
|
|
613
|
+
ranges: ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
614
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
615
|
+
})
|
|
616
|
+
})))));
|
|
592
617
|
};
|
|
593
618
|
|
|
594
619
|
var hasValue = !isNil(value) && value.length > 1;
|
|
@@ -4,8 +4,9 @@ export declare type ValueType = [Date?, Date?];
|
|
|
4
4
|
export declare type DateRange = [Date, Date];
|
|
5
5
|
export interface RangeType {
|
|
6
6
|
label: React.ReactNode;
|
|
7
|
-
closeOverlay?: boolean;
|
|
8
7
|
value: DateRange | ((value?: ValueType) => DateRange);
|
|
8
|
+
closeOverlay?: boolean;
|
|
9
|
+
placement?: 'bottom' | 'left';
|
|
9
10
|
}
|
|
10
11
|
export declare type DisabledDateFunction = (
|
|
11
12
|
/** Date used to determine if disabling is required. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rsuite",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.17.0",
|
|
4
4
|
"description": "A suite of react components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"lodash": "^4.17.11",
|
|
38
38
|
"prop-types": "^15.7.2",
|
|
39
39
|
"react-virtualized": "^9.22.3",
|
|
40
|
-
"rsuite-table": "^5.
|
|
40
|
+
"rsuite-table": "^5.7.0",
|
|
41
41
|
"schema-typed": "^2.0.3"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|