{"version":3,"file":"eui-components-eui-calendar.mjs","sources":["../../eui-calendar/models.ts","../../eui-calendar/eui-calendar-day.component.ts","../../eui-calendar/eui-calendar-day.component.html","../../eui-calendar/eui-calendar-monthly.component.ts","../../eui-calendar/eui-calendar-monthly.component.html","../../eui-calendar/eui-calendar.component.ts","../../eui-calendar/eui-calendar.component.html","../../eui-calendar/eui-calendar-header.component.ts","../../eui-calendar/eui-calendar-header.component.html","../../eui-calendar/eui-calendar-weekly-day-header.component.ts","../../eui-calendar/eui-calendar-weekly-day-content.component.ts","../../eui-calendar/eui-calendar-weekly-day-content.component.html","../../eui-calendar/eui-calendar-weekly.component.ts","../../eui-calendar/eui-calendar-weekly.component.html","../../eui-calendar/eui-calendar-weekly-day-header-actions.component.ts","../../eui-calendar/eui-calendar-weekly-day-header-actions.component.html","../../eui-calendar/index.ts","../../eui-calendar/eui-components-eui-calendar.ts"],"sourcesContent":["import { Signal, WritableSignal } from '@angular/core';\n\n/**\n * Enum for days of the week\n * @readonly\n * @enum {number}\n */\nexport const EuiCalendarDayOfWeek = {\n\tMONDAY: 0,\n\tTUESDAY: 1,\n\tWEDNESDAY: 2,\n\tTHURSDAY: 3,\n\tFRIDAY: 4,\n\tSATURDAY: 5,\n\tSUNDAY: 6,\n};\n\n/**\n * @description\n * Interface for defining action options in the day header.\n */\nexport interface EuiCalendarDayHeaderActionOption {\n\tlabel: string;\n\tcallback: (e, day?: Date) => void;\n\tid: string;\n}\n\n/**\n * @description\n * Interface for defining a day in the calendar.\n */\nexport interface EuiCalendarDay {\n\t/** Unique identifier for the day */\n\tid: number;\n\t/** Date object representing the day */\n\tdate: Date;\n    /** Indicates if the day is disabled */\n    disabled?: boolean;\n\t/** Indicates if the day is today (based on user's Machine day) */\n\tisToday?: boolean;\n\t/** Indicates if the day a weekend (Saturday, Sunday) */\n\tisWeekend?: boolean;\n\t/** Metadata associated with the day */\n\tmetadata: Signal<EuiCalendarEvent[]>;\n}\n\n/**\n * @description\n * Interface for defining an event in the calendar.\n */\nexport interface EuiCalendarEvent {\n\tid: string;\n\tdate: WritableSignal<Date>;\n\tlabel: WritableSignal<string>;\n\tsubLabel?: WritableSignal<string>;\n\ttype?: WritableSignal<string>;\n}\n\n/**\n * Defines the direction of calendar navigation.\n */\nexport enum EuiCalendarNavigationDirection {\n\tPrevious = 'previous',\n\tNext = 'next',\n}\n\n/**\n * Event emitted when the calendar navigation buttons are clicked.\n */\nexport interface EuiCalendarNavigationEvent {\n\t/**\n\t * The direction of navigation, either 'previous' or 'next'.\n\t */\n\tdirection: EuiCalendarNavigationDirection;\n\t/**\n\t * The current date before navigation.\n\t */\n\tcurrent: Date;\n\t/**\n\t * The new date after navigation.\n\t */\n\tnew: Date;\n\t/**\n\t * The current mode of the calendar (monthly, weekly, or daily).\n\t */\n\tmode: EuiCalendarMode;\n}\n\n/**\n * Defines the mode of the calendar header.\n */\nexport enum EuiCalendarMode {\n\tMonthly = 'monthly',\n\tWeekly = 'weekly',\n\tDaily = 'daily',\n}\n\nexport interface EuiCalendarHeaderContext {\n\t/**\n\t * Mode of the calendar header (monthly, weekly, or daily).\n\t */\n\tcurrentDate: Date;\n\t/**\n\t * Mode of the calendar header (monthly, weekly, or daily).\n\t */\n\tmode: EuiCalendarMode;\n\t/**\n\t * Callback function when navigate to the previous month/week/day.\n\t */\n\tprevious: () => void;\n\t/**\n\t * Callback function when navigate to the next month/week/day.\n\t */\n\tnext: () => void;\n\t/**\n\t * Callback function when navigate to today's date.\n\t */\n\tcbToday: () => void;\n\t/**\n\t * Formatted date string for display in the header (e.g., \"September 2023\" or \"Week 36, 2023\").\n\t * It is formatted based on the current mode.\n\t */\n\tformattedDate: string;\n\t/**\n\t * True if the current date is today.\n\t */\n\tisToday: boolean;\n}\n\nexport enum EuiCalendarEventType {\n\tprimary = 'primary',\n\tsuccess = 'success',\n\twarning = 'warning',\n\tdanger = 'danger',\n\tinfo = 'info',\n}","import {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tHostBinding,\n\tHostListener,\n\tinput,\n\tnumberAttribute,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_CHIP } from '@eui/components/eui-chip';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_POPOVER, EuiPopoverComponent } from '@eui/components/eui-popover';\nimport { EuiCalendarEvent, EuiCalendarEventType } from './models';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n/**\n * @description\n */\n@Component({\n\ttemplateUrl: './eui-calendar-day.component.html',\n\tselector: 'eui-calendar-day',\n\tstyleUrl: './eui-calendar-day.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tNgClass,\n\t\t...EUI_BUTTON,\n\t\t...EUI_CHIP,\n\t\t...EUI_LABEL,\n\t\t...EUI_POPOVER,\n\t\t...EUI_ICON,\n\t],\n})\nexport class EuiCalendarDayComponent {\n\t@HostBinding('class') get cssClasses(): string {\n        return [\n            'day-container',\n            this.euiDisabled() ? 'day-container--disabled' : '',\n        ].join(' ').trim();\n    }\n\n\teuiDisabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\tdayOfTheMonth = input<number, NumberInput>(4, { transform: numberAttribute });\n\tmaxNumberOfEventsToShow = input<number, NumberInput>(2, { transform: numberAttribute });\n\tevents = input<Array<EuiCalendarEvent>>();\n\tisSelected = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\taddNewEvent = signal(false);\n\taddNewItemEvent = output();\n\tprotected renderNewEvent = computed(() => {\n\t\treturn this.addNewEvent() && this.dayOfTheMonth() !== null;\n\t});\n\tprotected readonly EventType = EuiCalendarEventType;\n\tprivate popover = viewChild<EuiPopoverComponent>('popover');\n\n\t// eslint-disable-next-line\n\tshowMoreEvents(e: any): void {\n\t\tthis.popover().openPopover(e.target);\n\t}\n\n\t@HostListener('mouseenter')\n\tonMouseOver(): void {\n\t\tif (!this.euiDisabled()) {\n\t\t\tthis.addNewEvent.update(() => true);\n\t\t}\n\t}\n\n\t@HostListener('mouseleave')\n\tonMouseOut(): void {\n\t\tthis.addNewEvent.update(() => false);\n\t}\n\n\taddNewItemClicked(): void {\n\t\tthis.addNewItemEvent.emit();\n\t}\n}","<!-- <div [ngClass]=\"{ 'day-container--disabled': euiDisabled() }\" class=\"day-container\"> -->\n    @if (dayOfTheMonth()) {\n        <div class=\"eui-u-flex eui-u-flex-row eui-u-flex-justify-content-between\">\n            <button euiButton\n                    [euiRounded]=\"isSelected()\"\n                    [euiPrimary]=\"isSelected()\"\n                    [euiBasicButton]=\"!isSelected()\">\n                {{ dayOfTheMonth() }}\n            </button>\n            @if (renderNewEvent()) {\n                <button euiButton euiSizeS euiInfo (click)=\"addNewItemClicked()\">\n                    <eui-icon-svg icon=\"eui-add\" size=\"s\"/>\n                </button>\n            }\n        </div>\n    }\n\n    <div class=\"eui-u-flex eui-u-flex-column eui-u-flex-align-items-start eui-u-flex-gap-xs day-container__events-region\">\n        @for (event of events(); track event.id; let idx = $index, e = $even, l = $last) {\n            @if (idx < maxNumberOfEventsToShow()) {\n                @if (event.type) {\n                    <eui-chip [euiPrimary]=\"event.type() === EventType.primary\"\n                              [euiSuccess]=\"event.type() === EventType.success\"\n                              [euiWarning]=\"event.type() === EventType.warning\"\n                              [euiDanger]=\"event.type() === EventType.danger\"\n                              [euiInfo]=\"event.type() === EventType.info\"\n                              euiSizeS>\n                        <span [title]=\"event.label()\">{{ event.label() }}</span>\n                    </eui-chip>\n                } @else {\n                    <eui-chip euiSizeS>\n                        <span [title]=\"event.label()\">{{ event.label() }}</span>\n                    </eui-chip>\n                }\n            }\n\n            @if (l) {\n                @if (events().length > maxNumberOfEventsToShow()) {\n                    <span euiLabel euiPrimary (click)=\"showMoreEvents($event)\" class=\"day-container__show-more\">\n                        +{{ events().length - maxNumberOfEventsToShow() }} more\n                    </span>\n                }\n            }\n        }\n    </div>\n<!-- </div> -->\n\n<eui-popover #popover [title]=\"'Events'\">\n    <div class=\"eui-u-flex eui-u-flex-column eui-u-flex-align-items-start eui-u-flex-gap-xs\">\n        @for (event of events(); track event.id; let idx = $index, e = $even, l = $last) {\n            @if (event.type) {\n                <eui-chip [euiPrimary]=\"event.type() === EventType.primary\"\n                          [euiSuccess]=\"event.type() === EventType.success\"\n                          [euiWarning]=\"event.type() === EventType.warning\"\n                          [euiDanger]=\"event.type() === EventType.danger\"\n                          [euiInfo]=\"event.type() === EventType.info\"\n                          euiSizeS>\n                    <span [title]=\"event.label\">{{ event.label }}</span>\n                </eui-chip>\n            } @else {\n                <eui-chip euiSizeS>\n                    <span [title]=\"event.label\">{{ event.label }}</span>\n                </eui-chip>\n            }\n        }\n    </div>\n</eui-popover>","import {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tSignal,\n\tTemplateRef,\n} from '@angular/core';\nimport { EuiCalendarDayComponent } from './eui-calendar-day.component';\nimport { EuiCalendarEvent } from './models';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { LocaleService } from '@eui/core';\nimport { EuiCalendarDayOfWeek } from './models';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\nexport interface EuiCalendarDayCell {\n\tday: number;\n\tmonth: number;\n\tyear: number;\n\tisCurrentMonth: boolean;\n\tisToday?: boolean;\n\tisFuture?: boolean;\n\tisPast?: boolean;\n\tisWeekend?: boolean;\n\tdayOfWeek: number;\n\tdateString: string; // YYYY-MM-DD\n\tweekNumber?: number;\n\tisFirstDayOfMonth?: boolean;\n\tisLastDayOfMonth?: boolean;\n\tisDisabled?: boolean;\n\tevents?: EuiCalendarEvent[];\n}\n\nexport interface EuiCalendarMonthlyCalendarOptions {\n\tyear?: number,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\temptyValue?: any,\n\tfillPreviousMonth?: boolean,\n\tfillNextMonth?: boolean,\n\tincludeMetadata?: boolean,\n\tincludeToday?: boolean,\n\tincludeTemporalFlags?: boolean,\n\tincludeWeekends?: boolean,\n\tincludeWeekNumbers?: boolean,\n\tweekendDays?: number[]\n}\n\n/**\n * @description\n */\n@Component({\n\ttemplateUrl: './eui-calendar-monthly.component.html',\n\tselector: 'eui-calendar-monthly',\n\tstyleUrl: './eui-calendar-monthly.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tEuiCalendarDayComponent,\n\t\tNgClass,\n\t\tNgTemplateOutlet,\n\t],\n})\nexport class EuiCalendarMonthlyComponent {\n    /**\n     * Array of disabled days (Date objects)\n     */\n    disabledDays = input<Date[]>([]);\n\tevents = input<EuiCalendarEvent[]>([]);\n\thasEmptyValue = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Template for rendering each day cell\n\t */\n\t// eslint-disable-next-line\n\tdayTemplate = input<TemplateRef<any>>();\n\t/**\n\t * Template for rendering each day cell\n\t */\n\theaderTemplate = input<TemplateRef<{ date: Date }>>();\n\t/**\n\t * Display mode of the calendar ('compact' or 'truncated')\n\t */\n\tmode = input<'compact' | 'truncated'>('truncated');\n\t/**\n\t * Starting day of the week (0=Monday, 1=Tuesday, ..., 6=Sunday or 'monday', 'tue', 'wed', etc.)\n\t */\n\tstartingDay = input<number, NumberInput>(EuiCalendarDayOfWeek.MONDAY, { transform: this.startingDayTransformer });\n\t/**\n\t * The reference date for the month. The component will display the month that contains this date.\n\t */\n\tdate = input<Date>(new Date());\n\t/**\n\t * Fill with previous month days\n\t */\n\tfillPreviousMonth = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Fill with next month days\n\t */\n\tfillNextMonth = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Disable selection of future dates\n\t */\n\tdisableFutureDates = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Disable selection of past dates\n\t */\n\tdisablePastDates = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Disable selection of weekend dates\n\t */\n\tdisableWeekends = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Disable days that are not in the current selected month\n\t */\n\tdisabledDaysNotInMonth = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\tnewEventAddClicked = output<EuiCalendarDayCell>();\n\n\tmonthlyCalendar: Signal<EuiCalendarDayCell[][]> = computed(() => {\n\t\tconst currentEvents = this.events(); // Access the signal directly in computed\n\n\t\t// take into account the disableFutureDates, disablePastDates, disableWeekends and isCurrentMonth flags\n\t\t// to set the isDisabled flag on the DayCell objects\n\t\treturn this.generateCalendarGrid(this.date().getMonth() + 1, this.startingDay(), {\n\t\t\tyear: this.date().getFullYear(),\n\t\t\temptyValue: this.hasEmptyValue() ? null : undefined,\n\t\t\tfillPreviousMonth: this.fillPreviousMonth(),\n\t\t\tfillNextMonth: this.fillNextMonth(),\n\t\t})\n\t\t\t.filter(week => week.some(day => (typeof day === 'number') || (typeof day === 'object' && day?.isCurrentMonth)))\n\t\t\t.map(week => week.map(day => {\n\t\t\t\tif (day && typeof day === 'object') {\n\t\t\t\t\t// Determine if the day should be disabled\n\t\t\t\t\tlet isDisabled = false;\n\t\t\t\t\tif (this.disableFutureDates() && day.isFuture) {\n\t\t\t\t\t\tisDisabled = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.disablePastDates() && day.isPast) {\n\t\t\t\t\t\tisDisabled = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.disableWeekends() && day.isWeekend) {\n\t\t\t\t\t\tisDisabled = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.disabledDaysNotInMonth() && !day.isCurrentMonth) {\n\t\t\t\t\t\tisDisabled = true;\n\t\t\t\t\t}\n                    const date = new Date(day.year, day.month - 1, day.day);\n                    if (this.disabledDays().some(disabledDate =>\n                            disabledDate.toDateString() === date.toDateString(),\n                        )) {\n                        isDisabled = true;\n                    }\n\t\t\t\t\tday.isDisabled = isDisabled;\n\t\t\t\t\tconst dayEvents: EuiCalendarEvent[] = currentEvents.filter(event => {\n\t\t\t\t\t\t// More complex filtering logic\n\t\t\t\t\t\treturn event.date().getDate() === day.day &&\n\t\t\t\t\t\t\t(event.date().getMonth() + 1) === day.month &&\n\t\t\t\t\t\t\tevent.date().getFullYear() === day.year;\n\t\t\t\t\t}).map(v => ({\n\t\t\t\t\t\tlabel: v.label,\n\t\t\t\t\t\tid: v.id,\n\t\t\t\t\t\ttype: v?.type,\n\t\t\t\t\t\tdate: v.date,\n\t\t\t\t\t\t...v,\n\t\t\t\t\t}));\n\t\t\t\t\tif (dayEvents.length > 0) {\n\t\t\t\t\t\tday.events = dayEvents;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn day;\n\t\t\t}));\n\t});\n\tprivate locale = inject(LocaleService).getSignal();\n\t// eslint-disable-next-line @typescript-eslint/member-ordering\n\tdaysHeaderArray = computed(() => {\n\t\tconst days = Array.from({ length: 7 }, (_, i) => {\n\t\t\tconst date = new Date(2024, 0, 1 + i);\n\t\t\t// Start from Monday (Jan 1, 2024 was a Monday)\n\t\t\treturn date;\n\t\t});\n\t\t// Rotate array based on startingDay\n\t\treturn days.slice(this.startingDay()).concat(days.slice(0, this.startingDay())).map(day => ({\n\t\t\tshort: day.toLocaleDateString(this.locale(), { weekday: 'short' }),\n\t\t\tdate: day,\n\t\t}));\n\t});\n\t/**\n\t * Map day names to enum values for flexible input\n\t * @type {Object.<string, number>}\n\t */\n\tprivate DayNameMap: { [s: string]: number; } = {\n\t\tmonday: EuiCalendarDayOfWeek.MONDAY,\n\t\tmon: EuiCalendarDayOfWeek.MONDAY,\n\t\ttuesday: EuiCalendarDayOfWeek.TUESDAY,\n\t\ttue: EuiCalendarDayOfWeek.TUESDAY,\n\t\twednesday: EuiCalendarDayOfWeek.WEDNESDAY,\n\t\twed: EuiCalendarDayOfWeek.WEDNESDAY,\n\t\tthursday: EuiCalendarDayOfWeek.THURSDAY,\n\t\tthu: EuiCalendarDayOfWeek.THURSDAY,\n\t\tfriday: EuiCalendarDayOfWeek.FRIDAY,\n\t\tfri: EuiCalendarDayOfWeek.FRIDAY,\n\t\tsaturday: EuiCalendarDayOfWeek.SATURDAY,\n\t\tsat: EuiCalendarDayOfWeek.SATURDAY,\n\t\tsunday: EuiCalendarDayOfWeek.SUNDAY,\n\t\tsun: EuiCalendarDayOfWeek.SUNDAY,\n\t};\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tonMouseEnterDay(day: any): void {\n\t\t/** empty */\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tonMouseLeaveDay(day: any): void {\n\t\t/** empty */\n\t}\n\n\taddNewItemClicked(day: EuiCalendarDayCell): void {\n\t\tthis.newEventAddClicked.emit(day);\n\t}\n\n\t/**\n\t * Calculates the number of days in a given month\n\t * @param {number} month - Month (1-12)\n\t * @param {number} year - Year (optional, defaults to current year)\n\t * @returns {number} Number of days in the month\n\t */\n\tgetDaysInMonth(month: number, year: number = new Date().getFullYear()): number {\n\t\treturn new Date(year, month, 0).getDate();\n\t}\n\n\t/**\n\t * Calculates the day of week for the first day of a month\n\t * @param {number} month - Month (1-12)\n\t * @param {number} year - Year (optional, defaults to current year)\n\t * @returns {number} Day of week (0=Sunday, 1=Monday, ..., 6=Saturday)\n\t */\n\tgetFirstDayOfMonth(month: number, year: number = new Date().getFullYear()): number {\n\t\treturn new Date(year, month - 1, 1).getDay();\n\t}\n\n\t/**\n\t * Calculates the ISO week number for a given date\n\t * @param {Date} date - Date object\n\t * @returns {number} ISO week number (1-53)\n\t */\n\tgetISOWeekNumber(date: Date): number {\n\t\tconst tempDate = new Date(date.getTime());\n\t\ttempDate.setHours(0, 0, 0, 0);\n\t\ttempDate.setDate(tempDate.getDate() + 3 - (tempDate.getDay() + 6) % 7);\n\t\tconst week1 = new Date(tempDate.getFullYear(), 0, 4);\n\t\treturn 1 + Math.round(((tempDate.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n\t}\n\n\t/**\n\t * Compares two dates at day precision\n\t * @param {Date} date1 - First date\n\t * @param {Date} date2 - Second date\n\t * @returns {number} -1 if date1 < date2, 0 if equal, 1 if date1 > date2\n\t */\n\tcompareDatesAtDayPrecision(date1: Date, date2: Date): 0 | 1 | -1 {\n\t\tconst d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n\t\tconst d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n\n\t\tif (d1 < d2) return -1;\n\t\tif (d1 > d2) return 1;\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Creates an enhanced day cell object with comprehensive metadata\n\t * @param {number} day - Day of the month\n\t * @param {number} month - Month (1-12)\n\t * @param {number} year - Year\n\t * @param {boolean} isCurrentMonth - Whether this day belongs to the displayed month\n\t * @param {Object} options - Configuration options\n\t * @returns {DayCell} Enhanced day cell object\n\t */\n\tcreateEnhancedDayCell(day: number, month: number, year: number, isCurrentMonth: boolean, options: object = {}): EuiCalendarDayCell {\n\t\tconst {\n\t\t\tincludeToday = true,\n\t\t\tincludeTemporalFlags = true,\n\t\t\tincludeWeekends = true,\n\t\t\tincludeWeekNumbers = false,\n\t\t\tweekendDays = [0, 6], // Sunday and Saturday by default\n\t\t} = options as {\n\t\t\tincludeToday?: boolean,\n\t\t\tincludeTemporalFlags?: boolean,\n\t\t\tincludeWeekends?: boolean,\n\t\t\tincludeWeekNumbers?: boolean,\n\t\t\tweekendDays?: number[]\n\t\t};\n\n\t\t// Create base date object for this cell\n\t\tconst cellDate = new Date(year, month - 1, day);\n\t\tconst today = new Date();\n\n\t\t// Initialize cell with required properties\n\t\tconst cell = {\n\t\t\tday,\n\t\t\tmonth,\n\t\t\tyear,\n\t\t\tisCurrentMonth,\n\t\t\tdayOfWeek: cellDate.getDay(),\n\t\t\tdateString: `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`,\n\t\t} as EuiCalendarDayCell;\n\n\t\t// Add temporal comparison flags\n\t\tif (includeToday || includeTemporalFlags) {\n\t\t\tconst comparison = this.compareDatesAtDayPrecision(cellDate, today);\n\n\t\t\tif (includeToday) {\n\t\t\t\tcell.isToday = comparison === 0;\n\t\t\t}\n\n\t\t\tif (includeTemporalFlags) {\n\t\t\t\tcell.isPast = comparison === -1;\n\t\t\t\tcell.isFuture = comparison === 1;\n\t\t\t}\n\t\t}\n\n\t\t// Add weekend detection\n\t\tif (includeWeekends) {\n\t\t\tcell.isWeekend = weekendDays.includes(cellDate.getDay());\n\t\t}\n\n\t\t// Add week number calculation\n\t\tif (includeWeekNumbers) {\n\t\t\tcell.weekNumber = this.getISOWeekNumber(cellDate);\n\t\t}\n\n\t\t// Add boundary flags\n\t\tconst daysInMonth = this.getDaysInMonth(month, year);\n\t\tcell.isFirstDayOfMonth = isCurrentMonth && day === 1;\n\t\tcell.isLastDayOfMonth = isCurrentMonth && day === daysInMonth;\n\n\t\treturn cell;\n\t}\n\n\t/**\n\t * Generates a calendar grid for a given month\n\t * @param {number} month - Month (1-12)\n\t * @param {string|number} startingDay - First day of the week (configurable)\n\t * @param {Object} options - Additional options\n\t * @param {number} options.year - Year (defaults to current year)\n\t * @param {*} options.emptyValue - Value for empty cells (defaults to null)\n\t * @param {boolean} options.fillPreviousMonth - Fill with previous month days\n\t * @param {boolean} options.fillNextMonth - Fill with next month days\n\t * @returns {Array<Array>} 6x7 grid representing the calendar month\n\t */\n\tgenerateCalendarGrid(month: number, startingDay: number, options: EuiCalendarMonthlyCalendarOptions = {}): EuiCalendarDayCell[][] {\n\t\t// Input validation\n\t\tif (!Number.isInteger(month) || month < 1 || month > 12) {\n\t\t\tthrow new Error('Month must be an integer between 1 and 12.');\n\t\t}\n\n\t\t// Extract and set default options\n\t\tconst {\n\t\t\tyear = new Date().getFullYear(),\n\t\t\temptyValue = null,\n\t\t\tfillPreviousMonth = false,\n\t\t\tfillNextMonth = false,\n\t\t\tincludeMetadata = true,\n\t\t\tincludeToday = true,\n\t\t\tincludeTemporalFlags = true,\n\t\t\tincludeWeekends = true,\n\t\t\tincludeWeekNumbers = false,\n\t\t\tweekendDays = [0, 6],\n\t\t} = options;\n\n\t\t// Initialize 6x7 grid\n\t\tconst grid = Array(6).fill(null).map(() => Array(7).fill(emptyValue));\n\n\t\t// Calculate month parameters\n\t\tconst daysInMonth = this.getDaysInMonth(month, year);\n\t\tconst firstDayOfMonth = this.getFirstDayOfMonth(month, year);\n\n\t\t// Convert JS day (0=Sunday, 1=Monday, ..., 6=Saturday) to ISO/custom format (0=Monday, ..., 6=Sunday)\n\t\tconst firstDayISO = (firstDayOfMonth + 6) % 7;\n\n\t\t// Calculate starting column offset\n\t\tconst columnOffset = (firstDayISO - startingDay + 7) % 7;\n\n\t\t// Determine if we should return enhanced objects\n\t\tconst shouldReturnObjects = includeMetadata || fillPreviousMonth || fillNextMonth ||\n\t\t\tincludeToday || includeTemporalFlags || includeWeekends;\n\n\t\t// Cell creation options\n\t\tconst cellOptions = {\n\t\t\tincludeToday,\n\t\t\tincludeTemporalFlags,\n\t\t\tincludeWeekends,\n\t\t\tincludeWeekNumbers,\n\t\t\tweekendDays,\n\t\t};\n\n\t\t// Fill previous month days if requested\n\t\tif (fillPreviousMonth && columnOffset > 0) {\n\t\t\tconst prevMonth = month === 1 ? 12 : month - 1;\n\t\t\tconst prevYear = month === 1 ? year - 1 : year;\n\t\t\tconst daysInPrevMonth = this.getDaysInMonth(prevMonth, prevYear);\n\n\t\t\tfor (let i = columnOffset - 1; i >= 0; i--) {\n\t\t\t\tconst day = daysInPrevMonth - (columnOffset - 1 - i);\n\t\t\t\tgrid[0][i] = this.createEnhancedDayCell(day, prevMonth, prevYear, false, cellOptions);\n\t\t\t}\n\t\t}\n\n\t\t// Fill current month days\n\t\tlet currentDay = 1;\n\t\tlet row = 0;\n\t\tlet col = columnOffset;\n\n\t\twhile (currentDay <= daysInMonth) {\n\t\t\tif (shouldReturnObjects) {\n\t\t\t\tgrid[row][col] = this.createEnhancedDayCell(currentDay, month, year, true, cellOptions);\n\t\t\t} else {\n\t\t\t\tgrid[row][col] = currentDay;\n\t\t\t}\n\n\t\t\tcurrentDay++;\n\t\t\tcol++;\n\n\t\t\tif (col === 7) {\n\t\t\t\tcol = 0;\n\t\t\t\trow++;\n\t\t\t}\n\t\t}\n\n\t\t// Fill next month days if requested\n\t\tif (fillNextMonth && (row < 6 || col > 0)) {\n\t\t\tconst nextMonth = month === 12 ? 1 : month + 1;\n\t\t\tconst nextYear = month === 12 ? year + 1 : year;\n\t\t\tlet nextMonthDay = 1;\n\n\t\t\twhile (row < 6) {\n\t\t\t\twhile (col < 7) {\n\t\t\t\t\tif (grid[row][col] === emptyValue) {\n\t\t\t\t\t\tgrid[row][col] = this.createEnhancedDayCell(\n\t\t\t\t\t\t\tnextMonthDay,\n\t\t\t\t\t\t\tnextMonth,\n\t\t\t\t\t\t\tnextYear,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tcellOptions,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnextMonthDay++;\n\t\t\t\t\t}\n\t\t\t\t\tcol++;\n\t\t\t\t}\n\t\t\t\tcol = 0;\n\t\t\t\trow++;\n\t\t\t}\n\t\t}\n\n\t\treturn grid as EuiCalendarDayCell[][];\n\t}\n\n\ttrackByDay(index: number, day: EuiCalendarDayCell): string | number {\n\t\tif (!day) return `empty-${index}`;\n\t\treturn new Date(day.year, day.month, day.day).getTime();\n\t}\n\n\t/**\n\t * Transforms and validates the month input\n\t * @param value\n\t * @private\n\t */\n\tprivate monthTransformer(value: number | string): number {\n\t\tlet transformedMonth: number;\n\t\tif (typeof value === 'string') {\n\t\t\ttransformedMonth = parseInt(value, 10);\n\t\t} else {\n\t\t\ttransformedMonth = value;\n\t\t}\n\t\tif (transformedMonth < 0 || transformedMonth > 11) {\n\t\t\tthrow new Error(`Invalid month: ${value}. Must be an integer between 0 (January) and 11 (December).`);\n\t\t}\n\t\treturn transformedMonth;\n\t}\n\n\t/**\n\t * Transforms and validates the year input\n\t * @param value\n\t * @throws {Error} If the starting day is invalid\n\t */\n\tprivate yearTransformer(value: number | string): number {\n\t\tlet transformedYear: number;\n\t\tif (typeof value === 'string') {\n\t\t\ttransformedYear = parseInt(value, 10);\n\t\t} else {\n\t\t\ttransformedYear = value;\n\t\t}\n\t\tif (transformedYear < 1970 || transformedYear > 2100) {\n\t\t\tthrow new Error(`Invalid year: ${value}. Must be an integer between 1970 and 2100.`);\n\t\t}\n\t\treturn transformedYear;\n\t}\n\n\t/**\n\t * Normalizes the starting day input to a DayOfWeek enum value\n\t * @param {string|number} startingDay - Day name, abbreviation, or number\n\t * @returns {number} Normalized day index (0-6)\n\t * @throws {Error} If the starting day is invalid\n\t */\n\tprivate startingDayTransformer(startingDay: string | number): number {\n\t\tif (typeof startingDay === 'number' || /^\\d+$/.test(startingDay)) {\n\t\t\tstartingDay = typeof startingDay === 'string' ? parseInt(startingDay, 10) : startingDay;\n\t\t\tif (startingDay >= 0 && startingDay <= 6) {\n\t\t\t\treturn startingDay;\n\t\t\t}\n\t\t\tthrow new Error(`Invalid starting day number: ${startingDay}. Must be 0-6.`);\n\t\t}\n\n\t\tif (typeof startingDay === 'string') {\n\t\t\tconst normalized = startingDay.toLowerCase().trim();\n\t\t\tif (normalized in this.DayNameMap) {\n\t\t\t\treturn this.DayNameMap[normalized];\n\t\t\t}\n\t\t\tthrow new Error(`Invalid starting day: \"${startingDay}\". Use day name or abbreviation.`);\n\t\t}\n\n\t\tthrow new Error('Starting day must be a string (day name) or number (0-6).');\n\t}\n\n}","<table [ngClass]=\"{ 'regular-table': this.mode() === 'compact', 'truncated-table': this.mode() === 'truncated' }\">\n    <thead>\n    <tr>\n        @for (day of daysHeaderArray(); track $index) {\n            @if (headerTemplate()) {\n                <th class=\"eui-calendar-monthly--day-header\">\n                    <ng-container\n                        [ngTemplateOutlet]=\"headerTemplate()\"\n                        [ngTemplateOutletContext]=\"{ date: day.date }\">\n                    </ng-container>\n                </th>\n            } @else {\n                <th class=\"eui-calendar-monthly--day-header\">{{ day.short }}</th>\n            }\n        }\n    </tr>\n    </thead>\n    <tbody>\n        @for (week of monthlyCalendar(); track $index; let weekIdx = $index) {\n            <tr>\n                @for (day of week; track trackByDay(dayIdx, day); let dayIdx = $index) {\n                    <td class=\"eui-calendar-monthly--day\"\n                        [ngClass]=\"{ 'weekend': day?.isWeekend, 'disabled': day?.isDisabled }\"\n                        (mouseover)=\"onMouseEnterDay(day)\"\n                        (mouseout)=\"onMouseLeaveDay(day)\">\n                        @if (dayTemplate()) {\n                            <ng-container\n                                [ngTemplateOutlet]=\"dayTemplate()\"\n                                [ngTemplateOutletContext]=\"{ $implicit: day }\">\n                            </ng-container>\n                        } @else {\n                            <eui-calendar-day [dayOfTheMonth]=\"day?.day\"\n                                     [isSelected]=\"day?.isToday\"\n                                     [euiDisabled]=\"day?.isDisabled\"\n                                     [maxNumberOfEventsToShow]=\"2\"\n                                     [events]=\"day?.events\"\n                                     (addNewItemEvent)=\"addNewItemClicked(day)\"\n                                     class=\"eui-calendar-monthly--day\">\n                            </eui-calendar-day>\n                        }\n                    </td>\n                }\n            </tr>\n        }\n    </tbody>\n</table>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, HostBinding, input } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n    selector: 'eui-calendar',\n    templateUrl: './eui-calendar.component.html',\n    imports: [\n        NgTemplateOutlet,\n    ],\n})\nexport class EuiCalendarComponent {\n    @HostBinding('class') classes = 'eui-calendar';\n\n    // hasWeeklyView= input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n    // hasMonthlyView = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n}\n","<!-- might not be needed after all... we should just prevent weekly and monthly to be displayed at the same time\n<ng-content *ngTemplateOutlet=\"header\"/>\n@if (hasMonthlyView()) {\n    <ng-content *ngTemplateOutlet=\"monthly\"/>\n} @else if (hasWeeklyView()) {\n    <ng-content *ngTemplateOutlet=\"weekly\"/>\n} \n-->\n\n<ng-content *ngTemplateOutlet=\"header\"/>\n<ng-content *ngTemplateOutlet=\"monthly\"/>\n<ng-content *ngTemplateOutlet=\"weekly\"/>\n\n<ng-template #header>\n    <ng-content select=\"eui-calendar-header\"/>\n</ng-template>\n<ng-template #weekly>\n    <ng-content select=\"eui-calendar-weekly\"/>\n</ng-template>\n<ng-template #monthly>\n    <ng-content select=\"eui-calendar-monthly\"/>\n</ng-template>\n","import {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tinject,\n\tinput,\n\tmodel,\n\toutput,\n\tTemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { LocaleService } from '@eui/core';\nimport { EuiCalendarNavigationEvent, EuiCalendarHeaderContext, EuiCalendarMode, EuiCalendarNavigationDirection } from './models';\nimport { EuiCalendarDayOfWeek } from './models';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\n\n@Component({\n\tselector: 'eui-calendar-header',\n\ttemplateUrl: './eui-calendar-header.component.html',\n\tstyleUrls: ['./eui-calendar-header.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tNgTemplateOutlet,\n\t\tTranslateModule,\n\t\t...EUI_ICON,\n\t\t...EUI_LABEL,\n\t\t...EUI_BUTTON,\n\t],\n})\nexport class EuiCalendarHeaderComponent {\n\t/**\n\t * Determines whether weekends are included in the week view.\n\t */\n\tcontainWeekends = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\t/**\n\t * Format options for displaying the date.\n\t * If not provided, defaults will be used based on the current mode.\n\t * See {@link `getFormattedOptions`} method for details.\n\t */\n\tdateFormatOptions = input<Intl.DateTimeFormatOptions | null>(null);\n\t/**\n\t * The mode of the calendar header. This can be 'monthly', 'weekly', or 'daily'.\n\t * Defaults to 'monthly'.\n\t */\n\tmode = input<EuiCalendarMode>(EuiCalendarMode.Monthly);\n\t/**\n\t * The currently selected date. This is a required input signal.\n\t * It should be a `Date` object representing the current month, week, or day, depending on the mode.\n\t *\n\t * Important: For weekly mode, ensure the date represents the first day of the week.\n\t */\n\tcurrentDate = model.required<Date>();\n\t/**\n\t * An optional sub-label to display below the main date label.\n\t * Defaults to an empty string.\n\t */\n\tsubLabel = input<string>('');\n\t/**\n\t * Determines whether the \"Today\" button is displayed.\n\t * Defaults to `true`.\n\t */\n\tshowTodayButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\t/**\n\t * Determines whether the navigation buttons (previous/next) are displayed.\n\t * Defaults to `true`.\n\t */\n\tshowNavigationButtons = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\t/**\n\t * Starting day of the week (0=Monday, 1=Tuesday, ..., 6=Sunday or 'monday', 'tue', 'wed', etc.)\n\t */\n\tstartingDay = input<number, NumberInput>(EuiCalendarDayOfWeek.MONDAY, { transform: this.startingDayTransformer });\n\t/**\n\t * The format used to display the current month.\n\t * Defaults to `'MMMM yyyy'` (e.g., \"October 2023\").\n\t */\n\tdateFormat = input<string>('MMMM yyyy');\n\t/**\n\t * A custom template for the header. If provided, it will replace the default header layout.\n\t * The template context is of type `HeaderContext`.\n\t * Defaults to `null`.\n\t */\n\tcustomTemplate = input<TemplateRef<EuiCalendarHeaderContext> | null>(null);\n\t/**\n\t * Emits when the navigation buttons are clicked (previous/next).\n\t */\n\tnavigationClicked = output<EuiCalendarNavigationEvent>();\n\t/**\n\t * Emits when the \"Today\" button is clicked.\n\t */\n\ttodayClicked = output<Date>();\n\t/**\n\t * True if the current date is today.\n\t * For weekly mode, checks if today falls within the week that contains the current date.\n\t */\n\tisCurrentDateToday = computed(() => {\n\t\tconst current = this.currentDate();\n\t\tconst today = new Date();\n\t\t// Reset time parts for accurate date comparison\n\t\ttoday.setHours(0, 0, 0, 0);\n\n\t\tif (this.mode() === EuiCalendarMode.Daily) {\n\t\t\treturn current.getDate() === today.getDate() &&\n\t\t\t\tcurrent.getMonth() === today.getMonth() &&\n\t\t\t\tcurrent.getFullYear() === today.getFullYear();\n\t\t} else if (this.mode() === EuiCalendarMode.Weekly) {\n\t\t\tconst { start, end } = this.getWeekRange(current, this.startingDay());\n\t\t\t// Reset time parts for accurate comparison\n\t\t\tconst compareDate = new Date(today);\n\t\t\tconst startDate = new Date(start);\n\t\t\tconst endDate = new Date(end);\n\t\t\tstartDate.setHours(0, 0, 0, 0);\n\t\t\tendDate.setHours(23, 59, 59, 999);\n\n\t\t\treturn compareDate >= startDate && compareDate <= endDate;\n\t\t} else {\n\t\t\treturn current.getMonth() === today.getMonth() &&\n\t\t\t\tcurrent.getFullYear() === today.getFullYear();\n\t\t}\n\t});\n\t/**\n\t * Formatted date string for display in the header (e.g., \"September 2023\" or \"Week 36, 2023\").\n\t * It is formatted based on the current mode.\n\t */\n\tformattedDate = computed(() => {\n\t\tconst options: Intl.DateTimeFormatOptions = this.formattedOptions();\n\n\t\tif (this.mode() === EuiCalendarMode.Monthly) {\n\t\t\t// For monthly mode, always show month and year\n\t\t\tconst locale = this.locale().id;\n\t\t\treturn this.currentDate().toLocaleDateString(locale, options);\n\t\t} else if (this.mode() === EuiCalendarMode.Weekly) {\n\t\t\t// For weekly mode, show the range of dates for the week\n\t\t\tconst { start, end } = this.getWeekRange(this.currentDate(), this.startingDay());\n\t\t\tconst locale = this.locale().id;\n\n\t\t\tconst startStr = start.toLocaleDateString(locale, options);\n\t\t\tconst endStr = end.toLocaleDateString(locale, options);\n\n\t\t\treturn `${startStr} - ${endStr}`;\n\t\t} else if (this.mode() === EuiCalendarMode.Daily) {\n\t\t\t// For daily mode, show full date\n\t\t\tconst date = this.currentDate();\n\t\t\tconst locale = this.locale().id;\n\t\t\treturn date.toLocaleDateString(locale, options);\n\t\t}\n\t});\n\t/**\n\t * Context object passed to the custom header template.\n\t */\n\theaderContext = computed<EuiCalendarHeaderContext>(() => ({\n\t\tcurrentDate: this.currentDate(),\n\t\tmode: this.mode(),\n\t\tprevious: this.navigatePrevious.bind(this),\n\t\tnext: this.navigateNext.bind(this),\n\t\tcbToday: this.goToToday.bind(this),\n\t\tformattedDate: this.formattedDate(),\n\t\tisToday: this.isCurrentDateToday(),\n\t}));\n\t/**\n\t * Calculates the maximum width required to display the longest month name\n\t * in the current locale. This helps to prevent layout shifts when navigating\n\t * between months with varying name lengths.\n\t *\n\t * The width is estimated in 'ch' units (character width) based on the length\n\t * of the longest month name.\n\t */\n\tmaxMonthWidth = computed(() => {\n\t\tconst currentYear = this.currentDate().getFullYear();\n\t\tconst locale = this.locale().id;\n\t\tconst monthNames: string[] = [];\n\n\t\t// Generate all 12 month names for the current year\n\t\tfor (let i = 0; i < 12; i++) {\n\t\t\tconst date = new Date(currentYear, i, 1);\n\t\t\tmonthNames.push(date.toLocaleDateString(locale, this.formattedOptions()));\n\t\t}\n\n\t\t// Find the longest month name\n\t\tconst longestMonth = monthNames.reduce((a, b) => a.length > b.length ? a : b);\n\n\t\t// Estimate width in ch units (character width)\n\t\t// Using 1ch per character as a reasonable approximation\n\t\treturn this.mode() === EuiCalendarMode.Weekly ? `${longestMonth.length * 2 + 2}ch` : `${longestMonth.length}ch`;\n\t});\n\tprivate formattedOptions = computed(() => {\n\t\tif (this.dateFormatOptions() !== null) {\n\t\t\treturn this.dateFormatOptions();\n\t\t}\n\t\treturn this.getFormattedOptions();\n\t});\n\tprivate locale = inject(LocaleService).getSignal();\n\n\t/**\n\t * Navigates to the previous month, week, or day based on the current mode.\n\t * Emits a `navigationClicked` event with details of the navigation action.\n\t */\n\tnavigatePrevious(): void {\n\t\tconst current = this.currentDate();\n\t\tswitch (this.mode()) {\n\t\t\tcase EuiCalendarMode.Daily:\n\t\t\t\t// In weekly or daily mode, navigating previous should go to the previous day\n\t\t\t\tthis.currentDate.update(m => new Date(m.getFullYear(), m.getMonth(), m.getDate() - 1));\n\t\t\t\tbreak;\n\t\t\tcase EuiCalendarMode.Weekly:\n\t\t\t\t// In weekly mode, navigating previous goes to the previous week (7 days)\n\t\t\t\tthis.currentDate.update(m => new Date(m.getFullYear(), m.getMonth(), m.getDate() - 7));\n\t\t\t\tbreak;\n\t\t\tcase EuiCalendarMode.Monthly:\n\t\t\tdefault:\n\t\t\t\t// In monthly mode, navigating previous goes to the previous month\n\t\t\t\tthis.currentDate.update(m => new Date(m.getFullYear(), m.getMonth() - 1, 1));\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.navigationClicked.emit({\n\t\t\tdirection: EuiCalendarNavigationDirection.Previous,\n\t\t\tcurrent: current,\n\t\t\tnew: this.currentDate(),\n\t\t\tmode: this.mode(),\n\t\t});\n\t}\n\n\t/**\n\t * Navigates to the next month, week, or day based on the current mode.\n\t * Emits a `navigationClicked` event with details of the navigation action.\n\t */\n\tnavigateNext(): void {\n\t\tconst current = this.currentDate();\n\t\tswitch (this.mode()) {\n\t\t\tcase EuiCalendarMode.Daily:\n\t\t\t\t// In weekly or daily mode, navigating next should go to the next day\n\t\t\t\tthis.currentDate.update(m => new Date(m.getFullYear(), m.getMonth(), m.getDate() + 1));\n\t\t\t\tbreak;\n\t\t\tcase EuiCalendarMode.Weekly:\n\t\t\t\t// In weekly mode, navigating next goes to the next week (7 days)\n\t\t\t\tthis.currentDate.update(m => new Date(m.getFullYear(), m.getMonth(), m.getDate() + 7));\n\t\t\t\tbreak;\n\t\t\tcase EuiCalendarMode.Monthly:\n\t\t\tdefault:\n\t\t\t\t// In monthly mode, navigating next goes to the next month\n\t\t\t\tthis.currentDate.update(m => new Date(m.getFullYear(), m.getMonth() + 1, 1));\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.navigationClicked.emit({\n\t\t\tdirection: EuiCalendarNavigationDirection.Next,\n\t\t\tcurrent: current,\n\t\t\tnew: this.currentDate(),\n\t\t\tmode: this.mode(),\n\t\t});\n\t}\n\n\t/**\n\t * Navigates to today's date.\n\t * Emits a `todayClicked` event with today's date.\n\t */\n\tgoToToday(): void {\n\t\tconst today = new Date();\n\t\tthis.todayClicked.emit(today);\n\t}\n\n\t/**\n\t * Determines the appropriate date formatting options based on the current mode.\n\t * - Monthly: Displays full month name and year (e.g., \"October 2023\").\n\t * - Weekly: Displays short month name, day, and year (e.g., \"Oct 1, 2023\").\n\t * - Daily: Displays full weekday name, month name, day, and year (e.g., \"Monday, October 2, 2023\").\n\t */\n\tprivate getFormattedOptions(): Intl.DateTimeFormatOptions {\n\t\tif (this.mode() === EuiCalendarMode.Monthly) {\n\t\t\treturn { month: 'long', year: 'numeric' };\n\t\t} else if (this.mode() === EuiCalendarMode.Weekly) {\n\t\t\treturn { year: 'numeric', month: 'short', day: 'numeric' };\n\t\t} else {\n\t\t\treturn { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long' };\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the start and end dates of the week that contains the given date.\n\t * The week always includes the current date and starts on the specified startingDay.\n\t * For example:\n\t * - If date is Monday 20/10/2025 and startingDay is Tuesday (1), week is Tue 14/10 - Mon 20/10\n\t * - If date is Monday 20/10/2025 and startingDay is Monday (0), week is Mon 20/10 - Sun 26/10\n\t * - If date is Thursday 23/10/2025 and startingDay is Tuesday (1), week is Tue 21/10 - Mon 27/10\n\t * - If containWeekends is false, the week spans 5 days instead of 7 (e.g., Mon-Fri)\n\t * @param date The reference date (must be included in the returned week range)\n\t * @param startDay The day the week starts on (0=Monday, 1=Tuesday, ..., 6=Sunday)\n\t * @returns An object containing the start and end dates of the week\n\t */\n\tprivate getWeekRange(date: Date, startDay: number): { start: Date; end: Date } {\n\t\t// Get the current day of the week in JavaScript format (0=Sunday, 1=Monday, ..., 6=Saturday)\n\t\tconst jsDay = date.getDay();\n\n\t\t// Convert our DayOfWeek (0=Monday, 1=Tuesday, ..., 6=Sunday) to JavaScript day (0=Sunday, 1=Monday, ..., 6=Saturday)\n\t\t// Monday(0) -> 1, Tuesday(1) -> 2, Wednesday(2) -> 3, Thursday(3) -> 4, Friday(4) -> 5, Saturday(5) -> 6, Sunday(6) -> 0\n\t\tconst targetStartDay = (startDay + 1) % 7;\n\n\t\t// Calculate how many days back we need to go to reach the start of the week\n\t\t// This finds the most recent occurrence of startingDay (including today if it matches)\n\t\tconst daysBack = (jsDay - targetStartDay + 7) % 7;\n\n\t\tconst start = new Date(date);\n\t\tstart.setDate(date.getDate() - daysBack);\n\n\t\tconst end = new Date(start);\n\t\t// If weekends are not included, the week spans 5 days (business days), otherwise 7 days\n\t\tconst daysInWeek = this.containWeekends() ? 6 : 4;\n\t\tend.setDate(start.getDate() + daysInWeek);\n\n\t\treturn { start, end };\n\t}\n\n\t/**\n\t * Normalizes the starting day input to a DayOfWeek enum value\n\t * @param {string|number} startingDay - Day name, abbreviation, or number\n\t * @returns {number} Normalized day index (0-6)\n\t * @throws {Error} If the starting day is invalid\n\t */\n\tprivate startingDayTransformer(startingDay: string | number): number {\n\t\tif (typeof startingDay === 'number' || /^\\d+$/.test(startingDay)) {\n\t\t\tstartingDay = typeof startingDay === 'string' ? parseInt(startingDay, 10) : startingDay;\n\t\t\tif (startingDay >= 0 && startingDay <= 6) {\n\t\t\t\treturn startingDay;\n\t\t\t}\n\t\t\tthrow new Error(`Invalid starting day number: ${startingDay}. Must be 0-6.`);\n\t\t}\n\n\t\tif (typeof startingDay === 'string') {\n\t\t\t/**\n\t\t\t * Map day names to enum values for flexible input\n\t\t\t * @type {Object.<string, number>}\n\t\t\t */\n\t\t\tconst DayNameMap: { [s: string]: number; } = {\n\t\t\t\tmonday: EuiCalendarDayOfWeek.MONDAY,\n\t\t\t\tmon: EuiCalendarDayOfWeek.MONDAY,\n\t\t\t\ttuesday: EuiCalendarDayOfWeek.TUESDAY,\n\t\t\t\ttue: EuiCalendarDayOfWeek.TUESDAY,\n\t\t\t\twednesday: EuiCalendarDayOfWeek.WEDNESDAY,\n\t\t\t\twed: EuiCalendarDayOfWeek.WEDNESDAY,\n\t\t\t\tthursday: EuiCalendarDayOfWeek.THURSDAY,\n\t\t\t\tthu: EuiCalendarDayOfWeek.THURSDAY,\n\t\t\t\tfriday: EuiCalendarDayOfWeek.FRIDAY,\n\t\t\t\tfri: EuiCalendarDayOfWeek.FRIDAY,\n\t\t\t\tsaturday: EuiCalendarDayOfWeek.SATURDAY,\n\t\t\t\tsat: EuiCalendarDayOfWeek.SATURDAY,\n\t\t\t\tsunday: EuiCalendarDayOfWeek.SUNDAY,\n\t\t\t\tsun: EuiCalendarDayOfWeek.SUNDAY,\n\t\t\t};\n\t\t\tconst normalized = startingDay.toLowerCase().trim();\n\t\t\tif (normalized in DayNameMap) {\n\t\t\t\treturn DayNameMap[normalized];\n\t\t\t}\n\t\t\tthrow new Error(`Invalid starting day: \"${startingDay}\". Use day name or abbreviation.`);\n\t\t}\n\n\t\tthrow new Error('Starting day must be a string (day name) or number (0-6).');\n\t}\n}","@if (customTemplate(); as template) {\n    <ng-container [ngTemplateOutletContext]=\"headerContext()\" [ngTemplateOutlet]=\"template\" />\n} @else {\n    <div class=\"eui-u-flex eui-u-flex-justify-content-between eui-u-flex-gap-s\">\n        <div class=\"eui-u-display-flex eui-u-flex-gap-s eui-u-flex-align-items-center\">\n            @if (showNavigationButtons()) {\n                <button (click)=\"navigatePrevious()\" aria-label=\"Go to previous month\" euiBasicButton euiButton euiPrimary euiIconButton>\n                    <eui-icon-svg icon=\"eui-caret-left\" />\n                </button>\n            }\n            <div [style.min-width]=\"maxMonthWidth()\"\n                 class=\"eui-u-flex eui-u-flex-column eui-u-flex-align-items-start eui-u-text-wrap\">\n                <span class=\"eui-calendar-header-label\" euiLabel>{{ formattedDate() }}</span>\n                @if (subLabel() !== '') {\n                    <span euiSizeS euiSublabel>{{ subLabel() }}</span>\n                }\n            </div>\n            @if (showNavigationButtons()) {\n                <button (click)=\"navigateNext()\" aria-label=\"Go to next month\" euiBasicButton euiButton euiPrimary euiIconButton>\n                    <eui-icon-svg icon=\"eui-caret-right\" />\n                </button>\n            }\n        </div>\n        @if (showTodayButton()) {\n            <button (click)=\"goToToday()\"\n                    [euiDisabled]=\"isCurrentDateToday()\"\n                    aria-label=\"Go to current day\"\n                    euiButton\n                    euiInfo>\n                    Today <!-- TODO translate in all languages -->\n                <!-- {{ 'eui.calendar.today' | translate }} -->\n            </button>\n        }\n    </div>\n}","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { LocaleService } from '@eui/core';\n\n@Component({\n\tselector: 'eui-calendar-weekly-day-header',\n\ttemplate: `\n        <span euiLabel class=\"day-date\"><b>{{ dayOfTheWeek() }}</b> {{ dayOfTheMonth() }}</span>\n        <div class=\"day-info\" euiSublabel>{{ sublabel() }}</div>\n\t`,\n\timports: [\n\t\t...EUI_LABEL,\n\t],\n\tstyles: `\n        :host {\n            display: flex;\n            flex-direction: row;\n            justify-content: space-between;\n            width: 100%;\n        }\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiCalendarWeeklyDayHeaderComponent {\n\t/**\n\t * @description\n\t * Date to display in the header.\n\t */\n\tdate = model.required<Date>();\n\t/**\n\t * @description\n\t * Sublabel to display under the date.\n\t */\n\tsublabel = input<string>();\n\tprivate locale = inject(LocaleService, { optional: true })?.getSignal();\n\t/**\n\t * @description\n\t * extract the day of the week from the date in short string e.g. MON, TUE, WED etc.\n\t */\n\tprotected dayOfTheWeek = computed(() => {\n\t\tconst options: Intl.DateTimeFormatOptions = { weekday: 'short' };\n\t\treturn this.date() ? this.date().toLocaleDateString(this.locale().id || 'en-US', options).toUpperCase() : '';\n\t});\n\t/**\n\t * @description\n\t * extract the day of the month from the date in number and the month in string e.g. 22 July\n\t */\n\tprotected dayOfTheMonth = computed(() => {\n\t\tconst options: Intl.DateTimeFormatOptions = { day: 'numeric', month: 'long' };\n\t\treturn this.date() ? this.date().toLocaleDateString(this.locale().id || 'en-US', options) : '';\n\t});\n}","import { ChangeDetectionStrategy, Component, HostBinding, inject, input } from '@angular/core';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { EUI_DASHBOARD_CARD } from '@eui/components/eui-dashboard-card';\n\n@Component({\n\tselector: 'eui-calendar-weekly-day-content',\n\ttemplateUrl: './eui-calendar-weekly-day-content.component.html',\n\timports: [\n\t\t...EUI_DASHBOARD_CARD,\n\t],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BaseStatesDirective,\n\t\t\tinputs: [\n\t\t\t\t'euiPrimary',\n\t\t\t\t'euiSecondary',\n\t\t\t\t'euiSuccess',\n\t\t\t\t'euiInfo',\n\t\t\t\t'euiWarning',\n\t\t\t\t'euiDanger',\n\t\t\t],\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiCalendarWeeklyDayContentComponent {\n\t/**\n\t * Label for the content\n\t */\n\tlabel = input.required<string>();\n\t/**\n\t * Sublabel for the content\n\t */\n\tsubLabel = input<string>();\n\tprotected baseStatesDirective = inject(BaseStatesDirective);\n\n\t/**\n\t * @description\n\t * Computes and returns the CSS classes for the label component based on its current state.\n\t * Combines base states, required status, readonly status, and sublabel type.\n\t *\n\t * @returns {string} Space-separated string of CSS class names\n\t */\n\t@HostBinding('class')\n\tpublic get cssClasses(): string {\n\t\treturn [\n\t\t\tthis.baseStatesDirective.getCssClasses('content'),\n\t\t]\n\t\t\t.join(' ')\n\t\t\t.trim();\n\t}\n}","<eui-dashboard-card [euiDanger]=\"baseStatesDirective.euiDanger\"\n                    [euiInfo]=\"baseStatesDirective.euiInfo\"\n                    [euiPrimary]=\"baseStatesDirective.euiPrimary\"\n                    [euiSecondary]=\"baseStatesDirective.euiSecondary\"\n                    [euiSuccess]=\"baseStatesDirective.euiSuccess\"\n                    [euiWarning]=\"baseStatesDirective.euiWarning\"\n                    euiOutline\n                    isClickeable\n                    isFlat\n                    tabindex=\"0\">\n    <eui-dashboard-card-content>\n        <div class=\"eui-u-flex\">\n            <div class=\"eui-u-display-flex eui-u-flex-column eui-u-flex-align-items-start eui-u-ml-m\">\n                <strong>{{ label() }}</strong>\n                @if (subLabel() !== undefined && subLabel() !== '') {\n                    <div class=\"eui-u-mt-2xs eui-u-line-clamp-2\">\n                        {{ subLabel() }}\n                    </div>\n                }\n            </div>\n        </div>\n    </eui-dashboard-card-content>\n</eui-dashboard-card>","import {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tinput,\n\tmodel,\n\toutput,\n\tTemplateRef,\n} from '@angular/core';\nimport { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { EuiCalendarWeeklyDayHeaderComponent } from './eui-calendar-weekly-day-header.component';\nimport { EuiCalendarWeeklyDayContentComponent } from './eui-calendar-weekly-day-content.component';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { EuiCalendarDayOfWeek, EuiCalendarDay, EuiCalendarEvent } from './models';\n\n@Component({\n\tselector: 'eui-calendar-weekly',\n\ttemplateUrl: './eui-calendar-weekly.component.html',\n\tstyleUrls: ['./eui-calendar-weekly.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tCdkDropList,\n\t\tCdkDrag,\n\t\tEuiCalendarWeeklyDayHeaderComponent,\n\t\tEuiCalendarWeeklyDayContentComponent,\n\t\tNgTemplateOutlet,\n\t\tNgClass,\n\t],\n})\nexport class EuiCalendarWeeklyComponent {\n\t/**\n\t * Whether drag-and-drop is enabled for events (defaults to true)\n\t */\n\tdragAndDrop = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\t/**\n\t * The reference date for the week. The component will display the week that contains this date.\n\t * For example, if date is Friday 07/01 and startingDay is Monday, it will show the week from 03/01 to 09/01.\n\t */\n\tdate = model<Date>(new Date());\n\t/**\n\t * Events for the week. Each event should have a date property.\n\t * The date property should be a Date object.\n\t * Other properties can be added as needed.\n\t */\n\tevents = model<EuiCalendarEvent[]>([]);\n\t/**\n\t * Whether to show weekends in the calendar (defaults to true)\n\t */\n\tshowWeekends = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * Starting day of the week (0=Monday, 1=Tuesday, ..., 6=Sunday or 'monday', 'tue', 'wed', etc.)\n\t */\n\tstartingDay = input<number, NumberInput>(EuiCalendarDayOfWeek.MONDAY, { transform: this.startingDayTransformer });\n\t/**\n\t * Array of disabled days (Date objects)\n\t */\n\tdisabledDays = input<Date[]>([]);\n\t/**\n\t * Emits when an event is moved to a different day\n\t */\n\teventMoved = output<{ event: EuiCalendarEvent; newDate: Date }>();\n\t/**\n\t * Optional custom template for day headers\n\t * The template will receive the day object as $implicit in the context\n\t */\n\tdayHeaderTemplate = input<TemplateRef<EuiCalendarDay>>();\n\t/**\n\t * Optional custom template for event content\n\t * The template will receive the event object as $implicit in the context\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\teventContentTemplate = input<TemplateRef<any>>();\n\tdaysInWeek = computed((): EuiCalendarDay[] => {\n\t\tconst referenceDate = this.date();\n\t\tconst startingDay = this.startingDay();\n\n\t\t// Calculate the first day of the week containing the reference date\n\t\tconst firstDayOfWeek = this.getWeekStartDate(referenceDate, startingDay);\n\n\t\tconst days: EuiCalendarDay[] = [];\n\t\tfor (let i = 0; i < 7; i++) {\n\t\t\tconst date = new Date(firstDayOfWeek);\n\t\t\tdate.setDate(firstDayOfWeek.getDate() + i);\n\t\t\t// Skip weekends if showWeekends is false\n\t\t\tif (!this.showWeekends() && (date.getDay() === 0 || date.getDay() === 6)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdays.push({\n\t\t\t\tid: i,\n\t\t\t\tisToday: date.toDateString() === new Date().toDateString(),\n\t\t\t\tisWeekend: date.getDay() === 0 || date.getDay() === 6,\n\t\t\t\tdate,\n\t\t\t\tdisabled: this.disabledDays().some(disabledDate => \n\t\t\t\t\tdisabledDate.toDateString() === date.toDateString(),\n\t\t\t\t),\n\t\t\t\tmetadata: computed(() => {\n\t\t\t\t\treturn this.events().filter(event => {\n\t\t\t\t\t\tconst eventDate = event.date();\n\t\t\t\t\t\treturn eventDate.getFullYear() === date.getFullYear() &&\n\t\t\t\t\t\t\teventDate.getMonth() === date.getMonth() &&\n\t\t\t\t\t\t\teventDate.getDate() === date.getDate();\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t});\n\t\t}\n\t\treturn days;\n\t});\n\t/**\n\t * Emits when a day header action is triggered\n\t */\n\tdayAction = output<{ $event: MouseEvent | KeyboardEvent, day: EuiCalendarDay }>();\n\t/**\n\t * Unique component ID for drag-and-drop context\n\t */\n\tprotected id = crypto.randomUUID();\n\t/**\n\t * Computed signal that generates IDs for all drop lists to enable drag-and-drop between days\n\t */\n\tdropListIds = computed(() => {\n\t\treturn this.daysInWeek().map((_, index) => `${this.id}_${_.date.getTime()}`);\n\t});\n\t/**\n\t * Map day names to enum values for flexible input\n\t * @type {Object.<string, number>}\n\t */\n\tprivate DayNameMap: { [s: string]: number; } = {\n\t\tmonday: EuiCalendarDayOfWeek.MONDAY,\n\t\tmon: EuiCalendarDayOfWeek.MONDAY,\n\t\ttuesday: EuiCalendarDayOfWeek.TUESDAY,\n\t\ttue: EuiCalendarDayOfWeek.TUESDAY,\n\t\twednesday: EuiCalendarDayOfWeek.WEDNESDAY,\n\t\twed: EuiCalendarDayOfWeek.WEDNESDAY,\n\t\tthursday: EuiCalendarDayOfWeek.THURSDAY,\n\t\tthu: EuiCalendarDayOfWeek.THURSDAY,\n\t\tfriday: EuiCalendarDayOfWeek.FRIDAY,\n\t\tfri: EuiCalendarDayOfWeek.FRIDAY,\n\t\tsaturday: EuiCalendarDayOfWeek.SATURDAY,\n\t\tsat: EuiCalendarDayOfWeek.SATURDAY,\n\t\tsunday: EuiCalendarDayOfWeek.SUNDAY,\n\t\tsun: EuiCalendarDayOfWeek.SUNDAY,\n\t};\n\t// TODO: explore if grid works better with than flexbox for this layout\n\t// private renderer = inject(Renderer2);\n\t// private elementRef = inject(ElementRef);\n\n\t// constructor() {\n\t// \t// Adjust grid columns based on showWeekends\n\t// \teffect(() => {\n\t// \t\tconst weekends = this.showWeekends();\n\t// \t\tif (weekends) {\n\t// \t\t\tthis.renderer.setStyle(this.elementRef.nativeElement, 'grid-template-columns', 'repeat(7, 1fr)');\n\t// \t\t} else {\n\t// \t\t\tthis.renderer.setStyle(this.elementRef.nativeElement, 'grid-template-columns', 'repeat(5, 1fr)');\n\t// \t\t}\n\t// \t});\n\t// }\n\n\t/**\n\t * Handles drop event when an event is moved between days\n\t * @param dropEvent The CDK drag-drop event\n\t */\n\tdrop(dropEvent: CdkDragDrop<EuiCalendarDay>): void {\n\t\t// If dropped in the same container, no need to update\n\t\tif (dropEvent.previousContainer.id === dropEvent.container.id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst movedEvent: EuiCalendarEvent = dropEvent.item.data;\n\t\tconst targetDay: EuiCalendarDay = dropEvent.container.data;\n\n\t\tthis.events.update(currentEvents => {\n\t\t\t// Update the date of the moved event\n\t\t\tmovedEvent.date.set(targetDay.date);\n\n\t\t\t// Return the updated events array\n\t\t\treturn currentEvents.map(event =>\n\t\t\t\tevent === movedEvent ? movedEvent : event,\n\t\t\t);\n\t\t});\n\n\t\t// Emit the event with the new date for the parent component to handle\n\t\tthis.eventMoved.emit({\n\t\t\tevent: movedEvent,\n\t\t\tnewDate: targetDay.date,\n\t\t});\n\t}\n\n\t/**\n\t * Calculates the start date of the week that contains the given reference date.\n\t * The week always includes the reference date and starts on the specified startingDay.\n\t * For example:\n\t * - If date is Monday 20/10/2025 and startingDay is Tuesday (1), returns Tuesday 14/10/2025\n\t * - If date is Thursday 23/10/2025 and startingDay is Tuesday (1), returns Tuesday 21/10/2025\n\t * @param referenceDate The date within the week (must be included in the week)\n\t * @param startingDay The day the week starts on (0=Monday, 1=Tuesday, ..., 6=Sunday)\n\t * @returns The date of the first day of the week\n\t * @private\n\t */\n\tprivate getWeekStartDate(referenceDate: Date, startingDay: number): Date {\n\t\t// Get the current day of the week in JavaScript format (0=Sunday, 1=Monday, ..., 6=Saturday)\n\t\tconst jsDay = referenceDate.getDay();\n\n\t\t// Convert our DayOfWeek (0=Monday, 1=Tuesday, ..., 6=Sunday) to JavaScript day (0=Sunday, 1=Monday, ..., 6=Saturday)\n\t\t// Monday(0) -> 1, Tuesday(1) -> 2, Wednesday(2) -> 3, Thursday(3) -> 4, Friday(4) -> 5, Saturday(5) -> 6, Sunday(6) -> 0\n\t\tconst targetStartDay = (startingDay + 1) % 7;\n\n\t\t// Calculate how many days back we need to go to reach the start of the week\n\t\t// This finds the most recent occurrence of startingDay (including today if it matches)\n\t\tconst daysBack = (jsDay - targetStartDay + 7) % 7;\n\n\t\tconst result = new Date(referenceDate);\n\t\tresult.setDate(referenceDate.getDate() - daysBack);\n\t\treturn result;\n\t}\n\n\t/**\n\t * Normalizes the starting day input to a DayOfWeek enum value\n\t * @param {string|number} startingDay - Day name, abbreviation, or number\n\t * @returns {number} Normalized day index (0-6)\n\t * @throws {Error} If the starting day is invalid\n\t */\n\tprivate startingDayTransformer(startingDay: string | number): number {\n\t\tif (typeof startingDay === 'number' || /^\\d+$/.test(startingDay)) {\n\t\t\tstartingDay = typeof startingDay === 'string' ? parseInt(startingDay, 10) : startingDay;\n\t\t\tif (startingDay >= 0 && startingDay <= 6) {\n\t\t\t\treturn startingDay;\n\t\t\t}\n\t\t\tthrow new Error(`Invalid starting day number: ${startingDay}. Must be 0-6.`);\n\t\t}\n\n\t\tif (typeof startingDay === 'string') {\n\t\t\tconst normalized = startingDay.toLowerCase().trim();\n\t\t\tif (normalized in this.DayNameMap) {\n\t\t\t\treturn this.DayNameMap[normalized];\n\t\t\t}\n\t\t\tthrow new Error(`Invalid starting day: \"${startingDay}\". Use day name or abbreviation.`);\n\t\t}\n\n\t\tthrow new Error('Starting day must be a string (day name) or number (0-6).');\n\t}\n\n}\n","<!-- Each weekday renders a column with a header and a content area for events. -->\n@for (day of daysInWeek(); track day?.date?.getTime() || i; let i = $index) {\n    <!-- Apply special classes for weekends and today -->\n    <div [ngClass]=\"{ 'day-column--weekend': day.isWeekend, 'day-column--today': day.isToday, 'day-column--disabled': day.disabled }\"\n         [tabindex]=\"0\"\n         class=\"day-column\">\n        <!-- Day Header -->\n        <div class=\"day-header\">\n            @if (dayHeaderTemplate()) {\n                <ng-container *ngTemplateOutlet=\"dayHeaderTemplate(); context: day\" />\n            } @else {\n                <eui-calendar-weekly-day-header [date]=\"day.date\" />\n            }\n        </div>\n        <!-- Day Content Area with Drag-and-Drop Support -->\n        <div (cdkDropListDropped)=\"drop($event)\"\n             [cdkDropListConnectedTo]=\"dropListIds()\"\n             [cdkDropListData]=\"day\"\n             [cdkDropListDisabled]=\"!dragAndDrop()\"\n             [id]=\"id + '_' + day.date.getTime()\"\n             cdkDropList\n             class=\"day-content\">\n            <!-- Render Events for the Day -->\n            @for (event of day.metadata(); track event.id) {\n                <div [cdkDragData]=\"event\"\n                     cdkDrag\n                     cdkDragBoundary=\".week-view\"\n                     class=\"event-card\">\n                    @if (eventContentTemplate()) {\n                        <ng-container *ngTemplateOutlet=\"eventContentTemplate(); context: event\" />\n                    } @else {\n                        <eui-calendar-weekly-day-content [euiDanger]=\"event.type ? event.type() === 'danger': false\"\n                                                [euiInfo]=\"event.type ? event.type() === 'info' : false\"\n                                                [euiPrimary]=\"event.type ? event.type() === 'primary' : false\"\n                                                [euiSuccess]=\"event.type ? event.type() === 'success' : false\"\n                                                [euiWarning]=\"event.type ? event.type() === 'warning' : false\"\n                                                [label]=\"event.label()\"\n                                                [subLabel]=\"event.subLabel()\"\n                                                class=\"event-card\">\n                        </eui-calendar-weekly-day-content>\n                    }\n                </div>\n            }\n        </div>\n    </div>\n}","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    inject,\n    input,\n    model,\n    output,\n} from '@angular/core';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { LocaleService } from '@eui/core';\nimport { EUI_DROPDOWN } from '@eui/components/eui-dropdown';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EuiCalendarDayHeaderActionOption } from './models';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n\tselector: 'eui-calendar-weekly-day-header-action',\n\ttemplateUrl: './eui-calendar-weekly-day-header-actions.component.html',\n\timports: [\n\t\t...EUI_LABEL,\n\t\t...EUI_DROPDOWN,\n\t\t...EUI_ICON,\n\t\t...EUI_BUTTON,\n\t],\n\tstyles: `\n        :host {\n            display: flex;\n            flex-direction: row;\n            justify-content: space-between;\n            width: 100%;\n\n            &.disabled {\n                opacity: 50%;\n            }\n\n            .left-content {\n                align-content: center;\n            }\n\n            .right-content {\n                align-content: center;\n            }\n\n        }\n\t`,\n    host: {\n        '[class.disabled]': 'disabled()',\n    },\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiCalendarWeeklyDayHeaderActionComponent {\n    /**\n     * @description\n     * Disabled state of the component.\n     * If true, the action button will be disabled.\n     * Default is false.\n     */\n    disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\t/**\n\t * @description\n\t * Options for the action button dropdown.\n\t */\n\toptions = input<Array<EuiCalendarDayHeaderActionOption>>([]);\n\t/**\n\t * @description\n\t * Date to display in the header.\n\t */\n\tdate = model.required<Date>();\n\t/**\n\t * @description\n\t * Event emitted when the action button is clicked.\n\t * Can be used to trigger a dropdown or any other action.\n\t */\n\taction = output<MouseEvent | KeyboardEvent>();\n\t/**\n\t * @description\n\t * Sublabel to display under the date.\n\t */\n\tsublabel = input<string>();\n\tprivate locale = inject(LocaleService, { optional: true })?.getSignal();\n\t/**\n\t * @description\n\t * extract the day of the week from the date in short string e.g. MON, TUE, WED etc.\n\t */\n\tprotected dayOfTheWeek = computed(() => {\n\t\tconst options: Intl.DateTimeFormatOptions = { weekday: 'short' };\n\t\treturn this.date() ? this.date().toLocaleDateString(this.locale().id || 'en-US', options).toUpperCase() : '';\n\t});\n\t/**\n\t * @description\n\t * extract the day of the month from the date in number and the month in string e.g. 22 July\n\t */\n\tprotected dayOfTheMonth = computed(() => {\n\t\tconst options: Intl.DateTimeFormatOptions = { day: 'numeric', month: 'long' };\n\t\treturn this.date() ? this.date().toLocaleDateString(this.locale().id || 'en-US', options) : '';\n\t});\n}","<span class=\"left-content\">\n    <span euiLabel class=\"day-date\"><b>{{ dayOfTheWeek() }}</b> {{ dayOfTheMonth() }}</span>\n        <div class=\"day-info\" euiSublabel>{{ sublabel() }}</div>\n    </span>\n<div class=\"right-content\">\n    <eui-dropdown>\n        <button euiButton euiRounded euiIconButton euiBasicButton euiPrimary [euiDisabled]=\"disabled()\" [attr.aria-label]=\"'More options'\">\n            <eui-icon-svg icon=\"eui-ellipsis-vertical\" size=\"s\" />\n        </button>\n        <eui-dropdown-content>\n            @for(option of options(); track option.id) {\n                <button euiDropdownItem (click)=\"option.callback($event, date())\" [attr.aria-label]=\"option.label\">{{ option.label }}</button>\n            }\n        </eui-dropdown-content>\n    </eui-dropdown>\n</div>","import { EuiCalendarMonthlyComponent } from './eui-calendar-monthly.component';\nimport { EuiCalendarDayComponent } from './eui-calendar-day.component';\nimport { EuiCalendarComponent } from './eui-calendar.component';\nimport { EuiCalendarHeaderComponent } from './eui-calendar-header.component';\nimport { EuiCalendarWeeklyComponent } from './eui-calendar-weekly.component';\nimport { EuiCalendarWeeklyDayContentComponent } from './eui-calendar-weekly-day-content.component';\nimport { EuiCalendarWeeklyDayHeaderActionComponent } from './eui-calendar-weekly-day-header-actions.component';\nimport { EuiCalendarWeeklyDayHeaderComponent } from './eui-calendar-weekly-day-header.component';\n\nexport * from './eui-calendar.component';\nexport * from './eui-calendar-monthly.component';\nexport * from './eui-calendar-day.component';\nexport * from './eui-calendar-header.component';\nexport * from './eui-calendar-weekly.component';\nexport * from './eui-calendar-weekly-day-content.component';\nexport * from './eui-calendar-weekly-day-header-actions.component';\nexport * from './eui-calendar-weekly-day-header.component';\nexport * from './models';\n\nexport const EUI_CALENDAR = [\n\tEuiCalendarMonthlyComponent,\n\tEuiCalendarDayComponent,\n\tEuiCalendarComponent,\n\tEuiCalendarHeaderComponent,\n\tEuiCalendarWeeklyComponent,\n\tEuiCalendarWeeklyDayContentComponent,\n\tEuiCalendarWeeklyDayHeaderActionComponent,\n\tEuiCalendarWeeklyDayHeaderComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2","i4"],"mappings":"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"}