@chayns-components/date 5.0.0-beta.811 → 5.0.0-beta.813

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.
Files changed (60) hide show
  1. package/lib/cjs/components/calendar/Calendar.js +146 -67
  2. package/lib/cjs/components/calendar/Calendar.js.map +1 -1
  3. package/lib/cjs/components/calendar/Calendar.styles.js +8 -1
  4. package/lib/cjs/components/calendar/Calendar.styles.js.map +1 -1
  5. package/lib/cjs/components/calendar/month-wrapper/MonthWrapper.js +38 -11
  6. package/lib/cjs/components/calendar/month-wrapper/MonthWrapper.js.map +1 -1
  7. package/lib/cjs/components/calendar/month-wrapper/month/Month.js +34 -30
  8. package/lib/cjs/components/calendar/month-wrapper/month/Month.js.map +1 -1
  9. package/lib/cjs/components/calendar/month-wrapper/month/Month.styles.js +2 -1
  10. package/lib/cjs/components/calendar/month-wrapper/month/Month.styles.js.map +1 -1
  11. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.js +50 -47
  12. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.js.map +1 -1
  13. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.styles.js +0 -1
  14. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.styles.js.map +1 -1
  15. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/day/Day.js +8 -10
  16. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/day/Day.js.map +1 -1
  17. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/day/Day.styles.js +38 -41
  18. package/lib/cjs/components/calendar/month-wrapper/month/day-wrapper/day/Day.styles.js.map +1 -1
  19. package/lib/cjs/components/calendar/month-year-pickers/MonthYearPickers.js +86 -0
  20. package/lib/cjs/components/calendar/month-year-pickers/MonthYearPickers.js.map +1 -0
  21. package/lib/cjs/types/calendar.js.map +1 -1
  22. package/lib/cjs/utils/calendar.js +18 -2
  23. package/lib/cjs/utils/calendar.js.map +1 -1
  24. package/lib/esm/components/calendar/Calendar.js +150 -71
  25. package/lib/esm/components/calendar/Calendar.js.map +1 -1
  26. package/lib/esm/components/calendar/Calendar.styles.js +7 -0
  27. package/lib/esm/components/calendar/Calendar.styles.js.map +1 -1
  28. package/lib/esm/components/calendar/month-wrapper/MonthWrapper.js +38 -11
  29. package/lib/esm/components/calendar/month-wrapper/MonthWrapper.js.map +1 -1
  30. package/lib/esm/components/calendar/month-wrapper/month/Month.js +17 -9
  31. package/lib/esm/components/calendar/month-wrapper/month/Month.js.map +1 -1
  32. package/lib/esm/components/calendar/month-wrapper/month/Month.styles.js +2 -1
  33. package/lib/esm/components/calendar/month-wrapper/month/Month.styles.js.map +1 -1
  34. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.js +51 -48
  35. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.js.map +1 -1
  36. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.styles.js +0 -1
  37. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.styles.js.map +1 -1
  38. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/day/Day.js +8 -10
  39. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/day/Day.js.map +1 -1
  40. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/day/Day.styles.js +41 -39
  41. package/lib/esm/components/calendar/month-wrapper/month/day-wrapper/day/Day.styles.js.map +1 -1
  42. package/lib/esm/components/calendar/month-year-pickers/MonthYearPickers.js +79 -0
  43. package/lib/esm/components/calendar/month-year-pickers/MonthYearPickers.js.map +1 -0
  44. package/lib/esm/types/calendar.js.map +1 -1
  45. package/lib/esm/utils/calendar.js +15 -1
  46. package/lib/esm/utils/calendar.js.map +1 -1
  47. package/lib/types/components/calendar/Calendar.d.ts +41 -6
  48. package/lib/types/components/calendar/Calendar.styles.d.ts +1 -0
  49. package/lib/types/components/calendar/month-wrapper/MonthWrapper.d.ts +2 -0
  50. package/lib/types/components/calendar/month-wrapper/MonthWrapper.styles.d.ts +1 -1
  51. package/lib/types/components/calendar/month-wrapper/month/Month.d.ts +4 -1
  52. package/lib/types/components/calendar/month-wrapper/month/day-wrapper/DayWrapper.d.ts +1 -1
  53. package/lib/types/components/calendar/month-wrapper/month/day-wrapper/day/Day.d.ts +0 -1
  54. package/lib/types/components/calendar/month-wrapper/month/day-wrapper/day/Day.styles.d.ts +3 -0
  55. package/lib/types/components/calendar/month-year-pickers/MonthYearPickers.d.ts +19 -0
  56. package/lib/types/components/opening-times/opening-inputs/OpeningInputs.styles.d.ts +1 -1
  57. package/lib/types/components/opening-times/opening-inputs/opening-input/OpeningInput.styles.d.ts +1 -1
  58. package/lib/types/types/calendar.d.ts +2 -2
  59. package/lib/types/utils/calendar.d.ts +2 -0
  60. package/package.json +3 -3
