@shival99/z-ui 2.0.18 → 2.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +1 -1
  2. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +1 -1
  4. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-editor.mjs +27 -7
  8. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-filter.mjs +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-gallery.mjs +102 -40
  12. package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-input.mjs +1 -1
  14. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-menu.mjs +2 -2
  16. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-popover.mjs +20 -6
  18. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-select.mjs +1 -1
  20. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-table.mjs +7 -3
  22. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +1 -1
  24. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/types/shival99-z-ui-components-z-autocomplete.d.ts +1 -1
  27. package/types/shival99-z-ui-components-z-editor.d.ts +4 -1
  28. package/types/shival99-z-ui-components-z-gallery.d.ts +16 -4
  29. package/types/shival99-z-ui-components-z-popover.d.ts +6 -2
  30. package/types/shival99-z-ui-components-z-select.d.ts +1 -1
  31. package/types/shival99-z-ui-components-z-table.d.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-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-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-ui-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 {\n selectedDate,\n minDate,\n maxDate,\n rangeStart,\n rangeEnd,\n hoveredDate,\n disabledDate,\n suppressOtherMonthRangeState,\n } = options;\n const shouldSuppressRangeState = !isCurrentMonth && !!suppressOtherMonthRangeState;\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;\n let rangeProps = computeRangeProperties(date, rangeStart, rangeEnd, hoveredDate);\n\n if (shouldSuppressRangeState) {\n rangeProps = {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n isHovered: false,\n };\n }\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 = (baseYear: number, range = 12): number[] => {\n // Calculate decade-like ranges\n // E.g., baseYear 2026 with range 12 => startYear = 2020 (floor(2026/10)*10)\n // This gives ranges like: 2010-2021, 2020-2031, 2030-2041\n const decadeStart = Math.floor(baseYear / 10) * 10;\n return Array.from({ length: range }, (_, i) => decadeStart + 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 if (values['MM'] < 1 || values['MM'] > 12) {\n return null;\n }\n if (values['DD'] < 1 || values['DD'] > 31) {\n return null;\n }\n if (format.includes('HH') && (values['HH'] < 0 || values['HH'] > 23)) {\n return null;\n }\n if (format.includes('hh') && (values['hh'] < 1 || values['hh'] > 12)) {\n return null;\n }\n if (values['mm'] < 0 || values['mm'] > 59 || values['ss'] < 0 || values['ss'] > 59) {\n return null;\n }\n\n try {\n const date = createDate(values['YYYY'], values['MM'] - 1, values['DD'], hour, values['mm'], values['ss']);\n\n if (\n isNaN(date.getTime()) ||\n date.getFullYear() !== values['YYYY'] ||\n date.getMonth() !== values['MM'] - 1 ||\n date.getDate() !== values['DD'] ||\n date.getHours() !== hour ||\n date.getMinutes() !== values['mm'] ||\n date.getSeconds() !== values['ss']\n ) {\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: 'yesterday',\n label: 'i18n_z_ui_calendar_yesterday',\n getValue: () => {\n const yesterday = addDays(getToday(), -1);\n return { start: yesterday, end: yesterday };\n },\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 buildTimeFormat = (\n showHour: boolean,\n showMinute: boolean,\n showSecond: boolean,\n timeFormat: '12h' | '24h',\n period?: 'AM' | 'PM'\n): string => {\n const timeParts: string[] = [];\n if (showHour) {\n timeParts.push(timeFormat === '12h' ? 'hh' : 'HH');\n }\n if (showMinute) {\n timeParts.push('mm');\n }\n if (showSecond) {\n timeParts.push('ss');\n }\n\n const periodSuffix = timeFormat === '12h' && period ? ` ${period}` : '';\n return `${timeParts.join(':')}${periodSuffix}`;\n};\n\nexport const to24Hour = (hour: number, period: 'AM' | 'PM', timeFormat: '12h' | '24h'): number => {\n if (timeFormat === '24h') {\n return hour;\n }\n if (period === 'PM' && hour < 12) {\n return hour + 12;\n }\n if (period === 'AM' && hour === 12) {\n return 0;\n }\n return hour;\n};\n\nexport const getWrappedTimeValue = (value: number, min: number, max: number, step: 1 | -1): number => {\n if (step > 0) {\n return value >= max ? min : value + step;\n }\n return value <= min ? max : value + step;\n};\n\nexport const getDayState = (day: ZCalendarDay): ZDayState => {\n if (day.isDisabled) {\n return 'disabled';\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.isCurrentMonth) {\n return 'otherMonth';\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-sm 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-sm 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',\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-sm 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-sm 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-sm 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';\nimport { to24Hour } from '../z-calendar.utils';\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 const actualHour = to24Hour(hour, context.endPeriod, context.timeFormat);\n const actualStartHour = to24Hour(context.startHour, context.startPeriod, context.timeFormat);\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 const actualStartHour = to24Hour(context.startHour, context.startPeriod, context.timeFormat);\n const actualEndHour = to24Hour(context.endHour, context.endPeriod, context.timeFormat);\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 const actualStartHour = to24Hour(context.startHour, context.startPeriod, context.timeFormat);\n const actualEndHour = to24Hour(context.endHour, context.endPeriod, context.timeFormat);\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';\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, NgTemplateOutlet } 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 {\n type AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZPopoverControl } from '@shival99/z-ui/components/z-popover';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport { ZSelectComponent, type ZSelectOption } from '@shival99/z-ui/components/z-select';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport { zUuid, zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/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 { ZYearClassesPipe } from './pipes/z-year-classes.pipe';\nimport type {\n ZCalendarDay,\n ZCalendarControl,\n ZCalendarDefaultTime,\n ZCalendarMode,\n ZCalendarRangeDefaultTime,\n ZCalendarSize,\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 buildTimeFormat,\n formatDate,\n formatTimeValue,\n fromISOString,\n generateCalendarGrid,\n getMonthNames,\n getQuickSelectPresets,\n getToday,\n getWeekdayNames,\n getWrappedTimeValue,\n getYearRange,\n hasTimeTokens,\n isSameDay,\n isSameMonth,\n normalizeRange,\n parseDate,\n parseTimeValue,\n setMonth,\n setTime,\n setYear,\n to24Hour,\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 FormsModule,\n NgTemplateOutlet,\n NgScrollbar,\n ZIconComponent,\n ZSelectComponent,\n ZTooltipDirective,\n ZPopoverDirective,\n ZButtonComponent,\n ZDayClassesPipe,\n ZMonthClassesPipe,\n ZQuarterClassesPipe,\n ZYearClassesPipe,\n ZIsPresetDisabledPipe,\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 zAllowEdit = input(true, { transform: zTransform });\n public readonly zShortTime = 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 public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zEvent = output<ZEvent>();\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 _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _customError = signal<string | null>(null);\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 _backupActivePresetKey = signal<string | null>(null);\n private readonly _backupShortDisplayPresetKey = signal<string | 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 private readonly _isNgModel = signal(false);\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 isInputFocused = signal(false);\n protected readonly activePresetKey = signal<string | null>(null);\n protected readonly shortDisplayPresetKey = signal<string | null>(null);\n protected readonly quickSelectOptions = computed<ZSelectOption<string>[]>(() =>\n this.quickSelectPresets.map(preset => ({\n label: preset.label,\n value: preset.key,\n disabled: this._isQuickSelectPresetDisabled(preset),\n }))\n );\n\n protected readonly rangeShortDisplayValue = computed(() => {\n this._zTranslate.currentLang();\n\n if (!this.isRangeMode() || !this.zQuickSelect() || this.zAllowEdit() || !this.zShortTime()) {\n return '';\n }\n\n const activePreset = this.quickSelectPresets.find(preset => preset.key === this.shortDisplayPresetKey());\n if (activePreset && activePreset.key !== 'custom') {\n return this._zTranslate.instant(activePreset.label);\n }\n\n return '';\n });\n\n protected readonly uiState = signal({\n hasViewChanged: false,\n hasEndViewChanged: false,\n timeDropdownOpen: false,\n timeDropdownEndOpen: false,\n isFocused: false,\n touched: false,\n dirty: 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 = this._currentMonth.asReadonly();\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 suppressOtherMonthRangeState: this.isRangeMode(),\n });\n });\n\n protected readonly endMonth = this._endMonth.asReadonly();\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 suppressOtherMonthRangeState: this.isRangeMode(),\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 = this._minuteEnd.asReadonly();\n protected readonly secondEnd = this._secondEnd.asReadonly();\n protected readonly periodEnd = this._periodEnd.asReadonly();\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 timeFormat = this._buildTimeFormat(this.period());\n return this._formatDisplayValue(timeFormat);\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeFormat = this._buildTimeFormat(this.period());\n return this._formatDisplayValue(`${format} ${timeFormat}`);\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 = this._inputDisplayStart.asReadonly();\n protected readonly inputDisplayEnd = this._inputDisplayEnd.asReadonly();\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 protected readonly effectivePlaceholder = computed(() => this.zPlaceholder() ?? '');\n\n private _getDisplayFormatStart(): string {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n return this._buildTimeFormat(this.period());\n }\n\n if (this.zShowTime() && !formatHasTime) {\n return `${format} ${this._buildTimeFormat(this.period())}`;\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 return this._buildTimeFormat(this._periodEnd());\n }\n\n if (this.zShowTime() && !formatHasTime) {\n return `${format} ${this._buildTimeFormat(this._periodEnd())}`;\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.zAllowEdit() && !this.isDisabled() && !this.zReadonly()\n ? 'cursor-pointer hover:bg-muted/30 [&_input]:cursor-pointer'\n : '',\n this.class()\n )\n );\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n // For NgModel, use internal state (same as z-input)\n if (this._isNgModel()) {\n return this.uiState().dirty || this.uiState().touched;\n }\n\n if (control) {\n return control.dirty;\n }\n return this.uiState().dirty || this.uiState().touched;\n });\n\n protected readonly hasError = computed(() => {\n // Check custom error first (from setErrorMessage)\n if (this._customError()) {\n return true;\n }\n\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 errorMessage = computed(() => {\n // Check custom error first (from setErrorMessage)\n const customError = this._customError();\n if (customError) {\n return customError;\n }\n\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 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 this._isNgModel.set(this._ngControl instanceof NgModel);\n\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 this._updateInputDisplay();\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.shortDisplayPresetKey()) {\n const presetKey = this._detectMatchingPreset(range.start, range.end);\n this.activePresetKey.set(presetKey);\n this.shortDisplayPresetKey.set(this.zShortTime() && presetKey !== 'custom' ? presetKey : null);\n }\n if (this.zShowTime()) {\n this._syncTimeSignals(range.start);\n this._syncEndTimeSignals(range.end);\n }\n } else {\n this.activePresetKey.set(null);\n }\n\n this._updateRangeInputDisplay();\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.activePresetKey.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this.uiState.update(s => ({ ...s, touched: false, dirty: 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 /** @deprecated Use `valid()` for boolean form-submit checks. */\n public validate(): boolean {\n this.uiState.update(s => ({ ...s, touched: true, dirty: 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.hasError();\n }\n\n public valid(): boolean {\n return !this.validate();\n }\n\n public setErrorMessage(message: string | null): void {\n this._customError.set(message);\n if (message) {\n this.uiState.update(s => ({ ...s, touched: true, dirty: true }));\n }\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 const triggerEl = this.triggerRef()?.nativeElement;\n if (triggerEl) {\n const focusEvent = new FocusEvent('focus', { relatedTarget: triggerEl });\n this.zOnFocus.emit(focusEvent);\n this.zEvent.emit(zCreateEvent('focus', focusEvent));\n }\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.isTimeMode()) {\n this._scrollToTimeDropdown();\n }\n\n if (this.isRangeMode()) {\n this.endView.set('day');\n this._updateRangeInputDisplay();\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 this._backupActivePresetKey.set(this.activePresetKey());\n this._backupShortDisplayPresetKey.set(this.shortDisplayPresetKey());\n }\n\n protected onPopoverHide(): void {\n this.uiState.update(s => ({ ...s, isFocused: false }));\n this.hoveredDate.set(null);\n\n const triggerEl = this.triggerRef()?.nativeElement;\n if (triggerEl) {\n const blurEvent = new FocusEvent('blur', { relatedTarget: triggerEl });\n this.zOnBlur.emit(blurEvent);\n this.zEvent.emit(zCreateEvent('blur', blurEvent));\n }\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.uiState.update(s => ({ ...s, dirty: false }));\n }\n }\n\n if (this.uiState().dirty) {\n this.uiState.update(s => ({ ...s, touched: true }));\n }\n\n this._onTouched();\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._updateRangeInputDisplay();\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.activePresetKey.set(this._backupActivePresetKey());\n this.shortDisplayPresetKey.set(this._backupShortDisplayPresetKey());\n this.uiState.update(s => ({ ...s, dirty: 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._updateRangeInputDisplay();\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 if (!this.zAllowEdit()) {\n return;\n }\n\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 if (!this.zAllowEdit()) {\n return;\n }\n\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 if (!this.zAllowEdit()) {\n return;\n }\n\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 if (!this.zAllowEdit()) {\n this._updateRangeInputDisplay();\n const input = event.target as HTMLInputElement;\n input.value = this.inputDisplayStart();\n return;\n }\n\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.uiState.update(s => ({ ...s, dirty: true }));\n this._inputDisplayStart.set(this.displayValueStart());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n return;\n }\n\n if (!this.showOkButton()) {\n this._applyValue();\n }\n }\n\n protected onEndInputEnter(event: Event): void {\n event.preventDefault();\n if (!this.zAllowEdit()) {\n this._updateRangeInputDisplay();\n const input = event.target as HTMLInputElement;\n input.value = this.inputDisplayEnd();\n return;\n }\n\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.uiState.update(s => ({ ...s, dirty: true }));\n this._inputDisplayEnd.set(this.displayValueEnd());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n return;\n }\n\n if (!this.showOkButton()) {\n this._applyValue();\n }\n }\n\n protected onInputFocus(_event: FocusEvent): void {\n this.isInputFocused.set(true);\n this._backupSelectedDate.set(this._selectedDate());\n }\n\n protected onInputBlur(event: FocusEvent): void {\n this.isInputFocused.set(false);\n\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 const previousValue = this._selectedDate();\n // Only apply and set dirty if there was an actual change (had value before, now empty)\n if (previousValue !== null) {\n this._selectedDate.set(null);\n this._backupSelectedDate.set(null);\n this.inputDisplayValue.set('');\n this._applyValue();\n }\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 if (!this.zAllowEdit()) {\n this.inputDisplayValue.set(this.displayValue());\n input.value = this.displayValue();\n return;\n }\n\n const value = input.value.trim();\n\n if (!value) {\n this._skipBlurHandler.set(true);\n this._clearDateValues();\n this.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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 this.shortDisplayPresetKey.set(preset.key === 'custom' ? null : 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.uiState.update(s => ({ ...s, dirty: true }));\n this._updateRangeInputDisplay();\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.uiState.update(s => ({ ...s, dirty: true }));\n this._updateRangeInputDisplay();\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onQuickSelectKeyChange(key: string | null): void {\n if (!key) {\n return;\n }\n\n const preset = this.quickSelectPresets.find(item => item.key === key);\n if (!preset || this._isQuickSelectPresetDisabled(preset)) {\n return;\n }\n\n this.onQuickSelect(preset);\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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.activePresetKey.set('today');\n this.shortDisplayPresetKey.set('today');\n this._endMonth.set(addMonths(today, 1));\n if (this.zShowTime()) {\n this._syncEndTimeSignals(now);\n }\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._updateRangeInputDisplay();\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.uiState.update(s => ({ ...s, dirty: 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.activePresetKey.set(null);\n this.shortDisplayPresetKey.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this.uiState.update(s => ({ ...s, dirty: true }));\n\n this._backupSelectedDate.set(null);\n this._backupRangeStart.set(null);\n this._backupRangeEnd.set(null);\n this._backupActivePresetKey.set(null);\n this._backupShortDisplayPresetKey.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 const hour = to24Hour(this.hour(), this.period(), this.zTimeFormat());\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 if (view === 'month' || view === 'day') {\n this._currentMonth.update(date => addMonths(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\n }\n\n protected navigateNext(): void {\n const view = this.currentView();\n if (view === 'month' || view === 'day') {\n this._currentMonth.update(date => addMonths(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\n }\n\n protected navigatePreviousFast(): void {\n const view = this.currentView();\n if (view === 'day') {\n this._currentMonth.update(date => addYears(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'month' || view === 'quarter') {\n this._currentMonth.update(date => addYears(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, -10));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\n }\n\n protected navigateNextFast(): void {\n const view = this.currentView();\n if (view === 'day') {\n this._currentMonth.update(date => addYears(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'month' || view === 'quarter') {\n this._currentMonth.update(date => addYears(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, 10));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\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 const hour = to24Hour(this._hourEnd(), this._periodEnd(), this.zTimeFormat());\n\n const newDate = setTime(end, hour, this._minuteEnd(), this._secondEnd());\n this._rangeEnd.set(newDate);\n this.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.shortDisplayPresetKey.set(null);\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.uiState.update(s => ({ ...s, dirty: true }));\n if (normalized.start && normalized.end) {\n this.activePresetKey.set(this._detectMatchingPreset(normalized.start, normalized.end));\n }\n this.shortDisplayPresetKey.set(null);\n this._updateRangeInputDisplay();\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 const hour = to24Hour(this.hour(), this.period(), this.zTimeFormat());\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.uiState.update(s => ({ ...s, dirty: 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 _updateRangeInputDisplay(): void {\n const shortDisplay = this.rangeShortDisplayValue();\n if (shortDisplay) {\n this._inputDisplayStart.set(shortDisplay);\n this._inputDisplayEnd.set('');\n return;\n }\n\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n private _isQuickSelectPresetDisabled(preset: ZQuickSelectPreset): boolean {\n const disabledDateFn = this.zDisabledDate();\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\n if (value.end && disabledDateFn(value.end)) {\n return true;\n }\n\n return false;\n }\n\n private _applyValue(): void {\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this.uiState.update(s => ({ ...s, dirty: true }));\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._updateRangeInputDisplay();\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 timeFormat = this._buildTimeFormat();\n if (this.isTimeMode()) {\n return timeFormat;\n }\n return `${this.zFormat()} ${timeFormat}`;\n }\n\n private _buildTimeFormat(period?: 'AM' | 'PM'): string {\n return buildTimeFormat(this.zShowHour(), this.zShowMinute(), this.zShowSecond(), this.zTimeFormat(), period);\n }\n\n private _updateInputDisplay(): void {\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._updateRangeInputDisplay();\n }\n }\n\n private _clearDateValues(): void {\n if (this.isRangeMode()) {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this.activePresetKey.set(null);\n this.shortDisplayPresetKey.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._updateRangeInputDisplay();\n return;\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n valid: () => this.valid(),\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 setErrorMessage: (message: string | null) => this.setErrorMessage(message),\n hasError: this.hasError,\n isOpen: this.isOpen,\n value: computed(() => this._getEmitValue()),\n errorMessage: this.errorMessage,\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 this.selectHour(this._getNextHour(this.displayHour()), true);\n }\n\n protected decrementHour(): void {\n this.selectHour(this._getPreviousHour(this.displayHour()), true);\n }\n\n protected incrementMinute(): void {\n this.selectMinute(getWrappedTimeValue(this.minute(), 0, 59, 1), true);\n }\n\n protected decrementMinute(): void {\n this.selectMinute(getWrappedTimeValue(this.minute(), 0, 59, -1), true);\n }\n\n protected incrementSecond(): void {\n this.selectSecond(getWrappedTimeValue(this.second(), 0, 59, 1), true);\n }\n\n protected decrementSecond(): void {\n this.selectSecond(getWrappedTimeValue(this.second(), 0, 59, -1), true);\n }\n\n protected incrementHourEnd(): void {\n this.selectHourEnd(this._getNextHour(this.displayHourEnd()), true);\n }\n\n protected decrementHourEnd(): void {\n this.selectHourEnd(this._getPreviousHour(this.displayHourEnd()), true);\n }\n\n protected incrementMinuteEnd(): void {\n this.selectMinuteEnd(getWrappedTimeValue(this._minuteEnd(), 0, 59, 1), true);\n }\n\n protected decrementMinuteEnd(): void {\n this.selectMinuteEnd(getWrappedTimeValue(this._minuteEnd(), 0, 59, -1), true);\n }\n\n protected incrementSecondEnd(): void {\n this.selectSecondEnd(getWrappedTimeValue(this._secondEnd(), 0, 59, 1), true);\n }\n\n protected decrementSecondEnd(): void {\n this.selectSecondEnd(getWrappedTimeValue(this._secondEnd(), 0, 59, -1), true);\n }\n\n private _getNextHour(hour: number): number {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n return getWrappedTimeValue(hour, minHour, maxHour, 1);\n }\n\n private _getPreviousHour(hour: number): number {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n return getWrappedTimeValue(hour, minHour, maxHour, -1);\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 const actualHour = to24Hour(hour, this.period(), this.zTimeFormat());\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 const actualHour = to24Hour(hour, this._periodEnd(), this.zTimeFormat());\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 p-0\"\n (zHideStart)=\"onPopoverHide()\"\n (zShow)=\"onPopoverShow()\"\n (zControl)=\"onPopoverControl($event)\"\n [id]=\"pickerId\"\n [class]=\"triggerClasses()\"\n z-tooltip\n [zContent]=\"displayValue()\"\n zTooltipTrigger=\"hover\"\n zTooltipPosition=\"top\"\n [zTooltipDisabled]=\"isInputFocused() || isOpen() || !hasValue()\"\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-sm outline-none disabled:opacity-100\"\n [class.cursor-pointer]=\"!zAllowEdit()\"\n [class.pointer-events-none]=\"!zAllowEdit()\"\n [class.text-center]=\"!rangeShortDisplayValue()\"\n [class.text-left]=\"rangeShortDisplayValue()\"\n [placeholder]=\"'i18n_z_ui_calendar_start_date' | translate\"\n [value]=\"inputDisplayStart()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly() || !zAllowEdit()\"\n (click)=\"zAllowEdit() && 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 @if (!rangeShortDisplayValue()) {\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 disabled:opacity-100\"\n [class.cursor-pointer]=\"!zAllowEdit()\"\n [class.pointer-events-none]=\"!zAllowEdit()\"\n [placeholder]=\"'i18n_z_ui_calendar_end_date' | translate\"\n [value]=\"inputDisplayEnd()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly() || !zAllowEdit()\"\n (click)=\"zAllowEdit() && 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 }\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 disabled:opacity-100\"\n [class.cursor-pointer]=\"!zAllowEdit()\"\n [class.pointer-events-none]=\"!zAllowEdit()\"\n [placeholder]=\"effectivePlaceholder()\"\n [value]=\"inputDisplayValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly() || !zAllowEdit()\"\n (click)=\"zAllowEdit() && 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-sm transition-all\"\n [class.opacity-0]=\"!hasValue()\"\n [class.pointer-events-none]=\"!hasValue()\"\n (click)=\"onClear($event)\">\n <z-icon zType=\"lucideX\" zSize=\"18\" />\n </button>\n }\n </div>\n </div>\n\n @if (hasError()) {\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-[calc(100vw-1.5rem)] flex-col overflow-hidden rounded-sm 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 class=\"border-border hidden shrink-0 flex-col gap-0 space-y-1 overflow-y-auto border-r p-2 sm:flex\">\n @for (preset of quickSelectPresets; track preset.key) {\n @let presetDisabled = preset | zIsPresetDisabled: zDisabledDate();\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-sm 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 min-h-0 flex-1 flex-col items-center overflow-hidden pb-0 sm:overflow-visible sm:py-2\"\n [class.sm:pt-0!]=\"isTimeMode()\"\n [class]=\"\n !isRangeMode()\n ? 'w-[17.75rem] max-w-[calc(100vw-1.5rem)]'\n : 'w-[17.75rem] max-w-[calc(100vw-1.5rem)] sm:w-auto sm:max-w-none'\n \">\n @if (zQuickSelect() && zMode() === 'range') {\n <div class=\"border-border w-full border-b px-2 pt-2 pb-2 sm:hidden\">\n <z-select\n class=\"w-full\"\n zSize=\"sm\"\n zPosition=\"bottom-left\"\n [zShowSearch]=\"false\"\n [zAllowClear]=\"false\"\n [zOptions]=\"quickSelectOptions()\"\n [ngModel]=\"activePresetKey()\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"onQuickSelectKeyChange($event)\" />\n </div>\n }\n <div class=\"min-h-0 w-full flex-1 overflow-x-hidden overflow-y-auto pt-2 sm:overflow-visible sm:pt-0\">\n @if (!isTimeMode()) {\n <div\n class=\"z-calendars-wrapper flex w-full flex-col items-center gap-0 sm:flex-row sm:items-stretch sm:justify-center\">\n <!-- First Calendar -->\n <div class=\"z-calendar-section flex w-[17.5rem] 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 <!-- Double left arrow (always visible) -->\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=\"18\" />\n </button>\n\n <!-- Single left arrow (hidden in month/year view) -->\n @if (currentView() === 'day') {\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=\"18\" />\n </button>\n }\n\n <!-- Header content -->\n <div class=\"flex flex-1 shrink-0 items-center justify-center gap-0\">\n @if (currentView() === 'day') {\n <!-- Day view: Month + Year -->\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 (click)=\"setView('month')\">\n {{ currentMonthName() }}\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 [zDisabled]=\"isYearMode()\"\n (click)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n } @else if (currentView() === 'month') {\n <!-- Month view: Only Year -->\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)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n } @else if (currentView() === 'year') {\n <!-- Year view: Year Range -->\n <span class=\"text-sm font-medium\">\n {{ yearRange()[0] }} - {{ yearRange()[yearRange().length - 1] }}\n </span>\n } @else if (currentView() === 'quarter') {\n <!-- Quarter view: Only Year -->\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)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n }\n </div>\n\n <!-- Single right arrow (hidden in month/year view) -->\n @if (currentView() === 'day') {\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=\"18\" />\n </button>\n }\n\n <!-- Double right arrow (always visible) -->\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=\"18\" />\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-[14rem]]=\"!isQuarterMode()\"\n [class.h-[14rem]]=\"\n !isYearMode() &&\n !isMonthMode() &&\n !isQuarterMode() &&\n (currentView() === 'month' || currentView() === 'year')\n \"\n [class.min-h-[6.25rem]]=\"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 h-[1.875rem] w-[2.0313rem] 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=\"h-[1.875rem] !w-[2.0313rem] !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\n class=\"border-border bg-border mb-2 hidden self-stretch sm:block sm:w-px\"\n [class.mb-2]=\"!zQuickSelect() || (zQuickSelect() && zShowOk())\"></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-[17.5rem] shrink-0 flex-col pt-2 sm:pt-0\">\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=\"18\" />\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=\"18\" />\n </button>\n\n <div class=\"flex w-[7.5rem] 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=\"18\" />\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=\"18\" />\n </button>\n </div>\n\n <!-- Body -->\n <div\n class=\"flex h-full min-h-[14rem] w-full flex-col items-center justify-center p-2\"\n [class.h-[14rem]]=\"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 h-[1.875rem] w-[2.0313rem] 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=\"h-[1.875rem] !w-[2.0313rem] !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\n class=\"hover:bg-muted border-border flex w-full cursor-pointer items-center justify-center gap-1.5 border-t px-3 py-1.5 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n [zPopoverWidth]=\"240\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-lg\"\n (zShow)=\"onTimeDropdownShow()\">\n <z-icon zType=\"lucideCalendarClock\" zSize=\"18\" class=\"text-muted-foreground mr-1 shrink-0\" />\n <span class=\"text-sm font-medium tabular-nums select-none\">\n @if (zShowHour()) {\n {{ formattedHour() }}\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n {{ formattedMinute() }}\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n {{ formattedSecond() }}\n }\n @if (zTimeFormat() === '12h') {\n <span class=\"text-primary ml-0.5 font-semibold\">\n {{ period() }}\n </span>\n }\n </span>\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" class=\"text-muted-foreground shrink-0\" />\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\n class=\"hover:bg-muted flex flex-1 cursor-pointer items-center justify-center gap-1.5 px-3 py-1.5 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n [zPopoverWidth]=\"240\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-lg\"\n (zShow)=\"onTimeDropdownShow()\">\n <z-icon zType=\"lucideCalendarClock\" zSize=\"18\" class=\"text-muted-foreground mr-1 shrink-0\" />\n <span class=\"text-sm font-medium tabular-nums select-none\">\n @if (zShowHour()) {\n {{ formattedHour() }}\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n {{ formattedMinute() }}\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n {{ formattedSecond() }}\n }\n @if (zTimeFormat() === '12h') {\n <span class=\"text-primary ml-0.5 font-semibold\">\n {{ period() }}\n </span>\n }\n </span>\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" class=\"text-muted-foreground shrink-0\" />\n </div>\n\n <!-- Divider -->\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\n class=\"hover:bg-muted flex flex-1 cursor-pointer items-center justify-center gap-1.5 px-3 py-1.5 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownEndTpl\"\n zPosition=\"bottom\"\n [zPopoverWidth]=\"240\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-lg\"\n (zShow)=\"onTimeDropdownEndShow()\">\n <z-icon zType=\"lucideCalendarClock\" zSize=\"18\" class=\"text-muted-foreground mr-1 shrink-0\" />\n <span class=\"text-sm font-medium tabular-nums select-none\">\n @if (zShowHour()) {\n {{ formattedHourEnd() }}\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n {{ formattedMinuteEnd() }}\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n {{ formattedSecondEnd() }}\n }\n @if (zTimeFormat() === '12h') {\n <span class=\"text-primary ml-0.5 font-semibold\">\n {{ periodEnd() }}\n </span>\n }\n </span>\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" class=\"text-muted-foreground shrink-0\" />\n </div>\n </div>\n }\n } @else {\n <!-- Time Only Mode -->\n <div class=\"flex w-full justify-center px-2 pt-2 pb-1\">\n <ng-container [ngTemplateOutlet]=\"timeDropdownTpl\" />\n </div>\n }\n </div>\n\n @if (!(zQuickSelect() && zMode() === 'range' && !showOkButton() && !showCancelButton())) {\n <div\n class=\"bg-popover border-border z-10 flex w-full shrink-0 items-center justify-between gap-2 border-t px-2 py-2 shadow-[0_-2px_8px_-2px_rgb(0_0_0_/_10%)] sm:pt-2 sm:pb-0 sm:shadow-none\">\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 min-w-56 justify-center overflow-hidden rounded-sm\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_hour' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-hour h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowMinute() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrSelected = hr === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_minute' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-minute h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"!zShowHour() && (zShowSecond() || zTimeFormat() === '12h')\"\n [class.rounded-br-sm]=\"(zShowHour() || !zShowHour()) && !zShowSecond() && zTimeFormat() !== '12h'\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minSelected = min === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zTimeFormat() === '12h'\"\n [class.border-border]=\"zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_second' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-second h-[11rem] w-14\"\n [class.rounded-br-sm]=\"zTimeFormat() !== '12h'\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowMinute() && zTimeFormat() !== '12h'\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secSelected = sec === 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 @if (zTimeFormat() === '12h') {\n <div class=\"flex flex-col\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_period' | translate }}\n </div>\n <ng-scrollbar class=\"z-time-scroll-period h-[11rem] w-14\" [class.rounded-br-sm]=\"true\" track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (p of ['AM', 'PM']; track p) {\n @let pSelected = p === period();\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]=\"!pSelected\"\n [class.bg-primary]=\"pSelected\"\n [class.text-primary-foreground]=\"pSelected\"\n [class.font-medium]=\"pSelected\"\n (click)=\"selectPeriod($any(p))\">\n {{ p }}\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 min-w-56 justify-center overflow-hidden rounded-sm\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_hour' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-hour-end h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowMinute() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\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 === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_minute' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-minute-end h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"!zShowHour() && (zShowSecond() || zTimeFormat() === '12h')\"\n [class.rounded-br-sm]=\"(zShowHour() || !zShowHour()) && !zShowSecond() && zTimeFormat() !== '12h'\"\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 === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zTimeFormat() === '12h'\"\n [class.border-border]=\"zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_second' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-second-end h-[11rem] w-14\"\n [class.rounded-br-sm]=\"zTimeFormat() !== '12h'\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowMinute() && zTimeFormat() !== '12h'\"\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 === 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 @if (zTimeFormat() === '12h') {\n <div class=\"flex flex-col\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_period' | translate }}\n </div>\n <ng-scrollbar class=\"z-time-scroll-period-end h-[11rem] w-14\" [class.rounded-br-sm]=\"true\" track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (p of ['AM', 'PM']; track p) {\n @let pSelected = p === periodEnd();\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]=\"!pSelected\"\n [class.bg-primary]=\"pSelected\"\n [class.text-primary-foreground]=\"pSelected\"\n [class.font-medium]=\"pSelected\"\n (click)=\"selectPeriodEnd($any(p))\">\n {{ p }}\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-ui-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-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-ui-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 {\n selectedDate,\n minDate,\n maxDate,\n rangeStart,\n rangeEnd,\n hoveredDate,\n disabledDate,\n suppressOtherMonthRangeState,\n } = options;\n const shouldSuppressRangeState = !isCurrentMonth && !!suppressOtherMonthRangeState;\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;\n let rangeProps = computeRangeProperties(date, rangeStart, rangeEnd, hoveredDate);\n\n if (shouldSuppressRangeState) {\n rangeProps = {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n isHovered: false,\n };\n }\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 = (baseYear: number, range = 12): number[] => {\n // Calculate decade-like ranges\n // E.g., baseYear 2026 with range 12 => startYear = 2020 (floor(2026/10)*10)\n // This gives ranges like: 2010-2021, 2020-2031, 2030-2041\n const decadeStart = Math.floor(baseYear / 10) * 10;\n return Array.from({ length: range }, (_, i) => decadeStart + 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 if (values['MM'] < 1 || values['MM'] > 12) {\n return null;\n }\n if (values['DD'] < 1 || values['DD'] > 31) {\n return null;\n }\n if (format.includes('HH') && (values['HH'] < 0 || values['HH'] > 23)) {\n return null;\n }\n if (format.includes('hh') && (values['hh'] < 1 || values['hh'] > 12)) {\n return null;\n }\n if (values['mm'] < 0 || values['mm'] > 59 || values['ss'] < 0 || values['ss'] > 59) {\n return null;\n }\n\n try {\n const date = createDate(values['YYYY'], values['MM'] - 1, values['DD'], hour, values['mm'], values['ss']);\n\n if (\n isNaN(date.getTime()) ||\n date.getFullYear() !== values['YYYY'] ||\n date.getMonth() !== values['MM'] - 1 ||\n date.getDate() !== values['DD'] ||\n date.getHours() !== hour ||\n date.getMinutes() !== values['mm'] ||\n date.getSeconds() !== values['ss']\n ) {\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: 'yesterday',\n label: 'i18n_z_ui_calendar_yesterday',\n getValue: () => {\n const yesterday = addDays(getToday(), -1);\n return { start: yesterday, end: yesterday };\n },\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 buildTimeFormat = (\n showHour: boolean,\n showMinute: boolean,\n showSecond: boolean,\n timeFormat: '12h' | '24h',\n period?: 'AM' | 'PM'\n): string => {\n const timeParts: string[] = [];\n if (showHour) {\n timeParts.push(timeFormat === '12h' ? 'hh' : 'HH');\n }\n if (showMinute) {\n timeParts.push('mm');\n }\n if (showSecond) {\n timeParts.push('ss');\n }\n\n const periodSuffix = timeFormat === '12h' && period ? ` ${period}` : '';\n return `${timeParts.join(':')}${periodSuffix}`;\n};\n\nexport const to24Hour = (hour: number, period: 'AM' | 'PM', timeFormat: '12h' | '24h'): number => {\n if (timeFormat === '24h') {\n return hour;\n }\n if (period === 'PM' && hour < 12) {\n return hour + 12;\n }\n if (period === 'AM' && hour === 12) {\n return 0;\n }\n return hour;\n};\n\nexport const getWrappedTimeValue = (value: number, min: number, max: number, step: 1 | -1): number => {\n if (step > 0) {\n return value >= max ? min : value + step;\n }\n return value <= min ? max : value + step;\n};\n\nexport const getDayState = (day: ZCalendarDay): ZDayState => {\n if (day.isDisabled) {\n return 'disabled';\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.isCurrentMonth) {\n return 'otherMonth';\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-sm 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-sm 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',\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-sm 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-sm 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-sm 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';\nimport { to24Hour } from '../z-calendar.utils';\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 const actualHour = to24Hour(hour, context.endPeriod, context.timeFormat);\n const actualStartHour = to24Hour(context.startHour, context.startPeriod, context.timeFormat);\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 const actualStartHour = to24Hour(context.startHour, context.startPeriod, context.timeFormat);\n const actualEndHour = to24Hour(context.endHour, context.endPeriod, context.timeFormat);\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 const actualStartHour = to24Hour(context.startHour, context.startPeriod, context.timeFormat);\n const actualEndHour = to24Hour(context.endHour, context.endPeriod, context.timeFormat);\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';\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, NgTemplateOutlet } 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 {\n type AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZPopoverControl } from '@shival99/z-ui/components/z-popover';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport { ZSelectComponent, type ZSelectOption } from '@shival99/z-ui/components/z-select';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport { zUuid, zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/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 { ZYearClassesPipe } from './pipes/z-year-classes.pipe';\nimport type {\n ZCalendarDay,\n ZCalendarControl,\n ZCalendarDefaultTime,\n ZCalendarMode,\n ZCalendarRangeDefaultTime,\n ZCalendarSize,\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 buildTimeFormat,\n formatDate,\n formatTimeValue,\n fromISOString,\n generateCalendarGrid,\n getMonthNames,\n getQuickSelectPresets,\n getToday,\n getWeekdayNames,\n getWrappedTimeValue,\n getYearRange,\n hasTimeTokens,\n isSameDay,\n isSameMonth,\n normalizeRange,\n parseDate,\n parseTimeValue,\n setMonth,\n setTime,\n setYear,\n to24Hour,\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 FormsModule,\n NgTemplateOutlet,\n NgScrollbar,\n ZIconComponent,\n ZSelectComponent,\n ZTooltipDirective,\n ZPopoverDirective,\n ZButtonComponent,\n ZDayClassesPipe,\n ZMonthClassesPipe,\n ZQuarterClassesPipe,\n ZYearClassesPipe,\n ZIsPresetDisabledPipe,\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 zAllowEdit = input(true, { transform: zTransform });\n public readonly zShortTime = 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 public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zEvent = output<ZEvent>();\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 _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _customError = signal<string | null>(null);\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 _backupActivePresetKey = signal<string | null>(null);\n private readonly _backupShortDisplayPresetKey = signal<string | 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 private readonly _isNgModel = signal(false);\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 isInputFocused = signal(false);\n protected readonly activePresetKey = signal<string | null>(null);\n protected readonly shortDisplayPresetKey = signal<string | null>(null);\n protected readonly quickSelectOptions = computed<ZSelectOption<string>[]>(() =>\n this.quickSelectPresets.map(preset => ({\n label: preset.label,\n value: preset.key,\n disabled: this._isQuickSelectPresetDisabled(preset),\n }))\n );\n\n protected readonly rangeShortDisplayValue = computed(() => {\n this._zTranslate.currentLang();\n\n if (!this.isRangeMode() || !this.zQuickSelect() || this.zAllowEdit() || !this.zShortTime()) {\n return '';\n }\n\n const activePreset = this.quickSelectPresets.find(preset => preset.key === this.shortDisplayPresetKey());\n if (activePreset && activePreset.key !== 'custom') {\n return this._zTranslate.instant(activePreset.label);\n }\n\n return '';\n });\n\n protected readonly uiState = signal({\n hasViewChanged: false,\n hasEndViewChanged: false,\n timeDropdownOpen: false,\n timeDropdownEndOpen: false,\n isFocused: false,\n touched: false,\n dirty: 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 = this._currentMonth.asReadonly();\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 suppressOtherMonthRangeState: this.isRangeMode(),\n });\n });\n\n protected readonly endMonth = this._endMonth.asReadonly();\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 suppressOtherMonthRangeState: this.isRangeMode(),\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 = this._minuteEnd.asReadonly();\n protected readonly secondEnd = this._secondEnd.asReadonly();\n protected readonly periodEnd = this._periodEnd.asReadonly();\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 timeFormat = this._buildTimeFormat(this.period());\n return this._formatDisplayValue(timeFormat);\n }\n\n if (this.zShowTime() && !formatHasTime) {\n const timeFormat = this._buildTimeFormat(this.period());\n return this._formatDisplayValue(`${format} ${timeFormat}`);\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 = this._inputDisplayStart.asReadonly();\n protected readonly inputDisplayEnd = this._inputDisplayEnd.asReadonly();\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 protected readonly effectivePlaceholder = computed(() => this.zPlaceholder() ?? '');\n\n private _getDisplayFormatStart(): string {\n const format = this.zFormat();\n const formatHasTime = hasTimeTokens(format);\n\n if (this.isTimeMode()) {\n return this._buildTimeFormat(this.period());\n }\n\n if (this.zShowTime() && !formatHasTime) {\n return `${format} ${this._buildTimeFormat(this.period())}`;\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 return this._buildTimeFormat(this._periodEnd());\n }\n\n if (this.zShowTime() && !formatHasTime) {\n return `${format} ${this._buildTimeFormat(this._periodEnd())}`;\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.zAllowEdit() && !this.isDisabled() && !this.zReadonly()\n ? 'cursor-pointer hover:bg-muted/30 [&_input]:cursor-pointer'\n : '',\n this.class()\n )\n );\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n // For NgModel, use internal state (same as z-input)\n if (this._isNgModel()) {\n return this.uiState().dirty || this.uiState().touched;\n }\n\n if (control) {\n return control.dirty;\n }\n return this.uiState().dirty || this.uiState().touched;\n });\n\n protected readonly hasError = computed(() => {\n // Check custom error first (from setErrorMessage)\n if (this._customError()) {\n return true;\n }\n\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 errorMessage = computed(() => {\n // Check custom error first (from setErrorMessage)\n const customError = this._customError();\n if (customError) {\n return customError;\n }\n\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 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 this._isNgModel.set(this._ngControl instanceof NgModel);\n\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 this._updateInputDisplay();\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.shortDisplayPresetKey()) {\n const presetKey = this._detectMatchingPreset(range.start, range.end);\n this.activePresetKey.set(presetKey);\n this.shortDisplayPresetKey.set(this.zShortTime() && presetKey !== 'custom' ? presetKey : null);\n }\n if (this.zShowTime()) {\n this._syncTimeSignals(range.start);\n this._syncEndTimeSignals(range.end);\n }\n } else {\n this.activePresetKey.set(null);\n }\n\n this._updateRangeInputDisplay();\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.activePresetKey.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this.uiState.update(s => ({ ...s, touched: false, dirty: 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 /** @deprecated Use `valid()` for boolean form-submit checks. */\n public validate(): boolean {\n this.uiState.update(s => ({ ...s, touched: true, dirty: 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.hasError();\n }\n\n public valid(): boolean {\n return !this.validate();\n }\n\n public setErrorMessage(message: string | null): void {\n this._customError.set(message);\n if (message) {\n this.uiState.update(s => ({ ...s, touched: true, dirty: true }));\n }\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 const triggerEl = this.triggerRef()?.nativeElement;\n if (triggerEl) {\n const focusEvent = new FocusEvent('focus', { relatedTarget: triggerEl });\n this.zOnFocus.emit(focusEvent);\n this.zEvent.emit(zCreateEvent('focus', focusEvent));\n }\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.isTimeMode()) {\n this._scrollToTimeDropdown();\n }\n\n if (this.isRangeMode()) {\n this.endView.set('day');\n this._updateRangeInputDisplay();\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 this._backupActivePresetKey.set(this.activePresetKey());\n this._backupShortDisplayPresetKey.set(this.shortDisplayPresetKey());\n }\n\n protected onPopoverHide(): void {\n this.uiState.update(s => ({ ...s, isFocused: false }));\n this.hoveredDate.set(null);\n\n const triggerEl = this.triggerRef()?.nativeElement;\n if (triggerEl) {\n const blurEvent = new FocusEvent('blur', { relatedTarget: triggerEl });\n this.zOnBlur.emit(blurEvent);\n this.zEvent.emit(zCreateEvent('blur', blurEvent));\n }\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.uiState.update(s => ({ ...s, dirty: false }));\n }\n }\n\n if (this.uiState().dirty) {\n this.uiState.update(s => ({ ...s, touched: true }));\n }\n\n this._onTouched();\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._updateRangeInputDisplay();\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.activePresetKey.set(this._backupActivePresetKey());\n this.shortDisplayPresetKey.set(this._backupShortDisplayPresetKey());\n this.uiState.update(s => ({ ...s, dirty: 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._updateRangeInputDisplay();\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 if (!this.zAllowEdit()) {\n return;\n }\n\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 if (!this.zAllowEdit()) {\n return;\n }\n\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 if (!this.zAllowEdit()) {\n return;\n }\n\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 if (!this.zAllowEdit()) {\n this._updateRangeInputDisplay();\n const input = event.target as HTMLInputElement;\n input.value = this.inputDisplayStart();\n return;\n }\n\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.uiState.update(s => ({ ...s, dirty: true }));\n this._inputDisplayStart.set(this.displayValueStart());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n return;\n }\n\n if (!this.showOkButton()) {\n this._applyValue();\n }\n }\n\n protected onEndInputEnter(event: Event): void {\n event.preventDefault();\n if (!this.zAllowEdit()) {\n this._updateRangeInputDisplay();\n const input = event.target as HTMLInputElement;\n input.value = this.inputDisplayEnd();\n return;\n }\n\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.uiState.update(s => ({ ...s, dirty: true }));\n this._inputDisplayEnd.set(this.displayValueEnd());\n input.blur();\n\n if (this.showOkButton() && this.canApply()) {\n this.onOkClick();\n return;\n }\n\n if (!this.showOkButton()) {\n this._applyValue();\n }\n }\n\n protected onInputFocus(_event: FocusEvent): void {\n this.isInputFocused.set(true);\n this._backupSelectedDate.set(this._selectedDate());\n }\n\n protected onInputBlur(event: FocusEvent): void {\n this.isInputFocused.set(false);\n\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 const previousValue = this._selectedDate();\n // Only apply and set dirty if there was an actual change (had value before, now empty)\n if (previousValue !== null) {\n this._selectedDate.set(null);\n this._backupSelectedDate.set(null);\n this.inputDisplayValue.set('');\n this._applyValue();\n }\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 if (!this.zAllowEdit()) {\n this.inputDisplayValue.set(this.displayValue());\n input.value = this.displayValue();\n return;\n }\n\n const value = input.value.trim();\n\n if (!value) {\n this._skipBlurHandler.set(true);\n this._clearDateValues();\n this.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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 this.shortDisplayPresetKey.set(preset.key === 'custom' ? null : 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.uiState.update(s => ({ ...s, dirty: true }));\n this._updateRangeInputDisplay();\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.uiState.update(s => ({ ...s, dirty: true }));\n this._updateRangeInputDisplay();\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onQuickSelectKeyChange(key: string | null): void {\n if (!key) {\n return;\n }\n\n const preset = this.quickSelectPresets.find(item => item.key === key);\n if (!preset || this._isQuickSelectPresetDisabled(preset)) {\n return;\n }\n\n this.onQuickSelect(preset);\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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.activePresetKey.set('today');\n this.shortDisplayPresetKey.set('today');\n this._endMonth.set(addMonths(today, 1));\n if (this.zShowTime()) {\n this._syncEndTimeSignals(now);\n }\n this.uiState.update(s => ({ ...s, dirty: true }));\n this._updateRangeInputDisplay();\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.uiState.update(s => ({ ...s, dirty: 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.activePresetKey.set(null);\n this.shortDisplayPresetKey.set(null);\n this.hour.set(0);\n this.minute.set(0);\n this.second.set(0);\n this.uiState.update(s => ({ ...s, dirty: true }));\n\n this._backupSelectedDate.set(null);\n this._backupRangeStart.set(null);\n this._backupRangeEnd.set(null);\n this._backupActivePresetKey.set(null);\n this._backupShortDisplayPresetKey.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 const hour = to24Hour(this.hour(), this.period(), this.zTimeFormat());\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 if (view === 'month' || view === 'day') {\n this._currentMonth.update(date => addMonths(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\n }\n\n protected navigateNext(): void {\n const view = this.currentView();\n if (view === 'month' || view === 'day') {\n this._currentMonth.update(date => addMonths(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\n }\n\n protected navigatePreviousFast(): void {\n const view = this.currentView();\n if (view === 'day') {\n this._currentMonth.update(date => addYears(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'month' || view === 'quarter') {\n this._currentMonth.update(date => addYears(date, -1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, -10));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\n }\n\n protected navigateNextFast(): void {\n const view = this.currentView();\n if (view === 'day') {\n this._currentMonth.update(date => addYears(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'month' || view === 'quarter') {\n this._currentMonth.update(date => addYears(date, 1));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n return;\n }\n if (view === 'year') {\n this._currentMonth.update(date => addYears(date, 10));\n this.uiState.update(s => ({ ...s, hasViewChanged: true }));\n }\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 const hour = to24Hour(this._hourEnd(), this._periodEnd(), this.zTimeFormat());\n\n const newDate = setTime(end, hour, this._minuteEnd(), this._secondEnd());\n this._rangeEnd.set(newDate);\n this.uiState.update(s => ({ ...s, dirty: 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.uiState.update(s => ({ ...s, dirty: 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.shortDisplayPresetKey.set(null);\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.uiState.update(s => ({ ...s, dirty: true }));\n if (normalized.start && normalized.end) {\n this.activePresetKey.set(this._detectMatchingPreset(normalized.start, normalized.end));\n }\n this.shortDisplayPresetKey.set(null);\n this._updateRangeInputDisplay();\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 const hour = to24Hour(this.hour(), this.period(), this.zTimeFormat());\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.uiState.update(s => ({ ...s, dirty: 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 _updateRangeInputDisplay(): void {\n const shortDisplay = this.rangeShortDisplayValue();\n if (shortDisplay) {\n this._inputDisplayStart.set(shortDisplay);\n this._inputDisplayEnd.set('');\n return;\n }\n\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n private _isQuickSelectPresetDisabled(preset: ZQuickSelectPreset): boolean {\n const disabledDateFn = this.zDisabledDate();\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\n if (value.end && disabledDateFn(value.end)) {\n return true;\n }\n\n return false;\n }\n\n private _applyValue(): void {\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this.uiState.update(s => ({ ...s, dirty: true }));\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._updateRangeInputDisplay();\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 timeFormat = this._buildTimeFormat();\n if (this.isTimeMode()) {\n return timeFormat;\n }\n return `${this.zFormat()} ${timeFormat}`;\n }\n\n private _buildTimeFormat(period?: 'AM' | 'PM'): string {\n return buildTimeFormat(this.zShowHour(), this.zShowMinute(), this.zShowSecond(), this.zTimeFormat(), period);\n }\n\n private _updateInputDisplay(): void {\n this.inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._updateRangeInputDisplay();\n }\n }\n\n private _clearDateValues(): void {\n if (this.isRangeMode()) {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this.activePresetKey.set(null);\n this.shortDisplayPresetKey.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._updateRangeInputDisplay();\n return;\n }\n this.inputDisplayValue.set(this.displayValue());\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n valid: () => this.valid(),\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 setErrorMessage: (message: string | null) => this.setErrorMessage(message),\n hasError: this.hasError,\n isOpen: this.isOpen,\n value: computed(() => this._getEmitValue()),\n errorMessage: this.errorMessage,\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 this.selectHour(this._getNextHour(this.displayHour()), true);\n }\n\n protected decrementHour(): void {\n this.selectHour(this._getPreviousHour(this.displayHour()), true);\n }\n\n protected incrementMinute(): void {\n this.selectMinute(getWrappedTimeValue(this.minute(), 0, 59, 1), true);\n }\n\n protected decrementMinute(): void {\n this.selectMinute(getWrappedTimeValue(this.minute(), 0, 59, -1), true);\n }\n\n protected incrementSecond(): void {\n this.selectSecond(getWrappedTimeValue(this.second(), 0, 59, 1), true);\n }\n\n protected decrementSecond(): void {\n this.selectSecond(getWrappedTimeValue(this.second(), 0, 59, -1), true);\n }\n\n protected incrementHourEnd(): void {\n this.selectHourEnd(this._getNextHour(this.displayHourEnd()), true);\n }\n\n protected decrementHourEnd(): void {\n this.selectHourEnd(this._getPreviousHour(this.displayHourEnd()), true);\n }\n\n protected incrementMinuteEnd(): void {\n this.selectMinuteEnd(getWrappedTimeValue(this._minuteEnd(), 0, 59, 1), true);\n }\n\n protected decrementMinuteEnd(): void {\n this.selectMinuteEnd(getWrappedTimeValue(this._minuteEnd(), 0, 59, -1), true);\n }\n\n protected incrementSecondEnd(): void {\n this.selectSecondEnd(getWrappedTimeValue(this._secondEnd(), 0, 59, 1), true);\n }\n\n protected decrementSecondEnd(): void {\n this.selectSecondEnd(getWrappedTimeValue(this._secondEnd(), 0, 59, -1), true);\n }\n\n private _getNextHour(hour: number): number {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n return getWrappedTimeValue(hour, minHour, maxHour, 1);\n }\n\n private _getPreviousHour(hour: number): number {\n const maxHour = this.zTimeFormat() === '12h' ? 12 : 23;\n const minHour = this.zTimeFormat() === '12h' ? 1 : 0;\n return getWrappedTimeValue(hour, minHour, maxHour, -1);\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 const actualHour = to24Hour(hour, this.period(), this.zTimeFormat());\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 const actualHour = to24Hour(hour, this._periodEnd(), this.zTimeFormat());\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 p-0\"\n (zHideStart)=\"onPopoverHide()\"\n (zShow)=\"onPopoverShow()\"\n (zControl)=\"onPopoverControl($event)\"\n [id]=\"pickerId\"\n [class]=\"triggerClasses()\"\n z-tooltip\n [zContent]=\"displayValue()\"\n zTooltipTrigger=\"hover\"\n zTooltipPosition=\"top\"\n [zTooltipDisabled]=\"isInputFocused() || isOpen() || !hasValue()\"\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-sm outline-none disabled:opacity-100\"\n [class.cursor-pointer]=\"!zAllowEdit()\"\n [class.pointer-events-none]=\"!zAllowEdit()\"\n [class.text-center]=\"!rangeShortDisplayValue()\"\n [class.text-left]=\"rangeShortDisplayValue()\"\n [placeholder]=\"'i18n_z_ui_calendar_start_date' | translate\"\n [value]=\"inputDisplayStart()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly() || !zAllowEdit()\"\n (click)=\"zAllowEdit() && 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 @if (!rangeShortDisplayValue()) {\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 disabled:opacity-100\"\n [class.cursor-pointer]=\"!zAllowEdit()\"\n [class.pointer-events-none]=\"!zAllowEdit()\"\n [placeholder]=\"'i18n_z_ui_calendar_end_date' | translate\"\n [value]=\"inputDisplayEnd()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly() || !zAllowEdit()\"\n (click)=\"zAllowEdit() && 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 }\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 disabled:opacity-100\"\n [class.cursor-pointer]=\"!zAllowEdit()\"\n [class.pointer-events-none]=\"!zAllowEdit()\"\n [placeholder]=\"effectivePlaceholder()\"\n [value]=\"inputDisplayValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly() || !zAllowEdit()\"\n (click)=\"zAllowEdit() && 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-sm transition-all\"\n [class.opacity-0]=\"!hasValue()\"\n [class.pointer-events-none]=\"!hasValue()\"\n (click)=\"onClear($event)\">\n <z-icon zType=\"lucideX\" zSize=\"18\" />\n </button>\n }\n </div>\n </div>\n\n @if (hasError()) {\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-[calc(100vw-1.5rem)] flex-col overflow-hidden rounded-sm 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 class=\"border-border hidden shrink-0 flex-col gap-0 space-y-1 overflow-y-auto border-r p-2 sm:flex\">\n @for (preset of quickSelectPresets; track preset.key) {\n @let presetDisabled = preset | zIsPresetDisabled: zDisabledDate();\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-sm 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 min-h-0 flex-1 flex-col items-center overflow-hidden pb-0 sm:overflow-visible sm:py-2\"\n [class.sm:pt-0!]=\"isTimeMode()\"\n [class]=\"\n !isRangeMode()\n ? 'w-[17.75rem] max-w-[calc(100vw-1.5rem)]'\n : 'w-[17.75rem] max-w-[calc(100vw-1.5rem)] sm:w-auto sm:max-w-none'\n \">\n @if (zQuickSelect() && zMode() === 'range') {\n <div class=\"border-border w-full border-b px-2 pt-2 pb-2 sm:hidden\">\n <z-select\n class=\"w-full\"\n zSize=\"sm\"\n zPosition=\"bottom-left\"\n [zShowSearch]=\"false\"\n [zAllowClear]=\"false\"\n [zOptions]=\"quickSelectOptions()\"\n [ngModel]=\"activePresetKey()\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"onQuickSelectKeyChange($event)\" />\n </div>\n }\n <div class=\"min-h-0 w-full flex-1 overflow-x-hidden overflow-y-auto pt-2 sm:overflow-visible sm:pt-0\">\n @if (!isTimeMode()) {\n <div\n class=\"z-calendars-wrapper flex w-full flex-col items-center gap-0 sm:flex-row sm:items-stretch sm:justify-center\">\n <!-- First Calendar -->\n <div class=\"z-calendar-section flex w-[17.5rem] 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 <!-- Double left arrow (always visible) -->\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=\"18\" />\n </button>\n\n <!-- Single left arrow (hidden in month/year view) -->\n @if (currentView() === 'day') {\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=\"18\" />\n </button>\n }\n\n <!-- Header content -->\n <div class=\"flex flex-1 shrink-0 items-center justify-center gap-0\">\n @if (currentView() === 'day') {\n <!-- Day view: Month + Year -->\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 (click)=\"setView('month')\">\n {{ currentMonthName() }}\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 [zDisabled]=\"isYearMode()\"\n (click)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n } @else if (currentView() === 'month') {\n <!-- Month view: Only Year -->\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)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n } @else if (currentView() === 'year') {\n <!-- Year view: Year Range -->\n <span class=\"text-sm font-medium\">\n {{ yearRange()[0] }} - {{ yearRange()[yearRange().length - 1] }}\n </span>\n } @else if (currentView() === 'quarter') {\n <!-- Quarter view: Only Year -->\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)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n }\n </div>\n\n <!-- Single right arrow (hidden in month/year view) -->\n @if (currentView() === 'day') {\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=\"18\" />\n </button>\n }\n\n <!-- Double right arrow (always visible) -->\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=\"18\" />\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-[14rem]]=\"!isQuarterMode()\"\n [class.h-[14rem]]=\"\n !isYearMode() &&\n !isMonthMode() &&\n !isQuarterMode() &&\n (currentView() === 'month' || currentView() === 'year')\n \"\n [class.min-h-[6.25rem]]=\"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 h-[1.875rem] w-[2.0313rem] 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=\"h-[1.875rem] !w-[2.0313rem] !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\n class=\"border-border bg-border mb-2 hidden self-stretch sm:block sm:w-px\"\n [class.mb-2]=\"!zQuickSelect() || (zQuickSelect() && zShowOk())\"></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-[17.5rem] shrink-0 flex-col pt-2 sm:pt-0\">\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=\"18\" />\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=\"18\" />\n </button>\n\n <div class=\"flex w-[7.5rem] 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=\"18\" />\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=\"18\" />\n </button>\n </div>\n\n <!-- Body -->\n <div\n class=\"flex h-full min-h-[14rem] w-full flex-col items-center justify-center p-2\"\n [class.h-[14rem]]=\"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 h-[1.875rem] w-[2.0313rem] 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=\"h-[1.875rem] !w-[2.0313rem] !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\n class=\"hover:bg-muted border-border flex w-full cursor-pointer items-center justify-center gap-1.5 border-t px-3 py-1.5 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n [zPopoverWidth]=\"240\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-lg\"\n (zShow)=\"onTimeDropdownShow()\">\n <z-icon zType=\"lucideCalendarClock\" zSize=\"18\" class=\"text-muted-foreground mr-1 shrink-0\" />\n <span class=\"text-sm font-medium tabular-nums select-none\">\n @if (zShowHour()) {\n {{ formattedHour() }}\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n {{ formattedMinute() }}\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n {{ formattedSecond() }}\n }\n @if (zTimeFormat() === '12h') {\n <span class=\"text-primary ml-0.5 font-semibold\">\n {{ period() }}\n </span>\n }\n </span>\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" class=\"text-muted-foreground shrink-0\" />\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\n class=\"hover:bg-muted flex flex-1 cursor-pointer items-center justify-center gap-1.5 px-3 py-1.5 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownTpl\"\n zPosition=\"bottom\"\n [zPopoverWidth]=\"240\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-lg\"\n (zShow)=\"onTimeDropdownShow()\">\n <z-icon zType=\"lucideCalendarClock\" zSize=\"18\" class=\"text-muted-foreground mr-1 shrink-0\" />\n <span class=\"text-sm font-medium tabular-nums select-none\">\n @if (zShowHour()) {\n {{ formattedHour() }}\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n {{ formattedMinute() }}\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n {{ formattedSecond() }}\n }\n @if (zTimeFormat() === '12h') {\n <span class=\"text-primary ml-0.5 font-semibold\">\n {{ period() }}\n </span>\n }\n </span>\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" class=\"text-muted-foreground shrink-0\" />\n </div>\n\n <!-- Divider -->\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\n class=\"hover:bg-muted flex flex-1 cursor-pointer items-center justify-center gap-1.5 px-3 py-1.5 transition-colors\"\n z-popover\n [zPopoverContent]=\"timeDropdownEndTpl\"\n zPosition=\"bottom\"\n [zPopoverWidth]=\"240\"\n [zOffset]=\"4\"\n zTrigger=\"click\"\n zClass=\"border-border shadow-lg\"\n (zShow)=\"onTimeDropdownEndShow()\">\n <z-icon zType=\"lucideCalendarClock\" zSize=\"18\" class=\"text-muted-foreground mr-1 shrink-0\" />\n <span class=\"text-sm font-medium tabular-nums select-none\">\n @if (zShowHour()) {\n {{ formattedHourEnd() }}\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n {{ formattedMinuteEnd() }}\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n {{ formattedSecondEnd() }}\n }\n @if (zTimeFormat() === '12h') {\n <span class=\"text-primary ml-0.5 font-semibold\">\n {{ periodEnd() }}\n </span>\n }\n </span>\n <z-icon zType=\"lucideChevronDown\" zSize=\"14\" class=\"text-muted-foreground shrink-0\" />\n </div>\n </div>\n }\n } @else {\n <!-- Time Only Mode -->\n <div class=\"flex w-full justify-center px-2 pt-2 pb-1\">\n <ng-container [ngTemplateOutlet]=\"timeDropdownTpl\" />\n </div>\n }\n </div>\n\n @if (!(zQuickSelect() && zMode() === 'range' && !showOkButton() && !showCancelButton())) {\n <div\n class=\"bg-popover border-border z-10 flex w-full shrink-0 items-center justify-between gap-2 border-t px-2 py-2 shadow-[0_-2px_8px_-2px_rgb(0_0_0_/_10%)] sm:pt-2 sm:pb-0 sm:shadow-none\">\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 min-w-56 justify-center overflow-hidden rounded-sm\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_hour' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-hour h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowMinute() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (hr of hourOptions(); track hr) {\n @let hrSelected = hr === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_minute' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-minute h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"!zShowHour() && (zShowSecond() || zTimeFormat() === '12h')\"\n [class.rounded-br-sm]=\"(zShowHour() || !zShowHour()) && !zShowSecond() && zTimeFormat() !== '12h'\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (min of minuteOptions; track min) {\n @let minSelected = min === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zTimeFormat() === '12h'\"\n [class.border-border]=\"zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_second' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-second h-[11rem] w-14\"\n [class.rounded-br-sm]=\"zTimeFormat() !== '12h'\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowMinute() && zTimeFormat() !== '12h'\"\n track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (sec of secondOptions; track sec) {\n @let secSelected = sec === 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 @if (zTimeFormat() === '12h') {\n <div class=\"flex flex-col\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_period' | translate }}\n </div>\n <ng-scrollbar class=\"z-time-scroll-period h-[11rem] w-14\" [class.rounded-br-sm]=\"true\" track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (p of ['AM', 'PM']; track p) {\n @let pSelected = p === period();\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]=\"!pSelected\"\n [class.bg-primary]=\"pSelected\"\n [class.text-primary-foreground]=\"pSelected\"\n [class.font-medium]=\"pSelected\"\n (click)=\"selectPeriod($any(p))\">\n {{ p }}\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 min-w-56 justify-center overflow-hidden rounded-sm\">\n @if (zShowHour()) {\n <div\n class=\"flex flex-col\"\n [class.border-r]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_hour' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-hour-end h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowMinute() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"zShowMinute() || zShowSecond() || zTimeFormat() === '12h'\"\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 === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zShowSecond() || zTimeFormat() === '12h'\"\n [class.border-border]=\"zShowSecond() || zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_minute' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-minute-end h-[11rem] w-14\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowSecond() && zTimeFormat() !== '12h'\"\n [class.rounded-tl-sm]=\"!zShowHour() && (zShowSecond() || zTimeFormat() === '12h')\"\n [class.rounded-br-sm]=\"(zShowHour() || !zShowHour()) && !zShowSecond() && zTimeFormat() !== '12h'\"\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 === 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\n class=\"flex flex-col\"\n [class.border-r]=\"zTimeFormat() === '12h'\"\n [class.border-border]=\"zTimeFormat() === '12h'\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_second' | translate }}\n </div>\n <ng-scrollbar\n class=\"z-time-scroll-second-end h-[11rem] w-14\"\n [class.rounded-br-sm]=\"zTimeFormat() !== '12h'\"\n [class.rounded-bl-sm]=\"!zShowHour() && !zShowMinute() && zTimeFormat() !== '12h'\"\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 === 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 @if (zTimeFormat() === '12h') {\n <div class=\"flex flex-col\">\n <div\n class=\"text-muted-foreground border-b-border flex h-7 shrink-0 items-center justify-center border-b text-xs font-medium select-none\">\n {{ 'i18n_z_ui_calendar_period' | translate }}\n </div>\n <ng-scrollbar class=\"z-time-scroll-period-end h-[11rem] w-14\" [class.rounded-br-sm]=\"true\" track=\"vertical\">\n <div class=\"flex flex-col\">\n @for (p of ['AM', 'PM']; track p) {\n @let pSelected = p === periodEnd();\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]=\"!pSelected\"\n [class.bg-primary]=\"pSelected\"\n [class.text-primary-foreground]=\"pSelected\"\n [class.font-medium]=\"pSelected\"\n (click)=\"selectPeriodEnd($any(p))\">\n {{ p }}\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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"}