@mirai/ui 1.0.29 → 1.0.30

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.
@@ -45,8 +45,7 @@ var Month = function Month(_ref) {
45
45
  var focus = _ref.focus,
46
46
  instance = _ref.instance,
47
47
  selected = _ref.selected,
48
- _ref$disabledPast = _ref.disabledPast,
49
- disabledPast = _ref$disabledPast === void 0 ? true : _ref$disabledPast,
48
+ disabledPast = _ref.disabledPast,
50
49
  format = _ref.format,
51
50
  from = _ref.from,
52
51
  locale = _ref.locale,
@@ -65,13 +64,15 @@ var Month = function Month(_ref) {
65
64
  isDesktop = _useDevice.isDesktop;
66
65
 
67
66
  var weekNumber = (0, _helpers2.getWeekNumber)(instance);
67
+ var testID = others['data-testid'];
68
68
  return /*#__PURE__*/_react.default.createElement(_primitives.View, {
69
69
  className: (0, _helpers.styles)(_CalendarModule.default.month, others.className)
70
70
  }, /*#__PURE__*/_react.default.createElement(_primitives.View, {
71
71
  row: true,
72
72
  className: _CalendarModule.default.header
73
73
  }, onPrevious && /*#__PURE__*/_react.default.createElement(_primitives.Pressable, {
74
- onPress: onPrevious
74
+ onPress: onPrevious,
75
+ "data-testid": testID ? "".concat(testID, "-previous") : undefined
75
76
  }, /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
76
77
  name: "Left"
77
78
  })), /*#__PURE__*/_react.default.createElement(_primitives.Text, {
@@ -79,7 +80,8 @@ var Month = function Month(_ref) {
79
80
  className: _CalendarModule.default.title
80
81
  }, (0, _helpers2.getHeader)(instance, locale)), onNext && /*#__PURE__*/_react.default.createElement(_primitives.Pressable, {
81
82
  onPress: onNext,
82
- className: _CalendarModule.default.pressable
83
+ className: _CalendarModule.default.pressable,
84
+ "data-testid": testID ? "".concat(testID, "-next") : undefined
83
85
  }, /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
84
86
  name: "Right"
85
87
  }))), isDesktop && /*#__PURE__*/_react.default.createElement(_Calendar3.Weekdays, {
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.Month.js","names":["Month","focus","instance","selected","disabledPast","format","from","locale","range","to","onChange","onFocus","onNext","onPrevious","others","isDesktop","weekNumber","style","month","className","header","title","pressable","VISIBLE_WEEKS","map","week","getMonth","getFullYear","displayName","propTypes","captions","PropTypes","shape","any","disabledDates","arrayOf","string","bool","disabledWeekends","instanceOf","Date","value","oneOfType","func"],"sources":["../../../src/components/Calendar/Calendar.Month.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { styles } from '../../helpers';\nimport { useDevice } from '../../hooks';\nimport { Icon, Pressable, Text, View } from '../../primitives';\nimport { VISIBLE_WEEKS } from './Calendar.constants';\nimport style from './Calendar.module.css';\nimport { Week } from './Calendar.Week';\nimport { Weekdays } from './Calendar.Weekdays';\nimport { getHeader, getWeekNumber } from './helpers';\n\nexport const Month = ({\n focus,\n instance,\n selected,\n disabledPast = true,\n format,\n from,\n locale,\n range = false,\n to,\n onChange = () => {},\n onFocus = () => {},\n onNext,\n onPrevious,\n ...others\n}) => {\n const { isDesktop } = useDevice();\n const weekNumber = getWeekNumber(instance);\n\n return (\n <View className={styles(style.month, others.className)}>\n <View row className={style.header}>\n {onPrevious && (\n <Pressable onPress={onPrevious}>\n <Icon name=\"Left\" />\n </Pressable>\n )}\n <Text subheadline className={style.title}>\n {getHeader(instance, locale)}\n </Text>\n {onNext && (\n <Pressable onPress={onNext} className={style.pressable}>\n <Icon name=\"Right\" />\n </Pressable>\n )}\n </View>\n\n {isDesktop && <Weekdays locale={locale} />}\n\n {VISIBLE_WEEKS.map((week) => (\n <Week\n {...{\n ...others,\n disabledPast,\n focus,\n format,\n from,\n locale,\n to,\n range,\n selected,\n }}\n key={week}\n month={instance.getMonth()}\n number={weekNumber + week}\n year={instance.getFullYear()}\n onFocus={onFocus}\n onPress={onChange}\n />\n ))}\n </View>\n );\n};\n\nMonth.displayName = 'Component:Calendar:Month';\n\nMonth.propTypes = {\n captions: PropTypes.shape({}),\n focus: PropTypes.any,\n instance: PropTypes.any,\n selected: PropTypes.any,\n disabledDates: PropTypes.arrayOf(PropTypes.string),\n disabledPast: PropTypes.bool,\n disabledWeekends: PropTypes.bool,\n format: PropTypes.string,\n from: PropTypes.instanceOf(Date),\n locale: PropTypes.string,\n range: PropTypes.bool,\n to: PropTypes.instanceOf(Date),\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.Month.js","names":["Month","focus","instance","selected","disabledPast","format","from","locale","range","to","onChange","onFocus","onNext","onPrevious","others","isDesktop","weekNumber","testID","style","month","className","header","undefined","title","pressable","VISIBLE_WEEKS","map","week","getMonth","getFullYear","displayName","propTypes","captions","PropTypes","shape","any","disabledDates","arrayOf","string","bool","disabledWeekends","instanceOf","Date","value","oneOfType","func"],"sources":["../../../src/components/Calendar/Calendar.Month.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { styles } from '../../helpers';\nimport { useDevice } from '../../hooks';\nimport { Icon, Pressable, Text, View } from '../../primitives';\nimport { VISIBLE_WEEKS } from './Calendar.constants';\nimport style from './Calendar.module.css';\nimport { Week } from './Calendar.Week';\nimport { Weekdays } from './Calendar.Weekdays';\nimport { getHeader, getWeekNumber } from './helpers';\n\nexport const Month = ({\n focus,\n instance,\n selected,\n disabledPast,\n format,\n from,\n locale,\n range = false,\n to,\n onChange = () => {},\n onFocus = () => {},\n onNext,\n onPrevious,\n ...others\n}) => {\n const { isDesktop } = useDevice();\n const weekNumber = getWeekNumber(instance);\n\n const { ['data-testid']: testID } = others;\n\n return (\n <View className={styles(style.month, others.className)}>\n <View row className={style.header}>\n {onPrevious && (\n <Pressable onPress={onPrevious} data-testid={testID ? `${testID}-previous` : undefined}>\n <Icon name=\"Left\" />\n </Pressable>\n )}\n <Text subheadline className={style.title}>\n {getHeader(instance, locale)}\n </Text>\n {onNext && (\n <Pressable onPress={onNext} className={style.pressable} data-testid={testID ? `${testID}-next` : undefined}>\n <Icon name=\"Right\" />\n </Pressable>\n )}\n </View>\n\n {isDesktop && <Weekdays locale={locale} />}\n\n {VISIBLE_WEEKS.map((week) => (\n <Week\n {...{\n ...others,\n disabledPast,\n focus,\n format,\n from,\n locale,\n to,\n range,\n selected,\n }}\n key={week}\n month={instance.getMonth()}\n number={weekNumber + week}\n year={instance.getFullYear()}\n onFocus={onFocus}\n onPress={onChange}\n />\n ))}\n </View>\n );\n};\n\nMonth.displayName = 'Component:Calendar:Month';\n\nMonth.propTypes = {\n captions: PropTypes.shape({}),\n focus: PropTypes.any,\n instance: PropTypes.any,\n selected: PropTypes.any,\n disabledDates: PropTypes.arrayOf(PropTypes.string),\n disabledPast: PropTypes.bool,\n disabledWeekends: PropTypes.bool,\n format: PropTypes.string,\n from: PropTypes.instanceOf(Date),\n locale: PropTypes.string,\n range: PropTypes.bool,\n to: PropTypes.instanceOf(Date),\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n"],"mappings":"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"}
@@ -45,8 +45,7 @@ var Week = function Week(_ref) {
45
45
  var captions = _ref.captions,
46
46
  _ref$disabledDates = _ref.disabledDates,
47
47
  disabledDates = _ref$disabledDates === void 0 ? [] : _ref$disabledDates,
48
- _ref$disabledPast = _ref.disabledPast,
49
- disabledPast = _ref$disabledPast === void 0 ? true : _ref$disabledPast,
48
+ disabledPast = _ref.disabledPast,
50
49
  focus = _ref.focus,
51
50
  locale = _ref.locale,
52
51
  format = _ref.format,
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.Week.js","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","style","DAYS","day","Date","getFullYear","getMonth","getDate","dateTS","dateString","is","disabled","includes","highlight","outOfRange","minRange","rangeLimit","ranging","today","visible","textStyle","textDisabled","textSelected","textHighlight","cell","dayRange","daySelected","daySelectedStart","daySelectedEnd","dayTouchable","caption","empty","displayName","propTypes","PropTypes","shape","arrayOf","string","bool","object","instanceOf","isRequired","oneOfType","func"],"sources":["../../../src/components/Calendar/Calendar.Week.jsx"],"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, getFirstDayOfWeek } from './helpers';\n\nexport const Week = ({\n captions,\n disabledDates = [],\n disabledPast = true,\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, getFirstDayOfWeek(locale));\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 className={styles(rangeTS.start !== undefined && range && style.range)}>\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.visible || (range && !selected[1] && (is.minRange || is.outOfRange))}\n key={day}\n tabIndex={is.visible && !is.disabled ? `${date.getMonth()}-${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 {date.getDate()}\n </Text>\n\n {captions && (\n <Text\n small\n className={styles(textStyle, style.caption, !captions[dateString] && !is.rangeLimit && style.empty)}\n >\n {!is.disabled ? 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"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.Week.js","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","style","DAYS","day","Date","getFullYear","getMonth","getDate","dateTS","dateString","is","disabled","includes","highlight","outOfRange","minRange","rangeLimit","ranging","today","visible","textStyle","textDisabled","textSelected","textHighlight","cell","dayRange","daySelected","daySelectedStart","daySelectedEnd","dayTouchable","caption","empty","displayName","propTypes","PropTypes","shape","arrayOf","string","bool","object","instanceOf","isRequired","oneOfType","func"],"sources":["../../../src/components/Calendar/Calendar.Week.jsx"],"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, getFirstDayOfWeek } from './helpers';\n\nexport const Week = ({\n captions,\n disabledDates = [],\n disabledPast,\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, getFirstDayOfWeek(locale));\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 className={styles(rangeTS.start !== undefined && range && style.range)}>\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.visible || (range && !selected[1] && (is.minRange || is.outOfRange))}\n key={day}\n tabIndex={is.visible && !is.disabled ? `${date.getMonth()}-${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 {date.getDate()}\n </Text>\n\n {captions && (\n <Text\n small\n className={styles(textStyle, style.caption, !captions[dateString] && !is.rangeLimit && style.empty)}\n >\n {!is.disabled ? 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"],"mappings":"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"}
@@ -27,7 +27,7 @@ var _Calendar2 = require("./Calendar.Weekdays");
27
27
 
28
28
  var _helpers2 = require("./helpers");
29
29
 
30
- var _excluded = ["disabledPast", "format", "from", "locale", "range", "rangeMaxDays", "to", "value", "onChange", "onFocus", "onScroll"],
30
+ var _excluded = ["disabledPast", "format", "from", "locale", "range", "rangeMaxDays", "to", "value", "onChange", "onFocus", "onNavigation", "onScroll"],
31
31
  _excluded2 = ["className", "months"];
32
32
 
33
33
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -76,11 +76,14 @@ var Calendar = function Calendar(_ref) {
76
76
  onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
77
77
  _ref$onFocus = _ref.onFocus,
78
78
  onFocus = _ref$onFocus === void 0 ? function () {} : _ref$onFocus,
79
+ _ref$onNavigation = _ref.onNavigation,
80
+ onNavigation = _ref$onNavigation === void 0 ? function () {} : _ref$onNavigation,
79
81
  onScroll = _ref.onScroll,
80
82
  others = _objectWithoutProperties(_ref, _excluded);
81
83
 
82
84
  var _useDevice = (0, _hooks.useDevice)(),
83
- isDesktop = _useDevice.isDesktop;
85
+ isDesktop = _useDevice.isDesktop,
86
+ isMobile = _useDevice.isMobile;
84
87
 
85
88
  var _useState = (0, _react.useState)(),
86
89
  _useState2 = _slicedToArray(_useState, 2),
@@ -92,16 +95,32 @@ var Calendar = function Calendar(_ref) {
92
95
  instance = _useState4[0],
93
96
  setInstance = _useState4[1];
94
97
 
95
- var _useState5 = (0, _react.useState)(range ? [] : undefined),
98
+ var _useState5 = (0, _react.useState)(),
96
99
  _useState6 = _slicedToArray(_useState5, 2),
97
- selected = _useState6[0],
98
- setSelected = _useState6[1];
100
+ scrollTo = _useState6[0],
101
+ setScrollTo = _useState6[1];
102
+
103
+ var _useState7 = (0, _react.useState)(range ? [] : undefined),
104
+ _useState8 = _slicedToArray(_useState7, 2),
105
+ selected = _useState8[0],
106
+ setSelected = _useState8[1];
99
107
 
100
108
  (0, _react.useEffect)(function () {
101
109
  var date = range ? value ? value[0] : undefined : value;
102
110
  if (!date) return setSelected(range ? [] : undefined);
103
111
  date = (0, _locale.parseDate)(date, format);
104
- if (range && selected.length === 0 || !range) setInstance((0, _helpers2.getFirstDateOfMonth)(date));
112
+
113
+ if (range && (selected.length === 0 || value.length === 2) || !range) {
114
+ var next = (0, _helpers2.getFirstDateOfMonth)(date);
115
+
116
+ var _dateDiff = (0, _locale.dateDiff)(instance, date),
117
+ diffMonths = _dateDiff.months;
118
+
119
+ setFocus(undefined);
120
+ if (!diffMonths || diffMonths >= months) setInstance(next);
121
+ if (isMobile) setScrollTo((0, _helpers2.getScrollTo)(diffMonths));
122
+ }
123
+
105
124
  setSelected(range ? [(0, _locale.UTC)(date), value[1] ? (0, _locale.UTC)((0, _locale.parseDate)(value[1], format)) : undefined] : (0, _locale.UTC)(date)); // eslint-disable-next-line react-hooks/exhaustive-deps
106
125
  }, [format, range, value]);
107
126
  (0, _react.useEffect)(function () {
@@ -129,9 +148,15 @@ var Calendar = function Calendar(_ref) {
129
148
  };
130
149
 
131
150
  var handleMonth = function handleMonth(month) {
132
- setInstance((0, _helpers2.getFirstDateOfMonth)(new Date(instance.getFullYear(), instance.getMonth() + month)));
151
+ setInstance(function () {
152
+ var next = (0, _helpers2.getFirstDateOfMonth)(new Date(instance.getFullYear(), instance.getMonth() + month));
153
+ onNavigation(next);
154
+ return next;
155
+ });
133
156
  };
134
157
 
158
+ var testID = others['data-testid'];
159
+
135
160
  var className = others.className,
136
161
  _others$months = others.months,
137
162
  months = _others$months === void 0 ? 2 : _others$months,
@@ -154,20 +179,22 @@ var Calendar = function Calendar(_ref) {
154
179
  onChange: handleChange,
155
180
  onFocus: isDesktop ? setFocus : undefined
156
181
  });
157
- if (!isDesktop && to) months = (0, _locale.dateDiff)(today, (0, _locale.parseDate)(to, format)).months;
182
+ if (isMobile && to) months = (0, _locale.dateDiff)(today, (0, _locale.parseDate)(to, format)).months;
158
183
  return /*#__PURE__*/_react.default.createElement(_primitives.View, {
159
- "data-testid": others['data-testid'],
160
- className: (0, _helpers.styles)(_CalendarModule.default.container, className)
161
- }, !isDesktop && /*#__PURE__*/_react.default.createElement(_Calendar2.Weekdays, {
184
+ className: (0, _helpers.styles)(_CalendarModule.default.container, className),
185
+ "data-testid": testID
186
+ }, isMobile && /*#__PURE__*/_react.default.createElement(_Calendar2.Weekdays, {
162
187
  locale: locale
163
188
  }), /*#__PURE__*/_react.default.createElement(_primitives.ScrollView, {
164
189
  horizontal: isDesktop,
190
+ scrollTo: scrollTo,
165
191
  className: _CalendarModule.default.scrollview,
166
192
  onScroll: onScroll
167
193
  }, Array.from({
168
194
  length: months
169
195
  }, function (empty, index) {
170
196
  return /*#__PURE__*/_react.default.createElement(_Calendar.Month, _extends({
197
+ "data-testid": testID,
171
198
  key: index,
172
199
  onNext: isDesktop && index === months - 1 && !disabledNext ? function () {
173
200
  return handleMonth(months);
@@ -175,7 +202,8 @@ var Calendar = function Calendar(_ref) {
175
202
  onPrevious: isDesktop && index === 0 && !disabledPrevious ? function () {
176
203
  return handleMonth(-months);
177
204
  } : undefined,
178
- instance: new Date(instance.getFullYear(), instance.getMonth() + index, 1)
205
+ instance: new Date(instance.getFullYear(), instance.getMonth() + index, 1) // ! TODO: calc with mirai/locale
206
+
179
207
  }, props));
180
208
  })));
181
209
  };
@@ -199,6 +227,7 @@ Calendar.propTypes = {
199
227
  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
200
228
  onChange: _propTypes.default.func,
201
229
  onFocus: _propTypes.default.func,
230
+ onNavigation: _propTypes.default.func,
202
231
  onScroll: _propTypes.default.func
203
232
  };
204
233
  //# sourceMappingURL=Calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","names":["Calendar","disabledPast","format","from","locale","range","rangeMaxDays","to","value","onChange","onFocus","onScroll","others","isDesktop","focus","setFocus","instance","setInstance","undefined","selected","setSelected","date","length","handleChange","next","getTime","handleMonth","month","Date","getFullYear","getMonth","className","months","props","today","instanceTS","todayMonthTS","disabledPrevious","disabledNext","style","container","scrollview","Array","empty","index","displayName","propTypes","captions","PropTypes","shape","disabledDates","arrayOf","string","bool","disabledWeekends","highlights","number","rangeMinDays","oneOfType","func"],"sources":["../../../src/components/Calendar/Calendar.jsx"],"sourcesContent":["import { dateCalc, dateDiff, 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 locale,\n range = false,\n rangeMaxDays,\n to,\n value,\n onChange = () => {},\n onFocus = () => {},\n onScroll,\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 setSelected(range ? [] : undefined);\n\n date = parseDate(date, format);\n if ((range && selected.length === 0) || !range) setInstance(getFirstDateOfMonth(date));\n\n setSelected(range ? [UTC(date), value[1] ? UTC(parseDate(value[1], format)) : undefined] : UTC(date));\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 let { className, months = 2, ...props } = others;\n\n const today = getToday();\n const instanceTS = instance.getTime();\n const todayMonthTS = getFirstDateOfMonth(today).getTime();\n const disabledPrevious =\n (disabledPast && instanceTS <= todayMonthTS) ||\n (from && instanceTS <= getFirstDateOfMonth(parseDate(from, format)).getTime());\n\n const disabledNext =\n to && parseDate(to, format).getTime() <= getFirstDateOfMonth(dateCalc(instance, months, 'months')).getTime();\n\n props = {\n ...props,\n disabledPast,\n focus,\n format,\n from: from ? parseDate(from, format) : undefined,\n locale,\n range,\n to:\n range &&\n rangeMaxDays &&\n selected[0] &&\n !selected[1] &&\n (!to || dateCalc(selected[0], rangeMaxDays, 'days') < parseDate(to, format))\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 if (!isDesktop && to) months = dateDiff(today, parseDate(to, format)).months;\n\n return (\n <View data-testid={others['data-testid']} className={styles(style.container, className)}>\n {!isDesktop && <Weekdays locale={locale} />}\n <ScrollView horizontal={isDesktop} className={style.scrollview} onScroll={onScroll}>\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 onScroll: PropTypes.func,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.js","names":["Calendar","disabledPast","format","from","locale","range","rangeMaxDays","to","value","onChange","onFocus","onNavigation","onScroll","others","isDesktop","isMobile","focus","setFocus","instance","setInstance","scrollTo","setScrollTo","undefined","selected","setSelected","date","length","next","diffMonths","months","handleChange","getTime","handleMonth","month","Date","getFullYear","getMonth","testID","className","props","today","instanceTS","todayMonthTS","disabledPrevious","disabledNext","style","container","scrollview","Array","empty","index","displayName","propTypes","captions","PropTypes","shape","disabledDates","arrayOf","string","bool","disabledWeekends","highlights","number","rangeMinDays","oneOfType","func"],"sources":["../../../src/components/Calendar/Calendar.jsx"],"sourcesContent":["import { dateCalc, dateDiff, 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, getScrollTo, getToday } from './helpers';\n\nexport const Calendar = ({\n disabledPast = true,\n format = 'YYYY/MM/DD',\n from,\n locale,\n range = false,\n rangeMaxDays,\n to,\n value,\n onChange = () => {},\n onFocus = () => {},\n onNavigation = () => {},\n onScroll,\n ...others\n}) => {\n const { isDesktop, isMobile } = useDevice();\n\n const [focus, setFocus] = useState();\n const [instance, setInstance] = useState(getFirstDateOfMonth(getToday()));\n const [scrollTo, setScrollTo] = useState();\n const [selected, setSelected] = useState(range ? [] : undefined);\n\n useEffect(() => {\n let date = range ? (value ? value[0] : undefined) : value;\n if (!date) return setSelected(range ? [] : undefined);\n\n date = parseDate(date, format);\n if ((range && (selected.length === 0 || value.length === 2)) || !range) {\n const next = getFirstDateOfMonth(date);\n const { months: diffMonths } = dateDiff(instance, date);\n\n setFocus(undefined);\n if (!diffMonths || diffMonths >= months) setInstance(next);\n if (isMobile) setScrollTo(getScrollTo(diffMonths));\n }\n\n setSelected(range ? [UTC(date), value[1] ? UTC(parseDate(value[1], format)) : undefined] : UTC(date));\n // eslint-disable-next-line react-hooks/exhaustive-deps\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(() => {\n const next = getFirstDateOfMonth(new Date(instance.getFullYear(), instance.getMonth() + month));\n\n onNavigation(next);\n return next;\n });\n };\n\n const { ['data-testid']: testID } = others;\n let { className, months = 2, ...props } = others;\n\n const today = getToday();\n const instanceTS = instance.getTime();\n const todayMonthTS = getFirstDateOfMonth(today).getTime();\n const disabledPrevious =\n (disabledPast && instanceTS <= todayMonthTS) ||\n (from && instanceTS <= getFirstDateOfMonth(parseDate(from, format)).getTime());\n\n const disabledNext =\n to && parseDate(to, format).getTime() <= getFirstDateOfMonth(dateCalc(instance, months, 'months')).getTime();\n\n props = {\n ...props,\n disabledPast,\n focus,\n format,\n from: from ? parseDate(from, format) : undefined,\n locale,\n range,\n to:\n range &&\n rangeMaxDays &&\n selected[0] &&\n !selected[1] &&\n (!to || dateCalc(selected[0], rangeMaxDays, 'days') < parseDate(to, format))\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 if (isMobile && to) months = dateDiff(today, parseDate(to, format)).months;\n\n return (\n <View className={styles(style.container, className)} data-testid={testID}>\n {isMobile && <Weekdays locale={locale} />}\n <ScrollView horizontal={isDesktop} scrollTo={scrollTo} className={style.scrollview} onScroll={onScroll}>\n {Array.from({ length: months }, (empty, index) => (\n <Month\n data-testid={testID}\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)} // ! TODO: calc with mirai/locale\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 onNavigation: PropTypes.func,\n onScroll: PropTypes.func,\n};\n"],"mappings":"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"}