@mirai/ui 1.0.4 → 1.0.5
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/README.md +3 -1
- package/build/components/Calendar/Calendar.Week.js +26 -25
- package/build/components/Calendar/Calendar.Week.js.map +1 -1
- package/build/components/Calendar/Calendar.js +3 -3
- package/build/components/Calendar/Calendar.js.map +1 -1
- package/build/components/Calendar/Calendar.module.css +25 -15
- package/build/components/Calendar/__tests__/__snapshots__/Calendar.test.jsx.snap +2628 -180
- package/build/components/Calendar/helpers/getWeekdays.js +1 -1
- package/build/components/Calendar/helpers/getWeekdays.js.map +1 -1
- package/build/components/InputNumber/InputNumber.js +2 -2
- package/build/components/InputNumber/InputNumber.js.map +1 -1
- package/build/components/InputNumber/__tests__/__snapshots__/InputNumber.test.js.snap +10 -5
- package/build/theme/default.theme.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -195,10 +195,12 @@ A calendar component that receives the following props:
|
|
|
195
195
|
- `disabledWeekends` boolean: weekends to be shown as unavailable and can't be selected
|
|
196
196
|
- `format:string` date display format (e.g. "DD/MM/YYYY")
|
|
197
197
|
- `from:string` date in specific format (e.g. "31/03/2022")
|
|
198
|
+
- `highlights:[string]` highlights a determinate group of dates
|
|
198
199
|
- `months:number` number of months to be visible
|
|
199
200
|
- `locale:string` locale value
|
|
200
201
|
- `range:boolean` Enable range selection
|
|
201
|
-
- `
|
|
202
|
+
- `rangeMaxDays:number` Maximum days in a range
|
|
203
|
+
- `rangeMinDays:number` Minimum days in a range
|
|
202
204
|
- `to:string` date in specific format (e.g. "31/03/2022")
|
|
203
205
|
- `value:string|[string]`
|
|
204
206
|
- `onChange:function` executed when input value changes
|
|
@@ -25,7 +25,7 @@ var _CalendarModule = _interopRequireDefault(require("./Calendar.module.css"));
|
|
|
25
25
|
|
|
26
26
|
var _helpers2 = require("./helpers");
|
|
27
27
|
|
|
28
|
-
var _excluded = ["captions", "disabledDates", "disabledPast", "focus", "locale", "format", "from", "month", "number", "range", "selected", "to", "year", "onPress", "onFocus"];
|
|
28
|
+
var _excluded = ["captions", "disabledDates", "disabledPast", "focus", "locale", "format", "from", "highlights", "month", "number", "range", "rangeMinDays", "selected", "to", "year", "onPress", "onFocus"];
|
|
29
29
|
|
|
30
30
|
var Week = function Week(_ref) {
|
|
31
31
|
var captions = _ref.captions,
|
|
@@ -37,9 +37,12 @@ var Week = function Week(_ref) {
|
|
|
37
37
|
locale = _ref.locale,
|
|
38
38
|
format = _ref.format,
|
|
39
39
|
from = _ref.from,
|
|
40
|
+
_ref$highlights = _ref.highlights,
|
|
41
|
+
highlights = _ref$highlights === void 0 ? [] : _ref$highlights,
|
|
40
42
|
month = _ref.month,
|
|
41
43
|
number = _ref.number,
|
|
42
44
|
range = _ref.range,
|
|
45
|
+
rangeMinDays = _ref.rangeMinDays,
|
|
43
46
|
selected = _ref.selected,
|
|
44
47
|
to = _ref.to,
|
|
45
48
|
year = _ref.year,
|
|
@@ -56,6 +59,7 @@ var Week = function Week(_ref) {
|
|
|
56
59
|
var todayTS = (0, _helpers2.getToday)().getTime();
|
|
57
60
|
var fromTS = from === null || from === void 0 ? void 0 : from.getTime();
|
|
58
61
|
var toTS = to === null || to === void 0 ? void 0 : to.getTime();
|
|
62
|
+
var focusTS = focus === null || focus === void 0 ? void 0 : focus.getTime();
|
|
59
63
|
var rangeTS = {};
|
|
60
64
|
|
|
61
65
|
if (range) {
|
|
@@ -65,21 +69,17 @@ var Week = function Week(_ref) {
|
|
|
65
69
|
|
|
66
70
|
rangeTS = {
|
|
67
71
|
start: start ? start.getTime() : undefined,
|
|
68
|
-
end: end ? end.getTime() : undefined
|
|
72
|
+
end: end ? end.getTime() : undefined,
|
|
73
|
+
min: start && rangeMinDays ? (0, _locale.dateCalc)(start, rangeMinDays, 'days').getTime() : undefined
|
|
69
74
|
};
|
|
70
75
|
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
var _disabledDatesTS$filt = disabledDatesTS.filter(function (ts) {
|
|
77
|
+
return ts > rangeTS.start;
|
|
78
|
+
}).sort(),
|
|
79
|
+
_disabledDatesTS$filt2 = (0, _slicedToArray2.default)(_disabledDatesTS$filt, 1),
|
|
80
|
+
outbound = _disabledDatesTS$filt2[0];
|
|
73
81
|
|
|
74
|
-
|
|
75
|
-
return ts > rangeTS.start && focusTS >= ts;
|
|
76
|
-
}).sort(),
|
|
77
|
-
_disabledDatesTS$filt2 = (0, _slicedToArray2.default)(_disabledDatesTS$filt, 1),
|
|
78
|
-
outbound = _disabledDatesTS$filt2[0];
|
|
79
|
-
|
|
80
|
-
rangeTS.end = outbound ? outbound - 1 : focusTS;
|
|
81
|
-
rangeTS.outbound = outbound - 1;
|
|
82
|
-
}
|
|
82
|
+
rangeTS.outbound = outbound ? outbound - 1 : undefined;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
return /*#__PURE__*/_react.default.createElement(_primitives.View, {
|
|
@@ -87,26 +87,29 @@ var Week = function Week(_ref) {
|
|
|
87
87
|
}, _Calendar.DAYS.map(function (day) {
|
|
88
88
|
var date = (0, _locale.UTC)(new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate() + day));
|
|
89
89
|
var dateTS = date.getTime();
|
|
90
|
+
var dateString = (0, _locale.dateFormat)(date, {
|
|
91
|
+
format: format
|
|
92
|
+
});
|
|
90
93
|
var is = {
|
|
91
|
-
disabled: disabledPast &&
|
|
94
|
+
disabled: disabledPast && dateTS < todayTS || // past
|
|
92
95
|
!date.getMonth() === month || // days out of month
|
|
93
96
|
disabledDatesTS.includes(dateTS) || // disabled dates
|
|
94
97
|
dateTS < fromTS || // less than range
|
|
95
98
|
dateTS > toTS,
|
|
96
99
|
// more than range
|
|
100
|
+
highlight: highlights.includes(dateString),
|
|
97
101
|
outOfRange: dateTS > rangeTS.outbound,
|
|
98
|
-
|
|
102
|
+
minRange: dateTS > rangeTS.start && dateTS < rangeTS.min,
|
|
103
|
+
range: dateTS > rangeTS.start && (dateTS < rangeTS.end || dateTS < rangeTS.min || dateTS < focusTS),
|
|
99
104
|
rangeLimit: dateTS === rangeTS.start || dateTS === rangeTS.end,
|
|
100
|
-
// ranged:
|
|
101
105
|
ranging: range && (selected === null || selected === void 0 ? void 0 : selected[0]) && !selected[1],
|
|
106
|
+
selected: range && selected ? selected[0] && !selected[1] ? dateTS === selected[0].getTime() : selected[0] && selected[1] ? dateTS >= selected[0].getTime() && dateTS <= selected[1].getTime() : undefined : dateTS === (selected === null || selected === void 0 ? void 0 : selected.getTime()),
|
|
102
107
|
today: dateTS === todayTS,
|
|
103
|
-
touchable: true,
|
|
104
108
|
visible: date.getMonth() === month
|
|
105
109
|
};
|
|
106
|
-
var
|
|
107
|
-
var textStyle = is.disabled ? _CalendarModule.default.textDisabled : isSelected || dateTS === rangeTS.end ? _CalendarModule.default.textSelected : undefined;
|
|
110
|
+
var textStyle = is.disabled ? _CalendarModule.default.textDisabled : is.selected || dateTS === rangeTS.end ? _CalendarModule.default.textSelected : is.highlight && !is.range ? _CalendarModule.default.textHighlight : undefined;
|
|
108
111
|
return /*#__PURE__*/_react.default.createElement(_primitives.Pressable, {
|
|
109
|
-
disabled: is.disabled || is.outOfRange || !is.visible,
|
|
112
|
+
disabled: is.disabled || is.minRange || is.outOfRange || !is.visible,
|
|
110
113
|
key: day,
|
|
111
114
|
tabIndex: is.visible && !is.disabled ? date.getDate() : undefined,
|
|
112
115
|
"data-testid": "".concat(others['data-testid'] || 'calendar', "-").concat(number, "-").concat(day),
|
|
@@ -121,9 +124,9 @@ var Week = function Week(_ref) {
|
|
|
121
124
|
return _onPress(date);
|
|
122
125
|
}
|
|
123
126
|
}, is.visible && /*#__PURE__*/_react.default.createElement(_primitives.View, {
|
|
124
|
-
className: (0, _helpers.styles)(_CalendarModule.default.day, is.range &&
|
|
127
|
+
className: (0, _helpers.styles)(_CalendarModule.default.day, is.range && !is.disabled && !is.outOfRange && _CalendarModule.default.dayRange, (is.rangeLimit || !is.range && is.selected) && _CalendarModule.default.daySelected, is.rangeLimit && dateTS === rangeTS.start && _CalendarModule.default.daySelectedStart, is.rangeLimit && dateTS === rangeTS.end && _CalendarModule.default.daySelectedEnd, !is.selected && !is.disabled && !is.minRange && !is.outOfRange && _CalendarModule.default.dayTouchable)
|
|
125
128
|
}, /*#__PURE__*/_react.default.createElement(_primitives.Text, {
|
|
126
|
-
bold: is.today,
|
|
129
|
+
bold: is.today || is.highlight || is.selected && !is.range,
|
|
127
130
|
className: textStyle
|
|
128
131
|
}, (0, _locale.dateFormat)(date, {
|
|
129
132
|
locale: locale,
|
|
@@ -131,9 +134,7 @@ var Week = function Week(_ref) {
|
|
|
131
134
|
})), captions && /*#__PURE__*/_react.default.createElement(_primitives.Text, {
|
|
132
135
|
small: true,
|
|
133
136
|
className: (0, _helpers.styles)(textStyle, _CalendarModule.default.caption)
|
|
134
|
-
}, captions[
|
|
135
|
-
format: format
|
|
136
|
-
})] || '')));
|
|
137
|
+
}, captions[dateString] || '')));
|
|
137
138
|
}));
|
|
138
139
|
};
|
|
139
140
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Calendar/Calendar.Week.jsx"],"names":["Week","captions","disabledDates","disabledPast","focus","locale","format","from","month","number","range","selected","to","year","onPress","onFocus","others","disabledDatesTS","map","date","getTime","firstDate","todayTS","fromTS","toTS","rangeTS","start","end","undefined","focusTS","filter","ts","sort","outbound","DAYS","day","Date","getFullYear","getMonth","getDate","dateTS","is","disabled","includes","outOfRange","rangeLimit","ranging","today","touchable","visible","isSelected","textStyle","style","textDisabled","textSelected","cell","daySelected","dayRange","dayRangeLimit","dayTouchable","caption","displayName"],"mappings":"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","sourcesContent":["import { dateFormat, parseDate, UTC } from '@mirai/locale';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { styles } from '../../helpers';\nimport { Pressable, Text, View } from '../../primitives';\nimport { DAYS } from './Calendar.constants';\nimport style from './Calendar.module.css';\nimport { getFirstDateOfWeek, getToday } from './helpers';\n\nexport const Week = ({\n captions,\n disabledDates = [],\n disabledPast = false,\n focus,\n locale,\n format,\n from,\n month,\n number,\n range,\n selected,\n to,\n year,\n onPress = () => {},\n onFocus = () => {},\n ...others\n}) => {\n const disabledDatesTS = disabledDates.map((date) => UTC(parseDate(date, format)).getTime());\n const firstDate = getFirstDateOfWeek(number, year);\n const todayTS = getToday().getTime();\n const fromTS = from?.getTime();\n const toTS = to?.getTime();\n\n let rangeTS = {};\n if (range) {\n const [start, end] = selected;\n rangeTS = { start: start ? start.getTime() : undefined, end: end ? end.getTime() : undefined };\n\n if (focus) {\n const focusTS = focus.getTime();\n const [outbound] = disabledDatesTS.filter((ts) => ts > rangeTS.start && focusTS >= ts).sort();\n\n rangeTS.end = outbound ? outbound - 1 : focusTS;\n rangeTS.outbound = outbound - 1;\n }\n }\n\n return (\n <View row>\n {DAYS.map((day) => {\n const date = UTC(new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate() + day));\n const dateTS = date.getTime();\n\n const is = {\n disabled:\n (disabledPast && date.getTime() < todayTS) || // past\n !date.getMonth() === month || // days out of month\n disabledDatesTS.includes(dateTS) || // disabled dates\n dateTS < fromTS || // less than range\n dateTS > toTS, // more than range\n outOfRange: dateTS > rangeTS.outbound,\n range: dateTS > rangeTS.start && dateTS < rangeTS.end,\n rangeLimit: dateTS === rangeTS.start || dateTS === rangeTS.end,\n // ranged:\n ranging: range && selected?.[0] && !selected[1],\n today: dateTS === todayTS,\n touchable: true,\n visible: date.getMonth() === month,\n };\n\n const isSelected =\n range && selected\n ? selected[0] && !selected[1]\n ? dateTS === selected[0].getTime()\n : selected[0] && selected[1]\n ? dateTS >= selected[0].getTime() && dateTS <= selected[1].getTime()\n : undefined\n : dateTS === selected?.getTime();\n\n const textStyle = is.disabled\n ? style.textDisabled\n : isSelected || dateTS === rangeTS.end\n ? style.textSelected\n : undefined;\n\n return (\n <Pressable\n disabled={is.disabled || is.outOfRange || !is.visible}\n key={day}\n tabIndex={is.visible && !is.disabled ? date.getDate() : undefined}\n data-testid={`${others['data-testid'] || 'calendar'}-${number}-${day}`}\n className={style.cell}\n onEnter={is.ranging ? () => onFocus(date) : undefined}\n onLeave={is.ranging ? () => onFocus() : undefined}\n onPress={() => onPress(date)}\n >\n {is.visible && (\n <View\n className={styles(\n style.day,\n is.range && isSelected && style.daySelected,\n is.range && style.dayRange,\n (is.rangeLimit || (!is.range && isSelected)) && style.dayRangeLimit,\n !isSelected && !is.disabled && style.dayTouchable,\n )}\n >\n <Text bold={is.today} className={textStyle}>\n {dateFormat(date, { locale, day: 'numeric' })}\n </Text>\n\n {captions && (\n <Text small className={styles(textStyle, style.caption)}>\n {captions[dateFormat(date, { format })] || ''}\n </Text>\n )}\n </View>\n )}\n </Pressable>\n );\n })}\n </View>\n );\n};\n\nWeek.displayName = 'Component:Calendar:Week';\n\nWeek.propTypes = {\n captions: PropTypes.shape({}),\n disabledDates: PropTypes.arrayOf(PropTypes.string),\n disabledPast: PropTypes.bool,\n focus: PropTypes.object,\n locale: PropTypes.string,\n format: PropTypes.string,\n from: PropTypes.instanceOf(Date),\n to: PropTypes.instanceOf(Date),\n year: PropTypes.number.isRequired,\n month: PropTypes.number.isRequired,\n number: PropTypes.number.isRequired,\n range: PropTypes.bool,\n selected: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n onFocus: PropTypes.func,\n onPress: PropTypes.func,\n};\n"],"file":"Calendar.Week.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Calendar/Calendar.Week.jsx"],"names":["Week","captions","disabledDates","disabledPast","focus","locale","format","from","highlights","month","number","range","rangeMinDays","selected","to","year","onPress","onFocus","others","disabledDatesTS","map","date","getTime","firstDate","todayTS","fromTS","toTS","focusTS","rangeTS","start","end","undefined","min","filter","ts","sort","outbound","DAYS","day","Date","getFullYear","getMonth","getDate","dateTS","dateString","is","disabled","includes","highlight","outOfRange","minRange","rangeLimit","ranging","today","visible","textStyle","style","textDisabled","textSelected","textHighlight","cell","dayRange","daySelected","daySelectedStart","daySelectedEnd","dayTouchable","caption","displayName"],"mappings":"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","sourcesContent":["import { dateCalc, dateFormat, parseDate, UTC } from '@mirai/locale';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { styles } from '../../helpers';\nimport { Pressable, Text, View } from '../../primitives';\nimport { DAYS } from './Calendar.constants';\nimport style from './Calendar.module.css';\nimport { getFirstDateOfWeek, getToday } from './helpers';\n\nexport const Week = ({\n captions,\n disabledDates = [],\n disabledPast = false,\n focus,\n locale,\n format,\n from,\n highlights = [],\n month,\n number,\n range,\n rangeMinDays,\n selected,\n to,\n year,\n onPress = () => {},\n onFocus = () => {},\n ...others\n}) => {\n const disabledDatesTS = disabledDates.map((date) => UTC(parseDate(date, format)).getTime());\n const firstDate = getFirstDateOfWeek(number, year);\n const todayTS = getToday().getTime();\n const fromTS = from?.getTime();\n const toTS = to?.getTime();\n const focusTS = focus?.getTime();\n\n let rangeTS = {};\n if (range) {\n const [start, end] = selected;\n rangeTS = {\n start: start ? start.getTime() : undefined,\n end: end ? end.getTime() : undefined,\n min: start && rangeMinDays ? dateCalc(start, rangeMinDays, 'days').getTime() : undefined,\n };\n\n const [outbound] = disabledDatesTS.filter((ts) => ts > rangeTS.start).sort();\n rangeTS.outbound = outbound ? outbound - 1 : undefined;\n }\n\n return (\n <View row>\n {DAYS.map((day) => {\n const date = UTC(new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate() + day));\n const dateTS = date.getTime();\n const dateString = dateFormat(date, { format });\n\n const is = {\n disabled:\n (disabledPast && dateTS < todayTS) || // past\n !date.getMonth() === month || // days out of month\n disabledDatesTS.includes(dateTS) || // disabled dates\n dateTS < fromTS || // less than range\n dateTS > toTS, // more than range\n highlight: highlights.includes(dateString),\n outOfRange: dateTS > rangeTS.outbound,\n minRange: dateTS > rangeTS.start && dateTS < rangeTS.min,\n range: dateTS > rangeTS.start && (dateTS < rangeTS.end || dateTS < rangeTS.min || dateTS < focusTS),\n rangeLimit: dateTS === rangeTS.start || dateTS === rangeTS.end,\n ranging: range && selected?.[0] && !selected[1],\n selected:\n range && selected\n ? selected[0] && !selected[1]\n ? dateTS === selected[0].getTime()\n : selected[0] && selected[1]\n ? dateTS >= selected[0].getTime() && dateTS <= selected[1].getTime()\n : undefined\n : dateTS === selected?.getTime(),\n today: dateTS === todayTS,\n visible: date.getMonth() === month,\n };\n\n const textStyle = is.disabled\n ? style.textDisabled\n : is.selected || dateTS === rangeTS.end\n ? style.textSelected\n : is.highlight && !is.range\n ? style.textHighlight\n : undefined;\n\n return (\n <Pressable\n disabled={is.disabled || is.minRange || is.outOfRange || !is.visible}\n key={day}\n tabIndex={is.visible && !is.disabled ? date.getDate() : undefined}\n data-testid={`${others['data-testid'] || 'calendar'}-${number}-${day}`}\n className={style.cell}\n onEnter={is.ranging ? () => onFocus(date) : undefined}\n onLeave={is.ranging ? () => onFocus() : undefined}\n onPress={() => onPress(date)}\n >\n {is.visible && (\n <View\n className={styles(\n style.day,\n is.range && !is.disabled && !is.outOfRange && style.dayRange,\n (is.rangeLimit || (!is.range && is.selected)) && style.daySelected,\n is.rangeLimit && dateTS === rangeTS.start && style.daySelectedStart,\n is.rangeLimit && dateTS === rangeTS.end && style.daySelectedEnd,\n !is.selected && !is.disabled && !is.minRange && !is.outOfRange && style.dayTouchable,\n )}\n >\n <Text bold={is.today || is.highlight || (is.selected && !is.range)} className={textStyle}>\n {dateFormat(date, { locale, day: 'numeric' })}\n </Text>\n\n {captions && (\n <Text small className={styles(textStyle, style.caption)}>\n {captions[dateString] || ''}\n </Text>\n )}\n </View>\n )}\n </Pressable>\n );\n })}\n </View>\n );\n};\n\nWeek.displayName = 'Component:Calendar:Week';\n\nWeek.propTypes = {\n captions: PropTypes.shape({}),\n disabledDates: PropTypes.arrayOf(PropTypes.string),\n disabledPast: PropTypes.bool,\n focus: PropTypes.object,\n highlights: PropTypes.arrayOf(PropTypes.string),\n locale: PropTypes.string,\n format: PropTypes.string,\n from: PropTypes.instanceOf(Date),\n to: PropTypes.instanceOf(Date),\n year: PropTypes.number.isRequired,\n month: PropTypes.number.isRequired,\n number: PropTypes.number.isRequired,\n range: PropTypes.bool,\n rangeMinDays: PropTypes.number,\n selected: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n onFocus: PropTypes.func,\n onPress: PropTypes.func,\n};\n"],"file":"Calendar.Week.js"}
|
|
@@ -33,7 +33,7 @@ var _Calendar2 = require("./Calendar.Weekdays");
|
|
|
33
33
|
|
|
34
34
|
var _helpers2 = require("./helpers");
|
|
35
35
|
|
|
36
|
-
var _excluded = ["disabledPast", "format", "from", "months", "locale", "range", "
|
|
36
|
+
var _excluded = ["disabledPast", "format", "from", "months", "locale", "range", "rangeMaxDays", "to", "value", "onChange", "onFocus"];
|
|
37
37
|
|
|
38
38
|
var Calendar = function Calendar(_ref) {
|
|
39
39
|
var _ref$disabledPast = _ref.disabledPast,
|
|
@@ -46,7 +46,7 @@ var Calendar = function Calendar(_ref) {
|
|
|
46
46
|
locale = _ref.locale,
|
|
47
47
|
_ref$range = _ref.range,
|
|
48
48
|
range = _ref$range === void 0 ? false : _ref$range,
|
|
49
|
-
|
|
49
|
+
rangeMaxDays = _ref.rangeMaxDays,
|
|
50
50
|
to = _ref.to,
|
|
51
51
|
value = _ref.value,
|
|
52
52
|
_ref$onChange = _ref.onChange,
|
|
@@ -118,7 +118,7 @@ var Calendar = function Calendar(_ref) {
|
|
|
118
118
|
from: from ? (0, _locale.parseDate)(from, format) : undefined,
|
|
119
119
|
locale: locale,
|
|
120
120
|
range: range,
|
|
121
|
-
to: range &&
|
|
121
|
+
to: range && rangeMaxDays && selected[0] ? (0, _locale.dateCalc)(selected[0], rangeMaxDays, 'days') : to ? (0, _locale.parseDate)(to, format) : undefined,
|
|
122
122
|
selected: selected,
|
|
123
123
|
onChange: handleChange,
|
|
124
124
|
onFocus: isDesktop ? setFocus : undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Calendar/Calendar.jsx"],"names":["Calendar","disabledPast","format","from","months","locale","range","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Calendar/Calendar.jsx"],"names":["Calendar","disabledPast","format","from","months","locale","range","rangeMaxDays","to","value","onChange","onFocus","others","isDesktop","focus","setFocus","instance","setInstance","undefined","selected","setSelected","date","handleChange","next","getTime","handleMonth","month","Date","getFullYear","getMonth","instanceTS","todayMonthTS","disabledPrevious","disabledNext","props","style","scrollview","className","Array","length","empty","index","displayName"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,OAalB;AAAA,+BAZJC,YAYI;AAAA,MAZJA,YAYI,kCAZW,IAYX;AAAA,yBAXJC,MAWI;AAAA,MAXJA,MAWI,4BAXK,YAWL;AAAA,MAVJC,IAUI,QAVJA,IAUI;AAAA,yBATJC,MASI;AAAA,MATJA,MASI,4BATK,CASL;AAAA,MARJC,MAQI,QARJA,MAQI;AAAA,wBAPJC,KAOI;AAAA,MAPJA,KAOI,2BAPI,KAOJ;AAAA,MANJC,YAMI,QANJA,YAMI;AAAA,MALJC,EAKI,QALJA,EAKI;AAAA,MAJJC,KAII,QAJJA,KAII;AAAA,2BAHJC,QAGI;AAAA,MAHJA,QAGI,8BAHO,YAAM,CAAE,CAGf;AAAA,0BAFJC,OAEI;AAAA,MAFJA,OAEI,6BAFM,YAAM,CAAE,CAEd;AAAA,MADDC,MACC;;AACJ,mBAAsB,uBAAtB;AAAA,MAAQC,SAAR,cAAQA,SAAR;;AAEA,kBAA0B,sBAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AACA,mBAAgC,qBAAS,mCAAoB,yBAApB,CAAT,CAAhC;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBC,WAAjB;;AACA,mBAAgC,qBAASX,KAAK,GAAG,EAAH,GAAQY,SAAtB,CAAhC;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBC,WAAjB;;AAEA,wBAAU,YAAM;AACd,QAAIC,IAAI,GAAGf,KAAK,GAAIG,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAR,GAAcS,SAAvB,GAAoCT,KAApD;AACA,QAAI,CAACY,IAAL,EAAW;AAEXA,IAAAA,IAAI,GAAG,uBAAUA,IAAV,EAAgBnB,MAAhB,CAAP;AACAe,IAAAA,WAAW,CAAC,mCAAoBI,IAApB,CAAD,CAAX;AACAD,IAAAA,WAAW,CAACd,KAAK,GAAG,CAAC,iBAAIe,IAAJ,CAAD,EAAYZ,KAAK,CAAC,CAAD,CAAL,GAAW,iBAAI,uBAAUA,KAAK,CAAC,CAAD,CAAf,EAAoBP,MAApB,CAAJ,CAAX,GAA8CgB,SAA1D,CAAH,GAA0E,iBAAIG,IAAJ,CAAhF,CAAX;AACD,GAPD,EAOG,CAACnB,MAAD,EAASI,KAAT,EAAgBG,KAAhB,CAPH;AASA,wBAAU,YAAM;AACdE,IAAAA,OAAO,CAACG,KAAD,CAAP;AACD,GAFD,EAEG,CAACA,KAAD,EAAQH,OAAR,CAFH;;AAIA,MAAMW,YAAY,GAAG,SAAfA,YAAe,CAACD,IAAD,EAAU;AAC7BD,IAAAA,WAAW,CAAC,YAAM;AAChB,UAAIG,IAAJ;;AAEA,UAAI,CAACjB,KAAL,EAAY;AACViB,QAAAA,IAAI,GAAGF,IAAP;AACD,OAFD,MAEO,IAAIF,QAAQ,CAAC,CAAD,CAAR,KAAgBD,SAAhB,IAA6BG,IAAI,GAAGF,QAAQ,CAAC,CAAD,CAAhD,EAAqD;AAC1DI,QAAAA,IAAI,GAAG,CAACJ,QAAQ,CAAC,CAAD,CAAT,EAAcE,IAAd,CAAP;AACD,OAFM,MAEA;AAAA;;AACLE,QAAAA,IAAI,GAAG,CAAC,eAAAJ,QAAQ,CAAC,CAAD,CAAR,0DAAaK,OAAb,QAA2BH,IAAI,CAACG,OAAL,EAA3B,GAA4CN,SAA5C,GAAwDG,IAAzD,CAAP;AACAN,QAAAA,QAAQ,CAACG,SAAD,CAAR;AACD;;AACDR,MAAAA,QAAQ,CAACa,IAAD,CAAR;AAEA,aAAOA,IAAP;AACD,KAdU,CAAX;AAeD,GAhBD;;AAkBA,MAAME,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAW;AAC7BT,IAAAA,WAAW,CAAC,mCAAoB,IAAIU,IAAJ,CAASX,QAAQ,CAACY,WAAT,EAAT,EAAiCZ,QAAQ,CAACa,QAAT,KAAsBH,KAAvD,CAApB,CAAD,CAAX;AACD,GAFD;;AAIA,MAAMI,UAAU,GAAGd,QAAQ,CAACQ,OAAT,EAAnB;AACA,MAAMO,YAAY,GAAG,mCAAoB,yBAApB,EAAgCP,OAAhC,EAArB;AACA,MAAMQ,gBAAgB,GACnB/B,YAAY,IAAI6B,UAAU,IAAIC,YAA/B,IACC5B,IAAI,IAAI2B,UAAU,IAAI,mCAAoB,uBAAU3B,IAAV,EAAgBD,MAAhB,CAApB,EAA6CsB,OAA7C,EAFzB;AAGA,MAAMS,YAAY,GAAGzB,EAAE,IAAIsB,UAAU,IAAI,mCAAoB,uBAAUtB,EAAV,EAAcN,MAAd,CAApB,EAA2CsB,OAA3C,EAAzC;AAEA,MAAMU,KAAK,+DACNtB,MADM;AAETE,IAAAA,KAAK,EAALA,KAFS;AAGTZ,IAAAA,MAAM,EAANA,MAHS;AAITC,IAAAA,IAAI,EAAEA,IAAI,GAAG,uBAAUA,IAAV,EAAgBD,MAAhB,CAAH,GAA6BgB,SAJ9B;AAKTb,IAAAA,MAAM,EAANA,MALS;AAMTC,IAAAA,KAAK,EAALA,KANS;AAOTE,IAAAA,EAAE,EACAF,KAAK,IAAIC,YAAT,IAAyBY,QAAQ,CAAC,CAAD,CAAjC,GACI,sBAASA,QAAQ,CAAC,CAAD,CAAjB,EAAsBZ,YAAtB,EAAoC,MAApC,CADJ,GAEIC,EAAE,GACF,uBAAUA,EAAV,EAAcN,MAAd,CADE,GAEFgB,SAZG;AAaTC,IAAAA,QAAQ,EAARA,QAbS;AAcTT,IAAAA,QAAQ,EAAEY,YAdD;AAeTX,IAAAA,OAAO,EAAEE,SAAS,GAAGE,QAAH,GAAcG;AAfvB,IAAX;AAkBA,sBACE,6BAAC,gBAAD;AAAM,mBAAaN,MAAM,CAAC,aAAD;AAAzB,KACG,CAACC,SAAD,iBAAc,6BAAC,mBAAD;AAAU,IAAA,MAAM,EAAER;AAAlB,IADjB,eAEE,6BAAC,sBAAD;AAAY,IAAA,UAAU,EAAEQ,SAAxB;AAAmC,IAAA,SAAS,EAAE,qBAAOsB,wBAAMC,UAAb,EAAyBxB,MAAM,CAACyB,SAAhC;AAA9C,KACGC,KAAK,CAACnC,IAAN,CAAW;AAAEoC,IAAAA,MAAM,EAAEnC;AAAV,GAAX,EAA+B,UAACoC,KAAD,EAAQC,KAAR;AAAA,wBAC9B,6BAAC,eAAD;AACE,MAAA,GAAG,EAAEA,KADP;AAEE,MAAA,MAAM,EAAE5B,SAAS,IAAI4B,KAAK,KAAKrC,MAAM,GAAG,CAAhC,IAAqC,CAAC6B,YAAtC,GAAqD;AAAA,eAAMR,WAAW,CAACrB,MAAD,CAAjB;AAAA,OAArD,GAAiFc,SAF3F;AAGE,MAAA,UAAU,EAAEL,SAAS,IAAI4B,KAAK,KAAK,CAAvB,IAA4B,CAACT,gBAA7B,GAAgD;AAAA,eAAMP,WAAW,CAAC,CAACrB,MAAF,CAAjB;AAAA,OAAhD,GAA6Ec,SAH3F;AAIE,MAAA,QAAQ,EAAE,IAAIS,IAAJ,CAASX,QAAQ,CAACY,WAAT,EAAT,EAAiCZ,QAAQ,CAACa,QAAT,KAAsBY,KAAvD,EAA8D,CAA9D;AAJZ,OAKMP,KALN,EAD8B;AAAA,GAA/B,CADH,CAFF,CADF;AAgBD,CAhGM;;;AAkGPlC,QAAQ,CAAC0C,WAAT,GAAuB,oBAAvB","sourcesContent":["import { dateCalc, parseDate, UTC } from '@mirai/locale';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { styles } from '../../helpers';\nimport { useDevice } from '../../hooks';\nimport { ScrollView, View } from '../../primitives';\nimport style from './Calendar.module.css';\nimport { Month } from './Calendar.Month';\nimport { Weekdays } from './Calendar.Weekdays';\nimport { getFirstDateOfMonth, getToday } from './helpers';\n\nexport const Calendar = ({\n disabledPast = true,\n format = 'YYYY/MM/DD',\n from,\n months = 2,\n locale,\n range = false,\n rangeMaxDays,\n to,\n value,\n onChange = () => {},\n onFocus = () => {},\n ...others\n}) => {\n const { isDesktop } = useDevice();\n\n const [focus, setFocus] = useState();\n const [instance, setInstance] = useState(getFirstDateOfMonth(getToday()));\n const [selected, setSelected] = useState(range ? [] : undefined);\n\n useEffect(() => {\n let date = range ? (value ? value[0] : undefined) : value;\n if (!date) return;\n\n date = parseDate(date, format);\n setInstance(getFirstDateOfMonth(date));\n setSelected(range ? [UTC(date), value[1] ? UTC(parseDate(value[1], format)) : undefined] : UTC(date));\n }, [format, range, value]);\n\n useEffect(() => {\n onFocus(focus);\n }, [focus, onFocus]);\n\n const handleChange = (date) => {\n setSelected(() => {\n let next;\n\n if (!range) {\n next = date;\n } else if (selected[1] === undefined && date > selected[0]) {\n next = [selected[0], date];\n } else {\n next = [selected[0]?.getTime() === date.getTime() ? undefined : date];\n setFocus(undefined);\n }\n onChange(next);\n\n return next;\n });\n };\n\n const handleMonth = (month) => {\n setInstance(getFirstDateOfMonth(new Date(instance.getFullYear(), instance.getMonth() + month)));\n };\n\n const instanceTS = instance.getTime();\n const todayMonthTS = getFirstDateOfMonth(getToday()).getTime();\n const disabledPrevious =\n (disabledPast && instanceTS <= todayMonthTS) ||\n (from && instanceTS <= getFirstDateOfMonth(parseDate(from, format)).getTime());\n const disabledNext = to && instanceTS >= getFirstDateOfMonth(parseDate(to, format)).getTime();\n\n const props = {\n ...others,\n focus,\n format,\n from: from ? parseDate(from, format) : undefined,\n locale,\n range,\n to:\n range && rangeMaxDays && selected[0]\n ? dateCalc(selected[0], rangeMaxDays, 'days')\n : to\n ? parseDate(to, format)\n : undefined,\n selected,\n onChange: handleChange,\n onFocus: isDesktop ? setFocus : undefined,\n };\n\n return (\n <View data-testid={others['data-testid']}>\n {!isDesktop && <Weekdays locale={locale} />}\n <ScrollView horizontal={isDesktop} className={styles(style.scrollview, others.className)}>\n {Array.from({ length: months }, (empty, index) => (\n <Month\n key={index}\n onNext={isDesktop && index === months - 1 && !disabledNext ? () => handleMonth(months) : undefined}\n onPrevious={isDesktop && index === 0 && !disabledPrevious ? () => handleMonth(-months) : undefined}\n instance={new Date(instance.getFullYear(), instance.getMonth() + index, 1)}\n {...props}\n />\n ))}\n </ScrollView>\n </View>\n );\n};\n\nCalendar.displayName = 'Component:Calendar';\n\nCalendar.propTypes = {\n captions: PropTypes.shape({}),\n disabledDates: PropTypes.arrayOf(PropTypes.string),\n disabledPast: PropTypes.bool,\n disabledWeekends: PropTypes.bool,\n format: PropTypes.string,\n from: PropTypes.string,\n highlights: PropTypes.arrayOf(PropTypes.string),\n locale: PropTypes.string,\n months: PropTypes.number,\n range: PropTypes.bool,\n rangeMaxDays: PropTypes.number,\n rangeMinDays: PropTypes.number,\n to: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n};\n"],"file":"Calendar.js"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
--mirai-ui-calendar-cell: calc(var(--mirai-ui-space-
|
|
2
|
+
--mirai-ui-calendar-cell: calc(var(--mirai-ui-space-XL) + var(--mirai-ui-space-S));
|
|
3
3
|
--mirai-ui-calendar-weekday-color: var(--mirai-ui-lighten);
|
|
4
4
|
--mirai-ui-calendar-selected-color: var(--mirai-ui-lighten);
|
|
5
|
+
--mirai-ui-calendar-radius: var(--mirai-ui-border-radius);
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
.scrollview {
|
|
@@ -10,7 +11,7 @@
|
|
|
10
11
|
|
|
11
12
|
.month {
|
|
12
13
|
padding: calc(var(--mirai-ui-space-XS) / 2);
|
|
13
|
-
width: calc(var(--mirai-ui-calendar-cell) * 7);
|
|
14
|
+
width: calc(calc(var(--mirai-ui-calendar-cell) * 7) + var(--mirai-ui-space-XS));
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
.header {
|
|
@@ -24,9 +25,9 @@
|
|
|
24
25
|
|
|
25
26
|
.cell {
|
|
26
27
|
flex: 1;
|
|
27
|
-
overflow: hidden;
|
|
28
|
-
text-align: center;
|
|
29
28
|
margin-bottom: 2px;
|
|
29
|
+
text-align: center;
|
|
30
|
+
overflow: hidden;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
.weekdays {
|
|
@@ -39,39 +40,49 @@
|
|
|
39
40
|
|
|
40
41
|
.day {
|
|
41
42
|
align-items: center;
|
|
42
|
-
justify-content: center;
|
|
43
|
-
width: var(--mirai-ui-calendar-cell);
|
|
44
43
|
height: var(--mirai-ui-calendar-cell);
|
|
44
|
+
justify-content: center;
|
|
45
45
|
margin: 0 auto;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.daySelected {
|
|
49
|
-
background-color: var(--mirai-ui-disabled);
|
|
46
|
+
width: var(--mirai-ui-calendar-cell);
|
|
50
47
|
}
|
|
51
48
|
|
|
52
49
|
.dayRange:not(.daySelected) {
|
|
53
50
|
background-color: var(--mirai-ui-disabled);
|
|
54
51
|
}
|
|
55
52
|
|
|
56
|
-
.
|
|
53
|
+
.daySelected {
|
|
57
54
|
background-color: var(--mirai-ui-accent);
|
|
55
|
+
border-radius: var(--mirai-ui-calendar-radius);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.daySelectedStart {
|
|
59
|
+
border-bottom-right-radius: 0;
|
|
60
|
+
border-top-right-radius: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.daySelectedEnd {
|
|
64
|
+
border-bottom-left-radius: 0;
|
|
65
|
+
border-top-left-radius: 0;
|
|
58
66
|
}
|
|
59
67
|
|
|
60
68
|
.dayTouchable:hover {
|
|
61
69
|
background-color: var(--mirai-ui-lighten);
|
|
70
|
+
border-radius: var(--mirai-ui-calendar-radius);
|
|
62
71
|
}
|
|
63
72
|
|
|
64
73
|
.textDisabled {
|
|
65
74
|
color: var(--mirai-ui-disabled);
|
|
66
|
-
transition: all var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
|
|
67
75
|
}
|
|
68
76
|
|
|
69
|
-
.
|
|
77
|
+
.textHighlight {
|
|
78
|
+
color: var(--mirai-ui-accent);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.daySelected .textSelected {
|
|
70
82
|
color: var(--mirai-ui-base);
|
|
71
83
|
}
|
|
72
84
|
|
|
73
85
|
.caption {
|
|
74
|
-
white-space: pre-wrap;
|
|
75
86
|
height: var(--mirai-ui-font-size-small);
|
|
76
87
|
margin-top: calc(var(--mirai-ui-space-XS) / 2);
|
|
77
88
|
max-width: calc(var(--mirai-ui-calendar-cell) * 0.8);
|
|
@@ -86,7 +97,6 @@
|
|
|
86
97
|
}
|
|
87
98
|
|
|
88
99
|
.month {
|
|
89
|
-
padding: var(--mirai-ui-space-XS) 0;
|
|
90
100
|
width: 100%;
|
|
91
101
|
}
|
|
92
102
|
|