@shival99/z-vnetcity 1.4.13 → 1.4.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/shival99-z-vnetcity-components-z-calendar.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-editor.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-input.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-select.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-table.mjs +4 -3
- package/fesm2022/shival99-z-vnetcity-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-components-z-upload.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-vnetcity-services.mjs +1 -0
- package/fesm2022/shival99-z-vnetcity-services.mjs.map +1 -1
- package/package.json +1 -1
- package/types/shival99-z-vnetcity-components-z-calendar.d.ts +6 -6
- package/types/shival99-z-vnetcity-components-z-editor.d.ts +3 -3
- package/types/shival99-z-vnetcity-components-z-input.d.ts +4 -4
- package/types/shival99-z-vnetcity-components-z-select.d.ts +3 -3
- package/types/shival99-z-vnetcity-components-z-table.d.ts +1 -1
- package/types/shival99-z-vnetcity-components-z-upload.d.ts +5 -5
- package/types/shival99-z-vnetcity-services.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-vnetcity-components-z-calendar.mjs","sources":["../../../../libs/core-ui/components/z-calendar/z-calendar.utils.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.variants.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-day-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-end-time-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-month-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-month-year-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-quarter-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-time-selected.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-year-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.html","../../../../libs/core-ui/components/z-calendar/shival99-z-vnetcity-components-z-calendar.ts"],"sourcesContent":["import type {\n ZCalendarDay,\n ZCalendarGridOptions,\n ZDateRange,\n ZDayState,\n ZMonthState,\n ZQuarterState,\n ZQuickSelectPreset,\n ZRangeProperties,\n ZYearState,\n} from './z-calendar.types';\n\nexport const createDate = (year: number, month: number, day: number, hour = 0, minute = 0, second = 0): Date =>\n new Date(year, month, day, hour, minute, second);\n\nexport const cloneDate = (date: Date): Date => new Date(date.getTime());\n\nexport const getToday = (): Date => {\n const now = new Date();\n return createDate(now.getFullYear(), now.getMonth(), now.getDate());\n};\n\nexport const startOfDay = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const startOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), 1);\n\nexport const endOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const startOfYear = (date: Date): Date => createDate(date.getFullYear(), 0, 1);\n\nexport const addDays = (date: Date, days: number): Date => {\n const result = cloneDate(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const addMonths = (date: Date, months: number): Date => {\n const result = cloneDate(date);\n result.setMonth(result.getMonth() + months);\n return result;\n};\n\nexport const addYears = (date: Date, years: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(result.getFullYear() + years);\n return result;\n};\n\nexport const setMonth = (date: Date, month: number): Date => {\n const result = cloneDate(date);\n result.setMonth(month);\n return result;\n};\n\nexport const setYear = (date: Date, year: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(year);\n return result;\n};\n\nexport const setTime = (date: Date, hour: number, minute: number, second: number): Date => {\n const result = cloneDate(date);\n result.setHours(hour, minute, second, 0);\n return result;\n};\n\nexport const isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) {\n return false;\n }\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nexport const isSameMonth = (date1: Date, date2: Date): boolean =>\n date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth();\n\nexport const isSameYear = (date1: Date, date2: Date): boolean => date1.getFullYear() === date2.getFullYear();\n\nexport const isToday = (date: Date): boolean => isSameDay(date, new Date());\n\nexport const isBefore = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() < startOfDay(date2).getTime();\n\nexport const isAfter = (date1: Date, date2: Date): boolean => startOfDay(date1).getTime() > startOfDay(date2).getTime();\n\nexport const isBeforeOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() <= startOfDay(date2).getTime();\n\nexport const isAfterOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() >= startOfDay(date2).getTime();\n\nexport const isBetween = (date: Date, start: Date, end: Date): boolean => {\n const time = startOfDay(date).getTime();\n const startTime = startOfDay(start).getTime();\n const endTime = startOfDay(end).getTime();\n return time > startTime && time < endTime;\n};\n\nexport const isDateInRange = (date: Date, minDate: Date | null, maxDate: Date | null): boolean => {\n if (minDate && isBefore(date, minDate)) {\n return false;\n }\n if (maxDate && isAfter(date, maxDate)) {\n return false;\n }\n return true;\n};\n\nexport const getDaysInMonth = (year: number, month: number): number => new Date(year, month + 1, 0).getDate();\n\nexport const getFirstDayOfMonth = (year: number, month: number): number => new Date(year, month, 1).getDay();\n\nconst computeRangeProperties = (\n date: Date,\n rangeStart: Date | null | undefined,\n rangeEnd: Date | null | undefined,\n hoveredDate: Date | null | undefined\n): ZRangeProperties => {\n const defaultProps: ZRangeProperties = {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n isHovered: false,\n };\n\n if (rangeStart && rangeEnd) {\n const actualStart = isBefore(rangeStart, rangeEnd) ? rangeStart : rangeEnd;\n const actualEnd = isAfter(rangeEnd, rangeStart) ? rangeEnd : rangeStart;\n return {\n isRangeStart: isSameDay(date, actualStart),\n isRangeEnd: isSameDay(date, actualEnd),\n isInRange: isBetween(date, actualStart, actualEnd),\n isHovered: false,\n };\n }\n\n if (rangeStart && hoveredDate && !rangeEnd) {\n const isHoveredBefore = isBefore(hoveredDate, rangeStart);\n const effectiveStart = isHoveredBefore ? hoveredDate : rangeStart;\n const effectiveEnd = isHoveredBefore ? rangeStart : hoveredDate;\n return {\n isRangeStart: isSameDay(date, effectiveStart),\n isRangeEnd: isSameDay(date, effectiveEnd),\n isInRange: isBetween(date, effectiveStart, effectiveEnd),\n isHovered: isSameDay(date, hoveredDate),\n };\n }\n\n if (rangeStart) {\n return { ...defaultProps, isRangeStart: isSameDay(date, rangeStart) };\n }\n\n return defaultProps;\n};\n\nconst createCalendarDay = (\n date: Date,\n isCurrentMonth: boolean,\n today: Date,\n options: ZCalendarGridOptions\n): ZCalendarDay => {\n const { selectedDate, minDate, maxDate, rangeStart, rangeEnd, hoveredDate, disabledDate } = options;\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;\n const rangeProps = computeRangeProperties(date, rangeStart, rangeEnd, hoveredDate);\n\n const isOutOfRange = !isDateInRange(date, minDate ?? null, maxDate ?? null);\n const isDisabledByFn = disabledDate ? disabledDate(date) : false;\n\n return {\n date,\n day: date.getDate(),\n isCurrentMonth,\n isToday: isSameDay(date, today),\n isDisabled: isOutOfRange || isDisabledByFn,\n isSelected,\n ...rangeProps,\n };\n};\n\nexport const generateCalendarGrid = (\n year: number,\n month: number,\n options: ZCalendarGridOptions = {}\n): ZCalendarDay[][] => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayOfMonth = getFirstDayOfMonth(year, month);\n const today = getToday();\n\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevMonthYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevMonthYear, prevMonth);\n\n const days: ZCalendarDay[] = [];\n\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const date = createDate(prevMonthYear, prevMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = createDate(year, month, day);\n days.push(createCalendarDay(date, true, today, options));\n }\n\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextMonthYear = month === 11 ? year + 1 : year;\n const remainingDays = 42 - days.length;\n\n for (let day = 1; day <= remainingDays; day++) {\n const date = createDate(nextMonthYear, nextMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n const weeks: ZCalendarDay[][] = [];\n for (let i = 0; i < 6; i++) {\n weeks.push(days.slice(i * 7, (i + 1) * 7));\n }\n\n return weeks;\n};\n\nexport const getMonthNames = (locale = 'vi-VN'): string[] => {\n if (locale === 'vi-VN') {\n return ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'];\n }\n\n const months: string[] = [];\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1);\n months.push(date.toLocaleDateString(locale, { month: 'short' }));\n }\n return months;\n};\n\nexport const getFullMonthName = (monthIndex: number, locale = 'vi-VN'): string => {\n if (locale === 'vi-VN') {\n return `Tháng ${monthIndex + 1}`;\n }\n const date = new Date(2024, monthIndex, 1);\n return date.toLocaleDateString(locale, { month: 'long' });\n};\n\nexport const getShortMonthName = (monthIndex: number, locale = 'vi-VN'): string => {\n if (locale === 'vi-VN') {\n return `Th${monthIndex + 1}`;\n }\n const date = new Date(2024, monthIndex, 1);\n return date.toLocaleDateString(locale, { month: 'short' });\n};\n\nexport const getWeekdayNames = (locale = 'vi-VN'): string[] => {\n const weekdays: string[] = [];\n for (let i = 0; i < 7; i++) {\n const actualDate = new Date(2024, 0, 7 + i);\n weekdays.push(actualDate.toLocaleDateString(locale, { weekday: 'narrow' }));\n }\n return weekdays;\n};\n\nexport const getYearRange = (centerYear: number, range = 12): number[] => {\n const startYear = centerYear - Math.floor(range / 2);\n return Array.from({ length: range }, (_, i) => startYear + i);\n};\n\nexport const formatDate = (date: Date | null, format: string, locale = 'vi-VN'): string => {\n if (!date) {\n return '';\n }\n\n const hours = date.getHours();\n const hours12 = hours % 12 || 12;\n const monthIndex = date.getMonth();\n\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n MMMM: getFullMonthName(monthIndex, locale),\n MMM: getShortMonthName(monthIndex, locale),\n MM: String(monthIndex + 1).padStart(2, '0'),\n DD: String(date.getDate()).padStart(2, '0'),\n HH: String(hours).padStart(2, '0'),\n hh: String(hours12).padStart(2, '0'),\n mm: String(date.getMinutes()).padStart(2, '0'),\n ss: String(date.getSeconds()).padStart(2, '0'),\n };\n\n let result = format;\n // Sort tokens by length (longest first) to avoid partial replacements\n // e.g., MMMM should be replaced before MM\n const sortedTokens = Object.keys(tokens).sort((a, b) => b.length - a.length);\n for (const token of sortedTokens) {\n result = result.split(token).join(tokens[token]);\n }\n\n return result;\n};\n\nexport const parseDate = (dateString: string, format: string): Date | null => {\n if (!dateString) {\n return null;\n }\n\n const pattern = format\n .replace(/YYYY/g, '\\\\d{4}')\n .replace(/MM/g, '\\\\d{1,2}')\n .replace(/DD/g, '\\\\d{1,2}')\n .replace(/HH/g, '\\\\d{1,2}')\n .replace(/hh/g, '\\\\d{1,2}')\n .replace(/mm/g, '\\\\d{1,2}')\n .replace(/ss/g, '\\\\d{1,2}')\n .replace(/\\//g, '\\\\/')\n .replace(/-/g, '\\\\-')\n .replace(/:/g, '\\\\:')\n .replace(/\\s+/g, '\\\\s*');\n\n const datePattern = new RegExp(`^${pattern}(\\\\s*(AM|PM))?$`, 'i');\n if (!datePattern.test(dateString.trim())) {\n return null;\n }\n\n const numbers = dateString.match(/\\d+/g)?.map(n => parseInt(n, 10)) ?? [];\n if (numbers.length === 0) {\n return null;\n }\n\n const currentYear = new Date().getFullYear();\n const values: Record<string, number> = {\n YYYY: currentYear,\n MM: 1,\n DD: 1,\n HH: 0,\n hh: 0,\n mm: 0,\n ss: 0,\n };\n\n const allTokens = ['YYYY', 'MM', 'DD', 'HH', 'hh', 'mm', 'ss'];\n const tokensInFormat = allTokens\n .filter(token => format.includes(token))\n .sort((a, b) => format.indexOf(a) - format.indexOf(b));\n\n for (let i = 0; i < Math.min(numbers.length, tokensInFormat.length); i++) {\n values[tokensInFormat[i]] = numbers[i];\n }\n\n const isPM = /PM/i.test(dateString);\n const isAM = /AM/i.test(dateString);\n let hour = values['HH'];\n\n if (format.includes('hh')) {\n hour = values['hh'];\n if (isPM && hour < 12) {\n hour += 12;\n }\n if (isAM && hour === 12) {\n hour = 0;\n }\n }\n\n try {\n const date = createDate(values['YYYY'], values['MM'] - 1, values['DD'], hour, values['mm'], values['ss']);\n // Validate the date is valid (e.g., not 31/02/2025)\n if (isNaN(date.getTime())) {\n return null;\n }\n return date;\n } catch {\n return null;\n }\n};\n\nexport const toISOString = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n return date.toISOString();\n};\n\nexport const fromISOString = (isoString: string): Date | null => {\n if (!isoString) {\n return null;\n }\n const date = new Date(isoString);\n return isNaN(date.getTime()) ? null : date;\n};\n\nexport const getQuickSelectPresets = (): ZQuickSelectPreset[] => [\n {\n key: 'today',\n label: 'i18n_z_ui_calendar_today',\n getValue: () => ({ start: getToday(), end: getToday() }),\n },\n {\n key: '7days',\n label: 'i18n_z_ui_calendar_last_7_days',\n getValue: () => ({\n start: addDays(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: '14days',\n label: 'i18n_z_ui_calendar_last_14_days',\n getValue: () => ({\n start: addDays(getToday(), -13),\n end: getToday(),\n }),\n },\n {\n key: '1month',\n label: 'i18n_z_ui_calendar_last_1_month',\n getValue: () => ({\n start: addMonths(getToday(), -1),\n end: getToday(),\n }),\n },\n {\n key: '2months',\n label: 'i18n_z_ui_calendar_last_2_months',\n getValue: () => ({\n start: addMonths(getToday(), -2),\n end: getToday(),\n }),\n },\n {\n key: '3months',\n label: 'i18n_z_ui_calendar_last_3_months',\n getValue: () => ({\n start: addMonths(getToday(), -3),\n end: getToday(),\n }),\n },\n {\n key: '6months',\n label: 'i18n_z_ui_calendar_last_6_months',\n getValue: () => ({\n start: addMonths(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: 'custom',\n label: 'i18n_z_ui_calendar_custom',\n getValue: () => null,\n },\n];\n\nexport const normalizeRange = (start: Date | null, end: Date | null): ZDateRange => {\n if (!start || !end) {\n return { start, end };\n }\n\n if (isBefore(end, start)) {\n return { start: end, end: start };\n }\n\n return { start, end };\n};\n\nexport const isValidRange = (range: ZDateRange): boolean => range.start !== null && range.end !== null;\n\nexport const clampTime = (value: number, min: number, max: number): number => Math.max(min, Math.min(max, value));\n\nexport const parseTimeValue = (value: string, max: number): number => {\n const parsed = parseInt(value, 10);\n if (isNaN(parsed)) {\n return 0;\n }\n return clampTime(parsed, 0, max);\n};\n\nexport const formatTimeValue = (value: number): string => String(value).padStart(2, '0');\n\nexport const getDayState = (day: ZCalendarDay): ZDayState => {\n if (day.isDisabled) {\n return 'disabled';\n }\n if (!day.isCurrentMonth) {\n return 'otherMonth';\n }\n if (day.isRangeStart && day.isRangeEnd) {\n return 'rangeSingle';\n }\n if (day.isRangeStart) {\n return 'rangeStart';\n }\n if (day.isRangeEnd) {\n return 'rangeEnd';\n }\n if (day.isInRange) {\n return 'inRange';\n }\n if (day.isHovered) {\n return 'hovered';\n }\n if (day.isSelected) {\n return 'selected';\n }\n if (day.isToday) {\n return 'today';\n }\n return 'default';\n};\n\nexport const getMonthState = (monthIndex: number, selectedMonthIndex: number, todayMonthIndex: number): ZMonthState => {\n if (monthIndex === selectedMonthIndex) {\n return 'selected';\n }\n // Only show current month when no value is selected\n if (selectedMonthIndex === -1 && monthIndex === todayMonthIndex) {\n return 'current';\n }\n return 'default';\n};\n\nexport const getQuarterState = (\n quarterIndex: number,\n selectedQuarterIndex: number,\n todayQuarterIndex: number\n): ZQuarterState => {\n if (quarterIndex === selectedQuarterIndex) {\n return 'selected';\n }\n // Only show current quarter when no value is selected\n if (selectedQuarterIndex === -1 && quarterIndex === todayQuarterIndex) {\n return 'current';\n }\n return 'default';\n};\n\nexport const getYearState = (year: number, selectedYear: number, todayYear: number): ZYearState => {\n if (year === selectedYear) {\n return 'selected';\n }\n // Only show current year when no value is selected\n if (selectedYear === -1 && year === todayYear) {\n return 'current';\n }\n return 'default';\n};\n\n/**\n * Check if the format string contains time tokens (HH, hh, mm, ss)\n */\nexport const hasTimeTokens = (format: string): boolean => /HH|hh|mm|ss/.test(format);\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCalendarVariants = cva(\n [\n 'group flex min-w-0 w-full items-center overflow-hidden rounded-[6px] border border-input bg-white shadow-xs cursor-pointer',\n 'transition-[border-color,box-shadow,background-color,color,opacity] duration-200',\n 'dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n 'outline-none',\n 'text-sm',\n ],\n {\n variants: {\n zSize: {\n sm: 'h-8 px-2 gap-2 text-sm',\n default: 'h-9 px-2 gap-2 text-sm',\n lg: 'h-10 px-2 gap-2.5 text-sm',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n open: 'border-ring ring-ring/50 ring-[3px]',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'cursor-default bg-muted/50 text-muted-foreground',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZCalendarVariants = VariantProps<typeof zCalendarVariants>;\n\nexport const zCalendarDayVariants = cva(\n [\n 'flex items-center justify-center size-7 text-sm rounded-[4px] cursor-pointer',\n 'transition-all duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n today: 'bg-primary/10 text-primary border border-primary',\n selected: 'bg-primary text-primary-foreground',\n inRange: 'bg-primary/10 text-foreground',\n rangeStart: 'bg-primary text-primary-foreground rounded-r-none',\n rangeEnd: 'bg-primary text-primary-foreground rounded-l-none',\n rangeSingle: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed line-through',\n otherMonth: 'text-muted-foreground/40 hover:bg-primary/5',\n hovered: 'bg-primary/15 text-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarMonthVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-8 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary text-primary-foreground',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed line-through',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarYearVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-6 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary text-primary-foreground',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed line-through',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarQuarterVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-15 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary text-primary-foreground',\n selected: 'bg-primary text-primary-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZCalendarDay } from '../z-calendar.types';\nimport { getDayState } from '../z-calendar.utils';\nimport { zCalendarDayVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zDayClasses',\n standalone: true,\n pure: true,\n})\nexport class ZDayClassesPipe implements PipeTransform {\n transform(day: ZCalendarDay): string {\n const state = getDayState(day);\n return zCalendarDayVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZQuickSelectPreset } from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsPresetDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsPresetDisabledPipe implements PipeTransform {\n transform(preset: ZQuickSelectPreset, disabledDateFn: ((date: Date) => boolean) | null): boolean {\n if (preset.key === 'custom' || !disabledDateFn) {\n return false;\n }\n\n const value = preset.getValue();\n if (!value) {\n return false;\n }\n\n if (value instanceof Date) {\n return disabledDateFn(value);\n }\n\n if (value.start && disabledDateFn(value.start)) {\n return true;\n }\n if (value.end && disabledDateFn(value.end)) {\n return true;\n }\n\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZEndTimeContext } from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsEndHourDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndHourDisabledPipe implements PipeTransform {\n transform(hour: number, context: ZEndTimeContext): boolean {\n if (!context.isSameDay) {\n return false;\n }\n\n let actualHour = hour;\n let actualStartHour = context.startHour;\n\n if (context.timeFormat === '12h') {\n if (context.endPeriod === 'PM' && hour !== 12) {\n actualHour = hour + 12;\n }\n if (context.endPeriod === 'AM' && hour === 12) {\n actualHour = 0;\n }\n if (context.startPeriod === 'PM' && context.startHour !== 12) {\n actualStartHour = context.startHour + 12;\n }\n if (context.startPeriod === 'AM' && context.startHour === 12) {\n actualStartHour = 0;\n }\n }\n\n return actualHour < actualStartHour;\n }\n}\n\n@Pipe({\n name: 'zIsEndMinuteDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndMinuteDisabledPipe implements PipeTransform {\n transform(minute: number, context: ZEndTimeContext): boolean {\n if (!context.isSameDay) {\n return false;\n }\n\n let actualStartHour = context.startHour;\n let actualEndHour = context.endHour;\n\n if (context.timeFormat === '12h') {\n if (context.startPeriod === 'PM' && context.startHour !== 12) {\n actualStartHour = context.startHour + 12;\n }\n if (context.startPeriod === 'AM' && context.startHour === 12) {\n actualStartHour = 0;\n }\n if (context.endPeriod === 'PM' && context.endHour !== 12) {\n actualEndHour = context.endHour + 12;\n }\n if (context.endPeriod === 'AM' && context.endHour === 12) {\n actualEndHour = 0;\n }\n }\n\n if (actualEndHour !== actualStartHour) {\n return false;\n }\n\n return minute < context.startMinute;\n }\n}\n\n@Pipe({\n name: 'zIsEndSecondDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndSecondDisabledPipe implements PipeTransform {\n transform(second: number, context: ZEndTimeContext): boolean {\n if (!context.isSameDay) {\n return false;\n }\n\n let actualStartHour = context.startHour;\n let actualEndHour = context.endHour;\n\n if (context.timeFormat === '12h') {\n if (context.startPeriod === 'PM' && context.startHour !== 12) {\n actualStartHour = context.startHour + 12;\n }\n if (context.startPeriod === 'AM' && context.startHour === 12) {\n actualStartHour = 0;\n }\n if (context.endPeriod === 'PM' && context.endHour !== 12) {\n actualEndHour = context.endHour + 12;\n }\n if (context.endPeriod === 'AM' && context.endHour === 12) {\n actualEndHour = 0;\n }\n }\n\n if (actualEndHour !== actualStartHour) {\n return false;\n }\n if (context.endMinute !== context.startMinute) {\n return false;\n }\n\n return second <= context.startSecond;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getMonthState } from '../z-calendar.utils';\nimport { zCalendarMonthVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zMonthClasses',\n standalone: true,\n pure: true,\n})\nexport class ZMonthClassesPipe implements PipeTransform {\n transform(monthIndex: number, selectedMonthIndex: number, todayMonthIndex: number): string {\n const state = getMonthState(monthIndex, selectedMonthIndex, todayMonthIndex);\n return zCalendarMonthVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type {\n ZMonthDisabledContext,\n ZEndMonthDisabledContext,\n ZYearDisabledContext,\n ZEndYearDisabledContext,\n} from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsStartMonthDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsStartMonthDisabledPipe implements PipeTransform {\n transform(monthIndex: number, context: ZMonthDisabledContext): boolean {\n if (context.disabledDateFn) {\n const monthDate = new Date(context.currentYear, monthIndex, 1);\n if (context.disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (context.currentYear > context.endYear) {\n return true;\n }\n\n if (context.currentYear === context.endYear && monthIndex > context.endMonthIndex) {\n return true;\n }\n return false;\n }\n}\n\n@Pipe({\n name: 'zIsEndMonthDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndMonthDisabledPipe implements PipeTransform {\n transform(monthIndex: number, context: ZEndMonthDisabledContext): boolean {\n if (context.disabledDateFn) {\n const monthDate = new Date(context.endYear, monthIndex, 1);\n if (context.disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (context.endYear < context.startYear) {\n return true;\n }\n if (context.endYear === context.startYear && monthIndex < context.startMonthIndex) {\n return true;\n }\n return false;\n }\n}\n\n@Pipe({\n name: 'zIsStartYearDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsStartYearDisabledPipe implements PipeTransform {\n transform(year: number, context: ZYearDisabledContext): boolean {\n if (context.disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (context.disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (year > context.endYear) {\n return true;\n }\n if (year === context.endYear && context.startMonthIndex >= context.endMonthIndex) {\n return true;\n }\n return false;\n }\n}\n\n@Pipe({\n name: 'zIsEndYearDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndYearDisabledPipe implements PipeTransform {\n transform(year: number, context: ZEndYearDisabledContext): boolean {\n if (context.disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (context.disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (year < context.startYear) {\n return true;\n }\n if (year === context.startYear && context.endMonthIndex <= context.startMonthIndex) {\n return true;\n }\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getQuarterState } from '../z-calendar.utils';\nimport { zCalendarQuarterVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zQuarterClasses',\n standalone: true,\n pure: true,\n})\nexport class ZQuarterClassesPipe implements PipeTransform {\n transform(quarterIndex: number, selectedQuarterIndex: number, todayQuarterIndex: number): string {\n const state = getQuarterState(quarterIndex, selectedQuarterIndex, todayQuarterIndex);\n return zCalendarQuarterVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'zIsTimeSelected',\n standalone: true,\n pure: true,\n})\nexport class ZIsTimeSelectedPipe implements PipeTransform {\n transform(value: number, selectedValue: number): boolean {\n return value === selectedValue;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getYearState } from '../z-calendar.utils';\nimport { zCalendarYearVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zYearClasses',\n standalone: true,\n pure: true,\n})\nexport class ZYearClassesPipe implements PipeTransform {\n transform(year: number, selectedYear: number, todayYear: number): string {\n const state = getYearState(year, selectedYear, todayYear);\n return zCalendarYearVariants({ state });\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-vnetcity/components/z-button';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-vnetcity/components/z-popover';\nimport type { ZPopoverControl } from '@shival99/z-vnetcity/components/z-popover';\nimport { ZTranslateService } from '@shival99/z-vnetcity/services';\nimport { zUuid, zMergeClasses, zTransform } from '@shival99/z-vnetcity/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { merge } from 'rxjs';\nimport { ZDayClassesPipe } from './pipes/z-day-classes.pipe';\nimport { ZIsPresetDisabledPipe } from './pipes/z-disabled.pipe';\nimport {\n ZIsEndHourDisabledPipe,\n ZIsEndMinuteDisabledPipe,\n ZIsEndSecondDisabledPipe,\n} from './pipes/z-end-time-disabled.pipe';\nimport { ZMonthClassesPipe } from './pipes/z-month-classes.pipe';\nimport {\n ZIsStartMonthDisabledPipe,\n ZIsEndMonthDisabledPipe,\n ZIsStartYearDisabledPipe,\n ZIsEndYearDisabledPipe,\n} from './pipes/z-month-year-disabled.pipe';\nimport { ZQuarterClassesPipe } from './pipes/z-quarter-classes.pipe';\nimport { ZIsTimeSelectedPipe } from './pipes/z-time-selected.pipe';\nimport { ZYearClassesPipe } from './pipes/z-year-classes.pipe';\nimport type {\n ZCalendarDay,\n ZCalendarControl,\n ZCalendarDefaultTime,\n ZCalendarMode,\n ZCalendarRangeDefaultTime,\n ZCalendarSize,\n ZCalendarState,\n ZCalendarTimeConfig,\n ZCalendarValidator,\n ZCalendarValue,\n ZCalendarValueType,\n ZCalendarView,\n ZDateRange,\n ZEndMonthDisabledContext,\n ZEndTimeContext,\n ZEndYearDisabledContext,\n ZMonthDisabledContext,\n ZQuickSelectPreset,\n ZYearDisabledContext,\n} from './z-calendar.types';\nimport {\n addDays,\n addMonths,\n addYears,\n formatDate,\n formatTimeValue,\n fromISOString,\n generateCalendarGrid,\n getMonthNames,\n getQuickSelectPresets,\n getToday,\n getWeekdayNames,\n getYearRange,\n hasTimeTokens,\n isSameDay,\n isSameMonth,\n normalizeRange,\n parseDate,\n parseTimeValue,\n setMonth,\n setTime,\n setYear,\n toISOString,\n} from './z-calendar.utils';\nimport { zCalendarVariants } from './z-calendar.variants';\n\n@Component({\n selector: 'z-calendar',\n imports: [\n DecimalPipe,\n NgScrollbar,\n ZIconComponent,\n ZPopoverDirective,\n ZButtonComponent,\n ZDayClassesPipe,\n ZMonthClassesPipe,\n ZQuarterClassesPipe,\n ZYearClassesPipe,\n ZIsPresetDisabledPipe,\n ZIsTimeSelectedPipe,\n ZIsEndHourDisabledPipe,\n ZIsEndMinuteDisabledPipe,\n ZIsEndSecondDisabledPipe,\n ZIsStartMonthDisabledPipe,\n ZIsEndMonthDisabledPipe,\n ZIsStartYearDisabledPipe,\n ZIsEndYearDisabledPipe,\n TranslatePipe,\n ],\n standalone: true,\n templateUrl: './z-calendar.component.html',\n styleUrl: './z-calendar.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCalendarComponent),\n multi: true,\n },\n TranslatePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block min-w-0',\n },\n exportAs: 'zCalendar',\n})\nexport class ZCalendarComponent implements OnInit, ControlValueAccessor {\n public readonly class = input<ClassValue>('');\n public readonly zMode = input<ZCalendarMode>('single');\n public readonly zSize = input<ZCalendarSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input<string | null>(null);\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zShowTime = input(false, { transform: zTransform });\n public readonly zTimeFormat = input<'12h' | '24h'>('24h');\n public readonly zShowHour = input(true, { transform: zTransform });\n public readonly zShowMinute = input(true, { transform: zTransform });\n public readonly zShowSecond = input(true, { transform: zTransform });\n public readonly zQuickSelect = input(false, { transform: zTransform });\n public readonly zAllowClear = input(true, { transform: zTransform });\n public readonly zFormat = input<string>('DD/MM/YYYY');\n public readonly zMinDate = input<Date | null>(null);\n public readonly zMaxDate = input<Date | null>(null);\n public readonly zValueType = input<ZCalendarValueType>('date');\n public readonly zValidators = input<ZCalendarValidator[]>([]);\n public readonly zShowOk = input(false, { transform: zTransform });\n public readonly zOkText = input<string | null>(null);\n public readonly zShowCancel = input(false, { transform: zTransform });\n public readonly zCancelText = input<string | null>(null);\n public readonly zDisabledDate = input<((date: Date) => boolean) | null>(null);\n public readonly zScrollClose = input(false, { transform: zTransform });\n public readonly zDefaultTime = input<ZCalendarDefaultTime | null>(null);\n public readonly zRangeDefaultTime = input<ZCalendarRangeDefaultTime | null>(null);\n\n public readonly zControl = output<ZCalendarControl>();\n public readonly zChange = output<ZCalendarValue>();\n\n protected readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('triggerEl');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected readonly pickerId = zUuid('z-calendar');\n protected readonly weekdayNames = computed(() => getWeekdayNames(this.zLocale()));\n protected readonly monthNames = computed(() => getMonthNames(this.zLocale()));\n protected readonly quickSelectPresets = getQuickSelectPresets();\n\n protected readonly hourOptions = computed(() => {\n if (this.zTimeFormat() === '12h') {\n return Array.from({ length: 12 }, (_, i) => i + 1);\n }\n return Array.from({ length: 24 }, (_, i) => i);\n });\n\n protected readonly minuteOptions = Array.from({ length: 60 }, (_, i) => i);\n protected readonly secondOptions = Array.from({ length: 60 }, (_, i) => i);\n\n protected readonly formattedHour = computed(() => {\n const h = this.hour();\n if (this.zTimeFormat() === '12h') {\n const h12 = h % 12 || 12;\n return formatTimeValue(h12);\n }\n return formatTimeValue(h);\n });\n\n protected readonly formattedMinute = computed(() => formatTimeValue(this.minute()));\n protected readonly formattedSecond = computed(() => formatTimeValue(this.second()));\n\n protected readonly displayHour = computed(() => {\n const h = this.hour();\n if (this.zTimeFormat() === '12h') {\n return h % 12 || 12;\n }\n return h;\n });\n\n protected readonly displayHourEnd = computed(() => {\n const h = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n return h % 12 || 12;\n }\n return h;\n });\n\n private readonly _popoverControl = signal<ZPopoverControl | null>(null);\n private readonly _selectedDate = signal<Date | null>(null);\n private readonly _rangeStart = signal<Date | null>(null);\n private readonly _rangeEnd = signal<Date | null>(null);\n private readonly _currentMonth = signal<Date>(getToday());\n private readonly _endMonth = signal<Date>(addMonths(getToday(), 1));\n private readonly _hourEnd = signal(0);\n private readonly _minuteEnd = signal(0);\n private readonly _secondEnd = signal(0);\n private readonly _periodEnd = signal<'AM' | 'PM'>('AM');\n private readonly _disabled = signal(false);\n private readonly _touched = signal(false);\n private readonly _dirty = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _backupSelectedDate = signal<Date | null>(null);\n private readonly _backupRangeStart = signal<Date | null>(null);\n private readonly _backupRangeEnd = signal<Date | null>(null);\n private readonly _appliedViaOk = signal(false);\n private readonly _skipBlurHandler = signal(false);\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n\n protected readonly zLocale = this._zTranslate.locale();\n\n private _onChange: (value: ZCalendarValue) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n\n protected readonly isOpen = computed(() => this._popoverControl()?.isVisible() ?? false);\n protected readonly hoveredDate = signal<Date | null>(null);\n protected readonly currentView = signal<ZCalendarView>('day');\n protected readonly endView = signal<ZCalendarView>('day');\n protected readonly hour = signal(0);\n protected readonly minute = signal(0);\n protected readonly second = signal(0);\n protected readonly period = signal<'AM' | 'PM'>('AM');\n protected readonly inputDisplayValue = signal<string>('');\n protected readonly activePresetKey = signal<string | null>(null);\n\n protected readonly uiState = signal({\n hasViewChanged: false,\n hasEndViewChanged: false,\n timeDropdownOpen: false,\n timeDropdownEndOpen: false,\n isFocused: false,\n });\n\n protected readonly quarterNames = ['Q1', 'Q2', 'Q3', 'Q4'];\n protected readonly todayQuarterIndex = computed(() => {\n const today = new Date();\n return Math.floor(today.getMonth() / 3);\n });\n\n protected readonly selectedQuarterIndex = computed(() => {\n const date = this._selectedDate();\n return date ? Math.floor(date.getMonth() / 3) : -1;\n });\n\n protected readonly isSameDayRange = computed(() => {\n if (!this.isRangeMode()) {\n return false;\n }\n const start = this._rangeStart();\n const end = this._rangeEnd();\n if (!start || !end) {\n return false;\n }\n return isSameDay(start, end);\n });\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly isRangeMode = computed(() => this.zMode() === 'range');\n protected readonly canApply = computed(() => {\n if (this.isTimeMode()) {\n return true;\n }\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly showOkButton = computed(() => this.zShowOk() || this.zShowTime() || this.isTimeMode());\n\n protected readonly showCancelButton = computed(() => this.zShowCancel() || this.zShowTime() || this.isTimeMode());\n\n protected readonly isTimeMode = computed(() => this.zMode() === 'time');\n protected readonly isMonthMode = computed(() => this.zMode() === 'month');\n protected readonly isYearMode = computed(() => this.zMode() === 'year');\n protected readonly isQuarterMode = computed(() => this.zMode() === 'quarter');\n\n protected readonly todayButtonText = computed(() => {\n this._zTranslate.currentLang();\n if (this.isQuarterMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_this_quarter');\n }\n if (this.isYearMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_this_year');\n }\n if (this.isMonthMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_this_month');\n }\n if (this.zShowTime() || this.isTimeMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_now');\n }\n return this._zTranslate.instant('i18n_z_ui_calendar_today');\n });\n\n protected readonly currentMonth = computed(() => this._currentMonth());\n protected readonly currentYear = computed(() => this._currentMonth().getFullYear());\n protected readonly currentMonthIndex = computed(() => this._currentMonth().getMonth());\n\n protected readonly todayMonthIndex = computed(() => new Date().getMonth());\n protected readonly todayYear = computed(() => new Date().getFullYear());\n protected readonly selectedMonthIndex = computed(() => {\n const date = this._selectedDate();\n return date ? date.getMonth() : -1;\n });\n\n protected readonly selectedYear = computed(() => {\n const date = this._selectedDate();\n return date ? date.getFullYear() : -1;\n });\n\n protected readonly endTimeContext = computed<ZEndTimeContext>(() => ({\n isSameDay: this.isSameDayRange(),\n startHour: this.hour(),\n startMinute: this.minute(),\n startSecond: this.second(),\n endHour: this._hourEnd(),\n endMinute: this._minuteEnd(),\n timeFormat: this.zTimeFormat(),\n startPeriod: this.period(),\n endPeriod: this._periodEnd(),\n }));\n\n protected readonly startMonthDisabledContext = computed<ZMonthDisabledContext>(() => ({\n currentYear: this._currentMonth().getFullYear(),\n endYear: this._endMonth().getFullYear(),\n endMonthIndex: this._endMonth().getMonth(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly endMonthDisabledContext = computed<ZEndMonthDisabledContext>(() => ({\n startYear: this._currentMonth().getFullYear(),\n startMonthIndex: this._currentMonth().getMonth(),\n endYear: this._endMonth().getFullYear(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly startYearDisabledContext = computed<ZYearDisabledContext>(() => ({\n endYear: this._endMonth().getFullYear(),\n startMonthIndex: this._currentMonth().getMonth(),\n endMonthIndex: this._endMonth().getMonth(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly endYearDisabledContext = computed<ZEndYearDisabledContext>(() => ({\n startYear: this._currentMonth().getFullYear(),\n startMonthIndex: this._currentMonth().getMonth(),\n endMonthIndex: this._endMonth().getMonth(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly currentMonthName = computed(() => {\n const month = this._currentMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'short' });\n });\n\n protected readonly yearRange = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 12);\n });\n\n protected readonly yearRangeSmall = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 9);\n });\n\n protected readonly calendarDays = computed<ZCalendarDay[][]>(() => {\n const month = this._currentMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this.hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly endMonth = computed(() => this._endMonth());\n\n protected readonly endMonthName = computed(() => {\n const month = this._endMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'short' });\n });\n\n protected readonly endMonthYear = computed(() => this._endMonth().getFullYear());\n\n protected readonly calendarDaysEnd = computed<ZCalendarDay[][]>(() => {\n const month = this._endMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this.hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly formattedHourEnd = computed(() =>\n formatTimeValue(this.zTimeFormat() === '12h' ? this._hourEnd() % 12 || 12 : this._hourEnd())\n );\n\n protected readonly formattedMinuteEnd = computed(() => formatTimeValue(this._minuteEnd()));\n protected readonly formattedSecondEnd = computed(() => formatTimeValue(this._secondEnd()));\n\n protected readonly minuteEnd = computed(() => this._minuteEnd());\n protected readonly secondEnd = computed(() => this._secondEnd());\n\n protected readonly periodEnd = computed(() => this._periodEnd());\n\n protected readonly endYearRange = computed(() => {\n const currentYear = this._endMonth().getFullYear();\n return getYearRange(currentYear);\n });\n\n protected readonly canNavigateStartNext = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const current = this._currentMonth();\n const end = this._endMonth();\n const view = this.currentView();\n\n if (view === 'day') {\n const startNext = addMonths(current, 1);\n return (\n startNext.getFullYear() < end.getFullYear() ||\n (startNext.getFullYear() === end.getFullYear() && startNext.getMonth() < end.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const startNextYear = addYears(current, 1);\n return startNextYear.getFullYear() < end.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(current.getFullYear());\n const lastYearInRange = yearRange[yearRange.length - 1];\n return lastYearInRange < end.getFullYear() - 1;\n }\n\n return true;\n });\n\n protected readonly canNavigateEndPrev = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const start = this._currentMonth();\n const end = this._endMonth();\n const view = this.endView();\n\n if (view === 'day') {\n const endPrev = addMonths(end, -1);\n return (\n endPrev.getFullYear() > start.getFullYear() ||\n (endPrev.getFullYear() === start.getFullYear() && endPrev.getMonth() > start.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const endPrevYear = addYears(end, -1);\n return endPrevYear.getFullYear() > start.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(end.getFullYear());\n const firstYearInRange = yearRange[0];\n return firstYearInRange > start.getFullYear() + 1;\n }\n\n return true;\n });\n\n protected readonly displayValue = computed(() => {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return this._formatDisplayValue(timeFormat + periodSuffix);\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return this._formatDisplayValue(`${format} ${timeFormat}${periodSuffix}`);\n }\n\n return this._formatDisplayValue(format);\n });\n\n private _formatDisplayValue(format: string): string {\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return '';\n }\n\n return `${formatDate(start, format, this.zLocale())} - ${formatDate(end, format, this.zLocale())}`;\n }\n\n const date = this._selectedDate();\n if (!date) {\n return '';\n }\n\n if (this.isMonthMode()) {\n return formatDate(date, this.zFormat(), this.zLocale());\n }\n if (this.isYearMode()) {\n return date.getFullYear().toString();\n }\n if (this.isQuarterMode()) {\n const quarter = Math.floor(date.getMonth() / 3) + 1;\n return `Q${quarter} ${date.getFullYear()}`;\n }\n\n return formatDate(date, format, this.zLocale());\n }\n\n private readonly _inputDisplayStart = signal<string>('');\n private readonly _inputDisplayEnd = signal<string>('');\n\n protected readonly inputDisplayStart = computed(() => this._inputDisplayStart());\n protected readonly inputDisplayEnd = computed(() => this._inputDisplayEnd());\n\n protected readonly displayValueStart = computed(() => {\n const format = this._getDisplayFormatStart();\n const start = this._rangeStart();\n return start ? formatDate(start, format, this.zLocale()) : '';\n });\n\n protected readonly displayValueEnd = computed(() => {\n const format = this._getDisplayFormatEnd();\n const end = this._rangeEnd();\n return end ? formatDate(end, format, this.zLocale()) : '';\n });\n\n private _getDisplayFormatStart(): string {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return timeFormat + periodSuffix;\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return `${format} ${timeFormat}${periodSuffix}`;\n }\n\n return format;\n }\n\n private _getDisplayFormatEnd(): string {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._periodEnd()}` : '';\n return timeFormat + periodSuffix;\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._periodEnd()}` : '';\n return `${format} ${timeFormat}${periodSuffix}`;\n }\n\n return format;\n }\n\n protected readonly showClearButton = computed(() => {\n if (!this.zAllowClear() || this.isDisabled() || this.zReadonly() || this.isOpen()) {\n return false;\n }\n\n return this.displayValue() !== '';\n });\n\n protected readonly hasValue = computed(() => {\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n if (this.zReadonly()) {\n return 'readonly';\n }\n if (this.isOpen()) {\n return 'open';\n }\n if (this.hasError()) {\n return 'error';\n }\n return 'default';\n });\n\n protected readonly triggerClasses = computed(() =>\n zMergeClasses(\n zCalendarVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus() as 'default' | 'open' | 'error' | 'disabled' | 'readonly',\n }),\n this.class()\n )\n );\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (control) {\n return control.dirty;\n }\n return this._dirty() || this._touched();\n });\n\n protected readonly hasError = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly showError = computed(() => this.hasError());\n\n protected readonly errorMessage = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n\n if (!errors) {\n return '';\n }\n\n const validators = this.zValidators();\n for (const validator of validators) {\n if (errors[validator.error]) {\n return validator.message;\n }\n }\n\n if (errors['required']) {\n this._zTranslate.currentLang();\n return this._zTranslate.instant('i18n_z_ui_calendar_required');\n }\n return '';\n });\n\n public readonly state = computed<ZCalendarState>(() => ({\n focused: this.uiState().isFocused,\n touched: this._touched(),\n blurred: !this.uiState().isFocused,\n dirty: this._dirty(),\n disabled: this.isDisabled(),\n readonly: this.zReadonly(),\n open: this.isOpen(),\n }));\n\n constructor() {\n effect(() => {\n const date = this._selectedDate();\n if (date && this.zShowTime()) {\n this.hour.set(date.getHours());\n this.minute.set(date.getMinutes());\n this.second.set(date.getSeconds());\n }\n });\n\n effect(() => {\n this.zLocale();\n this._updateInputDisplay();\n });\n }\n\n ngOnInit(): void {\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n if (!this._ngControl?.control) {\n return;\n }\n\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(control.statusChanges, control.valueChanges, control.events)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n });\n } catch {\n this._ngControl = null;\n }\n });\n\n this._emitControl();\n }\n\n public writeValue(value: ZCalendarValue): void {\n if (value === null || value === undefined) {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n\n const valueType = this.zValueType();\n if (this.isRangeMode()) {\n if (typeof value === 'object' && 'start' in value && 'end' in value) {\n const range = value as ZDateRange;\n this._rangeStart.set(range.start);\n this._rangeEnd.set(range.end);\n\n if (range.start && range.end) {\n this._currentMonth.set(range.start);\n this._endMonth.set(isSameMonth(range.start, range.end) ? addMonths(range.end, 1) : range.end);\n if (this.zShowTime()) {\n this._syncTimeSignals(range.start);\n this._syncEndTimeSignals(range.end);\n }\n }\n\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n return;\n }\n\n let date: Date | null = null;\n if (value instanceof Date) {\n date = value;\n }\n\n if (!date && typeof value === 'string') {\n date = valueType === 'iso' ? fromISOString(value) : parseDate(value, this.zFormat());\n }\n\n if (!date) {\n return;\n }\n\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._updateInputDisplay();\n }\n\n public registerOnChange(fn: (value: ZCalendarValue) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public open(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n this._popoverControl()?.show();\n }\n\n public close(): void {\n this._popoverControl()?.close();\n }\n\n public toggle(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n const popover = this._popoverControl();\n if (!popover) {\n return;\n }\n\n if (popover.isVisible()) {\n if (!this.showCancelButton()) {\n this.close();\n }\n return;\n }\n\n this.open();\n }\n\n public clear(): void {\n this.onClear(new MouseEvent('click'));\n }\n\n public focus(): void {\n this.triggerRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this.triggerRef()?.nativeElement.blur();\n }\n\n public reset(): void {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this._touched.set(false);\n this._dirty.set(false);\n this.inputDisplayValue.set('');\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsPristine();\n this._ngControl.control.markAsUntouched();\n }\n }\n\n public validate(): void {\n this._touched.set(true);\n this._dirty.set(true);\n this._onTouched();\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsDirty();\n this._ngControl.control.markAsTouched();\n }\n }\n\n public markAsTouched(): void {\n this._touched.set(true);\n this._onTouched();\n }\n\n public markAsUntouched(): void {\n this._touched.set(false);\n }\n\n public markAsDirty(): void {\n this._dirty.set(true);\n }\n\n public markAsPristine(): void {\n this._dirty.set(false);\n }\n\n protected onPopoverShow(): void {\n this.uiState.update(s => ({ ...s, isFocused: true, hasViewChanged: false, hasEndViewChanged: false }));\n this._backupIfNeeded();\n this._appliedViaOk.set(false);\n\n if (this.isMonthMode()) {\n this.currentView.set('month');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isYearMode()) {\n this.currentView.set('year');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isQuarterMode()) {\n this.currentView.set('quarter');\n this._initializeTimeIfNeeded();\n return;\n }\n\n this.currentView.set('day');\n this._initializeTimeIfNeeded();\n\n if (this.isRangeMode()) {\n this.endView.set('day');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n if (!this.isRangeMode()) {\n this.activePresetKey.set(null);\n const selected = this._selectedDate();\n if (selected) {\n this._currentMonth.set(selected);\n return;\n }\n this._resetCalendarsToDefault();\n return;\n }\n\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (start && end) {\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this.activePresetKey.set(this._detectMatchingPreset(start, end));\n return;\n }\n\n if (this.zQuickSelect()) {\n this.activePresetKey.set(null);\n this._resetCalendarsToDefault();\n return;\n }\n\n this.activePresetKey.set(null);\n this._resetCalendarsToDefault();\n }\n\n private _initializeTimeIfNeeded(): void {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return;\n }\n\n const now = new Date();\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n this._syncTimeSignals(start ?? now);\n this._syncEndTimeSignals(end ?? now);\n return;\n }\n\n const selected = this._selectedDate();\n this._syncTimeSignals(selected ?? now);\n }\n\n private _syncEndTimeSignals(date: Date): void {\n const hours = date.getHours();\n this._hourEnd.set(hours);\n this._minuteEnd.set(date.getMinutes());\n this._secondEnd.set(date.getSeconds());\n this._periodEnd.set(hours >= 12 ? 'PM' : 'AM');\n }\n\n private _resetCalendarsToDefault(): void {\n const today = getToday();\n this._currentMonth.set(today);\n this._endMonth.set(addMonths(today, 1));\n this.currentView.set('day');\n this.endView.set('day');\n }\n\n private _backupIfNeeded(): void {\n this._backupSelectedDate.set(this._selectedDate());\n this._backupRangeStart.set(this._rangeStart());\n this._backupRangeEnd.set(this._rangeEnd());\n }\n\n protected onPopoverHide(): void {\n this.uiState.update(s => ({ ...s, isFocused: false }));\n this.hoveredDate.set(null);\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n if (needsConfirmation && !this._appliedViaOk()) {\n this._restoreFromBackup();\n }\n\n if (this.isRangeMode()) {\n const hasIncompleteRange = this._rangeStart() && !this._rangeEnd();\n if (hasIncompleteRange) {\n this._restoreFromBackup();\n this._dirty.set(false);\n }\n }\n\n if (this._dirty()) {\n this._touched.set(true);\n }\n\n this._onTouched();\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n this.triggerRef()?.nativeElement.blur();\n }\n\n private _restoreFromBackup(): void {\n this._selectedDate.set(this._backupSelectedDate());\n this._rangeStart.set(this._backupRangeStart());\n this._rangeEnd.set(this._backupRangeEnd());\n this._dirty.set(false);\n\n if (this.isRangeMode()) {\n const backupStart = this._backupRangeStart();\n const backupEnd = this._backupRangeEnd();\n if (backupStart) {\n this._syncTimeSignals(backupStart);\n }\n if (backupEnd) {\n this._syncEndTimeSignals(backupEnd);\n }\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n const backup = this._backupSelectedDate();\n if (backup) {\n this._syncTimeSignals(backup);\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n protected onPopoverControl(control: ZPopoverControl): void {\n this._popoverControl.set(control);\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this._popoverControl()?.toggle();\n return;\n }\n\n if (event.key === 'Escape' && this.isOpen()) {\n event.preventDefault();\n this._cancelAndRestore();\n }\n }\n\n protected onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this.inputDisplayValue.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n if (this.isRangeMode()) {\n const parts = trimmedValue.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start) {\n this._rangeStart.set(start);\n this._currentMonth.set(start);\n }\n if (end) {\n this._rangeEnd.set(end);\n this._endMonth.set(end);\n }\n }\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (date) {\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n }\n\n private _getExpectedFormatLength(format: string): number {\n return format.replace(/\\[.*?\\]/g, ' ').length;\n }\n\n protected onStartInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayStart.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n this._inputDisplayStart.set(this.displayValueStart());\n return;\n }\n\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n\n protected onEndInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayEnd.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n }\n\n protected onStartInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n }\n }\n\n protected onEndInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n this._dirty.set(true);\n this._inputDisplayEnd.set(this.displayValueEnd());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n }\n }\n\n protected onInputFocus(_event: FocusEvent): void {\n this._backupSelectedDate.set(this._selectedDate());\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this._skipBlurHandler()) {\n this._skipBlurHandler.set(false);\n return;\n }\n\n if (this.isRangeMode()) {\n return;\n }\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n\n if (needsConfirmation && this.isOpen()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n const currentValue = input.value.trim();\n const format = this._getParseFormat();\n\n if (!currentValue) {\n this._selectedDate.set(null);\n this._backupSelectedDate.set(null);\n this.inputDisplayValue.set('');\n this._applyValue();\n return;\n }\n\n const parsed = parseDate(currentValue, format);\n if (parsed) {\n this._selectedDate.set(parsed);\n this._currentMonth.set(parsed);\n this._syncTimeSignals(parsed);\n this._backupSelectedDate.set(parsed);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n return;\n }\n\n const backup = this._backupSelectedDate();\n this._selectedDate.set(backup);\n this.inputDisplayValue.set(this.displayValue());\n }\n\n protected onInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n\n if (!value) {\n this._skipBlurHandler.set(true);\n this._clearDateValues();\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n const format = this._getParseFormat();\n if (this.isRangeMode()) {\n const parts = value.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start && end) {\n this._skipBlurHandler.set(true);\n const swapped = start > end;\n const rangeStart = swapped ? end : start;\n const rangeEnd = swapped ? start : end;\n this._rangeStart.set(rangeStart);\n this._rangeEnd.set(rangeEnd);\n this._currentMonth.set(rangeStart);\n this._endMonth.set(rangeEnd);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n }\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n return;\n }\n\n const date = parseDate(value, format);\n if (date) {\n this._skipBlurHandler.set(true);\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n }\n\n protected onCalendarKeydown(event: KeyboardEvent): void {\n const { key, target } = event;\n\n if (key === 'Escape') {\n event.preventDefault();\n this._cancelAndRestore();\n return;\n }\n\n if (this.currentView() !== 'day') {\n return;\n }\n\n if (key === 'Enter') {\n if (target instanceof HTMLInputElement) {\n return;\n }\n if (!this.isRangeMode() || this.zShowTime()) {\n this.onOkClick();\n }\n return;\n }\n\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n event.preventDefault();\n this._navigateByArrowKey(key);\n }\n }\n\n protected onDayClick(day: ZCalendarDay): void {\n if (day.isDisabled) {\n return;\n }\n\n const clickedDate = day.date;\n\n if (this.isRangeMode()) {\n this._handleRangeSelection(clickedDate);\n return;\n }\n\n this._handleSingleSelection(clickedDate);\n }\n\n protected onDayHover(day: ZCalendarDay): void {\n if (this.isRangeMode() && this._rangeStart() && !this._rangeEnd()) {\n this.hoveredDate.set(day.date);\n }\n }\n\n protected onDayLeave(): void {\n if (this.isRangeMode()) {\n this.hoveredDate.set(null);\n }\n }\n\n protected onMonthClick(monthIndex: number): void {\n const currentDate = this._currentMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n if (this.isRangeMode()) {\n const endMonth = this._endMonth();\n const isExceedingEnd =\n newMonth.getFullYear() > endMonth.getFullYear() ||\n (newMonth.getFullYear() === endMonth.getFullYear() && newMonth.getMonth() >= endMonth.getMonth());\n\n if (isExceedingEnd) {\n newMonth = addMonths(endMonth, -1);\n }\n }\n\n this._currentMonth.set(newMonth);\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n this.currentView.set('day');\n }\n\n protected onYearClick(year: number): void {\n const currentDate = this._currentMonth();\n\n if (this.isYearMode()) {\n this._selectedDate.set(setYear(new Date(year, 0, 1), year));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n let newYear = year;\n\n if (this.isRangeMode()) {\n const endYear = this._endMonth().getFullYear();\n if (newYear >= endYear) {\n newYear = endYear - 1;\n }\n }\n\n this._currentMonth.set(setYear(currentDate, newYear));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n this.currentView.set(this.isQuarterMode() ? 'quarter' : 'month');\n }\n\n protected onQuarterClick(quarterIndex: number): void {\n const currentYear = this._currentMonth().getFullYear();\n const firstMonthOfQuarter = quarterIndex * 3;\n const date = new Date(currentYear, firstMonthOfQuarter, 1);\n this._selectedDate.set(date);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n }\n\n protected onMonthSelect(monthIndex: number): void {\n if (this.isMonthMode()) {\n const currentYear = this._currentMonth().getFullYear();\n this._selectedDate.set(new Date(currentYear, monthIndex, 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n this.onMonthClick(monthIndex);\n }\n\n protected onQuickSelect(preset: ZQuickSelectPreset): void {\n this.activePresetKey.set(preset.key);\n if (preset.key === 'custom') {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n return;\n }\n\n const value = preset.getValue();\n if (!value) {\n return;\n }\n\n if (value instanceof Date) {\n this._rangeStart.set(value);\n this._rangeEnd.set(value);\n this._currentMonth.set(value);\n this._endMonth.set(addMonths(value, 1));\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n this._rangeStart.set(value.start);\n this._rangeEnd.set(value.end);\n\n const start = value.start ?? getToday();\n const end = value.end ?? getToday();\n\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onTodayClick(): void {\n const now = new Date();\n const today = getToday();\n this._currentMonth.set(today);\n\n if (this.zShowTime() || this.isTimeMode()) {\n this.hour.set(now.getHours());\n this.minute.set(now.getMinutes());\n this.second.set(now.getSeconds());\n this.period.set(now.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n if (this.isMonthMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), now.getMonth(), 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isYearMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), 0, 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isQuarterMode()) {\n const currentQuarter = Math.floor(now.getMonth() / 3);\n this._selectedDate.set(new Date(now.getFullYear(), currentQuarter * 3, 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isTimeMode()) {\n this._selectedDate.set(now);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n if (this.isRangeMode()) {\n const rangeDate = this.zShowTime() ? now : today;\n this._rangeStart.set(rangeDate);\n this._rangeEnd.set(rangeDate);\n this._endMonth.set(addMonths(today, 1));\n if (this.zShowTime()) {\n this._syncEndTimeSignals(now);\n }\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n const selectedDate = this.zShowTime() ? now : today;\n this._selectedDate.set(selectedDate);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onClear(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this._dirty.set(true);\n\n this._backupSelectedDate.set(null);\n this._backupRangeStart.set(null);\n this._backupRangeEnd.set(null);\n this._appliedViaOk.set(true);\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this.inputDisplayValue.set('');\n if (this.isRangeMode()) {\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n }\n\n this.close();\n }\n\n protected onCancelClick(): void {\n this.close();\n }\n\n protected onOkClick(): void {\n if (!this.canApply()) {\n return;\n }\n\n if (this.isTimeMode()) {\n let hour = this.hour();\n if (this.zTimeFormat() === '12h') {\n if (this.period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this.period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n const baseDate = this._selectedDate() ?? new Date();\n this._selectedDate.set(setTime(baseDate, hour, this.minute(), this.second()));\n }\n\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n }\n\n protected navigatePrevious(): void {\n const view = this.currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, -1),\n month: addYears(current, -1),\n year: addYears(current, -yearStep),\n quarter: addYears(current, -1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigateNext(): void {\n const view = this.currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, 1),\n month: addYears(current, 1),\n year: addYears(current, yearStep),\n quarter: addYears(current, 1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigatePreviousFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, -1));\n }\n\n protected navigateNextFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, 1));\n }\n\n protected setView(view: ZCalendarView): void {\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n this.currentView.set(view);\n }\n\n protected setEndView(view: ZCalendarView): void {\n this.uiState.update(s => ({ ...s, hasEndViewChanged: true }));\n this.endView.set(view);\n }\n\n protected onEndMonthClick(monthIndex: number): void {\n const currentDate = this._endMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n const startMonth = this._currentMonth();\n const isBeforeStart =\n newMonth.getFullYear() < startMonth.getFullYear() ||\n (newMonth.getFullYear() === startMonth.getFullYear() && newMonth.getMonth() <= startMonth.getMonth());\n\n if (isBeforeStart) {\n newMonth = addMonths(startMonth, 1);\n }\n\n this._endMonth.set(newMonth);\n this.uiState.update(s => ({ ...s, hasEndViewChanged: true }));\n this.endView.set('day');\n }\n\n protected onEndYearClick(year: number): void {\n const currentDate = this._endMonth();\n let newYear = year;\n\n const startYear = this._currentMonth().getFullYear();\n if (newYear <= startYear) {\n newYear = startYear + 1;\n }\n\n this._endMonth.set(setYear(currentDate, newYear));\n this.uiState.update(s => ({ ...s, hasEndViewChanged: true }));\n this.endView.set('month');\n }\n\n protected onHourInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this.hour.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected onMinuteInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this.minute.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected onSecondInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this.second.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected onTimeBlur(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n const digits = input.value.replace(/\\D/g, '');\n\n if (digits.length > 0 && digits.length <= 2) {\n if (dataType === 'hour') {\n const value = parseTimeValue(digits, this.zTimeFormat() === '12h' ? 12 : 23);\n this.hour.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n if (dataType === 'minute') {\n const value = parseTimeValue(digits, 59);\n this.minute.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n if (dataType === 'second') {\n const value = parseTimeValue(digits, 59);\n this.second.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n }\n\n if (dataType === 'hour') {\n input.value = this.formattedHour();\n }\n if (dataType === 'minute') {\n input.value = this.formattedMinute();\n }\n if (dataType === 'second') {\n input.value = this.formattedSecond();\n }\n }\n\n protected navigateEndPrevious(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, -1));\n }\n\n protected navigateEndNext(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, 1));\n }\n\n protected navigateEndPreviousFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, -1));\n }\n\n protected navigateEndNextFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, 1));\n }\n\n protected onHourEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this._hourEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onMinuteEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._minuteEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onSecondEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._secondEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onTimeBlurEnd(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n const digits = input.value.replace(/\\D/g, '');\n\n if (digits.length > 0 && digits.length <= 2) {\n if (dataType === 'hour-end') {\n const value = parseTimeValue(digits, this.zTimeFormat() === '12h' ? 12 : 23);\n this._hourEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n if (dataType === 'minute-end') {\n const value = parseTimeValue(digits, 59);\n this._minuteEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n if (dataType === 'second-end') {\n const value = parseTimeValue(digits, 59);\n this._secondEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n if (dataType === 'hour-end') {\n input.value = this.formattedHourEnd();\n }\n if (dataType === 'minute-end') {\n input.value = this.formattedMinuteEnd();\n }\n if (dataType === 'second-end') {\n input.value = this.formattedSecondEnd();\n }\n }\n\n protected togglePeriodEnd(): void {\n const currentPeriod = this._periodEnd();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this._periodEnd.set(newPeriod);\n\n const currentHour = this._hourEnd();\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hourEnd.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hourEnd.set(currentHour - 12);\n }\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n private _updateEndTimeToDate(): void {\n const end = this._rangeEnd();\n if (!end) {\n return;\n }\n\n let hour = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n const newDate = setTime(end, hour, this._minuteEnd(), this._secondEnd());\n this._rangeEnd.set(newDate);\n this._dirty.set(true);\n }\n\n private _resolveDefaultTime(config: ZCalendarDefaultTime | null | undefined): ZCalendarTimeConfig {\n if (!config) {\n return { hour: this.hour(), minute: this.minute(), second: this.second() };\n }\n\n if (typeof config === 'object') {\n return config;\n }\n\n switch (config) {\n case 'current': {\n const now = new Date();\n return { hour: now.getHours(), minute: now.getMinutes(), second: now.getSeconds() };\n }\n case 'start':\n return { hour: 0, minute: 0, second: 0 };\n case 'end':\n return { hour: 23, minute: 59, second: this.zShowSecond() ? 59 : 0 };\n default:\n return { hour: this.hour(), minute: this.minute(), second: this.second() };\n }\n }\n\n private _resolveRangeStartTime(): ZCalendarTimeConfig {\n const rangeConfig = this.zRangeDefaultTime();\n if (rangeConfig?.start) {\n return this._resolveDefaultTime(rangeConfig.start);\n }\n return this._resolveDefaultTime(this.zDefaultTime());\n }\n\n private _resolveRangeEndTime(): ZCalendarTimeConfig {\n const rangeConfig = this.zRangeDefaultTime();\n if (rangeConfig?.end) {\n return this._resolveDefaultTime(rangeConfig.end);\n }\n return this._resolveDefaultTime(this.zDefaultTime());\n }\n\n private _handleSingleSelection(date: Date): void {\n let finalDate = date;\n const shouldApplyTime = this.zShowTime() || hasTimeTokens(this.zFormat());\n\n if (shouldApplyTime) {\n const defaultTime = this._resolveDefaultTime(this.zDefaultTime());\n this.hour.set(defaultTime.hour);\n this.minute.set(defaultTime.minute);\n this.second.set(defaultTime.second);\n if (this.zTimeFormat() === '12h') {\n this.period.set(defaultTime.hour >= 12 ? 'PM' : 'AM');\n }\n finalDate = setTime(date, defaultTime.hour, defaultTime.minute, defaultTime.second);\n }\n\n this._selectedDate.set(finalDate);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n\n if (!this.zShowTime() && !this.zShowOk()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _handleRangeSelection(date: Date): void {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n const shouldApplyTime = this.zShowTime() || hasTimeTokens(this.zFormat());\n\n if (!start || (start && end)) {\n let startDate = date;\n if (shouldApplyTime) {\n const defaultTime = this._resolveRangeStartTime();\n this.hour.set(defaultTime.hour);\n this.minute.set(defaultTime.minute);\n this.second.set(defaultTime.second);\n if (this.zTimeFormat() === '12h') {\n this.period.set(defaultTime.hour >= 12 ? 'PM' : 'AM');\n }\n startDate = setTime(date, defaultTime.hour, defaultTime.minute, defaultTime.second);\n }\n this._rangeStart.set(startDate);\n this._rangeEnd.set(null);\n this.activePresetKey.set('custom');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set('');\n return;\n }\n\n let endDate = date;\n if (shouldApplyTime) {\n const defaultTime = this._resolveRangeEndTime();\n this._hourEnd.set(defaultTime.hour);\n this._minuteEnd.set(defaultTime.minute);\n this._secondEnd.set(defaultTime.second);\n if (this.zTimeFormat() === '12h') {\n this._periodEnd.set(defaultTime.hour >= 12 ? 'PM' : 'AM');\n }\n endDate = setTime(date, defaultTime.hour, defaultTime.minute, defaultTime.second);\n }\n\n const normalized = normalizeRange(start, endDate);\n this._rangeStart.set(normalized.start);\n this._rangeEnd.set(normalized.end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (normalized.start && normalized.end) {\n this.activePresetKey.set(this._detectMatchingPreset(normalized.start, normalized.end));\n }\n\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _updateTimeToDate(): void {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return;\n }\n\n let hour = this.hour();\n if (this.zTimeFormat() === '12h') {\n if (this.period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this.period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n if (start) {\n this._rangeStart.set(setTime(start, hour, this.minute(), this.second()));\n this._dirty.set(true);\n }\n return;\n }\n\n const selected = this._selectedDate();\n if (selected) {\n this._selectedDate.set(setTime(selected, hour, this.minute(), this.second()));\n }\n }\n\n private _detectMatchingPreset(start: Date, end: Date): string | null {\n for (const preset of this.quickSelectPresets) {\n if (preset.key === 'custom') {\n continue;\n }\n const value = preset.getValue();\n if (value && !(value instanceof Date)) {\n if (value.start && value.end && isSameDay(start, value.start) && isSameDay(end, value.end)) {\n return preset.key;\n }\n }\n }\n return 'custom';\n }\n\n private _applyValue(): void {\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _getEmitValue(): ZCalendarValue {\n const valueType = this.zValueType();\n const format = this.zShowTime() ? `${this.zFormat()} HH:mm:ss` : this.zFormat();\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return null;\n }\n\n if (valueType === 'iso') {\n return { start: toISOString(start), end: toISOString(end) } as unknown as ZCalendarValue;\n }\n\n if (valueType === 'string') {\n return {\n start: formatDate(start, format, this.zLocale()),\n end: formatDate(end, format, this.zLocale()),\n } as unknown as ZCalendarValue;\n }\n\n return { start, end };\n }\n\n const date = this._selectedDate();\n if (!date) {\n return null;\n }\n\n if (valueType === 'iso') {\n return toISOString(date);\n }\n if (valueType === 'string') {\n return formatDate(date, format, this.zLocale());\n }\n\n return date;\n }\n\n private _getValidationErrors(): string[] {\n const validators = this.zValidators();\n const errors: string[] = [];\n\n if (!this._shouldShowValidation()) {\n return errors;\n }\n\n const isRequired = this.zRequired() || this._formControl()?.errors?.['required'];\n if (isRequired) {\n const hasValidValue = this.isRangeMode() ? !!(this._rangeStart() && this._rangeEnd()) : !!this._selectedDate();\n if (!hasValidValue) {\n errors.push(this._zTranslate.instant('i18n_z_ui_calendar_required'));\n }\n }\n\n const value = this._getEmitValue();\n for (const validator of validators) {\n if (!validator.validate(value)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n private _navigateByArrowKey(key: string): void {\n const currentDate = this._selectedDate() ?? getToday();\n let newDate: Date;\n\n switch (key) {\n case 'ArrowUp':\n newDate = addDays(currentDate, -7);\n break;\n case 'ArrowDown':\n newDate = addDays(currentDate, 7);\n break;\n case 'ArrowLeft':\n newDate = addDays(currentDate, -1);\n break;\n case 'ArrowRight':\n newDate = addDays(currentDate, 1);\n break;\n default:\n return;\n }\n\n const minDate = this.zMinDate();\n const maxDate = this.zMaxDate();\n\n if (minDate && newDate < minDate) {\n return;\n }\n if (maxDate && newDate > maxDate) {\n return;\n }\n\n this._selectedDate.set(newDate);\n\n if (!isSameMonth(newDate, this._currentMonth())) {\n this._currentMonth.set(newDate);\n }\n }\n\n private _syncTimeSignals(date: Date): void {\n this.hour.set(date.getHours());\n this.minute.set(date.getMinutes());\n this.second.set(date.getSeconds());\n this.period.set(date.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n private _getParseFormat(): string {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return this.zFormat();\n }\n\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n\n const timeFormat = timeParts.join(':');\n if (this.isTimeMode()) {\n return timeFormat;\n }\n return `${this.zFormat()} ${timeFormat}`;\n }\n\n private _updateInputDisplay(): void {\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _clearDateValues(): void {\n if (this.isRangeMode()) {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n this._selectedDate.set(null);\n }\n\n protected onInputEscape(): void {\n this._cancelAndRestore();\n }\n\n protected onStartInputEscape(): void {\n this._cancelAndRestore();\n }\n\n protected onEndInputEscape(): void {\n this._cancelAndRestore();\n }\n\n private _cancelAndRestore(): void {\n this._restoreFromBackup();\n this._updateAllInputDisplays();\n this.close();\n }\n\n private _updateAllInputDisplays(): void {\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n validate: () => this.validate(),\n reset: () => this.reset(),\n focus: () => this.focus(),\n blur: () => this.blur(),\n open: () => this.open(),\n close: () => this.close(),\n clear: () => this.clear(),\n markAsTouched: () => this.markAsTouched(),\n markAsUntouched: () => this.markAsUntouched(),\n markAsDirty: () => this.markAsDirty(),\n markAsPristine: () => this.markAsPristine(),\n hasError: this.hasError,\n isOpen: this.isOpen,\n value: computed(() => this._getEmitValue()),\n errorMessage: this.errorMessage,\n state: this.state,\n });\n }\n\n protected togglePeriod(): void {\n const currentPeriod = this.period();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this.period.set(newPeriod);\n\n const currentHour = this.hour();\n if (newPeriod === 'PM' && currentHour < 12) {\n this.hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this.hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected incrementHour(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHour();\n currentHour = currentHour >= maxHour ? minHour : currentHour + 1;\n this.selectHour(currentHour, true);\n }\n\n protected decrementHour(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHour();\n currentHour = currentHour <= minHour ? maxHour : currentHour - 1;\n this.selectHour(currentHour, true);\n }\n\n protected incrementMinute(): void {\n let currentMinute = this.minute();\n currentMinute = currentMinute >= 59 ? 0 : currentMinute + 1;\n this.selectMinute(currentMinute, true);\n }\n\n protected decrementMinute(): void {\n let currentMinute = this.minute();\n currentMinute = currentMinute <= 0 ? 59 : currentMinute - 1;\n this.selectMinute(currentMinute, true);\n }\n\n protected incrementSecond(): void {\n let currentSecond = this.second();\n currentSecond = currentSecond >= 59 ? 0 : currentSecond + 1;\n this.selectSecond(currentSecond, true);\n }\n\n protected decrementSecond(): void {\n let currentSecond = this.second();\n currentSecond = currentSecond <= 0 ? 59 : currentSecond - 1;\n this.selectSecond(currentSecond, true);\n }\n\n protected incrementHourEnd(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHourEnd();\n currentHour = currentHour >= maxHour ? minHour : currentHour + 1;\n this.selectHourEnd(currentHour, true);\n }\n\n protected decrementHourEnd(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHourEnd();\n currentHour = currentHour <= minHour ? maxHour : currentHour - 1;\n this.selectHourEnd(currentHour, true);\n }\n\n protected incrementMinuteEnd(): void {\n let currentMinute = this._minuteEnd();\n currentMinute = currentMinute >= 59 ? 0 : currentMinute + 1;\n this.selectMinuteEnd(currentMinute, true);\n }\n\n protected decrementMinuteEnd(): void {\n let currentMinute = this._minuteEnd();\n currentMinute = currentMinute <= 0 ? 59 : currentMinute - 1;\n this.selectMinuteEnd(currentMinute, true);\n }\n\n protected incrementSecondEnd(): void {\n let currentSecond = this._secondEnd();\n currentSecond = currentSecond >= 59 ? 0 : currentSecond + 1;\n this.selectSecondEnd(currentSecond, true);\n }\n\n protected decrementSecondEnd(): void {\n let currentSecond = this._secondEnd();\n currentSecond = currentSecond <= 0 ? 59 : currentSecond - 1;\n this.selectSecondEnd(currentSecond, true);\n }\n\n protected openTimeDropdown(event: MouseEvent): void {\n event.stopPropagation();\n this.uiState.update(s => ({ ...s, timeDropdownOpen: true }));\n }\n\n protected closeTimeDropdown(): void {\n this.uiState.update(s => ({ ...s, timeDropdownOpen: false }));\n }\n\n protected openTimeDropdownEnd(event: MouseEvent): void {\n event.stopPropagation();\n this.uiState.update(s => ({ ...s, timeDropdownEndOpen: true }));\n }\n\n protected closeTimeDropdownEnd(): void {\n this.uiState.update(s => ({ ...s, timeDropdownEndOpen: false }));\n }\n\n protected onTimeDropdownShow(): void {\n this._scrollToTimeDropdown();\n }\n\n protected onTimeDropdownEndShow(): void {\n this._scrollToTimeDropdown(true);\n }\n\n private _scrollToTimeDropdown(isEnd = false): void {\n setTimeout(() => {\n const suffix = isEnd ? '-end' : '';\n\n if (this.zShowHour()) {\n this._scrollToTimeValue(`.z-time-scroll-hour${suffix}`);\n }\n\n if (this.zShowMinute()) {\n this._scrollToTimeValue(`.z-time-scroll-minute${suffix}`);\n }\n\n if (this.zShowSecond()) {\n this._scrollToTimeValue(`.z-time-scroll-second${suffix}`);\n }\n });\n }\n\n private _updateInputDisplayAfterTimeChange(): void {\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n return;\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n protected onPeriodChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newPeriod = select.value as 'AM' | 'PM';\n const currentHour = this.hour();\n\n this.period.set(newPeriod);\n if (newPeriod === 'PM' && currentHour < 12) {\n this.hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this.hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n }\n\n protected selectHour(hour: number, shouldScroll = false): void {\n let actualHour = hour;\n if (this.zTimeFormat() === '12h') {\n if (this.period() === 'PM' && hour !== 12) {\n actualHour = hour + 12;\n }\n if (this.period() === 'AM' && hour === 12) {\n actualHour = 0;\n }\n }\n this.hour.set(actualHour);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-hour');\n }\n }\n\n protected selectMinute(minute: number, shouldScroll = false): void {\n this.minute.set(minute);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-minute');\n }\n }\n\n protected selectSecond(second: number, shouldScroll = false): void {\n this.second.set(second);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-second');\n }\n }\n\n protected selectPeriod(period: 'AM' | 'PM'): void {\n if (this.period() === period) {\n return;\n }\n this.togglePeriod();\n }\n\n protected selectHourEnd(hour: number, shouldScroll = false): void {\n let actualHour = hour;\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour !== 12) {\n actualHour = hour + 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n actualHour = 0;\n }\n }\n this._hourEnd.set(actualHour);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-hour-end');\n }\n }\n\n protected selectMinuteEnd(minute: number, shouldScroll = false): void {\n this._minuteEnd.set(minute);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-minute-end');\n }\n }\n\n protected selectSecondEnd(second: number, shouldScroll = false): void {\n this._secondEnd.set(second);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-second-end');\n }\n }\n\n protected selectPeriodEnd(period: 'AM' | 'PM'): void {\n if (this._periodEnd() === period) {\n return;\n }\n this.togglePeriodEnd();\n }\n\n protected scrollToSelectedTime(container: HTMLElement | null, value: number, itemHeight = 28): void {\n if (!container) {\n return;\n }\n const scrollTop = value * itemHeight;\n container.scrollTo({ top: scrollTop, behavior: 'smooth' });\n }\n\n private _scrollToTimeValue(scrollbarSelector: string): void {\n setTimeout(() => {\n const scrollbar = document.querySelector(scrollbarSelector);\n if (!scrollbar) {\n return;\n }\n const selectedButton = scrollbar.querySelector('button.bg-primary');\n if (selectedButton) {\n selectedButton.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n });\n }\n}\n","<div class=\"z-calendar-wrapper flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"pickerId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <div\n #triggerEl\n z-popover\n [zPopoverContent]=\"calendarTpl\"\n zPosition=\"bottom-left\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"6\"\n [zDisabled]=\"isDisabled() || zReadonly()\"\n [zManualClose]=\"showCancelButton()\"\n [zScrollClose]=\"zScrollClose()\"\n zTrigger=\"click\"\n zClass=\"border-0 shadow-none bg-transparent p-0\"\n (zHideStart)=\"onPopoverHide()\"\n (zShow)=\"onPopoverShow()\"\n (zControl)=\"onPopoverControl($event)\"\n [id]=\"pickerId\"\n [class]=\"triggerClasses()\"\n (keydown)=\"onTriggerKeydown($event)\">\n <z-icon\n [zType]=\"isRangeMode() ? 'lucideCalendarRange' : 'lucideCalendar'\"\n zSize=\"16\"\n class=\"text-muted-foreground shrink-0 cursor-pointer\"\n (click)=\"$event.stopPropagation(); toggle()\" />\n\n @if (isRangeMode()) {\n <input\n type=\"text\"\n data-range-type=\"start\"\n class=\"placeholder:text-muted-foreground w-0 min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n [placeholder]=\"'i18n_z_ui_calendar_start_date' | translate\"\n [value]=\"inputDisplayStart()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onStartInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onStartInputEnter($event)\"\n (keydown.escape)=\"onStartInputEscape()\" />\n <span class=\"text-muted-foreground text-sm\">-</span>\n <input\n type=\"text\"\n data-range-type=\"end\"\n class=\"placeholder:text-muted-foreground w-0 min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n [placeholder]=\"'i18n_z_ui_calendar_end_date' | translate\"\n [value]=\"inputDisplayEnd()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onEndInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onEndInputEnter($event)\"\n (keydown.escape)=\"onEndInputEscape()\" />\n } @else {\n <input\n #inputEl\n type=\"text\"\n class=\"placeholder:text-muted-foreground w-0 min-w-0 flex-1 truncate bg-transparent text-sm outline-none\"\n [placeholder]=\"zPlaceholder()\"\n [value]=\"inputDisplayValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onInputEnter($event)\"\n (keydown.escape)=\"onInputEscape()\" />\n }\n\n @if (zAllowClear() && !isDisabled() && !zReadonly()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"text-muted-foreground hover:text-foreground flex size-5 shrink-0 cursor-pointer items-center justify-center rounded transition-all\"\n [class.opacity-0]=\"!hasValue()\"\n [class.pointer-events-none]=\"!hasValue()\"\n (click)=\"onClear($event)\">\n <z-icon zType=\"lucideX\" zSize=\"14\" />\n </button>\n }\n </div>\n </div>\n\n @if (showError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n</div>\n\n<ng-template #calendarTpl>\n <div\n class=\"z-calendar-calendar bg-popover border-border flex max-h-[50dvh] max-w-[95vw] flex-col overflow-auto rounded-[6px] border shadow-lg min-[480px]:max-h-[55dvh] sm:max-h-none sm:max-w-none sm:flex-row sm:overflow-visible\"\n (keydown)=\"onCalendarKeydown($event)\">\n @if (zQuickSelect() && zMode() === 'range') {\n <div\n class=\"border-border flex shrink-0 flex-row gap-1 overflow-x-auto border-b p-2 sm:flex-col sm:gap-0 sm:space-y-1 sm:overflow-x-visible sm:border-r sm:border-b-0\">\n @for (preset of quickSelectPresets; track preset.key) {\n @let presetDisabled = preset | zIsPresetDisabled: zDisabledDate();\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-[4px] px-3 py-1.5 text-left text-sm whitespace-nowrap transition-colors\"\n [class.hover:bg-muted]=\"activePresetKey() !== preset.key && !presetDisabled\"\n [class.bg-primary]=\"activePresetKey() === preset.key\"\n [class.text-primary-foreground]=\"activePresetKey() === preset.key\"\n [class.font-medium]=\"activePresetKey() === preset.key\"\n [class.opacity-40]=\"presetDisabled\"\n [class.cursor-not-allowed]=\"presetDisabled\"\n [disabled]=\"presetDisabled\"\n (click)=\"onQuickSelect(preset)\">\n {{ preset.label | translate }}\n </button>\n }\n </div>\n }\n <div\n class=\"flex flex-1 flex-col items-center overflow-auto py-2 sm:overflow-visible\"\n [class]=\"!isRangeMode() ? 'w-[280px]' : ''\">\n @if (!isTimeMode()) {\n <div\n class=\"z-calendars-wrapper flex w-full flex-col items-center gap-3 sm:flex-row sm:items-stretch sm:justify-center sm:gap-0\">\n <!-- First Calendar -->\n <div class=\"z-calendar-section flex w-[280px] shrink-0 flex-col\">\n @if (!isTimeMode()) {\n <!-- Header -->\n <div class=\"border-border flex w-full items-center justify-between gap-0.5 px-2\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n (click)=\"navigatePreviousFast()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n (click)=\"navigatePrevious()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"14\" />\n </button>\n\n <div class=\"flex w-[120px] shrink-0 items-center justify-center gap-0\">\n @if (!isYearMode() && !isQuarterMode()) {\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n [zDisabled]=\"false\"\n (click)=\"setView('month')\">\n {{ currentMonthName() }}\n </button>\n }\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n [zDisabled]=\"isYearMode()\"\n (click)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNext()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNextFast()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"14\" />\n </button>\n </div>\n\n <!-- Body -->\n <div\n class=\"flex h-full w-full flex-col items-center justify-center p-2\"\n [class.min-h-[224px]]=\"!isQuarterMode()\"\n [class.h-[224px]]=\"\n !isYearMode() &&\n !isMonthMode() &&\n !isQuarterMode() &&\n (currentView() === 'month' || currentView() === 'year')\n \"\n [class.min-h-[100px]]=\"isQuarterMode()\"\n [class.!min-h-auto]=\"isYearMode() || isMonthMode() || isQuarterMode()\"\n [class.!h-auto]=\"isYearMode() || isMonthMode() || isQuarterMode()\">\n @if (currentView() === 'day') {\n <div\n class=\"flex h-full w-full flex-1 flex-col gap-1\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n <!-- Weekday headers -->\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (weekday of weekdayNames(); track weekday) {\n <div\n class=\"text-muted-foreground flex w-[33px] items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n <!-- Date rows -->\n @for (week of calendarDays(); track $index) {\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n class=\"!w-[33px] !text-sm\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n @if (currentView() === 'month') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n @for (month of monthNames(); track month; let i = $index) {\n @let monthDisabled = i | zIsStartMonthDisabled: startMonthDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: selectedMonthIndex() : todayMonthIndex()\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"monthDisabled\"\n [class.opacity-30]=\"monthDisabled\"\n [class.cursor-not-allowed]=\"monthDisabled\"\n (click)=\"onMonthSelect(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n @for (year of yearRange(); track year) {\n @let yearDisabled = year | zIsStartYearDisabled: startYearDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: selectedYear() : todayYear()\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"yearDisabled\"\n [class.opacity-30]=\"yearDisabled\"\n [class.cursor-not-allowed]=\"yearDisabled\"\n (click)=\"onYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'quarter') {\n <div\n class=\"grid h-full w-full grid-cols-2 grid-rows-2 gap-2 p-1\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n @for (quarter of quarterNames; track quarter; let i = $index) {\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zQuarterClasses: selectedQuarterIndex() : todayQuarterIndex()\"\n class=\"!h-8 !w-full !text-sm\"\n (click)=\"onQuarterClick(i)\">\n {{ quarter }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Second Calendar (Range Mode Only) -->\n @if (isRangeMode()) {\n <!-- Divider -->\n <div class=\"border-border bg-border hidden self-stretch sm:block sm:w-px\"></div>\n <div class=\"border-border bg-border block h-px w-full sm:hidden\"></div>\n\n <div class=\"z-calendar-section flex w-[280px] shrink-0 flex-col\">\n <!-- Header -->\n <div class=\"border-border flex w-full items-center justify-between gap-0.5 px-2\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPreviousFast()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPrevious()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"14\" />\n </button>\n\n <div class=\"flex w-[120px] shrink-0 items-center justify-center gap-0\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n (click)=\"setEndView('month')\">\n {{ endMonthName() }}\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n (click)=\"setEndView('year')\">\n {{ endMonthYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNext()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNextFast()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"14\" />\n </button>\n </div>\n\n <!-- Body -->\n <div\n class=\"flex h-full min-h-[224px] w-full flex-col items-center justify-center p-2\"\n [class.h-[224px]]=\"endView() === 'month' || endView() === 'year'\">\n @if (endView() === 'day') {\n <div\n class=\"flex h-full w-full flex-1 flex-col gap-1\"\n [class.animate-calendar-enter]=\"uiState().hasEndViewChanged\">\n <!-- Weekday headers -->\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (weekday of weekdayNames(); track weekday) {\n <div\n class=\"text-muted-foreground flex w-[33px] items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n <!-- Date rows -->\n @for (week of calendarDaysEnd(); track $index) {\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n class=\"!w-[33px] !text-sm\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n @if (endView() === 'month') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasEndViewChanged\">\n @for (month of monthNames(); track month; let i = $index) {\n @let endMonthDisabled = i | zIsEndMonthDisabled: endMonthDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: endMonth().getMonth() : -1\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"endMonthDisabled\"\n [class.opacity-30]=\"endMonthDisabled\"\n [class.cursor-not-allowed]=\"endMonthDisabled\"\n (click)=\"onEndMonthClick(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (endView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasEndViewChanged\">\n @for (year of endYearRange(); track year) {\n @let endYearDisabled = year | zIsEndYearDisabled: endYearDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: endMonth().getFullYear() : -1\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"endYearDisabled\"\n [class.opacity-30]=\"endYearDisabled\"\n [class.cursor-not-allowed]=\"endYearDisabled\"\n (click)=\"onEndYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Compact Time Picker Below Calendar (Single Date) -->\n @if (!isRangeMode() && zShowTime()) {\n <div class=\"border-border w-full border-t text-center\">\n <div\n class=\"hover:bg-muted my-1 inline-flex cursor-pointer items-center rounded-sm px-2 py-1 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownShow()\">\n <div class=\"flex items-center justify-center gap-1\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedHour() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedMinute() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedSecond() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-8 cursor-pointer items-center justify-center rounded border-none px-2 py-1 text-xs font-semibold transition-colors\"\n (click)=\"togglePeriod(); $event.stopPropagation()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Compact Time Pickers Below Calendars (Range Mode) -->\n @if (isRangeMode() && zShowTime()) {\n <div class=\"border-border flex w-full flex-col border-t sm:flex-row\">\n <!-- Start Time -->\n <div class=\"flex w-full flex-col items-center justify-center gap-1\">\n <div\n class=\"hover:bg-muted my-1 inline-flex cursor-pointer items-center rounded-sm px-2 py-1 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownStartTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownShow()\">\n <div class=\"flex items-center justify-center gap-1\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedHour() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedMinute() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedSecond() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-8 cursor-pointer items-center justify-center rounded border-none px-2 py-1 text-xs font-semibold transition-colors\"\n (click)=\"togglePeriod(); $event.stopPropagation()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Divider space -->\n <div class=\"border-border bg-border h-px self-stretch sm:block sm:h-full sm:w-px\"></div>\n\n <!-- End Time -->\n <div class=\"flex w-full flex-col items-center justify-center gap-1\">\n <div\n class=\"hover:bg-muted my-1 inline-flex cursor-pointer items-center rounded-sm px-2 py-1 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownEndTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownEndShow()\">\n <div class=\"flex items-center justify-center gap-1\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHourEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedHourEnd() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHourEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinuteEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedMinuteEnd() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinuteEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecondEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedSecondEnd() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecondEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-8 cursor-pointer items-center justify-center rounded border-none px-2 py-1 text-xs font-semibold transition-colors\"\n (click)=\"togglePeriodEnd(); $event.stopPropagation()\">\n {{ periodEnd() }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n }\n } @else {\n <!-- Time Only Mode - Compact Display -->\n <div class=\"flex flex-col items-center gap-3 pb-2\">\n <div\n class=\"hover:bg-muted inline-flex cursor-pointer items-center rounded-md px-3 py-2 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownShow()\">\n <div class=\"flex items-center justify-center gap-1.5\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-9 cursor-pointer flex-col items-center gap-0 rounded px-1.5 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"16\" />\n </button>\n <span class=\"text-foreground min-w-6 text-center text-base leading-tight font-medium select-none\">\n {{ formattedHour() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-base font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-9 cursor-pointer flex-col items-center gap-0 rounded px-1.5 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"16\" />\n </button>\n <span class=\"text-foreground min-w-6 text-center text-base leading-tight font-medium select-none\">\n {{ formattedMinute() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-base font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-9 cursor-pointer flex-col items-center gap-0 rounded px-1.5 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"16\" />\n </button>\n <span class=\"text-foreground min-w-6 text-center text-base leading-tight font-medium select-none\">\n {{ formattedSecond() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-10 cursor-pointer items-center justify-center rounded border-none px-2.5 py-1.5 text-sm font-semibold transition-colors\"\n (click)=\"togglePeriod(); $event.stopPropagation()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n @if (!(zQuickSelect() && zMode() === 'range' && !showOkButton() && !showCancelButton())) {\n <div class=\"border-border flex w-full items-center justify-between gap-2 border-t px-2 pt-2\">\n @if (!zQuickSelect() || zMode() !== 'range') {\n <button type=\"button\" z-button zType=\"secondary\" zSize=\"sm\" [zWave]=\"false\" (click)=\"onTodayClick()\">\n {{ todayButtonText() }}\n </button>\n } @else {\n <div></div>\n }\n\n @if (showOkButton() || showCancelButton()) {\n <div class=\"flex items-center gap-2\">\n @if (showCancelButton()) {\n <button type=\"button\" z-button zType=\"outline\" zSize=\"sm\" (click)=\"onCancelClick()\">\n {{ zCancelText() ?? ('i18n_z_ui_calendar_cancel' | translate) }}\n </button>\n }\n @if (showOkButton()) {\n <button type=\"button\" z-button zSize=\"sm\" [zDisabled]=\"!canApply()\" (click)=\"onOkClick()\">\n {{ zOkText() ?? ('i18n_z_ui_calendar_ok' | translate) }}\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #timeDropdownTpl>\n <div class=\"bg-popover flex overflow-hidden rounded-[6px]\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond()\"\n [class.border-border]=\"zShowMinute() || zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-hour h-[200px] w-12\"\n [class.rounded]=\"!zShowMinute() && !zShowSecond()\"\n [class.rounded-l]=\"zShowMinute() || zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrSelected = hr | zIsTimeSelected: displayHour();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!hrSelected\"\n [class.bg-primary]=\"hrSelected\"\n [class.text-primary-foreground]=\"hrSelected\"\n [class.font-medium]=\"hrSelected\"\n (click)=\"selectHour(hr)\">\n {{ hr | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowMinute()) {\n <div class=\"flex flex-col\" [class.border-r]=\"zShowSecond()\" [class.border-border]=\"zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-minute h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowSecond()\"\n [class.rounded-l]=\"!zShowHour() && zShowSecond()\"\n [class.rounded-r]=\"zShowHour() && !zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minSelected = min | zIsTimeSelected: minute();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!minSelected\"\n [class.bg-primary]=\"minSelected\"\n [class.text-primary-foreground]=\"minSelected\"\n [class.font-medium]=\"minSelected\"\n (click)=\"selectMinute(min)\">\n {{ min | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowSecond()) {\n <div class=\"flex flex-col\">\n <ng-scrollbar\n class=\"z-time-scroll-second h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowMinute()\"\n [class.rounded-r]=\"zShowHour() || zShowMinute()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secSelected = sec | zIsTimeSelected: second();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!secSelected\"\n [class.bg-primary]=\"secSelected\"\n [class.text-primary-foreground]=\"secSelected\"\n [class.font-medium]=\"secSelected\"\n (click)=\"selectSecond(sec)\">\n {{ sec | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #timeDropdownStartTpl>\n <div class=\"bg-popover flex overflow-hidden rounded-[6px]\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond()\"\n [class.border-border]=\"zShowMinute() || zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-hour h-[200px] w-12\"\n [class.rounded]=\"!zShowMinute() && !zShowSecond()\"\n [class.rounded-l]=\"zShowMinute() || zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrSelected = hr | zIsTimeSelected: displayHour();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!hrSelected\"\n [class.bg-primary]=\"hrSelected\"\n [class.text-primary-foreground]=\"hrSelected\"\n [class.font-medium]=\"hrSelected\"\n (click)=\"selectHour(hr)\">\n {{ hr | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowMinute()) {\n <div class=\"flex flex-col\" [class.border-r]=\"zShowSecond()\" [class.border-border]=\"zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-minute h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowSecond()\"\n [class.rounded-l]=\"!zShowHour() && zShowSecond()\"\n [class.rounded-r]=\"zShowHour() && !zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minSelected = min | zIsTimeSelected: minute();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!minSelected\"\n [class.bg-primary]=\"minSelected\"\n [class.text-primary-foreground]=\"minSelected\"\n [class.font-medium]=\"minSelected\"\n (click)=\"selectMinute(min)\">\n {{ min | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowSecond()) {\n <div class=\"flex flex-col\">\n <ng-scrollbar\n class=\"z-time-scroll-second h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowMinute()\"\n [class.rounded-r]=\"zShowHour() || zShowMinute()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secSelected = sec | zIsTimeSelected: second();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!secSelected\"\n [class.bg-primary]=\"secSelected\"\n [class.text-primary-foreground]=\"secSelected\"\n [class.font-medium]=\"secSelected\"\n (click)=\"selectSecond(sec)\">\n {{ sec | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #timeDropdownEndTpl>\n <div class=\"bg-popover flex overflow-hidden rounded-[6px]\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond()\"\n [class.border-border]=\"zShowMinute() || zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-hour-end h-[200px] w-12\"\n [class.rounded]=\"!zShowMinute() && !zShowSecond()\"\n [class.rounded-l]=\"zShowMinute() || zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrDisabled = hr | zIsEndHourDisabled: endTimeContext();\n @let hrEndSelected = hr | zIsTimeSelected: displayHourEnd();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!hrDisabled && !hrEndSelected\"\n [class.cursor-pointer]=\"!hrDisabled\"\n [class.bg-primary]=\"hrEndSelected\"\n [class.text-primary-foreground]=\"hrEndSelected\"\n [class.font-medium]=\"hrEndSelected\"\n [class.opacity-30]=\"hrDisabled\"\n [class.cursor-not-allowed]=\"hrDisabled\"\n [disabled]=\"hrDisabled\"\n (click)=\"selectHourEnd(hr)\">\n {{ hr | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowMinute()) {\n <div class=\"flex flex-col\" [class.border-r]=\"zShowSecond()\" [class.border-border]=\"zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-minute-end h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowSecond()\"\n [class.rounded-l]=\"!zShowHour() && zShowSecond()\"\n [class.rounded-r]=\"zShowHour() && !zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minDisabled = min | zIsEndMinuteDisabled: endTimeContext();\n @let minEndSelected = min | zIsTimeSelected: minuteEnd();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!minDisabled && !minEndSelected\"\n [class.cursor-pointer]=\"!minDisabled\"\n [class.bg-primary]=\"minEndSelected\"\n [class.text-primary-foreground]=\"minEndSelected\"\n [class.font-medium]=\"minEndSelected\"\n [class.opacity-30]=\"minDisabled\"\n [class.cursor-not-allowed]=\"minDisabled\"\n [disabled]=\"minDisabled\"\n (click)=\"selectMinuteEnd(min)\">\n {{ min | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowSecond()) {\n <div class=\"flex flex-col\">\n <ng-scrollbar\n class=\"z-time-scroll-second-end h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowMinute()\"\n [class.rounded-r]=\"zShowHour() || zShowMinute()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secDisabled = sec | zIsEndSecondDisabled: endTimeContext();\n @let secEndSelected = sec | zIsTimeSelected: secondEnd();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!secDisabled && !secEndSelected\"\n [class.cursor-pointer]=\"!secDisabled\"\n [class.bg-primary]=\"secEndSelected\"\n [class.text-primary-foreground]=\"secEndSelected\"\n [class.font-medium]=\"secEndSelected\"\n [class.opacity-30]=\"secDisabled\"\n [class.cursor-not-allowed]=\"secDisabled\"\n [disabled]=\"secDisabled\"\n (click)=\"selectSecondEnd(sec)\">\n {{ sec | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-vnetcity-components-z-calendar.mjs","sources":["../../../../libs/core-ui/components/z-calendar/z-calendar.utils.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.variants.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-day-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-end-time-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-month-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-month-year-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-quarter-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-time-selected.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-year-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.html","../../../../libs/core-ui/components/z-calendar/shival99-z-vnetcity-components-z-calendar.ts"],"sourcesContent":["import type {\n ZCalendarDay,\n ZCalendarGridOptions,\n ZDateRange,\n ZDayState,\n ZMonthState,\n ZQuarterState,\n ZQuickSelectPreset,\n ZRangeProperties,\n ZYearState,\n} from './z-calendar.types';\n\nexport const createDate = (year: number, month: number, day: number, hour = 0, minute = 0, second = 0): Date =>\n new Date(year, month, day, hour, minute, second);\n\nexport const cloneDate = (date: Date): Date => new Date(date.getTime());\n\nexport const getToday = (): Date => {\n const now = new Date();\n return createDate(now.getFullYear(), now.getMonth(), now.getDate());\n};\n\nexport const startOfDay = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const startOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), 1);\n\nexport const endOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const startOfYear = (date: Date): Date => createDate(date.getFullYear(), 0, 1);\n\nexport const addDays = (date: Date, days: number): Date => {\n const result = cloneDate(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const addMonths = (date: Date, months: number): Date => {\n const result = cloneDate(date);\n result.setMonth(result.getMonth() + months);\n return result;\n};\n\nexport const addYears = (date: Date, years: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(result.getFullYear() + years);\n return result;\n};\n\nexport const setMonth = (date: Date, month: number): Date => {\n const result = cloneDate(date);\n result.setMonth(month);\n return result;\n};\n\nexport const setYear = (date: Date, year: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(year);\n return result;\n};\n\nexport const setTime = (date: Date, hour: number, minute: number, second: number): Date => {\n const result = cloneDate(date);\n result.setHours(hour, minute, second, 0);\n return result;\n};\n\nexport const isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) {\n return false;\n }\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nexport const isSameMonth = (date1: Date, date2: Date): boolean =>\n date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth();\n\nexport const isSameYear = (date1: Date, date2: Date): boolean => date1.getFullYear() === date2.getFullYear();\n\nexport const isToday = (date: Date): boolean => isSameDay(date, new Date());\n\nexport const isBefore = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() < startOfDay(date2).getTime();\n\nexport const isAfter = (date1: Date, date2: Date): boolean => startOfDay(date1).getTime() > startOfDay(date2).getTime();\n\nexport const isBeforeOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() <= startOfDay(date2).getTime();\n\nexport const isAfterOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() >= startOfDay(date2).getTime();\n\nexport const isBetween = (date: Date, start: Date, end: Date): boolean => {\n const time = startOfDay(date).getTime();\n const startTime = startOfDay(start).getTime();\n const endTime = startOfDay(end).getTime();\n return time > startTime && time < endTime;\n};\n\nexport const isDateInRange = (date: Date, minDate: Date | null, maxDate: Date | null): boolean => {\n if (minDate && isBefore(date, minDate)) {\n return false;\n }\n if (maxDate && isAfter(date, maxDate)) {\n return false;\n }\n return true;\n};\n\nexport const getDaysInMonth = (year: number, month: number): number => new Date(year, month + 1, 0).getDate();\n\nexport const getFirstDayOfMonth = (year: number, month: number): number => new Date(year, month, 1).getDay();\n\nconst computeRangeProperties = (\n date: Date,\n rangeStart: Date | null | undefined,\n rangeEnd: Date | null | undefined,\n hoveredDate: Date | null | undefined\n): ZRangeProperties => {\n const defaultProps: ZRangeProperties = {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n isHovered: false,\n };\n\n if (rangeStart && rangeEnd) {\n const actualStart = isBefore(rangeStart, rangeEnd) ? rangeStart : rangeEnd;\n const actualEnd = isAfter(rangeEnd, rangeStart) ? rangeEnd : rangeStart;\n return {\n isRangeStart: isSameDay(date, actualStart),\n isRangeEnd: isSameDay(date, actualEnd),\n isInRange: isBetween(date, actualStart, actualEnd),\n isHovered: false,\n };\n }\n\n if (rangeStart && hoveredDate && !rangeEnd) {\n const isHoveredBefore = isBefore(hoveredDate, rangeStart);\n const effectiveStart = isHoveredBefore ? hoveredDate : rangeStart;\n const effectiveEnd = isHoveredBefore ? rangeStart : hoveredDate;\n return {\n isRangeStart: isSameDay(date, effectiveStart),\n isRangeEnd: isSameDay(date, effectiveEnd),\n isInRange: isBetween(date, effectiveStart, effectiveEnd),\n isHovered: isSameDay(date, hoveredDate),\n };\n }\n\n if (rangeStart) {\n return { ...defaultProps, isRangeStart: isSameDay(date, rangeStart) };\n }\n\n return defaultProps;\n};\n\nconst createCalendarDay = (\n date: Date,\n isCurrentMonth: boolean,\n today: Date,\n options: ZCalendarGridOptions\n): ZCalendarDay => {\n const { selectedDate, minDate, maxDate, rangeStart, rangeEnd, hoveredDate, disabledDate } = options;\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;\n const rangeProps = computeRangeProperties(date, rangeStart, rangeEnd, hoveredDate);\n\n const isOutOfRange = !isDateInRange(date, minDate ?? null, maxDate ?? null);\n const isDisabledByFn = disabledDate ? disabledDate(date) : false;\n\n return {\n date,\n day: date.getDate(),\n isCurrentMonth,\n isToday: isSameDay(date, today),\n isDisabled: isOutOfRange || isDisabledByFn,\n isSelected,\n ...rangeProps,\n };\n};\n\nexport const generateCalendarGrid = (\n year: number,\n month: number,\n options: ZCalendarGridOptions = {}\n): ZCalendarDay[][] => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayOfMonth = getFirstDayOfMonth(year, month);\n const today = getToday();\n\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevMonthYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevMonthYear, prevMonth);\n\n const days: ZCalendarDay[] = [];\n\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const date = createDate(prevMonthYear, prevMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = createDate(year, month, day);\n days.push(createCalendarDay(date, true, today, options));\n }\n\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextMonthYear = month === 11 ? year + 1 : year;\n const remainingDays = 42 - days.length;\n\n for (let day = 1; day <= remainingDays; day++) {\n const date = createDate(nextMonthYear, nextMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n const weeks: ZCalendarDay[][] = [];\n for (let i = 0; i < 6; i++) {\n weeks.push(days.slice(i * 7, (i + 1) * 7));\n }\n\n return weeks;\n};\n\nexport const getMonthNames = (locale = 'vi-VN'): string[] => {\n if (locale === 'vi-VN') {\n return ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'];\n }\n\n const months: string[] = [];\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1);\n months.push(date.toLocaleDateString(locale, { month: 'short' }));\n }\n return months;\n};\n\nexport const getFullMonthName = (monthIndex: number, locale = 'vi-VN'): string => {\n if (locale === 'vi-VN') {\n return `Tháng ${monthIndex + 1}`;\n }\n const date = new Date(2024, monthIndex, 1);\n return date.toLocaleDateString(locale, { month: 'long' });\n};\n\nexport const getShortMonthName = (monthIndex: number, locale = 'vi-VN'): string => {\n if (locale === 'vi-VN') {\n return `Th${monthIndex + 1}`;\n }\n const date = new Date(2024, monthIndex, 1);\n return date.toLocaleDateString(locale, { month: 'short' });\n};\n\nexport const getWeekdayNames = (locale = 'vi-VN'): string[] => {\n const weekdays: string[] = [];\n for (let i = 0; i < 7; i++) {\n const actualDate = new Date(2024, 0, 7 + i);\n weekdays.push(actualDate.toLocaleDateString(locale, { weekday: 'narrow' }));\n }\n return weekdays;\n};\n\nexport const getYearRange = (centerYear: number, range = 12): number[] => {\n const startYear = centerYear - Math.floor(range / 2);\n return Array.from({ length: range }, (_, i) => startYear + i);\n};\n\nexport const formatDate = (date: Date | null, format: string, locale = 'vi-VN'): string => {\n if (!date) {\n return '';\n }\n\n const hours = date.getHours();\n const hours12 = hours % 12 || 12;\n const monthIndex = date.getMonth();\n\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n MMMM: getFullMonthName(monthIndex, locale),\n MMM: getShortMonthName(monthIndex, locale),\n MM: String(monthIndex + 1).padStart(2, '0'),\n DD: String(date.getDate()).padStart(2, '0'),\n HH: String(hours).padStart(2, '0'),\n hh: String(hours12).padStart(2, '0'),\n mm: String(date.getMinutes()).padStart(2, '0'),\n ss: String(date.getSeconds()).padStart(2, '0'),\n };\n\n let result = format;\n // Sort tokens by length (longest first) to avoid partial replacements\n // e.g., MMMM should be replaced before MM\n const sortedTokens = Object.keys(tokens).sort((a, b) => b.length - a.length);\n for (const token of sortedTokens) {\n result = result.split(token).join(tokens[token]);\n }\n\n return result;\n};\n\nexport const parseDate = (dateString: string, format: string): Date | null => {\n if (!dateString) {\n return null;\n }\n\n const pattern = format\n .replace(/YYYY/g, '\\\\d{4}')\n .replace(/MM/g, '\\\\d{1,2}')\n .replace(/DD/g, '\\\\d{1,2}')\n .replace(/HH/g, '\\\\d{1,2}')\n .replace(/hh/g, '\\\\d{1,2}')\n .replace(/mm/g, '\\\\d{1,2}')\n .replace(/ss/g, '\\\\d{1,2}')\n .replace(/\\//g, '\\\\/')\n .replace(/-/g, '\\\\-')\n .replace(/:/g, '\\\\:')\n .replace(/\\s+/g, '\\\\s*');\n\n const datePattern = new RegExp(`^${pattern}(\\\\s*(AM|PM))?$`, 'i');\n if (!datePattern.test(dateString.trim())) {\n return null;\n }\n\n const numbers = dateString.match(/\\d+/g)?.map(n => parseInt(n, 10)) ?? [];\n if (numbers.length === 0) {\n return null;\n }\n\n const currentYear = new Date().getFullYear();\n const values: Record<string, number> = {\n YYYY: currentYear,\n MM: 1,\n DD: 1,\n HH: 0,\n hh: 0,\n mm: 0,\n ss: 0,\n };\n\n const allTokens = ['YYYY', 'MM', 'DD', 'HH', 'hh', 'mm', 'ss'];\n const tokensInFormat = allTokens\n .filter(token => format.includes(token))\n .sort((a, b) => format.indexOf(a) - format.indexOf(b));\n\n for (let i = 0; i < Math.min(numbers.length, tokensInFormat.length); i++) {\n values[tokensInFormat[i]] = numbers[i];\n }\n\n const isPM = /PM/i.test(dateString);\n const isAM = /AM/i.test(dateString);\n let hour = values['HH'];\n\n if (format.includes('hh')) {\n hour = values['hh'];\n if (isPM && hour < 12) {\n hour += 12;\n }\n if (isAM && hour === 12) {\n hour = 0;\n }\n }\n\n try {\n const date = createDate(values['YYYY'], values['MM'] - 1, values['DD'], hour, values['mm'], values['ss']);\n // Validate the date is valid (e.g., not 31/02/2025)\n if (isNaN(date.getTime())) {\n return null;\n }\n return date;\n } catch {\n return null;\n }\n};\n\nexport const toISOString = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n return date.toISOString();\n};\n\nexport const fromISOString = (isoString: string): Date | null => {\n if (!isoString) {\n return null;\n }\n const date = new Date(isoString);\n return isNaN(date.getTime()) ? null : date;\n};\n\nexport const getQuickSelectPresets = (): ZQuickSelectPreset[] => [\n {\n key: 'today',\n label: 'i18n_z_ui_calendar_today',\n getValue: () => ({ start: getToday(), end: getToday() }),\n },\n {\n key: '7days',\n label: 'i18n_z_ui_calendar_last_7_days',\n getValue: () => ({\n start: addDays(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: '14days',\n label: 'i18n_z_ui_calendar_last_14_days',\n getValue: () => ({\n start: addDays(getToday(), -13),\n end: getToday(),\n }),\n },\n {\n key: '1month',\n label: 'i18n_z_ui_calendar_last_1_month',\n getValue: () => ({\n start: addMonths(getToday(), -1),\n end: getToday(),\n }),\n },\n {\n key: '2months',\n label: 'i18n_z_ui_calendar_last_2_months',\n getValue: () => ({\n start: addMonths(getToday(), -2),\n end: getToday(),\n }),\n },\n {\n key: '3months',\n label: 'i18n_z_ui_calendar_last_3_months',\n getValue: () => ({\n start: addMonths(getToday(), -3),\n end: getToday(),\n }),\n },\n {\n key: '6months',\n label: 'i18n_z_ui_calendar_last_6_months',\n getValue: () => ({\n start: addMonths(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: 'custom',\n label: 'i18n_z_ui_calendar_custom',\n getValue: () => null,\n },\n];\n\nexport const normalizeRange = (start: Date | null, end: Date | null): ZDateRange => {\n if (!start || !end) {\n return { start, end };\n }\n\n if (isBefore(end, start)) {\n return { start: end, end: start };\n }\n\n return { start, end };\n};\n\nexport const isValidRange = (range: ZDateRange): boolean => range.start !== null && range.end !== null;\n\nexport const clampTime = (value: number, min: number, max: number): number => Math.max(min, Math.min(max, value));\n\nexport const parseTimeValue = (value: string, max: number): number => {\n const parsed = parseInt(value, 10);\n if (isNaN(parsed)) {\n return 0;\n }\n return clampTime(parsed, 0, max);\n};\n\nexport const formatTimeValue = (value: number): string => String(value).padStart(2, '0');\n\nexport const getDayState = (day: ZCalendarDay): ZDayState => {\n if (day.isDisabled) {\n return 'disabled';\n }\n if (!day.isCurrentMonth) {\n return 'otherMonth';\n }\n if (day.isRangeStart && day.isRangeEnd) {\n return 'rangeSingle';\n }\n if (day.isRangeStart) {\n return 'rangeStart';\n }\n if (day.isRangeEnd) {\n return 'rangeEnd';\n }\n if (day.isInRange) {\n return 'inRange';\n }\n if (day.isHovered) {\n return 'hovered';\n }\n if (day.isSelected) {\n return 'selected';\n }\n if (day.isToday) {\n return 'today';\n }\n return 'default';\n};\n\nexport const getMonthState = (monthIndex: number, selectedMonthIndex: number, todayMonthIndex: number): ZMonthState => {\n if (monthIndex === selectedMonthIndex) {\n return 'selected';\n }\n // Only show current month when no value is selected\n if (selectedMonthIndex === -1 && monthIndex === todayMonthIndex) {\n return 'current';\n }\n return 'default';\n};\n\nexport const getQuarterState = (\n quarterIndex: number,\n selectedQuarterIndex: number,\n todayQuarterIndex: number\n): ZQuarterState => {\n if (quarterIndex === selectedQuarterIndex) {\n return 'selected';\n }\n // Only show current quarter when no value is selected\n if (selectedQuarterIndex === -1 && quarterIndex === todayQuarterIndex) {\n return 'current';\n }\n return 'default';\n};\n\nexport const getYearState = (year: number, selectedYear: number, todayYear: number): ZYearState => {\n if (year === selectedYear) {\n return 'selected';\n }\n // Only show current year when no value is selected\n if (selectedYear === -1 && year === todayYear) {\n return 'current';\n }\n return 'default';\n};\n\n/**\n * Check if the format string contains time tokens (HH, hh, mm, ss)\n */\nexport const hasTimeTokens = (format: string): boolean => /HH|hh|mm|ss/.test(format);\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCalendarVariants = cva(\n [\n 'group flex min-w-0 w-full items-center overflow-hidden rounded-[6px] border border-input bg-white shadow-xs cursor-pointer',\n 'transition-[border-color,box-shadow,background-color,color,opacity] duration-200',\n 'dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n 'outline-none',\n 'text-sm',\n ],\n {\n variants: {\n zSize: {\n sm: 'h-8 px-2 gap-2 text-sm',\n default: 'h-9 px-2 gap-2 text-sm',\n lg: 'h-10 px-2 gap-2.5 text-sm',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n open: 'border-ring ring-ring/50 ring-[3px]',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'cursor-default bg-muted/50 text-muted-foreground',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZCalendarVariants = VariantProps<typeof zCalendarVariants>;\n\nexport const zCalendarDayVariants = cva(\n [\n 'flex items-center justify-center size-7 text-sm rounded-[4px] cursor-pointer',\n 'transition-all duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n today: 'bg-primary/10 text-primary border border-primary',\n selected: 'bg-primary text-primary-foreground',\n inRange: 'bg-primary/10 text-foreground',\n rangeStart: 'bg-primary text-primary-foreground rounded-r-none',\n rangeEnd: 'bg-primary text-primary-foreground rounded-l-none',\n rangeSingle: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed line-through',\n otherMonth: 'text-muted-foreground/40 hover:bg-primary/5',\n hovered: 'bg-primary/15 text-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarMonthVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-8 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary text-primary-foreground',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed line-through',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarYearVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-6 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary text-primary-foreground',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed line-through',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarQuarterVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-15 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary text-primary-foreground',\n selected: 'bg-primary text-primary-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZCalendarDay } from '../z-calendar.types';\nimport { getDayState } from '../z-calendar.utils';\nimport { zCalendarDayVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zDayClasses',\n standalone: true,\n pure: true,\n})\nexport class ZDayClassesPipe implements PipeTransform {\n transform(day: ZCalendarDay): string {\n const state = getDayState(day);\n return zCalendarDayVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZQuickSelectPreset } from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsPresetDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsPresetDisabledPipe implements PipeTransform {\n transform(preset: ZQuickSelectPreset, disabledDateFn: ((date: Date) => boolean) | null): boolean {\n if (preset.key === 'custom' || !disabledDateFn) {\n return false;\n }\n\n const value = preset.getValue();\n if (!value) {\n return false;\n }\n\n if (value instanceof Date) {\n return disabledDateFn(value);\n }\n\n if (value.start && disabledDateFn(value.start)) {\n return true;\n }\n if (value.end && disabledDateFn(value.end)) {\n return true;\n }\n\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZEndTimeContext } from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsEndHourDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndHourDisabledPipe implements PipeTransform {\n transform(hour: number, context: ZEndTimeContext): boolean {\n if (!context.isSameDay) {\n return false;\n }\n\n let actualHour = hour;\n let actualStartHour = context.startHour;\n\n if (context.timeFormat === '12h') {\n if (context.endPeriod === 'PM' && hour !== 12) {\n actualHour = hour + 12;\n }\n if (context.endPeriod === 'AM' && hour === 12) {\n actualHour = 0;\n }\n if (context.startPeriod === 'PM' && context.startHour !== 12) {\n actualStartHour = context.startHour + 12;\n }\n if (context.startPeriod === 'AM' && context.startHour === 12) {\n actualStartHour = 0;\n }\n }\n\n return actualHour < actualStartHour;\n }\n}\n\n@Pipe({\n name: 'zIsEndMinuteDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndMinuteDisabledPipe implements PipeTransform {\n transform(minute: number, context: ZEndTimeContext): boolean {\n if (!context.isSameDay) {\n return false;\n }\n\n let actualStartHour = context.startHour;\n let actualEndHour = context.endHour;\n\n if (context.timeFormat === '12h') {\n if (context.startPeriod === 'PM' && context.startHour !== 12) {\n actualStartHour = context.startHour + 12;\n }\n if (context.startPeriod === 'AM' && context.startHour === 12) {\n actualStartHour = 0;\n }\n if (context.endPeriod === 'PM' && context.endHour !== 12) {\n actualEndHour = context.endHour + 12;\n }\n if (context.endPeriod === 'AM' && context.endHour === 12) {\n actualEndHour = 0;\n }\n }\n\n if (actualEndHour !== actualStartHour) {\n return false;\n }\n\n return minute < context.startMinute;\n }\n}\n\n@Pipe({\n name: 'zIsEndSecondDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndSecondDisabledPipe implements PipeTransform {\n transform(second: number, context: ZEndTimeContext): boolean {\n if (!context.isSameDay) {\n return false;\n }\n\n let actualStartHour = context.startHour;\n let actualEndHour = context.endHour;\n\n if (context.timeFormat === '12h') {\n if (context.startPeriod === 'PM' && context.startHour !== 12) {\n actualStartHour = context.startHour + 12;\n }\n if (context.startPeriod === 'AM' && context.startHour === 12) {\n actualStartHour = 0;\n }\n if (context.endPeriod === 'PM' && context.endHour !== 12) {\n actualEndHour = context.endHour + 12;\n }\n if (context.endPeriod === 'AM' && context.endHour === 12) {\n actualEndHour = 0;\n }\n }\n\n if (actualEndHour !== actualStartHour) {\n return false;\n }\n if (context.endMinute !== context.startMinute) {\n return false;\n }\n\n return second <= context.startSecond;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getMonthState } from '../z-calendar.utils';\nimport { zCalendarMonthVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zMonthClasses',\n standalone: true,\n pure: true,\n})\nexport class ZMonthClassesPipe implements PipeTransform {\n transform(monthIndex: number, selectedMonthIndex: number, todayMonthIndex: number): string {\n const state = getMonthState(monthIndex, selectedMonthIndex, todayMonthIndex);\n return zCalendarMonthVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type {\n ZMonthDisabledContext,\n ZEndMonthDisabledContext,\n ZYearDisabledContext,\n ZEndYearDisabledContext,\n} from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsStartMonthDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsStartMonthDisabledPipe implements PipeTransform {\n transform(monthIndex: number, context: ZMonthDisabledContext): boolean {\n if (context.disabledDateFn) {\n const monthDate = new Date(context.currentYear, monthIndex, 1);\n if (context.disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (context.currentYear > context.endYear) {\n return true;\n }\n\n if (context.currentYear === context.endYear && monthIndex > context.endMonthIndex) {\n return true;\n }\n return false;\n }\n}\n\n@Pipe({\n name: 'zIsEndMonthDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndMonthDisabledPipe implements PipeTransform {\n transform(monthIndex: number, context: ZEndMonthDisabledContext): boolean {\n if (context.disabledDateFn) {\n const monthDate = new Date(context.endYear, monthIndex, 1);\n if (context.disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (context.endYear < context.startYear) {\n return true;\n }\n if (context.endYear === context.startYear && monthIndex < context.startMonthIndex) {\n return true;\n }\n return false;\n }\n}\n\n@Pipe({\n name: 'zIsStartYearDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsStartYearDisabledPipe implements PipeTransform {\n transform(year: number, context: ZYearDisabledContext): boolean {\n if (context.disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (context.disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (year > context.endYear) {\n return true;\n }\n if (year === context.endYear && context.startMonthIndex >= context.endMonthIndex) {\n return true;\n }\n return false;\n }\n}\n\n@Pipe({\n name: 'zIsEndYearDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsEndYearDisabledPipe implements PipeTransform {\n transform(year: number, context: ZEndYearDisabledContext): boolean {\n if (context.disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (context.disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!context.isRangeMode) {\n return false;\n }\n\n if (year < context.startYear) {\n return true;\n }\n if (year === context.startYear && context.endMonthIndex <= context.startMonthIndex) {\n return true;\n }\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getQuarterState } from '../z-calendar.utils';\nimport { zCalendarQuarterVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zQuarterClasses',\n standalone: true,\n pure: true,\n})\nexport class ZQuarterClassesPipe implements PipeTransform {\n transform(quarterIndex: number, selectedQuarterIndex: number, todayQuarterIndex: number): string {\n const state = getQuarterState(quarterIndex, selectedQuarterIndex, todayQuarterIndex);\n return zCalendarQuarterVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'zIsTimeSelected',\n standalone: true,\n pure: true,\n})\nexport class ZIsTimeSelectedPipe implements PipeTransform {\n transform(value: number, selectedValue: number): boolean {\n return value === selectedValue;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getYearState } from '../z-calendar.utils';\nimport { zCalendarYearVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zYearClasses',\n standalone: true,\n pure: true,\n})\nexport class ZYearClassesPipe implements PipeTransform {\n transform(year: number, selectedYear: number, todayYear: number): string {\n const state = getYearState(year, selectedYear, todayYear);\n return zCalendarYearVariants({ state });\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-vnetcity/components/z-button';\nimport { ZIconComponent } from '@shival99/z-vnetcity/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-vnetcity/components/z-popover';\nimport type { ZPopoverControl } from '@shival99/z-vnetcity/components/z-popover';\nimport { ZTranslateService } from '@shival99/z-vnetcity/services';\nimport { zUuid, zMergeClasses, zTransform } from '@shival99/z-vnetcity/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { merge } from 'rxjs';\nimport { ZDayClassesPipe } from './pipes/z-day-classes.pipe';\nimport { ZIsPresetDisabledPipe } from './pipes/z-disabled.pipe';\nimport {\n ZIsEndHourDisabledPipe,\n ZIsEndMinuteDisabledPipe,\n ZIsEndSecondDisabledPipe,\n} from './pipes/z-end-time-disabled.pipe';\nimport { ZMonthClassesPipe } from './pipes/z-month-classes.pipe';\nimport {\n ZIsStartMonthDisabledPipe,\n ZIsEndMonthDisabledPipe,\n ZIsStartYearDisabledPipe,\n ZIsEndYearDisabledPipe,\n} from './pipes/z-month-year-disabled.pipe';\nimport { ZQuarterClassesPipe } from './pipes/z-quarter-classes.pipe';\nimport { ZIsTimeSelectedPipe } from './pipes/z-time-selected.pipe';\nimport { ZYearClassesPipe } from './pipes/z-year-classes.pipe';\nimport type {\n ZCalendarDay,\n ZCalendarControl,\n ZCalendarDefaultTime,\n ZCalendarMode,\n ZCalendarRangeDefaultTime,\n ZCalendarSize,\n ZCalendarState,\n ZCalendarTimeConfig,\n ZCalendarValidator,\n ZCalendarValue,\n ZCalendarValueType,\n ZCalendarView,\n ZDateRange,\n ZEndMonthDisabledContext,\n ZEndTimeContext,\n ZEndYearDisabledContext,\n ZMonthDisabledContext,\n ZQuickSelectPreset,\n ZYearDisabledContext,\n} from './z-calendar.types';\nimport {\n addDays,\n addMonths,\n addYears,\n formatDate,\n formatTimeValue,\n fromISOString,\n generateCalendarGrid,\n getMonthNames,\n getQuickSelectPresets,\n getToday,\n getWeekdayNames,\n getYearRange,\n hasTimeTokens,\n isSameDay,\n isSameMonth,\n normalizeRange,\n parseDate,\n parseTimeValue,\n setMonth,\n setTime,\n setYear,\n toISOString,\n} from './z-calendar.utils';\nimport { zCalendarVariants } from './z-calendar.variants';\n\n@Component({\n selector: 'z-calendar',\n imports: [\n DecimalPipe,\n NgScrollbar,\n ZIconComponent,\n ZPopoverDirective,\n ZButtonComponent,\n ZDayClassesPipe,\n ZMonthClassesPipe,\n ZQuarterClassesPipe,\n ZYearClassesPipe,\n ZIsPresetDisabledPipe,\n ZIsTimeSelectedPipe,\n ZIsEndHourDisabledPipe,\n ZIsEndMinuteDisabledPipe,\n ZIsEndSecondDisabledPipe,\n ZIsStartMonthDisabledPipe,\n ZIsEndMonthDisabledPipe,\n ZIsStartYearDisabledPipe,\n ZIsEndYearDisabledPipe,\n TranslatePipe,\n ],\n standalone: true,\n templateUrl: './z-calendar.component.html',\n styleUrl: './z-calendar.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCalendarComponent),\n multi: true,\n },\n TranslatePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block min-w-0',\n },\n exportAs: 'zCalendar',\n})\nexport class ZCalendarComponent implements OnInit, ControlValueAccessor {\n public readonly class = input<ClassValue>('');\n public readonly zMode = input<ZCalendarMode>('single');\n public readonly zSize = input<ZCalendarSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input<string | null>(null);\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zShowTime = input(false, { transform: zTransform });\n public readonly zTimeFormat = input<'12h' | '24h'>('24h');\n public readonly zShowHour = input(true, { transform: zTransform });\n public readonly zShowMinute = input(true, { transform: zTransform });\n public readonly zShowSecond = input(true, { transform: zTransform });\n public readonly zQuickSelect = input(false, { transform: zTransform });\n public readonly zAllowClear = input(true, { transform: zTransform });\n public readonly zFormat = input<string>('DD/MM/YYYY');\n public readonly zMinDate = input<Date | null>(null);\n public readonly zMaxDate = input<Date | null>(null);\n public readonly zValueType = input<ZCalendarValueType>('date');\n public readonly zValidators = input<ZCalendarValidator[]>([]);\n public readonly zShowOk = input(false, { transform: zTransform });\n public readonly zOkText = input<string | null>(null);\n public readonly zShowCancel = input(false, { transform: zTransform });\n public readonly zCancelText = input<string | null>(null);\n public readonly zDisabledDate = input<((date: Date) => boolean) | null>(null);\n public readonly zScrollClose = input(false, { transform: zTransform });\n public readonly zDefaultTime = input<ZCalendarDefaultTime | null>(null);\n public readonly zRangeDefaultTime = input<ZCalendarRangeDefaultTime | null>(null);\n\n public readonly zControl = output<ZCalendarControl>();\n public readonly zChange = output<ZCalendarValue>();\n\n protected readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('triggerEl');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected readonly pickerId = zUuid('z-calendar');\n protected readonly weekdayNames = computed(() => getWeekdayNames(this.zLocale()));\n protected readonly monthNames = computed(() => getMonthNames(this.zLocale()));\n protected readonly quickSelectPresets = getQuickSelectPresets();\n\n protected readonly hourOptions = computed(() => {\n if (this.zTimeFormat() === '12h') {\n return Array.from({ length: 12 }, (_, i) => i + 1);\n }\n return Array.from({ length: 24 }, (_, i) => i);\n });\n\n protected readonly minuteOptions = Array.from({ length: 60 }, (_, i) => i);\n protected readonly secondOptions = Array.from({ length: 60 }, (_, i) => i);\n\n protected readonly formattedHour = computed(() => {\n const h = this.hour();\n if (this.zTimeFormat() === '12h') {\n const h12 = h % 12 || 12;\n return formatTimeValue(h12);\n }\n return formatTimeValue(h);\n });\n\n protected readonly formattedMinute = computed(() => formatTimeValue(this.minute()));\n protected readonly formattedSecond = computed(() => formatTimeValue(this.second()));\n\n protected readonly displayHour = computed(() => {\n const h = this.hour();\n if (this.zTimeFormat() === '12h') {\n return h % 12 || 12;\n }\n return h;\n });\n\n protected readonly displayHourEnd = computed(() => {\n const h = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n return h % 12 || 12;\n }\n return h;\n });\n\n private readonly _popoverControl = signal<ZPopoverControl | null>(null);\n private readonly _selectedDate = signal<Date | null>(null);\n private readonly _rangeStart = signal<Date | null>(null);\n private readonly _rangeEnd = signal<Date | null>(null);\n private readonly _currentMonth = signal<Date>(getToday());\n private readonly _endMonth = signal<Date>(addMonths(getToday(), 1));\n private readonly _hourEnd = signal(0);\n private readonly _minuteEnd = signal(0);\n private readonly _secondEnd = signal(0);\n private readonly _periodEnd = signal<'AM' | 'PM'>('AM');\n private readonly _disabled = signal(false);\n private readonly _touched = signal(false);\n private readonly _dirty = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _backupSelectedDate = signal<Date | null>(null);\n private readonly _backupRangeStart = signal<Date | null>(null);\n private readonly _backupRangeEnd = signal<Date | null>(null);\n private readonly _appliedViaOk = signal(false);\n private readonly _skipBlurHandler = signal(false);\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n\n protected readonly zLocale = this._zTranslate.locale();\n\n private _onChange: (value: ZCalendarValue) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n\n protected readonly isOpen = computed(() => this._popoverControl()?.isVisible() ?? false);\n protected readonly hoveredDate = signal<Date | null>(null);\n protected readonly currentView = signal<ZCalendarView>('day');\n protected readonly endView = signal<ZCalendarView>('day');\n protected readonly hour = signal(0);\n protected readonly minute = signal(0);\n protected readonly second = signal(0);\n protected readonly period = signal<'AM' | 'PM'>('AM');\n protected readonly inputDisplayValue = signal<string>('');\n protected readonly activePresetKey = signal<string | null>(null);\n\n protected readonly uiState = signal({\n hasViewChanged: false,\n hasEndViewChanged: false,\n timeDropdownOpen: false,\n timeDropdownEndOpen: false,\n isFocused: false,\n });\n\n protected readonly quarterNames = ['Q1', 'Q2', 'Q3', 'Q4'];\n protected readonly todayQuarterIndex = computed(() => {\n const today = new Date();\n return Math.floor(today.getMonth() / 3);\n });\n\n protected readonly selectedQuarterIndex = computed(() => {\n const date = this._selectedDate();\n return date ? Math.floor(date.getMonth() / 3) : -1;\n });\n\n protected readonly isSameDayRange = computed(() => {\n if (!this.isRangeMode()) {\n return false;\n }\n const start = this._rangeStart();\n const end = this._rangeEnd();\n if (!start || !end) {\n return false;\n }\n return isSameDay(start, end);\n });\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly isRangeMode = computed(() => this.zMode() === 'range');\n protected readonly canApply = computed(() => {\n if (this.isTimeMode()) {\n return true;\n }\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly showOkButton = computed(() => this.zShowOk() || this.zShowTime() || this.isTimeMode());\n\n protected readonly showCancelButton = computed(() => this.zShowCancel() || this.zShowTime() || this.isTimeMode());\n\n protected readonly isTimeMode = computed(() => this.zMode() === 'time');\n protected readonly isMonthMode = computed(() => this.zMode() === 'month');\n protected readonly isYearMode = computed(() => this.zMode() === 'year');\n protected readonly isQuarterMode = computed(() => this.zMode() === 'quarter');\n\n protected readonly todayButtonText = computed(() => {\n this._zTranslate.currentLang();\n if (this.isQuarterMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_this_quarter');\n }\n if (this.isYearMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_this_year');\n }\n if (this.isMonthMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_this_month');\n }\n if (this.zShowTime() || this.isTimeMode()) {\n return this._zTranslate.instant('i18n_z_ui_calendar_now');\n }\n return this._zTranslate.instant('i18n_z_ui_calendar_today');\n });\n\n protected readonly currentMonth = computed(() => this._currentMonth());\n protected readonly currentYear = computed(() => this._currentMonth().getFullYear());\n protected readonly currentMonthIndex = computed(() => this._currentMonth().getMonth());\n\n protected readonly todayMonthIndex = computed(() => new Date().getMonth());\n protected readonly todayYear = computed(() => new Date().getFullYear());\n protected readonly selectedMonthIndex = computed(() => {\n const date = this._selectedDate();\n return date ? date.getMonth() : -1;\n });\n\n protected readonly selectedYear = computed(() => {\n const date = this._selectedDate();\n return date ? date.getFullYear() : -1;\n });\n\n protected readonly endTimeContext = computed<ZEndTimeContext>(() => ({\n isSameDay: this.isSameDayRange(),\n startHour: this.hour(),\n startMinute: this.minute(),\n startSecond: this.second(),\n endHour: this._hourEnd(),\n endMinute: this._minuteEnd(),\n timeFormat: this.zTimeFormat(),\n startPeriod: this.period(),\n endPeriod: this._periodEnd(),\n }));\n\n protected readonly startMonthDisabledContext = computed<ZMonthDisabledContext>(() => ({\n currentYear: this._currentMonth().getFullYear(),\n endYear: this._endMonth().getFullYear(),\n endMonthIndex: this._endMonth().getMonth(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly endMonthDisabledContext = computed<ZEndMonthDisabledContext>(() => ({\n startYear: this._currentMonth().getFullYear(),\n startMonthIndex: this._currentMonth().getMonth(),\n endYear: this._endMonth().getFullYear(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly startYearDisabledContext = computed<ZYearDisabledContext>(() => ({\n endYear: this._endMonth().getFullYear(),\n startMonthIndex: this._currentMonth().getMonth(),\n endMonthIndex: this._endMonth().getMonth(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly endYearDisabledContext = computed<ZEndYearDisabledContext>(() => ({\n startYear: this._currentMonth().getFullYear(),\n startMonthIndex: this._currentMonth().getMonth(),\n endMonthIndex: this._endMonth().getMonth(),\n isRangeMode: this.isRangeMode(),\n disabledDateFn: this.zDisabledDate(),\n }));\n\n protected readonly currentMonthName = computed(() => {\n const month = this._currentMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'short' });\n });\n\n protected readonly yearRange = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 12);\n });\n\n protected readonly yearRangeSmall = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 9);\n });\n\n protected readonly calendarDays = computed<ZCalendarDay[][]>(() => {\n const month = this._currentMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this.hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly endMonth = computed(() => this._endMonth());\n\n protected readonly endMonthName = computed(() => {\n const month = this._endMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'short' });\n });\n\n protected readonly endMonthYear = computed(() => this._endMonth().getFullYear());\n\n protected readonly calendarDaysEnd = computed<ZCalendarDay[][]>(() => {\n const month = this._endMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this.hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly formattedHourEnd = computed(() =>\n formatTimeValue(this.zTimeFormat() === '12h' ? this._hourEnd() % 12 || 12 : this._hourEnd())\n );\n\n protected readonly formattedMinuteEnd = computed(() => formatTimeValue(this._minuteEnd()));\n protected readonly formattedSecondEnd = computed(() => formatTimeValue(this._secondEnd()));\n\n protected readonly minuteEnd = computed(() => this._minuteEnd());\n protected readonly secondEnd = computed(() => this._secondEnd());\n\n protected readonly periodEnd = computed(() => this._periodEnd());\n\n protected readonly endYearRange = computed(() => {\n const currentYear = this._endMonth().getFullYear();\n return getYearRange(currentYear);\n });\n\n protected readonly canNavigateStartNext = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const current = this._currentMonth();\n const end = this._endMonth();\n const view = this.currentView();\n\n if (view === 'day') {\n const startNext = addMonths(current, 1);\n return (\n startNext.getFullYear() < end.getFullYear() ||\n (startNext.getFullYear() === end.getFullYear() && startNext.getMonth() < end.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const startNextYear = addYears(current, 1);\n return startNextYear.getFullYear() < end.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(current.getFullYear());\n const lastYearInRange = yearRange[yearRange.length - 1];\n return lastYearInRange < end.getFullYear() - 1;\n }\n\n return true;\n });\n\n protected readonly canNavigateEndPrev = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const start = this._currentMonth();\n const end = this._endMonth();\n const view = this.endView();\n\n if (view === 'day') {\n const endPrev = addMonths(end, -1);\n return (\n endPrev.getFullYear() > start.getFullYear() ||\n (endPrev.getFullYear() === start.getFullYear() && endPrev.getMonth() > start.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const endPrevYear = addYears(end, -1);\n return endPrevYear.getFullYear() > start.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(end.getFullYear());\n const firstYearInRange = yearRange[0];\n return firstYearInRange > start.getFullYear() + 1;\n }\n\n return true;\n });\n\n protected readonly displayValue = computed(() => {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return this._formatDisplayValue(timeFormat + periodSuffix);\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return this._formatDisplayValue(`${format} ${timeFormat}${periodSuffix}`);\n }\n\n return this._formatDisplayValue(format);\n });\n\n private _formatDisplayValue(format: string): string {\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return '';\n }\n\n return `${formatDate(start, format, this.zLocale())} - ${formatDate(end, format, this.zLocale())}`;\n }\n\n const date = this._selectedDate();\n if (!date) {\n return '';\n }\n\n if (this.isMonthMode()) {\n return formatDate(date, this.zFormat(), this.zLocale());\n }\n if (this.isYearMode()) {\n return date.getFullYear().toString();\n }\n if (this.isQuarterMode()) {\n const quarter = Math.floor(date.getMonth() / 3) + 1;\n return `Q${quarter} ${date.getFullYear()}`;\n }\n\n return formatDate(date, format, this.zLocale());\n }\n\n private readonly _inputDisplayStart = signal<string>('');\n private readonly _inputDisplayEnd = signal<string>('');\n\n protected readonly inputDisplayStart = computed(() => this._inputDisplayStart());\n protected readonly inputDisplayEnd = computed(() => this._inputDisplayEnd());\n\n protected readonly displayValueStart = computed(() => {\n const format = this._getDisplayFormatStart();\n const start = this._rangeStart();\n return start ? formatDate(start, format, this.zLocale()) : '';\n });\n\n protected readonly displayValueEnd = computed(() => {\n const format = this._getDisplayFormatEnd();\n const end = this._rangeEnd();\n return end ? formatDate(end, format, this.zLocale()) : '';\n });\n\n private _getDisplayFormatStart(): string {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return timeFormat + periodSuffix;\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this.period()}` : '';\n return `${format} ${timeFormat}${periodSuffix}`;\n }\n\n return format;\n }\n\n private _getDisplayFormatEnd(): string {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._periodEnd()}` : '';\n return timeFormat + periodSuffix;\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._periodEnd()}` : '';\n return `${format} ${timeFormat}${periodSuffix}`;\n }\n\n return format;\n }\n\n protected readonly showClearButton = computed(() => {\n if (!this.zAllowClear() || this.isDisabled() || this.zReadonly() || this.isOpen()) {\n return false;\n }\n\n return this.displayValue() !== '';\n });\n\n protected readonly hasValue = computed(() => {\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n if (this.zReadonly()) {\n return 'readonly';\n }\n if (this.isOpen()) {\n return 'open';\n }\n if (this.hasError()) {\n return 'error';\n }\n return 'default';\n });\n\n protected readonly triggerClasses = computed(() =>\n zMergeClasses(\n zCalendarVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus() as 'default' | 'open' | 'error' | 'disabled' | 'readonly',\n }),\n this.class()\n )\n );\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (control) {\n return control.dirty;\n }\n return this._dirty() || this._touched();\n });\n\n protected readonly hasError = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly showError = computed(() => this.hasError());\n\n protected readonly errorMessage = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n\n if (!errors) {\n return '';\n }\n\n const validators = this.zValidators();\n for (const validator of validators) {\n if (errors[validator.error]) {\n return validator.message;\n }\n }\n\n if (errors['required']) {\n this._zTranslate.currentLang();\n return this._zTranslate.instant('i18n_z_ui_calendar_required');\n }\n return '';\n });\n\n public readonly state = computed<ZCalendarState>(() => ({\n focused: this.uiState().isFocused,\n touched: this._touched(),\n blurred: !this.uiState().isFocused,\n dirty: this._dirty(),\n disabled: this.isDisabled(),\n readonly: this.zReadonly(),\n open: this.isOpen(),\n }));\n\n constructor() {\n effect(() => {\n const date = this._selectedDate();\n if (date && this.zShowTime()) {\n this.hour.set(date.getHours());\n this.minute.set(date.getMinutes());\n this.second.set(date.getSeconds());\n }\n });\n\n effect(() => {\n this.zLocale();\n this._updateInputDisplay();\n });\n }\n\n ngOnInit(): void {\n queueMicrotask(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n if (!this._ngControl?.control) {\n return;\n }\n\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(control.statusChanges, control.valueChanges, control.events)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n });\n } catch {\n this._ngControl = null;\n }\n });\n\n this._emitControl();\n }\n\n public writeValue(value: ZCalendarValue): void {\n if (value === null || value === undefined) {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n\n const valueType = this.zValueType();\n if (this.isRangeMode()) {\n if (typeof value === 'object' && 'start' in value && 'end' in value) {\n const range = value as ZDateRange;\n this._rangeStart.set(range.start);\n this._rangeEnd.set(range.end);\n\n if (range.start && range.end) {\n this._currentMonth.set(range.start);\n this._endMonth.set(isSameMonth(range.start, range.end) ? addMonths(range.end, 1) : range.end);\n if (this.zShowTime()) {\n this._syncTimeSignals(range.start);\n this._syncEndTimeSignals(range.end);\n }\n }\n\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n return;\n }\n\n let date: Date | null = null;\n if (value instanceof Date) {\n date = value;\n }\n\n if (!date && typeof value === 'string') {\n date = valueType === 'iso' ? fromISOString(value) : parseDate(value, this.zFormat());\n }\n\n if (!date) {\n return;\n }\n\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._updateInputDisplay();\n }\n\n public registerOnChange(fn: (value: ZCalendarValue) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public open(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n this._popoverControl()?.show();\n }\n\n public close(): void {\n this._popoverControl()?.close();\n }\n\n public toggle(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n const popover = this._popoverControl();\n if (!popover) {\n return;\n }\n\n if (popover.isVisible()) {\n if (!this.showCancelButton()) {\n this.close();\n }\n return;\n }\n\n this.open();\n }\n\n public clear(): void {\n this.onClear(new MouseEvent('click'));\n }\n\n public focus(): void {\n this.triggerRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this.triggerRef()?.nativeElement.blur();\n }\n\n public reset(): void {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this._touched.set(false);\n this._dirty.set(false);\n this.inputDisplayValue.set('');\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsPristine();\n this._ngControl.control.markAsUntouched();\n }\n }\n\n public validate(): boolean {\n this._touched.set(true);\n this._dirty.set(true);\n this._onTouched();\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsDirty();\n this._ngControl.control.markAsTouched();\n }\n\n return this._ngControl?.control?.valid ?? true;\n }\n\n public markAsTouched(): void {\n this._touched.set(true);\n this._onTouched();\n }\n\n public markAsUntouched(): void {\n this._touched.set(false);\n }\n\n public markAsDirty(): void {\n this._dirty.set(true);\n }\n\n public markAsPristine(): void {\n this._dirty.set(false);\n }\n\n protected onPopoverShow(): void {\n this.uiState.update(s => ({ ...s, isFocused: true, hasViewChanged: false, hasEndViewChanged: false }));\n this._backupIfNeeded();\n this._appliedViaOk.set(false);\n\n if (this.isMonthMode()) {\n this.currentView.set('month');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isYearMode()) {\n this.currentView.set('year');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isQuarterMode()) {\n this.currentView.set('quarter');\n this._initializeTimeIfNeeded();\n return;\n }\n\n this.currentView.set('day');\n this._initializeTimeIfNeeded();\n\n if (this.isRangeMode()) {\n this.endView.set('day');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n if (!this.isRangeMode()) {\n this.activePresetKey.set(null);\n const selected = this._selectedDate();\n if (selected) {\n this._currentMonth.set(selected);\n return;\n }\n this._resetCalendarsToDefault();\n return;\n }\n\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (start && end) {\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this.activePresetKey.set(this._detectMatchingPreset(start, end));\n return;\n }\n\n if (this.zQuickSelect()) {\n this.activePresetKey.set(null);\n this._resetCalendarsToDefault();\n return;\n }\n\n this.activePresetKey.set(null);\n this._resetCalendarsToDefault();\n }\n\n private _initializeTimeIfNeeded(): void {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return;\n }\n\n const now = new Date();\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n this._syncTimeSignals(start ?? now);\n this._syncEndTimeSignals(end ?? now);\n return;\n }\n\n const selected = this._selectedDate();\n this._syncTimeSignals(selected ?? now);\n }\n\n private _syncEndTimeSignals(date: Date): void {\n const hours = date.getHours();\n this._hourEnd.set(hours);\n this._minuteEnd.set(date.getMinutes());\n this._secondEnd.set(date.getSeconds());\n this._periodEnd.set(hours >= 12 ? 'PM' : 'AM');\n }\n\n private _resetCalendarsToDefault(): void {\n const today = getToday();\n this._currentMonth.set(today);\n this._endMonth.set(addMonths(today, 1));\n this.currentView.set('day');\n this.endView.set('day');\n }\n\n private _backupIfNeeded(): void {\n this._backupSelectedDate.set(this._selectedDate());\n this._backupRangeStart.set(this._rangeStart());\n this._backupRangeEnd.set(this._rangeEnd());\n }\n\n protected onPopoverHide(): void {\n this.uiState.update(s => ({ ...s, isFocused: false }));\n this.hoveredDate.set(null);\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n if (needsConfirmation && !this._appliedViaOk()) {\n this._restoreFromBackup();\n }\n\n if (this.isRangeMode()) {\n const hasIncompleteRange = this._rangeStart() && !this._rangeEnd();\n if (hasIncompleteRange) {\n this._restoreFromBackup();\n this._dirty.set(false);\n }\n }\n\n if (this._dirty()) {\n this._touched.set(true);\n }\n\n this._onTouched();\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n this.triggerRef()?.nativeElement.blur();\n }\n\n private _restoreFromBackup(): void {\n this._selectedDate.set(this._backupSelectedDate());\n this._rangeStart.set(this._backupRangeStart());\n this._rangeEnd.set(this._backupRangeEnd());\n this._dirty.set(false);\n\n if (this.isRangeMode()) {\n const backupStart = this._backupRangeStart();\n const backupEnd = this._backupRangeEnd();\n if (backupStart) {\n this._syncTimeSignals(backupStart);\n }\n if (backupEnd) {\n this._syncEndTimeSignals(backupEnd);\n }\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n const backup = this._backupSelectedDate();\n if (backup) {\n this._syncTimeSignals(backup);\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n protected onPopoverControl(control: ZPopoverControl): void {\n this._popoverControl.set(control);\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this._popoverControl()?.toggle();\n return;\n }\n\n if (event.key === 'Escape' && this.isOpen()) {\n event.preventDefault();\n this._cancelAndRestore();\n }\n }\n\n protected onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this.inputDisplayValue.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n if (this.isRangeMode()) {\n const parts = trimmedValue.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start) {\n this._rangeStart.set(start);\n this._currentMonth.set(start);\n }\n if (end) {\n this._rangeEnd.set(end);\n this._endMonth.set(end);\n }\n }\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (date) {\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n }\n\n private _getExpectedFormatLength(format: string): number {\n return format.replace(/\\[.*?\\]/g, ' ').length;\n }\n\n protected onStartInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayStart.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n this._inputDisplayStart.set(this.displayValueStart());\n return;\n }\n\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n\n protected onEndInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayEnd.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n }\n\n protected onStartInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n }\n }\n\n protected onEndInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n this._dirty.set(true);\n this._inputDisplayEnd.set(this.displayValueEnd());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n }\n }\n\n protected onInputFocus(_event: FocusEvent): void {\n this._backupSelectedDate.set(this._selectedDate());\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this._skipBlurHandler()) {\n this._skipBlurHandler.set(false);\n return;\n }\n\n if (this.isRangeMode()) {\n return;\n }\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n\n if (needsConfirmation && this.isOpen()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n const currentValue = input.value.trim();\n const format = this._getParseFormat();\n\n if (!currentValue) {\n this._selectedDate.set(null);\n this._backupSelectedDate.set(null);\n this.inputDisplayValue.set('');\n this._applyValue();\n return;\n }\n\n const parsed = parseDate(currentValue, format);\n if (parsed) {\n this._selectedDate.set(parsed);\n this._currentMonth.set(parsed);\n this._syncTimeSignals(parsed);\n this._backupSelectedDate.set(parsed);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n return;\n }\n\n const backup = this._backupSelectedDate();\n this._selectedDate.set(backup);\n this.inputDisplayValue.set(this.displayValue());\n }\n\n protected onInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n\n if (!value) {\n this._skipBlurHandler.set(true);\n this._clearDateValues();\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n const format = this._getParseFormat();\n if (this.isRangeMode()) {\n const parts = value.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start && end) {\n this._skipBlurHandler.set(true);\n const swapped = start > end;\n const rangeStart = swapped ? end : start;\n const rangeEnd = swapped ? start : end;\n this._rangeStart.set(rangeStart);\n this._rangeEnd.set(rangeEnd);\n this._currentMonth.set(rangeStart);\n this._endMonth.set(rangeEnd);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n }\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n return;\n }\n\n const date = parseDate(value, format);\n if (date) {\n this._skipBlurHandler.set(true);\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n }\n\n protected onCalendarKeydown(event: KeyboardEvent): void {\n const { key, target } = event;\n\n if (key === 'Escape') {\n event.preventDefault();\n this._cancelAndRestore();\n return;\n }\n\n if (this.currentView() !== 'day') {\n return;\n }\n\n if (key === 'Enter') {\n if (target instanceof HTMLInputElement) {\n return;\n }\n if (!this.isRangeMode() || this.zShowTime()) {\n this.onOkClick();\n }\n return;\n }\n\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n event.preventDefault();\n this._navigateByArrowKey(key);\n }\n }\n\n protected onDayClick(day: ZCalendarDay): void {\n if (day.isDisabled) {\n return;\n }\n\n const clickedDate = day.date;\n\n if (this.isRangeMode()) {\n this._handleRangeSelection(clickedDate);\n return;\n }\n\n this._handleSingleSelection(clickedDate);\n }\n\n protected onDayHover(day: ZCalendarDay): void {\n if (this.isRangeMode() && this._rangeStart() && !this._rangeEnd()) {\n this.hoveredDate.set(day.date);\n }\n }\n\n protected onDayLeave(): void {\n if (this.isRangeMode()) {\n this.hoveredDate.set(null);\n }\n }\n\n protected onMonthClick(monthIndex: number): void {\n const currentDate = this._currentMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n if (this.isRangeMode()) {\n const endMonth = this._endMonth();\n const isExceedingEnd =\n newMonth.getFullYear() > endMonth.getFullYear() ||\n (newMonth.getFullYear() === endMonth.getFullYear() && newMonth.getMonth() >= endMonth.getMonth());\n\n if (isExceedingEnd) {\n newMonth = addMonths(endMonth, -1);\n }\n }\n\n this._currentMonth.set(newMonth);\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n this.currentView.set('day');\n }\n\n protected onYearClick(year: number): void {\n const currentDate = this._currentMonth();\n\n if (this.isYearMode()) {\n this._selectedDate.set(setYear(new Date(year, 0, 1), year));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n let newYear = year;\n\n if (this.isRangeMode()) {\n const endYear = this._endMonth().getFullYear();\n if (newYear >= endYear) {\n newYear = endYear - 1;\n }\n }\n\n this._currentMonth.set(setYear(currentDate, newYear));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n this.currentView.set(this.isQuarterMode() ? 'quarter' : 'month');\n }\n\n protected onQuarterClick(quarterIndex: number): void {\n const currentYear = this._currentMonth().getFullYear();\n const firstMonthOfQuarter = quarterIndex * 3;\n const date = new Date(currentYear, firstMonthOfQuarter, 1);\n this._selectedDate.set(date);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n }\n\n protected onMonthSelect(monthIndex: number): void {\n if (this.isMonthMode()) {\n const currentYear = this._currentMonth().getFullYear();\n this._selectedDate.set(new Date(currentYear, monthIndex, 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n this.onMonthClick(monthIndex);\n }\n\n protected onQuickSelect(preset: ZQuickSelectPreset): void {\n this.activePresetKey.set(preset.key);\n if (preset.key === 'custom') {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n return;\n }\n\n const value = preset.getValue();\n if (!value) {\n return;\n }\n\n if (value instanceof Date) {\n this._rangeStart.set(value);\n this._rangeEnd.set(value);\n this._currentMonth.set(value);\n this._endMonth.set(addMonths(value, 1));\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n this._rangeStart.set(value.start);\n this._rangeEnd.set(value.end);\n\n const start = value.start ?? getToday();\n const end = value.end ?? getToday();\n\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onTodayClick(): void {\n const now = new Date();\n const today = getToday();\n this._currentMonth.set(today);\n\n if (this.zShowTime() || this.isTimeMode()) {\n this.hour.set(now.getHours());\n this.minute.set(now.getMinutes());\n this.second.set(now.getSeconds());\n this.period.set(now.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n if (this.isMonthMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), now.getMonth(), 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isYearMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), 0, 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isQuarterMode()) {\n const currentQuarter = Math.floor(now.getMonth() / 3);\n this._selectedDate.set(new Date(now.getFullYear(), currentQuarter * 3, 1));\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isTimeMode()) {\n this._selectedDate.set(now);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n if (this.isRangeMode()) {\n const rangeDate = this.zShowTime() ? now : today;\n this._rangeStart.set(rangeDate);\n this._rangeEnd.set(rangeDate);\n this._endMonth.set(addMonths(today, 1));\n if (this.zShowTime()) {\n this._syncEndTimeSignals(now);\n }\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n const selectedDate = this.zShowTime() ? now : today;\n this._selectedDate.set(selectedDate);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onClear(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this._dirty.set(true);\n\n this._backupSelectedDate.set(null);\n this._backupRangeStart.set(null);\n this._backupRangeEnd.set(null);\n this._appliedViaOk.set(true);\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this.inputDisplayValue.set('');\n if (this.isRangeMode()) {\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n }\n\n this.close();\n }\n\n protected onCancelClick(): void {\n this.close();\n }\n\n protected onOkClick(): void {\n if (!this.canApply()) {\n return;\n }\n\n if (this.isTimeMode()) {\n let hour = this.hour();\n if (this.zTimeFormat() === '12h') {\n if (this.period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this.period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n const baseDate = this._selectedDate() ?? new Date();\n this._selectedDate.set(setTime(baseDate, hour, this.minute(), this.second()));\n }\n\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n }\n\n protected navigatePrevious(): void {\n const view = this.currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, -1),\n month: addYears(current, -1),\n year: addYears(current, -yearStep),\n quarter: addYears(current, -1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigateNext(): void {\n const view = this.currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, 1),\n month: addYears(current, 1),\n year: addYears(current, yearStep),\n quarter: addYears(current, 1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigatePreviousFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, -1));\n }\n\n protected navigateNextFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, 1));\n }\n\n protected setView(view: ZCalendarView): void {\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n this.currentView.set(view);\n }\n\n protected setEndView(view: ZCalendarView): void {\n this.uiState.update(s => ({ ...s, hasEndViewChanged: true }));\n this.endView.set(view);\n }\n\n protected onEndMonthClick(monthIndex: number): void {\n const currentDate = this._endMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n const startMonth = this._currentMonth();\n const isBeforeStart =\n newMonth.getFullYear() < startMonth.getFullYear() ||\n (newMonth.getFullYear() === startMonth.getFullYear() && newMonth.getMonth() <= startMonth.getMonth());\n\n if (isBeforeStart) {\n newMonth = addMonths(startMonth, 1);\n }\n\n this._endMonth.set(newMonth);\n this.uiState.update(s => ({ ...s, hasEndViewChanged: true }));\n this.endView.set('day');\n }\n\n protected onEndYearClick(year: number): void {\n const currentDate = this._endMonth();\n let newYear = year;\n\n const startYear = this._currentMonth().getFullYear();\n if (newYear <= startYear) {\n newYear = startYear + 1;\n }\n\n this._endMonth.set(setYear(currentDate, newYear));\n this.uiState.update(s => ({ ...s, hasEndViewChanged: true }));\n this.endView.set('month');\n }\n\n protected onHourInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this.hour.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected onMinuteInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this.minute.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected onSecondInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this.second.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected onTimeBlur(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n const digits = input.value.replace(/\\D/g, '');\n\n if (digits.length > 0 && digits.length <= 2) {\n if (dataType === 'hour') {\n const value = parseTimeValue(digits, this.zTimeFormat() === '12h' ? 12 : 23);\n this.hour.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n if (dataType === 'minute') {\n const value = parseTimeValue(digits, 59);\n this.minute.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n if (dataType === 'second') {\n const value = parseTimeValue(digits, 59);\n this.second.set(value);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n }\n\n if (dataType === 'hour') {\n input.value = this.formattedHour();\n }\n if (dataType === 'minute') {\n input.value = this.formattedMinute();\n }\n if (dataType === 'second') {\n input.value = this.formattedSecond();\n }\n }\n\n protected navigateEndPrevious(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, -1));\n }\n\n protected navigateEndNext(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, 1));\n }\n\n protected navigateEndPreviousFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, -1));\n }\n\n protected navigateEndNextFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, 1));\n }\n\n protected onHourEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this._hourEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onMinuteEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._minuteEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onSecondEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._secondEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onTimeBlurEnd(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n const digits = input.value.replace(/\\D/g, '');\n\n if (digits.length > 0 && digits.length <= 2) {\n if (dataType === 'hour-end') {\n const value = parseTimeValue(digits, this.zTimeFormat() === '12h' ? 12 : 23);\n this._hourEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n if (dataType === 'minute-end') {\n const value = parseTimeValue(digits, 59);\n this._minuteEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n if (dataType === 'second-end') {\n const value = parseTimeValue(digits, 59);\n this._secondEnd.set(value);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n if (dataType === 'hour-end') {\n input.value = this.formattedHourEnd();\n }\n if (dataType === 'minute-end') {\n input.value = this.formattedMinuteEnd();\n }\n if (dataType === 'second-end') {\n input.value = this.formattedSecondEnd();\n }\n }\n\n protected togglePeriodEnd(): void {\n const currentPeriod = this._periodEnd();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this._periodEnd.set(newPeriod);\n\n const currentHour = this._hourEnd();\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hourEnd.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hourEnd.set(currentHour - 12);\n }\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n private _updateEndTimeToDate(): void {\n const end = this._rangeEnd();\n if (!end) {\n return;\n }\n\n let hour = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n const newDate = setTime(end, hour, this._minuteEnd(), this._secondEnd());\n this._rangeEnd.set(newDate);\n this._dirty.set(true);\n }\n\n private _resolveDefaultTime(config: ZCalendarDefaultTime | null | undefined): ZCalendarTimeConfig {\n if (!config) {\n return { hour: this.hour(), minute: this.minute(), second: this.second() };\n }\n\n if (typeof config === 'object') {\n return config;\n }\n\n switch (config) {\n case 'current': {\n const now = new Date();\n return { hour: now.getHours(), minute: now.getMinutes(), second: now.getSeconds() };\n }\n case 'start':\n return { hour: 0, minute: 0, second: 0 };\n case 'end':\n return { hour: 23, minute: 59, second: this.zShowSecond() ? 59 : 0 };\n default:\n return { hour: this.hour(), minute: this.minute(), second: this.second() };\n }\n }\n\n private _resolveRangeStartTime(): ZCalendarTimeConfig {\n const rangeConfig = this.zRangeDefaultTime();\n if (rangeConfig?.start) {\n return this._resolveDefaultTime(rangeConfig.start);\n }\n return this._resolveDefaultTime(this.zDefaultTime());\n }\n\n private _resolveRangeEndTime(): ZCalendarTimeConfig {\n const rangeConfig = this.zRangeDefaultTime();\n if (rangeConfig?.end) {\n return this._resolveDefaultTime(rangeConfig.end);\n }\n return this._resolveDefaultTime(this.zDefaultTime());\n }\n\n private _handleSingleSelection(date: Date): void {\n let finalDate = date;\n const shouldApplyTime = this.zShowTime() || hasTimeTokens(this.zFormat());\n\n if (shouldApplyTime) {\n const defaultTime = this._resolveDefaultTime(this.zDefaultTime());\n this.hour.set(defaultTime.hour);\n this.minute.set(defaultTime.minute);\n this.second.set(defaultTime.second);\n if (this.zTimeFormat() === '12h') {\n this.period.set(defaultTime.hour >= 12 ? 'PM' : 'AM');\n }\n finalDate = setTime(date, defaultTime.hour, defaultTime.minute, defaultTime.second);\n }\n\n this._selectedDate.set(finalDate);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n\n if (!this.zShowTime() && !this.zShowOk()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _handleRangeSelection(date: Date): void {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n const shouldApplyTime = this.zShowTime() || hasTimeTokens(this.zFormat());\n\n if (!start || (start && end)) {\n let startDate = date;\n if (shouldApplyTime) {\n const defaultTime = this._resolveRangeStartTime();\n this.hour.set(defaultTime.hour);\n this.minute.set(defaultTime.minute);\n this.second.set(defaultTime.second);\n if (this.zTimeFormat() === '12h') {\n this.period.set(defaultTime.hour >= 12 ? 'PM' : 'AM');\n }\n startDate = setTime(date, defaultTime.hour, defaultTime.minute, defaultTime.second);\n }\n this._rangeStart.set(startDate);\n this._rangeEnd.set(null);\n this.activePresetKey.set('custom');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set('');\n return;\n }\n\n let endDate = date;\n if (shouldApplyTime) {\n const defaultTime = this._resolveRangeEndTime();\n this._hourEnd.set(defaultTime.hour);\n this._minuteEnd.set(defaultTime.minute);\n this._secondEnd.set(defaultTime.second);\n if (this.zTimeFormat() === '12h') {\n this._periodEnd.set(defaultTime.hour >= 12 ? 'PM' : 'AM');\n }\n endDate = setTime(date, defaultTime.hour, defaultTime.minute, defaultTime.second);\n }\n\n const normalized = normalizeRange(start, endDate);\n this._rangeStart.set(normalized.start);\n this._rangeEnd.set(normalized.end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (normalized.start && normalized.end) {\n this.activePresetKey.set(this._detectMatchingPreset(normalized.start, normalized.end));\n }\n\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _updateTimeToDate(): void {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return;\n }\n\n let hour = this.hour();\n if (this.zTimeFormat() === '12h') {\n if (this.period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this.period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n if (start) {\n this._rangeStart.set(setTime(start, hour, this.minute(), this.second()));\n this._dirty.set(true);\n }\n return;\n }\n\n const selected = this._selectedDate();\n if (selected) {\n this._selectedDate.set(setTime(selected, hour, this.minute(), this.second()));\n }\n }\n\n private _detectMatchingPreset(start: Date, end: Date): string | null {\n for (const preset of this.quickSelectPresets) {\n if (preset.key === 'custom') {\n continue;\n }\n const value = preset.getValue();\n if (value && !(value instanceof Date)) {\n if (value.start && value.end && isSameDay(start, value.start) && isSameDay(end, value.end)) {\n return preset.key;\n }\n }\n }\n return 'custom';\n }\n\n private _applyValue(): void {\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this._dirty.set(true);\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _getEmitValue(): ZCalendarValue {\n const valueType = this.zValueType();\n const format = this.zShowTime() ? `${this.zFormat()} HH:mm:ss` : this.zFormat();\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return null;\n }\n\n if (valueType === 'iso') {\n return { start: toISOString(start), end: toISOString(end) } as unknown as ZCalendarValue;\n }\n\n if (valueType === 'string') {\n return {\n start: formatDate(start, format, this.zLocale()),\n end: formatDate(end, format, this.zLocale()),\n } as unknown as ZCalendarValue;\n }\n\n return { start, end };\n }\n\n const date = this._selectedDate();\n if (!date) {\n return null;\n }\n\n if (valueType === 'iso') {\n return toISOString(date);\n }\n if (valueType === 'string') {\n return formatDate(date, format, this.zLocale());\n }\n\n return date;\n }\n\n private _getValidationErrors(): string[] {\n const validators = this.zValidators();\n const errors: string[] = [];\n\n if (!this._shouldShowValidation()) {\n return errors;\n }\n\n const isRequired = this.zRequired() || this._formControl()?.errors?.['required'];\n if (isRequired) {\n const hasValidValue = this.isRangeMode() ? !!(this._rangeStart() && this._rangeEnd()) : !!this._selectedDate();\n if (!hasValidValue) {\n errors.push(this._zTranslate.instant('i18n_z_ui_calendar_required'));\n }\n }\n\n const value = this._getEmitValue();\n for (const validator of validators) {\n if (!validator.validate(value)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n private _navigateByArrowKey(key: string): void {\n const currentDate = this._selectedDate() ?? getToday();\n let newDate: Date;\n\n switch (key) {\n case 'ArrowUp':\n newDate = addDays(currentDate, -7);\n break;\n case 'ArrowDown':\n newDate = addDays(currentDate, 7);\n break;\n case 'ArrowLeft':\n newDate = addDays(currentDate, -1);\n break;\n case 'ArrowRight':\n newDate = addDays(currentDate, 1);\n break;\n default:\n return;\n }\n\n const minDate = this.zMinDate();\n const maxDate = this.zMaxDate();\n\n if (minDate && newDate < minDate) {\n return;\n }\n if (maxDate && newDate > maxDate) {\n return;\n }\n\n this._selectedDate.set(newDate);\n\n if (!isSameMonth(newDate, this._currentMonth())) {\n this._currentMonth.set(newDate);\n }\n }\n\n private _syncTimeSignals(date: Date): void {\n this.hour.set(date.getHours());\n this.minute.set(date.getMinutes());\n this.second.set(date.getSeconds());\n this.period.set(date.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n private _getParseFormat(): string {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return this.zFormat();\n }\n\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n\n const timeFormat = timeParts.join(':');\n if (this.isTimeMode()) {\n return timeFormat;\n }\n return `${this.zFormat()} ${timeFormat}`;\n }\n\n private _updateInputDisplay(): void {\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _clearDateValues(): void {\n if (this.isRangeMode()) {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n this._selectedDate.set(null);\n }\n\n protected onInputEscape(): void {\n this._cancelAndRestore();\n }\n\n protected onStartInputEscape(): void {\n this._cancelAndRestore();\n }\n\n protected onEndInputEscape(): void {\n this._cancelAndRestore();\n }\n\n private _cancelAndRestore(): void {\n this._restoreFromBackup();\n this._updateAllInputDisplays();\n this.close();\n }\n\n private _updateAllInputDisplays(): void {\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n validate: () => this.validate(),\n reset: () => this.reset(),\n focus: () => this.focus(),\n blur: () => this.blur(),\n open: () => this.open(),\n close: () => this.close(),\n clear: () => this.clear(),\n markAsTouched: () => this.markAsTouched(),\n markAsUntouched: () => this.markAsUntouched(),\n markAsDirty: () => this.markAsDirty(),\n markAsPristine: () => this.markAsPristine(),\n hasError: this.hasError,\n isOpen: this.isOpen,\n value: computed(() => this._getEmitValue()),\n errorMessage: this.errorMessage,\n state: this.state,\n });\n }\n\n protected togglePeriod(): void {\n const currentPeriod = this.period();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this.period.set(newPeriod);\n\n const currentHour = this.hour();\n if (newPeriod === 'PM' && currentHour < 12) {\n this.hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this.hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n }\n\n protected incrementHour(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHour();\n currentHour = currentHour >= maxHour ? minHour : currentHour + 1;\n this.selectHour(currentHour, true);\n }\n\n protected decrementHour(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHour();\n currentHour = currentHour <= minHour ? maxHour : currentHour - 1;\n this.selectHour(currentHour, true);\n }\n\n protected incrementMinute(): void {\n let currentMinute = this.minute();\n currentMinute = currentMinute >= 59 ? 0 : currentMinute + 1;\n this.selectMinute(currentMinute, true);\n }\n\n protected decrementMinute(): void {\n let currentMinute = this.minute();\n currentMinute = currentMinute <= 0 ? 59 : currentMinute - 1;\n this.selectMinute(currentMinute, true);\n }\n\n protected incrementSecond(): void {\n let currentSecond = this.second();\n currentSecond = currentSecond >= 59 ? 0 : currentSecond + 1;\n this.selectSecond(currentSecond, true);\n }\n\n protected decrementSecond(): void {\n let currentSecond = this.second();\n currentSecond = currentSecond <= 0 ? 59 : currentSecond - 1;\n this.selectSecond(currentSecond, true);\n }\n\n protected incrementHourEnd(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHourEnd();\n currentHour = currentHour >= maxHour ? minHour : currentHour + 1;\n this.selectHourEnd(currentHour, true);\n }\n\n protected decrementHourEnd(): void {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n let currentHour = this.displayHourEnd();\n currentHour = currentHour <= minHour ? maxHour : currentHour - 1;\n this.selectHourEnd(currentHour, true);\n }\n\n protected incrementMinuteEnd(): void {\n let currentMinute = this._minuteEnd();\n currentMinute = currentMinute >= 59 ? 0 : currentMinute + 1;\n this.selectMinuteEnd(currentMinute, true);\n }\n\n protected decrementMinuteEnd(): void {\n let currentMinute = this._minuteEnd();\n currentMinute = currentMinute <= 0 ? 59 : currentMinute - 1;\n this.selectMinuteEnd(currentMinute, true);\n }\n\n protected incrementSecondEnd(): void {\n let currentSecond = this._secondEnd();\n currentSecond = currentSecond >= 59 ? 0 : currentSecond + 1;\n this.selectSecondEnd(currentSecond, true);\n }\n\n protected decrementSecondEnd(): void {\n let currentSecond = this._secondEnd();\n currentSecond = currentSecond <= 0 ? 59 : currentSecond - 1;\n this.selectSecondEnd(currentSecond, true);\n }\n\n protected openTimeDropdown(event: MouseEvent): void {\n event.stopPropagation();\n this.uiState.update(s => ({ ...s, timeDropdownOpen: true }));\n }\n\n protected closeTimeDropdown(): void {\n this.uiState.update(s => ({ ...s, timeDropdownOpen: false }));\n }\n\n protected openTimeDropdownEnd(event: MouseEvent): void {\n event.stopPropagation();\n this.uiState.update(s => ({ ...s, timeDropdownEndOpen: true }));\n }\n\n protected closeTimeDropdownEnd(): void {\n this.uiState.update(s => ({ ...s, timeDropdownEndOpen: false }));\n }\n\n protected onTimeDropdownShow(): void {\n this._scrollToTimeDropdown();\n }\n\n protected onTimeDropdownEndShow(): void {\n this._scrollToTimeDropdown(true);\n }\n\n private _scrollToTimeDropdown(isEnd = false): void {\n setTimeout(() => {\n const suffix = isEnd ? '-end' : '';\n\n if (this.zShowHour()) {\n this._scrollToTimeValue(`.z-time-scroll-hour${suffix}`);\n }\n\n if (this.zShowMinute()) {\n this._scrollToTimeValue(`.z-time-scroll-minute${suffix}`);\n }\n\n if (this.zShowSecond()) {\n this._scrollToTimeValue(`.z-time-scroll-second${suffix}`);\n }\n });\n }\n\n private _updateInputDisplayAfterTimeChange(): void {\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n return;\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n protected onPeriodChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newPeriod = select.value as 'AM' | 'PM';\n const currentHour = this.hour();\n\n this.period.set(newPeriod);\n if (newPeriod === 'PM' && currentHour < 12) {\n this.hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this.hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n }\n\n protected selectHour(hour: number, shouldScroll = false): void {\n let actualHour = hour;\n if (this.zTimeFormat() === '12h') {\n if (this.period() === 'PM' && hour !== 12) {\n actualHour = hour + 12;\n }\n if (this.period() === 'AM' && hour === 12) {\n actualHour = 0;\n }\n }\n this.hour.set(actualHour);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-hour');\n }\n }\n\n protected selectMinute(minute: number, shouldScroll = false): void {\n this.minute.set(minute);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-minute');\n }\n }\n\n protected selectSecond(second: number, shouldScroll = false): void {\n this.second.set(second);\n this._updateTimeToDate();\n this._updateInputDisplayAfterTimeChange();\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-second');\n }\n }\n\n protected selectPeriod(period: 'AM' | 'PM'): void {\n if (this.period() === period) {\n return;\n }\n this.togglePeriod();\n }\n\n protected selectHourEnd(hour: number, shouldScroll = false): void {\n let actualHour = hour;\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour !== 12) {\n actualHour = hour + 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n actualHour = 0;\n }\n }\n this._hourEnd.set(actualHour);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-hour-end');\n }\n }\n\n protected selectMinuteEnd(minute: number, shouldScroll = false): void {\n this._minuteEnd.set(minute);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-minute-end');\n }\n }\n\n protected selectSecondEnd(second: number, shouldScroll = false): void {\n this._secondEnd.set(second);\n this._updateEndTimeToDate();\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (shouldScroll) {\n this._scrollToTimeValue('.z-time-scroll-second-end');\n }\n }\n\n protected selectPeriodEnd(period: 'AM' | 'PM'): void {\n if (this._periodEnd() === period) {\n return;\n }\n this.togglePeriodEnd();\n }\n\n protected scrollToSelectedTime(container: HTMLElement | null, value: number, itemHeight = 28): void {\n if (!container) {\n return;\n }\n const scrollTop = value * itemHeight;\n container.scrollTo({ top: scrollTop, behavior: 'smooth' });\n }\n\n private _scrollToTimeValue(scrollbarSelector: string): void {\n setTimeout(() => {\n const scrollbar = document.querySelector(scrollbarSelector);\n if (!scrollbar) {\n return;\n }\n const selectedButton = scrollbar.querySelector('button.bg-primary');\n if (selectedButton) {\n selectedButton.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n });\n }\n}\n","<div class=\"z-calendar-wrapper flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"pickerId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <div\n #triggerEl\n z-popover\n [zPopoverContent]=\"calendarTpl\"\n zPosition=\"bottom-left\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"6\"\n [zDisabled]=\"isDisabled() || zReadonly()\"\n [zManualClose]=\"showCancelButton()\"\n [zScrollClose]=\"zScrollClose()\"\n zTrigger=\"click\"\n zClass=\"border-0 shadow-none bg-transparent p-0\"\n (zHideStart)=\"onPopoverHide()\"\n (zShow)=\"onPopoverShow()\"\n (zControl)=\"onPopoverControl($event)\"\n [id]=\"pickerId\"\n [class]=\"triggerClasses()\"\n (keydown)=\"onTriggerKeydown($event)\">\n <z-icon\n [zType]=\"isRangeMode() ? 'lucideCalendarRange' : 'lucideCalendar'\"\n zSize=\"16\"\n class=\"text-muted-foreground shrink-0 cursor-pointer\"\n (click)=\"$event.stopPropagation(); toggle()\" />\n\n @if (isRangeMode()) {\n <input\n type=\"text\"\n data-range-type=\"start\"\n class=\"placeholder:text-muted-foreground w-0 min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n [placeholder]=\"'i18n_z_ui_calendar_start_date' | translate\"\n [value]=\"inputDisplayStart()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onStartInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onStartInputEnter($event)\"\n (keydown.escape)=\"onStartInputEscape()\" />\n <span class=\"text-muted-foreground text-sm\">-</span>\n <input\n type=\"text\"\n data-range-type=\"end\"\n class=\"placeholder:text-muted-foreground w-0 min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n [placeholder]=\"'i18n_z_ui_calendar_end_date' | translate\"\n [value]=\"inputDisplayEnd()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onEndInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onEndInputEnter($event)\"\n (keydown.escape)=\"onEndInputEscape()\" />\n } @else {\n <input\n #inputEl\n type=\"text\"\n class=\"placeholder:text-muted-foreground w-0 min-w-0 flex-1 truncate bg-transparent text-sm outline-none\"\n [placeholder]=\"zPlaceholder()\"\n [value]=\"inputDisplayValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onInputEnter($event)\"\n (keydown.escape)=\"onInputEscape()\" />\n }\n\n @if (zAllowClear() && !isDisabled() && !zReadonly()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"text-muted-foreground hover:text-foreground flex size-5 shrink-0 cursor-pointer items-center justify-center rounded transition-all\"\n [class.opacity-0]=\"!hasValue()\"\n [class.pointer-events-none]=\"!hasValue()\"\n (click)=\"onClear($event)\">\n <z-icon zType=\"lucideX\" zSize=\"14\" />\n </button>\n }\n </div>\n </div>\n\n @if (showError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n</div>\n\n<ng-template #calendarTpl>\n <div\n class=\"z-calendar-calendar bg-popover border-border flex max-h-[50dvh] max-w-[95vw] flex-col overflow-auto rounded-[6px] border shadow-lg min-[480px]:max-h-[55dvh] sm:max-h-none sm:max-w-none sm:flex-row sm:overflow-visible\"\n (keydown)=\"onCalendarKeydown($event)\">\n @if (zQuickSelect() && zMode() === 'range') {\n <div\n class=\"border-border flex shrink-0 flex-row gap-1 overflow-x-auto border-b p-2 sm:flex-col sm:gap-0 sm:space-y-1 sm:overflow-x-visible sm:border-r sm:border-b-0\">\n @for (preset of quickSelectPresets; track preset.key) {\n @let presetDisabled = preset | zIsPresetDisabled: zDisabledDate();\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-[4px] px-3 py-1.5 text-left text-sm whitespace-nowrap transition-colors\"\n [class.hover:bg-muted]=\"activePresetKey() !== preset.key && !presetDisabled\"\n [class.bg-primary]=\"activePresetKey() === preset.key\"\n [class.text-primary-foreground]=\"activePresetKey() === preset.key\"\n [class.font-medium]=\"activePresetKey() === preset.key\"\n [class.opacity-40]=\"presetDisabled\"\n [class.cursor-not-allowed]=\"presetDisabled\"\n [disabled]=\"presetDisabled\"\n (click)=\"onQuickSelect(preset)\">\n {{ preset.label | translate }}\n </button>\n }\n </div>\n }\n <div\n class=\"flex flex-1 flex-col items-center overflow-auto py-2 sm:overflow-visible\"\n [class]=\"!isRangeMode() ? 'w-[280px]' : ''\">\n @if (!isTimeMode()) {\n <div\n class=\"z-calendars-wrapper flex w-full flex-col items-center gap-3 sm:flex-row sm:items-stretch sm:justify-center sm:gap-0\">\n <!-- First Calendar -->\n <div class=\"z-calendar-section flex w-[280px] shrink-0 flex-col\">\n @if (!isTimeMode()) {\n <!-- Header -->\n <div class=\"border-border flex w-full items-center justify-between gap-0.5 px-2\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n (click)=\"navigatePreviousFast()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n (click)=\"navigatePrevious()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"14\" />\n </button>\n\n <div class=\"flex w-[120px] shrink-0 items-center justify-center gap-0\">\n @if (!isYearMode() && !isQuarterMode()) {\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n [zDisabled]=\"false\"\n (click)=\"setView('month')\">\n {{ currentMonthName() }}\n </button>\n }\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n [zDisabled]=\"isYearMode()\"\n (click)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNext()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNextFast()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"14\" />\n </button>\n </div>\n\n <!-- Body -->\n <div\n class=\"flex h-full w-full flex-col items-center justify-center p-2\"\n [class.min-h-[224px]]=\"!isQuarterMode()\"\n [class.h-[224px]]=\"\n !isYearMode() &&\n !isMonthMode() &&\n !isQuarterMode() &&\n (currentView() === 'month' || currentView() === 'year')\n \"\n [class.min-h-[100px]]=\"isQuarterMode()\"\n [class.!min-h-auto]=\"isYearMode() || isMonthMode() || isQuarterMode()\"\n [class.!h-auto]=\"isYearMode() || isMonthMode() || isQuarterMode()\">\n @if (currentView() === 'day') {\n <div\n class=\"flex h-full w-full flex-1 flex-col gap-1\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n <!-- Weekday headers -->\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (weekday of weekdayNames(); track weekday) {\n <div\n class=\"text-muted-foreground flex w-[33px] items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n <!-- Date rows -->\n @for (week of calendarDays(); track $index) {\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n class=\"!w-[33px] !text-sm\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n @if (currentView() === 'month') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n @for (month of monthNames(); track month; let i = $index) {\n @let monthDisabled = i | zIsStartMonthDisabled: startMonthDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: selectedMonthIndex() : todayMonthIndex()\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"monthDisabled\"\n [class.opacity-30]=\"monthDisabled\"\n [class.cursor-not-allowed]=\"monthDisabled\"\n (click)=\"onMonthSelect(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n @for (year of yearRange(); track year) {\n @let yearDisabled = year | zIsStartYearDisabled: startYearDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: selectedYear() : todayYear()\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"yearDisabled\"\n [class.opacity-30]=\"yearDisabled\"\n [class.cursor-not-allowed]=\"yearDisabled\"\n (click)=\"onYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'quarter') {\n <div\n class=\"grid h-full w-full grid-cols-2 grid-rows-2 gap-2 p-1\"\n [class.animate-calendar-enter]=\"uiState().hasViewChanged\">\n @for (quarter of quarterNames; track quarter; let i = $index) {\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zQuarterClasses: selectedQuarterIndex() : todayQuarterIndex()\"\n class=\"!h-8 !w-full !text-sm\"\n (click)=\"onQuarterClick(i)\">\n {{ quarter }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Second Calendar (Range Mode Only) -->\n @if (isRangeMode()) {\n <!-- Divider -->\n <div class=\"border-border bg-border hidden self-stretch sm:block sm:w-px\"></div>\n <div class=\"border-border bg-border block h-px w-full sm:hidden\"></div>\n\n <div class=\"z-calendar-section flex w-[280px] shrink-0 flex-col\">\n <!-- Header -->\n <div class=\"border-border flex w-full items-center justify-between gap-0.5 px-2\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPreviousFast()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPrevious()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"14\" />\n </button>\n\n <div class=\"flex w-[120px] shrink-0 items-center justify-center gap-0\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n (click)=\"setEndView('month')\">\n {{ endMonthName() }}\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"h-7 px-1.5 text-sm!\"\n [zWave]=\"false\"\n (click)=\"setEndView('year')\">\n {{ endMonthYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNext()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"14\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-7 shrink-0 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNextFast()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"14\" />\n </button>\n </div>\n\n <!-- Body -->\n <div\n class=\"flex h-full min-h-[224px] w-full flex-col items-center justify-center p-2\"\n [class.h-[224px]]=\"endView() === 'month' || endView() === 'year'\">\n @if (endView() === 'day') {\n <div\n class=\"flex h-full w-full flex-1 flex-col gap-1\"\n [class.animate-calendar-enter]=\"uiState().hasEndViewChanged\">\n <!-- Weekday headers -->\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (weekday of weekdayNames(); track weekday) {\n <div\n class=\"text-muted-foreground flex w-[33px] items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n <!-- Date rows -->\n @for (week of calendarDaysEnd(); track $index) {\n <div class=\"flex w-full flex-1 justify-center gap-1\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n class=\"!w-[33px] !text-sm\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n @if (endView() === 'month') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasEndViewChanged\">\n @for (month of monthNames(); track month; let i = $index) {\n @let endMonthDisabled = i | zIsEndMonthDisabled: endMonthDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: endMonth().getMonth() : -1\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"endMonthDisabled\"\n [class.opacity-30]=\"endMonthDisabled\"\n [class.cursor-not-allowed]=\"endMonthDisabled\"\n (click)=\"onEndMonthClick(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (endView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-2.5 gap-y-5!\"\n [class.animate-calendar-enter]=\"uiState().hasEndViewChanged\">\n @for (year of endYearRange(); track year) {\n @let endYearDisabled = year | zIsEndYearDisabled: endYearDisabledContext();\n <div class=\"flex flex-1 items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: endMonth().getFullYear() : -1\"\n class=\"!h-7 !w-full !text-sm\"\n [disabled]=\"endYearDisabled\"\n [class.opacity-30]=\"endYearDisabled\"\n [class.cursor-not-allowed]=\"endYearDisabled\"\n (click)=\"onEndYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Compact Time Picker Below Calendar (Single Date) -->\n @if (!isRangeMode() && zShowTime()) {\n <div class=\"border-border w-full border-t text-center\">\n <div\n class=\"hover:bg-muted my-1 inline-flex cursor-pointer items-center rounded-sm px-2 py-1 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownShow()\">\n <div class=\"flex items-center justify-center gap-1\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedHour() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedMinute() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedSecond() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-8 cursor-pointer items-center justify-center rounded border-none px-2 py-1 text-xs font-semibold transition-colors\"\n (click)=\"togglePeriod(); $event.stopPropagation()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Compact Time Pickers Below Calendars (Range Mode) -->\n @if (isRangeMode() && zShowTime()) {\n <div class=\"border-border flex w-full flex-col border-t sm:flex-row\">\n <!-- Start Time -->\n <div class=\"flex w-full flex-col items-center justify-center gap-1\">\n <div\n class=\"hover:bg-muted my-1 inline-flex cursor-pointer items-center rounded-sm px-2 py-1 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownStartTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownShow()\">\n <div class=\"flex items-center justify-center gap-1\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedHour() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedMinute() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedSecond() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-8 cursor-pointer items-center justify-center rounded border-none px-2 py-1 text-xs font-semibold transition-colors\"\n (click)=\"togglePeriod(); $event.stopPropagation()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Divider space -->\n <div class=\"border-border bg-border h-px self-stretch sm:block sm:h-full sm:w-px\"></div>\n\n <!-- End Time -->\n <div class=\"flex w-full flex-col items-center justify-center gap-1\">\n <div\n class=\"hover:bg-muted my-1 inline-flex cursor-pointer items-center rounded-sm px-2 py-1 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownEndTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownEndShow()\">\n <div class=\"flex items-center justify-center gap-1\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHourEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedHourEnd() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHourEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinuteEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedMinuteEnd() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinuteEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-sm font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-7 cursor-pointer flex-col items-center gap-0 rounded px-1 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecondEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"14\" />\n </button>\n <span class=\"text-foreground min-w-5 text-center text-sm leading-tight font-medium select-none\">\n {{ formattedSecondEnd() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-0.5 flex h-4 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecondEnd(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-8 cursor-pointer items-center justify-center rounded border-none px-2 py-1 text-xs font-semibold transition-colors\"\n (click)=\"togglePeriodEnd(); $event.stopPropagation()\">\n {{ periodEnd() }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n }\n } @else {\n <!-- Time Only Mode - Compact Display -->\n <div class=\"flex flex-col items-center gap-3 pb-2\">\n <div\n class=\"hover:bg-muted inline-flex cursor-pointer items-center rounded-md px-3 py-2 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-md\"\n (zShow)=\"onTimeDropdownShow()\">\n <div class=\"flex items-center justify-center gap-1.5\">\n <!-- Hour -->\n @if (zShowHour()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-9 cursor-pointer flex-col items-center gap-0 rounded px-1.5 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"16\" />\n </button>\n <span class=\"text-foreground min-w-6 text-center text-base leading-tight font-medium select-none\">\n {{ formattedHour() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementHour(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </button>\n </div>\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground text-base font-medium\">:</span>\n }\n <!-- Minute -->\n @if (zShowMinute()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-9 cursor-pointer flex-col items-center gap-0 rounded px-1.5 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"16\" />\n </button>\n <span class=\"text-foreground min-w-6 text-center text-base leading-tight font-medium select-none\">\n {{ formattedMinute() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementMinute(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </button>\n </div>\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground text-base font-medium\">:</span>\n }\n <!-- Second -->\n @if (zShowSecond()) {\n <div\n class=\"hover:bg-muted/50 flex min-w-9 cursor-pointer flex-col items-center gap-0 rounded px-1.5 transition-colors\">\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mb-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"decrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronUp\" zSize=\"16\" />\n </button>\n <span class=\"text-foreground min-w-6 text-center text-base leading-tight font-medium select-none\">\n {{ formattedSecond() }}\n </span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground active:bg-accent mt-1 flex h-5 w-full cursor-pointer items-center justify-center rounded border-none bg-transparent transition-colors\"\n (click)=\"incrementSecond(); $event.stopPropagation()\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"16\" />\n </button>\n </div>\n }\n <!-- AM/PM Toggle -->\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n class=\"bg-primary/10 text-primary hover:bg-primary/20 active:bg-primary/30 ml-1 flex w-10 cursor-pointer items-center justify-center rounded border-none px-2.5 py-1.5 text-sm font-semibold transition-colors\"\n (click)=\"togglePeriod(); $event.stopPropagation()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n @if (!(zQuickSelect() && zMode() === 'range' && !showOkButton() && !showCancelButton())) {\n <div class=\"border-border flex w-full items-center justify-between gap-2 border-t px-2 pt-2\">\n @if (!zQuickSelect() || zMode() !== 'range') {\n <button type=\"button\" z-button zType=\"secondary\" zSize=\"sm\" [zWave]=\"false\" (click)=\"onTodayClick()\">\n {{ todayButtonText() }}\n </button>\n } @else {\n <div></div>\n }\n\n @if (showOkButton() || showCancelButton()) {\n <div class=\"flex items-center gap-2\">\n @if (showCancelButton()) {\n <button type=\"button\" z-button zType=\"outline\" zSize=\"sm\" (click)=\"onCancelClick()\">\n {{ zCancelText() ?? ('i18n_z_ui_calendar_cancel' | translate) }}\n </button>\n }\n @if (showOkButton()) {\n <button type=\"button\" z-button zSize=\"sm\" [zDisabled]=\"!canApply()\" (click)=\"onOkClick()\">\n {{ zOkText() ?? ('i18n_z_ui_calendar_ok' | translate) }}\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #timeDropdownTpl>\n <div class=\"bg-popover flex overflow-hidden rounded-[6px]\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond()\"\n [class.border-border]=\"zShowMinute() || zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-hour h-[200px] w-12\"\n [class.rounded]=\"!zShowMinute() && !zShowSecond()\"\n [class.rounded-l]=\"zShowMinute() || zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrSelected = hr | zIsTimeSelected: displayHour();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!hrSelected\"\n [class.bg-primary]=\"hrSelected\"\n [class.text-primary-foreground]=\"hrSelected\"\n [class.font-medium]=\"hrSelected\"\n (click)=\"selectHour(hr)\">\n {{ hr | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowMinute()) {\n <div class=\"flex flex-col\" [class.border-r]=\"zShowSecond()\" [class.border-border]=\"zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-minute h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowSecond()\"\n [class.rounded-l]=\"!zShowHour() && zShowSecond()\"\n [class.rounded-r]=\"zShowHour() && !zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minSelected = min | zIsTimeSelected: minute();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!minSelected\"\n [class.bg-primary]=\"minSelected\"\n [class.text-primary-foreground]=\"minSelected\"\n [class.font-medium]=\"minSelected\"\n (click)=\"selectMinute(min)\">\n {{ min | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowSecond()) {\n <div class=\"flex flex-col\">\n <ng-scrollbar\n class=\"z-time-scroll-second h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowMinute()\"\n [class.rounded-r]=\"zShowHour() || zShowMinute()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secSelected = sec | zIsTimeSelected: second();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!secSelected\"\n [class.bg-primary]=\"secSelected\"\n [class.text-primary-foreground]=\"secSelected\"\n [class.font-medium]=\"secSelected\"\n (click)=\"selectSecond(sec)\">\n {{ sec | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #timeDropdownStartTpl>\n <div class=\"bg-popover flex overflow-hidden rounded-[6px]\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond()\"\n [class.border-border]=\"zShowMinute() || zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-hour h-[200px] w-12\"\n [class.rounded]=\"!zShowMinute() && !zShowSecond()\"\n [class.rounded-l]=\"zShowMinute() || zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrSelected = hr | zIsTimeSelected: displayHour();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!hrSelected\"\n [class.bg-primary]=\"hrSelected\"\n [class.text-primary-foreground]=\"hrSelected\"\n [class.font-medium]=\"hrSelected\"\n (click)=\"selectHour(hr)\">\n {{ hr | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowMinute()) {\n <div class=\"flex flex-col\" [class.border-r]=\"zShowSecond()\" [class.border-border]=\"zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-minute h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowSecond()\"\n [class.rounded-l]=\"!zShowHour() && zShowSecond()\"\n [class.rounded-r]=\"zShowHour() && !zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minSelected = min | zIsTimeSelected: minute();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!minSelected\"\n [class.bg-primary]=\"minSelected\"\n [class.text-primary-foreground]=\"minSelected\"\n [class.font-medium]=\"minSelected\"\n (click)=\"selectMinute(min)\">\n {{ min | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowSecond()) {\n <div class=\"flex flex-col\">\n <ng-scrollbar\n class=\"z-time-scroll-second h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowMinute()\"\n [class.rounded-r]=\"zShowHour() || zShowMinute()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secSelected = sec | zIsTimeSelected: second();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 cursor-pointer items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!secSelected\"\n [class.bg-primary]=\"secSelected\"\n [class.text-primary-foreground]=\"secSelected\"\n [class.font-medium]=\"secSelected\"\n (click)=\"selectSecond(sec)\">\n {{ sec | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #timeDropdownEndTpl>\n <div class=\"bg-popover flex overflow-hidden rounded-[6px]\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond()\"\n [class.border-border]=\"zShowMinute() || zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-hour-end h-[200px] w-12\"\n [class.rounded]=\"!zShowMinute() && !zShowSecond()\"\n [class.rounded-l]=\"zShowMinute() || zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrDisabled = hr | zIsEndHourDisabled: endTimeContext();\n @let hrEndSelected = hr | zIsTimeSelected: displayHourEnd();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!hrDisabled && !hrEndSelected\"\n [class.cursor-pointer]=\"!hrDisabled\"\n [class.bg-primary]=\"hrEndSelected\"\n [class.text-primary-foreground]=\"hrEndSelected\"\n [class.font-medium]=\"hrEndSelected\"\n [class.opacity-30]=\"hrDisabled\"\n [class.cursor-not-allowed]=\"hrDisabled\"\n [disabled]=\"hrDisabled\"\n (click)=\"selectHourEnd(hr)\">\n {{ hr | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowMinute()) {\n <div class=\"flex flex-col\" [class.border-r]=\"zShowSecond()\" [class.border-border]=\"zShowSecond()\">\n <ng-scrollbar\n class=\"z-time-scroll-minute-end h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowSecond()\"\n [class.rounded-l]=\"!zShowHour() && zShowSecond()\"\n [class.rounded-r]=\"zShowHour() && !zShowSecond()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minDisabled = min | zIsEndMinuteDisabled: endTimeContext();\n @let minEndSelected = min | zIsTimeSelected: minuteEnd();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!minDisabled && !minEndSelected\"\n [class.cursor-pointer]=\"!minDisabled\"\n [class.bg-primary]=\"minEndSelected\"\n [class.text-primary-foreground]=\"minEndSelected\"\n [class.font-medium]=\"minEndSelected\"\n [class.opacity-30]=\"minDisabled\"\n [class.cursor-not-allowed]=\"minDisabled\"\n [disabled]=\"minDisabled\"\n (click)=\"selectMinuteEnd(min)\">\n {{ min | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n @if (zShowSecond()) {\n <div class=\"flex flex-col\">\n <ng-scrollbar\n class=\"z-time-scroll-second-end h-[200px] w-12\"\n [class.rounded]=\"!zShowHour() && !zShowMinute()\"\n [class.rounded-r]=\"zShowHour() || zShowMinute()\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secDisabled = sec | zIsEndSecondDisabled: endTimeContext();\n @let secEndSelected = sec | zIsTimeSelected: secondEnd();\n <button\n type=\"button\"\n class=\"flex h-7 shrink-0 items-center justify-center text-sm transition-colors\"\n [class.hover:bg-muted]=\"!secDisabled && !secEndSelected\"\n [class.cursor-pointer]=\"!secDisabled\"\n [class.bg-primary]=\"secEndSelected\"\n [class.text-primary-foreground]=\"secEndSelected\"\n [class.font-medium]=\"secEndSelected\"\n [class.opacity-30]=\"secDisabled\"\n [class.cursor-not-allowed]=\"secDisabled\"\n [disabled]=\"secDisabled\"\n (click)=\"selectSecondEnd(sec)\">\n {{ sec | number: '2.0-0' }}\n </button>\n }\n </div>\n </ng-scrollbar>\n </div>\n }\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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A,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAA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"}
|