rsuite 5.18.0-beta.3 → 5.18.1-beta.4
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 +12 -0
- package/Calendar/styles/index.less +30 -11
- package/DateRangePicker/styles/index.less +1 -1
- package/Nav/styles/index.less +1 -0
- package/cjs/Calendar/Calendar.d.ts +20 -55
- package/cjs/Calendar/Calendar.js +84 -163
- package/cjs/Calendar/CalendarBody.d.ts +4 -0
- package/cjs/Calendar/{View.js → CalendarBody.js} +5 -5
- package/cjs/Calendar/CalendarContainer.d.ts +61 -0
- package/cjs/Calendar/CalendarContainer.js +233 -0
- package/cjs/Calendar/{Header.d.ts → CalendarHeader.d.ts} +9 -7
- package/cjs/Calendar/{Header.js → CalendarHeader.js} +4 -4
- package/cjs/Calendar/Table.js +1 -1
- package/cjs/Calendar/TableHeaderRow.js +1 -1
- package/cjs/Calendar/TableRow.js +1 -1
- package/cjs/Calendar/index.d.ts +6 -5
- package/cjs/Calendar/index.js +8 -7
- package/cjs/Calendar/useCalendarState.d.ts +11 -0
- package/cjs/Calendar/useCalendarState.js +39 -0
- package/cjs/DatePicker/DatePicker.js +10 -47
- package/cjs/DatePicker/utils.d.ts +1 -8
- package/cjs/DatePicker/utils.js +24 -64
- package/cjs/DateRangePicker/Calendar.d.ts +1 -1
- package/cjs/DateRangePicker/Calendar.js +2 -17
- package/cjs/DateRangePicker/DateRangePicker.js +3 -3
- package/cjs/DateRangePicker/utils.d.ts +1 -3
- package/cjs/DateRangePicker/utils.js +14 -42
- package/cjs/List/ListItem.d.ts +1 -0
- package/cjs/List/ListItem.js +5 -2
- package/cjs/Stack/Stack.js +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/utils/BrowserDetection.d.ts +7 -0
- package/cjs/utils/BrowserDetection.js +52 -2
- package/cjs/utils/dateUtils.d.ts +4 -4
- package/cjs/utils/dateUtils.js +9 -9
- package/dist/rsuite-rtl.css +43 -20
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +43 -20
- package/dist/rsuite.js +51 -40
- 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/Calendar.d.ts +20 -55
- package/esm/Calendar/Calendar.js +82 -154
- package/esm/Calendar/CalendarBody.d.ts +4 -0
- package/esm/Calendar/{View.js → CalendarBody.js} +5 -5
- package/esm/Calendar/CalendarContainer.d.ts +61 -0
- package/esm/Calendar/CalendarContainer.js +208 -0
- package/esm/Calendar/{Header.d.ts → CalendarHeader.d.ts} +9 -7
- package/esm/Calendar/{Header.js → CalendarHeader.js} +4 -4
- package/esm/Calendar/Table.js +1 -1
- package/esm/Calendar/TableHeaderRow.js +1 -1
- package/esm/Calendar/TableRow.js +1 -1
- package/esm/Calendar/index.d.ts +6 -5
- package/esm/Calendar/index.js +5 -4
- package/esm/Calendar/useCalendarState.d.ts +11 -0
- package/esm/Calendar/useCalendarState.js +31 -0
- package/esm/DatePicker/DatePicker.js +10 -46
- package/esm/DatePicker/utils.d.ts +1 -8
- package/esm/DatePicker/utils.js +23 -57
- package/esm/DateRangePicker/Calendar.d.ts +1 -1
- package/esm/DateRangePicker/Calendar.js +2 -16
- package/esm/DateRangePicker/DateRangePicker.js +5 -5
- package/esm/DateRangePicker/utils.d.ts +1 -3
- package/esm/DateRangePicker/utils.js +13 -33
- package/esm/List/ListItem.d.ts +1 -0
- package/esm/List/ListItem.js +5 -2
- package/esm/Stack/Stack.js +2 -2
- package/esm/index.d.ts +1 -1
- package/esm/utils/BrowserDetection.d.ts +7 -0
- package/esm/utils/BrowserDetection.js +41 -0
- package/esm/utils/dateUtils.d.ts +4 -4
- package/esm/utils/dateUtils.js +4 -4
- package/package.json +1 -1
- package/cjs/Calendar/CalendarPanel.d.ts +0 -26
- package/cjs/Calendar/CalendarPanel.js +0 -139
- package/cjs/Calendar/View.d.ts +0 -4
- package/esm/Calendar/CalendarPanel.d.ts +0 -26
- package/esm/Calendar/CalendarPanel.js +0 -119
- package/esm/Calendar/View.d.ts +0 -4
|
@@ -1,61 +1,26 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import
|
|
3
|
-
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Calendar from './CalendarContainer';
|
|
4
3
|
import { CalendarLocale } from '../locales';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** The panel render based on date range */
|
|
13
|
-
dateRange?: Date[];
|
|
14
|
-
/** Disabled date */
|
|
15
|
-
disabledDate?: (date: Date) => boolean;
|
|
16
|
-
/** Disabled hours */
|
|
17
|
-
disabledHours?: (hour: number, date: Date) => boolean;
|
|
18
|
-
/** Disabled minutes */
|
|
19
|
-
disabledMinutes?: (minute: number, date: Date) => boolean;
|
|
20
|
-
/** Hidden seconds */
|
|
21
|
-
disabledSeconds?: (second: number, date: Date) => boolean;
|
|
22
|
-
/** Format str */
|
|
23
|
-
format: string;
|
|
24
|
-
/** Hidden hours */
|
|
25
|
-
hideHours?: (hour: number, date: Date) => boolean;
|
|
26
|
-
/** Hidden minutes */
|
|
27
|
-
hideMinutes?: (minute: number, date: Date) => boolean;
|
|
28
|
-
/** Hidden seconds */
|
|
29
|
-
hideSeconds?: (second: number, date: Date) => boolean;
|
|
30
|
-
/** The value that mouse hover on in range selection */
|
|
31
|
-
hoverRangeValue?: [Date, Date];
|
|
32
|
-
/** Is it in the same month as today */
|
|
33
|
-
inSameMonth?: (date: Date) => boolean;
|
|
34
|
-
/** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
|
|
4
|
+
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
5
|
+
export interface CalendarProps extends WithAsProps {
|
|
6
|
+
/** Controlled value */
|
|
7
|
+
value?: Date;
|
|
8
|
+
/** Default value */
|
|
9
|
+
defaultValue?: Date;
|
|
10
|
+
/** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
|
|
35
11
|
isoWeek?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
|
|
12
|
+
/** Display a compact calendar */
|
|
13
|
+
compact?: boolean;
|
|
14
|
+
/** Show border */
|
|
15
|
+
bordered?: boolean;
|
|
38
16
|
/** Custom locale */
|
|
39
|
-
locale
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
/** Callback after the time has changed */
|
|
43
|
-
onChangePageTime?: (nextPageTime: Date, event: React.MouseEvent) => void;
|
|
44
|
-
/** Callback after mouse enter other date cell */
|
|
45
|
-
onMouseMove?: (date: Date) => void;
|
|
46
|
-
/** Switch to the callback triggered after the previous month. */
|
|
47
|
-
onMoveBackward?: (nextPageDate: Date) => void;
|
|
48
|
-
/** Switch to the callback triggered after the next month. */
|
|
49
|
-
onMoveForward?: (nextPageDate: Date) => void;
|
|
17
|
+
locale?: CalendarLocale;
|
|
18
|
+
/** Callback fired before the value changed */
|
|
19
|
+
onChange?: (date: Date) => void;
|
|
50
20
|
/** Callback fired before the date selected */
|
|
51
|
-
onSelect?: (date: Date
|
|
52
|
-
/**
|
|
53
|
-
calendarDate: Date;
|
|
54
|
-
/** Custom rendering cell*/
|
|
21
|
+
onSelect?: (date: Date) => void;
|
|
22
|
+
/** Custom render calendar cells */
|
|
55
23
|
renderCell?: (date: Date) => React.ReactNode;
|
|
56
|
-
/** Whether to show week numbers */
|
|
57
|
-
showWeekNumbers?: boolean;
|
|
58
|
-
inline?: boolean;
|
|
59
24
|
}
|
|
60
|
-
declare const
|
|
61
|
-
export default
|
|
25
|
+
declare const CalendarPanel: RsRefForwardingComponent<typeof Calendar, CalendarProps>;
|
|
26
|
+
export default CalendarPanel;
|
package/esm/Calendar/Calendar.js
CHANGED
|
@@ -1,175 +1,103 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React, { useCallback
|
|
3
|
+
import React, { useCallback } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
import { CalendarProvider } from './CalendarContext';
|
|
12
|
-
export var CalendarState;
|
|
13
|
-
|
|
14
|
-
(function (CalendarState) {
|
|
15
|
-
CalendarState["DROP_TIME"] = "DROP_TIME";
|
|
16
|
-
CalendarState["DROP_MONTH"] = "DROP_MONTH";
|
|
17
|
-
})(CalendarState || (CalendarState = {}));
|
|
18
|
-
|
|
19
|
-
var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
5
|
+
import Calendar from './CalendarContainer';
|
|
6
|
+
import Button from '../Button';
|
|
7
|
+
import { FormattedDate } from '../CustomProvider';
|
|
8
|
+
import { useClassNames, useCustom } from '../utils';
|
|
9
|
+
import useCalendarDate from './useCalendarDate';
|
|
10
|
+
var CalendarPanel = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
20
11
|
var _props$as = props.as,
|
|
21
|
-
Component = _props$as === void 0 ?
|
|
12
|
+
Component = _props$as === void 0 ? Calendar : _props$as,
|
|
13
|
+
bordered = props.bordered,
|
|
22
14
|
className = props.className,
|
|
23
15
|
_props$classPrefix = props.classPrefix,
|
|
24
16
|
classPrefix = _props$classPrefix === void 0 ? 'calendar' : _props$classPrefix,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
hoverRangeValue = props.hoverRangeValue,
|
|
32
|
-
inSameMonth = props.inSameMonth,
|
|
33
|
-
_props$isoWeek = props.isoWeek,
|
|
34
|
-
isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
|
|
35
|
-
limitEndYear = props.limitEndYear,
|
|
36
|
-
locale = props.locale,
|
|
37
|
-
onChangePageDate = props.onChangePageDate,
|
|
38
|
-
onChangePageTime = props.onChangePageTime,
|
|
39
|
-
onMouseMove = props.onMouseMove,
|
|
40
|
-
onMoveBackward = props.onMoveBackward,
|
|
41
|
-
onMoveForward = props.onMoveForward,
|
|
17
|
+
compact = props.compact,
|
|
18
|
+
_props$defaultValue = props.defaultValue,
|
|
19
|
+
defaultValue = _props$defaultValue === void 0 ? new Date() : _props$defaultValue,
|
|
20
|
+
isoWeek = props.isoWeek,
|
|
21
|
+
overrideLocale = props.locale,
|
|
22
|
+
onChange = props.onChange,
|
|
42
23
|
onSelect = props.onSelect,
|
|
43
|
-
onToggleMeridian = props.onToggleMeridian,
|
|
44
|
-
onToggleMonthDropdown = props.onToggleMonthDropdown,
|
|
45
|
-
onToggleTimeDropdown = props.onToggleTimeDropdown,
|
|
46
|
-
calendarDate = props.calendarDate,
|
|
47
24
|
renderCell = props.renderCell,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
showMeridian = props.showMeridian,
|
|
51
|
-
showWeekNumbers = props.showWeekNumbers,
|
|
52
|
-
inline = props.inline,
|
|
53
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarState", "dateRange", "disabledBackward", "disabledDate", "disabledForward", "format", "hoverRangeValue", "inSameMonth", "isoWeek", "limitEndYear", "locale", "onChangePageDate", "onChangePageTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
|
|
25
|
+
value = props.value,
|
|
26
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "bordered", "className", "classPrefix", "compact", "defaultValue", "isoWeek", "locale", "onChange", "onSelect", "renderCell", "value"]);
|
|
54
27
|
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
28
|
+
var _useCalendarDate = useCalendarDate(value, defaultValue),
|
|
29
|
+
calendarDate = _useCalendarDate.calendarDate,
|
|
30
|
+
setCalendarDate = _useCalendarDate.setCalendarDate;
|
|
58
31
|
|
|
59
|
-
var
|
|
60
|
-
|
|
32
|
+
var _useCustom = useCustom('Calendar', overrideLocale),
|
|
33
|
+
locale = _useCustom.locale;
|
|
61
34
|
|
|
62
|
-
|
|
63
|
-
|
|
35
|
+
var handleChange = useCallback(function (nextValue) {
|
|
36
|
+
setCalendarDate(nextValue);
|
|
37
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
|
|
38
|
+
}, [setCalendarDate, onChange]);
|
|
39
|
+
var handleClickToday = useCallback(function () {
|
|
40
|
+
handleChange(new Date());
|
|
41
|
+
}, [handleChange]);
|
|
42
|
+
var handleSelect = useCallback(function (nextValue) {
|
|
43
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextValue);
|
|
44
|
+
handleChange(nextValue);
|
|
45
|
+
}, [handleChange, onSelect]);
|
|
64
46
|
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
47
|
+
var _useClassNames = useClassNames(classPrefix),
|
|
48
|
+
prefix = _useClassNames.prefix,
|
|
49
|
+
merge = _useClassNames.merge,
|
|
50
|
+
withClassPrefix = _useClassNames.withClassPrefix;
|
|
68
51
|
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
var inSameThisMonthDate = useCallback(function (date) {
|
|
83
|
-
return composeFunctions(function (d) {
|
|
84
|
-
return DateUtils.setDate(d, 1);
|
|
85
|
-
}, function (d) {
|
|
86
|
-
return DateUtils.isSameMonth(d, date);
|
|
87
|
-
})(date);
|
|
88
|
-
}, []);
|
|
89
|
-
var calendarClasses = merge(className, withClassPrefix({
|
|
90
|
-
'show-time-dropdown': dropTime,
|
|
91
|
-
'show-month-dropdown': dropMonth,
|
|
92
|
-
'show-week-numbers': showWeekNumbers
|
|
52
|
+
var renderToolbar = useCallback(function () {
|
|
53
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
54
|
+
className: prefix('btn-today'),
|
|
55
|
+
size: "sm",
|
|
56
|
+
onClick: handleClickToday
|
|
57
|
+
}, locale.today || 'Today');
|
|
58
|
+
}, [handleClickToday, locale.today, prefix]);
|
|
59
|
+
var customRenderCell = useCallback(function (date) {
|
|
60
|
+
return renderCell === null || renderCell === void 0 ? void 0 : renderCell(date);
|
|
61
|
+
}, [renderCell]);
|
|
62
|
+
var classes = merge(className, withClassPrefix('panel', {
|
|
63
|
+
bordered: bordered,
|
|
64
|
+
compact: compact
|
|
93
65
|
}));
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
renderCell: renderCell,
|
|
110
|
-
showWeekNumbers: showWeekNumbers,
|
|
111
|
-
inline: inline
|
|
112
|
-
};
|
|
113
|
-
}, [calendarDate, dateRange, format, hoverRangeValue, inSameMonth, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangePageDate, onChangePageTime, onMouseMove, onSelect, renderCell, showWeekNumbers]);
|
|
114
|
-
return /*#__PURE__*/React.createElement(CalendarProvider, {
|
|
115
|
-
value: contextValue
|
|
116
|
-
}, /*#__PURE__*/React.createElement(Component, _extends({}, DateUtils.omitHideDisabledProps(rest), {
|
|
117
|
-
className: calendarClasses,
|
|
118
|
-
ref: ref
|
|
119
|
-
}), /*#__PURE__*/React.createElement(Header, {
|
|
120
|
-
showMonth: showMonth,
|
|
121
|
-
showDate: showDate,
|
|
122
|
-
showTime: showTime,
|
|
123
|
-
showMeridian: showMeridian,
|
|
124
|
-
disabledTime: isTimeDisabled,
|
|
125
|
-
onMoveForward: handleMoveForward,
|
|
126
|
-
onMoveBackward: handleMoveBackward,
|
|
127
|
-
onToggleMonthDropdown: onToggleMonthDropdown,
|
|
128
|
-
onToggleTimeDropdown: onToggleTimeDropdown,
|
|
129
|
-
onToggleMeridian: onToggleMeridian,
|
|
130
|
-
renderTitle: renderTitle,
|
|
66
|
+
return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
67
|
+
inline: true,
|
|
68
|
+
className: classes,
|
|
69
|
+
ref: ref,
|
|
70
|
+
isoWeek: isoWeek,
|
|
71
|
+
format: "yyyy-MM-dd",
|
|
72
|
+
calendarDate: calendarDate,
|
|
73
|
+
limitEndYear: 1000,
|
|
74
|
+
locale: locale,
|
|
75
|
+
renderTitle: function renderTitle(date) {
|
|
76
|
+
return /*#__PURE__*/React.createElement(FormattedDate, {
|
|
77
|
+
date: date,
|
|
78
|
+
formatStr: locale.formattedMonthPattern || 'MMMM yyyy'
|
|
79
|
+
});
|
|
80
|
+
},
|
|
131
81
|
renderToolbar: renderToolbar,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}), showTime && /*#__PURE__*/React.createElement(TimeDropdown, _extends({}, timeDropdownProps, {
|
|
139
|
-
show: dropTime,
|
|
140
|
-
showMeridian: showMeridian
|
|
141
|
-
}))));
|
|
82
|
+
renderCell: customRenderCell,
|
|
83
|
+
onMoveForward: handleChange,
|
|
84
|
+
onMoveBackward: handleChange,
|
|
85
|
+
onChangePageDate: handleChange,
|
|
86
|
+
onSelect: handleSelect
|
|
87
|
+
}));
|
|
142
88
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
classPrefix: PropTypes.string,
|
|
148
|
-
disabledDate: PropTypes.func,
|
|
149
|
-
disabledHours: PropTypes.func,
|
|
150
|
-
disabledMinutes: PropTypes.func,
|
|
151
|
-
disabledSeconds: PropTypes.func,
|
|
152
|
-
format: PropTypes.string,
|
|
153
|
-
hideHours: PropTypes.func,
|
|
154
|
-
hideMinutes: PropTypes.func,
|
|
155
|
-
hideSeconds: PropTypes.func,
|
|
156
|
-
inSameMonth: PropTypes.func,
|
|
89
|
+
CalendarPanel.displayName = 'CalendarPanel';
|
|
90
|
+
CalendarPanel.propTypes = {
|
|
91
|
+
value: PropTypes.instanceOf(Date),
|
|
92
|
+
defaultValue: PropTypes.instanceOf(Date),
|
|
157
93
|
isoWeek: PropTypes.bool,
|
|
158
|
-
|
|
94
|
+
compact: PropTypes.bool,
|
|
95
|
+
bordered: PropTypes.bool,
|
|
159
96
|
locale: PropTypes.object,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
onMoveForward: PropTypes.func,
|
|
97
|
+
className: PropTypes.string,
|
|
98
|
+
classPrefix: PropTypes.string,
|
|
99
|
+
onChange: PropTypes.func,
|
|
164
100
|
onSelect: PropTypes.func,
|
|
165
|
-
|
|
166
|
-
onToggleMonthDropdown: PropTypes.func,
|
|
167
|
-
onToggleTimeDropdown: PropTypes.func,
|
|
168
|
-
calendarDate: PropTypes.instanceOf(Date),
|
|
169
|
-
renderCell: PropTypes.func,
|
|
170
|
-
renderTitle: PropTypes.func,
|
|
171
|
-
renderToolbar: PropTypes.func,
|
|
172
|
-
showMeridian: PropTypes.bool,
|
|
173
|
-
showWeekNumbers: PropTypes.bool
|
|
101
|
+
renderCell: PropTypes.func
|
|
174
102
|
};
|
|
175
|
-
export default
|
|
103
|
+
export default CalendarPanel;
|
|
@@ -5,12 +5,12 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import { DateUtils, useClassNames, useCustom } from '../utils';
|
|
6
6
|
import Table from './Table';
|
|
7
7
|
import { useCalendarContext } from './CalendarContext';
|
|
8
|
-
var
|
|
8
|
+
var CalendarBody = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
9
9
|
var _props$as = props.as,
|
|
10
10
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
11
11
|
className = props.className,
|
|
12
12
|
_props$classPrefix = props.classPrefix,
|
|
13
|
-
classPrefix = _props$classPrefix === void 0 ? 'calendar-
|
|
13
|
+
classPrefix = _props$classPrefix === void 0 ? 'calendar-body' : _props$classPrefix,
|
|
14
14
|
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix"]);
|
|
15
15
|
|
|
16
16
|
var _useCalendarContext = useCalendarContext(),
|
|
@@ -38,10 +38,10 @@ var View = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
38
38
|
"aria-label": formatDate(thisMonthDate, locale.formattedMonthPattern)
|
|
39
39
|
}));
|
|
40
40
|
});
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
CalendarBody.displayName = 'CalendarBody';
|
|
42
|
+
CalendarBody.propTypes = {
|
|
43
43
|
as: PropTypes.elementType,
|
|
44
44
|
className: PropTypes.string,
|
|
45
45
|
classPrefix: PropTypes.string
|
|
46
46
|
};
|
|
47
|
-
export default
|
|
47
|
+
export default CalendarBody;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { HTMLAttributes } from 'react';
|
|
2
|
+
import { CalendarHeaderProps } from './CalendarHeader';
|
|
3
|
+
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
4
|
+
import { CalendarLocale } from '../locales';
|
|
5
|
+
import { CalendarState } from './useCalendarState';
|
|
6
|
+
export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onChange' | 'onMouseMove'>, CalendarHeaderProps {
|
|
7
|
+
/** The panel render based on date range */
|
|
8
|
+
dateRange?: Date[];
|
|
9
|
+
/** Date displayed on the current page */
|
|
10
|
+
calendarDate: Date;
|
|
11
|
+
/** Whether to show week numbers */
|
|
12
|
+
showWeekNumbers?: boolean;
|
|
13
|
+
inline?: boolean;
|
|
14
|
+
defaultState?: CalendarState;
|
|
15
|
+
/** Disabled date */
|
|
16
|
+
disabledDate?: (date: Date) => boolean;
|
|
17
|
+
/** Disabled hours */
|
|
18
|
+
disabledHours?: (hour: number, date: Date) => boolean;
|
|
19
|
+
/** Disabled minutes */
|
|
20
|
+
disabledMinutes?: (minute: number, date: Date) => boolean;
|
|
21
|
+
/** Hidden seconds */
|
|
22
|
+
disabledSeconds?: (second: number, date: Date) => boolean;
|
|
23
|
+
/** Format str */
|
|
24
|
+
format: string;
|
|
25
|
+
/** Hidden hours */
|
|
26
|
+
hideHours?: (hour: number, date: Date) => boolean;
|
|
27
|
+
/** Hidden minutes */
|
|
28
|
+
hideMinutes?: (minute: number, date: Date) => boolean;
|
|
29
|
+
/** Hidden seconds */
|
|
30
|
+
hideSeconds?: (second: number, date: Date) => boolean;
|
|
31
|
+
/** The value that mouse hover on in range selection */
|
|
32
|
+
hoverRangeValue?: [Date, Date];
|
|
33
|
+
/** Is it in the same month as today */
|
|
34
|
+
inSameMonth?: (date: Date) => boolean;
|
|
35
|
+
/** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
|
|
36
|
+
isoWeek?: boolean;
|
|
37
|
+
/** Limit showing how many years in the future */
|
|
38
|
+
limitEndYear?: number;
|
|
39
|
+
/** Custom locale */
|
|
40
|
+
locale: CalendarLocale;
|
|
41
|
+
/** Callback after the date has changed */
|
|
42
|
+
onChangePageDate?: (nextPageDate: Date, event: React.MouseEvent) => void;
|
|
43
|
+
/** Callback after the time has changed */
|
|
44
|
+
onChangePageTime?: (nextPageTime: Date, event: React.MouseEvent) => void;
|
|
45
|
+
/** Callback after mouse enter other date cell */
|
|
46
|
+
onMouseMove?: (date: Date) => void;
|
|
47
|
+
/** Switch to the callback triggered after the previous month. */
|
|
48
|
+
onMoveBackward?: (nextPageDate: Date) => void;
|
|
49
|
+
/** Switch to the callback triggered after the next month. */
|
|
50
|
+
onMoveForward?: (nextPageDate: Date) => void;
|
|
51
|
+
/** Callback fired before the date selected */
|
|
52
|
+
onSelect?: (date: Date, event: React.MouseEvent) => void;
|
|
53
|
+
/** Custom rendering cell*/
|
|
54
|
+
renderCell?: (date: Date) => React.ReactNode;
|
|
55
|
+
/** Called when opening the month view */
|
|
56
|
+
onToggleMonthDropdown?: (toggle: boolean) => void;
|
|
57
|
+
/** Called when opening the time view */
|
|
58
|
+
onToggleTimeDropdown?: (toggle: boolean) => void;
|
|
59
|
+
}
|
|
60
|
+
declare const CalendarContainer: RsRefForwardingComponent<'div', CalendarProps>;
|
|
61
|
+
export default CalendarContainer;
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
import React, { useCallback, useMemo } from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import pick from 'lodash/pick';
|
|
6
|
+
import MonthDropdown from './MonthDropdown';
|
|
7
|
+
import TimeDropdown from './TimeDropdown';
|
|
8
|
+
import CalendarBody from './CalendarBody';
|
|
9
|
+
import CalendarHeader from './CalendarHeader';
|
|
10
|
+
import { useClassNames, composeFunctions } from '../utils';
|
|
11
|
+
import { disabledTime, addMonths, shouldRenderDate, shouldRenderTime, shouldRenderMonth, setDate, isSameMonth, calendarOnlyProps, omitHideDisabledProps } from '../utils/dateUtils';
|
|
12
|
+
import { CalendarProvider } from './CalendarContext';
|
|
13
|
+
import useCalendarState, { CalendarState } from './useCalendarState';
|
|
14
|
+
import AngleUpIcon from '@rsuite/icons/legacy/AngleUp';
|
|
15
|
+
var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
16
|
+
var _props$as = props.as,
|
|
17
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
18
|
+
className = props.className,
|
|
19
|
+
_props$classPrefix = props.classPrefix,
|
|
20
|
+
classPrefix = _props$classPrefix === void 0 ? 'calendar' : _props$classPrefix,
|
|
21
|
+
dateRange = props.dateRange,
|
|
22
|
+
disabledBackward = props.disabledBackward,
|
|
23
|
+
defaultState = props.defaultState,
|
|
24
|
+
disabledDate = props.disabledDate,
|
|
25
|
+
disabledForward = props.disabledForward,
|
|
26
|
+
format = props.format,
|
|
27
|
+
hoverRangeValue = props.hoverRangeValue,
|
|
28
|
+
inSameMonth = props.inSameMonth,
|
|
29
|
+
_props$isoWeek = props.isoWeek,
|
|
30
|
+
isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
|
|
31
|
+
limitEndYear = props.limitEndYear,
|
|
32
|
+
locale = props.locale,
|
|
33
|
+
onChangePageDate = props.onChangePageDate,
|
|
34
|
+
onChangePageTime = props.onChangePageTime,
|
|
35
|
+
onMouseMove = props.onMouseMove,
|
|
36
|
+
onMoveBackward = props.onMoveBackward,
|
|
37
|
+
onMoveForward = props.onMoveForward,
|
|
38
|
+
onSelect = props.onSelect,
|
|
39
|
+
onToggleMeridian = props.onToggleMeridian,
|
|
40
|
+
onToggleMonthDropdown = props.onToggleMonthDropdown,
|
|
41
|
+
onToggleTimeDropdown = props.onToggleTimeDropdown,
|
|
42
|
+
calendarDate = props.calendarDate,
|
|
43
|
+
renderCell = props.renderCell,
|
|
44
|
+
renderTitle = props.renderTitle,
|
|
45
|
+
renderToolbar = props.renderToolbar,
|
|
46
|
+
showMeridian = props.showMeridian,
|
|
47
|
+
showWeekNumbers = props.showWeekNumbers,
|
|
48
|
+
inline = props.inline,
|
|
49
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "inSameMonth", "isoWeek", "limitEndYear", "locale", "onChangePageDate", "onChangePageTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
|
|
50
|
+
|
|
51
|
+
var _useClassNames = useClassNames(classPrefix),
|
|
52
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
53
|
+
merge = _useClassNames.merge,
|
|
54
|
+
prefix = _useClassNames.prefix;
|
|
55
|
+
|
|
56
|
+
var _useCalendarState = useCalendarState(defaultState),
|
|
57
|
+
calendarState = _useCalendarState.calendarState,
|
|
58
|
+
reset = _useCalendarState.reset,
|
|
59
|
+
openMonth = _useCalendarState.openMonth,
|
|
60
|
+
openTime = _useCalendarState.openTime;
|
|
61
|
+
|
|
62
|
+
var isDisabledDate = useCallback(function (date) {
|
|
63
|
+
var _disabledDate;
|
|
64
|
+
|
|
65
|
+
return (_disabledDate = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date)) !== null && _disabledDate !== void 0 ? _disabledDate : false;
|
|
66
|
+
}, [disabledDate]);
|
|
67
|
+
|
|
68
|
+
var isTimeDisabled = function isTimeDisabled(date) {
|
|
69
|
+
return disabledTime(props, date);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
var handleMoveForward = useCallback(function () {
|
|
73
|
+
onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward(addMonths(calendarDate, 1));
|
|
74
|
+
}, [onMoveForward, calendarDate]);
|
|
75
|
+
var handleMoveBackward = useCallback(function () {
|
|
76
|
+
onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward(addMonths(calendarDate, -1));
|
|
77
|
+
}, [onMoveBackward, calendarDate]); // It is displayed as the month to be selected.
|
|
78
|
+
|
|
79
|
+
var toggleMonthView = useCallback(function () {
|
|
80
|
+
if (calendarState === CalendarState.MONTH) {
|
|
81
|
+
reset();
|
|
82
|
+
} else {
|
|
83
|
+
openMonth();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(calendarState !== CalendarState.MONTH);
|
|
87
|
+
}, [calendarState, onToggleMonthDropdown, openMonth, reset]); // It is displayed as a time to be selected.
|
|
88
|
+
|
|
89
|
+
var toggleTimeView = useCallback(function () {
|
|
90
|
+
if (calendarState === CalendarState.TIME) {
|
|
91
|
+
reset();
|
|
92
|
+
} else {
|
|
93
|
+
openTime();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
onToggleTimeDropdown === null || onToggleTimeDropdown === void 0 ? void 0 : onToggleTimeDropdown(calendarState !== CalendarState.TIME);
|
|
97
|
+
}, [calendarState, onToggleTimeDropdown, openTime, reset]);
|
|
98
|
+
var handleCloseDropdown = useCallback(function () {
|
|
99
|
+
return reset();
|
|
100
|
+
}, [reset]);
|
|
101
|
+
var renderDate = shouldRenderDate(format);
|
|
102
|
+
var renderTime = shouldRenderTime(format);
|
|
103
|
+
var renderMonth = shouldRenderMonth(format);
|
|
104
|
+
var onlyShowTime = renderTime && !renderDate && !renderMonth;
|
|
105
|
+
var onlyShowMonth = renderMonth && !renderDate && !renderTime;
|
|
106
|
+
var showTime = calendarState === CalendarState.TIME || onlyShowTime;
|
|
107
|
+
var showMonth = calendarState === CalendarState.MONTH || onlyShowMonth;
|
|
108
|
+
var inSameThisMonthDate = useCallback(function (date) {
|
|
109
|
+
return composeFunctions(function (d) {
|
|
110
|
+
return setDate(d, 1);
|
|
111
|
+
}, function (d) {
|
|
112
|
+
return isSameMonth(d, date);
|
|
113
|
+
})(date);
|
|
114
|
+
}, []);
|
|
115
|
+
var calendarClasses = merge(className, withClassPrefix({
|
|
116
|
+
'time-view': showTime,
|
|
117
|
+
'month-view': showMonth,
|
|
118
|
+
'show-week-numbers': showWeekNumbers
|
|
119
|
+
}));
|
|
120
|
+
var timeDropdownProps = pick(rest, calendarOnlyProps);
|
|
121
|
+
var handleChangePageDate = useCallback(function (date, event) {
|
|
122
|
+
reset();
|
|
123
|
+
onChangePageDate === null || onChangePageDate === void 0 ? void 0 : onChangePageDate(date, event);
|
|
124
|
+
}, [onChangePageDate, reset]);
|
|
125
|
+
var contextValue = useMemo(function () {
|
|
126
|
+
return {
|
|
127
|
+
date: calendarDate,
|
|
128
|
+
dateRange: dateRange,
|
|
129
|
+
disabledDate: isDisabledDate,
|
|
130
|
+
format: format,
|
|
131
|
+
hoverRangeValue: hoverRangeValue,
|
|
132
|
+
inSameMonth: inSameMonth !== null && inSameMonth !== void 0 ? inSameMonth : inSameThisMonthDate,
|
|
133
|
+
isoWeek: isoWeek,
|
|
134
|
+
locale: locale,
|
|
135
|
+
onChangePageDate: handleChangePageDate,
|
|
136
|
+
onChangePageTime: onChangePageTime,
|
|
137
|
+
onMouseMove: onMouseMove,
|
|
138
|
+
onSelect: onSelect,
|
|
139
|
+
renderCell: renderCell,
|
|
140
|
+
showWeekNumbers: showWeekNumbers,
|
|
141
|
+
inline: inline
|
|
142
|
+
};
|
|
143
|
+
}, [calendarDate, dateRange, format, handleChangePageDate, hoverRangeValue, inSameMonth, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangePageTime, onMouseMove, onSelect, renderCell, showWeekNumbers]);
|
|
144
|
+
return /*#__PURE__*/React.createElement(CalendarProvider, {
|
|
145
|
+
value: contextValue
|
|
146
|
+
}, /*#__PURE__*/React.createElement(Component, _extends({}, omitHideDisabledProps(rest), {
|
|
147
|
+
className: calendarClasses,
|
|
148
|
+
ref: ref
|
|
149
|
+
}), /*#__PURE__*/React.createElement(CalendarHeader, {
|
|
150
|
+
showMonth: renderMonth,
|
|
151
|
+
showDate: renderDate,
|
|
152
|
+
showTime: renderTime,
|
|
153
|
+
showMeridian: showMeridian,
|
|
154
|
+
disabledTime: isTimeDisabled,
|
|
155
|
+
onMoveForward: handleMoveForward,
|
|
156
|
+
onMoveBackward: handleMoveBackward,
|
|
157
|
+
onToggleMonthDropdown: toggleMonthView,
|
|
158
|
+
onToggleTimeDropdown: toggleTimeView,
|
|
159
|
+
onToggleMeridian: onToggleMeridian,
|
|
160
|
+
renderTitle: renderTitle,
|
|
161
|
+
renderToolbar: renderToolbar,
|
|
162
|
+
disabledBackward: disabledBackward,
|
|
163
|
+
disabledForward: disabledForward
|
|
164
|
+
}), renderDate && /*#__PURE__*/React.createElement(CalendarBody, null), renderMonth && /*#__PURE__*/React.createElement(MonthDropdown, {
|
|
165
|
+
show: showMonth,
|
|
166
|
+
limitEndYear: limitEndYear,
|
|
167
|
+
disabledMonth: isDisabledDate
|
|
168
|
+
}), renderTime && /*#__PURE__*/React.createElement(TimeDropdown, _extends({}, timeDropdownProps, {
|
|
169
|
+
show: showTime,
|
|
170
|
+
showMeridian: showMeridian
|
|
171
|
+
})), (showMonth || showTime) && renderDate && /*#__PURE__*/React.createElement("button", {
|
|
172
|
+
className: prefix('btn-close'),
|
|
173
|
+
onClick: handleCloseDropdown,
|
|
174
|
+
"aria-label": "Collapse " + (showMonth ? 'month' : 'time') + " view"
|
|
175
|
+
}, /*#__PURE__*/React.createElement(AngleUpIcon, null))));
|
|
176
|
+
});
|
|
177
|
+
CalendarContainer.displayName = 'CalendarContainer';
|
|
178
|
+
CalendarContainer.propTypes = {
|
|
179
|
+
className: PropTypes.string,
|
|
180
|
+
classPrefix: PropTypes.string,
|
|
181
|
+
disabledDate: PropTypes.func,
|
|
182
|
+
disabledHours: PropTypes.func,
|
|
183
|
+
disabledMinutes: PropTypes.func,
|
|
184
|
+
disabledSeconds: PropTypes.func,
|
|
185
|
+
format: PropTypes.string,
|
|
186
|
+
hideHours: PropTypes.func,
|
|
187
|
+
hideMinutes: PropTypes.func,
|
|
188
|
+
hideSeconds: PropTypes.func,
|
|
189
|
+
inSameMonth: PropTypes.func,
|
|
190
|
+
isoWeek: PropTypes.bool,
|
|
191
|
+
limitEndYear: PropTypes.number,
|
|
192
|
+
locale: PropTypes.object,
|
|
193
|
+
onChangePageDate: PropTypes.func,
|
|
194
|
+
onChangePageTime: PropTypes.func,
|
|
195
|
+
onMoveBackward: PropTypes.func,
|
|
196
|
+
onMoveForward: PropTypes.func,
|
|
197
|
+
onSelect: PropTypes.func,
|
|
198
|
+
onToggleMeridian: PropTypes.func,
|
|
199
|
+
onToggleMonthDropdown: PropTypes.func,
|
|
200
|
+
onToggleTimeDropdown: PropTypes.func,
|
|
201
|
+
calendarDate: PropTypes.instanceOf(Date),
|
|
202
|
+
renderCell: PropTypes.func,
|
|
203
|
+
renderTitle: PropTypes.func,
|
|
204
|
+
renderToolbar: PropTypes.func,
|
|
205
|
+
showMeridian: PropTypes.bool,
|
|
206
|
+
showWeekNumbers: PropTypes.bool
|
|
207
|
+
};
|
|
208
|
+
export default CalendarContainer;
|