@clickhouse/click-ui 0.2.0-rc.7 → 0.2.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/DatePicker/Common.cjs +79 -48
- package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DateRangePicker.cjs +24 -24
- package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +78 -40
- package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/index.cjs +29 -18
- package/dist/cjs/components/DatePicker/index.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs +42 -14
- package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
- package/dist/esm/components/DatePicker/Common.js +80 -49
- package/dist/esm/components/DatePicker/Common.js.map +1 -1
- package/dist/esm/components/DatePicker/DateRangePicker.js +25 -25
- package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DateTimeRangePicker.js +79 -41
- package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/index.js +30 -19
- package/dist/esm/components/DatePicker/index.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js +36 -10
- package/dist/esm/components/DatePicker/utils.js.map +1 -1
- package/dist/types/components/DatePicker/Common.d.ts +9 -4
- package/dist/types/components/DatePicker/DatePicker.d.ts +11 -2
- package/dist/types/components/DatePicker/DateRangePicker.d.ts +3 -2
- package/dist/types/components/DatePicker/DateTimeRangePicker.d.ts +3 -2
- package/dist/types/components/DatePicker/index.d.ts +2 -1
- package/dist/types/components/DatePicker/utils.d.ts +9 -8
- package/dist/types/index.d.ts +1 -1
- package/package.json +2 -3
- package/dist/types/components/DatePicker/DatePicker.types.d.ts +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["import dayjs from '
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["import { dayjs } from '@/utils/date';\n\nexport type Timezone = 'system' | 'UTC';\n\nexport interface DateRange {\n startDate: Date;\n endDate: Date;\n}\n\nconst locale = 'en-US';\n\nexport type Meridiem = 'am' | 'pm';\n\nexport interface Time {\n hour: number;\n minutes: number;\n}\n\nexport interface DateRangeListItem {\n dateRange: DateRange;\n label: string;\n}\n\nconst createFormatter = (options: Intl.DateTimeFormatOptions) => {\n const timezoneFormatters: Partial<Record<Timezone, Intl.DateTimeFormat>> = {};\n\n return (timezone: Timezone, date: Date): string => {\n if (!timezoneFormatters[timezone]) {\n const opts = timezone === 'UTC' ? { ...options, timeZone: 'UTC' } : options;\n timezoneFormatters[timezone] = new Intl.DateTimeFormat(locale, opts);\n }\n return timezoneFormatters[timezone].format(date);\n };\n};\n\nexport const formatSelectedDate = createFormatter({\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n});\n\nexport const formatWeekday = createFormatter({ weekday: 'short' });\n\nexport const formatSelectedDateTime = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport const formatSelectedDateTimeWithSeconds = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n});\n\nexport const formatDateHeader = createFormatter({\n month: 'short',\n year: 'numeric',\n});\n\n// In UTC mode, shift by the host offset so local-time getters return UTC\n// values. shiftFromTimezone reverses it.\n//\n// Caveat: round-tripping across a DST boundary drifts by an hour — each\n// direction reads getTimezoneOffset on its own input. Call sites don't\n// round-trip the same Date, so this hasn't bitten us.\nexport const shiftToTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() + date.getTimezoneOffset() * 60_000);\n};\n\nexport const shiftFromTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() - date.getTimezoneOffset() * 60_000);\n};\n\nexport const getPredefinedMonthsForDateRangePicker = (\n numberOfMonths: number\n): DateRange[] => {\n const now = dayjs();\n\n if (numberOfMonths < 0) {\n const lastSixMonths: DateRange[] = [];\n for (let i = 0; i < Math.abs(numberOfMonths); i++) {\n const date = now.subtract(i, 'month');\n if (date.date() === 1 && date.month() === now.month()) {\n continue;\n }\n lastSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: i === 0 ? now.toDate() : date.endOf('month').toDate(),\n });\n }\n\n return lastSixMonths.reverse();\n }\n\n const nextSixMonths: DateRange[] = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const date = now.add(i, 'month');\n nextSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: date.endOf('month').toDate(),\n });\n }\n\n return nextSixMonths;\n};\n\nexport const getPredefinedTimePeriodsForDateTimePicker = (): DateRangeListItem[] => {\n const now = dayjs();\n\n const fifteenMinutesAgo = now.subtract(15, 'minute');\n const thirtyMinutesAgo = now.subtract(30, 'minute');\n const oneHourAgo = now.subtract(1, 'hour');\n const sixHoursAgo = now.subtract(6, 'hour');\n const oneDayAgo = now.subtract(1, 'day');\n const oneMonthAgo = now.subtract(1, 'month');\n\n const dateRangeList: DateRangeListItem[] = [\n {\n dateRange: {\n startDate: fifteenMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 15 minutes',\n },\n {\n dateRange: {\n startDate: thirtyMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 30 minutes',\n },\n {\n dateRange: {\n startDate: oneHourAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past hour',\n },\n {\n dateRange: {\n startDate: sixHoursAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 6 hours',\n },\n {\n dateRange: {\n startDate: oneDayAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past day',\n },\n {\n dateRange: {\n startDate: oneMonthAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past month',\n },\n ];\n\n return dateRangeList;\n};\n\nexport const getNextNDatesForDatePickerAllowOnlyList = (numberOfDays: number): Date[] => {\n const now = dayjs();\n\n return Array.from({ length: numberOfDays }, (_, i) =>\n now.add(i, 'day').startOf('day').toDate()\n );\n};\n\nexport const datesAreWithinMaxRange = (\n startDate: Date,\n endDate: Date,\n maxRangeLength: number\n): boolean => {\n const daysDifference = Math.abs(dayjs(startDate).diff(dayjs(endDate), 'days'));\n\n return daysDifference <= maxRangeLength;\n};\n\nexport const isDateRangeTheWholeMonth = (\n { startDate, endDate }: DateRange,\n timezone: Timezone = 'system'\n): boolean => {\n const start = timezone === 'UTC' ? dayjs.utc(startDate) : dayjs(startDate);\n const end = timezone === 'UTC' ? dayjs.utc(endDate) : dayjs(endDate);\n\n if (start.month() !== end.month()) {\n return false;\n }\n\n const startDateIsFirstDay = start.isSame(start.startOf('month'), 'day');\n const endDateIsLastDay = end.isSame(end.endOf('month'), 'day');\n\n return startDateIsFirstDay && endDateIsLastDay;\n};\n"],"names":["locale","createFormatter","options","timezoneFormatters","timezone","date","opts","timeZone","Intl","DateTimeFormat","format","formatSelectedDate","day","month","year","formatWeekday","weekday","formatSelectedDateTime","hour","minute","formatSelectedDateTimeWithSeconds","second","formatDateHeader","shiftToTimezone","Date","getTime","getTimezoneOffset","shiftFromTimezone","getPredefinedMonthsForDateRangePicker","numberOfMonths","now","dayjs","lastSixMonths","i","Math","abs","subtract","push","startDate","startOf","toDate","endDate","endOf","reverse","nextSixMonths","add","datesAreWithinMaxRange","maxRangeLength","daysDifference","diff","isDateRangeTheWholeMonth","start","utc","end","startDateIsFirstDay","isSame","endDateIsLastDay"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { styled } from 'styled-components';
|
|
3
3
|
import { useId, useState, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { useCalendar } from '@h6s/calendar';
|
|
5
|
-
import {
|
|
5
|
+
import { shiftToTimezone, formatSelectedDate, formatSelectedDateTimeWithSeconds, formatSelectedDateTime, formatDateHeader, formatWeekday } from './utils.js';
|
|
6
6
|
import { DAYS, YEARS, MONTHS, DAYS_IN_WEEK, getMonthNames } from '../../utils/date.js';
|
|
7
7
|
import { InputStartContent, InputElement, InputWrapper } from '../InputWrapper/index.js';
|
|
8
8
|
import { Icon as SvgImage } from '../Icon/index.js';
|
|
@@ -34,16 +34,16 @@ const HighlightedInputWrapper = styled(InputWrapper).withConfig({
|
|
|
34
34
|
${$width && `min-width: ${explicitWidth};`}
|
|
35
35
|
`;
|
|
36
36
|
});
|
|
37
|
-
const formatPartialDate = (selectedDate, partialYear, partialMonth) => {
|
|
37
|
+
const formatPartialDate = (timezone, selectedDate, partialYear, partialMonth) => {
|
|
38
38
|
if (typeof partialYear === "number" && typeof partialMonth === "number") {
|
|
39
|
-
const date = new Date(partialYear, partialMonth, 1);
|
|
40
|
-
return
|
|
39
|
+
const date = timezone === "UTC" ? new Date(Date.UTC(partialYear, partialMonth, 1)) : new Date(partialYear, partialMonth, 1);
|
|
40
|
+
return formatDateHeader(timezone, date);
|
|
41
41
|
}
|
|
42
42
|
if (typeof partialYear === "number") {
|
|
43
43
|
return String(partialYear);
|
|
44
44
|
}
|
|
45
45
|
if (selectedDate instanceof Date) {
|
|
46
|
-
return
|
|
46
|
+
return formatSelectedDate(timezone, selectedDate);
|
|
47
47
|
}
|
|
48
48
|
return "";
|
|
49
49
|
};
|
|
@@ -54,10 +54,11 @@ const DatePickerInput = ({
|
|
|
54
54
|
partialMonth,
|
|
55
55
|
partialYear,
|
|
56
56
|
placeholder,
|
|
57
|
-
selectedDate
|
|
57
|
+
selectedDate,
|
|
58
|
+
timezone = "system"
|
|
58
59
|
}) => {
|
|
59
60
|
const defaultId = useId();
|
|
60
|
-
const formattedSelectedDate = formatPartialDate(selectedDate, partialYear, partialMonth);
|
|
61
|
+
const formattedSelectedDate = formatPartialDate(timezone, selectedDate, partialYear, partialMonth);
|
|
61
62
|
return /* @__PURE__ */ jsxs(HighlightedInputWrapper, { $isActive: isActive, disabled, id: id ?? defaultId, children: [
|
|
62
63
|
/* @__PURE__ */ jsx(InputStartContent, { children: /* @__PURE__ */ jsx(SvgImage, { name: "calendar" }) }),
|
|
63
64
|
/* @__PURE__ */ jsx(InputElement, { $hasStartContent: true, "data-testid": "datepicker-input", placeholder, readOnly: true, value: formattedSelectedDate })
|
|
@@ -69,21 +70,22 @@ const DateRangePickerInput = ({
|
|
|
69
70
|
id,
|
|
70
71
|
placeholder,
|
|
71
72
|
selectedEndDate,
|
|
72
|
-
selectedStartDate
|
|
73
|
+
selectedStartDate,
|
|
74
|
+
timezone = "system"
|
|
73
75
|
}) => {
|
|
74
76
|
const defaultId = useId();
|
|
75
77
|
let formattedValue = /* @__PURE__ */ jsx(Text, { color: "muted", component: "span", children: placeholder ?? "" });
|
|
76
78
|
if (selectedStartDate) {
|
|
77
79
|
if (selectedEndDate) {
|
|
78
80
|
formattedValue = /* @__PURE__ */ jsxs("span", { children: [
|
|
79
|
-
|
|
81
|
+
formatSelectedDate(timezone, selectedStartDate),
|
|
80
82
|
" –",
|
|
81
83
|
" ",
|
|
82
|
-
|
|
84
|
+
formatSelectedDate(timezone, selectedEndDate)
|
|
83
85
|
] });
|
|
84
86
|
} else {
|
|
85
87
|
formattedValue = /* @__PURE__ */ jsxs("span", { children: [
|
|
86
|
-
|
|
88
|
+
formatSelectedDate(timezone, selectedStartDate),
|
|
87
89
|
" ",
|
|
88
90
|
/* @__PURE__ */ jsx(Text, { color: "muted", component: "span", children: "– end date" })
|
|
89
91
|
] });
|
|
@@ -101,23 +103,28 @@ const DateTimeRangePickerInput = ({
|
|
|
101
103
|
placeholder,
|
|
102
104
|
selectedEndDate,
|
|
103
105
|
selectedStartDate,
|
|
104
|
-
shouldShowSeconds
|
|
106
|
+
shouldShowSeconds,
|
|
107
|
+
timezone = "system"
|
|
105
108
|
}) => {
|
|
106
109
|
const defaultId = useId();
|
|
107
|
-
const
|
|
110
|
+
const formatDateTime = useCallback((date) => {
|
|
111
|
+
if (shouldShowSeconds) {
|
|
112
|
+
return formatSelectedDateTimeWithSeconds(timezone, date);
|
|
113
|
+
}
|
|
114
|
+
return formatSelectedDateTime(timezone, date);
|
|
115
|
+
}, [shouldShowSeconds, timezone]);
|
|
108
116
|
let formattedValue = /* @__PURE__ */ jsx(Text, { color: "muted", component: "span", children: placeholder ?? "" });
|
|
109
117
|
if (selectedStartDate) {
|
|
110
118
|
if (selectedEndDate) {
|
|
111
119
|
formattedValue = /* @__PURE__ */ jsxs("span", { children: [
|
|
112
|
-
|
|
113
|
-
" ",
|
|
114
|
-
"–",
|
|
120
|
+
formatDateTime(selectedStartDate).replace("AM", "am").replace("PM", "pm"),
|
|
121
|
+
" –",
|
|
115
122
|
" ",
|
|
116
|
-
|
|
123
|
+
formatDateTime(selectedEndDate).replace("AM", "am").replace("PM", "pm")
|
|
117
124
|
] });
|
|
118
125
|
} else {
|
|
119
126
|
formattedValue = /* @__PURE__ */ jsxs("span", { children: [
|
|
120
|
-
|
|
127
|
+
formatDateTime(selectedStartDate).replace("AM", "am").replace("PM", "pm"),
|
|
121
128
|
" ",
|
|
122
129
|
/* @__PURE__ */ jsx(Text, { color: "muted", component: "span", children: "– end date" })
|
|
123
130
|
] });
|
|
@@ -128,7 +135,7 @@ const DateTimeRangePickerInput = ({
|
|
|
128
135
|
"start date –",
|
|
129
136
|
" "
|
|
130
137
|
] }),
|
|
131
|
-
|
|
138
|
+
formatDateTime(selectedEndDate).replace("AM", "am").replace("PM", "pm")
|
|
132
139
|
] });
|
|
133
140
|
}
|
|
134
141
|
return /* @__PURE__ */ jsxs(HighlightedInputWrapper, { $isActive: isActive, disabled, id: id ?? defaultId, $width: "max-content", children: [
|
|
@@ -303,8 +310,13 @@ const CalendarRenderer = ({
|
|
|
303
310
|
onYearSelect,
|
|
304
311
|
onMonthSelect,
|
|
305
312
|
selectedDate,
|
|
313
|
+
timezone = "system",
|
|
306
314
|
...props
|
|
307
315
|
}) => {
|
|
316
|
+
const shiftedCalendarOptions = calendarOptions.defaultDate instanceof Date ? {
|
|
317
|
+
...calendarOptions,
|
|
318
|
+
defaultDate: shiftToTimezone(calendarOptions.defaultDate, timezone)
|
|
319
|
+
} : calendarOptions;
|
|
308
320
|
const {
|
|
309
321
|
body,
|
|
310
322
|
headers,
|
|
@@ -313,7 +325,7 @@ const CalendarRenderer = ({
|
|
|
313
325
|
year
|
|
314
326
|
} = useCalendar({
|
|
315
327
|
defaultWeekStart: 1,
|
|
316
|
-
...
|
|
328
|
+
...shiftedCalendarOptions
|
|
317
329
|
});
|
|
318
330
|
const [view, setView] = useState(DAYS);
|
|
319
331
|
const [selectedYear, setSelectedYear] = useState(null);
|
|
@@ -385,30 +397,30 @@ const CalendarRenderer = ({
|
|
|
385
397
|
setSelectedYear(null);
|
|
386
398
|
setYearOffset(0);
|
|
387
399
|
}, [selectedYear, year, navigation, onMonthSelect]);
|
|
388
|
-
const onMonthGridKeyDown = useCallback((
|
|
400
|
+
const onMonthGridKeyDown = useCallback((event, index) => {
|
|
389
401
|
const columns = viewGridMonths.columns;
|
|
390
402
|
const totalItems = 12;
|
|
391
403
|
let newIndex = index;
|
|
392
|
-
switch (
|
|
404
|
+
switch (event.key) {
|
|
393
405
|
case "ArrowRight":
|
|
394
|
-
|
|
406
|
+
event.preventDefault();
|
|
395
407
|
newIndex = (index + 1) % totalItems;
|
|
396
408
|
break;
|
|
397
409
|
case "ArrowLeft":
|
|
398
|
-
|
|
410
|
+
event.preventDefault();
|
|
399
411
|
newIndex = (index - 1 + totalItems) % totalItems;
|
|
400
412
|
break;
|
|
401
413
|
case "ArrowDown":
|
|
402
|
-
|
|
414
|
+
event.preventDefault();
|
|
403
415
|
newIndex = (index + columns) % totalItems;
|
|
404
416
|
break;
|
|
405
417
|
case "ArrowUp":
|
|
406
|
-
|
|
418
|
+
event.preventDefault();
|
|
407
419
|
newIndex = (index - columns + totalItems) % totalItems;
|
|
408
420
|
break;
|
|
409
421
|
case "Enter":
|
|
410
422
|
case " ":
|
|
411
|
-
|
|
423
|
+
event.preventDefault();
|
|
412
424
|
onMonthSelection(index);
|
|
413
425
|
return;
|
|
414
426
|
default:
|
|
@@ -417,30 +429,30 @@ const CalendarRenderer = ({
|
|
|
417
429
|
setFocusedMonthIndex(newIndex);
|
|
418
430
|
monthGridRef.current[newIndex]?.focus();
|
|
419
431
|
}, [onMonthSelection]);
|
|
420
|
-
const onYearGridKeyDown = useCallback((
|
|
432
|
+
const onYearGridKeyDown = useCallback((event, index, yearValue) => {
|
|
421
433
|
const columns = viewGridYears.columns;
|
|
422
434
|
const totalItems = totalYears;
|
|
423
435
|
let newIndex = index;
|
|
424
|
-
switch (
|
|
436
|
+
switch (event.key) {
|
|
425
437
|
case "ArrowRight":
|
|
426
|
-
|
|
438
|
+
event.preventDefault();
|
|
427
439
|
newIndex = (index + 1) % totalItems;
|
|
428
440
|
break;
|
|
429
441
|
case "ArrowLeft":
|
|
430
|
-
|
|
442
|
+
event.preventDefault();
|
|
431
443
|
newIndex = (index - 1 + totalItems) % totalItems;
|
|
432
444
|
break;
|
|
433
445
|
case "ArrowDown":
|
|
434
|
-
|
|
446
|
+
event.preventDefault();
|
|
435
447
|
newIndex = (index + columns) % totalItems;
|
|
436
448
|
break;
|
|
437
449
|
case "ArrowUp":
|
|
438
|
-
|
|
450
|
+
event.preventDefault();
|
|
439
451
|
newIndex = (index - columns + totalItems) % totalItems;
|
|
440
452
|
break;
|
|
441
453
|
case "Enter":
|
|
442
454
|
case " ":
|
|
443
|
-
|
|
455
|
+
event.preventDefault();
|
|
444
456
|
onYearSelection(yearValue);
|
|
445
457
|
return;
|
|
446
458
|
default:
|
|
@@ -459,29 +471,48 @@ const CalendarRenderer = ({
|
|
|
459
471
|
if (view2 === YEARS) {
|
|
460
472
|
return "Year";
|
|
461
473
|
}
|
|
462
|
-
return
|
|
474
|
+
return formatDateHeader("system", headerDate);
|
|
463
475
|
};
|
|
464
476
|
const renderMonthsGrid = () => {
|
|
465
|
-
const today = /* @__PURE__ */ new Date();
|
|
466
|
-
const
|
|
467
|
-
const
|
|
468
|
-
const
|
|
469
|
-
const
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
477
|
+
const today = shiftToTimezone(/* @__PURE__ */ new Date(), timezone);
|
|
478
|
+
const thisMonth = today.getMonth();
|
|
479
|
+
const thisYear = today.getFullYear();
|
|
480
|
+
const shiftedSelected = selectedDate ? shiftToTimezone(selectedDate, timezone) : void 0;
|
|
481
|
+
const selectedMonth = shiftedSelected?.getMonth();
|
|
482
|
+
const selectedYear2 = shiftedSelected?.getFullYear();
|
|
483
|
+
return /* @__PURE__ */ jsx(MonthsGrid, { "data-testid": "months-grid", role: "grid", "aria-label": "Select month", children: monthAbbreviations.map((month2, index) => {
|
|
484
|
+
const handleKeyDown = (event) => {
|
|
485
|
+
onMonthGridKeyDown(event, index);
|
|
486
|
+
};
|
|
487
|
+
const handleClick = () => {
|
|
488
|
+
onMonthSelection(index);
|
|
489
|
+
};
|
|
490
|
+
const ref = (element) => {
|
|
491
|
+
monthGridRef.current[index] = element;
|
|
492
|
+
};
|
|
493
|
+
return /* @__PURE__ */ jsx(GridCell, { type: "button", ref, $isActive: selectedDate && index === selectedMonth && year === selectedYear2, $isPresent: index === thisMonth && year === thisYear, onClick: handleClick, onKeyDown: handleKeyDown, "data-testid": `month-cell-${index}`, tabIndex: index === focusedMonthIndex ? 0 : -1, "aria-label": month2, children: month2 }, month2);
|
|
494
|
+
}) });
|
|
473
495
|
};
|
|
474
496
|
const renderYearsGrid = () => {
|
|
475
497
|
const years = [];
|
|
476
498
|
const baseYear = year + yearOffset;
|
|
477
|
-
const
|
|
478
|
-
const selectedYear2 = selectedDate
|
|
499
|
+
const thisYear = shiftToTimezone(/* @__PURE__ */ new Date(), timezone).getFullYear();
|
|
500
|
+
const selectedYear2 = selectedDate ? shiftToTimezone(selectedDate, timezone).getFullYear() : void 0;
|
|
479
501
|
for (let i = -yearsOffset; i <= yearsOffset; i++) {
|
|
480
502
|
years.push(baseYear + i);
|
|
481
503
|
}
|
|
482
|
-
return /* @__PURE__ */ jsx(YearsGrid, { "data-testid": "years-grid", role: "grid", "aria-label": "Select year", children: years.map((
|
|
483
|
-
|
|
484
|
-
|
|
504
|
+
return /* @__PURE__ */ jsx(YearsGrid, { "data-testid": "years-grid", role: "grid", "aria-label": "Select year", children: years.map((currentYear, index) => {
|
|
505
|
+
const ref = (element) => {
|
|
506
|
+
yearGridRef.current[index] = element;
|
|
507
|
+
};
|
|
508
|
+
const handleClick = () => {
|
|
509
|
+
onYearSelection(currentYear);
|
|
510
|
+
};
|
|
511
|
+
const handleKeyDown = (event) => {
|
|
512
|
+
onYearGridKeyDown(event, index, currentYear);
|
|
513
|
+
};
|
|
514
|
+
return /* @__PURE__ */ jsx(GridCell, { type: "button", ref, $isActive: selectedDate && currentYear === selectedYear2, $isPresent: currentYear === thisYear, onClick: handleClick, onKeyDown: handleKeyDown, "data-testid": `year-cell-${currentYear}`, tabIndex: index === focusedYearIndex ? 0 : -1, "aria-label": String(currentYear), children: currentYear }, currentYear);
|
|
515
|
+
}) });
|
|
485
516
|
};
|
|
486
517
|
const renderTableContent = () => {
|
|
487
518
|
if (view === MONTHS) {
|
|
@@ -495,7 +526,7 @@ const CalendarRenderer = ({
|
|
|
495
526
|
key,
|
|
496
527
|
value: date
|
|
497
528
|
}) => {
|
|
498
|
-
return /* @__PURE__ */ jsx(DateTableHeader, { children:
|
|
529
|
+
return /* @__PURE__ */ jsx(DateTableHeader, { children: formatWeekday("system", date) }, key);
|
|
499
530
|
}) }) }),
|
|
500
531
|
/* @__PURE__ */ jsx("tbody", { children: children(body) })
|
|
501
532
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.js","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport {\n headerDateFormatter,\n selectedDateFormatter,\n selectedDateTimeFormatter,\n selectedDateTimeFormatterWithSeconds,\n weekdayFormatter,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst explicitWidth = '250px';\n\nconst viewGridMonths = {\n columns: 4,\n rows: 3,\n} as const;\n\nconst viewGridYears = {\n columns: 3,\n rows: 3,\n} as const;\n\nconst totalYears = viewGridYears.columns * viewGridYears.rows;\nconst yearsOffset = Math.floor(totalYears / 2);\n\nconst HighlightedInputWrapper = styled(InputWrapper)<{\n $isActive: boolean;\n $width?: string;\n}>`\n ${({ $isActive, $width, theme }) => {\n return `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isActive\n ? theme.click.datePicker.dateOption.color.stroke.active\n : theme.click.field.color.stroke.default\n };\n width: ${$width ? $width : explicitWidth};\n ${$width && `min-width: ${explicitWidth};`}\n `;\n }}\n}`;\n\ninterface DatePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n partialMonth?: number;\n partialYear?: number;\n placeholder?: string;\n selectedDate?: Date;\n}\n\nconst formatPartialDate = (\n selectedDate?: Date,\n partialYear?: number,\n partialMonth?: number\n): string => {\n if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n const date = new Date(partialYear, partialMonth, 1);\n return headerDateFormatter.format(date);\n }\n if (typeof partialYear === 'number') {\n return String(partialYear);\n }\n if (selectedDate instanceof Date) {\n return selectedDateFormatter.format(selectedDate);\n }\n return '';\n};\n\nexport const DatePickerInput = ({\n isActive,\n disabled,\n id,\n partialMonth,\n partialYear,\n placeholder,\n selectedDate,\n}: DatePickerInputProps) => {\n const defaultId = useId();\n const formattedSelectedDate = formatPartialDate(\n selectedDate,\n partialYear,\n partialMonth\n );\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n data-testid=\"datepicker-input\"\n placeholder={placeholder}\n readOnly\n value={formattedSelectedDate}\n />\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n}\n\nexport const DateRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n}: DateRangePickerInputProps) => {\n const defaultId = useId();\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {selectedDateFormatter.format(selectedStartDate)} –{' '}\n {selectedDateFormatter.format(selectedEndDate)}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {selectedDateFormatter.format(selectedStartDate)}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"daterangepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTimeRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n shouldShowSeconds?: boolean;\n}\n\nexport const DateTimeRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n shouldShowSeconds,\n}: DateTimeRangePickerInputProps) => {\n const defaultId = useId();\n\n const dateTimeFormatter = shouldShowSeconds\n ? selectedDateTimeFormatterWithSeconds\n : selectedDateTimeFormatter;\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {dateTimeFormatter\n .format(selectedStartDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}{' '}\n –{' '}\n {dateTimeFormatter\n .format(selectedEndDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {dateTimeFormatter\n .format(selectedStartDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n } else if (selectedEndDate) {\n formattedValue = (\n <span>\n <Text\n color=\"muted\"\n component=\"span\"\n >\n start date –{' '}\n </Text>\n {dateTimeFormatter\n .format(selectedEndDate)\n .replace('AM', 'am')\n .replace('PM', 'pm')}\n </span>\n );\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n $width=\"max-content\"\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"datetimepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\nconst DatePickerContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst ClickableTitle = styled.button`\n background: transparent;\n border: 1px solid transparent;\n cursor: pointer;\n outline: none;\n padding: 0.25rem 0.5rem;\n user-select: none;\n\n ${({ theme }) => `\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `};\n\n &:hover {\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.hover};\n }\n\n &:focus,\n &:focus-visible {\n border-color: ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n`;\n\nconst UnselectableTitle = styled.h2`\n margin: 0;\n padding: 0;\n user-select: none;\n\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `}\n`;\n\nconst GridContainer = styled.div`\n display: grid;\n padding: 0.25rem 0 0;\n\n ${({ theme }) => `\n gap: calc(${theme.click.datePicker.space.gap} * 2);\n `}\n`;\n\nconst MonthsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${viewGridMonths.columns}, 1fr);\n grid-template-rows: repeat(${viewGridMonths.rows}, 1fr);\n`;\n\nconst YearsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${viewGridYears.columns}, 1fr);\n grid-template-rows: repeat(${viewGridYears.rows}, 1fr);\n`;\n\nconst GridCell = styled.button<{ $isActive?: boolean; $isPresent?: boolean }>`\n align-items: center;\n cursor: pointer;\n display: flex;\n justify-content: center;\n min-height: 26px;\n padding: 8px 4px;\n text-align: center;\n\n ${({ theme }) => `\n background: ${theme.click.datePicker.dateOption.color.background.default};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n color: ${theme.click.datePicker.dateOption.color.label.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isActive, theme }) =>\n $isActive &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active};\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isActive, $isPresent, theme }) =>\n $isPresent &&\n !$isActive &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n ${({ theme }) => `\n &:hover {\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus-visible {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n `}\n`;\n\nconst DateTable = styled.table`\n border-collapse: separate;\n border-spacing: 0;\n font: ${({ theme }) => theme.typography.styles.product.text.normal.md};\n table-layout: fixed;\n user-select: none;\n width: ${explicitWidth};\n\n thead tr {\n height: ${({ theme }) => theme.click.datePicker.dateOption.size.height};\n }\n\n tbody {\n cursor: pointer;\n }\n\n td,\n th {\n padding: 4px;\n }\n`;\n\nconst DateTableHeader = styled.th`\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.daytitle.default};\n font: ${theme.click.datePicker.typography.daytitle.default};\n `}\n\n width: 14%;\n`;\n\nexport const DateTableCell = styled.td<{\n $isCurrentMonth?: boolean;\n $isDisabled?: boolean;\n $isSelected?: boolean;\n $isPresent?: boolean;\n}>`\n ${({ theme }) => `\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isCurrentMonth, $isDisabled, theme }) =>\n (!$isCurrentMonth || $isDisabled) &&\n `\n color: ${theme.click.datePicker.dateOption.color.label.disabled};\n font: ${theme.click.datePicker.dateOption.typography.label.disabled};\n `}\n\n ${({ $isSelected, theme }) =>\n $isSelected &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active} !important;\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isSelected, $isPresent, theme }) =>\n $isPresent &&\n !$isSelected &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n text-align: center;\n outline: none;\n\n &:hover {\n ${({ $isDisabled, $isPresent, theme }) =>\n `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };\n background: ${$isPresent ? theme.click.datePicker.dateOption.color.background.range : ''};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};`};\n }\n\n &:focus {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n\n &:focus-visible {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n`;\n\nexport const StyledDropdownItem = styled(Dropdown.Item)`\n box-sizing: content-box;\n min-height: 24px;\n`;\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n calendarOptions?: UseCalendarOptions;\n children: (body: Body) => ReactNode;\n allowYearMonthSelection?: boolean;\n onYearSelect?: (year: number) => void;\n onMonthSelect?: (year: number, month: number) => void;\n selectedDate?: Date;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = styled(IconButton)`\n && {\n &:focus,\n &:focus-visible {\n outline: none;\n border: ${({ theme }) => theme.click.datePicker.dateOption.stroke} solid\n ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n }\n`;\n\nconst EmptyDateSelectNav = styled(PickerNavControl)`\n visibility: hidden;\n pointer-events: none;\n`;\n\nconst DateSelectNav = ({\n id,\n icon,\n onClick,\n onKeyDown,\n view,\n size = 'sm',\n tabIndex,\n buttonRef,\n}: {\n id: string;\n icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n onClick: () => void;\n onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n view: DateViewOption;\n size?: IconButtonSize;\n tabIndex?: number;\n buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n if (view === MONTHS) {\n return (\n <EmptyDateSelectNav\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n />\n );\n }\n return (\n <PickerNavControl\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n />\n );\n};\n\nexport const CalendarRenderer = ({\n calendarOptions = {},\n children,\n allowYearMonthSelection = true,\n onYearSelect,\n onMonthSelect,\n selectedDate,\n ...props\n}: CalendarRendererProps) => {\n const { body, headers, month, navigation, year } = useCalendar({\n defaultWeekStart: 1,\n ...calendarOptions,\n });\n\n const [view, setView] = useState<DateViewOption>(DAYS);\n const [selectedYear, setSelectedYear] = useState<number | null>(null);\n const [yearOffset, setYearOffset] = useState(0);\n const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n const [focusedYearIndex, setFocusedYearIndex] = useState(yearsOffset);\n\n const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n useEffect(() => {\n if (view === YEARS) {\n yearGridRef.current[focusedYearIndex]?.focus();\n } else if (view === MONTHS) {\n monthGridRef.current[focusedMonthIndex]?.focus();\n }\n }, [view, focusedYearIndex, focusedMonthIndex]);\n\n const onNextClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev + totalYears);\n } else {\n navigation.toNext();\n }\n }, [navigation, view]);\n\n const onPreviousClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev - totalYears);\n return;\n }\n\n navigation.toPrev();\n }, [navigation, view]);\n\n const onTitleClick = useCallback(() => {\n if (view !== DAYS) {\n return;\n }\n\n setView(YEARS);\n }, [view]);\n\n const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n const validRefs = headerNavRefs.current.filter(ref => {\n if (!ref) {\n return false;\n }\n return (\n ref.offsetParent !== null ||\n (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n );\n });\n\n const currentValidIndex = validRefs.indexOf(e.currentTarget);\n if (currentValidIndex === -1 || validRefs.length <= 1) {\n return;\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n validRefs[nextValidIndex]?.focus();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prevValidIndex =\n (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n validRefs[prevValidIndex]?.focus();\n }\n }, []);\n\n const onYearSelection = useCallback(\n (yearValue: number) => {\n setSelectedYear(yearValue);\n setView(MONTHS);\n onYearSelect?.(yearValue);\n },\n [onYearSelect]\n );\n\n const onMonthSelection = useCallback(\n (monthIndex: number) => {\n const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n const newDate = new Date(finalYear, monthIndex, 1);\n\n navigation.setDate(newDate);\n onMonthSelect?.(finalYear, monthIndex);\n\n setView(DAYS);\n setSelectedYear(null);\n setYearOffset(0);\n },\n [selectedYear, year, navigation, onMonthSelect]\n );\n\n const onMonthGridKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const columns = viewGridMonths.columns;\n const totalItems = 12;\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onMonthSelection(index);\n return;\n default:\n return;\n }\n\n setFocusedMonthIndex(newIndex);\n monthGridRef.current[newIndex]?.focus();\n },\n [onMonthSelection]\n );\n\n const onYearGridKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n const columns = viewGridYears.columns;\n const totalItems = totalYears;\n let newIndex = index;\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n e.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n e.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n e.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n onYearSelection(yearValue);\n return;\n default:\n return;\n }\n\n setFocusedYearIndex(newIndex);\n yearGridRef.current[newIndex]?.focus();\n },\n [onYearSelection]\n );\n\n const headerDate = new Date();\n headerDate.setMonth(month);\n headerDate.setFullYear(year);\n\n const getHeaderTitle = (view: DateViewOption) => {\n if (view === MONTHS) {\n return 'Month';\n }\n\n if (view === YEARS) {\n return 'Year';\n }\n\n return headerDateFormatter.format(headerDate);\n };\n\n const renderMonthsGrid = () => {\n const today = new Date();\n const todayMonth = today.getMonth();\n const todayYear = today.getFullYear();\n const selectedMonth = selectedDate?.getMonth();\n const selectedYear = selectedDate?.getFullYear();\n\n return (\n <MonthsGrid\n data-testid=\"months-grid\"\n role=\"grid\"\n aria-label=\"Select month\"\n >\n {monthAbbreviations.map((abbr, index) => (\n <GridCell\n key={abbr}\n type=\"button\"\n ref={el => {\n monthGridRef.current[index] = el;\n }}\n $isActive={selectedDate && index === selectedMonth && year === selectedYear}\n $isPresent={index === todayMonth && year === todayYear}\n onClick={() => onMonthSelection(index)}\n onKeyDown={e => onMonthGridKeyDown(e, index)}\n data-testid={`month-cell-${index}`}\n tabIndex={index === focusedMonthIndex ? 0 : -1}\n aria-label={abbr}\n >\n {abbr}\n </GridCell>\n ))}\n </MonthsGrid>\n );\n };\n\n const renderYearsGrid = () => {\n const years: Array<number> = [];\n const baseYear = year + yearOffset;\n const todayYear = new Date().getFullYear();\n const selectedYear = selectedDate?.getFullYear();\n\n for (let i = -yearsOffset; i <= yearsOffset; i++) {\n years.push(baseYear + i);\n }\n\n return (\n <YearsGrid\n data-testid=\"years-grid\"\n role=\"grid\"\n aria-label=\"Select year\"\n >\n {years.map((currYear, index) => (\n <GridCell\n key={currYear}\n type=\"button\"\n ref={el => {\n yearGridRef.current[index] = el;\n }}\n $isActive={selectedDate && currYear === selectedYear}\n $isPresent={currYear === todayYear}\n onClick={() => onYearSelection(currYear)}\n onKeyDown={e => onYearGridKeyDown(e, index, currYear)}\n data-testid={`year-cell-${currYear}`}\n tabIndex={index === focusedYearIndex ? 0 : -1}\n aria-label={String(currYear)}\n >\n {currYear}\n </GridCell>\n ))}\n </YearsGrid>\n );\n };\n\n const renderTableContent = () => {\n if (view === MONTHS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n if (view === YEARS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <>\n <thead>\n <tr>\n {headers.weekDays.map(({ key, value: date }) => {\n return (\n <DateTableHeader key={key}>\n {weekdayFormatter.format(date)}\n </DateTableHeader>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <DatePickerContainer\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n >\n <Container\n isResponsive={false}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n <DateSelectNav\n id=\"calendar-previous-month\"\n icon=\"chevron-left\"\n onClick={onPreviousClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[0] = el;\n } else {\n headerNavRefs.current[0] = null;\n }\n }}\n />\n {view === DAYS && allowYearMonthSelection ? (\n <ClickableTitle\n ref={el => {\n headerNavRefs.current[1] = el as HTMLButtonElement;\n }}\n onClick={onTitleClick}\n onKeyDown={onHeaderNavKeyDown}\n data-testid=\"calendar-title\"\n tabIndex={0}\n >\n {getHeaderTitle(view)}\n </ClickableTitle>\n ) : (\n <UnselectableTitle>{getHeaderTitle(view)}</UnselectableTitle>\n )}\n <DateSelectNav\n id=\"calendar-next-month\"\n icon=\"chevron-right\"\n onClick={onNextClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[2] = el;\n } else {\n headerNavRefs.current[2] = null;\n }\n }}\n />\n </Container>\n <DateTable>{renderTableContent()}</DateTable>\n </DatePickerContainer>\n );\n};\n"],"names":["explicitWidth","viewGridMonths","columns","rows","viewGridYears","totalYears","yearsOffset","Math","floor","HighlightedInputWrapper","styled","InputWrapper","withConfig","componentId","$isActive","$width","theme","click","datePicker","dateOption","stroke","color","active","field","default","formatPartialDate","selectedDate","partialYear","partialMonth","date","Date","headerDateFormatter","format","String","selectedDateFormatter","DatePickerInput","isActive","disabled","id","placeholder","defaultId","useId","formattedSelectedDate","Icon","DateRangePickerInput","selectedEndDate","selectedStartDate","formattedValue","DateTimeRangePickerInput","shouldShowSeconds","dateTimeFormatter","selectedDateTimeFormatterWithSeconds","selectedDateTimeFormatter","replace","DatePickerContainer","Container","background","ClickableTitle","button","radii","title","typography","hover","UnselectableTitle","h2","GridContainer","div","space","gap","MonthsGrid","YearsGrid","GridCell","label","$isPresent","range","DateTable","table","styles","product","text","normal","md","size","height","DateTableHeader","th","daytitle","DateTableCell","td","$isCurrentMonth","$isDisabled","$isSelected","StyledDropdownItem","Dropdown","Item","monthAbbreviations","getMonthNames","PickerNavControl","IconButton","EmptyDateSelectNav","DateSelectNav","icon","onClick","onKeyDown","view","tabIndex","buttonRef","MONTHS","CalendarRenderer","calendarOptions","children","allowYearMonthSelection","onYearSelect","onMonthSelect","props","body","headers","month","navigation","year","useCalendar","defaultWeekStart","setView","useState","DAYS","selectedYear","setSelectedYear","yearOffset","setYearOffset","focusedMonthIndex","setFocusedMonthIndex","focusedYearIndex","setFocusedYearIndex","monthGridRef","useRef","yearGridRef","headerNavRefs","useEffect","YEARS","current","focus","onNextClick","useCallback","prev","toNext","onPreviousClick","toPrev","onTitleClick","onHeaderNavKeyDown","e","validRefs","filter","ref","offsetParent","hasAttribute","getAttribute","currentValidIndex","indexOf","currentTarget","length","key","preventDefault","nextValidIndex","prevValidIndex","onYearSelection","yearValue","onMonthSelection","monthIndex","finalYear","newDate","setDate","onMonthGridKeyDown","index","totalItems","newIndex","onYearGridKeyDown","headerDate","setMonth","setFullYear","getHeaderTitle","renderMonthsGrid","today","todayMonth","getMonth","todayYear","getFullYear","selectedMonth","map","abbr","el","renderYearsGrid","years","baseYear","i","push","currYear","renderTableContent","DAYS_IN_WEEK","weekDays","value","weekdayFormatter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Common.js","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { styled } from 'styled-components';\nimport { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Icon, IconName } from '@/components/Icon';\nimport { Container } from '@/components/Container';\nimport { useCalendar, UseCalendarOptions } from '@h6s/calendar';\nimport { IconButton, IconButtonSize } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport {\n formatDateHeader,\n formatSelectedDate,\n formatSelectedDateTime,\n formatSelectedDateTimeWithSeconds,\n formatWeekday,\n shiftToTimezone,\n Timezone,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\n\nconst explicitWidth = '250px';\n\nconst viewGridMonths = {\n columns: 4,\n rows: 3,\n} as const;\n\nconst viewGridYears = {\n columns: 3,\n rows: 3,\n} as const;\n\nconst totalYears = viewGridYears.columns * viewGridYears.rows;\nconst yearsOffset = Math.floor(totalYears / 2);\n\nconst HighlightedInputWrapper = styled(InputWrapper)<{\n $isActive: boolean;\n $width?: string;\n}>`\n ${({ $isActive, $width, theme }) => {\n return `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isActive\n ? theme.click.datePicker.dateOption.color.stroke.active\n : theme.click.field.color.stroke.default\n };\n width: ${$width ? $width : explicitWidth};\n ${$width && `min-width: ${explicitWidth};`}\n `;\n }}\n}`;\n\ninterface DatePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n partialMonth?: number;\n partialYear?: number;\n placeholder?: string;\n selectedDate?: Date;\n timezone?: Timezone;\n}\n\nconst formatPartialDate = (\n timezone: Timezone,\n selectedDate?: Date,\n partialYear?: number,\n partialMonth?: number\n): string => {\n if (typeof partialYear === 'number' && typeof partialMonth === 'number') {\n const date =\n timezone === 'UTC'\n ? new Date(Date.UTC(partialYear, partialMonth, 1))\n : new Date(partialYear, partialMonth, 1);\n return formatDateHeader(timezone, date);\n }\n\n if (typeof partialYear === 'number') {\n return String(partialYear);\n }\n\n if (selectedDate instanceof Date) {\n return formatSelectedDate(timezone, selectedDate);\n }\n\n return '';\n};\n\nexport const DatePickerInput = ({\n isActive,\n disabled,\n id,\n partialMonth,\n partialYear,\n placeholder,\n selectedDate,\n timezone = 'system',\n}: DatePickerInputProps) => {\n const defaultId = useId();\n const formattedSelectedDate = formatPartialDate(\n timezone,\n selectedDate,\n partialYear,\n partialMonth\n );\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n data-testid=\"datepicker-input\"\n placeholder={placeholder}\n readOnly\n value={formattedSelectedDate}\n />\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n timezone?: Timezone;\n}\n\nexport const DateRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n timezone = 'system',\n}: DateRangePickerInputProps) => {\n const defaultId = useId();\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {formatSelectedDate(timezone, selectedStartDate)} –{' '}\n {formatSelectedDate(timezone, selectedEndDate)}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {formatSelectedDate(timezone, selectedStartDate)}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"daterangepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\ninterface DateTimeRangePickerInputProps {\n isActive: boolean;\n disabled: boolean;\n id?: string;\n placeholder?: string;\n selectedEndDate?: Date;\n selectedStartDate?: Date;\n shouldShowSeconds?: boolean;\n timezone?: Timezone;\n}\n\nexport const DateTimeRangePickerInput = ({\n isActive,\n disabled,\n id,\n placeholder,\n selectedEndDate,\n selectedStartDate,\n shouldShowSeconds,\n timezone = 'system',\n}: DateTimeRangePickerInputProps) => {\n const defaultId = useId();\n\n const formatDateTime = useCallback(\n (date: Date) => {\n if (shouldShowSeconds) {\n return formatSelectedDateTimeWithSeconds(timezone, date);\n }\n\n return formatSelectedDateTime(timezone, date);\n },\n [shouldShowSeconds, timezone]\n );\n\n let formattedValue = (\n <Text\n color=\"muted\"\n component=\"span\"\n >\n {placeholder ?? ''}\n </Text>\n );\n\n if (selectedStartDate) {\n if (selectedEndDate) {\n formattedValue = (\n <span>\n {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')} –{' '}\n {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n </span>\n );\n } else {\n formattedValue = (\n <span>\n {formatDateTime(selectedStartDate).replace('AM', 'am').replace('PM', 'pm')}{' '}\n <Text\n color=\"muted\"\n component=\"span\"\n >\n – end date\n </Text>\n </span>\n );\n }\n } else if (selectedEndDate) {\n formattedValue = (\n <span>\n <Text\n color=\"muted\"\n component=\"span\"\n >\n start date –{' '}\n </Text>\n {formatDateTime(selectedEndDate).replace('AM', 'am').replace('PM', 'pm')}\n </span>\n );\n }\n\n return (\n <HighlightedInputWrapper\n $isActive={isActive}\n disabled={disabled}\n id={id ?? defaultId}\n $width=\"max-content\"\n >\n <InputStartContent>\n <Icon name=\"calendar\" />\n </InputStartContent>\n <InputElement\n $hasStartContent\n as=\"div\"\n data-testid=\"datetimepicker-input\"\n >\n {formattedValue}\n </InputElement>\n </HighlightedInputWrapper>\n );\n};\n\nconst DatePickerContainer = styled(Container)`\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.default};\n`;\n\nconst ClickableTitle = styled.button`\n background: transparent;\n border: 1px solid transparent;\n cursor: pointer;\n outline: none;\n padding: 0.25rem 0.5rem;\n user-select: none;\n\n ${({ theme }) => `\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `};\n\n &:hover {\n background: ${({ theme }) =>\n theme.click.datePicker.dateOption.color.background.hover};\n }\n\n &:focus,\n &:focus-visible {\n border-color: ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n`;\n\nconst UnselectableTitle = styled.h2`\n margin: 0;\n padding: 0;\n user-select: none;\n\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.title.default};\n font: ${theme.click.datePicker.typography.title.default};\n `}\n`;\n\nconst GridContainer = styled.div`\n display: grid;\n padding: 0.25rem 0 0;\n\n ${({ theme }) => `\n gap: calc(${theme.click.datePicker.space.gap} * 2);\n `}\n`;\n\nconst MonthsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${viewGridMonths.columns}, 1fr);\n grid-template-rows: repeat(${viewGridMonths.rows}, 1fr);\n`;\n\nconst YearsGrid = styled(GridContainer)`\n grid-template-columns: repeat(${viewGridYears.columns}, 1fr);\n grid-template-rows: repeat(${viewGridYears.rows}, 1fr);\n`;\n\nconst GridCell = styled.button<{ $isActive?: boolean; $isPresent?: boolean }>`\n align-items: center;\n cursor: pointer;\n display: flex;\n justify-content: center;\n min-height: 26px;\n padding: 8px 4px;\n text-align: center;\n\n ${({ theme }) => `\n background: ${theme.click.datePicker.dateOption.color.background.default};\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n color: ${theme.click.datePicker.dateOption.color.label.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isActive, theme }) =>\n $isActive &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active};\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isActive, $isPresent, theme }) =>\n $isPresent &&\n !$isActive &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n ${({ theme }) => `\n &:hover {\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n\n &:focus-visible {\n outline: none;\n border-color: ${theme.click.datePicker.dateOption.color.stroke.hover};\n }\n `}\n`;\n\nconst DateTable = styled.table`\n border-collapse: separate;\n border-spacing: 0;\n font: ${({ theme }) => theme.typography.styles.product.text.normal.md};\n table-layout: fixed;\n user-select: none;\n width: ${explicitWidth};\n\n thead tr {\n height: ${({ theme }) => theme.click.datePicker.dateOption.size.height};\n }\n\n tbody {\n cursor: pointer;\n }\n\n td,\n th {\n padding: 4px;\n }\n`;\n\nconst DateTableHeader = styled.th`\n ${({ theme }) => `\n color: ${theme.click.datePicker.color.daytitle.default};\n font: ${theme.click.datePicker.typography.daytitle.default};\n `}\n\n width: 14%;\n`;\n\nexport const DateTableCell = styled.td<{\n $isCurrentMonth?: boolean;\n $isDisabled?: boolean;\n $isSelected?: boolean;\n $isPresent?: boolean;\n}>`\n ${({ theme }) => `\n border: ${theme.click.datePicker.dateOption.stroke} solid ${theme.click.datePicker.dateOption.color.stroke.default};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};\n font: ${theme.click.datePicker.dateOption.typography.label.default};\n `}\n\n ${({ $isCurrentMonth, $isDisabled, theme }) =>\n (!$isCurrentMonth || $isDisabled) &&\n `\n color: ${theme.click.datePicker.dateOption.color.label.disabled};\n font: ${theme.click.datePicker.dateOption.typography.label.disabled};\n `}\n\n ${({ $isSelected, theme }) =>\n $isSelected &&\n `\n background: ${theme.click.datePicker.dateOption.color.background.active} !important;\n color: ${theme.click.datePicker.dateOption.color.label.active};\n `}\n\n ${({ $isSelected, $isPresent, theme }) =>\n $isPresent &&\n !$isSelected &&\n `background: ${theme.click.datePicker.dateOption.color.background.range};`}\n\n text-align: center;\n outline: none;\n\n &:hover {\n ${({ $isDisabled, $isPresent, theme }) =>\n `border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };\n background: ${$isPresent ? theme.click.datePicker.dateOption.color.background.range : ''};\n border-radius: ${theme.click.datePicker.dateOption.radii.default};`};\n }\n\n &:focus {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n\n &:focus-visible {\n ${({ $isDisabled, theme }) =>\n `outline: none;\n border: ${theme.click.datePicker.dateOption.stroke} solid ${\n $isDisabled\n ? theme.click.datePicker.dateOption.color.stroke.disabled\n : theme.click.datePicker.dateOption.color.stroke.hover\n };`};\n }\n`;\n\nexport const StyledDropdownItem = styled(Dropdown.Item)`\n box-sizing: content-box;\n min-height: 24px;\n`;\n\nexport type Body = ReturnType<typeof useCalendar>['body'];\n\ninterface CalendarRendererProps {\n calendarOptions?: UseCalendarOptions;\n children: (body: Body) => ReactNode;\n allowYearMonthSelection?: boolean;\n onYearSelect?: (year: number) => void;\n onMonthSelect?: (year: number, month: number) => void;\n selectedDate?: Date;\n timezone?: Timezone;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = styled(IconButton)`\n && {\n &:focus,\n &:focus-visible {\n outline: none;\n border: ${({ theme }) => theme.click.datePicker.dateOption.stroke} solid\n ${({ theme }) => theme.click.datePicker.dateOption.color.stroke.hover};\n }\n }\n`;\n\nconst EmptyDateSelectNav = styled(PickerNavControl)`\n visibility: hidden;\n pointer-events: none;\n`;\n\nconst DateSelectNav = ({\n id,\n icon,\n onClick,\n onKeyDown,\n view,\n size = 'sm',\n tabIndex,\n buttonRef,\n}: {\n id: string;\n icon: Extract<IconName, 'chevron-left' | 'chevron-right'>;\n onClick: () => void;\n onKeyDown?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n view: DateViewOption;\n size?: IconButtonSize;\n tabIndex?: number;\n buttonRef?: (el: HTMLButtonElement | null) => void;\n}) => {\n if (view === MONTHS) {\n return (\n <EmptyDateSelectNav\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n />\n );\n }\n return (\n <PickerNavControl\n ref={buttonRef}\n data-testid={id}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type=\"ghost\"\n tabIndex={tabIndex}\n />\n );\n};\n\nexport const CalendarRenderer = ({\n calendarOptions = {},\n children,\n allowYearMonthSelection = true,\n onYearSelect,\n onMonthSelect,\n selectedDate,\n timezone = 'system',\n ...props\n}: CalendarRendererProps) => {\n // useCalendar reads dates as local; shiftToTimezone is a no-op in local mode.\n const shiftedCalendarOptions: UseCalendarOptions =\n calendarOptions.defaultDate instanceof Date\n ? {\n ...calendarOptions,\n defaultDate: shiftToTimezone(calendarOptions.defaultDate, timezone),\n }\n : calendarOptions;\n const { body, headers, month, navigation, year } = useCalendar({\n defaultWeekStart: 1,\n ...shiftedCalendarOptions,\n });\n\n const [view, setView] = useState<DateViewOption>(DAYS);\n const [selectedYear, setSelectedYear] = useState<number | null>(null);\n const [yearOffset, setYearOffset] = useState(0);\n const [focusedMonthIndex, setFocusedMonthIndex] = useState(month);\n const [focusedYearIndex, setFocusedYearIndex] = useState(yearsOffset);\n\n const monthGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const yearGridRef = useRef<Array<HTMLButtonElement | null>>([]);\n const headerNavRefs = useRef<Array<HTMLButtonElement | null>>([null, null, null]);\n\n useEffect(() => {\n if (view === YEARS) {\n yearGridRef.current[focusedYearIndex]?.focus();\n } else if (view === MONTHS) {\n monthGridRef.current[focusedMonthIndex]?.focus();\n }\n }, [view, focusedYearIndex, focusedMonthIndex]);\n\n const onNextClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev + totalYears);\n } else {\n navigation.toNext();\n }\n }, [navigation, view]);\n\n const onPreviousClick = useCallback(() => {\n if (view === YEARS) {\n setYearOffset(prev => prev - totalYears);\n return;\n }\n\n navigation.toPrev();\n }, [navigation, view]);\n\n const onTitleClick = useCallback(() => {\n if (view !== DAYS) {\n return;\n }\n\n setView(YEARS);\n }, [view]);\n\n const onHeaderNavKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n const validRefs = headerNavRefs.current.filter(ref => {\n if (!ref) {\n return false;\n }\n return (\n ref.offsetParent !== null ||\n (!ref.hasAttribute('hidden') && ref.getAttribute('aria-hidden') !== 'true')\n );\n });\n\n const currentValidIndex = validRefs.indexOf(e.currentTarget);\n if (currentValidIndex === -1 || validRefs.length <= 1) {\n return;\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n const nextValidIndex = (currentValidIndex + 1) % validRefs.length;\n validRefs[nextValidIndex]?.focus();\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prevValidIndex =\n (currentValidIndex - 1 + validRefs.length) % validRefs.length;\n validRefs[prevValidIndex]?.focus();\n }\n }, []);\n\n const onYearSelection = useCallback(\n (yearValue: number) => {\n setSelectedYear(yearValue);\n setView(MONTHS);\n onYearSelect?.(yearValue);\n },\n [onYearSelect]\n );\n\n const onMonthSelection = useCallback(\n (monthIndex: number) => {\n const finalYear = typeof selectedYear === 'number' ? selectedYear : year;\n const newDate = new Date(finalYear, monthIndex, 1);\n\n navigation.setDate(newDate);\n onMonthSelect?.(finalYear, monthIndex);\n\n setView(DAYS);\n setSelectedYear(null);\n setYearOffset(0);\n },\n [selectedYear, year, navigation, onMonthSelect]\n );\n\n const onMonthGridKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const columns = viewGridMonths.columns;\n const totalItems = 12;\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n onMonthSelection(index);\n return;\n default:\n return;\n }\n\n setFocusedMonthIndex(newIndex);\n monthGridRef.current[newIndex]?.focus();\n },\n [onMonthSelection]\n );\n\n const onYearGridKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>, index: number, yearValue: number) => {\n const columns = viewGridYears.columns;\n const totalItems = totalYears;\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalItems;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalItems) % totalItems;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + columns) % totalItems;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - columns + totalItems) % totalItems;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n onYearSelection(yearValue);\n return;\n default:\n return;\n }\n\n setFocusedYearIndex(newIndex);\n yearGridRef.current[newIndex]?.focus();\n },\n [onYearSelection]\n );\n\n const headerDate = new Date();\n headerDate.setMonth(month);\n headerDate.setFullYear(year);\n\n const getHeaderTitle = (view: DateViewOption) => {\n if (view === MONTHS) {\n return 'Month';\n }\n\n if (view === YEARS) {\n return 'Year';\n }\n\n // headerDate already has the right month/year in its local fields.\n return formatDateHeader('system', headerDate);\n };\n\n const renderMonthsGrid = () => {\n const today = shiftToTimezone(new Date(), timezone);\n const thisMonth = today.getMonth();\n const thisYear = today.getFullYear();\n const shiftedSelected = selectedDate\n ? shiftToTimezone(selectedDate, timezone)\n : undefined;\n const selectedMonth = shiftedSelected?.getMonth();\n const selectedYear = shiftedSelected?.getFullYear();\n\n return (\n <MonthsGrid\n data-testid=\"months-grid\"\n role=\"grid\"\n aria-label=\"Select month\"\n >\n {monthAbbreviations.map((month, index) => {\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onMonthGridKeyDown(event, index);\n };\n\n const handleClick = () => {\n onMonthSelection(index);\n };\n\n const ref = (element: HTMLButtonElement) => {\n monthGridRef.current[index] = element;\n };\n\n return (\n <GridCell\n key={month}\n type=\"button\"\n ref={ref}\n $isActive={selectedDate && index === selectedMonth && year === selectedYear}\n $isPresent={index === thisMonth && year === thisYear}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-testid={`month-cell-${index}`}\n tabIndex={index === focusedMonthIndex ? 0 : -1}\n aria-label={month}\n >\n {month}\n </GridCell>\n );\n })}\n </MonthsGrid>\n );\n };\n\n const renderYearsGrid = () => {\n const years: Array<number> = [];\n const baseYear = year + yearOffset;\n const thisYear = shiftToTimezone(new Date(), timezone).getFullYear();\n const selectedYear = selectedDate\n ? shiftToTimezone(selectedDate, timezone).getFullYear()\n : undefined;\n\n for (let i = -yearsOffset; i <= yearsOffset; i++) {\n years.push(baseYear + i);\n }\n\n return (\n <YearsGrid\n data-testid=\"years-grid\"\n role=\"grid\"\n aria-label=\"Select year\"\n >\n {years.map((currentYear, index) => {\n const ref = (element: HTMLButtonElement) => {\n yearGridRef.current[index] = element;\n };\n\n const handleClick = () => {\n onYearSelection(currentYear);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onYearGridKeyDown(event, index, currentYear);\n };\n\n return (\n <GridCell\n key={currentYear}\n type=\"button\"\n ref={ref}\n $isActive={selectedDate && currentYear === selectedYear}\n $isPresent={currentYear === thisYear}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-testid={`year-cell-${currentYear}`}\n tabIndex={index === focusedYearIndex ? 0 : -1}\n aria-label={String(currentYear)}\n >\n {currentYear}\n </GridCell>\n );\n })}\n </YearsGrid>\n );\n };\n\n const renderTableContent = () => {\n if (view === MONTHS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderMonthsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n if (view === YEARS) {\n return (\n <tbody>\n <tr>\n <td colSpan={DAYS_IN_WEEK}>{renderYearsGrid()}</td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <>\n <thead>\n <tr>\n {headers.weekDays.map(({ key, value: date }) => {\n return (\n <DateTableHeader key={key}>\n {formatWeekday('system', date)}\n </DateTableHeader>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <DatePickerContainer\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n >\n <Container\n isResponsive={false}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n <DateSelectNav\n id=\"calendar-previous-month\"\n icon=\"chevron-left\"\n onClick={onPreviousClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[0] = el;\n } else {\n headerNavRefs.current[0] = null;\n }\n }}\n />\n {view === DAYS && allowYearMonthSelection ? (\n <ClickableTitle\n ref={el => {\n headerNavRefs.current[1] = el as HTMLButtonElement;\n }}\n onClick={onTitleClick}\n onKeyDown={onHeaderNavKeyDown}\n data-testid=\"calendar-title\"\n tabIndex={0}\n >\n {getHeaderTitle(view)}\n </ClickableTitle>\n ) : (\n <UnselectableTitle>{getHeaderTitle(view)}</UnselectableTitle>\n )}\n <DateSelectNav\n id=\"calendar-next-month\"\n icon=\"chevron-right\"\n onClick={onNextClick}\n onKeyDown={onHeaderNavKeyDown}\n view={view}\n tabIndex={view === MONTHS ? -1 : 0}\n buttonRef={el => {\n if (view !== MONTHS) {\n headerNavRefs.current[2] = el;\n } else {\n headerNavRefs.current[2] = null;\n }\n }}\n />\n </Container>\n <DateTable>{renderTableContent()}</DateTable>\n </DatePickerContainer>\n );\n};\n"],"names":["explicitWidth","viewGridMonths","columns","rows","viewGridYears","totalYears","yearsOffset","Math","floor","HighlightedInputWrapper","styled","InputWrapper","withConfig","componentId","$isActive","$width","theme","click","datePicker","dateOption","stroke","color","active","field","default","formatPartialDate","timezone","selectedDate","partialYear","partialMonth","date","Date","UTC","formatDateHeader","String","formatSelectedDate","DatePickerInput","isActive","disabled","id","placeholder","defaultId","useId","formattedSelectedDate","Icon","DateRangePickerInput","selectedEndDate","selectedStartDate","formattedValue","DateTimeRangePickerInput","shouldShowSeconds","formatDateTime","useCallback","formatSelectedDateTimeWithSeconds","formatSelectedDateTime","replace","DatePickerContainer","Container","background","ClickableTitle","button","radii","title","typography","hover","UnselectableTitle","h2","GridContainer","div","space","gap","MonthsGrid","YearsGrid","GridCell","label","$isPresent","range","DateTable","table","styles","product","text","normal","md","size","height","DateTableHeader","th","daytitle","DateTableCell","td","$isCurrentMonth","$isDisabled","$isSelected","StyledDropdownItem","Dropdown","Item","monthAbbreviations","getMonthNames","PickerNavControl","IconButton","EmptyDateSelectNav","DateSelectNav","icon","onClick","onKeyDown","view","tabIndex","buttonRef","MONTHS","CalendarRenderer","calendarOptions","children","allowYearMonthSelection","onYearSelect","onMonthSelect","props","shiftedCalendarOptions","defaultDate","shiftToTimezone","body","headers","month","navigation","year","useCalendar","defaultWeekStart","setView","useState","DAYS","selectedYear","setSelectedYear","yearOffset","setYearOffset","focusedMonthIndex","setFocusedMonthIndex","focusedYearIndex","setFocusedYearIndex","monthGridRef","useRef","yearGridRef","headerNavRefs","useEffect","YEARS","current","focus","onNextClick","prev","toNext","onPreviousClick","toPrev","onTitleClick","onHeaderNavKeyDown","e","validRefs","filter","ref","offsetParent","hasAttribute","getAttribute","currentValidIndex","indexOf","currentTarget","length","key","preventDefault","nextValidIndex","prevValidIndex","onYearSelection","yearValue","onMonthSelection","monthIndex","finalYear","newDate","setDate","onMonthGridKeyDown","event","index","totalItems","newIndex","onYearGridKeyDown","headerDate","setMonth","setFullYear","getHeaderTitle","renderMonthsGrid","today","thisMonth","getMonth","thisYear","getFullYear","shiftedSelected","undefined","selectedMonth","map","handleKeyDown","handleClick","element","renderYearsGrid","years","baseYear","i","push","currentYear","renderTableContent","DAYS_IN_WEEK","weekDays","value","formatWeekday","el"],"mappings":"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"}
|