@stenajs-webui/calendar 15.7.0 → 16.0.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/util/date/DateFormats.ts","../src/util/calendar/StateModifier.ts","../src/features/today-state/UseHighlightToday.ts","../src/util/calendar/CalendarDataFactory.ts","../src/util/calendar/StateHelper.ts","../src/components/calendar/CalendarTheme.tsx","../src/util/date/DateMinMaxValidator.ts","../src/components/calendar/DisabledDayWrapper.tsx","../src/components/calendar/renderers/WeekNumberCell.tsx","../src/components/calendar/CalendarWeek.tsx","../src/components/calendar/renderers/WeekDayCell.tsx","../src/components/calendar/renderers/CalendarDay.tsx","../src/components/calendar/CalendarMonth.tsx","../../../node_modules/style-inject/dist/style-inject.es.js","../src/components/calendar/Calendar.tsx","../src/features/month-switcher/hooks/UseSelectedMonthStepperLogic.ts","../src/features/month-switcher/MonthSwitcherBelow.tsx","../src/features/month-picker/MonthPickerCell.tsx","../src/features/month-picker/MonthPicker.tsx","../src/features/preset-picker/PresetFactory.ts","../src/features/preset-picker/PresetPicker.tsx","../src/features/year-picker/YearPickerCell.tsx","../src/features/year-picker/YearPicker.tsx","../src/features/calendar-with-month-year-pickers/CalendarWithMonthYearPickers.tsx","../src/features/month-switcher/CalendarWithMonthSwitcher.tsx","../src/util/date-range/DateRangeTransformer.ts","../src/util/date-range/DateRangeValidator.ts","../src/features/date-range/hooks/UseDateRangeOnClickDayHandler.ts","../src/features/internal-panel-state/UseInternalPanelState.tsx","../src/components/calendar-types/date-range-calendar/hooks/UseDateRangeSelection.ts","../src/components/calendar-types/date-range-calendar/DateRangeCalendar.tsx","../src/components/calendar-types/date-range-calendar/hooks/UseDateRangeCalendarState.ts","../src/components/calendar-types/single-date-calendar/UseSingleDateSelection.ts","../src/components/calendar-types/single-date-calendar/SingleDateCalendar.tsx","../src/components/calendar-types/multi-date-calendar/UseMultiDateSelection.ts","../src/components/calendar-types/multi-date-calendar/MultiDateCalendar.tsx","../src/components/calendar-types/single-week-calendar/UseSingleWeekSelection.ts","../src/components/calendar-types/single-week-calendar/SingleWeekCalendar.tsx","../src/util/date/DateListTools.ts","../src/components/calendar-types/date-range-exclusion-calendar/UseDateRangeExclusionSelection.ts","../src/components/calendar-types/date-range-exclusion-calendar/DateRangeExclusionCalendar.tsx","../src/config/DefaultPopoverPlacement.ts","../src/features/internal-panel-state/UseCalendarPopoverUpdater.ts","../src/components/input-types/date-input/UseDateInput.tsx","../src/config/DefaultMaxDate.ts","../src/components/input-types/date-input/DateInput.tsx","../src/components/input-types/date-range-input/hooks/UseDateRangeInput.tsx","../src/components/input-types/date-range-input/DateRangeInput.tsx","../src/components/input-types/date-text-input/DateTextInput.tsx","../src/util/time/TimeStringFormatValidator.ts","../src/components/input-types/time-text-input/TimeTextInput.tsx","../src/features/dual-text-input/DualTextInput.tsx","../src/util/time/TimeTransformer.ts","../src/features/time-picker/TimePickerCell.tsx","../src/features/time-picker/TimePickerColumn.tsx","../src/features/time-picker/TimePicker.tsx","../src/components/input-types/date-time-input/hooks/UseDateRangeEffects.ts","../src/components/input-types/date-time-input/hooks/UseDateRangeHandlers.ts","../src/components/input-types/date-time-input/hooks/UseInputStates.ts","../src/components/input-types/date-time-input/hooks/UseUserInputHandlers.ts","../src/components/input-types/date-time-input/DateTimeInput.tsx","../src/components/input-types/date-range-dual-text-input/hooks/UseDateRangeEffects.ts","../src/components/input-types/date-range-dual-text-input/hooks/UseDateRangeHandlers.ts","../src/components/input-types/date-range-dual-text-input/hooks/UseInputStates.ts","../src/components/input-types/date-range-dual-text-input/hooks/UseUserInputHandlers.ts","../src/components/input-types/date-range-dual-text-input/DateRangeDualTextInput.tsx"],"sourcesContent":["export const DateFormats = {\n yearAndMonth: \"yyyy-MM\",\n fullDate: \"yyyy-MM-dd\",\n fullMonthName: \"LLLL\",\n fullDateAndTime: \"yyyy-MM-dd HH:mm\",\n fullDateAndTimeSystem: \"yyyy-MM-ddTHH:MM\",\n weekDayName: \"EEEE\", // Tuesday\n weekDayNameShort: \"EEE\", // Tue\n dateAndMonth: \"d MMM\", // 2 Jan\n monthAndDate: \"MMM do\", // Jan 2nd\n};\n","import {\n addDays,\n eachDayOfInterval,\n endOfMonth,\n format,\n getDate,\n getISOWeek,\n isAfter,\n isSameDay,\n max,\n min,\n startOfMonth,\n subDays,\n} from \"date-fns\";\nimport { last } from \"lodash\";\nimport {\n CalendarState,\n CalendarUserData,\n DayState,\n DayStateHighlight,\n StateForWeek,\n} from \"../../types/CalendarTypes\";\nimport { DateFormats } from \"../date/DateFormats\";\nimport { WeekData } from \"./CalendarDataFactory\";\n\nexport const buildDayStateForDateRange = (\n statePerMonth: CalendarUserData<DayState> = {},\n start?: Date,\n end?: Date\n): CalendarUserData<DayState> | undefined => {\n if (start && end && isAfter(end, start)) {\n return eachDayOfInterval({ start, end }).reduce(\n (result: CalendarUserData<DayState>, date: Date) => {\n const isFirstInRange = isSameDay(date, start);\n const isLastInRange = isSameDay(date, end);\n const highlights = isFirstInRange\n ? [\"selected\", \"selectedStart\", \"range\"]\n : isLastInRange\n ? [\"selected\", \"selectedEnd\", \"range\"]\n : [\"range\"];\n return addDayStateHighlights(result, date, highlights);\n },\n statePerMonth\n );\n }\n\n let state = statePerMonth;\n\n if (start) {\n state = addDayStateHighlights(state, start, [\"selected\", \"singleSelected\"]);\n }\n\n if (end) {\n state = addDayStateHighlights(state, end, [\"selected\", \"singleSelected\"]);\n }\n\n return state;\n};\n\nexport const buildDayStateForSingleMonth = (\n statePerMonth: CalendarUserData<DayState> = {},\n start: Date | undefined,\n end: Date | undefined,\n dateInFocus: Date\n): CalendarUserData<DayState> | undefined =>\n buildDayStateForRange(\n statePerMonth,\n start,\n end,\n startOfMonth(dateInFocus),\n endOfMonth(dateInFocus)\n );\n\nexport const buildDayStateForRange = (\n statePerMonth: CalendarUserData<DayState> = {},\n start: Date | undefined,\n end: Date | undefined,\n startLimit: Date,\n endLimit: Date\n): CalendarUserData<DayState> | undefined => {\n if (start && end) {\n return buildDayStateForDateRange(\n statePerMonth,\n max([start, subDays(startLimit, 1)]),\n min([end, addDays(endLimit, 1)])\n );\n } else {\n return buildDayStateForDateRange(statePerMonth, start, end);\n }\n};\n\nexport const setDayStateValue = (\n state: CalendarUserData<DayState> | undefined,\n date: Date,\n values: Partial<DayState>\n): CalendarUserData<DayState> => {\n const monthString = format(date, DateFormats.yearAndMonth);\n const weekNumber = getISOWeek(date);\n const dayInMonth = getDate(date);\n return {\n ...state,\n [monthString]: {\n ...(state && state[monthString]),\n [weekNumber]: {\n ...(state && state[monthString] && state[monthString][weekNumber]),\n [dayInMonth]: {\n ...(state &&\n state[monthString] &&\n state[monthString][weekNumber] &&\n state[monthString][weekNumber][dayInMonth]),\n ...values,\n },\n },\n },\n };\n};\n\nexport const setDayStateValueFunction = (\n state: CalendarUserData<DayState> | undefined,\n date: Date,\n setter: (dayState: DayState | undefined) => Partial<DayState>\n): CalendarUserData<DayState> => {\n const monthString = format(date, DateFormats.yearAndMonth);\n const weekNumber = getISOWeek(date);\n const dayInMonth = getDate(date);\n return {\n ...state,\n [monthString]: {\n ...(state && state[monthString]),\n [weekNumber]: {\n ...(state && state[monthString] && state[monthString][weekNumber]),\n [dayInMonth]: {\n ...(state &&\n state[monthString] &&\n state[monthString][weekNumber] &&\n state[monthString][weekNumber][dayInMonth]),\n ...setter(\n state &&\n state[monthString] &&\n state[monthString][weekNumber] &&\n state[monthString][weekNumber][dayInMonth]\n ),\n },\n },\n },\n };\n};\n\nexport const addDayStateHighlights = (\n calendarState: CalendarState | undefined,\n date: Date,\n highlights: Array<DayStateHighlight>\n): CalendarUserData<DayState> => {\n const month = date.getMonth() + 1;\n const monthString = `${date.getFullYear()}-${month < 10 ? \"0\" : \"\"}${month}`;\n const weekNumber = getISOWeek(date);\n const dayInMonth = getDate(date);\n const dayState: DayState | undefined =\n calendarState &&\n calendarState[monthString] &&\n calendarState[monthString][weekNumber] &&\n calendarState[monthString][weekNumber][dayInMonth];\n\n return {\n ...calendarState,\n [monthString]: {\n ...(calendarState && calendarState[monthString]),\n [weekNumber]: {\n ...(calendarState &&\n calendarState[monthString] &&\n calendarState[monthString][weekNumber]),\n [dayInMonth]: addDayStateHighlightsOnSingleDay(dayState, highlights),\n },\n },\n };\n};\n\nexport const addDayStateHighlightsOnSingleDay = (\n dayState: DayState | undefined,\n highlights: Array<DayStateHighlight>\n): DayState => {\n return {\n ...dayState,\n highlights: [...(dayState?.highlights ?? []), ...highlights],\n };\n};\n\nexport const addWeekStateHighlights = (\n calendarState: CalendarState | undefined,\n week: WeekData,\n highlights: Array<DayStateHighlight>\n): CalendarUserData<DayState> => {\n const date = week.days[0].date;\n const month = date.getMonth() + 1;\n const monthString = `${date.getFullYear()}-${month < 10 ? \"0\" : \"\"}${month}`;\n const weekNumber = week.weekNumber;\n\n let state = calendarState;\n week.days.forEach((day) => {\n state = addDayStateHighlights(state, day.date, highlights);\n });\n\n const weekState =\n state && state[monthString] ? state[monthString][weekNumber] : undefined;\n\n const newHighlights: Array<DayStateHighlight> =\n weekState && weekState.highlights\n ? [...weekState.highlights, ...highlights]\n : highlights;\n\n const newWeekState: StateForWeek = {\n ...weekState,\n highlights: newHighlights,\n };\n\n return {\n ...state,\n [monthString]: {\n ...(calendarState && calendarState[monthString]),\n [weekNumber]: newWeekState,\n },\n };\n};\n\nexport const addWeekRangeHighlights = (\n calendarState: CalendarState | undefined,\n week: WeekData\n): CalendarUserData<DayState> => {\n if (!week.days.length) {\n return { ...calendarState };\n }\n const startDate = week.days[0].date;\n const endDate = last(week.days)?.date;\n return {\n ...buildDayStateForDateRange(calendarState, startDate, endDate),\n };\n};\n","import { useMemo } from \"react\";\nimport { CalendarState } from \"../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../util/calendar/StateModifier\";\n\nexport const useHighlightToday = (\n enabled: boolean | undefined,\n statePerMonth: CalendarState | undefined\n) => {\n return useMemo(() => {\n return enabled\n ? addDayStateHighlights(statePerMonth, new Date(), [\"today\"])\n : statePerMonth;\n }, [enabled, statePerMonth]);\n};\n","import {\n addDays,\n addHours,\n addWeeks,\n eachDayOfInterval,\n endOfMonth,\n format,\n getDate,\n getISODay,\n getISOWeek,\n getMonth,\n getYear,\n isSameDay,\n startOfISOWeek,\n startOfMonth,\n} from \"date-fns\";\nimport { DateFormats } from \"../date/DateFormats\";\n\nexport enum Month {\n JANUARY = 0,\n FEBRUARY,\n MARCH,\n APRIL,\n MAY,\n JUNE,\n JULY,\n AUGUST,\n SEPTEMBER,\n OCTOBER,\n NOVEMBER,\n DECEMBER,\n}\n\nexport enum WeekDay {\n SUNDAY = 0,\n MONDAY,\n TUESDAY,\n WEDNESDAY,\n THURSDAY,\n FRIDAY,\n SATURDAY,\n}\n\nexport interface DayData {\n name: string;\n date: Date; // YYYY-MM\n dateString: string; // YYYY-MM\n weekNumber: number;\n year: number; // 2018\n month: number; // 0-11\n dayOfMonth: number; // 1-31\n dayOfWeek: number; // 1-7\n isFirstDayOfWeek: boolean;\n isLastDayOfWeek: boolean;\n isFirstDayOfMonth: boolean;\n isLastDayOfMonth: boolean;\n}\n\nexport interface WeekData {\n weekNumber: number;\n startMonth: number;\n startYear: number;\n endMonth: number;\n endYear: number;\n isLastWeekOfMonth: boolean;\n days: Array<DayData>;\n}\n\nexport interface MonthData {\n monthString: string;\n name: string;\n year: number;\n monthInYear: number;\n weeks: Array<WeekData>;\n}\n\nexport const getMonthsInYear = (\n year: number,\n startMonth: number,\n numMonths: number\n): Array<MonthData> => {\n const months = [];\n for (let i = 0; i < numMonths; i++) {\n months.push(getMonthInYear(year, startMonth + i));\n }\n return months;\n};\n\nexport const getMonthInYear = (year: number, month: number): MonthData => {\n const yearToUse = year + Math.floor(month / 12);\n const monthToUse = month % 12;\n const firstDayOfMonth = new Date(yearToUse, monthToUse, 1);\n return {\n monthString: format(firstDayOfMonth, DateFormats.yearAndMonth),\n name: format(firstDayOfMonth, DateFormats.fullMonthName),\n year: yearToUse,\n monthInYear: monthToUse,\n weeks: getWeeksForMonth(yearToUse, monthToUse),\n };\n};\n\nexport const getWeeksForMonth = (\n year: number,\n month: number,\n forceSixWeeks: boolean = true\n): Array<WeekData> => {\n const firstDayOfMonth = new Date(year, month, 1);\n const firstDayOfFirstWeek = startOfISOWeek(firstDayOfMonth);\n const weeks = [];\n for (let i = 0; i < 6; i++) {\n const week = getWeekForDate(addWeeks(firstDayOfFirstWeek, i));\n if (i > 0 && week.startMonth !== month && !forceSixWeeks) {\n return weeks;\n }\n weeks.push(week);\n }\n return weeks;\n};\n\nexport const getWeekForDate = (firstDayOfWeek: Date): WeekData => {\n const isLastWeekOfMonth =\n getMonth(addDays(firstDayOfWeek, 7)) !== getMonth(firstDayOfWeek);\n return {\n weekNumber: getISOWeek(firstDayOfWeek),\n startMonth: getMonth(firstDayOfWeek),\n startYear: getYear(firstDayOfWeek),\n endMonth: getMonth(addDays(firstDayOfWeek, 6)),\n endYear: getYear(addDays(firstDayOfWeek, 6)),\n days: getDaysForWeekForDate(firstDayOfWeek),\n isLastWeekOfMonth,\n };\n};\n\nexport const createDay = (date: Date): DayData => {\n const dayOfWeek = getISODay(date);\n return {\n date,\n name: format(date, \"EEE\"),\n dateString: format(addHours(date, 12), DateFormats.fullDate),\n weekNumber: getISOWeek(date),\n year: getYear(date),\n month: getMonth(date),\n dayOfMonth: getDate(date),\n dayOfWeek,\n isFirstDayOfWeek: dayOfWeek === 1,\n isLastDayOfWeek: dayOfWeek === 7,\n isFirstDayOfMonth: isSameDay(startOfMonth(date), date),\n isLastDayOfMonth: isSameDay(endOfMonth(date), date),\n };\n};\n\nexport const getDaysForWeekForDate = (firstDayOfWeek: Date): Array<DayData> => {\n return eachDayOfInterval({\n start: firstDayOfWeek,\n end: addDays(firstDayOfWeek, 6),\n }).map(createDay);\n};\n\nexport const getStartDateOfISOWeek = (\n weekNumber: number,\n year: number\n): Date => {\n const simple = new Date(year, 0, 1 + (weekNumber - 1) * 7);\n const dayOfWeek = simple.getDay();\n const isoWeekStart = simple;\n if (dayOfWeek <= 4) {\n isoWeekStart.setDate(simple.getDate() - simple.getDay() + 1);\n } else {\n isoWeekStart.setDate(simple.getDate() + 8 - simple.getDay());\n }\n return isoWeekStart;\n};\n\nexport const calculateOverflowingMonth = (\n year: number,\n month: number\n): { year: number; month: number } => {\n if (month > Month.DECEMBER) {\n return { year: year + Math.floor(month / 12), month: month % 12 };\n }\n if (month < Month.JANUARY) {\n return { year: year + Math.floor(month / 12), month: 12 + (month % 12) };\n }\n return { year, month };\n};\n","import { DayState, DayStateHighlight } from \"../../types/CalendarTypes\";\n\nexport const dayHasHighlight = (\n dayState: DayState | undefined,\n defaultHighlights: Array<DayStateHighlight> | undefined,\n highlight: string\n): boolean => {\n if (defaultHighlights && defaultHighlights.indexOf(highlight) >= 0) {\n return true;\n }\n if (\n dayState &&\n dayState.highlights &&\n dayState.highlights.indexOf(highlight) >= 0\n ) {\n return true;\n }\n return false;\n};\n\nexport const dayHighlightSelect = <T>(\n dayState: DayState | undefined,\n defaultHighlights: Array<DayStateHighlight> | undefined,\n highlightsOrBoolean: Array<string | boolean>,\n returnValues: Array<T>,\n fallbackValue?: T\n): T | undefined => {\n if (highlightsOrBoolean.length !== returnValues.length) {\n throw new Error(\n \"Select highlight failed, number of values do not equal number of highlights.\"\n );\n }\n if (highlightsOrBoolean.length === 0) {\n return fallbackValue;\n }\n for (let i = 0; i < highlightsOrBoolean.length; i++) {\n if (typeof highlightsOrBoolean[i] === \"boolean\" && highlightsOrBoolean[i]) {\n return returnValues[i];\n }\n if (\n typeof highlightsOrBoolean[i] === \"string\" &&\n dayHasHighlight(\n dayState,\n defaultHighlights,\n highlightsOrBoolean[i] as string\n )\n ) {\n return returnValues[i];\n }\n }\n return fallbackValue;\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextProps } from \"@stenajs-webui/core\";\nimport { CSSProperties } from \"react\";\nimport { DayState, DayStateHighlight } from \"../../types/CalendarTypes\";\n\nimport {\n DayData,\n MonthData,\n WeekData,\n} from \"../../util/calendar/CalendarDataFactory\";\nimport { dayHighlightSelect } from \"../../util/calendar/StateHelper\";\n\nexport interface CalendarTheme<TUserData = {}> {\n width: string;\n height: string;\n WeekNumber: WeekNumberTheme;\n WeekDay: WeekDayTheme;\n CalendarDay: CalendarDayTheme<TUserData>;\n CalendarMonth: CalendarMonthTheme;\n}\n\nexport interface WeekNumberTheme {\n backgroundColor: string;\n textColor?: string;\n clickableTextColor?: string;\n show?: boolean;\n}\n\nexport interface CalendarMonthTheme {\n headerTextColor?: string;\n cellSpacing?: string;\n headerLeftIcon?: IconDefinition;\n headerRightIcon?: IconDefinition;\n}\n\nexport interface WeekDayTheme {\n textColor?: string;\n clickableTextColor?: string;\n}\n\nexport type CalendarStyleProvider<TUserData, TResult> = (\n defaultHighlights: Array<DayStateHighlight> | undefined,\n dayState: DayState | undefined,\n day: DayData,\n week: WeekData,\n month: MonthData,\n userData?: TUserData\n) => TResult;\n\nexport type CalendarWrapperStyleProvider<TUserData> = CalendarStyleProvider<\n TUserData,\n CSSProperties | undefined\n>;\n\ntype TextPropsProvider<TUserData> = CalendarStyleProvider<\n TUserData,\n TextProps | undefined\n>;\n\nexport interface CalendarDayTheme<TUserData> {\n tdStyle?: CalendarWrapperStyleProvider<TUserData>;\n innerWrapperStyle?: CalendarWrapperStyleProvider<TUserData>;\n cellWrapperStyle?: CalendarWrapperStyleProvider<TUserData>;\n textProps?: TextPropsProvider<TUserData>;\n}\n\nexport interface CalendarDefaultWrapperColors {\n selectedBackground: string;\n rangeBackground: string;\n todayBackground: string;\n borderColor?: string;\n borderRadius?: string;\n rangeBorderRadius?: string;\n}\n\nexport const defaultWrapperStyleProvider = ({\n selectedBackground,\n todayBackground,\n rangeBackground,\n borderColor = \"transparent\",\n}: CalendarDefaultWrapperColors): CalendarWrapperStyleProvider<{}> => (\n defaultHighlights,\n dayState,\n day,\n _,\n month\n) => {\n let style = {};\n\n const backgroundColor = dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selected\", \"range\", \"today\", day.month === month.monthInYear],\n [selectedBackground, rangeBackground, todayBackground, \"#fff\"],\n \"transparent\"\n );\n\n return {\n ...style,\n backgroundColor,\n borderTopLeftRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedStart\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n borderBottomLeftRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedStart\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n borderTopRightRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedEnd\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n borderBottomRightRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedEnd\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n boxSizing: \"border-box\",\n };\n};\n\ninterface DefaultTextColors {\n disabledColor: string;\n inOtherMonthColor: string;\n selectedColor: string;\n rangeTextColor?: string;\n}\n\nexport const defaultTextPropsProvider = ({\n selectedColor,\n disabledColor,\n inOtherMonthColor,\n rangeTextColor,\n}: DefaultTextColors): TextPropsProvider<{}> => {\n return (defaultHighlights, dayState, day, _, month) => {\n const isOtherMonth = day.month !== month.monthInYear;\n const color = dayHighlightSelect(\n dayState,\n defaultHighlights,\n [isOtherMonth, \"selected\", \"range\", \"enabled\", \"disabled\"],\n [\n inOtherMonthColor,\n selectedColor,\n rangeTextColor,\n undefined,\n disabledColor,\n ]\n );\n return {\n color,\n };\n };\n};\n\nexport const defaultCalendarTheme: CalendarTheme = {\n width: \"var(--swui-calendar-day-width)\",\n height: \"var(--swui-calendar-day-height)\",\n WeekNumber: {\n backgroundColor: \"var(--swui-calendar-week-number-bg-color)\",\n textColor: \"var(--swui-calendar-week-number-text-color)\",\n clickableTextColor: \"var(--swui-calendar-week-number-clickable-text-color)\",\n show: true,\n },\n WeekDay: {\n textColor: \"var(--swui-calendar-week-day-text-color)\",\n clickableTextColor: \"var(--swui-calendar-week-day-clickable-text-color)\",\n },\n CalendarDay: {\n tdStyle: defaultWrapperStyleProvider({\n selectedBackground: \"var(--swui-calendar-wrapper-selected-background)\",\n rangeBackground: \"var(--swui-calendar-wrapper-range-background)\",\n todayBackground: \"var(--swui-calendar-wrapper-today-background)\",\n }),\n textProps: defaultTextPropsProvider({\n selectedColor: \"var(--swui-calendar-text-selected-color)\",\n disabledColor: \"var(--swui-calendar-text-disabled-color)\",\n inOtherMonthColor: \"var(--swui-calendar-text-in-other-month-color)\",\n }),\n },\n CalendarMonth: {\n headerTextColor: \"var(--swui-calendar-week-day-text-color)\",\n },\n};\n\nexport const extranetCalendarTheme: CalendarTheme = {\n ...defaultCalendarTheme,\n width: \"37px\",\n height: \"37px\",\n};\n","import { isAfter, isBefore, isSameDay } from \"date-fns\";\n\nexport const isDateInMinMaxRange = (\n date: Date,\n min: Date | undefined,\n max: Date | undefined\n): boolean => {\n if (min && isBefore(date, min)) {\n return isSameDay(date, min);\n }\n if (max && isAfter(date, max)) {\n return isSameDay(date, max);\n }\n return true;\n};\n","import * as React from \"react\";\nimport { useMemo } from \"react\";\nimport {\n CalendarDayProps,\n OptionalMinMaxDates,\n} from \"../../types/CalendarTypes\";\nimport { addDayStateHighlightsOnSingleDay } from \"../../util/calendar/StateModifier\";\nimport { isDateInMinMaxRange } from \"../../util/date/DateMinMaxValidator\";\n\ninterface DisabledDayWrapperProps<T>\n extends CalendarDayProps<T>,\n OptionalMinMaxDates {\n dayComponent: React.ComponentType<CalendarDayProps<T>>;\n}\n\nexport const DisabledDayWrapper = function DisabledDayWrapper<T>({\n dayComponent: DayComponent,\n minDate,\n maxDate,\n dayState,\n day,\n ...props\n}: DisabledDayWrapperProps<T>) {\n const activeDayState = useMemo(\n () =>\n !isDateInMinMaxRange(day.date, minDate, maxDate)\n ? addDayStateHighlightsOnSingleDay(dayState, [\"disabled\"])\n : dayState,\n [day.date, dayState, maxDate, minDate]\n );\n\n return <DayComponent day={day} {...props} dayState={activeDayState} />;\n};\n","import { Box, Clickable, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { OnClickWeek } from \"../../../types/CalendarTypes\";\nimport { WeekData } from \"../../../util/calendar/CalendarDataFactory\";\nimport { CalendarTheme } from \"../CalendarTheme\";\n\nexport interface WeekNumberCellProps {\n week: WeekData;\n onClickWeek?: OnClickWeek;\n theme: CalendarTheme;\n background?: JSX.Element;\n prefix?: string;\n backgroundColor?: string;\n}\n\nexport const WeekNumberCell: React.FC<WeekNumberCellProps> = ({\n onClickWeek,\n theme,\n week,\n background,\n backgroundColor,\n prefix,\n}) => {\n const content = (\n <Box\n width={theme.width}\n height={theme.height}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n {background && <Box position={\"absolute\"}>{background}</Box>}\n <Box position={\"absolute\"}>\n <Text\n color={\n onClickWeek\n ? theme.WeekNumber.clickableTextColor\n : theme.WeekNumber.textColor\n }\n >\n {prefix}\n {week.weekNumber}\n </Text>\n </Box>\n </Box>\n );\n return (\n <Box\n background={backgroundColor || theme.WeekNumber.backgroundColor}\n position={\"relative\"}\n >\n {onClickWeek ? (\n <Clickable\n borderRadius={\"var(--swui-calendar-day-border-radius)\"}\n onClick={(ev) => onClickWeek(week, ev)}\n disableFocusHighlight={!onClickWeek}\n >\n {content}\n </Clickable>\n ) : (\n content\n )}\n </Box>\n );\n};\n","import * as React from \"react\";\nimport {\n CalendarDayProps,\n CalendarUserWeekData,\n DayState,\n DayStateHighlight,\n ExtraDayContentProps,\n OnClickDay,\n OnClickWeek,\n OptionalMinMaxDates,\n RenderWeekNumber,\n} from \"../../types/CalendarTypes\";\nimport { MonthData, WeekData } from \"../../util/calendar/CalendarDataFactory\";\n\nimport { CalendarTheme } from \"./CalendarTheme\";\nimport { DisabledDayWrapper } from \"./DisabledDayWrapper\";\nimport { WeekNumberCell } from \"./renderers/WeekNumberCell\";\n\nexport interface CalendarWeekProps<T> extends OptionalMinMaxDates {\n dayComponent: React.ComponentType<CalendarDayProps<T>>;\n week: WeekData;\n month: MonthData;\n statePerWeekDay?: CalendarUserWeekData<DayState>;\n userDataPerWeekDay?: CalendarUserWeekData<T>;\n onClickWeek?: OnClickWeek;\n onClickDay?: OnClickDay<T>;\n theme: CalendarTheme;\n renderWeekNumber?: RenderWeekNumber;\n extraDayContent?: React.ComponentType<ExtraDayContentProps<T>>;\n defaultHighlights?: Array<DayStateHighlight>;\n}\n\nexport function CalendarWeek<T>({\n week,\n month,\n dayComponent,\n statePerWeekDay,\n userDataPerWeekDay,\n minDate,\n maxDate,\n onClickWeek,\n onClickDay,\n theme,\n renderWeekNumber,\n extraDayContent,\n defaultHighlights,\n}: CalendarWeekProps<T>) {\n return (\n <tr key={week.weekNumber}>\n {theme.WeekNumber.show && (\n <td>\n {renderWeekNumber ? (\n renderWeekNumber(week, theme, onClickWeek)\n ) : (\n <WeekNumberCell\n week={week}\n onClickWeek={onClickWeek}\n theme={theme}\n />\n )}\n </td>\n )}\n {week.days.map((day) => (\n <DisabledDayWrapper\n dayComponent={dayComponent}\n key={day.dateString}\n day={day}\n week={week}\n month={month}\n dayState={statePerWeekDay && statePerWeekDay[day.dayOfMonth]}\n userData={userDataPerWeekDay && userDataPerWeekDay[day.dayOfMonth]}\n onClickDay={onClickDay}\n theme={theme}\n extraDayContent={extraDayContent}\n defaultHighlights={defaultHighlights}\n minDate={minDate}\n maxDate={maxDate}\n />\n ))}\n </tr>\n );\n}\n","import { Box, Clickable, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { OnClickWeekDay } from \"../../../types/CalendarTypes\";\nimport { DayData } from \"../../../util/calendar/CalendarDataFactory\";\nimport { CalendarTheme } from \"../CalendarTheme\";\n\nexport interface WeekDayCellProps {\n onClickWeekDay?: OnClickWeekDay;\n day: DayData;\n theme: CalendarTheme;\n}\n\nexport const WeekDayCell = ({\n onClickWeekDay,\n day,\n theme,\n}: WeekDayCellProps) => {\n const content = (\n <Box\n width={theme.width}\n height={theme.height}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n <Text\n size={\"small\"}\n color={\n onClickWeekDay\n ? theme.WeekDay.clickableTextColor\n : theme.WeekDay.textColor\n }\n >\n {day.name}\n </Text>\n </Box>\n );\n\n if (onClickWeekDay) {\n return (\n <Clickable\n borderRadius={\"var(--swui-calendar-day-border-radius)\"}\n onClick={(ev) => onClickWeekDay(day.dayOfWeek, ev)}\n disableFocusHighlight={!onClickWeekDay}\n >\n {content}\n </Clickable>\n );\n }\n\n return content;\n};\n","import styled from \"@emotion/styled\";\nimport { Box, Clickable, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport {\n CalendarDayProps,\n DayState,\n DayStateHighlight,\n} from \"../../../types/CalendarTypes\";\nimport { dayHighlightSelect } from \"../../../util/calendar/StateHelper\";\n\nexport const CalendarDay = function CalendarDay<T extends {}>({\n day,\n week,\n month,\n dayState,\n userData,\n onClickDay,\n theme,\n extraDayContent: ExtraDayContent,\n defaultHighlights,\n}: CalendarDayProps<T>) {\n const content = (\n <Box\n width={\"100%\"}\n height={\"100%\"}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n <Text\n {...(theme.CalendarDay.textProps &&\n theme.CalendarDay.textProps(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n ))}\n >\n {day.dayOfMonth}\n </Text>\n </Box>\n );\n\n const WrapperTd = styled.td({\n ...(theme.CalendarDay.tdStyle &&\n theme.CalendarDay.tdStyle(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n )),\n });\n\n const InnerWrapperDiv = styled.div({\n ...(theme.CalendarDay.innerWrapperStyle &&\n theme.CalendarDay.innerWrapperStyle(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n )),\n width: \"100%\",\n height: \"100%\",\n });\n\n const CellWrapperDiv = styled.div({\n ...(theme.CalendarDay.cellWrapperStyle &&\n theme.CalendarDay.cellWrapperStyle(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n )),\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n });\n\n return (\n <WrapperTd>\n <InnerWrapperDiv>\n <CellWrapperDiv>\n {day.month === month.monthInYear && (\n <>\n {ExtraDayContent && (\n <ExtraDayContent\n week={week}\n month={month}\n day={day}\n dayState={dayState}\n theme={theme}\n userData={userData}\n />\n )}\n {onClickDay && isClickable(defaultHighlights, dayState) ? (\n <Clickable\n onClick={(ev) => onClickDay(day, userData, ev)}\n style={{ width: \"100%\", height: \"100%\" }}\n borderRadius={\"var(--swui-calendar-day-border-radius)\"}\n >\n {content}\n </Clickable>\n ) : (\n <>{content}</>\n )}\n </>\n )}\n </CellWrapperDiv>\n </InnerWrapperDiv>\n </WrapperTd>\n );\n};\n\nconst isClickable = (\n defaultHighlights: Array<DayStateHighlight> | undefined,\n dayState: DayState | undefined\n): boolean =>\n !!dayHighlightSelect<boolean>(\n dayState,\n defaultHighlights,\n [\"enabled\", \"disabled\"],\n [true, false],\n true\n );\n","import { Box, Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport {\n CalendarDayProps,\n CalendarOnClicks,\n CalendarUserMonthData,\n DayState,\n DayStateHighlight,\n ExtraDayContentProps,\n OptionalMinMaxDates,\n Renderers,\n} from \"../../types/CalendarTypes\";\nimport {\n DayData,\n MonthData,\n WeekData,\n} from \"../../util/calendar/CalendarDataFactory\";\nimport { CalendarTheme, defaultCalendarTheme } from \"./CalendarTheme\";\nimport { CalendarWeek } from \"./CalendarWeek\";\nimport { WeekDayCell } from \"./renderers/WeekDayCell\";\nimport { CalendarDay } from \"./renderers/CalendarDay\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface CalendarMonthProps<T>\n extends CalendarOnClicks<T>,\n Renderers,\n OptionalMinMaxDates {\n month: MonthData;\n dayComponent?: React.ComponentType<CalendarDayProps<T>>;\n userDataPerWeek?: CalendarUserMonthData<T>;\n statePerWeek?: CalendarUserMonthData<DayState>;\n theme?: CalendarTheme;\n headerLeftContent?: React.ReactElement<{}>;\n headerRightContent?: React.ReactElement<{}>;\n extraDayContent?: React.ComponentType<ExtraDayContentProps<T>>;\n defaultHighlights?: Array<DayStateHighlight>;\n}\n\nexport function CalendarMonth<T>({\n month,\n dayComponent = CalendarDay,\n statePerWeek,\n userDataPerWeek,\n minDate,\n maxDate,\n onClickDay,\n onClickWeek,\n onClickWeekDay,\n onClickMonth,\n onClickYear,\n renderWeekNumber,\n renderWeekDay,\n headerLeftContent,\n headerRightContent,\n theme = defaultCalendarTheme,\n extraDayContent,\n defaultHighlights,\n}: CalendarMonthProps<T>) {\n const showWeekNumber = theme.WeekNumber.show;\n\n return (\n <>\n <Box alignItems={\"stretch\"}>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"32px\"}\n >\n <Box alignItems={\"center\"}>{headerLeftContent}</Box>\n\n <Row alignItems={\"center\"}>\n <Row width={\"104px\"} justifyContent={\"center\"}>\n {onClickMonth ? (\n <FlatButton\n onClick={() => onClickMonth(month)}\n label={month.name}\n />\n ) : (\n <Text>{month.name}</Text>\n )}\n </Row>\n <Space />\n <Row width={\"64px\"} justifyContent={\"center\"}>\n {onClickYear ? (\n <FlatButton\n onClick={() => onClickYear(month.year)}\n label={String(month.year)}\n />\n ) : (\n <Text>{month.year}</Text>\n )}\n </Row>\n </Row>\n\n <Box alignItems={\"center\"}>{headerRightContent}</Box>\n </Row>\n\n <table>\n <tbody>\n <tr>\n {showWeekNumber && (\n <td>\n <Box\n width={theme.width}\n height={theme.height}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n <Text\n size={\"small\"}\n color={theme.CalendarMonth.headerTextColor}\n >\n W\n </Text>\n </Box>\n </td>\n )}\n {month.weeks[0].days.map((day: DayData) => (\n <td key={day.name}>\n {renderWeekDay ? (\n renderWeekDay(day.name, theme, onClickWeekDay)\n ) : (\n <WeekDayCell\n day={day}\n onClickWeekDay={onClickWeekDay}\n theme={theme}\n />\n )}\n </td>\n ))}\n </tr>\n {month.weeks.map((week: WeekData) => (\n <CalendarWeek<T>\n key={week.weekNumber}\n month={month}\n week={week}\n dayComponent={dayComponent}\n statePerWeekDay={statePerWeek && statePerWeek[week.weekNumber]}\n userDataPerWeekDay={\n userDataPerWeek && userDataPerWeek[week.weekNumber]\n }\n onClickDay={onClickDay}\n onClickWeek={onClickWeek}\n theme={theme}\n renderWeekNumber={renderWeekNumber}\n extraDayContent={extraDayContent}\n defaultHighlights={defaultHighlights}\n minDate={minDate}\n maxDate={maxDate}\n />\n ))}\n </tbody>\n </table>\n </Box>\n </>\n );\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { getMonth, getYear, parse } from \"date-fns\";\nimport { chunk } from \"lodash\";\nimport * as React from \"react\";\nimport { useHighlightToday } from \"../../features/today-state/UseHighlightToday\";\nimport {\n CalendarOnClicks,\n CalendarProps,\n CalendarUserData,\n DayState,\n Renderers,\n} from \"../../types/CalendarTypes\";\nimport {\n calculateOverflowingMonth,\n getMonthInYear,\n getMonthsInYear,\n MonthData,\n} from \"../../util/calendar/CalendarDataFactory\";\n\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport { CalendarTheme, defaultCalendarTheme } from \"./CalendarTheme\";\nimport { CalendarDay } from \"./renderers/CalendarDay\";\nimport styles from \"./Calendar.module.css\";\nimport { useMemo } from \"react\";\n\ninterface CalendarPanelProps<T>\n extends CalendarProps<T>,\n CalendarOnClicks<T>,\n Renderers {\n year: number;\n month: number;\n monthRows: Array<Array<MonthData>>;\n userDataPerMonth?: CalendarUserData<T>;\n statePerMonth?: CalendarUserData<DayState>;\n width?: string;\n height?: string;\n theme?: CalendarTheme;\n}\n\nfunction CalendarPanel<T extends {}>({\n monthRows,\n dayComponent = CalendarDay,\n userDataPerMonth,\n statePerMonth,\n minDate,\n maxDate,\n onClickDay,\n onClickWeekDay,\n onClickWeek,\n onClickMonth,\n onClickYear,\n renderWeekDay,\n renderWeekNumber,\n headerLeftContent,\n headerRightContent,\n extraDayContent,\n defaultHighlights,\n theme = defaultCalendarTheme,\n}: CalendarPanelProps<T>) {\n const minDateObj = useMemo(\n () => (minDate ? parse(minDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [minDate]\n );\n\n const maxDateObj = useMemo(\n () => (maxDate ? parse(maxDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [maxDate]\n );\n\n return (\n <div className={styles.calendar}>\n {monthRows.map((monthRow, rowIndex) => (\n <Spacing key={rowIndex}>\n <Row>\n {monthRow.map((month, index) => (\n <React.Fragment key={month.name}>\n {index > 0 && <Space />}\n <CalendarMonth<T>\n month={month}\n dayComponent={dayComponent}\n userDataPerWeek={\n userDataPerMonth && userDataPerMonth[month.monthString]\n }\n statePerWeek={\n statePerMonth && statePerMonth[month.monthString]\n }\n onClickDay={onClickDay}\n onClickWeekDay={onClickWeekDay}\n onClickWeek={onClickWeek}\n onClickMonth={onClickMonth}\n onClickYear={onClickYear}\n theme={theme}\n renderWeekNumber={renderWeekNumber}\n renderWeekDay={renderWeekDay}\n headerLeftContent={headerLeftContent}\n headerRightContent={headerRightContent}\n extraDayContent={extraDayContent}\n defaultHighlights={defaultHighlights}\n minDate={minDateObj}\n maxDate={maxDateObj}\n />\n </React.Fragment>\n ))}\n </Row>\n </Spacing>\n ))}\n </div>\n );\n}\n\nexport function Calendar<T extends {}>(props: CalendarProps<T>) {\n const initialDate = getInitialDate(props.year, props.month, props.date);\n const { year, month } = calculateOverflowingMonth(\n initialDate.year,\n initialDate.month\n );\n const monthRows = getMonthRows(\n year,\n month,\n props.numMonths,\n props.monthsPerRow\n );\n\n const statePerMonth = useHighlightToday(\n props.highlightToday,\n props.statePerMonth\n );\n\n return (\n <CalendarPanel<T>\n year={year}\n month={month}\n monthRows={monthRows}\n {...props}\n statePerMonth={statePerMonth}\n />\n );\n}\n\nconst getInitialDate = (year?: number, month?: number, date?: Date) => {\n if (month && year) {\n return {\n month,\n year,\n };\n }\n if (date) {\n return {\n month: getMonth(date),\n year: getYear(date),\n };\n }\n const now = new Date();\n return {\n month: getMonth(now),\n year: getYear(now),\n };\n};\n\nconst getMonthRows = (\n year: number,\n month: number,\n numMonths?: number,\n monthsPerRow?: number\n): Array<Array<MonthData>> => {\n if (numMonths == null) {\n return [[getMonthInYear(year, month)]];\n }\n if (monthsPerRow == null) {\n return [getMonthsInYear(year, month, numMonths)];\n }\n return chunk(getMonthsInYear(year, month, numMonths), monthsPerRow);\n};\n","import { addMonths, addYears, subMonths, subYears } from \"date-fns\";\nimport { useCallback } from \"react\";\n\nexport const useSelectedMonthStepperLogic = (\n dateInFocus: Date,\n setDateInFocus?: (dateInFocus: Date) => void,\n monthsPerRow?: number,\n numMonths?: number\n) => {\n const nextMonth = useCallback(() => {\n const d = addMonths(dateInFocus, monthsPerRow ?? numMonths ?? 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus, monthsPerRow, numMonths]);\n\n const nextYear = useCallback(() => {\n const d = addYears(dateInFocus, 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus]);\n\n const prevMonth = useCallback(() => {\n const d = subMonths(dateInFocus, monthsPerRow ?? numMonths ?? 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus, monthsPerRow, numMonths]);\n\n const prevYear = useCallback(() => {\n const d = subYears(dateInFocus, 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus]);\n\n return {\n nextMonth,\n prevMonth,\n nextYear,\n prevYear,\n };\n};\n","import { Indent, Row, Space } from \"@stenajs-webui/core\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { CalendarTheme } from \"../../components/calendar/CalendarTheme\";\nimport { faAngleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleLeft\";\nimport { faAngleRight } from \"@fortawesome/free-solid-svg-icons/faAngleRight\";\nimport { faAngleDoubleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleLeft\";\nimport { faAngleDoubleRight } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleRight\";\n\nexport interface WithMonthSwitcherBelowProps {\n theme: CalendarTheme;\n nextMonth: () => void;\n prevMonth: () => void;\n nextYear: () => void;\n prevYear: () => void;\n}\n\nexport const WithMonthSwitcherBelow: React.FC<WithMonthSwitcherBelowProps> = ({\n children,\n prevMonth,\n nextMonth,\n prevYear,\n nextYear,\n}) => (\n <div>\n {children}\n <Indent>\n <Row>\n <FlatButton onClick={prevYear} leftIcon={faAngleDoubleLeft} />\n <Space />\n <FlatButton onClick={prevMonth} leftIcon={faAngleLeft} />\n <Indent num={2} />\n <FlatButton onClick={nextMonth} leftIcon={faAngleRight} />\n <Space />\n <FlatButton onClick={nextYear} leftIcon={faAngleDoubleRight} />\n </Row>\n </Indent>\n <Space />\n </div>\n);\n","import * as React from \"react\";\nimport { useMemo } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { Month } from \"../../util/calendar/CalendarDataFactory\";\nimport { format } from \"date-fns\";\n\ninterface Props extends ValueAndOnValueChangeProps<Month> {\n month: Month;\n}\n\nexport const MonthPickerCell: React.FC<Props> = ({\n value,\n onValueChange,\n month,\n}) => {\n const label = useMemo(() => {\n const now = new Date(2000, month, 1);\n return format(now, \"MMM\");\n }, [month]);\n\n return (\n <Row width={\"64px\"} justifyContent={\"center\"} spacing={0.5} indent={0.5}>\n {value === month ? (\n <PrimaryButton\n label={label}\n onClick={() => onValueChange && onValueChange(month)}\n />\n ) : (\n <FlatButton\n label={label}\n onClick={() => onValueChange && onValueChange(month)}\n />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { Month } from \"../../util/calendar/CalendarDataFactory\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { Column, Row } from \"@stenajs-webui/core\";\nimport { MonthPickerCell } from \"./MonthPickerCell\";\n\nexport interface MonthPickerProps extends ValueAndOnValueChangeProps<Month> {}\n\nconst monthMatrix = [\n [Month.JANUARY, Month.FEBRUARY, Month.MARCH],\n [Month.APRIL, Month.MAY, Month.JUNE],\n [Month.JULY, Month.AUGUST, Month.SEPTEMBER],\n [Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER],\n];\n\nexport const MonthPicker: React.FC<MonthPickerProps> = ({\n value,\n onValueChange,\n}) => {\n return (\n <Column>\n {monthMatrix.map((monthRow) => (\n <Row key={monthRow[0]}>\n {monthRow.map((month) => (\n <MonthPickerCell\n key={month}\n month={month}\n onValueChange={onValueChange}\n value={value}\n />\n ))}\n </Row>\n ))}\n </Column>\n );\n};\n","import { PresetPage } from \"./CalendarPreset\";\nimport { addDays, subDays } from \"date-fns\";\n\nexport const createStandardDateRangePresets = (\n now: Date\n): Array<PresetPage> => [\n {\n label: \"Past\",\n presets: [\n { label: \"Last 3 days\", startDate: now, endDate: subDays(now, 2) },\n { label: \"Last 7 days\", startDate: now, endDate: subDays(now, 6) },\n { label: \"Last 30 days\", startDate: now, endDate: subDays(now, 29) },\n { label: \"Last 45 days\", startDate: now, endDate: subDays(now, 44) },\n ],\n },\n {\n label: \"Future\",\n presets: [\n { label: \"Next 3 days\", startDate: now, endDate: addDays(now, 2) },\n { label: \"Next 7 days\", startDate: now, endDate: addDays(now, 6) },\n { label: \"Next 30 days\", startDate: now, endDate: addDays(now, 29) },\n { label: \"Next 45 days\", startDate: now, endDate: addDays(now, 44) },\n ],\n },\n];\n","import * as React from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { createStandardDateRangePresets } from \"./PresetFactory\";\nimport { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport { faAngleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleLeft\";\nimport { faAngleRight } from \"@fortawesome/free-solid-svg-icons/faAngleRight\";\nimport { CalendarPreset } from \"./CalendarPreset\";\n\nexport interface PresetPickerProps {\n onClickPreset: (preset: CalendarPreset) => void;\n}\n\nexport const PresetPicker: React.FC<PresetPickerProps> = ({\n onClickPreset,\n}) => {\n const [pageIndex, setPageIndex] = useState(0);\n const pages = useMemo(() => createStandardDateRangePresets(new Date()), []);\n\n const currentPage = pages[pageIndex] ?? pages[0];\n\n return (\n <Column>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n width={\"200px\"}\n >\n <FlatButton\n size={\"small\"}\n leftIcon={faAngleLeft}\n disabled={pageIndex === 0}\n onClick={() => setPageIndex(pageIndex - 1)}\n />\n <Text>{currentPage.label}</Text>\n <FlatButton\n size={\"small\"}\n leftIcon={faAngleRight}\n disabled={pageIndex === pages.length - 1}\n onClick={() => setPageIndex(pageIndex + 1)}\n />\n </Row>\n <Space />\n <Column alignItems={\"center\"}>\n {currentPage.presets.map((preset) => (\n <React.Fragment key={preset.label}>\n <PrimaryButton\n label={preset.label}\n onClick={() => onClickPreset(preset)}\n />\n <Space />\n </React.Fragment>\n ))}\n </Column>\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\n\ninterface Props extends ValueAndOnValueChangeProps<number> {\n year: number;\n}\n\nexport const YearPickerCell: React.FC<Props> = ({\n value,\n onValueChange,\n year,\n}) => {\n const label = String(year);\n return (\n <Row width={\"64px\"} justifyContent={\"center\"} spacing={0.5} indent={0.5}>\n {value === year ? (\n <PrimaryButton label={label} onClick={() => onValueChange?.(year)} />\n ) : (\n <FlatButton label={label} onClick={() => onValueChange?.(year)} />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { Column, Row } from \"@stenajs-webui/core\";\nimport { YearPickerCell } from \"./YearPickerCell\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { faCaretLeft } from \"@fortawesome/free-solid-svg-icons/faCaretLeft\";\nimport { faCaretRight } from \"@fortawesome/free-solid-svg-icons/faCaretRight\";\nimport { chunk, range } from \"lodash\";\n\nexport interface YearPickerProps extends ValueAndOnValueChangeProps<number> {\n initialLastYear?: number;\n}\n\nexport const YearPicker: React.FC<YearPickerProps> = ({\n value,\n onValueChange,\n initialLastYear,\n}) => {\n const [lastYear, setLastYear] = useState(() => {\n if (value) {\n return value + 4;\n }\n return initialLastYear ?? new Date().getFullYear() + 4;\n });\n\n const yearRows = useMemo(() => {\n const startYear = lastYear - 11;\n return chunk(range(startYear, lastYear + 1), 3);\n }, [lastYear]);\n\n useEffect(() => {\n setLastYear((prev) => calculateLastYearInFocus(value, prev));\n }, [value]);\n\n return (\n <Row>\n <Column justifyContent={\"center\"}>\n <FlatButton\n leftIcon={faCaretLeft}\n onClick={() => setLastYear(lastYear - 3)}\n />\n </Column>\n <Column>\n {yearRows.map((yearRow) => (\n <Row key={yearRow[0]}>\n {yearRow.map((year) => (\n <YearPickerCell\n key={year}\n year={year}\n onValueChange={onValueChange}\n value={value}\n />\n ))}\n </Row>\n ))}\n </Column>\n <Column justifyContent={\"center\"}>\n <FlatButton\n leftIcon={faCaretRight}\n onClick={() => setLastYear(lastYear + 3)}\n />\n </Column>\n </Row>\n );\n};\n\nconst calculateLastYearInFocus = (\n value: number | undefined,\n lastYear: number\n): number => {\n if (value == null) {\n return lastYear;\n }\n if (value > lastYear) {\n const yearDiff = value - lastYear;\n const remaining = yearDiff % 3;\n const yearsToAdd = yearDiff - remaining + 3;\n return lastYear + yearsToAdd;\n }\n const startYear = lastYear - 11;\n if (value < startYear) {\n const yearDiff = startYear - value;\n const remaining = yearDiff % 3;\n const yearsToSubtract = yearDiff - remaining + 3;\n return lastYear - yearsToSubtract;\n }\n\n return lastYear;\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport { PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Calendar } from \"../../components/calendar/Calendar\";\nimport { CalendarProps } from \"../../types/CalendarTypes\";\nimport { Month } from \"../../util/calendar/CalendarDataFactory\";\nimport { MonthPicker } from \"../month-picker/MonthPicker\";\nimport { CalendarPreset } from \"../preset-picker/CalendarPreset\";\nimport { PresetPicker } from \"../preset-picker/PresetPicker\";\nimport { YearPicker } from \"../year-picker/YearPicker\";\nimport { CalendarPanelType } from \"./CalendarPanelType\";\n\ninterface CalendarWithMonthYearPickersProps<T>\n extends Omit<CalendarProps<T>, \"date\" | \"year\" | \"month\"> {\n dateInFocus: Date;\n setDateInFocus: (dateInFocus: Date) => void;\n currentPanel: CalendarPanelType;\n setCurrentPanel: (currentPanel: CalendarPanelType) => void;\n onSelectPreset: (preset: CalendarPreset) => void;\n}\n\nexport const CalendarWithMonthYearPickers = function CalendarWithMonthYearPickers<\n T\n>({\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n ...props\n}: CalendarWithMonthYearPickersProps<T>) {\n const onChangeSelectedMonth = useCallback(\n (selectedMonth: Month) => {\n const newDate = dateInFocus ? new Date(dateInFocus) : new Date();\n newDate.setMonth(selectedMonth);\n if (setDateInFocus) {\n setDateInFocus(newDate);\n }\n setCurrentPanel(\"calendar\");\n },\n [dateInFocus, setDateInFocus, setCurrentPanel]\n );\n\n const onChangeSelectedYear = useCallback(\n (selectedYear: number) => {\n const newDate = dateInFocus ? new Date(dateInFocus) : new Date();\n newDate.setFullYear(selectedYear);\n if (setDateInFocus) {\n setDateInFocus(newDate);\n }\n setCurrentPanel(\"calendar\");\n },\n [dateInFocus, setDateInFocus, setCurrentPanel]\n );\n\n const onClickYear = useCallback(() => {\n setCurrentPanel(\"year\");\n }, [setCurrentPanel]);\n\n const onClickMonth = useCallback(() => {\n setCurrentPanel(\"month\");\n }, [setCurrentPanel]);\n\n switch (currentPanel) {\n case \"calendar\":\n return (\n <>\n <Calendar<T>\n {...props}\n date={dateInFocus}\n onClickYear={onClickYear}\n onClickMonth={onClickMonth}\n />\n </>\n );\n case \"month\":\n return (\n <MonthPicker\n value={dateInFocus.getMonth()}\n onValueChange={onChangeSelectedMonth}\n />\n );\n case \"year\":\n return (\n <YearPicker\n value={dateInFocus.getFullYear()}\n onValueChange={onChangeSelectedYear}\n />\n );\n case \"presets\":\n return <PresetPicker onClickPreset={() => {}} />;\n\n default:\n return (\n <Box>\n <PrimaryButton\n label={\"Show calendar\"}\n onClick={() => setCurrentPanel(\"calendar\")}\n />\n </Box>\n );\n }\n};\n","import { FlatButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { Calendar } from \"../../components/calendar/Calendar\";\nimport { defaultCalendarTheme } from \"../../components/calendar/CalendarTheme\";\nimport { CalendarProps } from \"../../types/CalendarTypes\";\nimport { useSelectedMonthStepperLogic } from \"./hooks/UseSelectedMonthStepperLogic\";\nimport { WithMonthSwitcherBelow } from \"./MonthSwitcherBelow\";\nimport { CalendarWithMonthYearPickers } from \"../calendar-with-month-year-pickers/CalendarWithMonthYearPickers\";\nimport { faAngleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleLeft\";\nimport { faAngleRight } from \"@fortawesome/free-solid-svg-icons/faAngleRight\";\nimport { Column, Row, Space } from \"@stenajs-webui/core\";\nimport { faAngleDoubleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleLeft\";\nimport { faAngleDoubleRight } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleRight\";\nimport { CalendarPanelType } from \"../calendar-with-month-year-pickers/CalendarPanelType\";\nimport { CalendarPreset } from \"../preset-picker/CalendarPreset\";\n\nexport type MonthSwitcherPlacement = \"header\" | \"below\";\n\nexport interface CalendarWithMonthSwitcherProps<T> extends CalendarProps<T> {\n monthSwitcherPlacement?: MonthSwitcherPlacement;\n dateInFocus: Date;\n setDateInFocus: (dateInFocus: Date) => void;\n currentPanel: CalendarPanelType;\n setCurrentPanel: (currentPanel: CalendarPanelType) => void;\n onSelectPreset?: (preset: CalendarPreset) => void;\n hideYearPagination?: boolean;\n}\n\nconst noop = () => {};\n\nexport function CalendarWithMonthSwitcher<T>({\n monthSwitcherPlacement,\n theme = defaultCalendarTheme,\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n onSelectPreset = noop,\n hideYearPagination = false,\n ...calendarProps\n}: CalendarWithMonthSwitcherProps<T>) {\n const {\n nextMonth,\n prevMonth,\n nextYear,\n prevYear,\n } = useSelectedMonthStepperLogic(\n dateInFocus,\n setDateInFocus,\n calendarProps.monthsPerRow,\n calendarProps.numMonths\n );\n\n const placement = fallbackIfNoPlacement(\n monthSwitcherPlacement,\n calendarProps.numMonths\n );\n\n switch (placement) {\n case \"below\": {\n return (\n <WithMonthSwitcherBelow\n theme={theme}\n nextMonth={nextMonth}\n prevMonth={prevMonth}\n nextYear={nextYear}\n prevYear={prevYear}\n >\n <Calendar<T> {...calendarProps} theme={theme} date={dateInFocus} />\n </WithMonthSwitcherBelow>\n );\n }\n case \"header\": {\n return (\n <Column>\n <CalendarWithMonthYearPickers<T>\n {...calendarProps}\n theme={theme}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n onSelectPreset={onSelectPreset}\n headerLeftContent={\n <Row alignItems={\"center\"}>\n {!hideYearPagination && (\n <FlatButton\n size={\"small\"}\n onClick={prevYear}\n leftIcon={faAngleDoubleLeft}\n />\n )}\n <Space />\n <FlatButton\n size={\"small\"}\n onClick={prevMonth}\n leftIcon={faAngleLeft}\n />\n </Row>\n }\n headerRightContent={\n <Row alignItems={\"center\"}>\n <FlatButton\n size={\"small\"}\n onClick={nextMonth}\n leftIcon={faAngleRight}\n />\n <Space />\n {!hideYearPagination && (\n <FlatButton\n size={\"small\"}\n onClick={nextYear}\n leftIcon={faAngleDoubleRight}\n />\n )}\n </Row>\n }\n />\n </Column>\n );\n }\n default: {\n return (\n <Calendar<T> {...calendarProps} theme={theme} date={dateInFocus} />\n );\n }\n }\n}\n\nconst fallbackIfNoPlacement = (\n monthSwitcherPlacement: MonthSwitcherPlacement | undefined,\n numMonths: number | undefined\n): MonthSwitcherPlacement => {\n return monthSwitcherPlacement || (numMonths || 1) > 1 ? \"below\" : \"header\";\n};\n","import { DateRange, DateStringRange } from \"../../types/DateRange\";\nimport { format, parse } from \"date-fns\";\n\nexport const dateRangeToStrings = (dateRange: DateRange): DateStringRange => ({\n startDate: dateRange.startDate\n ? format(dateRange.startDate, \"yyyy-MM-dd\")\n : undefined,\n endDate: dateRange.endDate\n ? format(dateRange.endDate, \"yyyy-MM-dd\")\n : undefined,\n});\n\nexport const stringsToDateRange = ({\n startDate,\n endDate,\n}: DateStringRange): DateRange => {\n const now = new Date();\n return {\n startDate: startDate ? parse(startDate, \"yyyy-MM-dd\", now) : undefined,\n endDate: endDate ? parse(endDate, \"yyyy-MM-dd\", now) : undefined,\n };\n};\n","import { isAfter, isSameDay } from \"date-fns\";\nimport { DateRange, DateStringRange } from \"../../types/DateRange\";\nimport { dateRangeToStrings, stringsToDateRange } from \"./DateRangeTransformer\";\n\nexport const isDateRangeInvalid = ({\n startDate,\n endDate,\n}: DateRange): boolean =>\n Boolean(\n startDate &&\n endDate &&\n !isSameDay(startDate, endDate) &&\n isAfter(startDate, endDate)\n );\n\nexport const toggleDatesIfEndIsEarlierThanStart = (\n dateRange: DateRange\n): DateRange => {\n if (isDateRangeInvalid(dateRange)) {\n return {\n startDate: dateRange.endDate,\n endDate: dateRange.startDate,\n };\n }\n return dateRange;\n};\n\nexport const toggleDateStringsIfEndIsEarlierThanStart = (\n dateRange: DateStringRange\n): DateStringRange => {\n if (dateRange.startDate && dateRange.endDate) {\n return dateRangeToStrings(\n toggleDatesIfEndIsEarlierThanStart(stringsToDateRange(dateRange))\n );\n }\n return dateRange;\n};\n","import { useCallback } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../components/calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { OnClickDay } from \"../../../types/CalendarTypes\";\nimport { DayData } from \"../../../util/calendar/CalendarDataFactory\";\nimport {\n isDateRangeInvalid,\n toggleDatesIfEndIsEarlierThanStart,\n} from \"../../../util/date-range/DateRangeValidator\";\nimport { DateRange } from \"../../../types/DateRange\";\n\nexport const useDateRangeOnClickDayHandler = <T>(\n value: DateRange | undefined,\n onValueChange: ((dateRange: DateRange) => void) | undefined,\n focusedInput: DateRangeFocusedInput,\n setFocusedInput: (focusedInput: DateRangeFocusedInput) => void\n): OnClickDay<T> => {\n return useCallback(\n (day: DayData) => {\n const dateRange = {\n startDate: focusedInput === \"startDate\" ? day.date : value?.startDate,\n endDate: focusedInput === \"endDate\" ? day.date : value?.endDate,\n };\n\n if (!isDateRangeInvalid(dateRange)) {\n setFocusedInput(focusedInput === \"startDate\" ? \"endDate\" : \"startDate\");\n }\n onValueChange?.(toggleDatesIfEndIsEarlierThanStart(dateRange));\n },\n [\n focusedInput,\n onValueChange,\n setFocusedInput,\n value?.endDate,\n value?.startDate,\n ]\n );\n};\n","import { CalendarPanelType } from \"../calendar-with-month-year-pickers/CalendarPanelType\";\nimport { useCallback, useState } from \"react\";\n\nexport type OnChangePanel = (panel: CalendarPanelType) => void;\n\nexport interface UseInternalPanelStateProps {\n onChangePanel?: OnChangePanel;\n}\n\nexport const useInternalPanelState = (\n onChangePanel: OnChangePanel | undefined\n) => {\n const [currentPanel, _setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n const setCurrentPanel = useCallback(\n (currentPanel: CalendarPanelType) => {\n _setCurrentPanel(currentPanel);\n onChangePanel?.(currentPanel);\n },\n [onChangePanel]\n );\n\n return {\n currentPanel,\n setCurrentPanel,\n };\n};\n","import { useMemo, useState } from \"react\";\nimport { useDateRangeOnClickDayHandler } from \"../../../../features/date-range/hooks/UseDateRangeOnClickDayHandler\";\nimport { DateRangeCalendarProps } from \"../DateRangeCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { buildDayStateForDateRange } from \"../../../../util/calendar/StateModifier\";\nimport { useInternalPanelState } from \"../../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useDateRangeSelection = <T>({\n focusedInput,\n value,\n onValueChange,\n setFocusedInput,\n statePerMonth,\n onChangePanel,\n}: DateRangeCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n const [dateInFocus, setDateInFocus] = useState(() => new Date());\n\n const onClickDay = useDateRangeOnClickDayHandler(\n value,\n onValueChange,\n focusedInput,\n setFocusedInput\n );\n\n const statePerMonthWithSelection = useMemo(\n () =>\n buildDayStateForDateRange(\n statePerMonth,\n value?.startDate,\n value?.endDate\n ),\n [statePerMonth, value?.endDate, value?.startDate]\n );\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelection,\n currentPanel,\n setCurrentPanel,\n setDateInFocus,\n dateInFocus,\n };\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useDateRangeSelection } from \"./hooks/UseDateRangeSelection\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { DateRange } from \"../../../types/DateRange\";\n\nexport type DateRangeFocusedInput = \"startDate\" | \"endDate\" | undefined;\n\nexport interface DateRangeCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T>,\n ValueAndOnValueChangeProps<DateRange> {\n focusedInput?: DateRangeFocusedInput;\n setFocusedInput: (focusedInput: DateRangeFocusedInput) => void;\n}\n\nexport function DateRangeCalendar<T extends {}>(\n props: DateRangeCalendarProps<T>\n) {\n const dateRangeSelectionProps = useDateRangeSelection(props);\n return (\n <CalendarWithMonthSwitcher<T> {...props} {...dateRangeSelectionProps} />\n );\n}\n\nexport type DateRangeInputCalendarProps<T> = Omit<\n DateRangeCalendarProps<T>,\n | \"startDateInFocus\"\n | \"value\"\n | \"onValueChange\"\n | \"focusedInput\"\n | \"setFocusedInput\"\n | \"theme\"\n | \"currentPanel\"\n | \"setCurrentPanel\"\n>;\n","import { useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../DateRangeCalendar\";\n\nexport const useDateRangeCalendarState = () => {\n const [startDate, setStartDate] = useState<Date | undefined>();\n const [endDate, setEndDate] = useState<Date | undefined>();\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n return {\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n focusedInput,\n setFocusedInput,\n };\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { OnClickDay } from \"../../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport { SingleDateCalendarProps } from \"./SingleDateCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useSingleDateSelection = <T>({\n onChange,\n value,\n statePerMonth,\n onChangePanel,\n}: SingleDateCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const [dateInFocus, setDateInFocus] = useState(() => value ?? new Date());\n\n const onClickDay: OnClickDay<T> = useCallback(\n (day) => {\n if (onChange) {\n onChange(day.date);\n }\n },\n [onChange]\n );\n\n const statePerMonthWithSelectedDate = useMemo(\n () =>\n value\n ? addDayStateHighlights(statePerMonth, value, [\n \"selected\",\n \"singleSelected\",\n ])\n : statePerMonth,\n [statePerMonth, value]\n );\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelectedDate,\n date: value,\n currentPanel,\n setCurrentPanel,\n dateInFocus,\n setDateInFocus,\n };\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\n\nimport { useSingleDateSelection } from \"./UseSingleDateSelection\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\n\nexport interface SingleDateCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T> {\n value: Date | undefined;\n onChange: (value: Date | undefined) => void;\n}\n\nexport function SingleDateCalendar<T extends {}>(\n props: SingleDateCalendarProps<T>\n) {\n const singleDateSelectionProps = useSingleDateSelection(props);\n return (\n <CalendarWithMonthSwitcher<T> {...props} {...singleDateSelectionProps} />\n );\n}\n","import { isSameDay } from \"date-fns\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { OnClickDay } from \"../../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport { MultiDateCalendarProps } from \"./MultiDateCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useMultiDateSelection = <T>({\n onChange,\n value,\n statePerMonth,\n onChangePanel,\n}: MultiDateCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const [dateInFocus, setDateInFocus] = useState(() => new Date());\n\n const onClickDay: OnClickDay<T> = useCallback(\n (day) => {\n if (!onChange) {\n return;\n }\n const isSelected = value && value.find((d) => isSameDay(d, day.date));\n if (value && isSelected) {\n onChange(value.filter((v) => !isSameDay(v, day.date)));\n } else {\n onChange([...(value || []), day.date]);\n }\n },\n [onChange, value]\n );\n const statePerMonthWithSelectedDate = useMemo(() => {\n if (!value) {\n return statePerMonth;\n }\n return value.reduce(\n (stateSum, date) => addDayStateHighlights(stateSum, date, [\"selected\"]),\n statePerMonth\n );\n }, [statePerMonth, value]);\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelectedDate,\n currentPanel,\n setCurrentPanel,\n dateInFocus,\n setDateInFocus,\n };\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useMultiDateSelection } from \"./UseMultiDateSelection\";\nimport { UseInternalPanelStateProps } from \"../../../features/internal-panel-state/UseInternalPanelState\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\n\nexport interface MultiDateCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T>,\n UseInternalPanelStateProps {\n value?: Array<Date>;\n onChange?: (value: Array<Date>) => void;\n}\n\nexport function MultiDateCalendar<T extends {}>(\n props: MultiDateCalendarProps<T>\n) {\n const selectionProps = useMultiDateSelection(props);\n return <CalendarWithMonthSwitcher<T> {...props} {...selectionProps} />;\n}\n","import { useCallback, useMemo, useState } from \"react\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport {\n getStartDateOfISOWeek,\n getWeekForDate,\n WeekData,\n} from \"../../../util/calendar/CalendarDataFactory\";\nimport { addWeekRangeHighlights } from \"../../../util/calendar/StateModifier\";\nimport { SingleWeekCalendarProps } from \"./SingleWeekCalendar\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useSingleWeekSelection = <T>({\n onChange,\n value,\n statePerMonth,\n onChangePanel,\n}: SingleWeekCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const [dateInFocus, setDateInFocus] = useState(() => {\n const week = getWeekDataFromWeekString(value);\n if (!week) {\n return new Date();\n }\n return week.days[0].date;\n });\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const onClickDay = useCallback(\n (day) => {\n if (onChange) {\n onChange(getWeekStringFromWeekData(getWeekForDate(day.date)));\n }\n },\n [onChange]\n );\n const onClickWeek = useCallback(\n (week) => {\n if (onChange) {\n onChange(getWeekStringFromWeekData(week));\n }\n },\n [onChange]\n );\n\n const statePerMonthWithSelection = useMemo(() => {\n const weekData = getWeekDataFromWeekString(value);\n return weekData\n ? addWeekRangeHighlights(statePerMonth, weekData)\n : statePerMonth;\n }, [value, statePerMonth]);\n\n const date = useMemo(() => {\n const week = getWeekDataFromWeekString(value);\n if (!week) {\n return new Date();\n }\n return week.days[0].date;\n }, [value]);\n\n return {\n statePerMonth: statePerMonthWithSelection,\n date,\n dateInFocus,\n setDateInFocus,\n onClickDay,\n onClickWeek,\n currentPanel,\n setCurrentPanel,\n };\n};\n\nconst getWeekStringFromWeekData = (\n week: WeekData | undefined\n): string | undefined => {\n if (!week) {\n return undefined;\n }\n return `${week.endYear}-${week.weekNumber}`;\n};\n\nconst getWeekDataFromWeekString = (\n week: string | undefined\n): WeekData | undefined => {\n if (!week) {\n return undefined;\n }\n const parts = week.split(\"-\");\n const weekNumber = parseInt(parts[1], 10);\n const year = parseInt(parts[0], 10);\n return getWeekForDate(getStartDateOfISOWeek(weekNumber, year));\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useSingleWeekSelection } from \"./UseSingleWeekSelection\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\n\nexport type SingleWeekValue = string;\n\nexport interface SingleWeekCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T> {\n value: SingleWeekValue | undefined;\n onChange: (value: SingleWeekValue | undefined) => void;\n}\n\nexport function SingleWeekCalendar<T>(props: SingleWeekCalendarProps<T>) {\n const singleWeekSelectionProps = useSingleWeekSelection(props);\n return (\n <CalendarWithMonthSwitcher<T> {...props} {...singleWeekSelectionProps} />\n );\n}\n","import { isSameDay } from \"date-fns\";\n\nexport const addDateIfNotExists = (\n list: Array<Date>,\n date: Date\n): Array<Date> => {\n if (list.filter((item) => isSameDay(item, date)).length >= 1) {\n return list;\n }\n return [...list, date];\n};\n\nexport const removeDateIfExist = (list: Array<Date>, date: Date): Array<Date> =>\n list.filter((item) => !isSameDay(item, date));\n\nexport const listContainsDate = (list: Array<Date>, date: Date): boolean =>\n !!list.find((item) => isSameDay(item, date));\n","import { eachDayOfInterval } from \"date-fns\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useDateRangeOnClickDayHandler } from \"../../../features/date-range/hooks/UseDateRangeOnClickDayHandler\";\nimport { CalendarState, OnClickDay } from \"../../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport {\n listContainsDate,\n removeDateIfExist,\n} from \"../../../util/date/DateListTools\";\nimport { DateRangeFocusedInput } from \"../date-range-calendar/DateRangeCalendar\";\nimport { DateRangeExclusionCalendarProps } from \"./DateRangeExclusionCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\nimport { DateRange } from \"../../../types/DateRange\";\n\nexport const useDateRangeExclusionSelection = <T>({\n value,\n onValueChange,\n statePerMonth,\n onChangePanel,\n}: DateRangeExclusionCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const [dateRange, setDateRange] = useState<DateRange | undefined>();\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const [dateInFocus, setDateInFocus] = useState(\n () => (focusedInput && value?.[focusedInput]) ?? new Date()\n );\n\n const onChangeHandler = useCallback(\n (value: DateRange) => {\n setDateRange(value);\n const { startDate, endDate } = value;\n if (onValueChange) {\n if (startDate && endDate) {\n const dates = eachDayOfInterval({ start: startDate, end: endDate });\n onValueChange(dates);\n } else if (startDate) {\n onValueChange([startDate]);\n } else if (endDate) {\n onValueChange([endDate]);\n }\n }\n },\n [onValueChange]\n );\n\n const onClickDayRange = useDateRangeOnClickDayHandler(\n dateRange,\n onChangeHandler,\n focusedInput,\n setFocusedInput\n );\n\n const onClickDay: OnClickDay<T> = useCallback(\n (day, userData, ev) => {\n if (onValueChange) {\n if (ev.ctrlKey || ev.metaKey) {\n if (!value) {\n onValueChange([day.date]);\n } else if (listContainsDate(value, day.date)) {\n onValueChange(removeDateIfExist(value, day.date));\n } else {\n onValueChange([...value, day.date]);\n }\n } else {\n onClickDayRange(day, userData, ev);\n }\n }\n },\n [onValueChange, onClickDayRange, value]\n );\n const statePerMonthWithSelectedDate = useMemo(() => {\n return addHighlighting(statePerMonth, value);\n }, [statePerMonth, value]);\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelectedDate,\n currentPanel,\n setCurrentPanel,\n dateInFocus,\n setDateInFocus,\n };\n};\n\nconst addHighlighting = (\n statePerMonth: CalendarState | undefined,\n dateList: Array<Date> | undefined\n): CalendarState | undefined => {\n if (!dateList) {\n return statePerMonth;\n }\n return dateList.reduce((statePerMonth, date) => {\n return addDayStateHighlights(statePerMonth, date, [\"selected\"]);\n }, statePerMonth);\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useDateRangeExclusionSelection } from \"./UseDateRangeExclusionSelection\";\nimport { UseInternalPanelStateProps } from \"../../../features/internal-panel-state/UseInternalPanelState\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\n\nexport interface DateRangeExclusionCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T>,\n UseInternalPanelStateProps,\n ValueAndOnValueChangeProps<Array<Date>> {}\n\nexport function DateRangeExclusionCalendar<T extends {}>(\n props: DateRangeExclusionCalendarProps<T>\n) {\n const selectionProps = useDateRangeExclusionSelection(props);\n return <CalendarWithMonthSwitcher<T> {...props} {...selectionProps} />;\n}\n","import { PopoverPlacement } from \"@stenajs-webui/tooltip\";\n\nexport const defaultPopoverPlacement: PopoverPlacement = \"bottom\";\n","import { useTippyInstance } from \"@stenajs-webui/tooltip\";\nimport { useCallback } from \"react\";\n\nexport const useCalendarPopoverUpdater = () => {\n const [tippyRef, tippyInstanceRef] = useTippyInstance();\n\n const onChangePanel = useCallback(() => {\n tippyInstanceRef.current?.popperInstance?.update();\n }, [tippyInstanceRef]);\n\n return {\n onChangePanel,\n tippyRef,\n };\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useDateInput = (\n onChange?: (date: Date | undefined) => void,\n onClose?: () => void,\n openOnMount?: boolean\n) => {\n const [showingCalendar, setShowingCalendar] = useState(openOnMount || false);\n\n const showCalendar = useCallback(() => {\n setShowingCalendar(true);\n return true;\n }, [setShowingCalendar]);\n\n const hideCalendar = useCallback(() => {\n setShowingCalendar(false);\n if (onClose) {\n onClose();\n }\n }, [setShowingCalendar, onClose]);\n\n const onSelectDate = useCallback(\n (date: Date | undefined) => {\n if (onChange) {\n onChange(date);\n }\n setTimeout(hideCalendar, 150);\n },\n [onChange, hideCalendar]\n );\n\n return {\n showCalendar,\n hideCalendar,\n showingCalendar,\n onSelectDate,\n };\n};\n","export const defaultMaxDate = \"2999-12-31\";\n","import { faCalendarAlt } from \"@fortawesome/free-regular-svg-icons/faCalendarAlt\";\nimport { Box, Row } from \"@stenajs-webui/core\";\nimport { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport { useCalendarPopoverUpdater } from \"../../../features/internal-panel-state/UseCalendarPopoverUpdater\";\nimport { DateFormats } from \"../../../util/date/DateFormats\";\nimport { SingleDateCalendar } from \"../../calendar-types/single-date-calendar/SingleDateCalendar\";\nimport {\n CalendarTheme,\n defaultCalendarTheme,\n} from \"../../calendar/CalendarTheme\";\nimport { DateTextInputCalendarProps } from \"../date-text-input/DateTextInput\";\nimport { useDateInput } from \"./UseDateInput\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface DateInputProps<T = {}> extends OptionalMinMaxDatesAsString {\n /** The current value */\n value?: Date;\n /** onChange handler for when the user selects a date. */\n onChange?: (date: Date | undefined) => void;\n /** Variant of the input field. */\n variant?: TextInputProps[\"variant\"];\n /** If true, calendar will be open when component mounts. */\n openOnMount?: boolean;\n /** Is invoked when user closes the calendar popup. */\n onClose?: () => void;\n /**\n * The date format in the input field. See date-fns docs.\n * @default YYYY-MM-dd\n */\n displayFormat?: string;\n /**\n * Placeholder when no date has been selected.\n * @default Enter date\n */\n placeholder?: string;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n /**\n * Z-index of the calendar overlay.\n * @default 100\n */\n zIndex?: number;\n /**\n * Width of the input element.\n * * @default 125px\n */\n width?: string;\n /**\n * The calendar theme to use.\n */\n calendarTheme?: CalendarTheme;\n /** Props to be passed to Calendar, see SingleDateCalendar. */\n calendarProps?: DateTextInputCalendarProps<T>;\n /**\n * Disables the TextInput, Calendar and Popover.\n */\n disabled?: boolean;\n}\n\nexport const DateInput: React.FC<DateInputProps> = ({\n displayFormat = DateFormats.fullDate,\n placeholder = \"Enter date\",\n value,\n zIndex = 100,\n calendarTheme = defaultCalendarTheme,\n calendarProps,\n openOnMount,\n onClose,\n onChange,\n portalTarget,\n variant,\n width,\n minDate,\n maxDate = defaultMaxDate,\n disabled,\n}) => {\n const {\n hideCalendar,\n showingCalendar,\n onSelectDate,\n showCalendar,\n } = useDateInput(onChange, onClose, openOnMount);\n\n const { tippyRef, onChangePanel } = useCalendarPopoverUpdater();\n\n return (\n <Box width={width}>\n <Popover\n arrow={false}\n lazy\n visible={showingCalendar}\n onClickOutside={hideCalendar}\n placement={defaultPopoverPlacement}\n zIndex={zIndex}\n appendTo={portalTarget ?? \"parent\"}\n tippyRef={tippyRef}\n disabled={disabled}\n content={\n <SingleDateCalendar\n {...calendarProps}\n onChange={onSelectDate}\n value={value}\n theme={calendarTheme}\n onChangePanel={onChangePanel}\n minDate={minDate}\n maxDate={maxDate}\n />\n }\n >\n <TextInput\n type={\"date\"}\n contentRight={\n <Row alignItems={\"center\"}>\n <FlatButton\n size={\"small\"}\n disabled={disabled}\n leftIcon={faCalendarAlt}\n onClick={showCalendar}\n />\n </Row>\n }\n onFocus={showCalendar}\n onClickRight={showCalendar}\n value={value ? format(value, displayFormat) : \"\"}\n placeholder={placeholder}\n size={9}\n disabled={disabled}\n autoFocus={openOnMount}\n variant={variant}\n min={minDate}\n max={maxDate}\n />\n </Popover>\n </Box>\n );\n};\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { DayData } from \"../../../../util/calendar/CalendarDataFactory\";\nimport { isAfter } from \"date-fns\";\nimport { DateRange } from \"../../../../types/DateRange\";\n\nexport const useDateRangeInput = (\n value: DateRange | undefined,\n onValueChange: ((dateRange: DateRange) => void) | undefined\n) => {\n const startDateInputRef = useRef<HTMLInputElement>(null);\n const endDateInputRef = useRef<HTMLInputElement>(null);\n\n const [showingCalendar, setShowingCalendar] = useState(false);\n const [focusedInput, setFocusedInput] = useState<\n DateRangeFocusedInput | undefined\n >(undefined);\n\n const showCalendarStartDate = useCallback(() => {\n setFocusedInput(\"startDate\");\n setShowingCalendar(true);\n return true;\n }, [setFocusedInput, setShowingCalendar]);\n\n const showCalendarEndDate = useCallback(() => {\n setFocusedInput(\"endDate\");\n setShowingCalendar(true);\n return true;\n }, [setFocusedInput, setShowingCalendar]);\n\n const hideCalendar = useCallback(() => {\n setShowingCalendar(false);\n }, [setShowingCalendar]);\n\n const onClickDay = useCallback(\n (day: DayData) => {\n if (focusedInput === \"startDate\") {\n onValueChange?.({\n startDate: day.date,\n endDate: value?.endDate,\n });\n if (!value?.endDate) {\n setFocusedInput(\"endDate\");\n endDateInputRef.current && endDateInputRef.current.focus();\n } else {\n setTimeout(hideCalendar, 150);\n }\n } else if (focusedInput === \"endDate\") {\n onValueChange?.({\n startDate: value?.startDate,\n endDate: day.date,\n });\n if (!value?.startDate) {\n setFocusedInput(\"startDate\");\n startDateInputRef.current && startDateInputRef.current.focus();\n } else {\n setTimeout(hideCalendar, 150);\n }\n }\n },\n [focusedInput, onValueChange, setFocusedInput, hideCalendar, value]\n );\n\n const startDateIsAfterEnd = useMemo(\n () =>\n value?.startDate &&\n value?.endDate &&\n isAfter(value.startDate, value.endDate),\n [value?.startDate, value?.endDate]\n );\n\n return {\n showingCalendar,\n hideCalendar,\n showCalendarEndDate,\n showCalendarStartDate,\n focusedInput,\n setFocusedInput,\n startDateInputRef,\n endDateInputRef,\n onClickDay,\n startDateIsAfterEnd,\n };\n};\n","import { faCalendarAlt } from \"@fortawesome/free-solid-svg-icons/faCalendarAlt\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { TextInput, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport { DateFormats } from \"../../../util/date/DateFormats\";\nimport { DateRangeInputCalendarProps } from \"../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport {\n CalendarTheme,\n defaultCalendarTheme,\n} from \"../../calendar/CalendarTheme\";\nimport { useDateRangeInput } from \"./hooks/UseDateRangeInput\";\nimport { Icon } from \"@stenajs-webui/elements\";\nimport { faLongArrowAltRight } from \"@fortawesome/free-solid-svg-icons/faLongArrowAltRight\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { CalendarPanelType } from \"../../../features/calendar-with-month-year-pickers/CalendarPanelType\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { buildDayStateForDateRange } from \"../../../util/calendar/StateModifier\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { DateRange } from \"../../../types/DateRange\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport interface DateRangeInputProps<T>\n extends OptionalMinMaxDatesAsString,\n ValueAndOnValueChangeProps<DateRange> {\n /**\n * The date format in the input field. See date-fns docs.\n * @default YYYY-MM-dd\n */\n displayFormat?: string;\n\n /**\n * Placeholder for start date field when no date has been selected.\n * @default Start date\n */\n placeholderStartDate?: string;\n\n /**\n * Placeholder for end date field when no date has been selected.\n * @default End date\n */\n placeholderEndDate?: string;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n\n /**\n * Z-index of the calendar overlay.\n * @default 100\n */\n zIndex?: number;\n\n /**\n * Width of the input element.\n * * @default 125px\n */\n width?: string;\n\n /**\n * The calendar theme to use.\n */\n calendarTheme?: CalendarTheme;\n\n /** Props to be passed to DateRangeCalendar, see DateRangeCalendar. */\n calendarProps?: DateRangeInputCalendarProps<T>;\n\n /**\n * Disables the Popover and both TextInputs.\n */\n disabled?: boolean;\n}\n\n/**\n * @deprecated Please use DateRangeDualTextInput instead.\n */\nexport const DateRangeInput = <T extends {}>({\n displayFormat = DateFormats.fullDate,\n placeholderStartDate = \"Start date\",\n placeholderEndDate = \"End date\",\n portalTarget,\n value,\n onValueChange,\n zIndex = 100,\n width,\n calendarTheme = defaultCalendarTheme,\n calendarProps,\n minDate,\n maxDate = defaultMaxDate,\n disabled,\n}: DateRangeInputProps<T>): React.ReactElement<DateRangeInputProps<T>> => {\n const [dateInFocus, setDateInFocus] = useState(\n () => (focusedInput && value?.[focusedInput]) ?? new Date()\n );\n const [currentPanel, setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n const {\n hideCalendar,\n showCalendarEndDate,\n showCalendarStartDate,\n showingCalendar,\n focusedInput,\n startDateInputRef,\n endDateInputRef,\n onClickDay,\n startDateIsAfterEnd,\n } = useDateRangeInput(value, onValueChange);\n\n const statePerMonth = useMemo(\n () =>\n buildDayStateForDateRange(undefined, value?.startDate, value?.endDate),\n [value]\n );\n\n return (\n <Popover\n arrow={false}\n lazy\n disabled={disabled}\n visible={showingCalendar}\n zIndex={zIndex}\n placement={defaultPopoverPlacement}\n appendTo={portalTarget ?? \"parent\"}\n onClickOutside={hideCalendar}\n content={\n <CalendarWithMonthSwitcher\n {...calendarProps}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n statePerMonth={statePerMonth}\n theme={calendarTheme}\n onClickDay={onClickDay}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n minDate={minDate}\n maxDate={maxDate}\n />\n }\n >\n <Row alignItems={\"center\"}>\n <TextInput\n iconLeft={faCalendarAlt}\n onFocus={showCalendarStartDate}\n value={value?.startDate ? format(value.startDate, displayFormat) : \"\"}\n placeholder={placeholderStartDate}\n width={width}\n disabled={disabled}\n inputRef={startDateInputRef}\n size={9}\n variant={startDateIsAfterEnd ? \"error\" : undefined}\n />\n <Space />\n <Icon\n icon={faLongArrowAltRight}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={14}\n />\n <Space />\n <TextInput\n iconLeft={faCalendarAlt}\n onFocus={showCalendarEndDate}\n value={value?.endDate ? format(value.endDate, displayFormat) : \"\"}\n placeholder={placeholderEndDate}\n width={width}\n disabled={disabled}\n inputRef={endDateInputRef}\n size={9}\n variant={startDateIsAfterEnd ? \"error\" : undefined}\n />\n </Row>\n </Popover>\n );\n};\n","import { faCalendarAlt } from \"@fortawesome/free-solid-svg-icons/faCalendarAlt\";\nimport { Box, Omit, Row } from \"@stenajs-webui/core\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { format, isValid, parse } from \"date-fns\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport { useCalendarPopoverUpdater } from \"../../../features/internal-panel-state/UseCalendarPopoverUpdater\";\nimport { DateFormats } from \"../../../util/date/DateFormats\";\nimport {\n SingleDateCalendar,\n SingleDateCalendarProps,\n} from \"../../calendar-types/single-date-calendar/SingleDateCalendar\";\nimport {\n CalendarTheme,\n defaultCalendarTheme,\n} from \"../../calendar/CalendarTheme\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport type DateTextInputCalendarProps<T> = Omit<\n SingleDateCalendarProps<T>,\n \"value\" | \"onChange\" | \"theme\"\n>;\n\nexport interface DateTextInputProps<T>\n extends Omit<TextInputProps, \"onChange\" | \"theme\" | \"min\" | \"max\">,\n OptionalMinMaxDatesAsString {\n /** Props to be passed to Calendar, see SingleDateCalendar. */\n calendarProps?: DateTextInputCalendarProps<T>;\n /** Close calendar when date is selected, @default true */\n closeOnCalendarSelectDate?: boolean;\n /** Valid date format, @default YYYY-MM-DD */\n dateFormat?: string;\n /** Make the icon not clickable, @default false */\n disableCalender?: boolean;\n /** Show or hide the calender icon, @default false */\n hideCalenderIcon?: boolean;\n /** Placeholder for the input, @default YYYY-MM-DD */\n placeholder?: string;\n /** Portal target, HTML element. If not set, portal is not used. */\n portalTarget?: HTMLElement | null;\n /** Z-index of the calendar overlay, @default 100 */\n zIndex?: number;\n /** The date text input theme to use. */\n calendarTheme?: CalendarTheme;\n}\n\nexport const DateTextInput: React.FC<DateTextInputProps<{}>> = ({\n calendarProps,\n closeOnCalendarSelectDate = true,\n dateFormat = DateFormats.fullDate,\n disableCalender = false,\n onValueChange,\n placeholder = \"yyyy-mm-dd\",\n portalTarget,\n value,\n width = \"130px\",\n zIndex = 100,\n calendarTheme = defaultCalendarTheme,\n hideCalenderIcon = false,\n minDate,\n maxDate = defaultMaxDate,\n ...props\n}) => {\n const [open, setOpen] = useState(false);\n const { tippyRef, onChangePanel } = useCalendarPopoverUpdater();\n\n const toggleCalendar = useCallback(() => {\n setOpen(!open);\n }, [setOpen, open]);\n\n const hideCalendar = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const onValueChangeHandler = useCallback(\n (value) => {\n if (onValueChange) {\n onValueChange(value);\n }\n },\n [onValueChange]\n );\n\n const onCalendarSelectDate = useCallback(\n (date: Date | undefined) => {\n if (date) {\n onValueChangeHandler(format(date, dateFormat));\n if (closeOnCalendarSelectDate) {\n setTimeout(() => setOpen(!open), 200);\n }\n }\n },\n [onValueChangeHandler, dateFormat, closeOnCalendarSelectDate, setOpen, open]\n );\n\n const inValidInput = !!value && !/^[-/\\\\.0-9]+$/.test(value);\n\n const dateIsValid = !!value && isValid(parse(value, dateFormat, new Date()));\n\n const userInputCorrectLength = !!value && value.length >= dateFormat.length;\n\n const invalid: boolean =\n (userInputCorrectLength && !dateIsValid) || inValidInput;\n\n return (\n <Box width={width}>\n <Popover\n arrow={false}\n lazy\n visible={open}\n zIndex={zIndex}\n appendTo={portalTarget ?? \"parent\"}\n placement={defaultPopoverPlacement}\n onClickOutside={hideCalendar}\n tippyRef={tippyRef}\n content={\n <SingleDateCalendar\n {...calendarProps}\n onChange={onCalendarSelectDate}\n onChangePanel={onChangePanel}\n value={\n value && dateIsValid\n ? parse(value, dateFormat, new Date())\n : undefined\n }\n minDate={minDate}\n maxDate={maxDate}\n theme={calendarTheme}\n />\n }\n >\n <TextInput\n {...props}\n variant={invalid ? \"error\" : \"standard\"}\n disableContentPaddingRight\n contentRight={\n !hideCalenderIcon ? (\n <Row alignItems={\"center\"} indent={0.5}>\n <FlatButton\n size={\"small\"}\n disabled={props.disabled}\n leftIcon={faCalendarAlt}\n onClick={toggleCalendar}\n />\n </Row>\n ) : undefined\n }\n onValueChange={onValueChangeHandler}\n placeholder={placeholder}\n value={value || \"\"}\n min={minDate}\n max={maxDate}\n size={10}\n />\n </Popover>\n </Box>\n );\n};\n","export interface FormatTimeStringResult {\n time: string;\n success: boolean;\n}\n\nexport const formatHours = (hours: string): string => {\n if (hours === \"\") {\n return \"00\";\n }\n\n const h = parseInt(hours, 10);\n\n if (isNaN(h)) {\n throw new Error(\"Hours is not a number\");\n }\n\n if (h < 0 || h > 23) {\n throw new Error(\"Hours is an invalid number\");\n }\n\n switch (hours.length) {\n case 1:\n return `0${h}`;\n case 2:\n return hours;\n default:\n throw new Error(\"Invalid hour string\");\n }\n};\n\nexport const formatMinutes = (minutes: string): string => {\n if (minutes === \"\") {\n return \"00\";\n }\n\n const m = parseInt(minutes, 10);\n\n if (isNaN(m)) {\n throw new Error(\"Minutes is not a number\");\n }\n\n if (m < 0 || m > 59) {\n throw new Error(\"Minutes is an invalid number\");\n }\n\n switch (minutes.length) {\n case 1:\n return `0${m}`;\n case 2:\n return minutes;\n default:\n throw new Error(\"Invalid minute string\");\n }\n};\n\nexport const formatTimeString = (time: string): FormatTimeStringResult => {\n if (!validUserInput(time)) {\n return { time, success: false };\n }\n\n const arr = time && time.split(/-|:|,|;|[/]|[.]| /); // consider all these chars as user input separator\n if (arr && arr.length === 2) {\n try {\n const hours = formatHours(arr[0]);\n const minutes = formatMinutes(arr[1]);\n return { time: `${hours}:${minutes}`, success: true };\n } catch {\n return { time, success: false };\n }\n } else if (arr && arr.length === 1) {\n let hours = 0;\n let minutes = 0;\n switch (time.length) {\n case 1:\n return { time: `0${time}:00`, success: true };\n case 2:\n const timeNumber = parseInt(arr[0], 10);\n if (timeNumber >= 0 && timeNumber < 24) {\n return { time: `${time}:00`, success: true };\n } else if (timeNumber >= 24 && timeNumber < 59) {\n return { time: `00:${time}`, success: true };\n }\n return { time, success: false };\n case 3:\n minutes = parseInt(time.substr(1, 2), 10);\n if (minutes >= 0 && minutes <= 59) {\n return {\n time: `0${time.substr(0, 1)}:${time.substr(1, 2)}`,\n success: true,\n };\n }\n return { time, success: false };\n case 4:\n hours = parseInt(time.substr(0, 2), 10);\n minutes = parseInt(time.substr(2, 2), 10);\n if (hours < 0 || hours > 23) {\n return { time, success: false };\n }\n if (minutes < 0 || minutes > 59) {\n return { time, success: false };\n }\n return {\n time: `${time.substr(0, 2)}:${time.substr(2, 2)}`,\n success: true,\n };\n default:\n return { time, success: false };\n }\n }\n\n return { time, success: false };\n};\n\nexport const validUserInput = (input: string | undefined): boolean => {\n if (input) {\n return /^[-:.,/; 0-9]+$/.test(input);\n }\n\n return true;\n};\n","import { faClock } from \"@fortawesome/free-solid-svg-icons/faClock\";\nimport { Omit } from \"@stenajs-webui/core\";\nimport { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport {\n formatTimeString,\n validUserInput,\n} from \"../../../util/time/TimeStringFormatValidator\";\n\nexport interface TimeTextInputProps extends Omit<TextInputProps, \"onChange\"> {\n /** Show placeholder when true */\n showPlaceholder?: boolean;\n /** Show icon when true */\n useIcon?: boolean;\n /** Variant of the input field. */\n variant?: TextInputProps[\"variant\"];\n}\n\n/**\n * @deprecated\n */\nexport const TimeTextInput: React.FC<TimeTextInputProps> = ({\n onValueChange,\n showPlaceholder = true,\n useIcon = true,\n value,\n width = \"85px\",\n variant,\n ...props\n}) => {\n const [valid, setValid] = useState(() => validUserInput(value));\n\n const timeFormat = \"hh:mm\";\n\n const onBlur = useCallback(() => {\n if (value) {\n const formattedResult = formatTimeString(value);\n setValid(formattedResult.success);\n if (formattedResult.success) {\n if (onValueChange) {\n onValueChange(formattedResult.time);\n }\n }\n }\n }, [value, onValueChange, setValid]);\n\n const onChangeHandler = useCallback(\n (ev) => {\n const time = ev.target.value;\n const validInput = validUserInput(time);\n\n setValid(validInput && time.length <= timeFormat.length);\n\n if (onValueChange) {\n onValueChange(time);\n }\n },\n [onValueChange, setValid]\n );\n\n return (\n <TextInput\n {...props}\n type={\"time\"}\n variant={!valid ? \"error\" : variant}\n iconLeft={useIcon ? faClock : undefined}\n value={value}\n placeholder={showPlaceholder ? timeFormat : undefined}\n onChange={onChangeHandler}\n onBlur={onBlur}\n width={width}\n />\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { faCalendarAlt } from \"@fortawesome/free-regular-svg-icons/faCalendarAlt\";\nimport { faAngleDown } from \"@fortawesome/free-solid-svg-icons/faAngleDown\";\nimport {\n Box,\n BoxProps,\n ButtonElementProps,\n Indent,\n Row,\n SeparatorLine,\n} from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport {\n TextInput,\n TextInputBox,\n TextInputBoxProps,\n TextInputProps,\n} from \"@stenajs-webui/forms\";\nimport { debounce } from \"lodash\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DualTextInputProps {\n onEsc?: TextInputProps[\"onEsc\"];\n onEnter?: TextInputProps[\"onEnter\"];\n widthLeft?: BoxProps[\"width\"];\n widthRight?: BoxProps[\"width\"];\n valueLeft?: TextInputProps[\"value\"];\n valueRight?: TextInputProps[\"value\"];\n minLeft?: string;\n maxLeft?: string;\n minRight?: string;\n maxRight?: string;\n typeLeft?: TextInputProps[\"type\"];\n typeRight?: TextInputProps[\"type\"];\n separatorIcon?: IconDefinition;\n placeholderLeft?: TextInputProps[\"placeholder\"];\n placeholderRight?: TextInputProps[\"placeholder\"];\n onValueChangeLeft?: TextInputProps[\"onValueChange\"];\n onValueChangeRight?: TextInputProps[\"onValueChange\"];\n onChangeLeft?: TextInputProps[\"onChange\"];\n onChangeRight?: TextInputProps[\"onChange\"];\n onClickLeft?: TextInputProps[\"onClick\"];\n onClickRight?: TextInputProps[\"onClick\"];\n onClickCalendar?: ButtonElementProps[\"onClick\"];\n onClickArrowDown?: ButtonElementProps[\"onClick\"];\n onFocusLeft?: TextInputProps[\"onFocus\"];\n onFocusRight?: TextInputProps[\"onFocus\"];\n onBlur?: () => void;\n onBlurLeft?: TextInputProps[\"onBlur\"];\n onBlurRight?: TextInputProps[\"onBlur\"];\n inputRefLeft?: TextInputProps[\"inputRef\"];\n inputRefRight?: TextInputProps[\"inputRef\"];\n variantLeft?: TextInputProps[\"variant\"];\n variantRight?: TextInputProps[\"variant\"];\n variant?: TextInputBoxProps[\"variant\"];\n showPresets?: false;\n autoFocusLeft?: boolean;\n autoFocusRight?: boolean;\n disabled?: boolean;\n}\n\nexport const DualTextInput: React.FC<DualTextInputProps> = ({\n autoFocusLeft,\n autoFocusRight,\n onEsc,\n onEnter,\n onValueChangeLeft,\n onValueChangeRight,\n separatorIcon,\n placeholderLeft,\n placeholderRight,\n typeLeft,\n typeRight,\n onChangeLeft,\n onChangeRight,\n valueLeft,\n valueRight,\n minLeft,\n maxLeft,\n minRight,\n maxRight,\n onClickLeft,\n onClickRight,\n onClickCalendar,\n onClickArrowDown,\n onBlurLeft,\n onBlurRight,\n onFocusLeft,\n onFocusRight,\n inputRefLeft,\n inputRefRight,\n variant,\n variantLeft,\n variantRight,\n onBlur,\n showPresets,\n widthLeft,\n widthRight,\n disabled,\n}) => {\n const focusCounter = useRef(0);\n\n const tryTriggerOnBlur = useMemo(\n () =>\n debounce((focusCounter: number) => {\n if (focusCounter === 0) {\n onBlur?.();\n }\n }, 10),\n [onBlur]\n );\n\n const focusLeftHandler = useCallback(\n (ev) => {\n focusCounter.current++;\n tryTriggerOnBlur(focusCounter.current);\n if (onFocusLeft) {\n onFocusLeft(ev);\n }\n },\n [onFocusLeft, focusCounter, tryTriggerOnBlur]\n );\n\n const focusRightHandler = useCallback(\n (ev) => {\n focusCounter.current++;\n tryTriggerOnBlur(focusCounter.current);\n if (onFocusRight) {\n onFocusRight(ev);\n }\n },\n [onFocusRight, focusCounter, tryTriggerOnBlur]\n );\n\n const blurLeftHandler = useCallback(\n (ev) => {\n focusCounter.current--;\n tryTriggerOnBlur(focusCounter.current);\n if (onBlurLeft) {\n onBlurLeft(ev);\n }\n },\n [onBlurLeft, focusCounter, tryTriggerOnBlur]\n );\n\n const blurRightHandler = useCallback(\n (ev) => {\n focusCounter.current--;\n tryTriggerOnBlur(focusCounter.current);\n if (onBlurRight) {\n onBlurRight(ev);\n }\n },\n [onBlurRight, focusCounter, tryTriggerOnBlur]\n );\n\n return (\n <Box>\n <TextInputBox\n disableContentPaddingRight\n disabled={disabled}\n variant={variant}\n contentRight={\n <Row alignItems={\"center\"}>\n <Indent num={0.5}>\n <FlatButton\n leftIcon={faCalendarAlt}\n onClick={onClickCalendar}\n disabled={disabled}\n size={\"small\"}\n />\n </Indent>\n\n {showPresets ? (\n <>\n <Row height={\"22px\"}>\n <SeparatorLine vertical />\n </Row>\n\n <Indent num={0.5}>\n <FlatButton\n leftIcon={faAngleDown}\n onClick={onClickArrowDown}\n disabled={disabled}\n size={\"small\"}\n />\n </Indent>\n </>\n ) : null}\n </Row>\n }\n >\n <Box width={widthLeft}>\n <TextInput\n onEsc={onEsc}\n onEnter={onEnter}\n onClick={onClickLeft}\n disabled={disabled}\n hideBorder\n placeholder={placeholderLeft}\n value={valueLeft}\n onValueChange={onValueChangeLeft}\n onChange={onChangeLeft}\n onBlur={blurLeftHandler}\n onFocus={focusLeftHandler}\n inputRef={inputRefLeft}\n variant={variantLeft}\n type={typeLeft}\n autoFocus={autoFocusLeft}\n min={minLeft}\n max={maxLeft}\n />\n </Box>\n <Row indent={0.5} alignItems={\"center\"} justifyContent={\"center\"}>\n <Icon\n icon={separatorIcon}\n size={12}\n color={cssColor(\"--lhds-color-ui-500\")}\n />\n </Row>\n <Box width={widthRight}>\n <TextInput\n onEsc={onEsc}\n onEnter={onEnter}\n onClick={onClickRight}\n disabled={disabled}\n hideBorder\n placeholder={placeholderRight}\n value={valueRight}\n onValueChange={onValueChangeRight}\n onChange={onChangeRight}\n onBlur={blurRightHandler}\n onFocus={focusRightHandler}\n inputRef={inputRefRight}\n variant={variantRight}\n type={typeRight}\n autoFocus={autoFocusRight}\n min={minRight}\n max={maxRight}\n />\n </Box>\n </TextInputBox>\n </Box>\n );\n};\n","import { parseIntElseUndefined } from \"@stenajs-webui/core\";\nimport { formatHours, formatMinutes } from \"./TimeStringFormatValidator\";\n\nexport const transformNumberTimeToString = (\n time: number | undefined | null\n): string | undefined => {\n if (time == null) {\n return undefined;\n }\n const timeStr = time.toString();\n if (timeStr.length === 3) {\n return `${timeStr.substr(0, 1)}:${timeStr.substr(1, 2)}`;\n }\n if (timeStr.length === 4) {\n return `${timeStr.substr(0, 2)}:${timeStr.substr(2, 2)}`;\n }\n if (timeStr.length === 2) {\n return `0:${timeStr}`;\n }\n if (timeStr.length === 1) {\n return `0:0${timeStr}`;\n }\n throw new Error(\"Invalid time number.\");\n};\n\nexport const transformTimeStringToNumber = (\n time: string | undefined | null\n): number | null => {\n if (time == null) {\n throw new Error(\"Time is not set.\");\n }\n if (time === \"\") {\n throw new Error(\"Time is empty.\");\n }\n const parts = time.split(\":\");\n if (parts.length !== 2) {\n throw new Error(\"Invalid time.\");\n }\n\n if (parts[1].length !== 2) {\n throw new Error(\"Invalid time.\");\n }\n\n if (parts[0].length < 1 || parts[0].length > 2) {\n throw new Error(\"Invalid time.\");\n }\n\n const hours = parseInt(parts[0], 10);\n const minutes = parseInt(parts[1], 10);\n\n if (isNaN(hours)) {\n throw new Error(\"Invalid time.\");\n }\n if (isNaN(minutes)) {\n throw new Error(\"Invalid time.\");\n }\n if (hours < 0 || hours > 23) {\n throw new Error(\"Invalid time.\");\n }\n if (minutes < 0 || minutes > 59) {\n throw new Error(\"Invalid time.\");\n }\n return hours * 100 + minutes;\n};\n\nexport const isValidTimeString = (time: string | undefined): boolean => {\n try {\n transformTimeStringToNumber(time);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nexport const getHoursAndMinutesFromTimeString = (\n value: string | undefined\n): {\n hour: number | undefined;\n minute: number | undefined;\n} => {\n if (value && isValidTimeString(value)) {\n const p = value.split(\":\");\n return {\n hour: parseIntElseUndefined(p[0]),\n minute: parseIntElseUndefined(p[1]),\n };\n }\n return {\n hour: undefined,\n minute: undefined,\n };\n};\n\nexport const transformTimeInDateToTimeString = (date: Date): string =>\n `${formatHours(String(date.getHours()))}:${formatMinutes(\n String(date.getMinutes())\n )}`;\n","import { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { MutableRefObject, RefObject, useEffect, useRef } from \"react\";\n\nexport interface TimePickerCellProps {\n item: number;\n selected?: boolean;\n onClick: (label: number) => void;\n columnRef: RefObject<HTMLDivElement>;\n canScrollRef: MutableRefObject<boolean>;\n}\n\nexport const TimePickerCell: React.FC<TimePickerCellProps> = ({\n onClick,\n item,\n selected,\n columnRef,\n canScrollRef,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(\n function scrollToSelectedItem() {\n if (\n selected &&\n columnRef.current &&\n ref.current &&\n canScrollRef.current\n ) {\n const targetScroll = ref.current.scrollHeight * Math.max(item - 2, 0);\n columnRef.current.scrollTo(0, targetScroll);\n canScrollRef.current = false;\n }\n },\n [columnRef, item, selected, canScrollRef]\n );\n\n return (\n <Row\n width={\"64px\"}\n justifyContent={\"center\"}\n spacing={0.5}\n indent={0.5}\n ref={ref}\n >\n {selected ? (\n <PrimaryButton\n label={String(item)}\n onClick={() => onClick && onClick(item)}\n />\n ) : (\n <FlatButton\n label={String(item)}\n onClick={() => onClick && onClick(item)}\n />\n )}\n </Row>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { MutableRefObject, useRef } from \"react\";\nimport styles from \"./TimePicker.module.css\";\nimport { TimePickerCell } from \"./TimePickerCell\";\n\ninterface Props {\n items: Array<number>;\n onClick: (item: number) => void;\n selectedItem: number | undefined;\n canScrollRef: MutableRefObject<boolean>;\n}\n\nexport const TimePickerColumn: React.FC<Props> = ({\n onClick,\n items,\n selectedItem,\n canScrollRef,\n}) => {\n const columnRef = useRef<HTMLDivElement>(null);\n\n return (\n <Column className={styles.timePickerColumn} ref={columnRef}>\n {items.map((item) => (\n <TimePickerCell\n key={item}\n item={item}\n onClick={onClick}\n selected={item === selectedItem}\n columnRef={columnRef}\n canScrollRef={canScrollRef}\n />\n ))}\n </Column>\n );\n};\n","import { Indent, Row } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { range } from \"lodash\";\nimport * as React from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n formatHours,\n formatMinutes,\n} from \"../../util/time/TimeStringFormatValidator\";\nimport { getHoursAndMinutesFromTimeString } from \"../../util/time/TimeTransformer\";\nimport styles from \"./TimePicker.module.css\";\nimport { TimePickerColumn } from \"./TimePickerColumn\";\n\nexport interface TimePickerProps extends ValueAndOnValueChangeProps<string> {}\n\nconst hours = range(0, 24);\nconst minutes = range(0, 60);\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n value,\n onValueChange,\n}) => {\n const canScrollRef = useRef(true);\n const [hour, setHour] = useState<number | undefined>(undefined);\n const [minute, setMinute] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n if (value) {\n const { minute, hour } = getHoursAndMinutesFromTimeString(value);\n setHour(hour);\n setMinute(minute);\n }\n }, [value]);\n\n const onClickHour = useCallback(\n (h: number) => {\n setHour(h);\n onValueChange?.(\n `${formatHours(String(h ?? 0))}:${formatMinutes(String(minute ?? 0))}`\n );\n },\n [minute, onValueChange]\n );\n\n const onClickMinutes = useCallback(\n (m: number) => {\n setMinute(m);\n onValueChange?.(\n `${formatHours(String(hour ?? 0))}:${formatMinutes(String(m ?? 0))}`\n );\n },\n [hour, onValueChange]\n );\n\n return (\n <Row className={styles.timePicker}>\n <TimePickerColumn\n items={hours}\n onClick={onClickHour}\n selectedItem={hour}\n canScrollRef={canScrollRef}\n />\n <Indent />\n <TimePickerColumn\n items={minutes}\n onClick={onClickMinutes}\n selectedItem={minute}\n canScrollRef={canScrollRef}\n />\n </Row>\n );\n};\n","import { RefObject, useEffect } from \"react\";\n\nexport const useDateRangeEffects = (\n date: Date | undefined | null,\n setDateInFocus: (date: Date) => void,\n dateInputRef: RefObject<HTMLInputElement>\n) => {\n useEffect(\n function moveFocusedDateWhenDateChanges() {\n if (date) {\n setDateInFocus(date);\n }\n },\n [date, setDateInFocus]\n );\n\n useEffect(\n function updateDateFieldWhenValueChanges() {\n if (dateInputRef.current) {\n if (date) {\n dateInputRef.current.valueAsDate = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())\n );\n } else {\n dateInputRef.current.valueAsDate = null;\n }\n }\n },\n [date, dateInputRef]\n );\n};\n","import { ChangeEvent, RefObject, useCallback } from \"react\";\nimport { getHoursAndMinutesFromTimeString } from \"../../../../util/time/TimeTransformer\";\nimport { DateTimeInputProps } from \"../DateTimeInput\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useDateRangeHandlers = (\n date: Date | undefined | null,\n onValueChange: DateTimeInputProps[\"onValueChange\"],\n {\n setDateInFocus,\n showCalendarInternal,\n hideCalendarInternal,\n setFirstFocusedInput,\n setCurrentPanel,\n localTime,\n setLocalTime,\n localDate,\n setLocalDate,\n }: UseInputStatesResult,\n dateInputRef: RefObject<HTMLInputElement>\n) => {\n const onChangeDate = useCallback(\n (incomingDate: Date | null) => {\n if (!incomingDate) {\n return;\n }\n const newDate = new Date(incomingDate);\n\n if (date) {\n // Full date is available\n\n newDate.setHours(date.getHours());\n newDate.setMinutes(date.getMinutes());\n\n onValueChange?.(newDate);\n setLocalDate(undefined);\n } else if (localTime) {\n // Only time has been selected\n const { minute, hour } = getHoursAndMinutesFromTimeString(localTime);\n\n newDate.setHours(hour ?? 0);\n newDate.setMinutes(minute ?? 0);\n\n onValueChange?.(newDate);\n setLocalDate(undefined);\n } else {\n // Nothing has been selected\n setLocalDate(newDate);\n }\n setDateInFocus(newDate);\n if (dateInputRef.current) {\n dateInputRef.current.valueAsDate = newDate;\n }\n },\n [date, dateInputRef, localTime, onValueChange, setDateInFocus, setLocalDate]\n );\n\n const onChangeTime = useCallback(\n (time: string) => {\n if (!time) {\n return;\n }\n\n if (date) {\n // Full date is available\n const newTime = getHoursAndMinutesFromTimeString(time);\n const newDate = new Date(date);\n\n newDate.setHours(newTime.hour || 0);\n newDate.setMinutes(newTime.minute || 0);\n\n onValueChange?.(newDate);\n setLocalTime(undefined);\n } else if (localDate) {\n // Only date has already been selected\n const newTime = getHoursAndMinutesFromTimeString(time);\n const newDate = new Date(localDate);\n\n newDate.setHours(newTime.hour || 0);\n newDate.setMinutes(newTime.minute || 0);\n\n onValueChange?.(newDate);\n setLocalTime(undefined);\n } else {\n // Nothing has been selected\n setLocalTime(time);\n }\n },\n [onValueChange, date, localDate, setLocalTime]\n );\n\n const inputLeftChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (ev.target.value[0] !== \"0\") {\n onChangeDate(ev.target.valueAsDate);\n }\n },\n [onChangeDate]\n );\n\n const inputRightChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => onChangeTime(ev.target.value),\n [onChangeTime]\n );\n\n const showCalendar = useCallback(() => {\n if (date) {\n setDateInFocus(date);\n } else {\n setDateInFocus(new Date());\n }\n setCurrentPanel(\"calendar\");\n showCalendarInternal();\n }, [date, setCurrentPanel, showCalendarInternal, setDateInFocus]);\n\n const hideCalendar = useCallback(() => {\n setFirstFocusedInput(undefined);\n hideCalendarInternal();\n }, [setFirstFocusedInput, hideCalendarInternal]);\n\n return {\n inputLeftChangeHandler,\n inputRightChangeHandler,\n hideCalendar,\n showCalendar,\n onChangeTime,\n onChangeDate,\n };\n};\n","import { useBoolean } from \"@stenajs-webui/core\";\nimport { useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { CalendarPanelType } from \"../../../../features/calendar-with-month-year-pickers/CalendarPanelType\";\n\nexport type UseInputStatesResult = ReturnType<typeof useInputStates>;\n\nexport const useInputStates = (date: Date | undefined | null) => {\n const [localDate, setLocalDate] = useState<Date | undefined>(undefined);\n const [localTime, setLocalTime] = useState<string | undefined>(undefined);\n\n const [\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n ] = useBoolean(false);\n\n const [isTimePickerVisible, showTimePicker, hideTimePicker] = useBoolean(\n false\n );\n\n const [firstFocusedInput, setFirstFocusedInput] = useState<\n DateRangeFocusedInput | undefined\n >(undefined);\n\n const [dateInFocus, setDateInFocus] = useState<Date>(\n () => date ?? new Date()\n );\n\n const [currentPanel, setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n return {\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n firstFocusedInput,\n setFirstFocusedInput,\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n isTimePickerVisible,\n showTimePicker,\n hideTimePicker,\n localDate,\n setLocalDate,\n localTime,\n setLocalTime,\n };\n};\n","import * as React from \"react\";\nimport { RefObject, useCallback } from \"react\";\nimport { DayData } from \"../../../../util/calendar/CalendarDataFactory\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useUserInputHandlers = (\n onChangeDate: (incomingDate: Date | null) => void,\n dateInputRef: RefObject<HTMLInputElement>,\n showCalendar: () => void,\n hideCalendar: () => void,\n {\n isCalendarVisible,\n setCurrentPanel,\n showTimePicker,\n hideTimePicker,\n }: UseInputStatesResult\n) => {\n const onFocusLeft = useCallback(() => {\n if (!isCalendarVisible) {\n showCalendar();\n }\n setCurrentPanel(\"calendar\");\n hideTimePicker();\n }, [hideTimePicker, isCalendarVisible, setCurrentPanel, showCalendar]);\n\n const onFocusRight = useCallback(() => {\n hideCalendar();\n showTimePicker();\n }, [hideCalendar, showTimePicker]);\n\n const onClickDay = useCallback(\n (day: DayData) => {\n onChangeDate(day.date);\n hideCalendar();\n showTimePicker();\n },\n [onChangeDate, hideCalendar, showTimePicker]\n );\n\n const onClickArrowButton = useCallback(() => {\n setCurrentPanel(\"presets\");\n showCalendar();\n }, [setCurrentPanel, showCalendar]);\n\n const onClickCalendarButton = useCallback(() => {\n if (isCalendarVisible) {\n hideCalendar();\n } else {\n dateInputRef.current?.focus();\n setCurrentPanel(\"calendar\");\n showCalendar();\n }\n }, [\n isCalendarVisible,\n hideCalendar,\n dateInputRef,\n setCurrentPanel,\n showCalendar,\n ]);\n\n const onKeyDownHandler = useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \"Escape\") {\n hideCalendar();\n }\n },\n [hideCalendar]\n );\n\n return {\n onFocusLeft,\n onFocusRight,\n onClickDay,\n onClickArrowButton,\n onClickCalendarButton,\n onKeyDownHandler,\n };\n};\n","import { faClock } from \"@fortawesome/free-regular-svg-icons/faClock\";\nimport { Box, Column, Row, Space, useDelayedFalse } from \"@stenajs-webui/core\";\nimport { PrimaryButton } from \"@stenajs-webui/elements\";\nimport {\n TextInputProps,\n ValueAndOnValueChangeProps,\n} from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport {\n DualTextInput,\n DualTextInputProps,\n} from \"../../../features/dual-text-input/DualTextInput\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { TimePicker } from \"../../../features/time-picker/TimePicker\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport { transformTimeInDateToTimeString } from \"../../../util/time/TimeTransformer\";\nimport { useDateRangeEffects } from \"./hooks/UseDateRangeEffects\";\nimport { useDateRangeHandlers } from \"./hooks/UseDateRangeHandlers\";\nimport { useInputStates } from \"./hooks/UseInputStates\";\nimport { useUserInputHandlers } from \"./hooks/UseUserInputHandlers\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport interface DateTimeInputProps\n extends ValueAndOnValueChangeProps<Date | null>,\n OptionalMinMaxDatesAsString,\n Pick<DualTextInputProps, \"widthLeft\" | \"widthRight\"> {\n onEsc?: () => void;\n onEnter?: () => void;\n onBlur?: () => void;\n autoFocus?: boolean;\n disabled?: boolean;\n}\n\nexport const DateTimeInput: React.FC<DateTimeInputProps> = ({\n value,\n onValueChange,\n onEnter,\n onEsc,\n onBlur,\n autoFocus,\n minDate,\n widthLeft = 128,\n widthRight = 80,\n maxDate = defaultMaxDate,\n disabled,\n}) => {\n const dateInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n const timeInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n\n const states = useInputStates(value);\n\n const {\n setCurrentPanel,\n currentPanel,\n isCalendarVisible,\n dateInFocus,\n setDateInFocus,\n isTimePickerVisible,\n hideTimePicker,\n localTime,\n localDate,\n } = states;\n\n const {\n showCalendar,\n hideCalendar,\n inputLeftChangeHandler,\n inputRightChangeHandler,\n onChangeTime,\n onChangeDate,\n } = useDateRangeHandlers(value, onValueChange, states, dateInputRef);\n\n const {\n onKeyDownHandler,\n onFocusRight,\n onFocusLeft,\n onClickDay,\n onClickCalendarButton,\n onClickArrowButton,\n } = useUserInputHandlers(\n onChangeDate,\n dateInputRef,\n showCalendar,\n hideCalendar,\n states\n );\n\n useDateRangeEffects(value, setDateInFocus, dateInputRef);\n\n const statePerMonth = useMemo(() => {\n const dateToHighlight = value || localDate;\n if (!dateToHighlight) {\n return {};\n }\n return addDayStateHighlights(undefined, dateToHighlight, [\n \"singleSelected\",\n \"selected\",\n ]);\n }, [localDate, value]);\n\n const hideAll = useCallback(() => {\n hideCalendar();\n hideTimePicker();\n }, [hideCalendar, hideTimePicker]);\n\n const timeValue = useMemo<string | undefined>(\n () => (value ? transformTimeInDateToTimeString(value) : localTime),\n [value, localTime]\n );\n\n const delayedIsCalendarVisible = useDelayedFalse(isCalendarVisible, 300);\n const delayedIsTimePickerVisible = useDelayedFalse(isTimePickerVisible, 300);\n\n return (\n <Box onKeyDown={onKeyDownHandler}>\n <Popover\n arrow={false}\n lazy\n disabled={disabled}\n placement={defaultPopoverPlacement}\n visible={isCalendarVisible || isTimePickerVisible}\n onClickOutside={hideAll}\n content={\n (delayedIsCalendarVisible || delayedIsTimePickerVisible) && (\n <Column>\n {delayedIsCalendarVisible ? (\n <CalendarWithMonthSwitcher\n statePerMonth={statePerMonth}\n onClickDay={onClickDay}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n minDate={minDate}\n maxDate={maxDate}\n />\n ) : delayedIsTimePickerVisible ? (\n <Column>\n <Column overflow={\"hidden\"} height={\"250px\"}>\n <TimePicker\n value={timeValue ?? \"\"}\n onValueChange={onChangeTime}\n />\n </Column>\n <Space />\n <Row justifyContent={\"flex-end\"}>\n <PrimaryButton label={\"Done\"} onClick={hideTimePicker} />\n </Row>\n </Column>\n ) : null}\n </Column>\n )\n }\n >\n <DualTextInput\n autoFocusLeft={autoFocus}\n onEsc={onEsc}\n onEnter={onEnter}\n onBlur={onBlur}\n disabled={disabled}\n separatorIcon={faClock}\n typeLeft={\"date\"}\n typeRight={\"time\"}\n placeholderLeft={\"yyyy-mm-dd\"}\n placeholderRight={\"hh:mm\"}\n onChangeLeft={inputLeftChangeHandler}\n onChangeRight={inputRightChangeHandler}\n onClickArrowDown={onClickArrowButton}\n onClickCalendar={onClickCalendarButton}\n onFocusLeft={onFocusLeft}\n onFocusRight={onFocusRight}\n onClickLeft={onFocusLeft}\n onClickRight={onFocusRight}\n inputRefLeft={dateInputRef}\n inputRefRight={timeInputRef}\n valueRight={timeValue ?? \"\"}\n widthLeft={widthLeft}\n widthRight={widthRight}\n minLeft={minDate}\n maxLeft={maxDate}\n />\n </Popover>\n </Box>\n );\n};\n","import { RefObject, useEffect } from \"react\";\n\nexport const useDateRangeEffects = (\n startDate: Date | undefined,\n endDate: Date | undefined,\n setDateInFocus: (date: Date) => void,\n startDateInputRef: RefObject<HTMLInputElement>,\n endDateInputRef: RefObject<HTMLInputElement>\n) => {\n useEffect(\n function moveFocusedDateWhenStartDateChanges() {\n if (startDate) {\n setDateInFocus(startDate);\n }\n },\n [startDate, setDateInFocus]\n );\n\n useEffect(\n function moveFocusedDateWhenEndDateChanges() {\n if (endDate) {\n setDateInFocus(endDate);\n }\n },\n [endDate, setDateInFocus]\n );\n\n useEffect(\n function updateStartDateFieldWhenValueChanges() {\n if (startDateInputRef.current) {\n if (startDate) {\n startDateInputRef.current.valueAsDate = new Date(\n Date.UTC(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n )\n );\n } else {\n startDateInputRef.current.valueAsDate = null;\n }\n }\n },\n [startDate, startDateInputRef]\n );\n\n useEffect(\n function updateEndDateFieldWhenValueChanges() {\n if (endDateInputRef.current) {\n if (endDate) {\n endDateInputRef.current.valueAsDate = new Date(\n Date.UTC(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n )\n );\n } else {\n endDateInputRef.current.valueAsDate = null;\n }\n }\n },\n [endDate, endDateInputRef]\n );\n};\n","import { ChangeEvent, useCallback } from \"react\";\nimport { DateRangeDualTextInputProps } from \"../DateRangeDualTextInput\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useDateRangeHandlers = (\n startDate: Date | undefined,\n endDate: Date | undefined,\n onValueChange: DateRangeDualTextInputProps[\"onValueChange\"],\n {\n setDateInFocus,\n showCalendarInternal,\n hideCalendarInternal,\n setFirstFocusedInput,\n setCurrentPanel,\n }: UseInputStatesResult\n) => {\n const inputLeftChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (ev.target.value[0] !== \"0\") {\n onValueChange?.({\n startDate: ev.target.valueAsDate ?? undefined,\n endDate,\n });\n }\n },\n [onValueChange, endDate]\n );\n\n const inputRightChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (ev.target.value[0] !== \"0\") {\n onValueChange?.({\n startDate,\n endDate: ev.target.valueAsDate ?? undefined,\n });\n }\n },\n [onValueChange, startDate]\n );\n\n const showCalendar = useCallback(() => {\n if (startDate) {\n setDateInFocus(startDate);\n } else if (endDate) {\n setDateInFocus(endDate);\n } else {\n setDateInFocus(new Date());\n }\n setCurrentPanel(\"calendar\");\n showCalendarInternal();\n }, [\n startDate,\n endDate,\n setCurrentPanel,\n showCalendarInternal,\n setDateInFocus,\n ]);\n\n const hideCalendar = useCallback(() => {\n setFirstFocusedInput(undefined);\n hideCalendarInternal();\n }, [setFirstFocusedInput, hideCalendarInternal]);\n\n return {\n inputLeftChangeHandler,\n inputRightChangeHandler,\n hideCalendar,\n setDateInFocus,\n setCurrentPanel,\n showCalendar,\n };\n};\n","import { useBoolean } from \"@stenajs-webui/core\";\nimport { useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { CalendarPanelType } from \"../../../../features/calendar-with-month-year-pickers/CalendarPanelType\";\n\nexport type UseInputStatesResult = ReturnType<typeof useInputStates>;\n\nexport const useInputStates = (\n startDate: Date | undefined,\n endDate: Date | undefined\n) => {\n const [\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n ] = useBoolean(false);\n\n const [firstFocusedInput, setFirstFocusedInput] = useState<\n DateRangeFocusedInput | undefined\n >(undefined);\n\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const [dateInFocus, setDateInFocus] = useState<Date>(() => {\n const fromValue =\n focusedInput === \"startDate\"\n ? startDate\n : focusedInput === \"endDate\"\n ? endDate\n : undefined;\n\n return fromValue ?? new Date();\n });\n\n const [currentPanel, setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n return {\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n firstFocusedInput,\n setFirstFocusedInput,\n focusedInput,\n setFocusedInput,\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n };\n};\n","import { isAfter } from \"date-fns\";\nimport * as React from \"react\";\nimport { RefObject, useCallback } from \"react\";\nimport { DayData } from \"../../../../util/calendar/CalendarDataFactory\";\nimport { DateRangeDualTextInputProps } from \"../DateRangeDualTextInput\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useUserInputHandlers = (\n startDate: Date | undefined,\n endDate: Date | undefined,\n onValueChange: DateRangeDualTextInputProps[\"onValueChange\"],\n startDateInputRef: RefObject<HTMLInputElement>,\n endDateInputRef: RefObject<HTMLInputElement>,\n showCalendar: () => void,\n hideCalendar: () => void,\n {\n firstFocusedInput,\n setFirstFocusedInput,\n isCalendarVisible,\n setFocusedInput,\n focusedInput,\n setCurrentPanel,\n }: UseInputStatesResult\n) => {\n const onFocusLeft = useCallback(() => {\n if (firstFocusedInput == null) {\n setFirstFocusedInput(\"startDate\");\n }\n setFocusedInput(\"startDate\");\n if (!isCalendarVisible) {\n showCalendar();\n }\n }, [\n isCalendarVisible,\n setFocusedInput,\n showCalendar,\n setFirstFocusedInput,\n firstFocusedInput,\n ]);\n\n const onFocusRight = useCallback(() => {\n if (firstFocusedInput == null) {\n setFirstFocusedInput(\"endDate\");\n }\n setFocusedInput(\"endDate\");\n if (!isCalendarVisible) {\n showCalendar();\n }\n }, [\n isCalendarVisible,\n setFocusedInput,\n showCalendar,\n setFirstFocusedInput,\n firstFocusedInput,\n ]);\n\n const onClickDay = useCallback(\n (day: DayData) => {\n if (focusedInput === \"startDate\") {\n if (endDate != null && isAfter(day.date, endDate)) {\n onValueChange?.({\n startDate: day.date,\n endDate: undefined,\n });\n setFocusedInput(\"endDate\");\n endDateInputRef.current?.focus();\n } else {\n onValueChange?.({\n startDate: day.date,\n endDate,\n });\n if (firstFocusedInput === \"startDate\") {\n setFocusedInput(\"endDate\");\n endDateInputRef.current?.focus();\n } else {\n setTimeout(hideCalendar, 50);\n }\n }\n } else if (focusedInput === \"endDate\") {\n if (!startDate) {\n onValueChange?.({\n startDate,\n endDate: day.date,\n });\n setFocusedInput(\"startDate\");\n startDateInputRef.current?.focus();\n } else if (isAfter(startDate, day.date)) {\n onValueChange?.({\n startDate: day.date,\n endDate: undefined,\n });\n setFocusedInput(\"endDate\");\n endDateInputRef.current?.focus();\n } else {\n onValueChange?.({\n startDate,\n endDate: day.date,\n });\n setTimeout(hideCalendar, 50);\n }\n }\n },\n [\n focusedInput,\n onValueChange,\n endDate,\n firstFocusedInput,\n setFocusedInput,\n endDateInputRef,\n hideCalendar,\n startDate,\n startDateInputRef,\n ]\n );\n\n const onClickArrowButton = useCallback(() => {\n setCurrentPanel(\"presets\");\n showCalendar();\n }, [setCurrentPanel, showCalendar]);\n\n const onClickCalendarButton = useCallback(() => {\n if (isCalendarVisible) {\n hideCalendar();\n } else {\n setFocusedInput(\"startDate\");\n setFirstFocusedInput(\"startDate\");\n startDateInputRef.current?.focus();\n setCurrentPanel(\"calendar\");\n showCalendar();\n }\n }, [\n isCalendarVisible,\n hideCalendar,\n setFocusedInput,\n setFirstFocusedInput,\n startDateInputRef,\n setCurrentPanel,\n showCalendar,\n ]);\n\n const onKeyDownHandler = useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \"Escape\") {\n hideCalendar();\n }\n },\n [hideCalendar]\n );\n\n return {\n onFocusLeft,\n onFocusRight,\n onClickDay,\n onClickArrowButton,\n onClickCalendarButton,\n onKeyDownHandler,\n };\n};\n","import { Box, useDelayedFalse } from \"@stenajs-webui/core\";\nimport { stenaArrowRight } from \"@stenajs-webui/elements\";\nimport {\n TextInputProps,\n ValueAndOnValueChangeProps,\n} from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { isAfter } from \"date-fns\";\nimport * as React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport {\n DualTextInput,\n DualTextInputProps,\n} from \"../../../features/dual-text-input/DualTextInput\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { buildDayStateForSingleMonth } from \"../../../util/calendar/StateModifier\";\nimport { useDateRangeEffects } from \"./hooks/UseDateRangeEffects\";\nimport { useDateRangeHandlers } from \"./hooks/UseDateRangeHandlers\";\nimport { useInputStates } from \"./hooks/UseInputStates\";\nimport { useUserInputHandlers } from \"./hooks/UseUserInputHandlers\";\nimport { DateRangeInputCalendarProps } from \"../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { DateRange } from \"../../../types/DateRange\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport interface DateRangeDualTextInputProps<TData = unknown>\n extends ValueAndOnValueChangeProps<DateRange>,\n OptionalMinMaxDatesAsString,\n Pick<DualTextInputProps, \"widthLeft\" | \"widthRight\"> {\n onEsc?: () => void;\n onEnter?: () => void;\n onBlur?: () => void;\n autoFocus?: boolean;\n calendarProps?: DateRangeInputCalendarProps<TData>;\n disabled?: boolean;\n}\n\nexport const DateRangeDualTextInput = <TData extends {}>({\n value,\n onValueChange,\n autoFocus,\n onBlur,\n onEnter,\n onEsc,\n minDate,\n maxDate = defaultMaxDate,\n calendarProps,\n widthLeft = 128,\n widthRight = 128,\n disabled,\n}: DateRangeDualTextInputProps<TData>) => {\n const { startDate, endDate } = value || {};\n\n const startDateInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n const endDateInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n\n const states = useInputStates(startDate, endDate);\n\n const {\n dateInFocus,\n setDateInFocus,\n isCalendarVisible,\n currentPanel,\n setCurrentPanel,\n } = states;\n\n const {\n showCalendar,\n hideCalendar,\n inputLeftChangeHandler,\n inputRightChangeHandler,\n } = useDateRangeHandlers(startDate, endDate, onValueChange, states);\n\n const {\n onKeyDownHandler,\n onFocusRight,\n onFocusLeft,\n onClickDay,\n onClickCalendarButton,\n onClickArrowButton,\n } = useUserInputHandlers(\n startDate,\n endDate,\n onValueChange,\n startDateInputRef,\n endDateInputRef,\n showCalendar,\n hideCalendar,\n states\n );\n\n useDateRangeEffects(\n startDate,\n endDate,\n setDateInFocus,\n startDateInputRef,\n endDateInputRef\n );\n\n const startDateIsAfterEnd = useMemo(\n () => startDate && endDate && isAfter(startDate, endDate),\n [startDate, endDate]\n );\n\n const statePerMonth = useMemo(\n () =>\n buildDayStateForSingleMonth(\n calendarProps?.statePerMonth,\n startDate,\n endDate,\n dateInFocus\n ),\n [calendarProps?.statePerMonth, startDate, endDate, dateInFocus]\n );\n\n const delayedIsCalendarVisible = useDelayedFalse(isCalendarVisible, 300);\n\n return (\n <Box onKeyDown={onKeyDownHandler}>\n <Popover\n arrow={false}\n lazy\n disabled={disabled}\n placement={defaultPopoverPlacement}\n onClickOutside={hideCalendar}\n visible={isCalendarVisible}\n content={\n delayedIsCalendarVisible && (\n <CalendarWithMonthSwitcher\n onClickDay={onClickDay}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n minDate={minDate}\n maxDate={maxDate}\n {...calendarProps}\n statePerMonth={statePerMonth}\n />\n )\n }\n >\n <DualTextInput\n autoFocusLeft={autoFocus}\n onEsc={onEsc}\n onEnter={onEnter}\n onBlur={onBlur}\n disabled={disabled}\n separatorIcon={stenaArrowRight}\n typeLeft={\"date\"}\n typeRight={\"date\"}\n placeholderLeft={\"Start date\"}\n placeholderRight={\"End date\"}\n onChangeLeft={inputLeftChangeHandler}\n onChangeRight={inputRightChangeHandler}\n onClickArrowDown={onClickArrowButton}\n onClickCalendar={onClickCalendarButton}\n onFocusLeft={onFocusLeft}\n onFocusRight={onFocusRight}\n onClickLeft={onFocusLeft}\n onClickRight={onFocusRight}\n inputRefLeft={startDateInputRef}\n inputRefRight={endDateInputRef}\n variant={startDateIsAfterEnd ? \"error\" : undefined}\n widthLeft={widthLeft}\n widthRight={widthRight}\n minLeft={minDate}\n maxLeft={maxDate}\n minRight={minDate}\n maxRight={maxDate}\n />\n </Popover>\n </Box>\n );\n};\n"],"names":["styles","faCalendarAlt","useDateRangeEffects","useDateRangeHandlers","useInputStates","useUserInputHandlers","faClock"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/util/date/DateFormats.ts","../src/util/calendar/StateModifier.ts","../src/features/today-state/UseHighlightToday.ts","../src/util/calendar/CalendarDataFactory.ts","../src/util/calendar/StateHelper.ts","../src/components/calendar/CalendarTheme.tsx","../src/util/date/DateMinMaxValidator.ts","../src/components/calendar/DisabledDayWrapper.tsx","../src/components/calendar/renderers/WeekNumberCell.tsx","../src/components/calendar/CalendarWeek.tsx","../src/components/calendar/renderers/WeekDayCell.tsx","../src/components/calendar/renderers/CalendarDay.tsx","../src/components/calendar/CalendarMonth.tsx","../../../node_modules/style-inject/dist/style-inject.es.js","../src/components/calendar/Calendar.tsx","../src/features/month-switcher/hooks/UseSelectedMonthStepperLogic.ts","../src/features/month-switcher/MonthSwitcherBelow.tsx","../src/features/month-picker/MonthPickerCell.tsx","../src/features/month-picker/MonthPicker.tsx","../src/features/preset-picker/PresetFactory.ts","../src/features/preset-picker/PresetPicker.tsx","../src/features/year-picker/YearPickerCell.tsx","../src/features/year-picker/YearPicker.tsx","../src/features/calendar-with-month-year-pickers/CalendarWithMonthYearPickers.tsx","../src/features/month-switcher/CalendarWithMonthSwitcher.tsx","../src/util/date-range/DateRangeTransformer.ts","../src/util/date-range/DateRangeValidator.ts","../src/features/date-range/hooks/UseDateRangeOnClickDayHandler.ts","../src/features/internal-panel-state/UseInternalPanelState.tsx","../src/components/calendar-types/date-range-calendar/hooks/UseDateRangeSelection.ts","../src/components/calendar-types/date-range-calendar/DateRangeCalendar.tsx","../src/components/calendar-types/date-range-calendar/hooks/UseDateRangeCalendarState.ts","../src/components/calendar-types/single-date-calendar/UseSingleDateSelection.ts","../src/components/calendar-types/single-date-calendar/SingleDateCalendar.tsx","../src/components/calendar-types/multi-date-calendar/UseMultiDateSelection.ts","../src/components/calendar-types/multi-date-calendar/MultiDateCalendar.tsx","../src/components/calendar-types/single-week-calendar/UseSingleWeekSelection.ts","../src/components/calendar-types/single-week-calendar/SingleWeekCalendar.tsx","../src/util/date/DateListTools.ts","../src/components/calendar-types/date-range-exclusion-calendar/UseDateRangeExclusionSelection.ts","../src/components/calendar-types/date-range-exclusion-calendar/DateRangeExclusionCalendar.tsx","../src/config/DefaultPopoverPlacement.ts","../src/features/internal-panel-state/UseCalendarPopoverUpdater.ts","../src/components/input-types/date-input/UseDateInput.tsx","../src/config/DefaultMaxDate.ts","../src/components/input-types/date-input/DateInput.tsx","../src/components/input-types/date-range-input/hooks/UseDateRangeInput.tsx","../src/components/input-types/date-range-input/DateRangeInput.tsx","../src/components/input-types/date-text-input/DateTextInput.tsx","../src/util/time/TimeStringFormatValidator.ts","../src/components/input-types/time-text-input/TimeTextInput.tsx","../src/features/dual-text-input/DualTextInput.tsx","../src/util/time/TimeTransformer.ts","../src/features/time-picker/TimePickerCell.tsx","../src/features/time-picker/TimePickerColumn.tsx","../src/features/time-picker/TimePicker.tsx","../src/components/input-types/date-time-input/hooks/UseDateRangeEffects.ts","../src/components/input-types/date-time-input/hooks/UseDateRangeHandlers.ts","../src/components/input-types/date-time-input/hooks/UseInputStates.ts","../src/components/input-types/date-time-input/hooks/UseUserInputHandlers.ts","../src/components/input-types/date-time-input/DateTimeInput.tsx","../src/components/input-types/date-range-dual-text-input/hooks/UseDateRangeEffects.ts","../src/components/input-types/date-range-dual-text-input/hooks/UseDateRangeHandlers.ts","../src/components/input-types/date-range-dual-text-input/hooks/UseInputStates.ts","../src/components/input-types/date-range-dual-text-input/hooks/UseUserInputHandlers.ts","../src/components/input-types/date-range-dual-text-input/DateRangeDualTextInput.tsx"],"sourcesContent":["export const DateFormats = {\n yearAndMonth: \"yyyy-MM\",\n fullDate: \"yyyy-MM-dd\",\n fullMonthName: \"LLLL\",\n fullDateAndTime: \"yyyy-MM-dd HH:mm\",\n fullDateAndTimeSystem: \"yyyy-MM-ddTHH:MM\",\n weekDayName: \"EEEE\", // Tuesday\n weekDayNameShort: \"EEE\", // Tue\n dateAndMonth: \"d MMM\", // 2 Jan\n monthAndDate: \"MMM do\", // Jan 2nd\n};\n","import {\n addDays,\n eachDayOfInterval,\n endOfMonth,\n format,\n getDate,\n getISOWeek,\n isAfter,\n isSameDay,\n max,\n min,\n startOfMonth,\n subDays,\n} from \"date-fns\";\nimport { last } from \"lodash\";\nimport {\n CalendarState,\n CalendarUserData,\n DayState,\n DayStateHighlight,\n StateForWeek,\n} from \"../../types/CalendarTypes\";\nimport { DateFormats } from \"../date/DateFormats\";\nimport { WeekData } from \"./CalendarDataFactory\";\n\nexport const buildDayStateForDateRange = (\n statePerMonth: CalendarUserData<DayState> = {},\n start?: Date,\n end?: Date\n): CalendarUserData<DayState> | undefined => {\n if (start && end && isAfter(end, start)) {\n return eachDayOfInterval({ start, end }).reduce(\n (result: CalendarUserData<DayState>, date: Date) => {\n const isFirstInRange = isSameDay(date, start);\n const isLastInRange = isSameDay(date, end);\n const highlights = isFirstInRange\n ? [\"selected\", \"selectedStart\", \"range\"]\n : isLastInRange\n ? [\"selected\", \"selectedEnd\", \"range\"]\n : [\"range\"];\n return addDayStateHighlights(result, date, highlights);\n },\n statePerMonth\n );\n }\n\n let state = statePerMonth;\n\n if (start) {\n state = addDayStateHighlights(state, start, [\"selected\", \"singleSelected\"]);\n }\n\n if (end) {\n state = addDayStateHighlights(state, end, [\"selected\", \"singleSelected\"]);\n }\n\n return state;\n};\n\nexport const buildDayStateForSingleMonth = (\n statePerMonth: CalendarUserData<DayState> = {},\n start: Date | undefined,\n end: Date | undefined,\n dateInFocus: Date\n): CalendarUserData<DayState> | undefined =>\n buildDayStateForRange(\n statePerMonth,\n start,\n end,\n startOfMonth(dateInFocus),\n endOfMonth(dateInFocus)\n );\n\nexport const buildDayStateForRange = (\n statePerMonth: CalendarUserData<DayState> = {},\n start: Date | undefined,\n end: Date | undefined,\n startLimit: Date,\n endLimit: Date\n): CalendarUserData<DayState> | undefined => {\n if (start && end) {\n return buildDayStateForDateRange(\n statePerMonth,\n max([start, subDays(startLimit, 1)]),\n min([end, addDays(endLimit, 1)])\n );\n } else {\n return buildDayStateForDateRange(statePerMonth, start, end);\n }\n};\n\nexport const setDayStateValue = (\n state: CalendarUserData<DayState> | undefined,\n date: Date,\n values: Partial<DayState>\n): CalendarUserData<DayState> => {\n const monthString = format(date, DateFormats.yearAndMonth);\n const weekNumber = getISOWeek(date);\n const dayInMonth = getDate(date);\n return {\n ...state,\n [monthString]: {\n ...(state && state[monthString]),\n [weekNumber]: {\n ...(state && state[monthString] && state[monthString][weekNumber]),\n [dayInMonth]: {\n ...(state &&\n state[monthString] &&\n state[monthString][weekNumber] &&\n state[monthString][weekNumber][dayInMonth]),\n ...values,\n },\n },\n },\n };\n};\n\nexport const setDayStateValueFunction = (\n state: CalendarUserData<DayState> | undefined,\n date: Date,\n setter: (dayState: DayState | undefined) => Partial<DayState>\n): CalendarUserData<DayState> => {\n const monthString = format(date, DateFormats.yearAndMonth);\n const weekNumber = getISOWeek(date);\n const dayInMonth = getDate(date);\n return {\n ...state,\n [monthString]: {\n ...(state && state[monthString]),\n [weekNumber]: {\n ...(state && state[monthString] && state[monthString][weekNumber]),\n [dayInMonth]: {\n ...(state &&\n state[monthString] &&\n state[monthString][weekNumber] &&\n state[monthString][weekNumber][dayInMonth]),\n ...setter(\n state &&\n state[monthString] &&\n state[monthString][weekNumber] &&\n state[monthString][weekNumber][dayInMonth]\n ),\n },\n },\n },\n };\n};\n\nexport const addDayStateHighlights = (\n calendarState: CalendarState | undefined,\n date: Date,\n highlights: Array<DayStateHighlight>\n): CalendarUserData<DayState> => {\n const month = date.getMonth() + 1;\n const monthString = `${date.getFullYear()}-${month < 10 ? \"0\" : \"\"}${month}`;\n const weekNumber = getISOWeek(date);\n const dayInMonth = getDate(date);\n const dayState: DayState | undefined =\n calendarState &&\n calendarState[monthString] &&\n calendarState[monthString][weekNumber] &&\n calendarState[monthString][weekNumber][dayInMonth];\n\n return {\n ...calendarState,\n [monthString]: {\n ...(calendarState && calendarState[monthString]),\n [weekNumber]: {\n ...(calendarState &&\n calendarState[monthString] &&\n calendarState[monthString][weekNumber]),\n [dayInMonth]: addDayStateHighlightsOnSingleDay(dayState, highlights),\n },\n },\n };\n};\n\nexport const addDayStateHighlightsOnSingleDay = (\n dayState: DayState | undefined,\n highlights: Array<DayStateHighlight>\n): DayState => {\n return {\n ...dayState,\n highlights: [...(dayState?.highlights ?? []), ...highlights],\n };\n};\n\nexport const addWeekStateHighlights = (\n calendarState: CalendarState | undefined,\n week: WeekData,\n highlights: Array<DayStateHighlight>\n): CalendarUserData<DayState> => {\n const date = week.days[0].date;\n const month = date.getMonth() + 1;\n const monthString = `${date.getFullYear()}-${month < 10 ? \"0\" : \"\"}${month}`;\n const weekNumber = week.weekNumber;\n\n let state = calendarState;\n week.days.forEach((day) => {\n state = addDayStateHighlights(state, day.date, highlights);\n });\n\n const weekState =\n state && state[monthString] ? state[monthString][weekNumber] : undefined;\n\n const newHighlights: Array<DayStateHighlight> =\n weekState && weekState.highlights\n ? [...weekState.highlights, ...highlights]\n : highlights;\n\n const newWeekState: StateForWeek = {\n ...weekState,\n highlights: newHighlights,\n };\n\n return {\n ...state,\n [monthString]: {\n ...(calendarState && calendarState[monthString]),\n [weekNumber]: newWeekState,\n },\n };\n};\n\nexport const addWeekRangeHighlights = (\n calendarState: CalendarState | undefined,\n week: WeekData\n): CalendarUserData<DayState> => {\n if (!week.days.length) {\n return { ...calendarState };\n }\n const startDate = week.days[0].date;\n const endDate = last(week.days)?.date;\n return {\n ...buildDayStateForDateRange(calendarState, startDate, endDate),\n };\n};\n","import { useMemo } from \"react\";\nimport { CalendarState } from \"../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../util/calendar/StateModifier\";\n\nexport const useHighlightToday = (\n enabled: boolean | undefined,\n statePerMonth: CalendarState | undefined\n) => {\n return useMemo(() => {\n return enabled\n ? addDayStateHighlights(statePerMonth, new Date(), [\"today\"])\n : statePerMonth;\n }, [enabled, statePerMonth]);\n};\n","import {\n addDays,\n addHours,\n addWeeks,\n eachDayOfInterval,\n endOfMonth,\n format,\n getDate,\n getISODay,\n getISOWeek,\n getMonth,\n getYear,\n isSameDay,\n startOfISOWeek,\n startOfMonth,\n} from \"date-fns\";\nimport { DateFormats } from \"../date/DateFormats\";\n\nexport enum Month {\n JANUARY = 0,\n FEBRUARY,\n MARCH,\n APRIL,\n MAY,\n JUNE,\n JULY,\n AUGUST,\n SEPTEMBER,\n OCTOBER,\n NOVEMBER,\n DECEMBER,\n}\n\nexport enum WeekDay {\n SUNDAY = 0,\n MONDAY,\n TUESDAY,\n WEDNESDAY,\n THURSDAY,\n FRIDAY,\n SATURDAY,\n}\n\nexport interface DayData {\n name: string;\n date: Date; // YYYY-MM\n dateString: string; // YYYY-MM\n weekNumber: number;\n year: number; // 2018\n month: number; // 0-11\n dayOfMonth: number; // 1-31\n dayOfWeek: number; // 1-7\n isFirstDayOfWeek: boolean;\n isLastDayOfWeek: boolean;\n isFirstDayOfMonth: boolean;\n isLastDayOfMonth: boolean;\n}\n\nexport interface WeekData {\n weekNumber: number;\n startMonth: number;\n startYear: number;\n endMonth: number;\n endYear: number;\n isLastWeekOfMonth: boolean;\n days: Array<DayData>;\n}\n\nexport interface MonthData {\n monthString: string;\n name: string;\n year: number;\n monthInYear: number;\n weeks: Array<WeekData>;\n}\n\nexport const getMonthsInYear = (\n year: number,\n startMonth: number,\n numMonths: number\n): Array<MonthData> => {\n const months = [];\n for (let i = 0; i < numMonths; i++) {\n months.push(getMonthInYear(year, startMonth + i));\n }\n return months;\n};\n\nexport const getMonthInYear = (year: number, month: number): MonthData => {\n const yearToUse = year + Math.floor(month / 12);\n const monthToUse = month % 12;\n const firstDayOfMonth = new Date(yearToUse, monthToUse, 1);\n return {\n monthString: format(firstDayOfMonth, DateFormats.yearAndMonth),\n name: format(firstDayOfMonth, DateFormats.fullMonthName),\n year: yearToUse,\n monthInYear: monthToUse,\n weeks: getWeeksForMonth(yearToUse, monthToUse),\n };\n};\n\nexport const getWeeksForMonth = (\n year: number,\n month: number,\n forceSixWeeks: boolean = true\n): Array<WeekData> => {\n const firstDayOfMonth = new Date(year, month, 1);\n const firstDayOfFirstWeek = startOfISOWeek(firstDayOfMonth);\n const weeks = [];\n for (let i = 0; i < 6; i++) {\n const week = getWeekForDate(addWeeks(firstDayOfFirstWeek, i));\n if (i > 0 && week.startMonth !== month && !forceSixWeeks) {\n return weeks;\n }\n weeks.push(week);\n }\n return weeks;\n};\n\nexport const getWeekForDate = (firstDayOfWeek: Date): WeekData => {\n const isLastWeekOfMonth =\n getMonth(addDays(firstDayOfWeek, 7)) !== getMonth(firstDayOfWeek);\n return {\n weekNumber: getISOWeek(firstDayOfWeek),\n startMonth: getMonth(firstDayOfWeek),\n startYear: getYear(firstDayOfWeek),\n endMonth: getMonth(addDays(firstDayOfWeek, 6)),\n endYear: getYear(addDays(firstDayOfWeek, 6)),\n days: getDaysForWeekForDate(firstDayOfWeek),\n isLastWeekOfMonth,\n };\n};\n\nexport const createDay = (date: Date): DayData => {\n const dayOfWeek = getISODay(date);\n return {\n date,\n name: format(date, \"EEE\"),\n dateString: format(addHours(date, 12), DateFormats.fullDate),\n weekNumber: getISOWeek(date),\n year: getYear(date),\n month: getMonth(date),\n dayOfMonth: getDate(date),\n dayOfWeek,\n isFirstDayOfWeek: dayOfWeek === 1,\n isLastDayOfWeek: dayOfWeek === 7,\n isFirstDayOfMonth: isSameDay(startOfMonth(date), date),\n isLastDayOfMonth: isSameDay(endOfMonth(date), date),\n };\n};\n\nexport const getDaysForWeekForDate = (firstDayOfWeek: Date): Array<DayData> => {\n return eachDayOfInterval({\n start: firstDayOfWeek,\n end: addDays(firstDayOfWeek, 6),\n }).map(createDay);\n};\n\nexport const getStartDateOfISOWeek = (\n weekNumber: number,\n year: number\n): Date => {\n const simple = new Date(year, 0, 1 + (weekNumber - 1) * 7);\n const dayOfWeek = simple.getDay();\n const isoWeekStart = simple;\n if (dayOfWeek <= 4) {\n isoWeekStart.setDate(simple.getDate() - simple.getDay() + 1);\n } else {\n isoWeekStart.setDate(simple.getDate() + 8 - simple.getDay());\n }\n return isoWeekStart;\n};\n\nexport const calculateOverflowingMonth = (\n year: number,\n month: number\n): { year: number; month: number } => {\n if (month > Month.DECEMBER) {\n return { year: year + Math.floor(month / 12), month: month % 12 };\n }\n if (month < Month.JANUARY) {\n return { year: year + Math.floor(month / 12), month: 12 + (month % 12) };\n }\n return { year, month };\n};\n","import { DayState, DayStateHighlight } from \"../../types/CalendarTypes\";\n\nexport const dayHasHighlight = (\n dayState: DayState | undefined,\n defaultHighlights: Array<DayStateHighlight> | undefined,\n highlight: string\n): boolean => {\n if (defaultHighlights && defaultHighlights.indexOf(highlight) >= 0) {\n return true;\n }\n if (\n dayState &&\n dayState.highlights &&\n dayState.highlights.indexOf(highlight) >= 0\n ) {\n return true;\n }\n return false;\n};\n\nexport const dayHighlightSelect = <T>(\n dayState: DayState | undefined,\n defaultHighlights: Array<DayStateHighlight> | undefined,\n highlightsOrBoolean: Array<string | boolean>,\n returnValues: Array<T>,\n fallbackValue?: T\n): T | undefined => {\n if (highlightsOrBoolean.length !== returnValues.length) {\n throw new Error(\n \"Select highlight failed, number of values do not equal number of highlights.\"\n );\n }\n if (highlightsOrBoolean.length === 0) {\n return fallbackValue;\n }\n for (let i = 0; i < highlightsOrBoolean.length; i++) {\n if (typeof highlightsOrBoolean[i] === \"boolean\" && highlightsOrBoolean[i]) {\n return returnValues[i];\n }\n if (\n typeof highlightsOrBoolean[i] === \"string\" &&\n dayHasHighlight(\n dayState,\n defaultHighlights,\n highlightsOrBoolean[i] as string\n )\n ) {\n return returnValues[i];\n }\n }\n return fallbackValue;\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextProps } from \"@stenajs-webui/core\";\nimport { CSSProperties } from \"react\";\nimport { DayState, DayStateHighlight } from \"../../types/CalendarTypes\";\n\nimport {\n DayData,\n MonthData,\n WeekData,\n} from \"../../util/calendar/CalendarDataFactory\";\nimport { dayHighlightSelect } from \"../../util/calendar/StateHelper\";\n\nexport interface CalendarTheme<TUserData = {}> {\n width: string;\n height: string;\n WeekNumber: WeekNumberTheme;\n WeekDay: WeekDayTheme;\n CalendarDay: CalendarDayTheme<TUserData>;\n CalendarMonth: CalendarMonthTheme;\n}\n\nexport interface WeekNumberTheme {\n backgroundColor: string;\n textColor?: string;\n clickableTextColor?: string;\n show?: boolean;\n}\n\nexport interface CalendarMonthTheme {\n headerTextColor?: string;\n cellSpacing?: string;\n headerLeftIcon?: IconDefinition;\n headerRightIcon?: IconDefinition;\n}\n\nexport interface WeekDayTheme {\n textColor?: string;\n clickableTextColor?: string;\n}\n\nexport type CalendarStyleProvider<TUserData, TResult> = (\n defaultHighlights: Array<DayStateHighlight> | undefined,\n dayState: DayState | undefined,\n day: DayData,\n week: WeekData,\n month: MonthData,\n userData?: TUserData\n) => TResult;\n\nexport type CalendarWrapperStyleProvider<TUserData> = CalendarStyleProvider<\n TUserData,\n CSSProperties | undefined\n>;\n\ntype TextPropsProvider<TUserData> = CalendarStyleProvider<\n TUserData,\n TextProps | undefined\n>;\n\nexport interface CalendarDayTheme<TUserData> {\n tdStyle?: CalendarWrapperStyleProvider<TUserData>;\n innerWrapperStyle?: CalendarWrapperStyleProvider<TUserData>;\n cellWrapperStyle?: CalendarWrapperStyleProvider<TUserData>;\n textProps?: TextPropsProvider<TUserData>;\n}\n\nexport interface CalendarDefaultWrapperColors {\n selectedBackground: string;\n rangeBackground: string;\n todayBackground: string;\n borderColor?: string;\n borderRadius?: string;\n rangeBorderRadius?: string;\n}\n\nexport const defaultWrapperStyleProvider = ({\n selectedBackground,\n todayBackground,\n rangeBackground,\n borderColor = \"transparent\",\n}: CalendarDefaultWrapperColors): CalendarWrapperStyleProvider<{}> => (\n defaultHighlights,\n dayState,\n day,\n _,\n month\n) => {\n let style = {};\n\n const backgroundColor = dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selected\", \"range\", \"today\", day.month === month.monthInYear],\n [selectedBackground, rangeBackground, todayBackground, \"#fff\"],\n \"transparent\"\n );\n\n return {\n ...style,\n backgroundColor,\n borderTopLeftRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedStart\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n borderBottomLeftRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedStart\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n borderTopRightRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedEnd\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n borderBottomRightRadius: dayHighlightSelect(\n dayState,\n defaultHighlights,\n [\"selectedEnd\", \"singleSelected\"],\n [\n \"var(--swui-calendar-day-border-radius)\",\n \"var(--swui-calendar-day-border-radius)\",\n ],\n borderColor\n ),\n boxSizing: \"border-box\",\n };\n};\n\ninterface DefaultTextColors {\n disabledColor: string;\n inOtherMonthColor: string;\n selectedColor: string;\n rangeTextColor?: string;\n}\n\nexport const defaultTextPropsProvider = ({\n selectedColor,\n disabledColor,\n inOtherMonthColor,\n rangeTextColor,\n}: DefaultTextColors): TextPropsProvider<{}> => {\n return (defaultHighlights, dayState, day, _, month) => {\n const isOtherMonth = day.month !== month.monthInYear;\n const color = dayHighlightSelect(\n dayState,\n defaultHighlights,\n [isOtherMonth, \"selected\", \"range\", \"enabled\", \"disabled\"],\n [\n inOtherMonthColor,\n selectedColor,\n rangeTextColor,\n undefined,\n disabledColor,\n ]\n );\n return {\n color,\n };\n };\n};\n\nexport const defaultCalendarTheme: CalendarTheme = {\n width: \"var(--swui-calendar-day-width)\",\n height: \"var(--swui-calendar-day-height)\",\n WeekNumber: {\n backgroundColor: \"var(--swui-calendar-week-number-bg-color)\",\n textColor: \"var(--swui-calendar-week-number-text-color)\",\n clickableTextColor: \"var(--swui-calendar-week-number-clickable-text-color)\",\n show: true,\n },\n WeekDay: {\n textColor: \"var(--swui-calendar-week-day-text-color)\",\n clickableTextColor: \"var(--swui-calendar-week-day-clickable-text-color)\",\n },\n CalendarDay: {\n tdStyle: defaultWrapperStyleProvider({\n selectedBackground: \"var(--swui-calendar-wrapper-selected-background)\",\n rangeBackground: \"var(--swui-calendar-wrapper-range-background)\",\n todayBackground: \"var(--swui-calendar-wrapper-today-background)\",\n }),\n textProps: defaultTextPropsProvider({\n selectedColor: \"var(--swui-calendar-text-selected-color)\",\n disabledColor: \"var(--swui-calendar-text-disabled-color)\",\n inOtherMonthColor: \"var(--swui-calendar-text-in-other-month-color)\",\n }),\n },\n CalendarMonth: {\n headerTextColor: \"var(--swui-calendar-week-day-text-color)\",\n },\n};\n\nexport const extranetCalendarTheme: CalendarTheme = {\n ...defaultCalendarTheme,\n width: \"37px\",\n height: \"37px\",\n};\n","import { isAfter, isBefore, isSameDay } from \"date-fns\";\n\nexport const isDateInMinMaxRange = (\n date: Date,\n min: Date | undefined,\n max: Date | undefined\n): boolean => {\n if (min && isBefore(date, min)) {\n return isSameDay(date, min);\n }\n if (max && isAfter(date, max)) {\n return isSameDay(date, max);\n }\n return true;\n};\n","import * as React from \"react\";\nimport { useMemo } from \"react\";\nimport {\n CalendarDayProps,\n OptionalMinMaxDates,\n} from \"../../types/CalendarTypes\";\nimport { addDayStateHighlightsOnSingleDay } from \"../../util/calendar/StateModifier\";\nimport { isDateInMinMaxRange } from \"../../util/date/DateMinMaxValidator\";\n\ninterface DisabledDayWrapperProps<T>\n extends CalendarDayProps<T>,\n OptionalMinMaxDates {\n dayComponent: React.ComponentType<CalendarDayProps<T>>;\n}\n\nexport const DisabledDayWrapper = function DisabledDayWrapper<T>({\n dayComponent: DayComponent,\n minDate,\n maxDate,\n dayState,\n day,\n ...props\n}: DisabledDayWrapperProps<T>) {\n const activeDayState = useMemo(\n () =>\n !isDateInMinMaxRange(day.date, minDate, maxDate)\n ? addDayStateHighlightsOnSingleDay(dayState, [\"disabled\"])\n : dayState,\n [day.date, dayState, maxDate, minDate]\n );\n\n return <DayComponent day={day} {...props} dayState={activeDayState} />;\n};\n","import { Box, Clickable, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { OnClickWeek } from \"../../../types/CalendarTypes\";\nimport { WeekData } from \"../../../util/calendar/CalendarDataFactory\";\nimport { CalendarTheme } from \"../CalendarTheme\";\n\nexport interface WeekNumberCellProps {\n week: WeekData;\n onClickWeek?: OnClickWeek;\n theme: CalendarTheme;\n background?: JSX.Element;\n prefix?: string;\n backgroundColor?: string;\n}\n\nexport const WeekNumberCell: React.FC<WeekNumberCellProps> = ({\n onClickWeek,\n theme,\n week,\n background,\n backgroundColor,\n prefix,\n}) => {\n const content = (\n <Box\n width={theme.width}\n height={theme.height}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n {background && <Box position={\"absolute\"}>{background}</Box>}\n <Box position={\"absolute\"}>\n <Text\n color={\n onClickWeek\n ? theme.WeekNumber.clickableTextColor\n : theme.WeekNumber.textColor\n }\n >\n {prefix}\n {week.weekNumber}\n </Text>\n </Box>\n </Box>\n );\n return (\n <Box\n background={backgroundColor || theme.WeekNumber.backgroundColor}\n position={\"relative\"}\n >\n {onClickWeek ? (\n <Clickable\n borderRadius={\"var(--swui-calendar-day-border-radius)\"}\n onClick={(ev) => onClickWeek(week, ev)}\n disableFocusHighlight={!onClickWeek}\n >\n {content}\n </Clickable>\n ) : (\n content\n )}\n </Box>\n );\n};\n","import * as React from \"react\";\nimport {\n CalendarDayProps,\n CalendarUserWeekData,\n DayState,\n DayStateHighlight,\n ExtraDayContentProps,\n OnClickDay,\n OnClickWeek,\n OptionalMinMaxDates,\n RenderWeekNumber,\n} from \"../../types/CalendarTypes\";\nimport { MonthData, WeekData } from \"../../util/calendar/CalendarDataFactory\";\n\nimport { CalendarTheme } from \"./CalendarTheme\";\nimport { DisabledDayWrapper } from \"./DisabledDayWrapper\";\nimport { WeekNumberCell } from \"./renderers/WeekNumberCell\";\n\nexport interface CalendarWeekProps<T> extends OptionalMinMaxDates {\n dayComponent: React.ComponentType<CalendarDayProps<T>>;\n week: WeekData;\n month: MonthData;\n statePerWeekDay?: CalendarUserWeekData<DayState>;\n userDataPerWeekDay?: CalendarUserWeekData<T>;\n onClickWeek?: OnClickWeek;\n onClickDay?: OnClickDay<T>;\n theme: CalendarTheme;\n renderWeekNumber?: RenderWeekNumber;\n extraDayContent?: React.ComponentType<ExtraDayContentProps<T>>;\n defaultHighlights?: Array<DayStateHighlight>;\n}\n\nexport function CalendarWeek<T>({\n week,\n month,\n dayComponent,\n statePerWeekDay,\n userDataPerWeekDay,\n minDate,\n maxDate,\n onClickWeek,\n onClickDay,\n theme,\n renderWeekNumber,\n extraDayContent,\n defaultHighlights,\n}: CalendarWeekProps<T>) {\n return (\n <tr key={week.weekNumber}>\n {theme.WeekNumber.show && (\n <td>\n {renderWeekNumber ? (\n renderWeekNumber(week, theme, onClickWeek)\n ) : (\n <WeekNumberCell\n week={week}\n onClickWeek={onClickWeek}\n theme={theme}\n />\n )}\n </td>\n )}\n {week.days.map((day) => (\n <DisabledDayWrapper\n dayComponent={dayComponent}\n key={day.dateString}\n day={day}\n week={week}\n month={month}\n dayState={statePerWeekDay && statePerWeekDay[day.dayOfMonth]}\n userData={userDataPerWeekDay && userDataPerWeekDay[day.dayOfMonth]}\n onClickDay={onClickDay}\n theme={theme}\n extraDayContent={extraDayContent}\n defaultHighlights={defaultHighlights}\n minDate={minDate}\n maxDate={maxDate}\n />\n ))}\n </tr>\n );\n}\n","import { Box, Clickable, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { OnClickWeekDay } from \"../../../types/CalendarTypes\";\nimport { DayData } from \"../../../util/calendar/CalendarDataFactory\";\nimport { CalendarTheme } from \"../CalendarTheme\";\n\nexport interface WeekDayCellProps {\n onClickWeekDay?: OnClickWeekDay;\n day: DayData;\n theme: CalendarTheme;\n}\n\nexport const WeekDayCell = ({\n onClickWeekDay,\n day,\n theme,\n}: WeekDayCellProps) => {\n const content = (\n <Box\n width={theme.width}\n height={theme.height}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n <Text\n size={\"small\"}\n color={\n onClickWeekDay\n ? theme.WeekDay.clickableTextColor\n : theme.WeekDay.textColor\n }\n >\n {day.name}\n </Text>\n </Box>\n );\n\n if (onClickWeekDay) {\n return (\n <Clickable\n borderRadius={\"var(--swui-calendar-day-border-radius)\"}\n onClick={(ev) => onClickWeekDay(day.dayOfWeek, ev)}\n disableFocusHighlight={!onClickWeekDay}\n >\n {content}\n </Clickable>\n );\n }\n\n return content;\n};\n","import styled from \"@emotion/styled\";\nimport { Box, Clickable, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport {\n CalendarDayProps,\n DayState,\n DayStateHighlight,\n} from \"../../../types/CalendarTypes\";\nimport { dayHighlightSelect } from \"../../../util/calendar/StateHelper\";\n\nexport const CalendarDay = function CalendarDay<T extends {}>({\n day,\n week,\n month,\n dayState,\n userData,\n onClickDay,\n theme,\n extraDayContent: ExtraDayContent,\n defaultHighlights,\n}: CalendarDayProps<T>) {\n const content = (\n <Box\n width={\"100%\"}\n height={\"100%\"}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n <Text\n {...(theme.CalendarDay.textProps &&\n theme.CalendarDay.textProps(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n ))}\n >\n {day.dayOfMonth}\n </Text>\n </Box>\n );\n\n const WrapperTd = styled.td({\n ...(theme.CalendarDay.tdStyle &&\n theme.CalendarDay.tdStyle(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n )),\n });\n\n const InnerWrapperDiv = styled.div({\n ...(theme.CalendarDay.innerWrapperStyle &&\n theme.CalendarDay.innerWrapperStyle(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n )),\n width: \"100%\",\n height: \"100%\",\n });\n\n const CellWrapperDiv = styled.div({\n ...(theme.CalendarDay.cellWrapperStyle &&\n theme.CalendarDay.cellWrapperStyle(\n defaultHighlights,\n dayState,\n day,\n week,\n month,\n userData\n )),\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n });\n\n return (\n <WrapperTd>\n <InnerWrapperDiv>\n <CellWrapperDiv>\n {day.month === month.monthInYear && (\n <>\n {ExtraDayContent && (\n <ExtraDayContent\n week={week}\n month={month}\n day={day}\n dayState={dayState}\n theme={theme}\n userData={userData}\n />\n )}\n {onClickDay && isClickable(defaultHighlights, dayState) ? (\n <Clickable\n onClick={(ev) => onClickDay(day, userData, ev)}\n style={{ width: \"100%\", height: \"100%\" }}\n borderRadius={\"var(--swui-calendar-day-border-radius)\"}\n >\n {content}\n </Clickable>\n ) : (\n <>{content}</>\n )}\n </>\n )}\n </CellWrapperDiv>\n </InnerWrapperDiv>\n </WrapperTd>\n );\n};\n\nconst isClickable = (\n defaultHighlights: Array<DayStateHighlight> | undefined,\n dayState: DayState | undefined\n): boolean =>\n !!dayHighlightSelect<boolean>(\n dayState,\n defaultHighlights,\n [\"enabled\", \"disabled\"],\n [true, false],\n true\n );\n","import { Box, Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport {\n CalendarDayProps,\n CalendarOnClicks,\n CalendarUserMonthData,\n DayState,\n DayStateHighlight,\n ExtraDayContentProps,\n OptionalMinMaxDates,\n Renderers,\n} from \"../../types/CalendarTypes\";\nimport {\n DayData,\n MonthData,\n WeekData,\n} from \"../../util/calendar/CalendarDataFactory\";\nimport { CalendarTheme, defaultCalendarTheme } from \"./CalendarTheme\";\nimport { CalendarWeek } from \"./CalendarWeek\";\nimport { WeekDayCell } from \"./renderers/WeekDayCell\";\nimport { CalendarDay } from \"./renderers/CalendarDay\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface CalendarMonthProps<T>\n extends CalendarOnClicks<T>,\n Renderers,\n OptionalMinMaxDates {\n month: MonthData;\n dayComponent?: React.ComponentType<CalendarDayProps<T>>;\n userDataPerWeek?: CalendarUserMonthData<T>;\n statePerWeek?: CalendarUserMonthData<DayState>;\n theme?: CalendarTheme;\n headerLeftContent?: React.ReactElement<{}>;\n headerRightContent?: React.ReactElement<{}>;\n extraDayContent?: React.ComponentType<ExtraDayContentProps<T>>;\n defaultHighlights?: Array<DayStateHighlight>;\n}\n\nexport function CalendarMonth<T>({\n month,\n dayComponent = CalendarDay,\n statePerWeek,\n userDataPerWeek,\n minDate,\n maxDate,\n onClickDay,\n onClickWeek,\n onClickWeekDay,\n onClickMonth,\n onClickYear,\n renderWeekNumber,\n renderWeekDay,\n headerLeftContent,\n headerRightContent,\n theme = defaultCalendarTheme,\n extraDayContent,\n defaultHighlights,\n}: CalendarMonthProps<T>) {\n const showWeekNumber = theme.WeekNumber.show;\n\n return (\n <>\n <Box alignItems={\"stretch\"}>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"32px\"}\n >\n <Box alignItems={\"center\"}>{headerLeftContent}</Box>\n\n <Row alignItems={\"center\"}>\n <Row width={\"104px\"} justifyContent={\"center\"}>\n {onClickMonth ? (\n <FlatButton\n onClick={() => onClickMonth(month)}\n label={month.name}\n />\n ) : (\n <Text>{month.name}</Text>\n )}\n </Row>\n <Space />\n <Row width={\"64px\"} justifyContent={\"center\"}>\n {onClickYear ? (\n <FlatButton\n onClick={() => onClickYear(month.year)}\n label={String(month.year)}\n />\n ) : (\n <Text>{month.year}</Text>\n )}\n </Row>\n </Row>\n\n <Box alignItems={\"center\"}>{headerRightContent}</Box>\n </Row>\n\n <table>\n <tbody>\n <tr>\n {showWeekNumber && (\n <td>\n <Box\n width={theme.width}\n height={theme.height}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n >\n <Text\n size={\"small\"}\n color={theme.CalendarMonth.headerTextColor}\n >\n W\n </Text>\n </Box>\n </td>\n )}\n {month.weeks[0].days.map((day: DayData) => (\n <td key={day.name}>\n {renderWeekDay ? (\n renderWeekDay(day.name, theme, onClickWeekDay)\n ) : (\n <WeekDayCell\n day={day}\n onClickWeekDay={onClickWeekDay}\n theme={theme}\n />\n )}\n </td>\n ))}\n </tr>\n {month.weeks.map((week: WeekData) => (\n <CalendarWeek<T>\n key={week.weekNumber}\n month={month}\n week={week}\n dayComponent={dayComponent}\n statePerWeekDay={statePerWeek && statePerWeek[week.weekNumber]}\n userDataPerWeekDay={\n userDataPerWeek && userDataPerWeek[week.weekNumber]\n }\n onClickDay={onClickDay}\n onClickWeek={onClickWeek}\n theme={theme}\n renderWeekNumber={renderWeekNumber}\n extraDayContent={extraDayContent}\n defaultHighlights={defaultHighlights}\n minDate={minDate}\n maxDate={maxDate}\n />\n ))}\n </tbody>\n </table>\n </Box>\n </>\n );\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { getMonth, getYear, parse } from \"date-fns\";\nimport { chunk } from \"lodash\";\nimport * as React from \"react\";\nimport { useHighlightToday } from \"../../features/today-state/UseHighlightToday\";\nimport {\n CalendarOnClicks,\n CalendarProps,\n CalendarUserData,\n DayState,\n Renderers,\n} from \"../../types/CalendarTypes\";\nimport {\n calculateOverflowingMonth,\n getMonthInYear,\n getMonthsInYear,\n MonthData,\n} from \"../../util/calendar/CalendarDataFactory\";\n\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport { CalendarTheme, defaultCalendarTheme } from \"./CalendarTheme\";\nimport { CalendarDay } from \"./renderers/CalendarDay\";\nimport styles from \"./Calendar.module.css\";\nimport { useMemo } from \"react\";\n\ninterface CalendarPanelProps<T>\n extends CalendarProps<T>,\n CalendarOnClicks<T>,\n Renderers {\n year: number;\n month: number;\n monthRows: Array<Array<MonthData>>;\n userDataPerMonth?: CalendarUserData<T>;\n statePerMonth?: CalendarUserData<DayState>;\n width?: string;\n height?: string;\n theme?: CalendarTheme;\n}\n\nfunction CalendarPanel<T extends {}>({\n monthRows,\n dayComponent = CalendarDay,\n userDataPerMonth,\n statePerMonth,\n minDate,\n maxDate,\n onClickDay,\n onClickWeekDay,\n onClickWeek,\n onClickMonth,\n onClickYear,\n renderWeekDay,\n renderWeekNumber,\n headerLeftContent,\n headerRightContent,\n extraDayContent,\n defaultHighlights,\n theme = defaultCalendarTheme,\n}: CalendarPanelProps<T>) {\n const minDateObj = useMemo(\n () => (minDate ? parse(minDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [minDate]\n );\n\n const maxDateObj = useMemo(\n () => (maxDate ? parse(maxDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [maxDate]\n );\n\n return (\n <div className={styles.calendar}>\n {monthRows.map((monthRow, rowIndex) => (\n <Spacing key={rowIndex}>\n <Row>\n {monthRow.map((month, index) => (\n <React.Fragment key={month.name}>\n {index > 0 && <Space />}\n <CalendarMonth<T>\n month={month}\n dayComponent={dayComponent}\n userDataPerWeek={\n userDataPerMonth && userDataPerMonth[month.monthString]\n }\n statePerWeek={\n statePerMonth && statePerMonth[month.monthString]\n }\n onClickDay={onClickDay}\n onClickWeekDay={onClickWeekDay}\n onClickWeek={onClickWeek}\n onClickMonth={onClickMonth}\n onClickYear={onClickYear}\n theme={theme}\n renderWeekNumber={renderWeekNumber}\n renderWeekDay={renderWeekDay}\n headerLeftContent={headerLeftContent}\n headerRightContent={headerRightContent}\n extraDayContent={extraDayContent}\n defaultHighlights={defaultHighlights}\n minDate={minDateObj}\n maxDate={maxDateObj}\n />\n </React.Fragment>\n ))}\n </Row>\n </Spacing>\n ))}\n </div>\n );\n}\n\nexport function Calendar<T extends {}>(props: CalendarProps<T>) {\n const initialDate = getInitialDate(props.year, props.month, props.date);\n const { year, month } = calculateOverflowingMonth(\n initialDate.year,\n initialDate.month\n );\n const monthRows = getMonthRows(\n year,\n month,\n props.numMonths,\n props.monthsPerRow\n );\n\n const statePerMonth = useHighlightToday(\n props.highlightToday,\n props.statePerMonth\n );\n\n return (\n <CalendarPanel<T>\n year={year}\n month={month}\n monthRows={monthRows}\n {...props}\n statePerMonth={statePerMonth}\n />\n );\n}\n\nconst getInitialDate = (year?: number, month?: number, date?: Date) => {\n if (month && year) {\n return {\n month,\n year,\n };\n }\n if (date) {\n return {\n month: getMonth(date),\n year: getYear(date),\n };\n }\n const now = new Date();\n return {\n month: getMonth(now),\n year: getYear(now),\n };\n};\n\nconst getMonthRows = (\n year: number,\n month: number,\n numMonths?: number,\n monthsPerRow?: number\n): Array<Array<MonthData>> => {\n if (numMonths == null) {\n return [[getMonthInYear(year, month)]];\n }\n if (monthsPerRow == null) {\n return [getMonthsInYear(year, month, numMonths)];\n }\n return chunk(getMonthsInYear(year, month, numMonths), monthsPerRow);\n};\n","import { addMonths, addYears, subMonths, subYears } from \"date-fns\";\nimport { useCallback } from \"react\";\n\nexport const useSelectedMonthStepperLogic = (\n dateInFocus: Date,\n setDateInFocus?: (dateInFocus: Date) => void,\n monthsPerRow?: number,\n numMonths?: number\n) => {\n const nextMonth = useCallback(() => {\n const d = addMonths(dateInFocus, monthsPerRow ?? numMonths ?? 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus, monthsPerRow, numMonths]);\n\n const nextYear = useCallback(() => {\n const d = addYears(dateInFocus, 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus]);\n\n const prevMonth = useCallback(() => {\n const d = subMonths(dateInFocus, monthsPerRow ?? numMonths ?? 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus, monthsPerRow, numMonths]);\n\n const prevYear = useCallback(() => {\n const d = subYears(dateInFocus, 1);\n setDateInFocus?.(d);\n }, [setDateInFocus, dateInFocus]);\n\n return {\n nextMonth,\n prevMonth,\n nextYear,\n prevYear,\n };\n};\n","import { Indent, Row, Space } from \"@stenajs-webui/core\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { CalendarTheme } from \"../../components/calendar/CalendarTheme\";\nimport { faAngleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleLeft\";\nimport { faAngleRight } from \"@fortawesome/free-solid-svg-icons/faAngleRight\";\nimport { faAngleDoubleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleLeft\";\nimport { faAngleDoubleRight } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleRight\";\n\nexport interface WithMonthSwitcherBelowProps {\n theme: CalendarTheme;\n nextMonth: () => void;\n prevMonth: () => void;\n nextYear: () => void;\n prevYear: () => void;\n}\n\nexport const WithMonthSwitcherBelow: React.FC<WithMonthSwitcherBelowProps> = ({\n children,\n prevMonth,\n nextMonth,\n prevYear,\n nextYear,\n}) => (\n <div>\n {children}\n <Indent>\n <Row>\n <FlatButton onClick={prevYear} leftIcon={faAngleDoubleLeft} />\n <Space />\n <FlatButton onClick={prevMonth} leftIcon={faAngleLeft} />\n <Indent num={2} />\n <FlatButton onClick={nextMonth} leftIcon={faAngleRight} />\n <Space />\n <FlatButton onClick={nextYear} leftIcon={faAngleDoubleRight} />\n </Row>\n </Indent>\n <Space />\n </div>\n);\n","import * as React from \"react\";\nimport { useMemo } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { Month } from \"../../util/calendar/CalendarDataFactory\";\nimport { format } from \"date-fns\";\n\ninterface Props extends ValueAndOnValueChangeProps<Month> {\n month: Month;\n}\n\nexport const MonthPickerCell: React.FC<Props> = ({\n value,\n onValueChange,\n month,\n}) => {\n const label = useMemo(() => {\n const now = new Date(2000, month, 1);\n return format(now, \"MMM\");\n }, [month]);\n\n return (\n <Row width={\"64px\"} justifyContent={\"center\"} spacing={0.5} indent={0.5}>\n {value === month ? (\n <PrimaryButton\n label={label}\n onClick={() => onValueChange && onValueChange(month)}\n />\n ) : (\n <FlatButton\n label={label}\n onClick={() => onValueChange && onValueChange(month)}\n />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { Month } from \"../../util/calendar/CalendarDataFactory\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { Column, Row } from \"@stenajs-webui/core\";\nimport { MonthPickerCell } from \"./MonthPickerCell\";\n\nexport interface MonthPickerProps extends ValueAndOnValueChangeProps<Month> {}\n\nconst monthMatrix = [\n [Month.JANUARY, Month.FEBRUARY, Month.MARCH],\n [Month.APRIL, Month.MAY, Month.JUNE],\n [Month.JULY, Month.AUGUST, Month.SEPTEMBER],\n [Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER],\n];\n\nexport const MonthPicker: React.FC<MonthPickerProps> = ({\n value,\n onValueChange,\n}) => {\n return (\n <Column>\n {monthMatrix.map((monthRow) => (\n <Row key={monthRow[0]}>\n {monthRow.map((month) => (\n <MonthPickerCell\n key={month}\n month={month}\n onValueChange={onValueChange}\n value={value}\n />\n ))}\n </Row>\n ))}\n </Column>\n );\n};\n","import { PresetPage } from \"./CalendarPreset\";\nimport { addDays, subDays } from \"date-fns\";\n\nexport const createStandardDateRangePresets = (\n now: Date\n): Array<PresetPage> => [\n {\n label: \"Past\",\n presets: [\n { label: \"Last 3 days\", startDate: now, endDate: subDays(now, 2) },\n { label: \"Last 7 days\", startDate: now, endDate: subDays(now, 6) },\n { label: \"Last 30 days\", startDate: now, endDate: subDays(now, 29) },\n { label: \"Last 45 days\", startDate: now, endDate: subDays(now, 44) },\n ],\n },\n {\n label: \"Future\",\n presets: [\n { label: \"Next 3 days\", startDate: now, endDate: addDays(now, 2) },\n { label: \"Next 7 days\", startDate: now, endDate: addDays(now, 6) },\n { label: \"Next 30 days\", startDate: now, endDate: addDays(now, 29) },\n { label: \"Next 45 days\", startDate: now, endDate: addDays(now, 44) },\n ],\n },\n];\n","import * as React from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { createStandardDateRangePresets } from \"./PresetFactory\";\nimport { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport { faAngleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleLeft\";\nimport { faAngleRight } from \"@fortawesome/free-solid-svg-icons/faAngleRight\";\nimport { CalendarPreset } from \"./CalendarPreset\";\n\nexport interface PresetPickerProps {\n onClickPreset: (preset: CalendarPreset) => void;\n}\n\nexport const PresetPicker: React.FC<PresetPickerProps> = ({\n onClickPreset,\n}) => {\n const [pageIndex, setPageIndex] = useState(0);\n const pages = useMemo(() => createStandardDateRangePresets(new Date()), []);\n\n const currentPage = pages[pageIndex] ?? pages[0];\n\n return (\n <Column>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n width={\"200px\"}\n >\n <FlatButton\n size={\"small\"}\n leftIcon={faAngleLeft}\n disabled={pageIndex === 0}\n onClick={() => setPageIndex(pageIndex - 1)}\n />\n <Text>{currentPage.label}</Text>\n <FlatButton\n size={\"small\"}\n leftIcon={faAngleRight}\n disabled={pageIndex === pages.length - 1}\n onClick={() => setPageIndex(pageIndex + 1)}\n />\n </Row>\n <Space />\n <Column alignItems={\"center\"}>\n {currentPage.presets.map((preset) => (\n <React.Fragment key={preset.label}>\n <PrimaryButton\n label={preset.label}\n onClick={() => onClickPreset(preset)}\n />\n <Space />\n </React.Fragment>\n ))}\n </Column>\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\n\ninterface Props extends ValueAndOnValueChangeProps<number> {\n year: number;\n}\n\nexport const YearPickerCell: React.FC<Props> = ({\n value,\n onValueChange,\n year,\n}) => {\n const label = String(year);\n return (\n <Row width={\"64px\"} justifyContent={\"center\"} spacing={0.5} indent={0.5}>\n {value === year ? (\n <PrimaryButton label={label} onClick={() => onValueChange?.(year)} />\n ) : (\n <FlatButton label={label} onClick={() => onValueChange?.(year)} />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { Column, Row } from \"@stenajs-webui/core\";\nimport { YearPickerCell } from \"./YearPickerCell\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { faCaretLeft } from \"@fortawesome/free-solid-svg-icons/faCaretLeft\";\nimport { faCaretRight } from \"@fortawesome/free-solid-svg-icons/faCaretRight\";\nimport { chunk, range } from \"lodash\";\n\nexport interface YearPickerProps extends ValueAndOnValueChangeProps<number> {\n initialLastYear?: number;\n}\n\nexport const YearPicker: React.FC<YearPickerProps> = ({\n value,\n onValueChange,\n initialLastYear,\n}) => {\n const [lastYear, setLastYear] = useState(() => {\n if (value) {\n return value + 4;\n }\n return initialLastYear ?? new Date().getFullYear() + 4;\n });\n\n const yearRows = useMemo(() => {\n const startYear = lastYear - 11;\n return chunk(range(startYear, lastYear + 1), 3);\n }, [lastYear]);\n\n useEffect(() => {\n setLastYear((prev) => calculateLastYearInFocus(value, prev));\n }, [value]);\n\n return (\n <Row>\n <Column justifyContent={\"center\"}>\n <FlatButton\n leftIcon={faCaretLeft}\n onClick={() => setLastYear(lastYear - 3)}\n />\n </Column>\n <Column>\n {yearRows.map((yearRow) => (\n <Row key={yearRow[0]}>\n {yearRow.map((year) => (\n <YearPickerCell\n key={year}\n year={year}\n onValueChange={onValueChange}\n value={value}\n />\n ))}\n </Row>\n ))}\n </Column>\n <Column justifyContent={\"center\"}>\n <FlatButton\n leftIcon={faCaretRight}\n onClick={() => setLastYear(lastYear + 3)}\n />\n </Column>\n </Row>\n );\n};\n\nconst calculateLastYearInFocus = (\n value: number | undefined,\n lastYear: number\n): number => {\n if (value == null) {\n return lastYear;\n }\n if (value > lastYear) {\n const yearDiff = value - lastYear;\n const remaining = yearDiff % 3;\n const yearsToAdd = yearDiff - remaining + 3;\n return lastYear + yearsToAdd;\n }\n const startYear = lastYear - 11;\n if (value < startYear) {\n const yearDiff = startYear - value;\n const remaining = yearDiff % 3;\n const yearsToSubtract = yearDiff - remaining + 3;\n return lastYear - yearsToSubtract;\n }\n\n return lastYear;\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport { PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Calendar } from \"../../components/calendar/Calendar\";\nimport { CalendarProps } from \"../../types/CalendarTypes\";\nimport { Month } from \"../../util/calendar/CalendarDataFactory\";\nimport { MonthPicker } from \"../month-picker/MonthPicker\";\nimport { CalendarPreset } from \"../preset-picker/CalendarPreset\";\nimport { PresetPicker } from \"../preset-picker/PresetPicker\";\nimport { YearPicker } from \"../year-picker/YearPicker\";\nimport { CalendarPanelType } from \"./CalendarPanelType\";\n\ninterface CalendarWithMonthYearPickersProps<T>\n extends Omit<CalendarProps<T>, \"date\" | \"year\" | \"month\"> {\n dateInFocus: Date;\n setDateInFocus: (dateInFocus: Date) => void;\n currentPanel: CalendarPanelType;\n setCurrentPanel: (currentPanel: CalendarPanelType) => void;\n onSelectPreset: (preset: CalendarPreset) => void;\n}\n\nexport const CalendarWithMonthYearPickers = function CalendarWithMonthYearPickers<\n T\n>({\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n ...props\n}: CalendarWithMonthYearPickersProps<T>) {\n const onChangeSelectedMonth = useCallback(\n (selectedMonth: Month) => {\n const newDate = dateInFocus ? new Date(dateInFocus) : new Date();\n newDate.setMonth(selectedMonth);\n if (setDateInFocus) {\n setDateInFocus(newDate);\n }\n setCurrentPanel(\"calendar\");\n },\n [dateInFocus, setDateInFocus, setCurrentPanel]\n );\n\n const onChangeSelectedYear = useCallback(\n (selectedYear: number) => {\n const newDate = dateInFocus ? new Date(dateInFocus) : new Date();\n newDate.setFullYear(selectedYear);\n if (setDateInFocus) {\n setDateInFocus(newDate);\n }\n setCurrentPanel(\"calendar\");\n },\n [dateInFocus, setDateInFocus, setCurrentPanel]\n );\n\n const onClickYear = useCallback(() => {\n setCurrentPanel(\"year\");\n }, [setCurrentPanel]);\n\n const onClickMonth = useCallback(() => {\n setCurrentPanel(\"month\");\n }, [setCurrentPanel]);\n\n switch (currentPanel) {\n case \"calendar\":\n return (\n <>\n <Calendar<T>\n {...props}\n date={dateInFocus}\n onClickYear={onClickYear}\n onClickMonth={onClickMonth}\n />\n </>\n );\n case \"month\":\n return (\n <MonthPicker\n value={dateInFocus.getMonth()}\n onValueChange={onChangeSelectedMonth}\n />\n );\n case \"year\":\n return (\n <YearPicker\n value={dateInFocus.getFullYear()}\n onValueChange={onChangeSelectedYear}\n />\n );\n case \"presets\":\n return <PresetPicker onClickPreset={() => {}} />;\n\n default:\n return (\n <Box>\n <PrimaryButton\n label={\"Show calendar\"}\n onClick={() => setCurrentPanel(\"calendar\")}\n />\n </Box>\n );\n }\n};\n","import { FlatButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { Calendar } from \"../../components/calendar/Calendar\";\nimport { defaultCalendarTheme } from \"../../components/calendar/CalendarTheme\";\nimport { CalendarProps } from \"../../types/CalendarTypes\";\nimport { useSelectedMonthStepperLogic } from \"./hooks/UseSelectedMonthStepperLogic\";\nimport { WithMonthSwitcherBelow } from \"./MonthSwitcherBelow\";\nimport { CalendarWithMonthYearPickers } from \"../calendar-with-month-year-pickers/CalendarWithMonthYearPickers\";\nimport { faAngleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleLeft\";\nimport { faAngleRight } from \"@fortawesome/free-solid-svg-icons/faAngleRight\";\nimport { Column, Row, Space } from \"@stenajs-webui/core\";\nimport { faAngleDoubleLeft } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleLeft\";\nimport { faAngleDoubleRight } from \"@fortawesome/free-solid-svg-icons/faAngleDoubleRight\";\nimport { CalendarPanelType } from \"../calendar-with-month-year-pickers/CalendarPanelType\";\nimport { CalendarPreset } from \"../preset-picker/CalendarPreset\";\n\nexport type MonthSwitcherPlacement = \"header\" | \"below\";\n\nexport interface CalendarWithMonthSwitcherProps<T> extends CalendarProps<T> {\n monthSwitcherPlacement?: MonthSwitcherPlacement;\n dateInFocus: Date;\n setDateInFocus: (dateInFocus: Date) => void;\n currentPanel: CalendarPanelType;\n setCurrentPanel: (currentPanel: CalendarPanelType) => void;\n onSelectPreset?: (preset: CalendarPreset) => void;\n hideYearPagination?: boolean;\n}\n\nconst noop = () => {};\n\nexport function CalendarWithMonthSwitcher<T>({\n monthSwitcherPlacement,\n theme = defaultCalendarTheme,\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n onSelectPreset = noop,\n hideYearPagination = false,\n ...calendarProps\n}: CalendarWithMonthSwitcherProps<T>) {\n const {\n nextMonth,\n prevMonth,\n nextYear,\n prevYear,\n } = useSelectedMonthStepperLogic(\n dateInFocus,\n setDateInFocus,\n calendarProps.monthsPerRow,\n calendarProps.numMonths\n );\n\n const placement = fallbackIfNoPlacement(\n monthSwitcherPlacement,\n calendarProps.numMonths\n );\n\n switch (placement) {\n case \"below\": {\n return (\n <WithMonthSwitcherBelow\n theme={theme}\n nextMonth={nextMonth}\n prevMonth={prevMonth}\n nextYear={nextYear}\n prevYear={prevYear}\n >\n <Calendar<T> {...calendarProps} theme={theme} date={dateInFocus} />\n </WithMonthSwitcherBelow>\n );\n }\n case \"header\": {\n return (\n <Column>\n <CalendarWithMonthYearPickers<T>\n {...calendarProps}\n theme={theme}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n onSelectPreset={onSelectPreset}\n headerLeftContent={\n <Row alignItems={\"center\"}>\n {!hideYearPagination && (\n <FlatButton\n size={\"small\"}\n onClick={prevYear}\n leftIcon={faAngleDoubleLeft}\n />\n )}\n <Space />\n <FlatButton\n size={\"small\"}\n onClick={prevMonth}\n leftIcon={faAngleLeft}\n />\n </Row>\n }\n headerRightContent={\n <Row alignItems={\"center\"}>\n <FlatButton\n size={\"small\"}\n onClick={nextMonth}\n leftIcon={faAngleRight}\n />\n <Space />\n {!hideYearPagination && (\n <FlatButton\n size={\"small\"}\n onClick={nextYear}\n leftIcon={faAngleDoubleRight}\n />\n )}\n </Row>\n }\n />\n </Column>\n );\n }\n default: {\n return (\n <Calendar<T> {...calendarProps} theme={theme} date={dateInFocus} />\n );\n }\n }\n}\n\nconst fallbackIfNoPlacement = (\n monthSwitcherPlacement: MonthSwitcherPlacement | undefined,\n numMonths: number | undefined\n): MonthSwitcherPlacement => {\n return monthSwitcherPlacement || (numMonths || 1) > 1 ? \"below\" : \"header\";\n};\n","import { DateRange, DateStringRange } from \"../../types/DateRange\";\nimport { format, parse } from \"date-fns\";\n\nexport const dateRangeToStrings = (dateRange: DateRange): DateStringRange => ({\n startDate: dateRange.startDate\n ? format(dateRange.startDate, \"yyyy-MM-dd\")\n : undefined,\n endDate: dateRange.endDate\n ? format(dateRange.endDate, \"yyyy-MM-dd\")\n : undefined,\n});\n\nexport const stringsToDateRange = ({\n startDate,\n endDate,\n}: DateStringRange): DateRange => {\n const now = new Date();\n return {\n startDate: startDate ? parse(startDate, \"yyyy-MM-dd\", now) : undefined,\n endDate: endDate ? parse(endDate, \"yyyy-MM-dd\", now) : undefined,\n };\n};\n","import { isAfter, isSameDay } from \"date-fns\";\nimport { DateRange, DateStringRange } from \"../../types/DateRange\";\nimport { dateRangeToStrings, stringsToDateRange } from \"./DateRangeTransformer\";\n\nexport const isDateRangeInvalid = ({\n startDate,\n endDate,\n}: DateRange): boolean =>\n Boolean(\n startDate &&\n endDate &&\n !isSameDay(startDate, endDate) &&\n isAfter(startDate, endDate)\n );\n\nexport const toggleDatesIfEndIsEarlierThanStart = (\n dateRange: DateRange\n): DateRange => {\n if (isDateRangeInvalid(dateRange)) {\n return {\n startDate: dateRange.endDate,\n endDate: dateRange.startDate,\n };\n }\n return dateRange;\n};\n\nexport const toggleDateStringsIfEndIsEarlierThanStart = (\n dateRange: DateStringRange\n): DateStringRange => {\n if (dateRange.startDate && dateRange.endDate) {\n return dateRangeToStrings(\n toggleDatesIfEndIsEarlierThanStart(stringsToDateRange(dateRange))\n );\n }\n return dateRange;\n};\n","import { useCallback } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../components/calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { OnClickDay } from \"../../../types/CalendarTypes\";\nimport { DayData } from \"../../../util/calendar/CalendarDataFactory\";\nimport {\n isDateRangeInvalid,\n toggleDatesIfEndIsEarlierThanStart,\n} from \"../../../util/date-range/DateRangeValidator\";\nimport { DateRange } from \"../../../types/DateRange\";\n\nexport const useDateRangeOnClickDayHandler = <T>(\n value: DateRange | undefined,\n onValueChange: ((dateRange: DateRange) => void) | undefined,\n focusedInput: DateRangeFocusedInput,\n setFocusedInput: (focusedInput: DateRangeFocusedInput) => void\n): OnClickDay<T> => {\n return useCallback(\n (day: DayData) => {\n const dateRange = {\n startDate: focusedInput === \"startDate\" ? day.date : value?.startDate,\n endDate: focusedInput === \"endDate\" ? day.date : value?.endDate,\n };\n\n if (!isDateRangeInvalid(dateRange)) {\n setFocusedInput(focusedInput === \"startDate\" ? \"endDate\" : \"startDate\");\n }\n onValueChange?.(toggleDatesIfEndIsEarlierThanStart(dateRange));\n },\n [\n focusedInput,\n onValueChange,\n setFocusedInput,\n value?.endDate,\n value?.startDate,\n ]\n );\n};\n","import { CalendarPanelType } from \"../calendar-with-month-year-pickers/CalendarPanelType\";\nimport { useCallback, useState } from \"react\";\n\nexport type OnChangePanel = (panel: CalendarPanelType) => void;\n\nexport interface UseInternalPanelStateProps {\n onChangePanel?: OnChangePanel;\n}\n\nexport const useInternalPanelState = (\n onChangePanel: OnChangePanel | undefined\n) => {\n const [currentPanel, _setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n const setCurrentPanel = useCallback(\n (currentPanel: CalendarPanelType) => {\n _setCurrentPanel(currentPanel);\n onChangePanel?.(currentPanel);\n },\n [onChangePanel]\n );\n\n return {\n currentPanel,\n setCurrentPanel,\n };\n};\n","import { useMemo, useState } from \"react\";\nimport { useDateRangeOnClickDayHandler } from \"../../../../features/date-range/hooks/UseDateRangeOnClickDayHandler\";\nimport { DateRangeCalendarProps } from \"../DateRangeCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { buildDayStateForDateRange } from \"../../../../util/calendar/StateModifier\";\nimport { useInternalPanelState } from \"../../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useDateRangeSelection = <T>({\n focusedInput,\n value,\n onValueChange,\n setFocusedInput,\n statePerMonth,\n onChangePanel,\n}: DateRangeCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n const [dateInFocus, setDateInFocus] = useState(() => new Date());\n\n const onClickDay = useDateRangeOnClickDayHandler(\n value,\n onValueChange,\n focusedInput,\n setFocusedInput\n );\n\n const statePerMonthWithSelection = useMemo(\n () =>\n buildDayStateForDateRange(\n statePerMonth,\n value?.startDate,\n value?.endDate\n ),\n [statePerMonth, value?.endDate, value?.startDate]\n );\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelection,\n currentPanel,\n setCurrentPanel,\n setDateInFocus,\n dateInFocus,\n };\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useDateRangeSelection } from \"./hooks/UseDateRangeSelection\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { DateRange } from \"../../../types/DateRange\";\n\nexport type DateRangeFocusedInput = \"startDate\" | \"endDate\" | undefined;\n\nexport interface DateRangeCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T>,\n ValueAndOnValueChangeProps<DateRange> {\n focusedInput?: DateRangeFocusedInput;\n setFocusedInput: (focusedInput: DateRangeFocusedInput) => void;\n}\n\nexport function DateRangeCalendar<T extends {}>(\n props: DateRangeCalendarProps<T>\n) {\n const dateRangeSelectionProps = useDateRangeSelection(props);\n return (\n <CalendarWithMonthSwitcher<T> {...props} {...dateRangeSelectionProps} />\n );\n}\n\nexport type DateRangeInputCalendarProps<T> = Omit<\n DateRangeCalendarProps<T>,\n | \"startDateInFocus\"\n | \"value\"\n | \"onValueChange\"\n | \"focusedInput\"\n | \"setFocusedInput\"\n | \"theme\"\n | \"currentPanel\"\n | \"setCurrentPanel\"\n>;\n","import { useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../DateRangeCalendar\";\n\nexport const useDateRangeCalendarState = () => {\n const [startDate, setStartDate] = useState<Date | undefined>();\n const [endDate, setEndDate] = useState<Date | undefined>();\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n return {\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n focusedInput,\n setFocusedInput,\n };\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { OnClickDay } from \"../../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport { SingleDateCalendarProps } from \"./SingleDateCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useSingleDateSelection = <T>({\n onChange,\n value,\n statePerMonth,\n onChangePanel,\n}: SingleDateCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const [dateInFocus, setDateInFocus] = useState(() => value ?? new Date());\n\n const onClickDay: OnClickDay<T> = useCallback(\n (day) => {\n if (onChange) {\n onChange(day.date);\n }\n },\n [onChange]\n );\n\n const statePerMonthWithSelectedDate = useMemo(\n () =>\n value\n ? addDayStateHighlights(statePerMonth, value, [\n \"selected\",\n \"singleSelected\",\n ])\n : statePerMonth,\n [statePerMonth, value]\n );\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelectedDate,\n date: value,\n currentPanel,\n setCurrentPanel,\n dateInFocus,\n setDateInFocus,\n };\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\n\nimport { useSingleDateSelection } from \"./UseSingleDateSelection\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\n\nexport interface SingleDateCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T> {\n value: Date | undefined;\n onChange: (value: Date | undefined) => void;\n}\n\nexport function SingleDateCalendar<T extends {}>(\n props: SingleDateCalendarProps<T>\n) {\n const singleDateSelectionProps = useSingleDateSelection(props);\n return (\n <CalendarWithMonthSwitcher<T> {...props} {...singleDateSelectionProps} />\n );\n}\n","import { isSameDay } from \"date-fns\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { OnClickDay } from \"../../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport { MultiDateCalendarProps } from \"./MultiDateCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useMultiDateSelection = <T>({\n onChange,\n value,\n statePerMonth,\n onChangePanel,\n}: MultiDateCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const [dateInFocus, setDateInFocus] = useState(() => new Date());\n\n const onClickDay: OnClickDay<T> = useCallback(\n (day) => {\n if (!onChange) {\n return;\n }\n const isSelected = value && value.find((d) => isSameDay(d, day.date));\n if (value && isSelected) {\n onChange(value.filter((v) => !isSameDay(v, day.date)));\n } else {\n onChange([...(value || []), day.date]);\n }\n },\n [onChange, value]\n );\n const statePerMonthWithSelectedDate = useMemo(() => {\n if (!value) {\n return statePerMonth;\n }\n return value.reduce(\n (stateSum, date) => addDayStateHighlights(stateSum, date, [\"selected\"]),\n statePerMonth\n );\n }, [statePerMonth, value]);\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelectedDate,\n currentPanel,\n setCurrentPanel,\n dateInFocus,\n setDateInFocus,\n };\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useMultiDateSelection } from \"./UseMultiDateSelection\";\nimport { UseInternalPanelStateProps } from \"../../../features/internal-panel-state/UseInternalPanelState\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\n\nexport interface MultiDateCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T>,\n UseInternalPanelStateProps {\n value?: Array<Date>;\n onChange?: (value: Array<Date>) => void;\n}\n\nexport function MultiDateCalendar<T extends {}>(\n props: MultiDateCalendarProps<T>\n) {\n const selectionProps = useMultiDateSelection(props);\n return <CalendarWithMonthSwitcher<T> {...props} {...selectionProps} />;\n}\n","import { useCallback, useMemo, useState } from \"react\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport {\n getStartDateOfISOWeek,\n getWeekForDate,\n WeekData,\n} from \"../../../util/calendar/CalendarDataFactory\";\nimport { addWeekRangeHighlights } from \"../../../util/calendar/StateModifier\";\nimport { SingleWeekCalendarProps } from \"./SingleWeekCalendar\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\n\nexport const useSingleWeekSelection = <T>({\n onChange,\n value,\n statePerMonth,\n onChangePanel,\n}: SingleWeekCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const [dateInFocus, setDateInFocus] = useState(() => {\n const week = getWeekDataFromWeekString(value);\n if (!week) {\n return new Date();\n }\n return week.days[0].date;\n });\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const onClickDay = useCallback(\n (day) => {\n if (onChange) {\n onChange(getWeekStringFromWeekData(getWeekForDate(day.date)));\n }\n },\n [onChange]\n );\n const onClickWeek = useCallback(\n (week) => {\n if (onChange) {\n onChange(getWeekStringFromWeekData(week));\n }\n },\n [onChange]\n );\n\n const statePerMonthWithSelection = useMemo(() => {\n const weekData = getWeekDataFromWeekString(value);\n return weekData\n ? addWeekRangeHighlights(statePerMonth, weekData)\n : statePerMonth;\n }, [value, statePerMonth]);\n\n const date = useMemo(() => {\n const week = getWeekDataFromWeekString(value);\n if (!week) {\n return new Date();\n }\n return week.days[0].date;\n }, [value]);\n\n return {\n statePerMonth: statePerMonthWithSelection,\n date,\n dateInFocus,\n setDateInFocus,\n onClickDay,\n onClickWeek,\n currentPanel,\n setCurrentPanel,\n };\n};\n\nconst getWeekStringFromWeekData = (\n week: WeekData | undefined\n): string | undefined => {\n if (!week) {\n return undefined;\n }\n return `${week.endYear}-${week.weekNumber}`;\n};\n\nconst getWeekDataFromWeekString = (\n week: string | undefined\n): WeekData | undefined => {\n if (!week) {\n return undefined;\n }\n const parts = week.split(\"-\");\n const weekNumber = parseInt(parts[1], 10);\n const year = parseInt(parts[0], 10);\n return getWeekForDate(getStartDateOfISOWeek(weekNumber, year));\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useSingleWeekSelection } from \"./UseSingleWeekSelection\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\n\nexport type SingleWeekValue = string;\n\nexport interface SingleWeekCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T> {\n value: SingleWeekValue | undefined;\n onChange: (value: SingleWeekValue | undefined) => void;\n}\n\nexport function SingleWeekCalendar<T>(props: SingleWeekCalendarProps<T>) {\n const singleWeekSelectionProps = useSingleWeekSelection(props);\n return (\n <CalendarWithMonthSwitcher<T> {...props} {...singleWeekSelectionProps} />\n );\n}\n","import { isSameDay } from \"date-fns\";\n\nexport const addDateIfNotExists = (\n list: Array<Date>,\n date: Date\n): Array<Date> => {\n if (list.filter((item) => isSameDay(item, date)).length >= 1) {\n return list;\n }\n return [...list, date];\n};\n\nexport const removeDateIfExist = (list: Array<Date>, date: Date): Array<Date> =>\n list.filter((item) => !isSameDay(item, date));\n\nexport const listContainsDate = (list: Array<Date>, date: Date): boolean =>\n !!list.find((item) => isSameDay(item, date));\n","import { eachDayOfInterval } from \"date-fns\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useDateRangeOnClickDayHandler } from \"../../../features/date-range/hooks/UseDateRangeOnClickDayHandler\";\nimport { CalendarState, OnClickDay } from \"../../../types/CalendarTypes\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport {\n listContainsDate,\n removeDateIfExist,\n} from \"../../../util/date/DateListTools\";\nimport { DateRangeFocusedInput } from \"../date-range-calendar/DateRangeCalendar\";\nimport { DateRangeExclusionCalendarProps } from \"./DateRangeExclusionCalendar\";\nimport { CalendarWithMonthSwitcherProps } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useInternalPanelState } from \"../../../features/internal-panel-state/UseInternalPanelState\";\nimport { DateRange } from \"../../../types/DateRange\";\n\nexport const useDateRangeExclusionSelection = <T>({\n value,\n onValueChange,\n statePerMonth,\n onChangePanel,\n}: DateRangeExclusionCalendarProps<T>): CalendarWithMonthSwitcherProps<T> => {\n const [dateRange, setDateRange] = useState<DateRange | undefined>();\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n const { currentPanel, setCurrentPanel } = useInternalPanelState(\n onChangePanel\n );\n\n const [dateInFocus, setDateInFocus] = useState(\n () => (focusedInput && value?.[focusedInput]) ?? new Date()\n );\n\n const onChangeHandler = useCallback(\n (value: DateRange) => {\n setDateRange(value);\n const { startDate, endDate } = value;\n if (onValueChange) {\n if (startDate && endDate) {\n const dates = eachDayOfInterval({ start: startDate, end: endDate });\n onValueChange(dates);\n } else if (startDate) {\n onValueChange([startDate]);\n } else if (endDate) {\n onValueChange([endDate]);\n }\n }\n },\n [onValueChange]\n );\n\n const onClickDayRange = useDateRangeOnClickDayHandler(\n dateRange,\n onChangeHandler,\n focusedInput,\n setFocusedInput\n );\n\n const onClickDay: OnClickDay<T> = useCallback(\n (day, userData, ev) => {\n if (onValueChange) {\n if (ev.ctrlKey || ev.metaKey) {\n if (!value) {\n onValueChange([day.date]);\n } else if (listContainsDate(value, day.date)) {\n onValueChange(removeDateIfExist(value, day.date));\n } else {\n onValueChange([...value, day.date]);\n }\n } else {\n onClickDayRange(day, userData, ev);\n }\n }\n },\n [onValueChange, onClickDayRange, value]\n );\n const statePerMonthWithSelectedDate = useMemo(() => {\n return addHighlighting(statePerMonth, value);\n }, [statePerMonth, value]);\n\n return {\n onClickDay,\n statePerMonth: statePerMonthWithSelectedDate,\n currentPanel,\n setCurrentPanel,\n dateInFocus,\n setDateInFocus,\n };\n};\n\nconst addHighlighting = (\n statePerMonth: CalendarState | undefined,\n dateList: Array<Date> | undefined\n): CalendarState | undefined => {\n if (!dateList) {\n return statePerMonth;\n }\n return dateList.reduce((statePerMonth, date) => {\n return addDayStateHighlights(statePerMonth, date, [\"selected\"]);\n }, statePerMonth);\n};\n","import * as React from \"react\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { useDateRangeExclusionSelection } from \"./UseDateRangeExclusionSelection\";\nimport { UseInternalPanelStateProps } from \"../../../features/internal-panel-state/UseInternalPanelState\";\nimport { InternalPanelAndFocusStateProps } from \"../../../types/InternalPanelAndFocusStateProps\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\n\nexport interface DateRangeExclusionCalendarProps<T>\n extends InternalPanelAndFocusStateProps<T>,\n UseInternalPanelStateProps,\n ValueAndOnValueChangeProps<Array<Date>> {}\n\nexport function DateRangeExclusionCalendar<T extends {}>(\n props: DateRangeExclusionCalendarProps<T>\n) {\n const selectionProps = useDateRangeExclusionSelection(props);\n return <CalendarWithMonthSwitcher<T> {...props} {...selectionProps} />;\n}\n","import { PopoverPlacement } from \"@stenajs-webui/tooltip\";\n\nexport const defaultPopoverPlacement: PopoverPlacement = \"bottom\";\n","import { useTippyInstance } from \"@stenajs-webui/tooltip\";\nimport { useCallback } from \"react\";\n\nexport const useCalendarPopoverUpdater = () => {\n const [tippyRef, tippyInstanceRef] = useTippyInstance();\n\n const onChangePanel = useCallback(() => {\n tippyInstanceRef.current?.popperInstance?.update();\n }, [tippyInstanceRef]);\n\n return {\n onChangePanel,\n tippyRef,\n };\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useDateInput = (\n onChange?: (date: Date | undefined) => void,\n onClose?: () => void,\n openOnMount?: boolean\n) => {\n const [showingCalendar, setShowingCalendar] = useState(openOnMount || false);\n\n const showCalendar = useCallback(() => {\n setShowingCalendar(true);\n return true;\n }, [setShowingCalendar]);\n\n const hideCalendar = useCallback(() => {\n setShowingCalendar(false);\n if (onClose) {\n onClose();\n }\n }, [setShowingCalendar, onClose]);\n\n const onSelectDate = useCallback(\n (date: Date | undefined) => {\n if (onChange) {\n onChange(date);\n }\n setTimeout(hideCalendar, 150);\n },\n [onChange, hideCalendar]\n );\n\n return {\n showCalendar,\n hideCalendar,\n showingCalendar,\n onSelectDate,\n };\n};\n","export const defaultMaxDate = \"2999-12-31\";\n","import { faCalendarAlt } from \"@fortawesome/free-regular-svg-icons/faCalendarAlt\";\nimport { Box, Row } from \"@stenajs-webui/core\";\nimport { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport { useCalendarPopoverUpdater } from \"../../../features/internal-panel-state/UseCalendarPopoverUpdater\";\nimport { DateFormats } from \"../../../util/date/DateFormats\";\nimport { SingleDateCalendar } from \"../../calendar-types/single-date-calendar/SingleDateCalendar\";\nimport {\n CalendarTheme,\n defaultCalendarTheme,\n} from \"../../calendar/CalendarTheme\";\nimport { DateTextInputCalendarProps } from \"../date-text-input/DateTextInput\";\nimport { useDateInput } from \"./UseDateInput\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface DateInputProps<T = {}> extends OptionalMinMaxDatesAsString {\n /** The current value */\n value?: Date;\n /** onChange handler for when the user selects a date. */\n onChange?: (date: Date | undefined) => void;\n /** Variant of the input field. */\n variant?: TextInputProps[\"variant\"];\n /** If true, calendar will be open when component mounts. */\n openOnMount?: boolean;\n /** Is invoked when user closes the calendar popup. */\n onClose?: () => void;\n /**\n * The date format in the input field. See date-fns docs.\n * @default YYYY-MM-dd\n */\n displayFormat?: string;\n /**\n * Placeholder when no date has been selected.\n * @default Enter date\n */\n placeholder?: string;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n /**\n * Z-index of the calendar overlay.\n * @default 100\n */\n zIndex?: number;\n /**\n * Width of the input element.\n * * @default 125px\n */\n width?: string;\n /**\n * The calendar theme to use.\n */\n calendarTheme?: CalendarTheme;\n /** Props to be passed to Calendar, see SingleDateCalendar. */\n calendarProps?: DateTextInputCalendarProps<T>;\n /**\n * Disables the TextInput, Calendar and Popover.\n */\n disabled?: boolean;\n}\n\nexport const DateInput: React.FC<DateInputProps> = ({\n displayFormat = DateFormats.fullDate,\n placeholder = \"Enter date\",\n value,\n zIndex = 100,\n calendarTheme = defaultCalendarTheme,\n calendarProps,\n openOnMount,\n onClose,\n onChange,\n portalTarget,\n variant,\n width,\n minDate,\n maxDate = defaultMaxDate,\n disabled,\n}) => {\n const {\n hideCalendar,\n showingCalendar,\n onSelectDate,\n showCalendar,\n } = useDateInput(onChange, onClose, openOnMount);\n\n const { tippyRef, onChangePanel } = useCalendarPopoverUpdater();\n\n return (\n <Box width={width}>\n <Popover\n arrow={false}\n lazy\n visible={showingCalendar}\n onClickOutside={hideCalendar}\n placement={defaultPopoverPlacement}\n zIndex={zIndex}\n appendTo={portalTarget ?? \"parent\"}\n tippyRef={tippyRef}\n disabled={disabled}\n content={\n <SingleDateCalendar\n {...calendarProps}\n onChange={onSelectDate}\n value={value}\n theme={calendarTheme}\n onChangePanel={onChangePanel}\n minDate={minDate}\n maxDate={maxDate}\n />\n }\n >\n <TextInput\n type={\"date\"}\n contentRight={\n <Row alignItems={\"center\"}>\n <FlatButton\n size={\"small\"}\n disabled={disabled}\n leftIcon={faCalendarAlt}\n onClick={showCalendar}\n />\n </Row>\n }\n onFocus={showCalendar}\n onClickRight={showCalendar}\n value={value ? format(value, displayFormat) : \"\"}\n placeholder={placeholder}\n size={9}\n disabled={disabled}\n autoFocus={openOnMount}\n variant={variant}\n min={minDate}\n max={maxDate}\n />\n </Popover>\n </Box>\n );\n};\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { DayData } from \"../../../../util/calendar/CalendarDataFactory\";\nimport { isAfter } from \"date-fns\";\nimport { DateRange } from \"../../../../types/DateRange\";\n\nexport const useDateRangeInput = (\n value: DateRange | undefined,\n onValueChange: ((dateRange: DateRange) => void) | undefined\n) => {\n const startDateInputRef = useRef<HTMLInputElement>(null);\n const endDateInputRef = useRef<HTMLInputElement>(null);\n\n const [showingCalendar, setShowingCalendar] = useState(false);\n const [focusedInput, setFocusedInput] = useState<\n DateRangeFocusedInput | undefined\n >(undefined);\n\n const showCalendarStartDate = useCallback(() => {\n setFocusedInput(\"startDate\");\n setShowingCalendar(true);\n return true;\n }, [setFocusedInput, setShowingCalendar]);\n\n const showCalendarEndDate = useCallback(() => {\n setFocusedInput(\"endDate\");\n setShowingCalendar(true);\n return true;\n }, [setFocusedInput, setShowingCalendar]);\n\n const hideCalendar = useCallback(() => {\n setShowingCalendar(false);\n }, [setShowingCalendar]);\n\n const onClickDay = useCallback(\n (day: DayData) => {\n if (focusedInput === \"startDate\") {\n onValueChange?.({\n startDate: day.date,\n endDate: value?.endDate,\n });\n if (!value?.endDate) {\n setFocusedInput(\"endDate\");\n endDateInputRef.current && endDateInputRef.current.focus();\n } else {\n setTimeout(hideCalendar, 150);\n }\n } else if (focusedInput === \"endDate\") {\n onValueChange?.({\n startDate: value?.startDate,\n endDate: day.date,\n });\n if (!value?.startDate) {\n setFocusedInput(\"startDate\");\n startDateInputRef.current && startDateInputRef.current.focus();\n } else {\n setTimeout(hideCalendar, 150);\n }\n }\n },\n [focusedInput, onValueChange, setFocusedInput, hideCalendar, value]\n );\n\n const startDateIsAfterEnd = useMemo(\n () =>\n value?.startDate &&\n value?.endDate &&\n isAfter(value.startDate, value.endDate),\n [value?.startDate, value?.endDate]\n );\n\n return {\n showingCalendar,\n hideCalendar,\n showCalendarEndDate,\n showCalendarStartDate,\n focusedInput,\n setFocusedInput,\n startDateInputRef,\n endDateInputRef,\n onClickDay,\n startDateIsAfterEnd,\n };\n};\n","import { faCalendarAlt } from \"@fortawesome/free-solid-svg-icons/faCalendarAlt\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { TextInput, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport { DateFormats } from \"../../../util/date/DateFormats\";\nimport { DateRangeInputCalendarProps } from \"../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport {\n CalendarTheme,\n defaultCalendarTheme,\n} from \"../../calendar/CalendarTheme\";\nimport { useDateRangeInput } from \"./hooks/UseDateRangeInput\";\nimport { Icon } from \"@stenajs-webui/elements\";\nimport { faLongArrowAltRight } from \"@fortawesome/free-solid-svg-icons/faLongArrowAltRight\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { CalendarPanelType } from \"../../../features/calendar-with-month-year-pickers/CalendarPanelType\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { buildDayStateForDateRange } from \"../../../util/calendar/StateModifier\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { DateRange } from \"../../../types/DateRange\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport interface DateRangeInputProps<T>\n extends OptionalMinMaxDatesAsString,\n ValueAndOnValueChangeProps<DateRange> {\n /**\n * The date format in the input field. See date-fns docs.\n * @default YYYY-MM-dd\n */\n displayFormat?: string;\n\n /**\n * Placeholder for start date field when no date has been selected.\n * @default Start date\n */\n placeholderStartDate?: string;\n\n /**\n * Placeholder for end date field when no date has been selected.\n * @default End date\n */\n placeholderEndDate?: string;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n\n /**\n * Z-index of the calendar overlay.\n * @default 100\n */\n zIndex?: number;\n\n /**\n * Width of the input element.\n * * @default 125px\n */\n width?: string;\n\n /**\n * The calendar theme to use.\n */\n calendarTheme?: CalendarTheme;\n\n /** Props to be passed to DateRangeCalendar, see DateRangeCalendar. */\n calendarProps?: DateRangeInputCalendarProps<T>;\n\n /**\n * Disables the Popover and both TextInputs.\n */\n disabled?: boolean;\n}\n\n/**\n * @deprecated Please use DateRangeDualTextInput instead.\n */\nexport const DateRangeInput = <T extends {}>({\n displayFormat = DateFormats.fullDate,\n placeholderStartDate = \"Start date\",\n placeholderEndDate = \"End date\",\n portalTarget,\n value,\n onValueChange,\n zIndex = 100,\n width,\n calendarTheme = defaultCalendarTheme,\n calendarProps,\n minDate,\n maxDate = defaultMaxDate,\n disabled,\n}: DateRangeInputProps<T>): React.ReactElement<DateRangeInputProps<T>> => {\n const [dateInFocus, setDateInFocus] = useState(\n () => (focusedInput && value?.[focusedInput]) ?? new Date()\n );\n const [currentPanel, setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n const {\n hideCalendar,\n showCalendarEndDate,\n showCalendarStartDate,\n showingCalendar,\n focusedInput,\n startDateInputRef,\n endDateInputRef,\n onClickDay,\n startDateIsAfterEnd,\n } = useDateRangeInput(value, onValueChange);\n\n const statePerMonth = useMemo(\n () =>\n buildDayStateForDateRange(undefined, value?.startDate, value?.endDate),\n [value]\n );\n\n return (\n <Popover\n arrow={false}\n lazy\n disabled={disabled}\n visible={showingCalendar}\n zIndex={zIndex}\n placement={defaultPopoverPlacement}\n appendTo={portalTarget ?? \"parent\"}\n onClickOutside={hideCalendar}\n content={\n <CalendarWithMonthSwitcher\n {...calendarProps}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n statePerMonth={statePerMonth}\n theme={calendarTheme}\n onClickDay={onClickDay}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n minDate={minDate}\n maxDate={maxDate}\n />\n }\n >\n <Row alignItems={\"center\"}>\n <TextInput\n iconLeft={faCalendarAlt}\n onFocus={showCalendarStartDate}\n value={value?.startDate ? format(value.startDate, displayFormat) : \"\"}\n placeholder={placeholderStartDate}\n width={width}\n disabled={disabled}\n inputRef={startDateInputRef}\n size={9}\n variant={startDateIsAfterEnd ? \"error\" : undefined}\n />\n <Space />\n <Icon\n icon={faLongArrowAltRight}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={14}\n />\n <Space />\n <TextInput\n iconLeft={faCalendarAlt}\n onFocus={showCalendarEndDate}\n value={value?.endDate ? format(value.endDate, displayFormat) : \"\"}\n placeholder={placeholderEndDate}\n width={width}\n disabled={disabled}\n inputRef={endDateInputRef}\n size={9}\n variant={startDateIsAfterEnd ? \"error\" : undefined}\n />\n </Row>\n </Popover>\n );\n};\n","import { faCalendarAlt } from \"@fortawesome/free-solid-svg-icons/faCalendarAlt\";\nimport { Box, Omit, Row } from \"@stenajs-webui/core\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { format, isValid, parse } from \"date-fns\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport { useCalendarPopoverUpdater } from \"../../../features/internal-panel-state/UseCalendarPopoverUpdater\";\nimport { DateFormats } from \"../../../util/date/DateFormats\";\nimport {\n SingleDateCalendar,\n SingleDateCalendarProps,\n} from \"../../calendar-types/single-date-calendar/SingleDateCalendar\";\nimport {\n CalendarTheme,\n defaultCalendarTheme,\n} from \"../../calendar/CalendarTheme\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport type DateTextInputCalendarProps<T> = Omit<\n SingleDateCalendarProps<T>,\n \"value\" | \"onChange\" | \"theme\"\n>;\n\nexport interface DateTextInputProps<T>\n extends Omit<TextInputProps, \"onChange\" | \"theme\" | \"min\" | \"max\">,\n OptionalMinMaxDatesAsString {\n /** Props to be passed to Calendar, see SingleDateCalendar. */\n calendarProps?: DateTextInputCalendarProps<T>;\n /** Close calendar when date is selected, @default true */\n closeOnCalendarSelectDate?: boolean;\n /** Valid date format, @default YYYY-MM-DD */\n dateFormat?: string;\n /** Make the icon not clickable, @default false */\n disableCalender?: boolean;\n /** Show or hide the calender icon, @default false */\n hideCalenderIcon?: boolean;\n /** Placeholder for the input, @default YYYY-MM-DD */\n placeholder?: string;\n /** Portal target, HTML element. If not set, portal is not used. */\n portalTarget?: HTMLElement | null;\n /** Z-index of the calendar overlay, @default 100 */\n zIndex?: number;\n /** The date text input theme to use. */\n calendarTheme?: CalendarTheme;\n}\n\nexport const DateTextInput: React.FC<DateTextInputProps<{}>> = ({\n calendarProps,\n closeOnCalendarSelectDate = true,\n dateFormat = DateFormats.fullDate,\n disableCalender = false,\n onValueChange,\n placeholder = \"yyyy-mm-dd\",\n portalTarget,\n value,\n width = \"130px\",\n zIndex = 100,\n calendarTheme = defaultCalendarTheme,\n hideCalenderIcon = false,\n minDate,\n maxDate = defaultMaxDate,\n variant,\n ...props\n}) => {\n const [open, setOpen] = useState(false);\n const { tippyRef, onChangePanel } = useCalendarPopoverUpdater();\n\n const toggleCalendar = useCallback(() => {\n setOpen(!open);\n }, [setOpen, open]);\n\n const hideCalendar = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const onValueChangeHandler = useCallback(\n (value) => {\n if (onValueChange) {\n onValueChange(value);\n }\n },\n [onValueChange]\n );\n\n const onCalendarSelectDate = useCallback(\n (date: Date | undefined) => {\n if (date) {\n onValueChangeHandler(format(date, dateFormat));\n if (closeOnCalendarSelectDate) {\n setTimeout(() => setOpen(!open), 200);\n }\n }\n },\n [onValueChangeHandler, dateFormat, closeOnCalendarSelectDate, setOpen, open]\n );\n\n const inValidInput = !!value && !/^[-/\\\\.0-9]+$/.test(value);\n\n const dateIsValid = !!value && isValid(parse(value, dateFormat, new Date()));\n\n const userInputCorrectLength = !!value && value.length >= dateFormat.length;\n\n const invalid: boolean =\n (userInputCorrectLength && !dateIsValid) || inValidInput;\n\n return (\n <Box width={width}>\n <Popover\n arrow={false}\n lazy\n visible={open}\n zIndex={zIndex}\n appendTo={portalTarget ?? \"parent\"}\n placement={defaultPopoverPlacement}\n onClickOutside={hideCalendar}\n tippyRef={tippyRef}\n content={\n <SingleDateCalendar\n {...calendarProps}\n onChange={onCalendarSelectDate}\n onChangePanel={onChangePanel}\n value={\n value && dateIsValid\n ? parse(value, dateFormat, new Date())\n : undefined\n }\n minDate={minDate}\n maxDate={maxDate}\n theme={calendarTheme}\n />\n }\n >\n <TextInput\n {...props}\n variant={invalid ? \"error\" : variant}\n disableContentPaddingRight\n contentRight={\n !hideCalenderIcon ? (\n <Row alignItems={\"center\"} indent={0.5}>\n <FlatButton\n size={\"small\"}\n disabled={props.disabled}\n leftIcon={faCalendarAlt}\n onClick={toggleCalendar}\n />\n </Row>\n ) : undefined\n }\n onValueChange={onValueChangeHandler}\n placeholder={placeholder}\n value={value || \"\"}\n min={minDate}\n max={maxDate}\n size={10}\n />\n </Popover>\n </Box>\n );\n};\n","export interface FormatTimeStringResult {\n time: string;\n success: boolean;\n}\n\nexport const formatHours = (hours: string): string => {\n if (hours === \"\") {\n return \"00\";\n }\n\n const h = parseInt(hours, 10);\n\n if (isNaN(h)) {\n throw new Error(\"Hours is not a number\");\n }\n\n if (h < 0 || h > 23) {\n throw new Error(\"Hours is an invalid number\");\n }\n\n switch (hours.length) {\n case 1:\n return `0${h}`;\n case 2:\n return hours;\n default:\n throw new Error(\"Invalid hour string\");\n }\n};\n\nexport const formatMinutes = (minutes: string): string => {\n if (minutes === \"\") {\n return \"00\";\n }\n\n const m = parseInt(minutes, 10);\n\n if (isNaN(m)) {\n throw new Error(\"Minutes is not a number\");\n }\n\n if (m < 0 || m > 59) {\n throw new Error(\"Minutes is an invalid number\");\n }\n\n switch (minutes.length) {\n case 1:\n return `0${m}`;\n case 2:\n return minutes;\n default:\n throw new Error(\"Invalid minute string\");\n }\n};\n\nexport const formatTimeString = (time: string): FormatTimeStringResult => {\n if (!validUserInput(time)) {\n return { time, success: false };\n }\n\n const arr = time && time.split(/-|:|,|;|[/]|[.]| /); // consider all these chars as user input separator\n if (arr && arr.length === 2) {\n try {\n const hours = formatHours(arr[0]);\n const minutes = formatMinutes(arr[1]);\n return { time: `${hours}:${minutes}`, success: true };\n } catch {\n return { time, success: false };\n }\n } else if (arr && arr.length === 1) {\n let hours = 0;\n let minutes = 0;\n switch (time.length) {\n case 1:\n return { time: `0${time}:00`, success: true };\n case 2:\n const timeNumber = parseInt(arr[0], 10);\n if (timeNumber >= 0 && timeNumber < 24) {\n return { time: `${time}:00`, success: true };\n } else if (timeNumber >= 24 && timeNumber < 59) {\n return { time: `00:${time}`, success: true };\n }\n return { time, success: false };\n case 3:\n minutes = parseInt(time.substr(1, 2), 10);\n if (minutes >= 0 && minutes <= 59) {\n return {\n time: `0${time.substr(0, 1)}:${time.substr(1, 2)}`,\n success: true,\n };\n }\n return { time, success: false };\n case 4:\n hours = parseInt(time.substr(0, 2), 10);\n minutes = parseInt(time.substr(2, 2), 10);\n if (hours < 0 || hours > 23) {\n return { time, success: false };\n }\n if (minutes < 0 || minutes > 59) {\n return { time, success: false };\n }\n return {\n time: `${time.substr(0, 2)}:${time.substr(2, 2)}`,\n success: true,\n };\n default:\n return { time, success: false };\n }\n }\n\n return { time, success: false };\n};\n\nexport const validUserInput = (input: string | undefined): boolean => {\n if (input) {\n return /^[-:.,/; 0-9]+$/.test(input);\n }\n\n return true;\n};\n","import { faClock } from \"@fortawesome/free-solid-svg-icons/faClock\";\nimport { Omit } from \"@stenajs-webui/core\";\nimport { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport {\n formatTimeString,\n validUserInput,\n} from \"../../../util/time/TimeStringFormatValidator\";\n\nexport interface TimeTextInputProps extends Omit<TextInputProps, \"onChange\"> {\n /** Show placeholder when true */\n showPlaceholder?: boolean;\n /** Show icon when true */\n useIcon?: boolean;\n /** Variant of the input field. */\n variant?: TextInputProps[\"variant\"];\n}\n\n/**\n * @deprecated\n */\nexport const TimeTextInput: React.FC<TimeTextInputProps> = ({\n onValueChange,\n showPlaceholder = true,\n useIcon = true,\n value,\n width = \"85px\",\n variant,\n ...props\n}) => {\n const [valid, setValid] = useState(() => validUserInput(value));\n\n const timeFormat = \"hh:mm\";\n\n const onBlur = useCallback(() => {\n if (value) {\n const formattedResult = formatTimeString(value);\n setValid(formattedResult.success);\n if (formattedResult.success) {\n if (onValueChange) {\n onValueChange(formattedResult.time);\n }\n }\n }\n }, [value, onValueChange, setValid]);\n\n const onChangeHandler = useCallback(\n (ev) => {\n const time = ev.target.value;\n const validInput = validUserInput(time);\n\n setValid(validInput && time.length <= timeFormat.length);\n\n if (onValueChange) {\n onValueChange(time);\n }\n },\n [onValueChange, setValid]\n );\n\n return (\n <TextInput\n {...props}\n type={\"time\"}\n variant={!valid ? \"error\" : variant}\n iconLeft={useIcon ? faClock : undefined}\n value={value}\n placeholder={showPlaceholder ? timeFormat : undefined}\n onChange={onChangeHandler}\n onBlur={onBlur}\n width={width}\n />\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { faCalendarAlt } from \"@fortawesome/free-regular-svg-icons/faCalendarAlt\";\nimport { faAngleDown } from \"@fortawesome/free-solid-svg-icons/faAngleDown\";\nimport {\n Box,\n BoxProps,\n ButtonElementProps,\n Indent,\n Row,\n SeparatorLine,\n} from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport {\n TextInput,\n TextInputBox,\n TextInputBoxProps,\n TextInputProps,\n} from \"@stenajs-webui/forms\";\nimport { debounce } from \"lodash\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DualTextInputProps {\n onEsc?: TextInputProps[\"onEsc\"];\n onEnter?: TextInputProps[\"onEnter\"];\n widthLeft?: BoxProps[\"width\"];\n widthRight?: BoxProps[\"width\"];\n valueLeft?: TextInputProps[\"value\"];\n valueRight?: TextInputProps[\"value\"];\n minLeft?: string;\n maxLeft?: string;\n minRight?: string;\n maxRight?: string;\n typeLeft?: TextInputProps[\"type\"];\n typeRight?: TextInputProps[\"type\"];\n separatorIcon?: IconDefinition;\n placeholderLeft?: TextInputProps[\"placeholder\"];\n placeholderRight?: TextInputProps[\"placeholder\"];\n onValueChangeLeft?: TextInputProps[\"onValueChange\"];\n onValueChangeRight?: TextInputProps[\"onValueChange\"];\n onChangeLeft?: TextInputProps[\"onChange\"];\n onChangeRight?: TextInputProps[\"onChange\"];\n onClickLeft?: TextInputProps[\"onClick\"];\n onClickRight?: TextInputProps[\"onClick\"];\n onClickCalendar?: ButtonElementProps[\"onClick\"];\n onClickArrowDown?: ButtonElementProps[\"onClick\"];\n onFocusLeft?: TextInputProps[\"onFocus\"];\n onFocusRight?: TextInputProps[\"onFocus\"];\n onBlur?: () => void;\n onBlurLeft?: TextInputProps[\"onBlur\"];\n onBlurRight?: TextInputProps[\"onBlur\"];\n inputRefLeft?: TextInputProps[\"inputRef\"];\n inputRefRight?: TextInputProps[\"inputRef\"];\n variantLeft?: TextInputProps[\"variant\"];\n variantRight?: TextInputProps[\"variant\"];\n variant?: TextInputBoxProps[\"variant\"];\n showPresets?: false;\n autoFocusLeft?: boolean;\n autoFocusRight?: boolean;\n disabled?: boolean;\n}\n\nexport const DualTextInput: React.FC<DualTextInputProps> = ({\n autoFocusLeft,\n autoFocusRight,\n onEsc,\n onEnter,\n onValueChangeLeft,\n onValueChangeRight,\n separatorIcon,\n placeholderLeft,\n placeholderRight,\n typeLeft,\n typeRight,\n onChangeLeft,\n onChangeRight,\n valueLeft,\n valueRight,\n minLeft,\n maxLeft,\n minRight,\n maxRight,\n onClickLeft,\n onClickRight,\n onClickCalendar,\n onClickArrowDown,\n onBlurLeft,\n onBlurRight,\n onFocusLeft,\n onFocusRight,\n inputRefLeft,\n inputRefRight,\n variant,\n variantLeft,\n variantRight,\n onBlur,\n showPresets,\n widthLeft,\n widthRight,\n disabled,\n}) => {\n const focusCounter = useRef(0);\n\n const tryTriggerOnBlur = useMemo(\n () =>\n debounce((focusCounter: number) => {\n if (focusCounter === 0) {\n onBlur?.();\n }\n }, 10),\n [onBlur]\n );\n\n const focusLeftHandler = useCallback(\n (ev) => {\n focusCounter.current++;\n tryTriggerOnBlur(focusCounter.current);\n if (onFocusLeft) {\n onFocusLeft(ev);\n }\n },\n [onFocusLeft, focusCounter, tryTriggerOnBlur]\n );\n\n const focusRightHandler = useCallback(\n (ev) => {\n focusCounter.current++;\n tryTriggerOnBlur(focusCounter.current);\n if (onFocusRight) {\n onFocusRight(ev);\n }\n },\n [onFocusRight, focusCounter, tryTriggerOnBlur]\n );\n\n const blurLeftHandler = useCallback(\n (ev) => {\n focusCounter.current--;\n tryTriggerOnBlur(focusCounter.current);\n if (onBlurLeft) {\n onBlurLeft(ev);\n }\n },\n [onBlurLeft, focusCounter, tryTriggerOnBlur]\n );\n\n const blurRightHandler = useCallback(\n (ev) => {\n focusCounter.current--;\n tryTriggerOnBlur(focusCounter.current);\n if (onBlurRight) {\n onBlurRight(ev);\n }\n },\n [onBlurRight, focusCounter, tryTriggerOnBlur]\n );\n\n return (\n <Box>\n <TextInputBox\n disableContentPaddingRight\n disabled={disabled}\n variant={variant}\n contentRight={\n <Row alignItems={\"center\"}>\n <Indent num={0.5}>\n <FlatButton\n leftIcon={faCalendarAlt}\n onClick={onClickCalendar}\n disabled={disabled}\n size={\"small\"}\n />\n </Indent>\n\n {showPresets ? (\n <>\n <Row height={\"22px\"}>\n <SeparatorLine vertical />\n </Row>\n\n <Indent num={0.5}>\n <FlatButton\n leftIcon={faAngleDown}\n onClick={onClickArrowDown}\n disabled={disabled}\n size={\"small\"}\n />\n </Indent>\n </>\n ) : null}\n </Row>\n }\n >\n <Box width={widthLeft}>\n <TextInput\n onEsc={onEsc}\n onEnter={onEnter}\n onClick={onClickLeft}\n disabled={disabled}\n hideBorder\n placeholder={placeholderLeft}\n value={valueLeft}\n onValueChange={onValueChangeLeft}\n onChange={onChangeLeft}\n onBlur={blurLeftHandler}\n onFocus={focusLeftHandler}\n inputRef={inputRefLeft}\n variant={variantLeft}\n type={typeLeft}\n autoFocus={autoFocusLeft}\n min={minLeft}\n max={maxLeft}\n />\n </Box>\n <Row indent={0.5} alignItems={\"center\"} justifyContent={\"center\"}>\n <Icon\n icon={separatorIcon}\n size={12}\n color={cssColor(\"--lhds-color-ui-500\")}\n />\n </Row>\n <Box width={widthRight}>\n <TextInput\n onEsc={onEsc}\n onEnter={onEnter}\n onClick={onClickRight}\n disabled={disabled}\n hideBorder\n placeholder={placeholderRight}\n value={valueRight}\n onValueChange={onValueChangeRight}\n onChange={onChangeRight}\n onBlur={blurRightHandler}\n onFocus={focusRightHandler}\n inputRef={inputRefRight}\n variant={variantRight}\n type={typeRight}\n autoFocus={autoFocusRight}\n min={minRight}\n max={maxRight}\n />\n </Box>\n </TextInputBox>\n </Box>\n );\n};\n","import { parseIntElseUndefined } from \"@stenajs-webui/core\";\nimport { formatHours, formatMinutes } from \"./TimeStringFormatValidator\";\n\nexport const transformNumberTimeToString = (\n time: number | undefined | null\n): string | undefined => {\n if (time == null) {\n return undefined;\n }\n const timeStr = time.toString();\n if (timeStr.length === 3) {\n return `${timeStr.substr(0, 1)}:${timeStr.substr(1, 2)}`;\n }\n if (timeStr.length === 4) {\n return `${timeStr.substr(0, 2)}:${timeStr.substr(2, 2)}`;\n }\n if (timeStr.length === 2) {\n return `0:${timeStr}`;\n }\n if (timeStr.length === 1) {\n return `0:0${timeStr}`;\n }\n throw new Error(\"Invalid time number.\");\n};\n\nexport const transformTimeStringToNumber = (\n time: string | undefined | null\n): number | null => {\n if (time == null) {\n throw new Error(\"Time is not set.\");\n }\n if (time === \"\") {\n throw new Error(\"Time is empty.\");\n }\n const parts = time.split(\":\");\n if (parts.length !== 2) {\n throw new Error(\"Invalid time.\");\n }\n\n if (parts[1].length !== 2) {\n throw new Error(\"Invalid time.\");\n }\n\n if (parts[0].length < 1 || parts[0].length > 2) {\n throw new Error(\"Invalid time.\");\n }\n\n const hours = parseInt(parts[0], 10);\n const minutes = parseInt(parts[1], 10);\n\n if (isNaN(hours)) {\n throw new Error(\"Invalid time.\");\n }\n if (isNaN(minutes)) {\n throw new Error(\"Invalid time.\");\n }\n if (hours < 0 || hours > 23) {\n throw new Error(\"Invalid time.\");\n }\n if (minutes < 0 || minutes > 59) {\n throw new Error(\"Invalid time.\");\n }\n return hours * 100 + minutes;\n};\n\nexport const isValidTimeString = (time: string | undefined): boolean => {\n try {\n transformTimeStringToNumber(time);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nexport const getHoursAndMinutesFromTimeString = (\n value: string | undefined\n): {\n hour: number | undefined;\n minute: number | undefined;\n} => {\n if (value && isValidTimeString(value)) {\n const p = value.split(\":\");\n return {\n hour: parseIntElseUndefined(p[0]),\n minute: parseIntElseUndefined(p[1]),\n };\n }\n return {\n hour: undefined,\n minute: undefined,\n };\n};\n\nexport const transformTimeInDateToTimeString = (date: Date): string =>\n `${formatHours(String(date.getHours()))}:${formatMinutes(\n String(date.getMinutes())\n )}`;\n","import { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { MutableRefObject, RefObject, useEffect, useRef } from \"react\";\n\nexport interface TimePickerCellProps {\n item: number;\n selected?: boolean;\n onClick: (label: number) => void;\n columnRef: RefObject<HTMLDivElement>;\n canScrollRef: MutableRefObject<boolean>;\n}\n\nexport const TimePickerCell: React.FC<TimePickerCellProps> = ({\n onClick,\n item,\n selected,\n columnRef,\n canScrollRef,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(\n function scrollToSelectedItem() {\n if (\n selected &&\n columnRef.current &&\n ref.current &&\n canScrollRef.current\n ) {\n const targetScroll = ref.current.scrollHeight * Math.max(item - 2, 0);\n columnRef.current.scrollTo(0, targetScroll);\n canScrollRef.current = false;\n }\n },\n [columnRef, item, selected, canScrollRef]\n );\n\n return (\n <Row\n width={\"64px\"}\n justifyContent={\"center\"}\n spacing={0.5}\n indent={0.5}\n ref={ref}\n >\n {selected ? (\n <PrimaryButton\n label={String(item)}\n onClick={() => onClick && onClick(item)}\n />\n ) : (\n <FlatButton\n label={String(item)}\n onClick={() => onClick && onClick(item)}\n />\n )}\n </Row>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { MutableRefObject, useRef } from \"react\";\nimport styles from \"./TimePicker.module.css\";\nimport { TimePickerCell } from \"./TimePickerCell\";\n\ninterface Props {\n items: Array<number>;\n onClick: (item: number) => void;\n selectedItem: number | undefined;\n canScrollRef: MutableRefObject<boolean>;\n}\n\nexport const TimePickerColumn: React.FC<Props> = ({\n onClick,\n items,\n selectedItem,\n canScrollRef,\n}) => {\n const columnRef = useRef<HTMLDivElement>(null);\n\n return (\n <Column className={styles.timePickerColumn} ref={columnRef}>\n {items.map((item) => (\n <TimePickerCell\n key={item}\n item={item}\n onClick={onClick}\n selected={item === selectedItem}\n columnRef={columnRef}\n canScrollRef={canScrollRef}\n />\n ))}\n </Column>\n );\n};\n","import { Indent, Row } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { range } from \"lodash\";\nimport * as React from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n formatHours,\n formatMinutes,\n} from \"../../util/time/TimeStringFormatValidator\";\nimport { getHoursAndMinutesFromTimeString } from \"../../util/time/TimeTransformer\";\nimport styles from \"./TimePicker.module.css\";\nimport { TimePickerColumn } from \"./TimePickerColumn\";\n\nexport interface TimePickerProps extends ValueAndOnValueChangeProps<string> {}\n\nconst hours = range(0, 24);\nconst minutes = range(0, 60);\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n value,\n onValueChange,\n}) => {\n const canScrollRef = useRef(true);\n const [hour, setHour] = useState<number | undefined>(undefined);\n const [minute, setMinute] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n if (value) {\n const { minute, hour } = getHoursAndMinutesFromTimeString(value);\n setHour(hour);\n setMinute(minute);\n }\n }, [value]);\n\n const onClickHour = useCallback(\n (h: number) => {\n setHour(h);\n onValueChange?.(\n `${formatHours(String(h ?? 0))}:${formatMinutes(String(minute ?? 0))}`\n );\n },\n [minute, onValueChange]\n );\n\n const onClickMinutes = useCallback(\n (m: number) => {\n setMinute(m);\n onValueChange?.(\n `${formatHours(String(hour ?? 0))}:${formatMinutes(String(m ?? 0))}`\n );\n },\n [hour, onValueChange]\n );\n\n return (\n <Row className={styles.timePicker}>\n <TimePickerColumn\n items={hours}\n onClick={onClickHour}\n selectedItem={hour}\n canScrollRef={canScrollRef}\n />\n <Indent />\n <TimePickerColumn\n items={minutes}\n onClick={onClickMinutes}\n selectedItem={minute}\n canScrollRef={canScrollRef}\n />\n </Row>\n );\n};\n","import { RefObject, useEffect } from \"react\";\n\nexport const useDateRangeEffects = (\n date: Date | undefined | null,\n setDateInFocus: (date: Date) => void,\n dateInputRef: RefObject<HTMLInputElement>\n) => {\n useEffect(\n function moveFocusedDateWhenDateChanges() {\n if (date) {\n setDateInFocus(date);\n }\n },\n [date, setDateInFocus]\n );\n\n useEffect(\n function updateDateFieldWhenValueChanges() {\n if (dateInputRef.current) {\n if (date) {\n dateInputRef.current.valueAsDate = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())\n );\n } else {\n dateInputRef.current.valueAsDate = null;\n }\n }\n },\n [date, dateInputRef]\n );\n};\n","import { ChangeEvent, RefObject, useCallback } from \"react\";\nimport { getHoursAndMinutesFromTimeString } from \"../../../../util/time/TimeTransformer\";\nimport { DateTimeInputProps } from \"../DateTimeInput\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useDateRangeHandlers = (\n date: Date | undefined | null,\n onValueChange: DateTimeInputProps[\"onValueChange\"],\n {\n setDateInFocus,\n showCalendarInternal,\n hideCalendarInternal,\n setFirstFocusedInput,\n setCurrentPanel,\n localTime,\n setLocalTime,\n localDate,\n setLocalDate,\n }: UseInputStatesResult,\n dateInputRef: RefObject<HTMLInputElement>\n) => {\n const onChangeDate = useCallback(\n (incomingDate: Date | null) => {\n if (!incomingDate) {\n return;\n }\n const newDate = new Date(incomingDate);\n\n if (date) {\n // Full date is available\n\n newDate.setHours(date.getHours());\n newDate.setMinutes(date.getMinutes());\n\n onValueChange?.(newDate);\n setLocalDate(undefined);\n } else if (localTime) {\n // Only time has been selected\n const { minute, hour } = getHoursAndMinutesFromTimeString(localTime);\n\n newDate.setHours(hour ?? 0);\n newDate.setMinutes(minute ?? 0);\n\n onValueChange?.(newDate);\n setLocalDate(undefined);\n } else {\n // Nothing has been selected\n setLocalDate(newDate);\n }\n setDateInFocus(newDate);\n if (dateInputRef.current) {\n dateInputRef.current.valueAsDate = newDate;\n }\n },\n [date, dateInputRef, localTime, onValueChange, setDateInFocus, setLocalDate]\n );\n\n const onChangeTime = useCallback(\n (time: string) => {\n if (!time) {\n return;\n }\n\n if (date) {\n // Full date is available\n const newTime = getHoursAndMinutesFromTimeString(time);\n const newDate = new Date(date);\n\n newDate.setHours(newTime.hour || 0);\n newDate.setMinutes(newTime.minute || 0);\n\n onValueChange?.(newDate);\n setLocalTime(undefined);\n } else if (localDate) {\n // Only date has already been selected\n const newTime = getHoursAndMinutesFromTimeString(time);\n const newDate = new Date(localDate);\n\n newDate.setHours(newTime.hour || 0);\n newDate.setMinutes(newTime.minute || 0);\n\n onValueChange?.(newDate);\n setLocalTime(undefined);\n } else {\n // Nothing has been selected\n setLocalTime(time);\n }\n },\n [onValueChange, date, localDate, setLocalTime]\n );\n\n const inputLeftChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (ev.target.value[0] !== \"0\") {\n onChangeDate(ev.target.valueAsDate);\n }\n },\n [onChangeDate]\n );\n\n const inputRightChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => onChangeTime(ev.target.value),\n [onChangeTime]\n );\n\n const showCalendar = useCallback(() => {\n if (date) {\n setDateInFocus(date);\n } else {\n setDateInFocus(new Date());\n }\n setCurrentPanel(\"calendar\");\n showCalendarInternal();\n }, [date, setCurrentPanel, showCalendarInternal, setDateInFocus]);\n\n const hideCalendar = useCallback(() => {\n setFirstFocusedInput(undefined);\n hideCalendarInternal();\n }, [setFirstFocusedInput, hideCalendarInternal]);\n\n return {\n inputLeftChangeHandler,\n inputRightChangeHandler,\n hideCalendar,\n showCalendar,\n onChangeTime,\n onChangeDate,\n };\n};\n","import { useBoolean } from \"@stenajs-webui/core\";\nimport { useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { CalendarPanelType } from \"../../../../features/calendar-with-month-year-pickers/CalendarPanelType\";\n\nexport type UseInputStatesResult = ReturnType<typeof useInputStates>;\n\nexport const useInputStates = (date: Date | undefined | null) => {\n const [localDate, setLocalDate] = useState<Date | undefined>(undefined);\n const [localTime, setLocalTime] = useState<string | undefined>(undefined);\n\n const [\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n ] = useBoolean(false);\n\n const [isTimePickerVisible, showTimePicker, hideTimePicker] = useBoolean(\n false\n );\n\n const [firstFocusedInput, setFirstFocusedInput] = useState<\n DateRangeFocusedInput | undefined\n >(undefined);\n\n const [dateInFocus, setDateInFocus] = useState<Date>(\n () => date ?? new Date()\n );\n\n const [currentPanel, setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n return {\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n firstFocusedInput,\n setFirstFocusedInput,\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n isTimePickerVisible,\n showTimePicker,\n hideTimePicker,\n localDate,\n setLocalDate,\n localTime,\n setLocalTime,\n };\n};\n","import * as React from \"react\";\nimport { RefObject, useCallback } from \"react\";\nimport { DayData } from \"../../../../util/calendar/CalendarDataFactory\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useUserInputHandlers = (\n onChangeDate: (incomingDate: Date | null) => void,\n dateInputRef: RefObject<HTMLInputElement>,\n showCalendar: () => void,\n hideCalendar: () => void,\n {\n isCalendarVisible,\n setCurrentPanel,\n showTimePicker,\n hideTimePicker,\n }: UseInputStatesResult\n) => {\n const onFocusLeft = useCallback(() => {\n if (!isCalendarVisible) {\n showCalendar();\n }\n setCurrentPanel(\"calendar\");\n hideTimePicker();\n }, [hideTimePicker, isCalendarVisible, setCurrentPanel, showCalendar]);\n\n const onFocusRight = useCallback(() => {\n hideCalendar();\n showTimePicker();\n }, [hideCalendar, showTimePicker]);\n\n const onClickDay = useCallback(\n (day: DayData) => {\n onChangeDate(day.date);\n hideCalendar();\n showTimePicker();\n },\n [onChangeDate, hideCalendar, showTimePicker]\n );\n\n const onClickArrowButton = useCallback(() => {\n setCurrentPanel(\"presets\");\n showCalendar();\n }, [setCurrentPanel, showCalendar]);\n\n const onClickCalendarButton = useCallback(() => {\n if (isCalendarVisible) {\n hideCalendar();\n } else {\n dateInputRef.current?.focus();\n setCurrentPanel(\"calendar\");\n showCalendar();\n }\n }, [\n isCalendarVisible,\n hideCalendar,\n dateInputRef,\n setCurrentPanel,\n showCalendar,\n ]);\n\n const onKeyDownHandler = useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \"Escape\") {\n hideCalendar();\n }\n },\n [hideCalendar]\n );\n\n return {\n onFocusLeft,\n onFocusRight,\n onClickDay,\n onClickArrowButton,\n onClickCalendarButton,\n onKeyDownHandler,\n };\n};\n","import { faClock } from \"@fortawesome/free-regular-svg-icons/faClock\";\nimport { Box, Column, Row, Space, useDelayedFalse } from \"@stenajs-webui/core\";\nimport { PrimaryButton } from \"@stenajs-webui/elements\";\nimport {\n TextInputProps,\n ValueAndOnValueChangeProps,\n} from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport {\n DualTextInput,\n DualTextInputProps,\n} from \"../../../features/dual-text-input/DualTextInput\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { TimePicker } from \"../../../features/time-picker/TimePicker\";\nimport { addDayStateHighlights } from \"../../../util/calendar/StateModifier\";\nimport { transformTimeInDateToTimeString } from \"../../../util/time/TimeTransformer\";\nimport { useDateRangeEffects } from \"./hooks/UseDateRangeEffects\";\nimport { useDateRangeHandlers } from \"./hooks/UseDateRangeHandlers\";\nimport { useInputStates } from \"./hooks/UseInputStates\";\nimport { useUserInputHandlers } from \"./hooks/UseUserInputHandlers\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport interface DateTimeInputProps\n extends ValueAndOnValueChangeProps<Date | null>,\n OptionalMinMaxDatesAsString,\n Pick<DualTextInputProps, \"widthLeft\" | \"widthRight\" | \"variant\"> {\n onEsc?: () => void;\n onEnter?: () => void;\n onBlur?: () => void;\n autoFocus?: boolean;\n disabled?: boolean;\n}\n\nexport const DateTimeInput: React.FC<DateTimeInputProps> = ({\n value,\n onValueChange,\n onEnter,\n onEsc,\n onBlur,\n autoFocus,\n minDate,\n widthLeft = 128,\n widthRight = 80,\n maxDate = defaultMaxDate,\n variant,\n disabled,\n}) => {\n const dateInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n const timeInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n\n const states = useInputStates(value);\n\n const {\n setCurrentPanel,\n currentPanel,\n isCalendarVisible,\n dateInFocus,\n setDateInFocus,\n isTimePickerVisible,\n hideTimePicker,\n localTime,\n localDate,\n } = states;\n\n const {\n showCalendar,\n hideCalendar,\n inputLeftChangeHandler,\n inputRightChangeHandler,\n onChangeTime,\n onChangeDate,\n } = useDateRangeHandlers(value, onValueChange, states, dateInputRef);\n\n const {\n onKeyDownHandler,\n onFocusRight,\n onFocusLeft,\n onClickDay,\n onClickCalendarButton,\n onClickArrowButton,\n } = useUserInputHandlers(\n onChangeDate,\n dateInputRef,\n showCalendar,\n hideCalendar,\n states\n );\n\n useDateRangeEffects(value, setDateInFocus, dateInputRef);\n\n const statePerMonth = useMemo(() => {\n const dateToHighlight = value || localDate;\n if (!dateToHighlight) {\n return {};\n }\n return addDayStateHighlights(undefined, dateToHighlight, [\n \"singleSelected\",\n \"selected\",\n ]);\n }, [localDate, value]);\n\n const hideAll = useCallback(() => {\n hideCalendar();\n hideTimePicker();\n }, [hideCalendar, hideTimePicker]);\n\n const timeValue = useMemo<string | undefined>(\n () => (value ? transformTimeInDateToTimeString(value) : localTime),\n [value, localTime]\n );\n\n const delayedIsCalendarVisible = useDelayedFalse(isCalendarVisible, 300);\n const delayedIsTimePickerVisible = useDelayedFalse(isTimePickerVisible, 300);\n\n return (\n <Box onKeyDown={onKeyDownHandler}>\n <Popover\n arrow={false}\n lazy\n disabled={disabled}\n placement={defaultPopoverPlacement}\n visible={isCalendarVisible || isTimePickerVisible}\n onClickOutside={hideAll}\n content={\n (delayedIsCalendarVisible || delayedIsTimePickerVisible) && (\n <Column>\n {delayedIsCalendarVisible ? (\n <CalendarWithMonthSwitcher\n statePerMonth={statePerMonth}\n onClickDay={onClickDay}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n minDate={minDate}\n maxDate={maxDate}\n />\n ) : delayedIsTimePickerVisible ? (\n <Column>\n <Column overflow={\"hidden\"} height={\"250px\"}>\n <TimePicker\n value={timeValue ?? \"\"}\n onValueChange={onChangeTime}\n />\n </Column>\n <Space />\n <Row justifyContent={\"flex-end\"}>\n <PrimaryButton label={\"Done\"} onClick={hideTimePicker} />\n </Row>\n </Column>\n ) : null}\n </Column>\n )\n }\n >\n <DualTextInput\n autoFocusLeft={autoFocus}\n onEsc={onEsc}\n onEnter={onEnter}\n onBlur={onBlur}\n disabled={disabled}\n separatorIcon={faClock}\n typeLeft={\"date\"}\n typeRight={\"time\"}\n placeholderLeft={\"yyyy-mm-dd\"}\n placeholderRight={\"hh:mm\"}\n onChangeLeft={inputLeftChangeHandler}\n onChangeRight={inputRightChangeHandler}\n onClickArrowDown={onClickArrowButton}\n onClickCalendar={onClickCalendarButton}\n onFocusLeft={onFocusLeft}\n onFocusRight={onFocusRight}\n onClickLeft={onFocusLeft}\n onClickRight={onFocusRight}\n inputRefLeft={dateInputRef}\n inputRefRight={timeInputRef}\n valueRight={timeValue ?? \"\"}\n widthLeft={widthLeft}\n widthRight={widthRight}\n minLeft={minDate}\n maxLeft={maxDate}\n variant={variant}\n />\n </Popover>\n </Box>\n );\n};\n","import { RefObject, useEffect } from \"react\";\n\nexport const useDateRangeEffects = (\n startDate: Date | undefined,\n endDate: Date | undefined,\n setDateInFocus: (date: Date) => void,\n startDateInputRef: RefObject<HTMLInputElement>,\n endDateInputRef: RefObject<HTMLInputElement>\n) => {\n useEffect(\n function moveFocusedDateWhenStartDateChanges() {\n if (startDate) {\n setDateInFocus(startDate);\n }\n },\n [startDate, setDateInFocus]\n );\n\n useEffect(\n function moveFocusedDateWhenEndDateChanges() {\n if (endDate) {\n setDateInFocus(endDate);\n }\n },\n [endDate, setDateInFocus]\n );\n\n useEffect(\n function updateStartDateFieldWhenValueChanges() {\n if (startDateInputRef.current) {\n if (startDate) {\n startDateInputRef.current.valueAsDate = new Date(\n Date.UTC(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n )\n );\n } else {\n startDateInputRef.current.valueAsDate = null;\n }\n }\n },\n [startDate, startDateInputRef]\n );\n\n useEffect(\n function updateEndDateFieldWhenValueChanges() {\n if (endDateInputRef.current) {\n if (endDate) {\n endDateInputRef.current.valueAsDate = new Date(\n Date.UTC(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n )\n );\n } else {\n endDateInputRef.current.valueAsDate = null;\n }\n }\n },\n [endDate, endDateInputRef]\n );\n};\n","import { ChangeEvent, useCallback } from \"react\";\nimport { DateRangeDualTextInputProps } from \"../DateRangeDualTextInput\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useDateRangeHandlers = (\n startDate: Date | undefined,\n endDate: Date | undefined,\n onValueChange: DateRangeDualTextInputProps[\"onValueChange\"],\n {\n setDateInFocus,\n showCalendarInternal,\n hideCalendarInternal,\n setFirstFocusedInput,\n setCurrentPanel,\n }: UseInputStatesResult\n) => {\n const inputLeftChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (ev.target.value[0] !== \"0\") {\n onValueChange?.({\n startDate: ev.target.valueAsDate ?? undefined,\n endDate,\n });\n }\n },\n [onValueChange, endDate]\n );\n\n const inputRightChangeHandler = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (ev.target.value[0] !== \"0\") {\n onValueChange?.({\n startDate,\n endDate: ev.target.valueAsDate ?? undefined,\n });\n }\n },\n [onValueChange, startDate]\n );\n\n const showCalendar = useCallback(() => {\n if (startDate) {\n setDateInFocus(startDate);\n } else if (endDate) {\n setDateInFocus(endDate);\n } else {\n setDateInFocus(new Date());\n }\n setCurrentPanel(\"calendar\");\n showCalendarInternal();\n }, [\n startDate,\n endDate,\n setCurrentPanel,\n showCalendarInternal,\n setDateInFocus,\n ]);\n\n const hideCalendar = useCallback(() => {\n setFirstFocusedInput(undefined);\n hideCalendarInternal();\n }, [setFirstFocusedInput, hideCalendarInternal]);\n\n return {\n inputLeftChangeHandler,\n inputRightChangeHandler,\n hideCalendar,\n setDateInFocus,\n setCurrentPanel,\n showCalendar,\n };\n};\n","import { useBoolean } from \"@stenajs-webui/core\";\nimport { useState } from \"react\";\nimport { DateRangeFocusedInput } from \"../../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { CalendarPanelType } from \"../../../../features/calendar-with-month-year-pickers/CalendarPanelType\";\n\nexport type UseInputStatesResult = ReturnType<typeof useInputStates>;\n\nexport const useInputStates = (\n startDate: Date | undefined,\n endDate: Date | undefined\n) => {\n const [\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n ] = useBoolean(false);\n\n const [firstFocusedInput, setFirstFocusedInput] = useState<\n DateRangeFocusedInput | undefined\n >(undefined);\n\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const [dateInFocus, setDateInFocus] = useState<Date>(() => {\n const fromValue =\n focusedInput === \"startDate\"\n ? startDate\n : focusedInput === \"endDate\"\n ? endDate\n : undefined;\n\n return fromValue ?? new Date();\n });\n\n const [currentPanel, setCurrentPanel] = useState<CalendarPanelType>(\n \"calendar\"\n );\n\n return {\n isCalendarVisible,\n showCalendarInternal,\n hideCalendarInternal,\n firstFocusedInput,\n setFirstFocusedInput,\n focusedInput,\n setFocusedInput,\n dateInFocus,\n setDateInFocus,\n currentPanel,\n setCurrentPanel,\n };\n};\n","import { isAfter } from \"date-fns\";\nimport * as React from \"react\";\nimport { RefObject, useCallback } from \"react\";\nimport { DayData } from \"../../../../util/calendar/CalendarDataFactory\";\nimport { DateRangeDualTextInputProps } from \"../DateRangeDualTextInput\";\nimport { UseInputStatesResult } from \"./UseInputStates\";\n\nexport const useUserInputHandlers = (\n startDate: Date | undefined,\n endDate: Date | undefined,\n onValueChange: DateRangeDualTextInputProps[\"onValueChange\"],\n startDateInputRef: RefObject<HTMLInputElement>,\n endDateInputRef: RefObject<HTMLInputElement>,\n showCalendar: () => void,\n hideCalendar: () => void,\n {\n firstFocusedInput,\n setFirstFocusedInput,\n isCalendarVisible,\n setFocusedInput,\n focusedInput,\n setCurrentPanel,\n }: UseInputStatesResult\n) => {\n const onFocusLeft = useCallback(() => {\n if (firstFocusedInput == null) {\n setFirstFocusedInput(\"startDate\");\n }\n setFocusedInput(\"startDate\");\n if (!isCalendarVisible) {\n showCalendar();\n }\n }, [\n isCalendarVisible,\n setFocusedInput,\n showCalendar,\n setFirstFocusedInput,\n firstFocusedInput,\n ]);\n\n const onFocusRight = useCallback(() => {\n if (firstFocusedInput == null) {\n setFirstFocusedInput(\"endDate\");\n }\n setFocusedInput(\"endDate\");\n if (!isCalendarVisible) {\n showCalendar();\n }\n }, [\n isCalendarVisible,\n setFocusedInput,\n showCalendar,\n setFirstFocusedInput,\n firstFocusedInput,\n ]);\n\n const onClickDay = useCallback(\n (day: DayData) => {\n if (focusedInput === \"startDate\") {\n if (endDate != null && isAfter(day.date, endDate)) {\n onValueChange?.({\n startDate: day.date,\n endDate: undefined,\n });\n setFocusedInput(\"endDate\");\n endDateInputRef.current?.focus();\n } else {\n onValueChange?.({\n startDate: day.date,\n endDate,\n });\n if (firstFocusedInput === \"startDate\") {\n setFocusedInput(\"endDate\");\n endDateInputRef.current?.focus();\n } else {\n setTimeout(hideCalendar, 50);\n }\n }\n } else if (focusedInput === \"endDate\") {\n if (!startDate) {\n onValueChange?.({\n startDate,\n endDate: day.date,\n });\n setFocusedInput(\"startDate\");\n startDateInputRef.current?.focus();\n } else if (isAfter(startDate, day.date)) {\n onValueChange?.({\n startDate: day.date,\n endDate: undefined,\n });\n setFocusedInput(\"endDate\");\n endDateInputRef.current?.focus();\n } else {\n onValueChange?.({\n startDate,\n endDate: day.date,\n });\n setTimeout(hideCalendar, 50);\n }\n }\n },\n [\n focusedInput,\n onValueChange,\n endDate,\n firstFocusedInput,\n setFocusedInput,\n endDateInputRef,\n hideCalendar,\n startDate,\n startDateInputRef,\n ]\n );\n\n const onClickArrowButton = useCallback(() => {\n setCurrentPanel(\"presets\");\n showCalendar();\n }, [setCurrentPanel, showCalendar]);\n\n const onClickCalendarButton = useCallback(() => {\n if (isCalendarVisible) {\n hideCalendar();\n } else {\n setFocusedInput(\"startDate\");\n setFirstFocusedInput(\"startDate\");\n startDateInputRef.current?.focus();\n setCurrentPanel(\"calendar\");\n showCalendar();\n }\n }, [\n isCalendarVisible,\n hideCalendar,\n setFocusedInput,\n setFirstFocusedInput,\n startDateInputRef,\n setCurrentPanel,\n showCalendar,\n ]);\n\n const onKeyDownHandler = useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \"Escape\") {\n hideCalendar();\n }\n },\n [hideCalendar]\n );\n\n return {\n onFocusLeft,\n onFocusRight,\n onClickDay,\n onClickArrowButton,\n onClickCalendarButton,\n onKeyDownHandler,\n };\n};\n","import { Box, useDelayedFalse } from \"@stenajs-webui/core\";\nimport { stenaArrowRight } from \"@stenajs-webui/elements\";\nimport {\n TextInputProps,\n ValueAndOnValueChangeProps,\n} from \"@stenajs-webui/forms\";\nimport { Popover } from \"@stenajs-webui/tooltip\";\nimport { isAfter } from \"date-fns\";\nimport * as React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport { defaultPopoverPlacement } from \"../../../config/DefaultPopoverPlacement\";\nimport {\n DualTextInput,\n DualTextInputProps,\n} from \"../../../features/dual-text-input/DualTextInput\";\nimport { CalendarWithMonthSwitcher } from \"../../../features/month-switcher/CalendarWithMonthSwitcher\";\nimport { buildDayStateForSingleMonth } from \"../../../util/calendar/StateModifier\";\nimport { useDateRangeEffects } from \"./hooks/UseDateRangeEffects\";\nimport { useDateRangeHandlers } from \"./hooks/UseDateRangeHandlers\";\nimport { useInputStates } from \"./hooks/UseInputStates\";\nimport { useUserInputHandlers } from \"./hooks/UseUserInputHandlers\";\nimport { DateRangeInputCalendarProps } from \"../../calendar-types/date-range-calendar/DateRangeCalendar\";\nimport { OptionalMinMaxDatesAsString } from \"../../../types/CalendarTypes\";\nimport { DateRange } from \"../../../types/DateRange\";\nimport { defaultMaxDate } from \"../../../config/DefaultMaxDate\";\n\nexport interface DateRangeDualTextInputProps<TData = unknown>\n extends ValueAndOnValueChangeProps<DateRange>,\n OptionalMinMaxDatesAsString,\n Pick<DualTextInputProps, \"widthLeft\" | \"widthRight\" | \"variant\"> {\n onEsc?: () => void;\n onEnter?: () => void;\n onBlur?: () => void;\n autoFocus?: boolean;\n calendarProps?: DateRangeInputCalendarProps<TData>;\n disabled?: boolean;\n}\n\nexport const DateRangeDualTextInput = <TData extends {}>({\n value,\n onValueChange,\n autoFocus,\n onBlur,\n onEnter,\n onEsc,\n minDate,\n maxDate = defaultMaxDate,\n calendarProps,\n widthLeft = 128,\n widthRight = 128,\n variant,\n disabled,\n}: DateRangeDualTextInputProps<TData>) => {\n const { startDate, endDate } = value || {};\n\n const startDateInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n const endDateInputRef: TextInputProps[\"inputRef\"] = useRef(null);\n\n const states = useInputStates(startDate, endDate);\n\n const {\n dateInFocus,\n setDateInFocus,\n isCalendarVisible,\n currentPanel,\n setCurrentPanel,\n } = states;\n\n const {\n showCalendar,\n hideCalendar,\n inputLeftChangeHandler,\n inputRightChangeHandler,\n } = useDateRangeHandlers(startDate, endDate, onValueChange, states);\n\n const {\n onKeyDownHandler,\n onFocusRight,\n onFocusLeft,\n onClickDay,\n onClickCalendarButton,\n onClickArrowButton,\n } = useUserInputHandlers(\n startDate,\n endDate,\n onValueChange,\n startDateInputRef,\n endDateInputRef,\n showCalendar,\n hideCalendar,\n states\n );\n\n useDateRangeEffects(\n startDate,\n endDate,\n setDateInFocus,\n startDateInputRef,\n endDateInputRef\n );\n\n const startDateIsAfterEnd = useMemo(\n () => startDate && endDate && isAfter(startDate, endDate),\n [startDate, endDate]\n );\n\n const statePerMonth = useMemo(\n () =>\n buildDayStateForSingleMonth(\n calendarProps?.statePerMonth,\n startDate,\n endDate,\n dateInFocus\n ),\n [calendarProps?.statePerMonth, startDate, endDate, dateInFocus]\n );\n\n const delayedIsCalendarVisible = useDelayedFalse(isCalendarVisible, 300);\n\n return (\n <Box onKeyDown={onKeyDownHandler}>\n <Popover\n arrow={false}\n lazy\n disabled={disabled}\n placement={defaultPopoverPlacement}\n onClickOutside={hideCalendar}\n visible={isCalendarVisible}\n content={\n delayedIsCalendarVisible && (\n <CalendarWithMonthSwitcher\n onClickDay={onClickDay}\n dateInFocus={dateInFocus}\n setDateInFocus={setDateInFocus}\n currentPanel={currentPanel}\n setCurrentPanel={setCurrentPanel}\n minDate={minDate}\n maxDate={maxDate}\n {...calendarProps}\n statePerMonth={statePerMonth}\n />\n )\n }\n >\n <DualTextInput\n autoFocusLeft={autoFocus}\n onEsc={onEsc}\n onEnter={onEnter}\n onBlur={onBlur}\n disabled={disabled}\n separatorIcon={stenaArrowRight}\n typeLeft={\"date\"}\n typeRight={\"date\"}\n placeholderLeft={\"Start date\"}\n placeholderRight={\"End date\"}\n onChangeLeft={inputLeftChangeHandler}\n onChangeRight={inputRightChangeHandler}\n onClickArrowDown={onClickArrowButton}\n onClickCalendar={onClickCalendarButton}\n onFocusLeft={onFocusLeft}\n onFocusRight={onFocusRight}\n onClickLeft={onFocusLeft}\n onClickRight={onFocusRight}\n inputRefLeft={startDateInputRef}\n inputRefRight={endDateInputRef}\n variant={startDateIsAfterEnd ? \"error\" : variant}\n widthLeft={widthLeft}\n widthRight={widthRight}\n minLeft={minDate}\n maxLeft={maxDate}\n minRight={minDate}\n maxRight={maxDate}\n />\n </Popover>\n </Box>\n );\n};\n"],"names":["styles","faCalendarAlt","useDateRangeEffects","useDateRangeHandlers","useInputStates","useUserInputHandlers","faClock"],"mappings":"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"}