@clickhouse/click-ui 0.10.0-rc1 → 0.10.0-rc2

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 (34) hide show
  1. package/dist/cjs/click-ui.css +6 -0
  2. package/dist/cjs/components/DatePicker/Common.cjs +1 -1
  3. package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
  4. package/dist/cjs/components/DatePicker/DateRangePicker.cjs +1 -1
  5. package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
  6. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +12 -8
  7. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
  8. package/dist/cjs/components/DatePicker/utils.cjs +22 -6
  9. package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
  10. package/dist/cjs/components/GenericMenu/GenericMenu.css +2 -0
  11. package/dist/cjs/components/Select/common/InternalSelect.cjs +147 -193
  12. package/dist/cjs/components/Select/common/InternalSelect.cjs.map +1 -1
  13. package/dist/cjs/components/Select/common/SelectComponents.css +4 -0
  14. package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs +1 -0
  15. package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs.map +1 -1
  16. package/dist/esm/click-ui.css +6 -0
  17. package/dist/esm/components/DatePicker/Common.js +2 -2
  18. package/dist/esm/components/DatePicker/Common.js.map +1 -1
  19. package/dist/esm/components/DatePicker/DateRangePicker.js +2 -2
  20. package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
  21. package/dist/esm/components/DatePicker/DateTimeRangePicker.js +13 -9
  22. package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
  23. package/dist/esm/components/DatePicker/utils.js +20 -5
  24. package/dist/esm/components/DatePicker/utils.js.map +1 -1
  25. package/dist/esm/components/GenericMenu/GenericMenu.css +2 -0
  26. package/dist/esm/components/Select/common/InternalSelect.js +148 -194
  27. package/dist/esm/components/Select/common/InternalSelect.js.map +1 -1
  28. package/dist/esm/components/Select/common/SelectComponents.css +4 -0
  29. package/dist/esm/components/Select/common/SelectComponents.module.css.js +1 -0
  30. package/dist/esm/components/Select/common/SelectComponents.module.css.js.map +1 -1
  31. package/dist/types/components/DatePicker/utils.d.ts +3 -2
  32. package/dist/types/components/Select/common/index.d.ts +1 -1
  33. package/dist/types/components/Select/common/types.d.ts +0 -6
  34. package/package.json +1 -1
@@ -1109,6 +1109,8 @@
1109
1109
  .generic-menu-panel_type_dropdown-menu__ezKZT {
1110
1110
  max-width: var(--radix-dropdown-menu-content-available-width);
1111
1111
  max-height: var(--radix-dropdown-menu-content-available-height);
1112
+ /* Kept in this file (not Dropdown.module.css) so it can't lose to `overflow: hidden` above due to cross-file import order. */
1113
+ overflow-y: auto;
1112
1114
  }
1113
1115
 
1114
1116
  .generic-menu-panel_type_context-menu__nu-Kt {
@@ -6519,6 +6521,10 @@ div:active + .topbadge__E79OZ {
6519
6521
  display: none;
6520
6522
  }
6521
6523
 
6524
+ .select-item__BAnRr[hidden] {
6525
+ display: none;
6526
+ }
6527
+
6522
6528
  .select-group-name__TrAy3 {
6523
6529
  display: flex;
6524
6530
  width: 100%;
@@ -247,7 +247,7 @@ const DateTimeRangePickerInput = ({
247
247
  formatDateTime(selectedEndDate).replace("AM", "am").replace("PM", "pm")
248
248
  ] });
249
249
  }