@@ -24,44 +24,90 @@ const Calendar = ({
24
24
  highlightedDates,
25
25
  onChange,
26
26
  selectedDate,
27
+ selectedDates,
28
+ selectedDateInterval,
27
29
  categories,
28
30
  isDisabled,
29
- // type = CalendarType.Single,
30
- disabledDates = []
31
+ type = _calendar.CalendarType.Single,
32
+ disabledDates = [],
33
+ showMonthYearPickers: showMonthYearPickersProp
31
34
  }) => {
32
- const type = _calendar.CalendarType.Single;
33
35
  const [currentDate, setCurrentDate] = (0, _react.useState)();
34
36
  const [shouldRenderTwoMonths, setShouldRenderTwoMonths] = (0, _react.useState)(true);
35
- const [internalSelectedDate, setInternalSelectedDate] = (0, _react.useState)();
37
+ const [internalSelectedDate, setInternalSelectedDate] = (0, _react.useState)(type === _calendar.CalendarType.Multiple ? [] : undefined);
36
38
  const [direction, setDirection] = (0, _react.useState)();
37
39
  const [width, setWidth] = (0, _react.useState)(0);
40
+ const showMonthYearPickers = (0, _react.useMemo)(() => {
41
+ const hasMultipleMonths = (0, _dateFns.differenceInCalendarMonths)(maxDate, minDate) > 0;
42
+ const hasMultipleYears = (0, _calendar2.getYearsBetween)(minDate, maxDate).length > 1;
43
+ return !!(showMonthYearPickersProp && (hasMultipleMonths || hasMultipleYears));
44
+ }, [minDate, maxDate, showMonthYearPickersProp]);
38
45
  const calendarRef = (0, _react.useRef)(null);
39
46
  (0, _react.useEffect)(() => {
40
- if (selectedDate && type === _calendar.CalendarType.Single && !disabledDates.some(disabledDate => (0, _dateFns.isSameDay)(selectedDate, disabledDate))) {
41
- setInternalSelectedDate(selectedDate);
42
- } else {
43
- setInternalSelectedDate(undefined);
47
+ const bounds = {
48
+ start: minDate,
49
+ end: maxDate
50
+ };
51
+ if (type === _calendar.CalendarType.Single) {
52
+ if (selectedDate) {
53
+ const isDisabledDate = disabledDates.some(disabledDate => (0, _dateFns.isSameDay)(selectedDate, disabledDate));
54
+ const isDateInBounds = (0, _dateFns.isWithinInterval)(selectedDate, bounds);
55
+ if (!isDisabledDate && isDateInBounds) {
56
+ setInternalSelectedDate(selectedDate);
57
+ } else {
58
+ console.warn('[@chayns-components/date] Warning: Failed to set selectedDate, because it is disabled or out of bounds.', '\nselectedDate:', selectedDate, ...(isDisabledDate ? ['\nselectedDate is disabled'] : []), ...(isDateInBounds ? [] : ['\nselectedDate is outside of bounds:', {
59
+ minDate,
60
+ maxDate
61
+ }]));
62
+ setInternalSelectedDate(undefined);
63
+ }
64
+ } else {
65
+ setInternalSelectedDate(undefined);
66
+ }
67
+ } else if (type === _calendar.CalendarType.Multiple) {
68
+ if (selectedDates) {
69
+ const disabledSelectedDates = [];
70
+ const datesOutsideOfBounds = [];
71
+ const filteredDates = selectedDates.filter(date => {
72
+ if (disabledDates.some(disabledDate => (0, _dateFns.isSameDay)(date, disabledDate))) {
73
+ disabledSelectedDates.push(date);
74
+ return false;
75
+ }
76
+ if (!(0, _dateFns.isWithinInterval)(date, bounds)) {
77
+ datesOutsideOfBounds.push(date);
78
+ return false;
79
+ }
80
+ return true;
81
+ });
82
+ if (disabledSelectedDates.length > 0 || datesOutsideOfBounds.length > 0) {
83
+ console.warn('[@chayns-components/date] Warning: Failed to set all selectedDates, because some are disabled or out of bounds.', ...(disabledSelectedDates.length > 0 ? ['\nselectedDates that are disabled:', disabledSelectedDates] : []), ...(datesOutsideOfBounds.length > 0 ? ['\nselectedDates that are outside of bounds:', datesOutsideOfBounds, 'bounds:', {
84
+ minDate,
85
+ maxDate
86
+ }] : []));
87
+ }
88
+ setInternalSelectedDate(filteredDates);
89
+ } else {
90
+ setInternalSelectedDate([]);
91
+ }
92
+ } else if (type === _calendar.CalendarType.Interval) {
93
+ if (selectedDateInterval) {
94
+ const intervalIncludesDisabledDate = selectedDateInterval.end && disabledDates.some(disabledDate => (0, _dateFns.isWithinInterval)(disabledDate, {
95
+ start: selectedDateInterval.start,
96
+ end: selectedDateInterval.end
97
+ }));
98
+ const intervalIsInBounds = (0, _dateFns.isWithinInterval)(selectedDateInterval.start, bounds) && (!selectedDateInterval.end || (0, _dateFns.isWithinInterval)(selectedDateInterval.end, bounds));
99
+ if (!intervalIncludesDisabledDate && intervalIsInBounds) {
100
+ setInternalSelectedDate(selectedDateInterval);
101
+ } else {
102
+ console.warn('[@chayns-components/date] Warning: Failed to set selectedDateInterval, because it includes disabled dates or dates that are out of bounds.', '\nselectedDateInterval:', selectedDateInterval, ...(intervalIncludesDisabledDate ? ['\ndisabled dates:', disabledDates] : []), ...(intervalIsInBounds ? [] : ['\nbounds:', {
103
+ minDate,
104
+ maxDate
105
+ }]));
106
+ setInternalSelectedDate(undefined);
107
+ }
108
+ }
44
109
  }
45
-
46
- // if (
47
- // selectedDate &&
48
- // ((type === CalendarType.Single && selectedDate instanceof Date) ||
49
- // (type === CalendarType.Multiple && Array.isArray(selectedDate)))
50
- // ) {
51
- // setInternalSelectedDate(selectedDate);
52
- // } else if (type === CalendarType.Interval && (selectedDate as DateInterval)?.start) {
53
- // setInternalSelectedDate({
54
- // start: (selectedDate as DateInterval).start,
55
- // end: (selectedDate as DateInterval).end,
56
- // });
57
- // } else if (type === CalendarType.Multiple) {
58
- // setInternalSelectedDate([]);
59
- // } else if (type === CalendarType.Interval) {
60
- // setInternalSelectedDate({});
61
- // } else {
62
- // setInternalSelectedDate(undefined);
63
- // }
64
- }, [type, selectedDate, disabledDates]);
110
+ }, [type, selectedDate, selectedDates, selectedDateInterval, disabledDates, minDate, maxDate]);
65
111
  (0, _react.useEffect)(() => {
66
112
  if (calendarRef.current) {
67
113
  const resizeObserver = new ResizeObserver(entries => {
@@ -120,43 +166,48 @@ const Calendar = ({
120
166
  }, [maxDate, minDate]);
121
167
  const handleSelect = (0, _react.useCallback)(date => {
122
168
  setInternalSelectedDate(prevDate => {
123
- let onChangePayload /* | Date[] | DateInterval */;
124
- let newInternalSelectedDate /* | Date[] | DateInterval */;
169
+ let onChangePayload = null;
170
+ let newInternalSelectedDate = undefined;
171
+ if (type === _calendar.CalendarType.Single) {
172
+ onChangePayload = date;
173
+ newInternalSelectedDate = date;
174
+ } else if (type === _calendar.CalendarType.Multiple) {
175
+ const prevSelectedDates = prevDate;
176
+ // Selects or unselects date , depending on if it is already selected.
177
+ if (prevSelectedDates.some(d => (0, _dateFns.isSameDay)(d, date))) {
178
+ newInternalSelectedDate = prevSelectedDates.filter(d => !(0, _dateFns.isSameDay)(d, date));
179
+ } else {
180
+ newInternalSelectedDate = [...prevSelectedDates, date];
181
+ }
182
+ onChangePayload = newInternalSelectedDate;
183
+ } else if (type === _calendar.CalendarType.Interval) {
184
+ const prevSelectedDateInterval = prevDate;
185
+ const updateInterval = (start, end) => {
186
+ const newInterval = {
187
+ start,
188
+ end
189
+ };
190
+ onChangePayload = newInterval;
191
+ newInternalSelectedDate = newInterval;
192
+ };
125
193
 
126
- /* if (type === CalendarType.Single) { */
127
- onChangePayload = date;
128
- newInternalSelectedDate = date;
129
- /* } else if (type === CalendarType.Multiple) {
130
- if ((prevDate as Date[]).some((d) => isSameDay(d, date))) {
131
- newInternalSelectedDate = (prevDate as Date[]).filter(
132
- (d) => !isSameDay(d, date),
133
- );
134
- } else {
135
- newInternalSelectedDate = [...prevDate, date];
136
- }
137
- onChangePayload = newInternalSelectedDate;
138
- } else if (type === CalendarType.Interval) {
139
- if ((prevDate as DateInterval).start && !(prevDate as DateInterval).end) {
140
- if (date < (prevDate as DateInterval).start) {
141
- onChangePayload = { start: date, end: undefined };
142
- newInternalSelectedDate = { start: date, end: undefined };
143
- } else {
144
- onChangePayload = {
145
- start: (prevDate as DateInterval).start,
146
- end: date,
147
- };
148
- newInternalSelectedDate = {
149
- start: (prevDate as DateInterval).start,
150
- end: date,
151
- };
152
- }
194
+ // Sets first selection as interval start.
195
+ if (!prevSelectedDateInterval) {
196
+ updateInterval(date);
197
+ } else if (prevSelectedDateInterval.start && !prevSelectedDateInterval.end) {
198
+ // Sets second selection as interval start, if it is earlier than the previous interval start.
199
+ // Else sets it as interval end.
200
+ if (date < prevSelectedDateInterval.start) {
201
+ updateInterval(date);
153
202
  } else {
154
- onChangePayload = { start: date, end: undefined };
155
- newInternalSelectedDate = { start: date, end: undefined };
203
+ updateInterval(prevSelectedDateInterval.start, date);
156
204
  }
157
- } */
158
-
159
- if (typeof onChange === 'function') {
205
+ } else {
206
+ // Resets interval if a third date is selected.
207
+ updateInterval(date);
208
+ }
209
+ }
210
+ if (typeof onChange === 'function' && onChangePayload) {
160
211
  onChange(onChangePayload);
161
212
  }
162
213
  return newInternalSelectedDate;
@@ -182,9 +233,22 @@ const Calendar = ({
182
233
  $isDisabled: isDisabled
183
234
  }, ShouldShowLeftArrow ? /*#__PURE__*/_react.default.createElement(_Calendar.StyledCalendarIconWrapper, {
184
235
  onClick: handleLeftArrowClick
185
- }, /*#__PURE__*/_react.default.createElement(_core.Icon, {
236
+ }, /*#__PURE__*/_react.default.createElement("div", {
237
+ // TODO Use styled-components instead of inline styles
238
+ style: {
239
+ display: 'flex',
240
+ flexDirection: 'row',
241
+ flexWrap: 'nowrap',
242
+ height: 'fit-content'
243
+ }
244
+ }, showMonthYearPickers && /*#__PURE__*/_react.default.createElement(_Calendar.StyledPseudoMonthYearPicker, null, /*#__PURE__*/_react.default.createElement(_core.ComboBox, {
245
+ lists: [{
246
+ list: []
247
+ }],
248
+ placeholder: ""
249
+ })), /*#__PURE__*/_react.default.createElement(_core.Icon, {
186
250
  icons: ['fa fa-angle-left']
187
- })) : /*#__PURE__*/_react.default.createElement(_Calendar.StyledCalendarIconWrapperPseudo, null), currentDate && /*#__PURE__*/_react.default.createElement(_MonthWrapper.default, {
251
+ }))) : /*#__PURE__*/_react.default.createElement(_Calendar.StyledCalendarIconWrapperPseudo, null), currentDate && /*#__PURE__*/_react.default.createElement(_MonthWrapper.default, {
188
252
  shouldRenderTwo: shouldRenderTwoMonths,
189
253
  currentDate: currentDate,
190
254
  width: width,
@@ -198,12 +262,27 @@ const Calendar = ({
198
262
  minDate: minDate,
199
263
  maxDate: maxDate,
200
264
  type: type,
201
- disabledDates: disabledDates
265
+ disabledDates: disabledDates,
266
+ setCurrentDate: setCurrentDate,
267
+ showMonthYearPickers: showMonthYearPickers
202
268
  }), ShouldShowRightArrow ? /*#__PURE__*/_react.default.createElement(_Calendar.StyledCalendarIconWrapper, {
203
269
  onClick: handleRightArrowClick
204
- }, /*#__PURE__*/_react.default.createElement(_core.Icon, {
270
+ }, /*#__PURE__*/_react.default.createElement("div", {
271
+ // TODO Use styled-components instead of inline styles
272
+ style: {
273
+ display: 'flex',
274
+ flexDirection: 'row',
275
+ flexWrap: 'nowrap',
276
+ height: 'fit-content'
277
+ }
278
+ }, showMonthYearPickers && /*#__PURE__*/_react.default.createElement(_Calendar.StyledPseudoMonthYearPicker, null, /*#__PURE__*/_react.default.createElement(_core.ComboBox, {
279
+ lists: [{
280
+ list: []
281
+ }],
282
+ placeholder: ""
283
+ })), /*#__PURE__*/_react.default.createElement(_core.Icon, {
205
284
  icons: ['fa fa-angle-right']
206
- })) : /*#__PURE__*/_react.default.createElement(_Calendar.StyledCalendarIconWrapperPseudo, null));
285
+ }))) : /*#__PURE__*/_react.default.createElement(_Calendar.StyledCalendarIconWrapperPseudo, null));
207
286
  };
208
287
  Calendar.displayName = 'Calendar';
209
288
  var _default = exports.default = Calendar;
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","names":["_core","require","_dateFns","_locale","_react","_interopRequireWildcard","_calendar","_calendar2","_Calendar","_MonthWrapper","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","DEFAULT_MAX_DATE","addYears","Date","DEFAULT_MIN_DATE","subYears","Calendar","locale","de","maxDate","minDate","highlightedDates","onChange","selectedDate","categories","isDisabled","disabledDates","type","CalendarType","Single","currentDate","setCurrentDate","useState","shouldRenderTwoMonths","setShouldRenderTwoMonths","internalSelectedDate","setInternalSelectedDate","direction","setDirection","width","setWidth","calendarRef","useRef","useEffect","some","disabledDate","isSameDay","undefined","current","resizeObserver","ResizeObserver","entries","observedWidth","contentRect","observe","disconnect","date","isDateInRange","handleLeftArrowClick","useCallback","prevDate","newDate","getNewDate","handleRightArrowClick","handleSelect","onChangePayload","newInternalSelectedDate","handleAnimationFinished","ShouldShowLeftArrow","useMemo","isSameMonth","ShouldShowRightArrow","createElement","StyledCalendar","ref","$isDisabled","StyledCalendarIconWrapper","onClick","Icon","icons","StyledCalendarIconWrapperPseudo","shouldRenderTwo","onSelect","onAnimationFinished","displayName","_default","exports"],"sources":["../../../../src/components/calendar/Calendar.tsx"],"sourcesContent":["import { Icon } from '@chayns-components/core';\nimport { addYears, isSameDay, isSameMonth, subYears, type Locale } from 'date-fns';\nimport { de } from 'date-fns/locale';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { Categories, DateInterval, HighlightedDates } from '../../types/calendar';\nimport { CalendarType } from '../../types/calendar';\nimport { getNewDate, isDateInRange } from '../../utils/calendar';\nimport {\n StyledCalendar,\n StyledCalendarIconWrapper,\n StyledCalendarIconWrapperPseudo,\n} from './Calendar.styles';\nimport MonthWrapper from './month-wrapper/MonthWrapper';\n\ninterface BaseProps {\n /**\n * An array to group dates into a category.\n */\n categories?: Categories[];\n /**\n * An array with dates and corresponding styles to highlight.\n */\n highlightedDates?: HighlightedDates[];\n /**\n * To disable the Calendar\n */\n isDisabled?: boolean;\n /**\n * The locale language to format the dates.\n */\n locale?: Locale;\n /**\n * The maximum date that can be selected.\n */\n maxDate?: Date;\n /**\n * The minimum date that can be selected.\n */\n minDate?: Date;\n /**\n * An array of dates that should be disabled.\n */\n disabledDates?: Date[];\n}\n\ninterface SingleSelectionProps extends BaseProps {\n /* type?: CalendarType.Single; */\n /**\n * Function to be executed when the selected date changes.\n * @param date\n */\n onChange?: (date: Date) => void;\n /**\n * A date that should be preselected.\n */\n selectedDate?: Date;\n}\n\ninterface MultipleSelectionProps extends BaseProps {\n type?: CalendarType.Multiple;\n /**\n * Function to be executed when the selected dates change.\n * @param date\n */\n onChange?: (date: Date[]) => void;\n /**\n * An array of dates that should be preselected.\n */\n selectedDate?: Date[];\n}\n\ninterface IntervalSelectionProps extends BaseProps {\n type?: CalendarType.Interval;\n /**\n * Function to be executed when the selected interval changes.\n * @param date\n */\n onChange?: (date: DateInterval) => void;\n /**\n * An interval that should be preselected.\n */\n selectedDate?: DateInterval;\n}\n\nexport type CalendarProps =\n SingleSelectionProps /* | MultipleSelectionProps | IntervalSelectionProps */;\n\nconst DEFAULT_MAX_DATE = addYears(new Date(), 1);\nconst DEFAULT_MIN_DATE = subYears(new Date(), 1);\n\nconst Calendar: FC<CalendarProps> = ({\n locale = de,\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n highlightedDates,\n onChange,\n selectedDate,\n categories,\n isDisabled,\n // type = CalendarType.Single,\n disabledDates = [],\n}) => {\n const type = CalendarType.Single;\n\n const [currentDate, setCurrentDate] = useState<Date>();\n const [shouldRenderTwoMonths, setShouldRenderTwoMonths] = useState(true);\n const [internalSelectedDate, setInternalSelectedDate] = useState<\n Date | Date[] | DateInterval\n >();\n const [direction, setDirection] = useState<'left' | 'right'>();\n const [width, setWidth] = useState(0);\n\n const calendarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (\n selectedDate &&\n type === CalendarType.Single &&\n !disabledDates.some((disabledDate) => isSameDay(selectedDate, disabledDate))\n ) {\n setInternalSelectedDate(selectedDate);\n } else {\n setInternalSelectedDate(undefined);\n }\n\n // if (\n // selectedDate &&\n // ((type === CalendarType.Single && selectedDate instanceof Date) ||\n // (type === CalendarType.Multiple && Array.isArray(selectedDate)))\n // ) {\n // setInternalSelectedDate(selectedDate);\n // } else if (type === CalendarType.Interval && (selectedDate as DateInterval)?.start) {\n // setInternalSelectedDate({\n // start: (selectedDate as DateInterval).start,\n // end: (selectedDate as DateInterval).end,\n // });\n // } else if (type === CalendarType.Multiple) {\n // setInternalSelectedDate([]);\n // } else if (type === CalendarType.Interval) {\n // setInternalSelectedDate({});\n // } else {\n // setInternalSelectedDate(undefined);\n // }\n }, [type, selectedDate, disabledDates]);\n\n useEffect(() => {\n if (calendarRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n const observedWidth = entries[0].contentRect.width;\n\n setWidth(observedWidth - 30);\n\n if (observedWidth < 430) {\n setShouldRenderTwoMonths(false);\n } else {\n setShouldRenderTwoMonths(true);\n }\n }\n });\n\n resizeObserver.observe(calendarRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n\n return () => {};\n }, []);\n\n useEffect(() => {\n const date = new Date();\n\n setCurrentDate(isDateInRange({ minDate, maxDate, currentDate: date }));\n }, [maxDate, minDate]);\n\n const handleLeftArrowClick = useCallback(() => {\n setDirection('left');\n\n setCurrentDate((prevDate) => {\n if (!prevDate) {\n return prevDate;\n }\n\n const newDate = getNewDate(-1, prevDate);\n\n return isDateInRange({ minDate, maxDate, currentDate: newDate });\n });\n }, [maxDate, minDate]);\n\n const handleRightArrowClick = useCallback(() => {\n setDirection('right');\n\n setCurrentDate((prevDate) => {\n if (!prevDate) {\n return prevDate;\n }\n\n const newDate = getNewDate(1, prevDate);\n\n return isDateInRange({ minDate, maxDate, currentDate: newDate });\n });\n }, [maxDate, minDate]);\n\n const handleSelect = useCallback(\n (date: Date) => {\n setInternalSelectedDate((prevDate) => {\n let onChangePayload: Date /* | Date[] | DateInterval */;\n let newInternalSelectedDate: Date /* | Date[] | DateInterval */;\n\n /* if (type === CalendarType.Single) { */\n onChangePayload = date;\n newInternalSelectedDate = date;\n /* } else if (type === CalendarType.Multiple) {\n if ((prevDate as Date[]).some((d) => isSameDay(d, date))) {\n newInternalSelectedDate = (prevDate as Date[]).filter(\n (d) => !isSameDay(d, date),\n );\n } else {\n newInternalSelectedDate = [...prevDate, date];\n }\n\n onChangePayload = newInternalSelectedDate;\n } else if (type === CalendarType.Interval) {\n if ((prevDate as DateInterval).start && !(prevDate as DateInterval).end) {\n if (date < (prevDate as DateInterval).start) {\n onChangePayload = { start: date, end: undefined };\n newInternalSelectedDate = { start: date, end: undefined };\n } else {\n onChangePayload = {\n start: (prevDate as DateInterval).start,\n end: date,\n };\n newInternalSelectedDate = {\n start: (prevDate as DateInterval).start,\n end: date,\n };\n }\n } else {\n onChangePayload = { start: date, end: undefined };\n newInternalSelectedDate = { start: date, end: undefined };\n }\n } */\n\n if (typeof onChange === 'function') {\n onChange(onChangePayload);\n }\n\n return newInternalSelectedDate;\n });\n },\n [type, onChange],\n );\n\n const handleAnimationFinished = () => {\n setDirection(undefined);\n };\n\n const ShouldShowLeftArrow = useMemo(() => {\n if (!currentDate) {\n return false;\n }\n\n return !isSameMonth(currentDate, minDate);\n }, [currentDate, minDate]);\n\n const ShouldShowRightArrow = useMemo(() => {\n if (!currentDate) {\n return false;\n }\n\n return !isSameMonth(currentDate, maxDate);\n }, [currentDate, maxDate]);\n\n return (\n <StyledCalendar ref={calendarRef} $isDisabled={isDisabled}>\n {ShouldShowLeftArrow ? (\n <StyledCalendarIconWrapper onClick={handleLeftArrowClick}>\n <Icon icons={['fa fa-angle-left']} />\n </StyledCalendarIconWrapper>\n ) : (\n <StyledCalendarIconWrapperPseudo />\n )}\n {currentDate && (\n <MonthWrapper\n shouldRenderTwo={shouldRenderTwoMonths}\n currentDate={currentDate}\n width={width}\n locale={locale}\n direction={direction}\n onSelect={handleSelect}\n selectedDate={internalSelectedDate}\n highlightedDates={highlightedDates}\n categories={categories}\n onAnimationFinished={handleAnimationFinished}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n disabledDates={disabledDates}\n />\n )}\n {ShouldShowRightArrow ? (\n <StyledCalendarIconWrapper onClick={handleRightArrowClick}>\n <Icon icons={['fa fa-angle-right']} />\n </StyledCalendarIconWrapper>\n ) : (\n <StyledCalendarIconWrapperPseudo />\n )}\n </StyledCalendar>\n );\n};\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Calendar.js","names":["_core","require","_dateFns","_locale","_react","_interopRequireWildcard","_calendar","_calendar2","_Calendar","_MonthWrapper","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","DEFAULT_MAX_DATE","addYears","Date","DEFAULT_MIN_DATE","subYears","Calendar","locale","de","maxDate","minDate","highlightedDates","onChange","selectedDate","selectedDates","selectedDateInterval","categories","isDisabled","type","CalendarType","Single","disabledDates","showMonthYearPickers","showMonthYearPickersProp","currentDate","setCurrentDate","useState","shouldRenderTwoMonths","setShouldRenderTwoMonths","internalSelectedDate","setInternalSelectedDate","Multiple","undefined","direction","setDirection","width","setWidth","useMemo","hasMultipleMonths","differenceInCalendarMonths","hasMultipleYears","getYearsBetween","length","calendarRef","useRef","useEffect","bounds","start","end","isDisabledDate","some","disabledDate","isSameDay","isDateInBounds","isWithinInterval","console","warn","disabledSelectedDates","datesOutsideOfBounds","filteredDates","filter","date","push","Interval","intervalIncludesDisabledDate","intervalIsInBounds","current","resizeObserver","ResizeObserver","entries","observedWidth","contentRect","observe","disconnect","isDateInRange","handleLeftArrowClick","useCallback","prevDate","newDate","getNewDate","handleRightArrowClick","handleSelect","onChangePayload","newInternalSelectedDate","prevSelectedDates","d","prevSelectedDateInterval","updateInterval","newInterval","handleAnimationFinished","ShouldShowLeftArrow","isSameMonth","ShouldShowRightArrow","createElement","StyledCalendar","ref","$isDisabled","StyledCalendarIconWrapper","onClick","style","display","flexDirection","flexWrap","height","StyledPseudoMonthYearPicker","ComboBox","lists","list","placeholder","Icon","icons","StyledCalendarIconWrapperPseudo","shouldRenderTwo","onSelect","onAnimationFinished","displayName","_default","exports"],"sources":["../../../../src/components/calendar/Calendar.tsx"],"sourcesContent":["import { ComboBox, Icon } from '@chayns-components/core';\nimport {\n addYears,\n differenceInCalendarMonths,\n isSameDay,\n isSameMonth,\n isWithinInterval,\n subYears,\n type Locale,\n} from 'date-fns';\nimport { de } from 'date-fns/locale';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { Categories, DateInterval, HighlightedDates } from '../../types/calendar';\nimport { CalendarType } from '../../types/calendar';\nimport { getNewDate, getYearsBetween, isDateInRange } from '../../utils/calendar';\nimport {\n StyledCalendar,\n StyledCalendarIconWrapper,\n StyledCalendarIconWrapperPseudo,\n StyledPseudoMonthYearPicker,\n} from './Calendar.styles';\nimport MonthWrapper from './month-wrapper/MonthWrapper';\n\ninterface BaseProps {\n /**\n * An array to group dates into a category.\n */\n categories?: Categories[];\n /**\n * An array with dates and corresponding styles to highlight.\n */\n highlightedDates?: HighlightedDates[];\n /**\n * To disable the Calendar\n */\n isDisabled?: boolean;\n /**\n * The locale language to format the dates.\n */\n locale?: Locale;\n /**\n * The maximum date that can be selected.\n */\n maxDate?: Date;\n /**\n * The minimum date that can be selected.\n */\n minDate?: Date;\n /**\n * An array of dates that should be disabled.\n */\n disabledDates?: Date[];\n /**\n * Shows the month and year pickers, if there are multiple months/years to select from.\n */\n showMonthYearPickers?: boolean;\n /**\n * Function to be executed when the selected date, dates or date interval change.\n * @param date\n */\n onChange?: (date: Date | Date[] | DateInterval) => void;\n}\n\ninterface SingleSelectionProps {\n /**\n * The type of the calendar selection.\n */\n type?: CalendarType.Single;\n /**\n * A date that should be preselected.\n */\n selectedDate?: Date;\n selectedDates: never;\n selectedDateInterval: never;\n}\n\ninterface MultipleSelectionProps {\n /**\n * The type of the calendar selection.\n */\n type: CalendarType.Multiple;\n /**\n * An array of dates that should be preselected.\n */\n selectedDates?: Date[];\n selectedDate: never;\n selectedDateInterval: never;\n}\n\ninterface IntervalSelectionProps {\n /**\n * The type of the calendar selection.\n */\n type: CalendarType.Interval;\n /**\n * An interval that should be preselected.\n */\n selectedDateInterval?: DateInterval;\n selectedDates: never;\n selectedDate: never;\n}\n\nexport type CalendarProps = BaseProps &\n (SingleSelectionProps | MultipleSelectionProps | IntervalSelectionProps);\n\nconst DEFAULT_MAX_DATE = addYears(new Date(), 1);\nconst DEFAULT_MIN_DATE = subYears(new Date(), 1);\n\nconst Calendar: FC<CalendarProps> = ({\n locale = de,\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n highlightedDates,\n onChange,\n selectedDate,\n selectedDates,\n selectedDateInterval,\n categories,\n isDisabled,\n type = CalendarType.Single,\n disabledDates = [],\n showMonthYearPickers: showMonthYearPickersProp,\n}) => {\n const [currentDate, setCurrentDate] = useState<Date>();\n const [shouldRenderTwoMonths, setShouldRenderTwoMonths] = useState(true);\n const [internalSelectedDate, setInternalSelectedDate] = useState<\n Date | Date[] | DateInterval | undefined\n >(type === CalendarType.Multiple ? [] : undefined);\n const [direction, setDirection] = useState<'left' | 'right'>();\n const [width, setWidth] = useState(0);\n\n const showMonthYearPickers = useMemo(() => {\n const hasMultipleMonths = differenceInCalendarMonths(maxDate, minDate) > 0;\n const hasMultipleYears = getYearsBetween(minDate, maxDate).length > 1;\n\n return !!(showMonthYearPickersProp && (hasMultipleMonths || hasMultipleYears));\n }, [minDate, maxDate, showMonthYearPickersProp]);\n\n const calendarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const bounds = {\n start: minDate,\n end: maxDate,\n };\n if (type === CalendarType.Single) {\n if (selectedDate) {\n const isDisabledDate = disabledDates.some((disabledDate) =>\n isSameDay(selectedDate, disabledDate),\n );\n const isDateInBounds = isWithinInterval(selectedDate, bounds);\n\n if (!isDisabledDate && isDateInBounds) {\n setInternalSelectedDate(selectedDate);\n } else {\n console.warn(\n '[@chayns-components/date] Warning: Failed to set selectedDate, because it is disabled or out of bounds.',\n '\\nselectedDate:',\n selectedDate,\n ...(isDisabledDate ? ['\\nselectedDate is disabled'] : []),\n ...(isDateInBounds\n ? []\n : ['\\nselectedDate is outside of bounds:', { minDate, maxDate }]),\n );\n setInternalSelectedDate(undefined);\n }\n } else {\n setInternalSelectedDate(undefined);\n }\n } else if (type === CalendarType.Multiple) {\n if (selectedDates) {\n const disabledSelectedDates: Date[] = [];\n const datesOutsideOfBounds: Date[] = [];\n\n const filteredDates = selectedDates.filter((date) => {\n if (disabledDates.some((disabledDate) => isSameDay(date, disabledDate))) {\n disabledSelectedDates.push(date);\n return false;\n }\n\n if (!isWithinInterval(date, bounds)) {\n datesOutsideOfBounds.push(date);\n return false;\n }\n\n return true;\n });\n\n if (disabledSelectedDates.length > 0 || datesOutsideOfBounds.length > 0) {\n console.warn(\n '[@chayns-components/date] Warning: Failed to set all selectedDates, because some are disabled or out of bounds.',\n ...(disabledSelectedDates.length > 0\n ? ['\\nselectedDates that are disabled:', disabledSelectedDates]\n : []),\n ...(datesOutsideOfBounds.length > 0\n ? [\n '\\nselectedDates that are outside of bounds:',\n datesOutsideOfBounds,\n 'bounds:',\n { minDate, maxDate },\n ]\n : []),\n );\n }\n\n setInternalSelectedDate(filteredDates);\n } else {\n setInternalSelectedDate([]);\n }\n } else if (type === CalendarType.Interval) {\n if (selectedDateInterval) {\n const intervalIncludesDisabledDate =\n selectedDateInterval.end &&\n disabledDates.some((disabledDate) =>\n isWithinInterval(disabledDate, {\n start: selectedDateInterval.start,\n end: selectedDateInterval.end as Date,\n }),\n );\n\n const intervalIsInBounds =\n isWithinInterval(selectedDateInterval.start, bounds) &&\n (!selectedDateInterval.end ||\n isWithinInterval(selectedDateInterval.end, bounds));\n\n if (!intervalIncludesDisabledDate && intervalIsInBounds) {\n setInternalSelectedDate(selectedDateInterval);\n } else {\n console.warn(\n '[@chayns-components/date] Warning: Failed to set selectedDateInterval, because it includes disabled dates or dates that are out of bounds.',\n '\\nselectedDateInterval:',\n selectedDateInterval,\n ...(intervalIncludesDisabledDate\n ? ['\\ndisabled dates:', disabledDates]\n : []),\n ...(intervalIsInBounds ? [] : ['\\nbounds:', { minDate, maxDate }]),\n );\n setInternalSelectedDate(undefined);\n }\n }\n }\n }, [type, selectedDate, selectedDates, selectedDateInterval, disabledDates, minDate, maxDate]);\n\n useEffect(() => {\n if (calendarRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n const observedWidth = entries[0].contentRect.width;\n\n setWidth(observedWidth - 30);\n\n if (observedWidth < 430) {\n setShouldRenderTwoMonths(false);\n } else {\n setShouldRenderTwoMonths(true);\n }\n }\n });\n\n resizeObserver.observe(calendarRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n\n return () => {};\n }, []);\n\n useEffect(() => {\n const date = new Date();\n\n setCurrentDate(isDateInRange({ minDate, maxDate, currentDate: date }));\n }, [maxDate, minDate]);\n\n const handleLeftArrowClick = useCallback(() => {\n setDirection('left');\n\n setCurrentDate((prevDate) => {\n if (!prevDate) {\n return prevDate;\n }\n\n const newDate = getNewDate(-1, prevDate);\n\n return isDateInRange({ minDate, maxDate, currentDate: newDate });\n });\n }, [maxDate, minDate]);\n\n const handleRightArrowClick = useCallback(() => {\n setDirection('right');\n\n setCurrentDate((prevDate) => {\n if (!prevDate) {\n return prevDate;\n }\n\n const newDate = getNewDate(1, prevDate);\n\n return isDateInRange({ minDate, maxDate, currentDate: newDate });\n });\n }, [maxDate, minDate]);\n\n const handleSelect = useCallback(\n (date: Date) => {\n setInternalSelectedDate((prevDate) => {\n let onChangePayload: Date | Date[] | DateInterval | null = null;\n let newInternalSelectedDate: Date | Date[] | DateInterval | undefined = undefined;\n\n if (type === CalendarType.Single) {\n onChangePayload = date;\n newInternalSelectedDate = date;\n } else if (type === CalendarType.Multiple) {\n const prevSelectedDates = prevDate as Date[];\n // Selects or unselects date , depending on if it is already selected.\n if (prevSelectedDates.some((d) => isSameDay(d, date))) {\n newInternalSelectedDate = prevSelectedDates.filter(\n (d) => !isSameDay(d, date),\n );\n } else {\n newInternalSelectedDate = [...prevSelectedDates, date];\n }\n\n onChangePayload = newInternalSelectedDate;\n } else if (type === CalendarType.Interval) {\n const prevSelectedDateInterval = prevDate as DateInterval;\n\n const updateInterval = (start: Date, end?: Date): void => {\n const newInterval = { start, end };\n onChangePayload = newInterval;\n newInternalSelectedDate = newInterval;\n };\n\n // Sets first selection as interval start.\n if (!prevSelectedDateInterval) {\n updateInterval(date);\n } else if (prevSelectedDateInterval.start && !prevSelectedDateInterval.end) {\n // Sets second selection as interval start, if it is earlier than the previous interval start.\n // Else sets it as interval end.\n if (date < prevSelectedDateInterval.start) {\n updateInterval(date);\n } else {\n updateInterval(prevSelectedDateInterval.start, date);\n }\n } else {\n // Resets interval if a third date is selected.\n updateInterval(date);\n }\n }\n\n if (typeof onChange === 'function' && onChangePayload) {\n onChange(onChangePayload);\n }\n\n return newInternalSelectedDate;\n });\n },\n [type, onChange],\n );\n\n const handleAnimationFinished = () => {\n setDirection(undefined);\n };\n\n const ShouldShowLeftArrow = useMemo(() => {\n if (!currentDate) {\n return false;\n }\n\n return !isSameMonth(currentDate, minDate);\n }, [currentDate, minDate]);\n\n const ShouldShowRightArrow = useMemo(() => {\n if (!currentDate) {\n return false;\n }\n\n return !isSameMonth(currentDate, maxDate);\n }, [currentDate, maxDate]);\n\n return (\n <StyledCalendar ref={calendarRef} $isDisabled={isDisabled}>\n {ShouldShowLeftArrow ? (\n <StyledCalendarIconWrapper onClick={handleLeftArrowClick}>\n <div // TODO Use styled-components instead of inline styles\n style={{\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n height: 'fit-content',\n }}\n >\n {showMonthYearPickers && (\n <StyledPseudoMonthYearPicker>\n <ComboBox lists={[{ list: [] }]} placeholder=\"\" />\n </StyledPseudoMonthYearPicker>\n )}\n <Icon icons={['fa fa-angle-left']} />\n </div>\n </StyledCalendarIconWrapper>\n ) : (\n <StyledCalendarIconWrapperPseudo />\n )}\n {currentDate && (\n <MonthWrapper\n shouldRenderTwo={shouldRenderTwoMonths}\n currentDate={currentDate}\n width={width}\n locale={locale}\n direction={direction}\n onSelect={handleSelect}\n selectedDate={internalSelectedDate}\n highlightedDates={highlightedDates}\n categories={categories}\n onAnimationFinished={handleAnimationFinished}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n disabledDates={disabledDates}\n setCurrentDate={setCurrentDate}\n showMonthYearPickers={showMonthYearPickers}\n />\n )}\n {ShouldShowRightArrow ? (\n <StyledCalendarIconWrapper onClick={handleRightArrowClick}>\n <div // TODO Use styled-components instead of inline styles\n style={{\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n height: 'fit-content',\n }}\n >\n {showMonthYearPickers && (\n <StyledPseudoMonthYearPicker>\n <ComboBox lists={[{ list: [] }]} placeholder=\"\" />\n </StyledPseudoMonthYearPicker>\n )}\n <Icon icons={['fa fa-angle-right']} />\n </div>\n </StyledCalendarIconWrapper>\n ) : (\n <StyledCalendarIconWrapperPseudo />\n )}\n </StyledCalendar>\n );\n};\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.StyledCalendarIconWrapperPseudo = exports.StyledCalendarIconWrapper = exports.StyledCalendar = void 0;
6
+ exports.StyledPseudoMonthYearPicker = exports.StyledCalendarIconWrapperPseudo = exports.StyledCalendarIconWrapper = exports.StyledCalendar = void 0;
7
7
  var _styledComponents = _interopRequireDefault(require("styled-components"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const StyledCalendar = exports.StyledCalendar = _styledComponents.default.div`
@@ -24,4 +24,11 @@ const StyledCalendarIconWrapper = exports.StyledCalendarIconWrapper = _styledCom
24
24
  const StyledCalendarIconWrapperPseudo = exports.StyledCalendarIconWrapperPseudo = _styledComponents.default.div`
25
25
  width: 15px;
26
26
  `;
27
+ const StyledPseudoMonthYearPicker = exports.StyledPseudoMonthYearPicker = _styledComponents.default.div`
28
+ height: fit-content;
29
+ width: 0;
30
+ overflow: hidden;
31
+ pointer-events: none;
32
+ user-select: none;
33
+ `;
27
34
  //# sourceMappingURL=Calendar.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledCalendar","exports","styled","div","$isDisabled","undefined","StyledCalendarIconWrapper","StyledCalendarIconWrapperPseudo"],"sources":["../../../../src/components/calendar/Calendar.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\ntype StyledCalendarProps = { $isDisabled?: boolean };\n\nexport const StyledCalendar = styled.div<StyledCalendarProps>`\n display: flex;\n width: 100%;\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n pointer-events: ${({ $isDisabled }) => ($isDisabled ? 'none' : undefined)};\n user-select: none;\n`;\n\nexport const StyledCalendarIconWrapper = styled.div`\n cursor: pointer;\n z-index: 2;\n`;\n\nexport const StyledCalendarIconWrapperPseudo = styled.div`\n width: 15px;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIhC,MAAMG,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,yBAAM,CAACC,GAAwB;AAC7D;AACA;AACA,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D,sBAAsB,CAAC;EAAEA;AAAY,CAAC,KAAMA,WAAW,GAAG,MAAM,GAAGC,SAAU;AAC7E;AACA,CAAC;AAEM,MAAMC,yBAAyB,GAAAL,OAAA,CAAAK,yBAAA,GAAGJ,yBAAM,CAACC,GAAG;AACnD;AACA;AACA,CAAC;AAEM,MAAMI,+BAA+B,GAAAN,OAAA,CAAAM,+BAAA,GAAGL,yBAAM,CAACC,GAAG;AACzD;AACA,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Calendar.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledCalendar","exports","styled","div","$isDisabled","undefined","StyledCalendarIconWrapper","StyledCalendarIconWrapperPseudo","StyledPseudoMonthYearPicker"],"sources":["../../../../src/components/calendar/Calendar.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\ntype StyledCalendarProps = { $isDisabled?: boolean };\n\nexport const StyledCalendar = styled.div<StyledCalendarProps>`\n display: flex;\n width: 100%;\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n pointer-events: ${({ $isDisabled }) => ($isDisabled ? 'none' : undefined)};\n user-select: none;\n`;\n\nexport const StyledCalendarIconWrapper = styled.div`\n cursor: pointer;\n z-index: 2;\n`;\n\nexport const StyledCalendarIconWrapperPseudo = styled.div`\n width: 15px;\n`;\n\nexport const StyledPseudoMonthYearPicker = styled.div`\n height: fit-content;\n width: 0;\n overflow: hidden;\n pointer-events: none;\n user-select: none;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIhC,MAAMG,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,yBAAM,CAACC,GAAwB;AAC7D;AACA;AACA,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D,sBAAsB,CAAC;EAAEA;AAAY,CAAC,KAAMA,WAAW,GAAG,MAAM,GAAGC,SAAU;AAC7E;AACA,CAAC;AAEM,MAAMC,yBAAyB,GAAAL,OAAA,CAAAK,yBAAA,GAAGJ,yBAAM,CAACC,GAAG;AACnD;AACA;AACA,CAAC;AAEM,MAAMI,+BAA+B,GAAAN,OAAA,CAAAM,+BAAA,GAAGL,yBAAM,CAACC,GAAG;AACzD;AACA,CAAC;AAEM,MAAMK,2BAA2B,GAAAP,OAAA,CAAAO,2BAAA,GAAGN,yBAAM,CAACC,GAAG;AACrD;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -26,7 +26,9 @@ const MonthWrapper = ({
26
26
  minDate,
27
27
  maxDate,
28
28
  type,
29
- disabledDates
29
+ disabledDates,
30
+ setCurrentDate,
31
+ showMonthYearPickers
30
32
  }) => {
31
33
  const [content, setContent] = (0, _react.useState)();
32
34
  const [hoveringDay, setHoveringDay] = (0, _react.useState)(null);
@@ -60,7 +62,10 @@ const MonthWrapper = ({
60
62
  type: type,
61
63
  hoveringDay: hoveringDay,
62
64
  setHoveringDay: setHoveringDay,
63
- disabledDates: disabledDates
65
+ disabledDates: disabledDates,
66
+ setCurrentDate: setCurrentDate,
67
+ displayIndex: i,
68
+ showMonthYearPickers: showMonthYearPickers
64
69
  }));
65
70
  }
66
71
  return items;
@@ -86,7 +91,9 @@ const MonthWrapper = ({
86
91
  type: type,
87
92
  hoveringDay: hoveringDay,
88
93
  setHoveringDay: setHoveringDay,
89
- disabledDates: disabledDates
94
+ disabledDates: disabledDates,
95
+ setCurrentDate: setCurrentDate,
96
+ showMonthYearPickers: showMonthYearPickers
90
97
  }));
91
98
  prevState.pop();
92
99
  }
@@ -111,25 +118,45 @@ const MonthWrapper = ({
111
118
  type: type,
112
119
  hoveringDay: hoveringDay,
113
120
  setHoveringDay: setHoveringDay,
114
- disabledDates: disabledDates
121
+ disabledDates: disabledDates,
122
+ setCurrentDate: setCurrentDate,
123
+ showMonthYearPickers: showMonthYearPickers
115
124
  }));
116
125
  prevState.shift();
117
126
  }
118
127
  return prevState;
119
128
  });
120
- }, [categories, currentDate, direction, highlightedDates, locale, monthHeight, onSelect, selectedDate, minDate, maxDate, type, hoveringDay, disabledDates]);
129
+ }, [categories, currentDate, direction, highlightedDates, locale, monthHeight, onSelect, selectedDate, minDate, maxDate, type, hoveringDay, disabledDates, setCurrentDate, showMonthYearPickers]);
121
130
  (0, _react.useEffect)(() => {
122
- if (selectedDate || hoveringDay) {
123
- setContent(prevState => (prevState ?? []).map(element => ({
131
+ if (direction) return;
132
+ setContent(prevState => (prevState ?? []).map((element, index) => {
133
+ const date = (0, _calendar.getNewDate)(index - 1, currentDate);
134
+ const {
135
+ month,
136
+ year
137
+ } = (0, _calendar.getMonthAndYear)(date);
138
+ return {
124
139
  ...element,
125
140
  props: {
126
141
  ...element.props,
142
+ categories,
143
+ highlightedDates,
144
+ locale,
145
+ onSelect,
127
146
  selectedDate,
128
- hoveringDay
147
+ minDate,
148
+ maxDate,
149
+ type,
150
+ hoveringDay,
151
+ disabledDates,
152
+ month,
153
+ year,
154
+ displayIndex: index - 1,
155
+ showMonthYearPickers
129
156
  }
130
- })));
131
- }
132
- }, [selectedDate, hoveringDay]);
157
+ };
158
+ }));
159
+ }, [categories, disabledDates, highlightedDates, hoveringDay, locale, maxDate, minDate, onSelect, selectedDate, type, currentDate, direction, showMonthYearPickers]);
133
160
  const animate = (0, _react.useMemo)(() => {
134
161
  if (shouldRenderTwo) {
135
162
  switch (true) {
@@ -1 +1 @@
1
- {"version":3,"file":"MonthWrapper.js","names":["_react","_interopRequireWildcard","require","_calendar","_Month","_interopRequireDefault","_MonthWrapper","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MonthWrapper","locale","currentDate","highlightedDates","selectedDate","onSelect","categories","direction","onAnimationFinished","shouldRenderTwo","width","isDisabled","minDate","maxDate","type","disabledDates","content","setContent","useState","hoveringDay","setHoveringDay","monthHeight","useMemo","useEffect","undefined","prevState","items","date","getNewDate","month","year","getMonthAndYear","push","createElement","height","key","unshift","pop","shift","map","element","props","animate","x","StyledMonthWrapper","$height","$width","StyledMotionWrapper","$isDisabled","transition","duration","onAnimationComplete","displayName","_default","exports"],"sources":["../../../../../src/components/calendar/month-wrapper/MonthWrapper.tsx"],"sourcesContent":["import type { Locale } from 'date-fns';\nimport type { MotionProps } from 'framer-motion';\nimport React, { FC, useEffect, useMemo, useState, type ReactElement } from 'react';\nimport type {\n CalendarType,\n Categories,\n DateInterval,\n HighlightedDates,\n} from '../../../types/calendar';\nimport { getMonthAndYear, getNewDate } from '../../../utils/calendar';\nimport Month from './month/Month';\nimport { StyledMonthWrapper, StyledMotionWrapper } from './MonthWrapper.styles';\n\nexport type MonthWrapperProps = {\n locale: Locale;\n highlightedDates?: HighlightedDates[];\n onSelect: (date: Date) => void;\n selectedDate?: Date | Date[] | DateInterval;\n categories?: Categories[];\n currentDate: Date;\n direction?: 'left' | 'right';\n onAnimationFinished: () => void;\n shouldRenderTwo: boolean;\n width: number;\n isDisabled?: boolean;\n maxDate: Date;\n minDate: Date;\n type: CalendarType;\n disabledDates: Date[];\n};\n\nconst MonthWrapper: FC<MonthWrapperProps> = ({\n locale,\n currentDate,\n highlightedDates,\n selectedDate,\n onSelect,\n categories,\n direction,\n onAnimationFinished,\n shouldRenderTwo,\n width,\n isDisabled,\n minDate,\n maxDate,\n type,\n disabledDates,\n}) => {\n const [content, setContent] = useState<ReactElement[]>();\n\n const [hoveringDay, setHoveringDay] = useState<Date | null>(null);\n\n const monthHeight = useMemo(() => width / (shouldRenderTwo ? 2 : 1), [width, shouldRenderTwo]);\n\n useEffect(() => {\n setContent(undefined);\n }, [monthHeight]);\n\n useEffect(() => {\n setContent((prevState) => {\n // Initial render of months\n if (!prevState) {\n const items: ReactElement[] = [];\n\n for (let i = -1; i < 3; i++) {\n const date = getNewDate(i, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n items.push(\n <Month\n height={monthHeight}\n key={`${month}-${year}`}\n month={month}\n year={year}\n locale={locale}\n onSelect={onSelect}\n highlightedDates={highlightedDates}\n categories={categories}\n selectedDate={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n hoveringDay={hoveringDay}\n setHoveringDay={setHoveringDay}\n disabledDates={disabledDates}\n />,\n );\n }\n\n return items;\n }\n\n if (direction === 'left') {\n const date = getNewDate(-1, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n prevState.unshift(\n <Month\n height={monthHeight}\n key={`${month}-${year}`}\n month={month}\n year={year}\n locale={locale}\n onSelect={onSelect}\n highlightedDates={highlightedDates}\n categories={categories}\n selectedDate={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n hoveringDay={hoveringDay}\n setHoveringDay={setHoveringDay}\n disabledDates={disabledDates}\n />,\n );\n prevState.pop();\n }\n\n if (direction === 'right') {\n const date = getNewDate(2, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n prevState.push(\n <Month\n height={monthHeight}\n key={`${month}-${year}`}\n month={month}\n year={year}\n locale={locale}\n onSelect={onSelect}\n highlightedDates={highlightedDates}\n categories={categories}\n selectedDate={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n hoveringDay={hoveringDay}\n setHoveringDay={setHoveringDay}\n disabledDates={disabledDates}\n />,\n );\n prevState.shift();\n }\n\n return prevState;\n });\n }, [\n categories,\n currentDate,\n direction,\n highlightedDates,\n locale,\n monthHeight,\n onSelect,\n selectedDate,\n minDate,\n maxDate,\n type,\n hoveringDay,\n disabledDates,\n ]);\n\n useEffect(() => {\n if (selectedDate || hoveringDay) {\n setContent((prevState) =>\n (prevState ?? []).map((element) => ({\n ...element,\n props: { ...element.props, selectedDate, hoveringDay } as ReactElement,\n })),\n );\n }\n }, [selectedDate, hoveringDay]);\n\n const animate: MotionProps['animate'] = useMemo(() => {\n if (shouldRenderTwo) {\n switch (true) {\n case direction === 'left':\n return { x: '0%' };\n case direction === 'right':\n return { x: '-100%' };\n default:\n return { x: '-50%' };\n }\n } else {\n switch (true) {\n case direction === 'left':\n return { x: '0%' };\n case direction === 'right':\n return { x: '-200%' };\n default:\n return { x: '-100%' };\n }\n }\n }, [direction, shouldRenderTwo]);\n\n return (\n <StyledMonthWrapper $height={monthHeight} $width={width}>\n <StyledMotionWrapper\n animate={animate}\n $isDisabled={isDisabled}\n transition={{\n type: 'tween',\n duration: !direction ? 0 : 0.2,\n }}\n onAnimationComplete={onAnimationFinished}\n >\n {content}\n </StyledMotionWrapper>\n </StyledMonthWrapper>\n );\n};\n\nMonthWrapper.displayName = 'MonthWrapper';\n\nexport default MonthWrapper;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MonthWrapper.js","names":["_react","_interopRequireWildcard","require","_calendar","_Month","_interopRequireDefault","_MonthWrapper","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MonthWrapper","locale","currentDate","highlightedDates","selectedDate","onSelect","categories","direction","onAnimationFinished","shouldRenderTwo","width","isDisabled","minDate","maxDate","type","disabledDates","setCurrentDate","showMonthYearPickers","content","setContent","useState","hoveringDay","setHoveringDay","monthHeight","useMemo","useEffect","undefined","prevState","items","date","getNewDate","month","year","getMonthAndYear","push","createElement","height","key","displayIndex","unshift","pop","shift","map","element","index","props","animate","x","StyledMonthWrapper","$height","$width","StyledMotionWrapper","$isDisabled","transition","duration","onAnimationComplete","displayName","_default","exports"],"sources":["../../../../../src/components/calendar/month-wrapper/MonthWrapper.tsx"],"sourcesContent":["import type { Locale } from 'date-fns';\nimport type { MotionProps } from 'framer-motion';\nimport React, { FC, useEffect, useMemo, useState, type ReactElement } from 'react';\nimport type {\n CalendarType,\n Categories,\n DateInterval,\n HighlightedDates,\n} from '../../../types/calendar';\nimport { getMonthAndYear, getNewDate } from '../../../utils/calendar';\nimport Month from './month/Month';\nimport { StyledMonthWrapper, StyledMotionWrapper } from './MonthWrapper.styles';\n\nexport type MonthWrapperProps = {\n locale: Locale;\n highlightedDates?: HighlightedDates[];\n onSelect: (date: Date) => void;\n selectedDate?: Date | Date[] | DateInterval;\n categories?: Categories[];\n currentDate: Date;\n direction?: 'left' | 'right';\n onAnimationFinished: () => void;\n shouldRenderTwo: boolean;\n width: number;\n isDisabled?: boolean;\n maxDate: Date;\n minDate: Date;\n type: CalendarType;\n disabledDates: Date[];\n setCurrentDate: (date: Date) => void;\n showMonthYearPickers: boolean;\n};\n\nconst MonthWrapper: FC<MonthWrapperProps> = ({\n locale,\n currentDate,\n highlightedDates,\n selectedDate,\n onSelect,\n categories,\n direction,\n onAnimationFinished,\n shouldRenderTwo,\n width,\n isDisabled,\n minDate,\n maxDate,\n type,\n disabledDates,\n setCurrentDate,\n showMonthYearPickers,\n}) => {\n const [content, setContent] = useState<ReactElement[]>();\n\n const [hoveringDay, setHoveringDay] = useState<Date | null>(null);\n\n const monthHeight = useMemo(() => width / (shouldRenderTwo ? 2 : 1), [width, shouldRenderTwo]);\n\n useEffect(() => {\n setContent(undefined);\n }, [monthHeight]);\n\n useEffect(() => {\n setContent((prevState) => {\n // Initial render of months\n if (!prevState) {\n const items: ReactElement[] = [];\n\n for (let i = -1; i < 3; i++) {\n const date = getNewDate(i, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n items.push(\n <Month\n height={monthHeight}\n key={`${month}-${year}`}\n month={month}\n year={year}\n locale={locale}\n onSelect={onSelect}\n highlightedDates={highlightedDates}\n categories={categories}\n selectedDate={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n hoveringDay={hoveringDay}\n setHoveringDay={setHoveringDay}\n disabledDates={disabledDates}\n setCurrentDate={setCurrentDate}\n displayIndex={i}\n showMonthYearPickers={showMonthYearPickers}\n />,\n );\n }\n\n return items;\n }\n\n if (direction === 'left') {\n const date = getNewDate(-1, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n prevState.unshift(\n <Month\n height={monthHeight}\n key={`${month}-${year}`}\n month={month}\n year={year}\n locale={locale}\n onSelect={onSelect}\n highlightedDates={highlightedDates}\n categories={categories}\n selectedDate={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n hoveringDay={hoveringDay}\n setHoveringDay={setHoveringDay}\n disabledDates={disabledDates}\n setCurrentDate={setCurrentDate}\n showMonthYearPickers={showMonthYearPickers}\n />,\n );\n prevState.pop();\n }\n\n if (direction === 'right') {\n const date = getNewDate(2, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n prevState.push(\n <Month\n height={monthHeight}\n key={`${month}-${year}`}\n month={month}\n year={year}\n locale={locale}\n onSelect={onSelect}\n highlightedDates={highlightedDates}\n categories={categories}\n selectedDate={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n type={type}\n hoveringDay={hoveringDay}\n setHoveringDay={setHoveringDay}\n disabledDates={disabledDates}\n setCurrentDate={setCurrentDate}\n showMonthYearPickers={showMonthYearPickers}\n />,\n );\n prevState.shift();\n }\n\n return prevState;\n });\n }, [\n categories,\n currentDate,\n direction,\n highlightedDates,\n locale,\n monthHeight,\n onSelect,\n selectedDate,\n minDate,\n maxDate,\n type,\n hoveringDay,\n disabledDates,\n setCurrentDate,\n showMonthYearPickers,\n ]);\n\n useEffect(() => {\n if (direction) return;\n setContent((prevState) =>\n (prevState ?? []).map((element, index) => {\n const date = getNewDate(index - 1, currentDate);\n\n const { month, year } = getMonthAndYear(date);\n\n return {\n ...element,\n props: {\n ...element.props,\n categories,\n highlightedDates,\n locale,\n onSelect,\n selectedDate,\n minDate,\n maxDate,\n type,\n hoveringDay,\n disabledDates,\n month,\n year,\n displayIndex: index - 1,\n showMonthYearPickers,\n } as ReactElement,\n };\n }),\n );\n }, [\n categories,\n disabledDates,\n highlightedDates,\n hoveringDay,\n locale,\n maxDate,\n minDate,\n onSelect,\n selectedDate,\n type,\n currentDate,\n direction,\n showMonthYearPickers,\n ]);\n\n const animate: MotionProps['animate'] = useMemo(() => {\n if (shouldRenderTwo) {\n switch (true) {\n case direction === 'left':\n return { x: '0%' };\n case direction === 'right':\n return { x: '-100%' };\n default:\n return { x: '-50%' };\n }\n } else {\n switch (true) {\n case direction === 'left':\n return { x: '0%' };\n case direction === 'right':\n return { x: '-200%' };\n default:\n return { x: '-100%' };\n }\n }\n }, [direction, shouldRenderTwo]);\n\n return (\n <StyledMonthWrapper $height={monthHeight} $width={width}>\n <StyledMotionWrapper\n animate={animate}\n $isDisabled={isDisabled}\n transition={{\n type: 'tween',\n duration: !direction ? 0 : 0.2,\n }}\n onAnimationComplete={onAnimationFinished}\n >\n {content}\n </StyledMotionWrapper>\n </StyledMonthWrapper>\n );\n};\n\nMonthWrapper.displayName = 'MonthWrapper';\n\nexport default MonthWrapper;\n"],"mappings":"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","ignoreList":[]}