250
- const startDateIsAfterEndDate = selectedStartDate && selectedEndDate && !utils.dateRangeIsValid({
250
+ const startDateIsAfterEndDate = selectedStartDate && selectedEndDate && !utils.isDateRangeValid({
251
251
  startDate: selectedStartDate,
252
252
  endDate: selectedEndDate
253
253
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Common.cjs","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\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 { cn, cva } from '@/lib/cva';\nimport styles from './Common.module.css';\nimport {\n dateRangeIsValid,\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 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 highlightedInputWrapperVariants = cva(styles['highlighted-input-wrapper'], {\n variants: {\n fillWidth: { true: styles['highlighted-input-wrapper_fill-width'] },\n active: { true: styles['highlighted-input-wrapper_active'] },\n },\n});\n\nconst dateTableCellVariants = cva(styles['date-table-cell'], {\n variants: {\n muted: { true: styles['date-table-cell_muted'] },\n disabled: { true: styles['date-table-cell_disabled'] },\n selected: { true: styles['date-table-cell_selected'] },\n present: { true: styles['date-table-cell_present'] },\n },\n});\n\nconst gridCellVariants = cva(styles['grid-cell'], {\n variants: {\n active: { true: styles['grid-cell_active'] },\n present: { true: styles['grid-cell_present'] },\n },\n});\n\ninterface HighlightedInputWrapperProps extends Omit<\n ComponentProps<typeof InputWrapper>,\n 'error'\n> {\n isActive: boolean;\n error?: boolean;\n fillWidth?: boolean;\n}\n\n// The resting default border and the error border are identical to what the\n// InputWrapper base / `.wrapper_error` already render, so only the width and the\n// active border are overridden here (see Common.module.css).\nconst HighlightedInputWrapper = ({\n isActive,\n error,\n fillWidth,\n disabled,\n id,\n children,\n className,\n}: HighlightedInputWrapperProps) => (\n <InputWrapper\n error={error}\n disabled={disabled}\n id={id}\n className={cn(\n highlightedInputWrapperVariants({ fillWidth, active: isActive && !error }),\n className\n )}\n >\n {children}\n </InputWrapper>\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 const startDateIsAfterEndDate =\n selectedStartDate &&\n selectedEndDate &&\n !dateRangeIsValid({\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n });\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n fillWidth\n disabled={disabled}\n error={startDateIsAfterEndDate}\n id={id ?? defaultId}\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\ninterface DateTableCellProps extends HTMLAttributes<HTMLTableCellElement> {\n isCurrentMonth?: boolean;\n isDisabled?: boolean;\n isSelected?: boolean;\n isPresent?: boolean;\n}\n\nexport const DateTableCell = forwardRef<HTMLTableCellElement, DateTableCellProps>(\n (\n {\n isCurrentMonth,\n isDisabled,\n isSelected,\n isPresent,\n className,\n children,\n onClick,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n },\n ref\n ) => (\n <td\n ref={ref}\n className={cn(\n dateTableCellVariants({\n muted: !isCurrentMonth || isDisabled,\n disabled: isDisabled,\n selected: isSelected,\n present: isPresent && !isSelected,\n }),\n className\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n role={role}\n tabIndex={tabIndex}\n aria-label={ariaLabel}\n >\n {children}\n </td>\n )\n);\nDateTableCell.displayName = 'DateTableCell';\n\nexport const StyledDropdownItem = ({\n className,\n children,\n onClick,\n 'data-testid': dataTestId,\n}: ComponentProps<typeof Dropdown.Item> & { 'data-testid'?: string }) => (\n <Dropdown.Item\n onClick={onClick}\n data-testid={dataTestId}\n className={cn(styles['styled-dropdown-item'], className)}\n >\n {children}\n </Dropdown.Item>\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 className?: string;\n 'data-testid'?: string;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n {\n className,\n icon,\n onClick,\n onKeyDown,\n size,\n type,\n tabIndex,\n 'data-testid': dataTestId,\n },\n ref\n ) => (\n <IconButton\n ref={ref}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['picker-nav-control'], className)}\n />\n )\n);\nPickerNavControl.displayName = 'PickerNavControl';\n\nconst EmptyDateSelectNav = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n { className, icon, onKeyDown, size, type, tabIndex, 'data-testid': dataTestId },\n ref\n ) => (\n <PickerNavControl\n ref={ref}\n icon={icon}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['empty-date-select-nav'], className)}\n />\n )\n);\nEmptyDateSelectNav.displayName = 'EmptyDateSelectNav';\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 className,\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 <div\n className={cn(styles['grid-container'], styles['months-grid'])}\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 const isActive = Boolean(\n selectedDate && index === selectedMonth && year === selectedYear\n );\n const isPresent = index === thisMonth && year === thisYear;\n\n return (\n <button\n key={month}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\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 </button>\n );\n })}\n </div>\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 <div\n className={cn(styles['grid-container'], styles['years-grid'])}\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 const isActive = Boolean(selectedDate && currentYear === selectedYear);\n const isPresent = currentYear === thisYear;\n\n return (\n <button\n key={currentYear}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\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 </button>\n );\n })}\n </div>\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 <th\n key={key}\n className={styles['date-table-header']}\n >\n {formatWeekday('system', date)}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <Container\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n className={cn(styles['date-picker-container'], className)}\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 <button\n type=\"button\"\n className={styles['clickable-title']}\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 </button>\n ) : (\n <h2 className={styles['unselectable-title']}>{getHeaderTitle(view)}</h2>\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 <table className={styles['date-table']}>{renderTableContent()}</table>\n </Container>\n );\n};\n"],"names":["cva","styles","jsx","InputWrapper","cn","formatDateHeader","formatSelectedDate","useId","jsxs","InputStartContent","Icon","InputElement","Text","useCallback","formatSelectedDateTimeWithSeconds","formatSelectedDateTime","dateRangeIsValid","forwardRef","Dropdown","getMonthNames","IconButton","MONTHS","shiftToTimezone","useCalendar","useState","DAYS","useRef","useEffect","YEARS","view","selectedYear","month","DAYS_IN_WEEK","Fragment","formatWeekday","Container"],"mappings":";;;;;;;;;;;;;;;;;;;AAiCA,MAAM,cAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,CAEX,CAAA;AAEA,MAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS,CAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,MAAM,UAAA,GAAa,aAAA,CAAc,OAAA,GAAU,aAAA,CAAc,IAAA;AACzD,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA;AAE7C,MAAM,+BAAA,GAAkCA,0BAAA,CAAIC,qBAAA,CAAO,2BAA2B,CAAA,EAAG;AAAA,EAC/E,QAAA,EAAU;AAAA,IACR,SAAA,EAAW,EAAE,IAAA,EAAMA,qBAAA,CAAO,sCAAsC,CAAA,EAAE;AAAA,IAClE,MAAA,EAAQ,EAAE,IAAA,EAAMA,qBAAA,CAAO,kCAAkC,CAAA;AAAE;AAE/D,CAAC,CAAA;AAED,MAAM,qBAAA,GAAwBD,0BAAA,CAAIC,qBAAA,CAAO,iBAAiB,CAAA,EAAG;AAAA,EAC3D,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,EAAE,IAAA,EAAMA,qBAAA,CAAO,uBAAuB,CAAA,EAAE;AAAA,IAC/C,QAAA,EAAU,EAAE,IAAA,EAAMA,qBAAA,CAAO,0BAA0B,CAAA,EAAE;AAAA,IACrD,QAAA,EAAU,EAAE,IAAA,EAAMA,qBAAA,CAAO,0BAA0B,CAAA,EAAE;AAAA,IACrD,OAAA,EAAS,EAAE,IAAA,EAAMA,qBAAA,CAAO,yBAAyB,CAAA;AAAE;AAEvD,CAAC,CAAA;AAED,MAAM,gBAAA,GAAmBD,0BAAA,CAAIC,qBAAA,CAAO,WAAW,CAAA,EAAG;AAAA,EAChD,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ,EAAE,IAAA,EAAMA,qBAAA,CAAO,kBAAkB,CAAA,EAAE;AAAA,IAC3C,OAAA,EAAS,EAAE,IAAA,EAAMA,qBAAA,CAAO,mBAAmB,CAAA;AAAE;AAEjD,CAAC,CAAA;AAcD,MAAM,0BAA0B,CAAC;AAAA,EAC/B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,qBACEC,cAAA;AAAA,EAACC,yBAAA;AAAA,EAAA;AAAA,IACC,KAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA;AAAA,IACA,SAAA,EAAWC,MAAA;AAAA,MACT,gCAAgC,EAAE,SAAA,EAAW,QAAQ,QAAA,IAAY,CAAC,OAAO,CAAA;AAAA,MACzE;AAAA,KACF;AAAA,IAEC;AAAA;AACH,CAAA;AAcF,MAAM,iBAAA,GAAoB,CACxB,QAAA,EACA,YAAA,EACA,aACA,YAAA,KACW;AACX,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,OAAO,iBAAiB,QAAA,EAAU;AACvE,IAAA,MAAM,OACJ,QAAA,KAAa,KAAA,GACT,IAAI,IAAA,CAAK,KAAK,GAAA,CAAI,WAAA,EAAa,YAAA,EAAc,CAAC,CAAC,CAAA,GAC/C,IAAI,IAAA,CAAK,WAAA,EAAa,cAAc,CAAC,CAAA;AAC3C,IAAA,OAAOC,sBAAA,CAAiB,UAAU,IAAI,CAAA;AAAA,EACxC;AAEA,EAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACnC,IAAA,OAAO,OAAO,WAAW,CAAA;AAAA,EAC3B;AAEA,EAAA,IAAI,wBAAwB,IAAA,EAAM;AAChC,IAAA,OAAOC,wBAAA,CAAmB,UAAU,YAAY,CAAA;AAAA,EAClD;AAEA,EAAA,OAAO,EAAA;AACT,CAAA;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAA4B;AAC1B,EAAA,MAAM,YAAYC,WAAA,EAAM;AACxB,EAAA,MAAM,qBAAA,GAAwB,iBAAA;AAAA,IAC5B,QAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACEC,eAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAI,EAAA,IAAM,SAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAN,cAAA,CAACO,8BAAA,EAAA,EACC,QAAA,kBAAAP,cAAA,CAACQ,SAAA,EAAA,EAAK,IAAA,EAAK,YAAW,CAAA,EACxB,CAAA;AAAA,wBACAR,cAAA;AAAA,UAACS,yBAAA;AAAA,UAAA;AAAA,YACC,gBAAA,EAAgB,IAAA;AAAA,YAChB,aAAA,EAAY,kBAAA;AAAA,YACZ,WAAA;AAAA,YACA,QAAA,EAAQ,IAAA;AAAA,YACR,KAAA,EAAO;AAAA;AAAA;AACT;AAAA;AAAA,GACF;AAEJ;AAYO,MAAM,uBAAuB,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAiC;AAC/B,EAAA,MAAM,YAAYJ,WAAA,EAAM;AAExB,EAAA,IAAI,cAAA,mBACFL,cAAA;AAAA,IAACU,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAU,MAAA;AAAA,MAET,QAAA,EAAA,WAAA,IAAe;AAAA;AAAA,GAClB;AAEF,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,cAAA,mCACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAAN,wBAAA,CAAmB,UAAU,iBAAiB,CAAA;AAAA,QAAE,IAAA;AAAA,QAAG,GAAA;AAAA,QACnDA,wBAAA,CAAmB,UAAU,eAAe;AAAA,OAAA,EAC/C,CAAA;AAAA,IAEJ,CAAA,MAAO;AACL,MAAA,cAAA,mCACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAAA,wBAAA,CAAmB,UAAU,iBAAiB,CAAA;AAAA,QAAG,GAAA;AAAA,wBAClDJ,cAAA;AAAA,UAACU,SAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,SAAA,EAAU,MAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF;AAEA,EAAA,uBACEJ,eAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAI,EAAA,IAAM,SAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAN,cAAA,CAACO,8BAAA,EAAA,EACC,QAAA,kBAAAP,cAAA,CAACQ,SAAA,EAAA,EAAK,IAAA,EAAK,YAAW,CAAA,EACxB,CAAA;AAAA,wBACAR,cAAA;AAAA,UAACS,yBAAA;AAAA,UAAA;AAAA,YACC,gBAAA,EAAgB,IAAA;AAAA,YAChB,EAAA,EAAG,KAAA;AAAA,YACH,aAAA,EAAY,uBAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AAaO,MAAM,2BAA2B,CAAC;AAAA,EACvC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAqC;AACnC,EAAA,MAAM,YAAYJ,WAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiBM,iBAAA;AAAA,IACrB,CAAC,IAAA,KAAe;AACd,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,OAAOC,uCAAA,CAAkC,UAAU,IAAI,CAAA;AAAA,MACzD;AAEA,MAAA,OAAOC,4BAAA,CAAuB,UAAU,IAAI,CAAA;AAAA,IAC9C,CAAA;AAAA,IACA,CAAC,mBAAmB,QAAQ;AAAA,GAC9B;AAEA,EAAA,IAAI,cAAA,mBACFb,cAAA;AAAA,IAACU,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAU,MAAA;AAAA,MAET,QAAA,EAAA,WAAA,IAAe;AAAA;AAAA,GAClB;AAGF,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,cAAA,mCACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,cAAA,CAAe,iBAAiB,EAAE,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,QAAE,IAAA;AAAA,QAAG,GAAA;AAAA,QAC7E,cAAA,CAAe,eAAe,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,IAAI;AAAA,OAAA,EACzE,CAAA;AAAA,IAEJ,CAAA,MAAO;AACL,MAAA,cAAA,mCACG,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,cAAA,CAAe,iBAAiB,EAAE,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,QAAG,GAAA;AAAA,wBAC5EV,cAAA;AAAA,UAACU,SAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,SAAA,EAAU,MAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF,WAAW,eAAA,EAAiB;AAC1B,IAAA,cAAA,mCACG,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAJ,eAAA;AAAA,QAACI,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,SAAA,EAAU,MAAA;AAAA,UACX,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YACc;AAAA;AAAA;AAAA,OACf;AAAA,MACC,cAAA,CAAe,eAAe,CAAA,CAAE,OAAA,CAAQ,MAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,IAAI;AAAA,KAAA,EACzE,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,uBAAA,GACJ,iBAAA,IACA,eAAA,IACA,CAACI,sBAAA,CAAiB;AAAA,IAChB,SAAA,EAAW,iBAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACV,CAAA;AAEH,EAAA,uBACER,eAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,QAAA;AAAA,MACA,KAAA,EAAO,uBAAA;AAAA,MACP,IAAI,EAAA,IAAM,SAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAN,cAAA,CAACO,8BAAA,EAAA,EACC,QAAA,kBAAAP,cAAA,CAACQ,SAAA,EAAA,EAAK,IAAA,EAAK,YAAW,CAAA,EACxB,CAAA;AAAA,wBACAR,cAAA;AAAA,UAACS,yBAAA;AAAA,UAAA;AAAA,YACC,gBAAA,EAAgB,IAAA;AAAA,YAChB,EAAA,EAAG,KAAA;AAAA,YACH,aAAA,EAAY,sBAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AASO,MAAM,aAAA,GAAgBM,gBAAA;AAAA,EAC3B,CACE;AAAA,IACE,cAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,EAAc;AAAA,KAEhB,GAAA,qBAEAf,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAWE,MAAA;AAAA,QACT,qBAAA,CAAsB;AAAA,UACpB,KAAA,EAAO,CAAC,cAAA,IAAkB,UAAA;AAAA,UAC1B,QAAA,EAAU,UAAA;AAAA,UACV,QAAA,EAAU,UAAA;AAAA,UACV,OAAA,EAAS,aAAa,CAAC;AAAA,SACxB,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA,EAAY,SAAA;AAAA,MAEX;AAAA;AAAA;AAGP;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAErB,MAAM,qBAAqB,CAAC;AAAA,EACjC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,qBACEF,cAAA;AAAA,EAACgB,iBAAA,CAAS,IAAA;AAAA,EAAT;AAAA,IACC,OAAA;AAAA,IACA,aAAA,EAAa,UAAA;AAAA,IACb,SAAA,EAAWd,MAAA,CAAGH,qBAAA,CAAO,sBAAsB,GAAG,SAAS,CAAA;AAAA,IAEtD;AAAA;AACH;AAiBF,MAAM,kBAAA,GAAqBkB,mBAAc,OAAO,CAAA;AAIhD,MAAM,gBAAA,GAAmBF,gBAAA;AAAA,EAIvB,CACE;AAAA,IACE,SAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA,EAAe;AAAA,KAEjB,GAAA,qBAEAf,cAAA;AAAA,IAACkB,qBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,SAAA,EAAWhB,MAAA,CAAGH,qBAAA,CAAO,oBAAoB,GAAG,SAAS;AAAA;AAAA;AAG3D,CAAA;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,MAAM,kBAAA,GAAqBgB,gBAAA;AAAA,EAIzB,CACE,EAAE,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,UAAA,EAAW,EAC9E,GAAA,qBAEAf,cAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,SAAA,EAAWE,MAAA,CAAGH,qBAAA,CAAO,uBAAuB,GAAG,SAAS;AAAA;AAAA;AAG9D,CAAA;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,MAAM,gBAAgB,CAAC;AAAA,EACrB,EAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,KASM;AACJ,EAAA,IAAI,SAASoB,WAAA,EAAQ;AACnB,IAAA,uBACEnB,cAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,aAAA,EAAa,EAAA;AAAA,QACb,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,QAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AACA,EAAA,uBACEA,cAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,aAAA,EAAa,EAAA;AAAA,MACb,IAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL;AAAA;AAAA,GACF;AAEJ,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,kBAAkB,EAAC;AAAA,EACnB,QAAA;AAAA,EACA,uBAAA,GAA0B,IAAA;AAAA,EAC1B,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,QAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6B;AAE3B,EAAA,MAAM,sBAAA,GACJ,eAAA,CAAgB,WAAA,YAAuB,IAAA,GACnC;AAAA,IACE,GAAG,eAAA;AAAA,IACH,WAAA,EAAaoB,qBAAA,CAAgB,eAAA,CAAgB,WAAA,EAAa,QAAQ;AAAA,GACpE,GACA,eAAA;AACN,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,UAAA,EAAY,IAAA,KAASC,oBAAA,CAAY;AAAA,IAC7D,gBAAA,EAAkB,CAAA;AAAA,IAClB,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAyBC,SAAI,CAAA;AACrD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAID,eAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,CAAC,CAAA;AAC9C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChE,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,WAAW,CAAA;AAEpE,EAAA,MAAM,YAAA,GAAeE,YAAA,CAAwC,EAAE,CAAA;AAC/D,EAAA,MAAM,WAAA,GAAcA,YAAA,CAAwC,EAAE,CAAA;AAC9D,EAAA,MAAM,gBAAgBA,YAAA,CAAwC,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAEhF,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAASC,UAAA,EAAO;AAClB,MAAA,WAAA,CAAY,OAAA,CAAQ,gBAAgB,CAAA,EAAG,KAAA,EAAM;AAAA,IAC/C,CAAA,MAAA,IAAW,SAASP,WAAA,EAAQ;AAC1B,MAAA,YAAA,CAAa,OAAA,CAAQ,iBAAiB,CAAA,EAAG,KAAA,EAAM;AAAA,IACjD;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,gBAAA,EAAkB,iBAAiB,CAAC,CAAA;AAE9C,EAAA,MAAM,WAAA,GAAcR,kBAAY,MAAM;AACpC,IAAA,IAAI,SAASe,UAAA,EAAO;AAClB,MAAA,aAAA,CAAc,CAAA,IAAA,KAAQ,OAAO,UAAU,CAAA;AAAA,IACzC,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,MAAA,EAAO;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAA,MAAM,eAAA,GAAkBf,kBAAY,MAAM;AACxC,IAAA,IAAI,SAASe,UAAA,EAAO;AAClB,MAAA,aAAA,CAAc,CAAA,IAAA,KAAQ,OAAO,UAAU,CAAA;AACvC,MAAA;AAAA,IACF;AAEA,IAAA,UAAA,CAAW,MAAA,EAAO;AAAA,EACpB,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAA,MAAM,YAAA,GAAef,kBAAY,MAAM;AACrC,IAAA,IAAI,SAASY,SAAA,EAAM;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQG,UAAK,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,kBAAA,GAAqBf,iBAAA,CAAY,CAAC,CAAA,KAAwC;AAC9E,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,CAAA,GAAA,KAAO;AACpD,MAAA,IAAI,CAAC,GAAA,EAAK;AACR,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OACE,GAAA,CAAI,YAAA,KAAiB,IAAA,IACpB,CAAC,GAAA,CAAI,YAAA,CAAa,QAAQ,CAAA,IAAK,GAAA,CAAI,YAAA,CAAa,aAAa,CAAA,KAAM,MAAA;AAAA,IAExE,CAAC,CAAA;AAED,IAAA,MAAM,iBAAA,GAAoB,SAAA,CAAU,OAAA,CAAQ,CAAA,CAAE,aAAa,CAAA;AAC3D,IAAA,IAAI,iBAAA,KAAsB,EAAA,IAAM,SAAA,CAAU,MAAA,IAAU,CAAA,EAAG;AACrD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAA,CAAE,QAAQ,YAAA,EAAc;AAC1B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAM,cAAA,GAAA,CAAkB,iBAAA,GAAoB,CAAA,IAAK,SAAA,CAAU,MAAA;AAC3D,MAAA,SAAA,CAAU,cAAc,GAAG,KAAA,EAAM;AAAA,IACnC,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,WAAA,EAAa;AAChC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAM,cAAA,GAAA,CACH,iBAAA,GAAoB,CAAA,GAAI,SAAA,CAAU,UAAU,SAAA,CAAU,MAAA;AACzD,MAAA,SAAA,CAAU,cAAc,GAAG,KAAA,EAAM;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkBA,iBAAA;AAAA,IACtB,CAAC,SAAA,KAAsB;AACrB,MAAA,eAAA,CAAgB,SAAS,CAAA;AACzB,MAAA,OAAA,CAAQQ,WAAM,CAAA;AACd,MAAA,YAAA,GAAe,SAAS,CAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,gBAAA,GAAmBR,iBAAA;AAAA,IACvB,CAAC,UAAA,KAAuB;AACtB,MAAA,MAAM,SAAA,GAAY,OAAO,YAAA,KAAiB,QAAA,GAAW,YAAA,GAAe,IAAA;AACpE,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,SAAA,EAAW,YAAY,CAAC,CAAA;AAEjD,MAAA,UAAA,CAAW,QAAQ,OAAO,CAAA;AAC1B,MAAA,aAAA,GAAgB,WAAW,UAAU,CAAA;AAErC,MAAA,OAAA,CAAQY,SAAI,CAAA;AACZ,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,aAAA,CAAc,CAAC,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,IAAA,EAAM,UAAA,EAAY,aAAa;AAAA,GAChD;AAEA,EAAA,MAAM,kBAAA,GAAqBZ,iBAAA;AAAA,IACzB,CAAC,OAAyC,KAAA,KAAkB;AAC1D,MAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,MAAA,MAAM,UAAA,GAAa,EAAA;AACnB,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,CAAA,IAAK,UAAA;AACzB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,IAAI,UAAA,IAAc,UAAA;AACtC,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,OAAA,IAAW,UAAA;AAC/B,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,UAAU,UAAA,IAAc,UAAA;AAC5C,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,UAAA;AAAA,QACF;AACE,UAAA;AAAA;AAGJ,MAAA,oBAAA,CAAqB,QAAQ,CAAA;AAC7B,MAAA,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAM;AAAA,IACxC,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,iBAAA,GAAoBA,iBAAA;AAAA,IACxB,CAAC,KAAA,EAAyC,KAAA,EAAe,SAAA,KAAsB;AAC7E,MAAA,MAAM,UAAU,aAAA,CAAc,OAAA;AAC9B,MAAA,MAAM,UAAA,GAAa,UAAA;AACnB,MAAA,IAAI,QAAA,GAAW,KAAA;AAEf,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,CAAA,IAAK,UAAA;AACzB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,IAAI,UAAA,IAAc,UAAA;AACtC,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,QAAQ,OAAA,IAAW,UAAA;AAC/B,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,QAAA,GAAA,CAAY,KAAA,GAAQ,UAAU,UAAA,IAAc,UAAA;AAC5C,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,eAAA,CAAgB,SAAS,CAAA;AACzB,UAAA;AAAA,QACF;AACE,UAAA;AAAA;AAGJ,MAAA,mBAAA,CAAoB,QAAQ,CAAA;AAC5B,MAAA,WAAA,CAAY,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAM;AAAA,IACvC,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,UAAA,uBAAiB,IAAA,EAAK;AAC5B,EAAA,UAAA,CAAW,SAAS,KAAK,CAAA;AACzB,EAAA,UAAA,CAAW,YAAY,IAAI,CAAA;AAE3B,EAAA,MAAM,cAAA,GAAiB,CAACgB,KAAAA,KAAyB;AAC/C,IAAA,IAAIA,UAASR,WAAA,EAAQ;AACnB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,IAAIQ,UAASD,UAAA,EAAO;AAClB,MAAA,OAAO,MAAA;AAAA,IACT;AAGA,IAAA,OAAOvB,sBAAA,CAAiB,UAAU,UAAU,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAM,KAAA,GAAQiB,qBAAA,iBAAgB,IAAI,IAAA,IAAQ,QAAQ,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,MAAM,QAAA,EAAS;AACjC,IAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,IAAA,MAAM,eAAA,GAAkB,YAAA,GACpBA,qBAAA,CAAgB,YAAA,EAAc,QAAQ,CAAA,GACtC,MAAA;AACJ,IAAA,MAAM,aAAA,GAAgB,iBAAiB,QAAA,EAAS;AAChD,IAAA,MAAMQ,aAAAA,GAAe,iBAAiB,WAAA,EAAY;AAElD,IAAA,uBACE5B,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAWE,MAAA,CAAGH,qBAAA,CAAO,gBAAgB,CAAA,EAAGA,qBAAA,CAAO,aAAa,CAAC,CAAA;AAAA,QAC7D,aAAA,EAAY,aAAA;AAAA,QACZ,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAW,cAAA;AAAA,QAEV,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAAC8B,MAAAA,EAAO,KAAA,KAAU;AACxC,UAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4C;AACjE,YAAA,kBAAA,CAAmB,OAAO,KAAK,CAAA;AAAA,UACjC,CAAA;AAEA,UAAA,MAAM,cAAc,MAAM;AACxB,YAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,UACxB,CAAA;AAEA,UAAA,MAAM,GAAA,GAAM,CAAC,OAAA,KAA+B;AAC1C,YAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA;AAAA,UAChC,CAAA;AAEA,UAAA,MAAM,QAAA,GAAW,OAAA;AAAA,YACf,YAAA,IAAgB,KAAA,KAAU,aAAA,IAAiB,IAAA,KAASD;AAAA,WACtD;AACA,UAAA,MAAM,SAAA,GAAY,KAAA,KAAU,SAAA,IAAa,IAAA,KAAS,QAAA;AAElD,UAAA,uBACE5B,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,GAAA;AAAA,cACA,WAAW,gBAAA,CAAiB;AAAA,gBAC1B,MAAA,EAAQ,QAAA;AAAA,gBACR,OAAA,EAAS,aAAa,CAAC;AAAA,eACxB,CAAA;AAAA,cACD,OAAA,EAAS,WAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACX,aAAA,EAAa,cAAc,KAAK,CAAA,CAAA;AAAA,cAChC,QAAA,EAAU,KAAA,KAAU,iBAAA,GAAoB,CAAA,GAAI,EAAA;AAAA,cAC5C,YAAA,EAAY6B,MAAAA;AAAA,cAEX,QAAA,EAAAA;AAAA,aAAA;AAAA,YAbIA;AAAA,WAcP;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAM,QAAuB,EAAC;AAC9B,IAAA,MAAM,WAAW,IAAA,GAAO,UAAA;AACxB,IAAA,MAAM,WAAWT,qBAAA,iBAAgB,IAAI,MAAK,EAAG,QAAQ,EAAE,WAAA,EAAY;AACnE,IAAA,MAAMQ,gBAAe,YAAA,GACjBR,qBAAA,CAAgB,cAAc,QAAQ,CAAA,CAAE,aAAY,GACpD,MAAA;AAEJ,IAAA,KAAA,IAAS,CAAA,GAAI,CAAC,WAAA,EAAa,CAAA,IAAK,aAAa,CAAA,EAAA,EAAK;AAChD,MAAA,KAAA,CAAM,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,IACzB;AAEA,IAAA,uBACEpB,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAWE,MAAA,CAAGH,qBAAA,CAAO,gBAAgB,CAAA,EAAGA,qBAAA,CAAO,YAAY,CAAC,CAAA;AAAA,QAC5D,aAAA,EAAY,YAAA;AAAA,QACZ,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAW,aAAA;AAAA,QAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,WAAA,EAAa,KAAA,KAAU;AACjC,UAAA,MAAM,GAAA,GAAM,CAAC,OAAA,KAA+B;AAC1C,YAAA,WAAA,CAAY,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA;AAAA,UAC/B,CAAA;AAEA,UAAA,MAAM,cAAc,MAAM;AACxB,YAAA,eAAA,CAAgB,WAAW,CAAA;AAAA,UAC7B,CAAA;AAEA,UAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4C;AACjE,YAAA,iBAAA,CAAkB,KAAA,EAAO,OAAO,WAAW,CAAA;AAAA,UAC7C,CAAA;AAEA,UAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,YAAA,IAAgB,WAAA,KAAgB6B,aAAY,CAAA;AACrE,UAAA,MAAM,YAAY,WAAA,KAAgB,QAAA;AAElC,UAAA,uBACE5B,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,GAAA;AAAA,cACA,WAAW,gBAAA,CAAiB;AAAA,gBAC1B,MAAA,EAAQ,QAAA;AAAA,gBACR,OAAA,EAAS,aAAa,CAAC;AAAA,eACxB,CAAA;AAAA,cACD,OAAA,EAAS,WAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACX,aAAA,EAAa,aAAa,WAAW,CAAA,CAAA;AAAA,cACrC,QAAA,EAAU,KAAA,KAAU,gBAAA,GAAmB,CAAA,GAAI,EAAA;AAAA,cAC3C,YAAA,EAAY,OAAO,WAAW,CAAA;AAAA,cAE7B,QAAA,EAAA;AAAA,aAAA;AAAA,YAbI;AAAA,WAcP;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,IAAI,SAASmB,WAAA,EAAQ;AACnB,MAAA,uBACEnB,cAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS8B,iBAAA,EAAe,QAAA,EAAA,gBAAA,EAAiB,EAAE,CAAA,EACjD,CAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,SAASJ,UAAA,EAAO;AAClB,MAAA,uBACE1B,cAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS8B,iBAAA,EAAe,QAAA,EAAA,eAAA,EAAgB,EAAE,CAAA,EAChD,CAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACExB,eAAA,CAAAyB,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA/B,cAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,IAAA,EAAK,KAAM;AAC9C,QAAA,uBACEA,cAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAWD,sBAAO,mBAAmB,CAAA;AAAA,YAEpC,QAAA,EAAAiC,mBAAA,CAAc,UAAU,IAAI;AAAA,WAAA;AAAA,UAHxB;AAAA,SAIP;AAAA,MAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAAA,sBACAhC,cAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,QAAA,CAAS,IAAI,CAAA,EAAE;AAAA,KAAA,EACzB,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACEM,eAAA;AAAA,IAAC2B,mBAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,+BAAA;AAAA,MACZ,YAAA,EAAc,KAAA;AAAA,MACd,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAY,UAAA;AAAA,MACZ,OAAA,EAAQ,IAAA;AAAA,MACP,GAAG,KAAA;AAAA,MACJ,SAAA,EAAW/B,MAAA,CAAGH,qBAAA,CAAO,uBAAuB,GAAG,SAAS,CAAA;AAAA,MAExD,QAAA,EAAA;AAAA,wBAAAO,eAAA;AAAA,UAAC2B,mBAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,KAAA;AAAA,YACd,cAAA,EAAe,eAAA;AAAA,YACf,WAAA,EAAY,YAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAAjC,cAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,yBAAA;AAAA,kBACH,IAAA,EAAK,cAAA;AAAA,kBACL,OAAA,EAAS,eAAA;AAAA,kBACT,SAAA,EAAW,kBAAA;AAAA,kBACX,IAAA;AAAA,kBACA,QAAA,EAAU,IAAA,KAASmB,WAAA,GAAS,EAAA,GAAK,CAAA;AAAA,kBACjC,WAAW,CAAA,EAAA,KAAM;AACf,oBAAA,IAAI,SAASA,WAAA,EAAQ;AACnB,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,oBAC7B;AAAA,kBACF;AAAA;AAAA,eACF;AAAA,cACC,IAAA,KAASI,aAAQ,uBAAA,mBAChBvB,cAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAWD,sBAAO,iBAAiB,CAAA;AAAA,kBACnC,KAAK,CAAA,EAAA,KAAM;AACT,oBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,kBAC7B,CAAA;AAAA,kBACA,OAAA,EAAS,YAAA;AAAA,kBACT,SAAA,EAAW,kBAAA;AAAA,kBACX,aAAA,EAAY,gBAAA;AAAA,kBACZ,QAAA,EAAU,CAAA;AAAA,kBAET,yBAAe,IAAI;AAAA;AAAA,eACtB,kCAEC,IAAA,EAAA,EAAG,SAAA,EAAWA,sBAAO,oBAAoB,CAAA,EAAI,QAAA,EAAA,cAAA,CAAe,IAAI,CAAA,EAAE,CAAA;AAAA,8BAErEC,cAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,qBAAA;AAAA,kBACH,IAAA,EAAK,eAAA;AAAA,kBACL,OAAA,EAAS,WAAA;AAAA,kBACT,SAAA,EAAW,kBAAA;AAAA,kBACX,IAAA;AAAA,kBACA,QAAA,EAAU,IAAA,KAASmB,WAAA,GAAS,EAAA,GAAK,CAAA;AAAA,kBACjC,WAAW,CAAA,EAAA,KAAM;AACf,oBAAA,IAAI,SAASA,WAAA,EAAQ;AACnB,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,GAAI,IAAA;AAAA,oBAC7B;AAAA,kBACF;AAAA;AAAA;AACF;AAAA;AAAA,SACF;AAAA,uCACC,OAAA,EAAA,EAAM,SAAA,EAAWpB,sBAAO,YAAY,CAAA,EAAI,8BAAmB,EAAE;AAAA;AAAA;AAAA,GAChE;AAEJ;;;;;;;;;"}
1
+ {"version":3,"file":"Common.cjs","sources":["../../../../src/components/DatePicker/Common.tsx"],"sourcesContent":["import { InputElement, InputStartContent, InputWrapper } from '@/components/InputWrapper';\nimport {\n ComponentProps,\n forwardRef,\n HTMLAttributes,\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 { cn, cva } from '@/lib/cva';\nimport styles from './Common.module.css';\nimport {\n Timezone,\n formatDateHeader,\n formatSelectedDate,\n formatSelectedDateTime,\n formatSelectedDateTimeWithSeconds,\n formatWeekday,\n isDateRangeValid,\n shiftToTimezone,\n} from './utils';\nimport { getMonthNames, DAYS, MONTHS, YEARS, DAYS_IN_WEEK } from '@/utils/date';\nimport { Dropdown } from '@/components/Dropdown';\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 highlightedInputWrapperVariants = cva(styles['highlighted-input-wrapper'], {\n variants: {\n fillWidth: { true: styles['highlighted-input-wrapper_fill-width'] },\n active: { true: styles['highlighted-input-wrapper_active'] },\n },\n});\n\nconst dateTableCellVariants = cva(styles['date-table-cell'], {\n variants: {\n muted: { true: styles['date-table-cell_muted'] },\n disabled: { true: styles['date-table-cell_disabled'] },\n selected: { true: styles['date-table-cell_selected'] },\n present: { true: styles['date-table-cell_present'] },\n },\n});\n\nconst gridCellVariants = cva(styles['grid-cell'], {\n variants: {\n active: { true: styles['grid-cell_active'] },\n present: { true: styles['grid-cell_present'] },\n },\n});\n\ninterface HighlightedInputWrapperProps extends Omit<\n ComponentProps<typeof InputWrapper>,\n 'error'\n> {\n isActive: boolean;\n error?: boolean;\n fillWidth?: boolean;\n}\n\n// The resting default border and the error border are identical to what the\n// InputWrapper base / `.wrapper_error` already render, so only the width and the\n// active border are overridden here (see Common.module.css).\nconst HighlightedInputWrapper = ({\n isActive,\n error,\n fillWidth,\n disabled,\n id,\n children,\n className,\n}: HighlightedInputWrapperProps) => (\n <InputWrapper\n error={error}\n disabled={disabled}\n id={id}\n className={cn(\n highlightedInputWrapperVariants({ fillWidth, active: isActive && !error }),\n className\n )}\n >\n {children}\n </InputWrapper>\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 const startDateIsAfterEndDate =\n selectedStartDate &&\n selectedEndDate &&\n !isDateRangeValid({\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n });\n\n return (\n <HighlightedInputWrapper\n isActive={isActive}\n fillWidth\n disabled={disabled}\n error={startDateIsAfterEndDate}\n id={id ?? defaultId}\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\ninterface DateTableCellProps extends HTMLAttributes<HTMLTableCellElement> {\n isCurrentMonth?: boolean;\n isDisabled?: boolean;\n isSelected?: boolean;\n isPresent?: boolean;\n}\n\nexport const DateTableCell = forwardRef<HTMLTableCellElement, DateTableCellProps>(\n (\n {\n isCurrentMonth,\n isDisabled,\n isSelected,\n isPresent,\n className,\n children,\n onClick,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n },\n ref\n ) => (\n <td\n ref={ref}\n className={cn(\n dateTableCellVariants({\n muted: !isCurrentMonth || isDisabled,\n disabled: isDisabled,\n selected: isSelected,\n present: isPresent && !isSelected,\n }),\n className\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n role={role}\n tabIndex={tabIndex}\n aria-label={ariaLabel}\n >\n {children}\n </td>\n )\n);\nDateTableCell.displayName = 'DateTableCell';\n\nexport const StyledDropdownItem = ({\n className,\n children,\n onClick,\n 'data-testid': dataTestId,\n}: ComponentProps<typeof Dropdown.Item> & { 'data-testid'?: string }) => (\n <Dropdown.Item\n onClick={onClick}\n data-testid={dataTestId}\n className={cn(styles['styled-dropdown-item'], className)}\n >\n {children}\n </Dropdown.Item>\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 className?: string;\n 'data-testid'?: string;\n}\n\nconst monthAbbreviations = getMonthNames('short');\n\ntype DateViewOption = 'days' | 'months' | 'years';\n\nconst PickerNavControl = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n {\n className,\n icon,\n onClick,\n onKeyDown,\n size,\n type,\n tabIndex,\n 'data-testid': dataTestId,\n },\n ref\n ) => (\n <IconButton\n ref={ref}\n icon={icon}\n onClick={onClick}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['picker-nav-control'], className)}\n />\n )\n);\nPickerNavControl.displayName = 'PickerNavControl';\n\nconst EmptyDateSelectNav = forwardRef<\n HTMLButtonElement,\n ComponentProps<typeof IconButton> & { 'data-testid'?: string }\n>(\n (\n { className, icon, onKeyDown, size, type, tabIndex, 'data-testid': dataTestId },\n ref\n ) => (\n <PickerNavControl\n ref={ref}\n icon={icon}\n onKeyDown={onKeyDown}\n size={size}\n type={type}\n tabIndex={tabIndex}\n data-testid={dataTestId}\n className={cn(styles['empty-date-select-nav'], className)}\n />\n )\n);\nEmptyDateSelectNav.displayName = 'EmptyDateSelectNav';\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 className,\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 <div\n className={cn(styles['grid-container'], styles['months-grid'])}\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 const isActive = Boolean(\n selectedDate && index === selectedMonth && year === selectedYear\n );\n const isPresent = index === thisMonth && year === thisYear;\n\n return (\n <button\n key={month}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\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 </button>\n );\n })}\n </div>\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 <div\n className={cn(styles['grid-container'], styles['years-grid'])}\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 const isActive = Boolean(selectedDate && currentYear === selectedYear);\n const isPresent = currentYear === thisYear;\n\n return (\n <button\n key={currentYear}\n type=\"button\"\n ref={ref}\n className={gridCellVariants({\n active: isActive,\n present: isPresent && !isActive,\n })}\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 </button>\n );\n })}\n </div>\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 <th\n key={key}\n className={styles['date-table-header']}\n >\n {formatWeekday('system', date)}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>{children(body)}</tbody>\n </>\n );\n };\n\n return (\n <Container\n data-testid=\"datepicker-calendar-container\"\n isResponsive={false}\n fillWidth={false}\n orientation=\"vertical\"\n padding=\"sm\"\n {...props}\n className={cn(styles['date-picker-container'], className)}\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 <button\n type=\"button\"\n className={styles['clickable-title']}\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 </button>\n ) : (\n <h2 className={styles['unselectable-title']}>{getHeaderTitle(view)}</h2>\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 <table className={styles['date-table']}>{renderTableContent()}</table>\n </Container>\n );\n};\n"],"names":["cva","styles","jsx","InputWrapper","cn","formatDateHeader","formatSelectedDate","useId","jsxs","InputStartContent","Icon","InputElement","Text","useCallback","formatSelectedDateTimeWithSeconds","formatSelectedDateTime","isDateRangeValid","forwardRef","Dropdown","getMonthNames","IconButton","MONTHS","shiftToTimezone","useCalendar","useState","DAYS","useRef","useEffect","YEARS","view","selectedYear","month","DAYS_IN_WEEK","Fragment","formatWeekday","Container"],"mappings":"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"}
@@ -167,7 +167,7 @@ const Calendar = ({
167
167
  if (futureStartDatesDisabled && !shiftedStart && fullDate > today) {
168
168
  isDisabled = true;
169
169
  }
170
- if (maxRangeLength > 1 && shiftedStart && !utils.datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength) && fullDate > shiftedStart) {
170
+ if (maxRangeLength > 1 && shiftedStart && !utils.areDatesWithinMaxRange(shiftedStart, fullDate, maxRangeLength) && fullDate > shiftedStart) {
171
171
  isDisabled = true;
172
172
  }
173
173
  if (utils.isDateNotInAllowList(shiftedAllowList, fullDate)) {
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.cjs","sources":["../../../../src/components/DatePicker/DateRangePicker.tsx"],"sourcesContent":["import {\n ComponentProps,\n Dispatch,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { Dropdown } from '@/components/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '@/components/Container';\nimport { Panel } from '@/components/Panel';\nimport { Icon } from '@/components/Icon';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './DateRangePicker.module.css';\nimport {\n DateRange,\n datesAreWithinMaxRange,\n formatDateHeader,\n formatSelectedDate,\n shiftFromTimezone,\n isDateNotInAllowList,\n isDateRangeTheWholeMonth,\n Timezone,\n shiftToTimezone,\n} from './utils';\n\ntype OpenDirection = 'left' | 'right';\n\nconst PredefinedCalendarContainer = ({\n className,\n children,\n gap,\n orientation,\n padding,\n}: ComponentProps<typeof Panel>) => (\n <Panel\n gap={gap}\n orientation={orientation}\n padding={padding}\n className={cn(styles['predefined-calendar-container'], className)}\n >\n {children}\n </Panel>\n);\n\nconst PredefinedDatesContainer = ({\n className,\n children,\n isResponsive,\n orientation,\n 'data-testid': dataTestId,\n}: ComponentProps<typeof Container> & { 'data-testid'?: string }) => (\n <Container\n isResponsive={isResponsive}\n orientation={orientation}\n data-testid={dataTestId}\n className={cn(styles['predefined-dates-container'], className)}\n >\n {children}\n </Container>\n);\n\nconst calendarRendererContainerVariants = cva(styles['calendar-renderer-container'], {\n variants: {\n openDirection: {\n left: styles['calendar-renderer-container_left'],\n right: styles['calendar-renderer-container_right'],\n },\n },\n defaultVariants: { openDirection: 'right' },\n});\n\nconst CalendarRendererContainer = forwardRef<\n HTMLDivElement,\n { openDirection?: OpenDirection; children: ReactNode }\n>(({ openDirection, children }, ref) => (\n <div\n ref={ref}\n className={calendarRendererContainerVariants({ openDirection })}\n >\n {children}\n </div>\n));\nCalendarRendererContainer.displayName = 'CalendarRendererContainer';\n\nconst StyledCalendarRenderer = ({\n className,\n children,\n calendarOptions,\n allowYearMonthSelection,\n selectedDate,\n timezone,\n}: ComponentProps<typeof CalendarRenderer>) => (\n <CalendarRenderer\n calendarOptions={calendarOptions}\n allowYearMonthSelection={allowYearMonthSelection}\n selectedDate={selectedDate}\n timezone={timezone}\n className={cn(styles['styled-calendar-renderer'], className)}\n >\n {children}\n </CalendarRenderer>\n);\n\nconst ScrollableContainer = ({\n className,\n children,\n orientation,\n}: ComponentProps<typeof Container>) => (\n <Container\n orientation={orientation}\n className={cn(styles['scrollable-container'], className)}\n >\n {children}\n </Container>\n);\n\nconst dateRangeTableCellVariants = cva(undefined, {\n variants: {\n showRangeIndicator: { true: styles['date-range-table-cell_indicator'] },\n },\n});\n\nconst DateRangeTableCell = ({\n shouldShowRangeIndicator,\n className,\n children,\n isCurrentMonth,\n isDisabled,\n isSelected,\n isPresent,\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: ComponentProps<typeof DateTableCell> & {\n shouldShowRangeIndicator?: boolean;\n}) => (\n <DateTableCell\n isCurrentMonth={isCurrentMonth}\n isDisabled={isDisabled}\n isSelected={isSelected}\n isPresent={isPresent}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={cn(\n dateRangeTableCellVariants({ showRangeIndicator: shouldShowRangeIndicator }),\n className\n )}\n >\n {children}\n </DateTableCell>\n);\n\ninterface CalendarProps {\n allowOnlyDatesList?: Array<Date>;\n calendarBody: Body;\n closeDatepicker: () => void;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: (selectedDate: Date) => void;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n allowOnlyDatesList,\n calendarBody,\n closeDatepicker,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const shiftedAllowList = useMemo(() => {\n return allowOnlyDatesList?.map(date => {\n return shiftToTimezone(date, timezone);\n });\n }, [allowOnlyDatesList, timezone]);\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n const isPresent = isSameDate(today, fullDate);\n\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (futureStartDatesDisabled && !shiftedStart && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength) &&\n fullDate > shiftedStart\n ) {\n isDisabled = true;\n }\n\n if (isDateNotInAllowList(shiftedAllowList, fullDate)) {\n isDisabled = true;\n }\n\n const shouldShowRangeIndicator =\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n\n // User has a date range selected and clicked a new date.\n // This will cause the selected date to be reset, thus do not close the datepicker.\n if (shiftedStart && shiftedEnd) {\n return;\n }\n\n // The user has selected a new start date, don't close\n if (shiftedStart && fullDate < shiftedStart) {\n return;\n }\n\n // Only close the datepicker if the user hasn't clicked the selected start date.\n if (shiftedStart && !isSameDate(fullDate, shiftedStart)) {\n closeDatepicker();\n return;\n }\n };\n return (\n <DateRangeTableCell\n shouldShowRangeIndicator={\n !isSelected && (shouldShowRangeIndicator || isBetweenStartAndEndDates)\n }\n isCurrentMonth={isCurrentMonth}\n isDisabled={isDisabled}\n isSelected={Boolean(isSelected)}\n isPresent={isPresent}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedDatesProps {\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n predefinedDatesList: DateRange[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n timezone: Timezone;\n}\n\nconst PredefinedDates = ({\n onSelectDateRange,\n predefinedDatesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n timezone,\n}: PredefinedDatesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedDatesContainer\n data-testid=\"predefined-dates-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedDatesList.map(({ startDate, endDate }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n isSameDate(selectedEndDate, endDate) &&\n selectedStartDate &&\n isSameDate(selectedStartDate, startDate);\n\n const isWholeMonth = isDateRangeTheWholeMonth({ startDate, endDate }, timezone);\n\n const formattedText = isWholeMonth\n ? formatDateHeader(timezone, startDate)\n : `${formatSelectedDate(timezone, startDate)} – ${formatSelectedDate(timezone, endDate)}`.trim();\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={formattedText}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {formattedText}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Custom time period <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedDatesContainer>\n );\n};\n\nexport interface DateRangePickerProps {\n allowOnlyDatesList?: Array<Date>;\n endDate?: Date;\n disabled?: boolean;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedDatesList?: DateRange[];\n maxRangeLength?: number;\n startDate?: Date;\n responsivePositioning?: boolean;\n timezone?: Timezone;\n}\n\nexport const DateRangePicker = ({\n allowOnlyDatesList,\n endDate,\n startDate,\n disabled = false,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedDatesList,\n responsivePositioning = true,\n timezone = 'system',\n}: DateRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n const calendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (selectedStartDate) {\n calendarOptions.defaultDate = selectedStartDate;\n }\n\n useEffect(() => {\n if (startDate) {\n setSelectedStartDate(startDate);\n }\n }, [startDate]);\n\n useEffect(() => {\n if (endDate) {\n setSelectedEndDate(endDate);\n }\n }, [endDate]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n if (\n calendarContainerRef.current.getBoundingClientRect().right > window.innerWidth\n ) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection(openDirection);\n }, [openDirection]);\n\n const handleOpenChange = (isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection(openDirection);\n }\n };\n\n const handleSelectDate = useCallback(\n (selectedDate: Date): void => {\n // Start date and end date are selected, user clicks any date.\n // Set start date to the selected date, clear the end date.\n if (selectedStartDate && selectedEndDate) {\n // If futureStartDatesDisabled is true, only set the selected date to the date clicked if it's before today\n if (futureStartDatesDisabled && selectedDate > new Date()) {\n setSelectedEndDate(undefined);\n return;\n }\n setSelectedStartDate(selectedDate);\n setSelectedEndDate(undefined);\n return;\n }\n\n if (selectedStartDate) {\n if (isSameDate(selectedStartDate, selectedDate)) {\n // Start date is selected, user clicks start date.\n // Reset the start date.\n setSelectedStartDate(undefined);\n return;\n }\n\n // Start date is selected, user clicks an earlier date.\n // Set the earlier date to the new start date.\n if (selectedDate < selectedStartDate) {\n setSelectedStartDate(selectedDate);\n return;\n }\n\n // Otherwise, set the end date to the date the user clicked.\n setSelectedEndDate(selectedDate);\n onSelectDateRange(selectedStartDate, selectedDate);\n setShouldShowCustomRange(false);\n return;\n }\n\n setSelectedStartDate(selectedDate);\n },\n [futureStartDatesDisabled, onSelectDateRange, selectedEndDate, selectedStartDate]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedDates =\n predefinedDatesList !== undefined && predefinedDatesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <Dropdown.Content\n align=\"start\"\n responsivePositioning={responsivePositioning}\n >\n {shouldShowPredefinedDates ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedDates\n onSelectDateRange={onSelectDateRange}\n predefinedDatesList={predefinedDatesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n timezone={timezone}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <StyledCalendarRenderer\n calendarOptions={calendarOptions}\n allowYearMonthSelection={false}\n selectedDate={selectedStartDate}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n calendarBody={body}\n closeDatepicker={closeDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={handleSelectDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <CalendarRenderer\n calendarOptions={calendarOptions}\n allowYearMonthSelection={false}\n selectedDate={selectedStartDate}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n calendarBody={body}\n closeDatepicker={closeDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={handleSelectDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n timezone={timezone}\n />\n )}\n </CalendarRenderer>\n )}\n </Dropdown.Content>\n </Dropdown>\n );\n};\n"],"names":["jsx","Panel","cn","styles","Container","cva","forwardRef","CalendarRenderer","DateTableCell","useState","shiftToTimezone","useMemo","isSameDate","datesAreWithinMaxRange","isDateNotInAllowList","shiftFromTimezone","jsxs","isDateRangeTheWholeMonth","formatDateHeader","formatSelectedDate","StyledDropdownItem","Icon","useRef","useEffect","useLayoutEffect","useCallback","isOpen","Dropdown","DateRangePickerInput"],"mappings":"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"}
1
+ {"version":3,"file":"DateRangePicker.cjs","sources":["../../../../src/components/DatePicker/DateRangePicker.tsx"],"sourcesContent":["import {\n ComponentProps,\n Dispatch,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport { Dropdown } from '@/components/Dropdown';\nimport {\n Body,\n CalendarRenderer,\n DateRangePickerInput,\n DateTableCell,\n StyledDropdownItem,\n} from './Common';\nimport { Container } from '@/components/Container';\nimport { Panel } from '@/components/Panel';\nimport { Icon } from '@/components/Icon';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './DateRangePicker.module.css';\nimport {\n DateRange,\n Timezone,\n areDatesWithinMaxRange,\n formatDateHeader,\n formatSelectedDate,\n isDateNotInAllowList,\n isDateRangeTheWholeMonth,\n shiftFromTimezone,\n shiftToTimezone,\n} from './utils';\n\ntype OpenDirection = 'left' | 'right';\n\nconst PredefinedCalendarContainer = ({\n className,\n children,\n gap,\n orientation,\n padding,\n}: ComponentProps<typeof Panel>) => (\n <Panel\n gap={gap}\n orientation={orientation}\n padding={padding}\n className={cn(styles['predefined-calendar-container'], className)}\n >\n {children}\n </Panel>\n);\n\nconst PredefinedDatesContainer = ({\n className,\n children,\n isResponsive,\n orientation,\n 'data-testid': dataTestId,\n}: ComponentProps<typeof Container> & { 'data-testid'?: string }) => (\n <Container\n isResponsive={isResponsive}\n orientation={orientation}\n data-testid={dataTestId}\n className={cn(styles['predefined-dates-container'], className)}\n >\n {children}\n </Container>\n);\n\nconst calendarRendererContainerVariants = cva(styles['calendar-renderer-container'], {\n variants: {\n openDirection: {\n left: styles['calendar-renderer-container_left'],\n right: styles['calendar-renderer-container_right'],\n },\n },\n defaultVariants: { openDirection: 'right' },\n});\n\nconst CalendarRendererContainer = forwardRef<\n HTMLDivElement,\n { openDirection?: OpenDirection; children: ReactNode }\n>(({ openDirection, children }, ref) => (\n <div\n ref={ref}\n className={calendarRendererContainerVariants({ openDirection })}\n >\n {children}\n </div>\n));\nCalendarRendererContainer.displayName = 'CalendarRendererContainer';\n\nconst StyledCalendarRenderer = ({\n className,\n children,\n calendarOptions,\n allowYearMonthSelection,\n selectedDate,\n timezone,\n}: ComponentProps<typeof CalendarRenderer>) => (\n <CalendarRenderer\n calendarOptions={calendarOptions}\n allowYearMonthSelection={allowYearMonthSelection}\n selectedDate={selectedDate}\n timezone={timezone}\n className={cn(styles['styled-calendar-renderer'], className)}\n >\n {children}\n </CalendarRenderer>\n);\n\nconst ScrollableContainer = ({\n className,\n children,\n orientation,\n}: ComponentProps<typeof Container>) => (\n <Container\n orientation={orientation}\n className={cn(styles['scrollable-container'], className)}\n >\n {children}\n </Container>\n);\n\nconst dateRangeTableCellVariants = cva(undefined, {\n variants: {\n showRangeIndicator: { true: styles['date-range-table-cell_indicator'] },\n },\n});\n\nconst DateRangeTableCell = ({\n shouldShowRangeIndicator,\n className,\n children,\n isCurrentMonth,\n isDisabled,\n isSelected,\n isPresent,\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: ComponentProps<typeof DateTableCell> & {\n shouldShowRangeIndicator?: boolean;\n}) => (\n <DateTableCell\n isCurrentMonth={isCurrentMonth}\n isDisabled={isDisabled}\n isSelected={isSelected}\n isPresent={isPresent}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={cn(\n dateRangeTableCellVariants({ showRangeIndicator: shouldShowRangeIndicator }),\n className\n )}\n >\n {children}\n </DateTableCell>\n);\n\ninterface CalendarProps {\n allowOnlyDatesList?: Array<Date>;\n calendarBody: Body;\n closeDatepicker: () => void;\n futureDatesDisabled: boolean;\n futureStartDatesDisabled: boolean;\n maxRangeLength: number;\n setSelectedDate: (selectedDate: Date) => void;\n startDate?: Date;\n endDate?: Date;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n allowOnlyDatesList,\n calendarBody,\n closeDatepicker,\n futureDatesDisabled,\n futureStartDatesDisabled,\n maxRangeLength,\n setSelectedDate,\n startDate,\n endDate,\n timezone,\n}: CalendarProps) => {\n const [hoveredDate, setHoveredDate] = useState<Date>();\n\n const today = shiftToTimezone(new Date(), timezone);\n const shiftedStart = startDate ? shiftToTimezone(startDate, timezone) : undefined;\n const shiftedEnd = endDate ? shiftToTimezone(endDate, timezone) : undefined;\n\n const shiftedAllowList = useMemo(() => {\n return allowOnlyDatesList?.map(date => {\n return shiftToTimezone(date, timezone);\n });\n }, [allowOnlyDatesList, timezone]);\n\n const handleMouseOut = (): void => {\n setHoveredDate(undefined);\n };\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected =\n (shiftedStart && isSameDate(shiftedStart, fullDate)) ||\n (shiftedEnd && isSameDate(shiftedEnd, fullDate));\n const isPresent = isSameDate(today, fullDate);\n\n const isBetweenStartAndEndDates = Boolean(\n shiftedStart && shiftedEnd && fullDate > shiftedStart && fullDate < shiftedEnd\n );\n\n let isDisabled = false;\n if (futureDatesDisabled && fullDate > today) {\n isDisabled = true;\n }\n\n if (futureStartDatesDisabled && !shiftedStart && fullDate > today) {\n isDisabled = true;\n }\n\n if (\n maxRangeLength > 1 &&\n shiftedStart &&\n !areDatesWithinMaxRange(shiftedStart, fullDate, maxRangeLength) &&\n fullDate > shiftedStart\n ) {\n isDisabled = true;\n }\n\n if (isDateNotInAllowList(shiftedAllowList, fullDate)) {\n isDisabled = true;\n }\n\n const shouldShowRangeIndicator =\n !shiftedEnd &&\n Boolean(\n shiftedStart &&\n hoveredDate &&\n fullDate > shiftedStart &&\n fullDate < hoveredDate\n );\n\n const handleMouseEnter = () => {\n setHoveredDate(fullDate);\n };\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n\n // User has a date range selected and clicked a new date.\n // This will cause the selected date to be reset, thus do not close the datepicker.\n if (shiftedStart && shiftedEnd) {\n return;\n }\n\n // The user has selected a new start date, don't close\n if (shiftedStart && fullDate < shiftedStart) {\n return;\n }\n\n // Only close the datepicker if the user hasn't clicked the selected start date.\n if (shiftedStart && !isSameDate(fullDate, shiftedStart)) {\n closeDatepicker();\n return;\n }\n };\n return (\n <DateRangeTableCell\n shouldShowRangeIndicator={\n !isSelected && (shouldShowRangeIndicator || isBetweenStartAndEndDates)\n }\n isCurrentMonth={isCurrentMonth}\n isDisabled={isDisabled}\n isSelected={Boolean(isSelected)}\n isPresent={isPresent}\n key={dayKey}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseOut}\n >\n {date}\n </DateRangeTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\ninterface PredefinedDatesProps {\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n predefinedDatesList: DateRange[];\n selectedEndDate: Date | undefined;\n selectedStartDate: Date | undefined;\n setEndDate: Dispatch<SetStateAction<Date | undefined>>;\n setStartDate: Dispatch<SetStateAction<Date | undefined>>;\n shouldShowCustomRange: boolean;\n showCustomDateRange: Dispatch<SetStateAction<boolean>>;\n timezone: Timezone;\n}\n\nconst PredefinedDates = ({\n onSelectDateRange,\n predefinedDatesList,\n selectedEndDate,\n selectedStartDate,\n setEndDate,\n setStartDate,\n shouldShowCustomRange,\n showCustomDateRange,\n timezone,\n}: PredefinedDatesProps) => {\n const handleCustomTimePeriodClick = (event: MouseEvent) => {\n event.preventDefault();\n showCustomDateRange(!shouldShowCustomRange);\n };\n\n return (\n <PredefinedDatesContainer\n data-testid=\"predefined-dates-list\"\n isResponsive={false}\n orientation=\"vertical\"\n >\n <ScrollableContainer orientation=\"vertical\">\n {predefinedDatesList.map(({ startDate, endDate }) => {\n const handleItemClick = () => {\n setStartDate(startDate);\n setEndDate(endDate);\n onSelectDateRange(startDate, endDate);\n };\n\n const rangeIsSelected =\n selectedEndDate &&\n isSameDate(selectedEndDate, endDate) &&\n selectedStartDate &&\n isSameDate(selectedStartDate, startDate);\n\n const isWholeMonth = isDateRangeTheWholeMonth({ startDate, endDate }, timezone);\n\n const formattedText = isWholeMonth\n ? formatDateHeader(timezone, startDate)\n : `${formatSelectedDate(timezone, startDate)} – ${formatSelectedDate(timezone, endDate)}`.trim();\n\n return (\n <StyledDropdownItem\n data-testid={`predefined-date-${startDate.getTime()}`}\n key={startDate.toISOString()}\n onClick={handleItemClick}\n >\n <Container\n data-selected={rangeIsSelected}\n data-testid={formattedText}\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n {formattedText}\n {rangeIsSelected && <Icon name=\"check\" />}\n </Container>\n </StyledDropdownItem>\n );\n })}\n </ScrollableContainer>\n <StyledDropdownItem onClick={handleCustomTimePeriodClick}>\n <Container\n justifyContent=\"space-between\"\n orientation=\"horizontal\"\n >\n Custom time period <Icon name=\"chevron-right\" />\n </Container>\n </StyledDropdownItem>\n </PredefinedDatesContainer>\n );\n};\n\nexport interface DateRangePickerProps {\n allowOnlyDatesList?: Array<Date>;\n endDate?: Date;\n disabled?: boolean;\n futureDatesDisabled?: boolean;\n futureStartDatesDisabled?: boolean;\n onSelectDateRange: (selectedStartDate: Date, selectedEndDate: Date) => void;\n openDirection?: OpenDirection;\n placeholder?: string;\n predefinedDatesList?: DateRange[];\n maxRangeLength?: number;\n startDate?: Date;\n responsivePositioning?: boolean;\n timezone?: Timezone;\n}\n\nexport const DateRangePicker = ({\n allowOnlyDatesList,\n endDate,\n startDate,\n disabled = false,\n futureDatesDisabled = false,\n futureStartDatesDisabled = false,\n maxRangeLength = -1,\n onSelectDateRange,\n openDirection = 'right',\n placeholder = 'start date – end date',\n predefinedDatesList,\n responsivePositioning = true,\n timezone = 'system',\n}: DateRangePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedStartDate, setSelectedStartDate] = useState<Date>();\n const [selectedEndDate, setSelectedEndDate] = useState<Date>();\n const [shouldShowCustomRange, setShouldShowCustomRange] = useState<boolean>(false);\n const [calendarOpenDirection, setCalendarOpenDirection] =\n useState<OpenDirection>(openDirection);\n const calendarContainerRef = useRef<HTMLDivElement>(null);\n\n const calendarOptions: UseCalendarOptions = {};\n\n // If a start date is selected, open the calendar to that date\n if (selectedStartDate) {\n calendarOptions.defaultDate = selectedStartDate;\n }\n\n useEffect(() => {\n if (startDate) {\n setSelectedStartDate(startDate);\n }\n }, [startDate]);\n\n useEffect(() => {\n if (endDate) {\n setSelectedEndDate(endDate);\n }\n }, [endDate]);\n\n useLayoutEffect(() => {\n if (shouldShowCustomRange && calendarContainerRef.current) {\n if (\n calendarContainerRef.current.getBoundingClientRect().right > window.innerWidth\n ) {\n setCalendarOpenDirection('left');\n }\n }\n }, [shouldShowCustomRange]);\n\n const closeDatePicker = useCallback((): void => {\n setIsOpen(false);\n setShouldShowCustomRange(false);\n setCalendarOpenDirection(openDirection);\n }, [openDirection]);\n\n const handleOpenChange = (isOpen: boolean): void => {\n setIsOpen(isOpen);\n\n if (!isOpen) {\n setShouldShowCustomRange(false);\n setCalendarOpenDirection(openDirection);\n }\n };\n\n const handleSelectDate = useCallback(\n (selectedDate: Date): void => {\n // Start date and end date are selected, user clicks any date.\n // Set start date to the selected date, clear the end date.\n if (selectedStartDate && selectedEndDate) {\n // If futureStartDatesDisabled is true, only set the selected date to the date clicked if it's before today\n if (futureStartDatesDisabled && selectedDate > new Date()) {\n setSelectedEndDate(undefined);\n return;\n }\n setSelectedStartDate(selectedDate);\n setSelectedEndDate(undefined);\n return;\n }\n\n if (selectedStartDate) {\n if (isSameDate(selectedStartDate, selectedDate)) {\n // Start date is selected, user clicks start date.\n // Reset the start date.\n setSelectedStartDate(undefined);\n return;\n }\n\n // Start date is selected, user clicks an earlier date.\n // Set the earlier date to the new start date.\n if (selectedDate < selectedStartDate) {\n setSelectedStartDate(selectedDate);\n return;\n }\n\n // Otherwise, set the end date to the date the user clicked.\n setSelectedEndDate(selectedDate);\n onSelectDateRange(selectedStartDate, selectedDate);\n setShouldShowCustomRange(false);\n return;\n }\n\n setSelectedStartDate(selectedDate);\n },\n [futureStartDatesDisabled, onSelectDateRange, selectedEndDate, selectedStartDate]\n );\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n }\n }, []);\n\n const shouldShowPredefinedDates =\n predefinedDatesList !== undefined && predefinedDatesList.length > 0;\n\n return (\n <Dropdown\n onOpenChange={handleOpenChange}\n open={isOpen}\n >\n <Dropdown.Trigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DateRangePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n placeholder={placeholder}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n timezone={timezone}\n />\n </Dropdown.Trigger>\n <Dropdown.Content\n align=\"start\"\n responsivePositioning={responsivePositioning}\n >\n {shouldShowPredefinedDates ? (\n <PredefinedCalendarContainer\n gap=\"none\"\n orientation=\"horizontal\"\n padding=\"none\"\n >\n <PredefinedDates\n onSelectDateRange={onSelectDateRange}\n predefinedDatesList={predefinedDatesList}\n selectedEndDate={selectedEndDate}\n selectedStartDate={selectedStartDate}\n setEndDate={setSelectedEndDate}\n setStartDate={setSelectedStartDate}\n shouldShowCustomRange={shouldShowCustomRange}\n showCustomDateRange={setShouldShowCustomRange}\n timezone={timezone}\n />\n\n {shouldShowCustomRange && (\n <CalendarRendererContainer\n openDirection={calendarOpenDirection}\n ref={calendarContainerRef}\n >\n <StyledCalendarRenderer\n calendarOptions={calendarOptions}\n allowYearMonthSelection={false}\n selectedDate={selectedStartDate}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n calendarBody={body}\n closeDatepicker={closeDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={handleSelectDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n timezone={timezone}\n />\n )}\n </StyledCalendarRenderer>\n </CalendarRendererContainer>\n )}\n </PredefinedCalendarContainer>\n ) : (\n <CalendarRenderer\n calendarOptions={calendarOptions}\n allowYearMonthSelection={false}\n selectedDate={selectedStartDate}\n timezone={timezone}\n >\n {(body: Body) => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n calendarBody={body}\n closeDatepicker={closeDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n futureStartDatesDisabled={futureStartDatesDisabled}\n maxRangeLength={maxRangeLength}\n setSelectedDate={handleSelectDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n timezone={timezone}\n />\n )}\n </CalendarRenderer>\n )}\n </Dropdown.Content>\n </Dropdown>\n );\n};\n"],"names":["jsx","Panel","cn","styles","Container","cva","forwardRef","CalendarRenderer","DateTableCell","useState","shiftToTimezone","useMemo","isSameDate","areDatesWithinMaxRange","isDateNotInAllowList","shiftFromTimezone","jsxs","isDateRangeTheWholeMonth","formatDateHeader","formatSelectedDate","StyledDropdownItem","Icon","useRef","useEffect","useLayoutEffect","useCallback","isOpen","Dropdown","DateRangePickerInput"],"mappings":"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"}
@@ -221,7 +221,7 @@ const Calendar = ({
221
221
  if (futureStartDatesDisabled && calendarType === "startDate" && fullDate > today) {
222
222
  isDisabled = true;
223
223
  }
224
- if (maxRangeLength > 1 && shiftedStart && !utils.datesAreWithinMaxRange(shiftedStart, fullDate, maxRangeLength)) {
224
+ if (maxRangeLength > 1 && shiftedStart && !utils.areDatesWithinMaxRange(shiftedStart, fullDate, maxRangeLength)) {
225
225
  isDisabled = true;
226
226
  }
227
227
  if (calendarType === "endDate" && !shiftedEnd && shiftedStart && shiftedStart > fullDate && !calendar.isSameDate(shiftedStart, fullDate)) {
@@ -295,7 +295,8 @@ const PredefinedTimes = ({
295
295
  setEndDate,
296
296
  setStartDate,
297
297
  shouldShowCustomRange,
298
- showCustomDateRange
298
+ showCustomDateRange,
299
+ timezone
299
300
  }) => {
300
301
  const handleCustomTimePeriodClick = (event) => {
301
302
  event.preventDefault();
@@ -308,13 +309,15 @@ const PredefinedTimes = ({
308
309
  isResponsive: false,
309
310
  orientation: "vertical",
310
311
  children: [
311
- /* @__PURE__ */ jsxRuntime.jsx(ScrollableContainer, { orientation: "vertical", children: predefinedTimesList.map(({ dateRange: { startDate, endDate }, label }) => {
312
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollableContainer, { orientation: "vertical", children: predefinedTimesList.map(({ dateRange, label }) => {
313
+ const { startDate, endDate } = dateRange;
312
314
  const handleItemClick = () => {
313
315
  setStartDate(startDate);
314
316
  setEndDate(endDate);
315
317
  onSelectDateRange(startDate, endDate, label);
316
318
  };
317
- const rangeIsSelected = selectedEndDate && selectedEndDate.getTime() === endDate.getTime() && selectedStartDate && selectedStartDate.getTime() === startDate.getTime();
319
+ const selectedRange = selectedStartDate && selectedEndDate ? { startDate: selectedStartDate, endDate: selectedEndDate } : void 0;
320
+ const rangeIsSelected = selectedRange !== void 0 && utils.isDateRangeWithinRange(selectedRange, dateRange, timezone);
318
321
  return /* @__PURE__ */ jsxRuntime.jsx(
319
322
  Common.StyledDropdownItem,
320
323
  {
@@ -576,7 +579,7 @@ const TabbedCalendar = ({
576
579
  if (endDate) {
577
580
  endDateCalendarOptions.defaultDate = endDate;
578
581
  }
579
- const startDateIsAfterEndDate = startDate && endDate && !utils.dateRangeIsValid({ startDate, endDate });
582
+ const startDateIsAfterEndDate = startDate && endDate && !utils.isDateRangeValid({ startDate, endDate });
580
583
  return /* @__PURE__ */ jsxRuntime.jsxs(
581
584
  BottomPaddingTabs,
582
585
  {
@@ -765,7 +768,7 @@ const DateTimeRangePicker = ({
765
768
  if (calendarType === "startDate") {
766
769
  setSelectedStartDate(selectedDate);
767
770
  if (selectedEndDate) {
768
- if (!shouldFireIfInvalid && !utils.dateRangeIsValid({ startDate: selectedDate, endDate: selectedEndDate })) {
771
+ if (!shouldFireIfInvalid && !utils.isDateRangeValid({ startDate: selectedDate, endDate: selectedEndDate })) {
769
772
  return;
770
773
  }
771
774
  onSelectDateRange(selectedDate, selectedEndDate);
@@ -777,7 +780,7 @@ const DateTimeRangePicker = ({
777
780
  if (calendarType === "endDate") {
778
781
  setSelectedEndDate(selectedDate);
779
782
  if (selectedStartDate) {
780
- if (!shouldFireIfInvalid && !utils.dateRangeIsValid({ startDate: selectedStartDate, endDate: selectedDate })) {
783
+ if (!shouldFireIfInvalid && !utils.isDateRangeValid({ startDate: selectedStartDate, endDate: selectedDate })) {
781
784
  return;
782
785
  }
783
786
  onSelectDateRange(selectedStartDate, selectedDate);
@@ -852,7 +855,8 @@ const DateTimeRangePicker = ({
852
855
  setEndDate: setSelectedEndDate,
853
856
  setStartDate: setSelectedStartDate,
854
857
  shouldShowCustomRange,
855
- showCustomDateRange: setShouldShowCustomRange
858
+ showCustomDateRange: setShouldShowCustomRange,
859
+ timezone
856
860
  }
857
861
  ),
858
862
  shouldShowCustomRange && /* @__PURE__ */ jsxRuntime.jsx(