@odx/angular 12.21.3 → 12.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +1 -3
- package/fesm2022/odx-angular-animations.mjs.map +1 -1
- package/fesm2022/odx-angular-breakpoints.mjs +1 -1
- package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-a11y.mjs +1 -1
- package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-active-indicator.mjs +1 -1
- package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +1 -1
- package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs +1 -1
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs +1 -1
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-custom-form-control.mjs +1 -1
- package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-date-input.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs +1 -1
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-expandable.mjs +1 -1
- package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-option-control.mjs +1 -1
- package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs +1 -1
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-scrollable.mjs.map +1 -1
- package/fesm2022/odx-angular-components-accordion.mjs +1 -1
- package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/odx-angular-components-action-group.mjs +1 -1
- package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-anchor-navigation.mjs +1 -1
- package/fesm2022/odx-angular-components-anchor-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-area-header.mjs +1 -1
- package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs +1 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/odx-angular-components-avatar.mjs +1 -1
- package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-badge.mjs +1 -1
- package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
- package/fesm2022/odx-angular-components-bar.mjs +1 -1
- package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-breadcrumbs.mjs +1 -1
- package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button-group.mjs +1 -1
- package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button.mjs +1 -1
- package/fesm2022/odx-angular-components-button.mjs.map +1 -1
- package/fesm2022/odx-angular-components-calendar.mjs +2 -2
- package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-card.mjs +2 -2
- package/fesm2022/odx-angular-components-card.mjs.map +1 -1
- package/fesm2022/odx-angular-components-checkbox.mjs +1 -1
- package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-chip.mjs +1 -1
- package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-circular-progress.mjs +1 -1
- package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-content-box.mjs +1 -1
- package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
- package/fesm2022/odx-angular-components-data-table.mjs +1 -1
- package/fesm2022/odx-angular-components-data-table.mjs.map +1 -1
- package/fesm2022/odx-angular-components-datepicker.mjs +2 -2
- package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-daterangepicker.mjs +3 -5
- package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-dropdown.mjs +1 -1
- package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
- package/fesm2022/odx-angular-components-error-page.mjs +1 -1
- package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
- package/fesm2022/odx-angular-components-footer.mjs +2 -2
- package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
- package/fesm2022/odx-angular-components-form-field.mjs +1 -1
- package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header-navigation.mjs +1 -1
- package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header.mjs +1 -1
- package/fesm2022/odx-angular-components-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-icon.mjs +1 -1
- package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
- package/fesm2022/odx-angular-components-inline-message.mjs +1 -1
- package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
- package/fesm2022/odx-angular-components-link.mjs.map +1 -1
- package/fesm2022/odx-angular-components-list.mjs +2 -2
- package/fesm2022/odx-angular-components-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
- package/fesm2022/odx-angular-components-logo.mjs +1 -1
- package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
- package/fesm2022/odx-angular-components-main-menu.mjs +2 -2
- package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-mainfilter-group.mjs +1 -1
- package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-menu.mjs +1 -1
- package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-modal.mjs +1 -1
- package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
- package/fesm2022/odx-angular-components-navigation-back.mjs +1 -1
- package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
- package/fesm2022/odx-angular-components-notification-testing.mjs.map +1 -1
- package/fesm2022/odx-angular-components-notification.mjs +3 -3
- package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
- package/fesm2022/odx-angular-components-paginator.mjs +1 -1
- package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/odx-angular-components-progress.mjs +1 -1
- package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-radio-group.mjs +1 -1
- package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rail-navigation.mjs +1 -1
- package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rich-list.mjs +1 -1
- package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-search-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-select.mjs +1 -1
- package/fesm2022/odx-angular-components-select.mjs.map +1 -1
- package/fesm2022/odx-angular-components-slider.mjs +1 -1
- package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
- package/fesm2022/odx-angular-components-spinbox.mjs +1 -1
- package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-switch.mjs +1 -1
- package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tab-bar.mjs +1 -1
- package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-table.mjs +1 -1
- package/fesm2022/odx-angular-components-table.mjs.map +1 -1
- package/fesm2022/odx-angular-components-timepicker.mjs +2 -2
- package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toast.mjs +1 -1
- package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toggle-button-group.mjs +1 -1
- package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tooltip.mjs +1 -1
- package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-wizard.mjs +1 -1
- package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
- package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
- package/fesm2022/odx-angular-internal.mjs.map +1 -1
- package/fesm2022/odx-angular-localization.mjs.map +1 -1
- package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
- package/fesm2022/odx-angular-sdk.mjs.map +1 -1
- package/fesm2022/odx-angular-theming.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/fesm2022/odx-angular.mjs +2 -2
- package/fesm2022/odx-angular.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-calendar.mjs","sources":["../../../../libs/angular/components/calendar/src/lib/models/selection-mode.ts","../../../../libs/angular/components/calendar/src/lib/calendar.config.ts","../../../../libs/angular/components/calendar/src/lib/models/calendar-view.ts","../../../../libs/angular/components/calendar/src/lib/models/date-range.ts","../../../../libs/angular/components/calendar/src/lib/models/selected-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/check-identical-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/get-A11y-label.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-max-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-min-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/is-date-disabled.ts","../../../../libs/angular/components/calendar/src/lib/utils/parse-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-daterange.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-next-date-set.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-previous-date-set.ts","../../../../libs/angular/components/calendar/src/lib/calendar.service.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-header/calendar-header.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-header/calendar-header.component.html","../../../../libs/angular/components/calendar/src/lib/pipes/date-label.pipe.ts","../../../../libs/angular/components/calendar/src/lib/utils/check-cell-in-range.ts","../../../../libs/angular/components/calendar/src/lib/directives/calendar-cell.directive.ts","../../../../libs/angular/components/calendar/src/lib/directives/calendar-view.directive.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar-month.service.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar-year.service.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar-years.service.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-month/calendar-month.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-month/calendar-month.component.html","../../../../libs/angular/components/calendar/src/lib/components/calendar-year/calendar-year.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-year/calendar-year.component.html","../../../../libs/angular/components/calendar/src/lib/components/calendar-years/calendar-years.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-years/calendar-years.component.html","../../../../libs/angular/components/calendar/src/lib/daterange.service.ts","../../../../libs/angular/components/calendar/src/lib/calendar.component.ts","../../../../libs/angular/components/calendar/src/lib/calendar.component.html","../../../../libs/angular/components/calendar/src/odx-angular-components-calendar.ts"],"sourcesContent":["export enum CalendarSelectionMode {\n Date,\n DateRange,\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { CalendarSelectionMode } from './models/selection-mode';\n\nexport interface CalendarConfig {\n /**\n * Displays the adjacent days in month calendar view.\n *\n * @default true\n */\n displayAdjacentDays: boolean;\n /**\n * Switches between single selection and a daterange selection.\n *\n * @default CalendarSelectionMode.Date\n */\n selectionMode: CalendarSelectionMode;\n\n /**\n * Configuration for the year view.\n *\n * @typedef {Object} YearViewConfig\n * @property {number} itemsPerRow - Number of items to display per row in the year view.\n * @default 3\n */\n /**\n * Configuration options for the calendar's year view.\n *\n * @type {YearViewConfig}\n */\n yearView: { itemsPerRow: number };\n /**\n * Configuration for the years view.\n *\n * @typedef {Object} YearsViewConfig\n * @property {number} itemsPerRow - Number of items to display per row in the years view.\n * @property {number} [padding=100] - The number of year items before and after the current year\n * @default\n * itemsPerRow: 3,\n * padding: 100\n */\n /**\n * Configuration options for the calendar's years view.\n *\n * @type {YearsViewConfig}\n */\n yearsView: { itemsPerRow: number; padding: number };\n}\n\n/**\n * Tools for customizing configuration for the calendar component\n *\n * @example\n * ```ts\n * @Component({\n * ...\n * providers: [provideCalendarConfig({ selectionMode: CalendarSelectionMode.DateRange, locale: new BehaviorSubject<Locale>(deDE)})]\n * })\n * export class MyDateRangepickerComponent {}\n * ```\n *\n * @example\n * ```ts\n * constructor(@Inject(CalendarConfig) private readonly calendarConfig: CalendarConfig) {}\n * ```\n */\nexport const { CalendarConfig, CalendarDefaultConfig, injectCalendarConfig, provideCalendarConfig } = createConfigTokens(\n 'Calendar',\n '@odx/angular/components/calendar',\n {\n displayAdjacentDays: true,\n selectionMode: CalendarSelectionMode.Date,\n yearView: {\n itemsPerRow: 3,\n },\n yearsView: {\n itemsPerRow: 3,\n padding: 100,\n },\n },\n);\n","export enum CalendarView {\n Month = 'month',\n Year = 'year',\n Years = 'years',\n}\n","import { DateType } from './date-type';\n\nexport interface DateTypeRange {\n start: DateType | null;\n end: DateType | null;\n}\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport enum DateRangeSelectionState {\n NothingSelected = 'NothingSelected',\n StartSelected = 'StartSelected',\n EndSelected = 'EndSelected',\n}\n\nexport interface DateRangeState {\n selectionState: DateRangeSelectionState;\n dateRange: DateRange;\n}\n","export interface DateSelectEvent {\n date: Date | null;\n options: DateSelectOptions;\n}\n\nexport interface DateSelectOptions {\n skipDaterangeUpdate?: boolean;\n emitOutside?: boolean;\n}\n\nexport const dateSelectOptionsDefaults: DateSelectOptions = {\n skipDaterangeUpdate: false,\n emitOutside: false,\n};\n","import { isSameDay, isSameMonth, isSameYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (currentDate: Date, date: Date) => isSameDay(currentDate, date),\n [CalendarView.Year]: (currentDate: Date, date: Date) => isSameMonth(currentDate, date),\n [CalendarView.Years]: (currentDate: Date, date: Date) => isSameYear(currentDate, date),\n};\n\n/** @internal */\nexport function checkIdenticalDate(currentDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](currentDate, date);\n}\n","import { CalendarView } from '../models';\n\n/** @internal */\nexport function getA11yLabel(calendarView: CalendarView): Intl.DateTimeFormatOptions {\n switch (calendarView) {\n case CalendarView.Year:\n return { month: 'long', year: 'numeric' };\n\n case CalendarView.Years:\n return { year: 'numeric' };\n\n default:\n return { month: 'long', day: '2-digit', year: 'numeric' };\n }\n}\n","import { endOfDay, endOfMonth, endOfYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (maxDate: Date, date: Date) => endOfDay(maxDate) < endOfDay(date),\n [CalendarView.Year]: (maxDate: Date, date: Date) => endOfMonth(maxDate) < endOfMonth(date),\n [CalendarView.Years]: (maxDate: Date, date: Date) => endOfYear(maxDate) < endOfYear(date),\n};\n\n/** @internal */\nexport function validateMaxDate(maxDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](maxDate, date);\n}\n","import { startOfDay, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (minDate: Date, date: Date) => startOfDay(minDate) > startOfDay(date),\n [CalendarView.Year]: (minDate: Date, date: Date) => startOfMonth(minDate) > startOfMonth(date),\n [CalendarView.Years]: (minDate: Date, date: Date) => startOfYear(minDate) > startOfYear(date),\n};\n\n/** @internal */\nexport function validateMinDate(maxDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](maxDate, date);\n}\n","import { CalendarView, DateFilter } from '../models';\nimport { validateMaxDate } from './validate-max-date';\nimport { validateMinDate } from './validate-min-date';\n\n/** @internal */\nexport function isDateDisabled(date: Date, calendarView: CalendarView, minDate?: Date | null, maxDate?: Date | null, filterFn?: DateFilter | null): boolean {\n const minDateValidation = minDate && validateMinDate(minDate, date, calendarView);\n const maxDateValidation = maxDate && validateMaxDate(maxDate, date, calendarView);\n const isDateFiltered = calendarView === CalendarView.Month && !!filterFn?.(date);\n\n return minDateValidation || maxDateValidation || isDateFiltered;\n}\n","import { isString } from '@odx/angular/utils';\nimport { isValid, toDate } from 'date-fns';\nimport { DateType } from '../models';\n\n/** @internal */\nexport function parseDate(value: DateType): Date {\n try {\n const timestamp = isString(value) ? Date.parse(value) : value;\n\n if (!isValid(timestamp)) {\n return new Date();\n }\n\n return toDate(timestamp);\n } catch {\n return new Date();\n }\n}\n","import { isBefore, isEqual } from 'date-fns';\n\n/** @internal */\nexport function validateDaterange(start: Date, end: Date): boolean {\n return isBefore(start, end) || isEqual(start, end);\n}\n","import { addMonths, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (maxDate: Date, date: Date) => maxDate < startOfMonth(addMonths(date, 1)),\n [CalendarView.Year]: (maxDate: Date, date: Date) => maxDate < startOfYear(addMonths(date, 12)),\n [CalendarView.Years]: () => false,\n};\n\n/** @internal */\nexport function validateNextDateSet(maxDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](maxDate, date);\n}\n","import { endOfMonth, endOfYear, subMonths } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (minDate: Date, date: Date) => minDate > endOfMonth(subMonths(date, 1)),\n [CalendarView.Year]: (minDate: Date, date: Date) => minDate > endOfYear(subMonths(date, 12)),\n [CalendarView.Years]: () => false,\n};\n\n/** @internal */\nexport function validatePreviousDateSet(minDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](minDate, date);\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { isPresent as isNonNullable } from '@odx/angular/utils';\nimport { isEqual, startOfDay } from 'date-fns';\nimport { BehaviorSubject, distinctUntilChanged, filter, map, merge, shareReplay } from 'rxjs';\nimport { CalendarView, DateSelectEvent, DateSelectOptions, DateType, dateSelectOptionsDefaults } from './models';\nimport { parseDate } from './utils';\n\n/**\n * Manages the state and functionality related to a calendar, such as tracking the active date,\n * hovered date, current calendar view, and handling date selections. It provides observable streams\n * that components can subscribe to in order to react to changes in the calendar's state.\n */\n@Injectable()\nexport class CalendarService {\n private readonly activeDate$$ = new BehaviorSubject<Date | null>(null); // the date that is being focused by click or arrow keys\n private readonly hoveredDate$$ = new BehaviorSubject<Date | null>(null); // the date that is being hovered by a pointing device\n private readonly calendarView$$ = new BehaviorSubject<CalendarView>(CalendarView.Month);\n private readonly dateSelectEvents$$ = new BehaviorSubject<DateSelectEvent>({\n date: null,\n options: dateSelectOptionsDefaults,\n });\n\n /**\n * Currently selected date to external subscribers, particularly useful for two-way binding.\n *\n * @emits {Date | null} The currently selected date or null if no date is selected.\n */\n public readonly outputDate$ = new EventEmitter<Date | null>();\n\n /**\n * An observable of the current calendar view state, allowing subscribers to adjust UI components\n * based on the view (e.g., month, year, multi-year).\n *\n * @emits {CalendarView} The current calendar view state.\n */\n public readonly calendarView$ = this.calendarView$$.pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Streams date select events which include the selected date and any associated options.\n *\n * @emits {DateSelectEvent} The date selection event, including the selected date and options.\n */\n public readonly dateSelectEvents$ = this.dateSelectEvents$$.asObservable();\n\n /**\n * Streams the last selected date, enabling components to update based on the latest date selection.\n *\n * @emits {Date | null} The last selected date or null if no date has been selected.\n */\n public readonly selectedDate$ = this.dateSelectEvents$$.pipe(\n map((x) => x.date),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Streams the active date which reflects the date that is being focused, either through UI interactions\n * like clicking or using arrow keys.\n *\n * @emits {Date | null} The active date or null if no date is active.\n */\n public readonly activeDate$ = this.activeDate$$.pipe(\n filter(Boolean),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Combines streams of active and hovered dates to provide a merged view of preview dates.\n *\n * @emits {Date | null} The preview date or null if no date is being previewed.\n */\n public readonly previewDate$ = merge(this.activeDate$$, this.hoveredDate$$).pipe(\n filter(Boolean),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Updates the active date state with a new date, parsed from various input types.\n *\n * @param {DateType | null} value - The new date or null to clear the active date.\n */\n public setActiveDate(value: DateType | null): void {\n if (!isNonNullable(value)) return;\n this.activeDate$$.next(parseDate(value));\n }\n\n /**\n * Sets a date as hovered, which can be used to preview date ranges or effects in the UI.\n *\n * @param {DateType | null} value - The date being hovered or null to clear the hovered state.\n */\n public setHoveredDate(value: DateType | null): void {\n if (!isNonNullable(value)) return;\n this.hoveredDate$$.next(parseDate(value));\n }\n\n /**\n * Selects a date and updates relevant states and options. Can emit the selected date externally\n * if specified in the options.\n *\n * @param {DateType | null} value - The date to select.\n * @param {DateSelectOptions} [options] - Optional settings for the date selection, such as whether\n * to emit the date change externally.\n */\n public selectDate(value: DateType | null, options?: DateSelectOptions): void {\n const date = isNonNullable(value) ? startOfDay(parseDate(value)) : null;\n this.dateSelectEvents$$.next({ date, options: { ...dateSelectOptionsDefaults, ...options } });\n if (options?.emitOutside) {\n this.outputDate$.next(date);\n }\n this.setActiveDate(date);\n }\n\n /**\n * Changes the calendar view to the specified view, updating the internal state and notifying subscribers.\n *\n * @param {CalendarView} view - The new view to set for the calendar.\n */\n public changeView(view: CalendarView): void {\n this.calendarView$$.next(view);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { NgChanges, hasChanged, injectElement } from '@odx/angular/utils';\nimport { CalendarView } from '../../models';\nimport { validateNextDateSet, validatePreviousDateSet } from '../../utils';\n\n/**\n * Represents the header component of the calendar.\n */\n@CSSComponent('calendar-header')\n@Component({\n selector: 'odx-calendar-header',\n standalone: true,\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent],\n templateUrl: './calendar-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CalendarHeaderComponent implements OnChanges {\n protected isPreviousDisabled = false;\n protected isNextDisabled = false;\n\n public readonly element = injectElement();\n\n /**\n * The active date of the calendar.\n *\n * @type {Date}\n */\n @Input()\n public activeDate!: Date;\n\n /**\n * The current view of the calendar.\n *\n * @type {CalendarView}\n */\n @Input()\n public calendarView!: CalendarView;\n\n /**\n * The minimum selectable date in the calendar.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public minDate?: Date | null = null;\n\n /**\n * The maximum selectable date in the calendar.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public maxDate?: Date | null = null;\n\n /**\n * Event emitted when the previous button is clicked.\n *\n * @emits {MouseEvent}\n */\n @Output()\n public previous = new EventEmitter<MouseEvent>();\n\n /**\n * Event emitted when the next button is clicked.\n *\n * @emits {MouseEvent}\n */\n @Output()\n public next = new EventEmitter<MouseEvent>();\n\n /**\n * Event emitted when the view is changed.\n *\n * @emits {void}\n */\n @Output()\n public changeView = new EventEmitter<void>();\n\n public ngOnChanges(changes: NgChanges<CalendarHeaderComponent>): void {\n if (hasChanged(changes, ['activeDate', 'calendarView', 'minDate', 'maxDate'], false)) {\n this.isPreviousDisabled = this.minDate ? validatePreviousDateSet(this.minDate, this.activeDate, this.calendarView) : false;\n this.isNextDisabled = this.maxDate ? validateNextDateSet(this.maxDate, this.activeDate, this.calendarView) : false;\n }\n }\n\n protected previousClicked(event: MouseEvent): void {\n if (this.isPreviousDisabled) return;\n this.previous.emit(event);\n }\n\n protected nextClicked(event: MouseEvent): void {\n if (this.isNextDisabled) return;\n this.next.emit(event);\n }\n}\n","<odx-action-group>\n <button odxButton [disabled]=\"isPreviousDisabled\" (click)=\"previousClicked($event)\"><odx-icon name=\"chevron-left\" /></button>\n\n <button odxButton class=\"odx-calendar-header__title\" (click)=\"changeView.emit()\">\n <ng-content />\n </button>\n\n <button odxButton [disabled]=\"isNextDisabled\" (click)=\"nextClicked($event)\"><odx-icon name=\"chevron-right\" /></button>\n</odx-action-group>\n","import { ChangeDetectorRef, Pipe, PipeTransform, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { fastDeepEqual } from '@odx/angular/internal';\nimport { LocalizationService } from '@odx/angular/localization';\n\n/**\n * Transforms a given date into a formatted string based on the provided date format string.\n * The transformation utilizes the `format` function from date-fns library and considers the locale\n * from the global calendar configuration to ensure the date is represented in a locale-appropriate format.\n *\n * @param {Date | null} value - The date to format.\n * @param {Intl.DateTimeFormatOptions} formatOptions - The format options to apply to the date.\n * @returns {string} - The formatted date string.\n */\n@Pipe({\n standalone: true,\n name: 'odxDateLabel',\n pure: false,\n})\nexport class DateLabelPipe implements PipeTransform {\n private readonly localizationService = inject(LocalizationService);\n private readonly windowRef = inject(WindowRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private lastValue: Date | null = null;\n private lastFormatOptions: Intl.DateTimeFormatOptions | null = null;\n private formattedValue = '';\n\n public transform(value: Date | null, formatOptions: Intl.DateTimeFormatOptions): string {\n if (!value) return '';\n\n if (value === this.lastValue && fastDeepEqual(formatOptions, this.lastFormatOptions)) {\n return this.formattedValue;\n }\n\n this.formattedValue = this.windowRef.nativeWindow.Intl.DateTimeFormat(this.localizationService.getActiveLanguage(), formatOptions).format(value);\n this.lastValue = value;\n this.lastFormatOptions = formatOptions;\n this.cdr.markForCheck();\n\n return this.formattedValue;\n }\n}\n","import { isSameDay, isWithinInterval } from 'date-fns';\nimport { CalendarView, DateRange, DateRangeSelectionState, DateRangeState } from '../models';\nimport { validateDaterange } from './validate-daterange';\nexport interface DateRangeValidationInfo {\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n}\n\n/** @internal */\nexport function checkCellInRange(\n date: Date,\n dateRangeState: DateRangeState,\n calendarView: CalendarView,\n targetSelectionState: DateRangeSelectionState,\n): DateRangeValidationInfo {\n const { start, end } = dateRangeState.dateRange;\n\n if (calendarView !== CalendarView.Month || dateRangeState.selectionState !== targetSelectionState || (start && end && !validateDaterange(start, end))) {\n return {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n };\n }\n const isRangeStart = start ? isSameDay(date, start) : false;\n const isRangeEnd = end ? isSameDay(date, end) : false;\n return {\n isRangeStart,\n isRangeEnd,\n isInRange: isRangeEnd || isRangeStart || isWithinInclusiveRange(date, { start, end }),\n };\n}\n\nfunction isWithinInclusiveRange(date: Date, dateRange: DateRange): boolean {\n const { start, end } = dateRange;\n if (!start || !end) {\n return false;\n }\n\n return isWithinInterval(date, { start, end });\n}\n","import { Directive, inject, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { DisabledController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { deferFn, EventManager, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { isSameMonth } from 'date-fns';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarService } from '../calendar.service';\nimport { CalendarSelectionMode, CalendarView, DateRangeSelectionState, DateRangeState } from '../models';\nimport { DateLabelPipe } from '../pipes';\nimport { checkIdenticalDate, getA11yLabel } from '../utils';\nimport { checkCellInRange } from '../utils/check-cell-in-range';\n\n/**\n * Represents a directive for a cell in the calendar view.\n */\n@CSSComponent('calendar-cell')\n@Directive({\n selector: '[odxCalendarCell]',\n standalone: true,\n providers: [DisabledController.connect(), DateLabelPipe],\n host: {\n '[class.is-disabled]': 'isDisabled',\n '[class.is-selected]': 'isSelected',\n '[class.is-in-any-range]': 'isInRange || isInPreviewRange',\n '[attr.hidden]': 'isHidden || null',\n '[tabindex]': 'isActive ? 0 : -1',\n '[attr.aria-label]': 'ariaLabel',\n '[attr.aria-disabled]': 'isDisabled',\n '[attr.type]': '\"button\"',\n },\n})\nexport class CalendarCellDirective implements OnChanges, OnInit, OnDestroy {\n private readonly disabledController = DisabledController.inject();\n\n private readonly eventManager = inject(EventManager);\n private readonly calendarService = inject(CalendarService);\n private registeredEventId = '';\n\n protected readonly config = injectCalendarConfig();\n protected readonly dateLabelPipe = inject(DateLabelPipe);\n protected isActive = false;\n protected isSelected = false;\n protected isHidden = false;\n protected ariaLabel = '';\n\n protected get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n @CSSModifier()\n protected isCurrent = false;\n\n @CSSModifier()\n protected adjacent = false;\n\n @CSSModifier()\n protected isInRange = false;\n\n @CSSModifier()\n protected isRangeStart = false;\n\n @CSSModifier()\n protected isRangeEnd = false;\n\n @CSSModifier()\n protected isInPreviewRange = false;\n\n @CSSModifier()\n protected isPreviewRangeStart = false;\n\n @CSSModifier()\n protected isPreviewRangeEnd = false;\n\n public readonly element = injectElement();\n\n /**\n * Represents the date associated with a calendar cell.\n * The date is used to determine the date displayed in the cell.\n *\n * @type {Date}\n */\n @Input('odxCalendarCell')\n public date!: Date;\n\n /**\n * Represents the calendar view of the cell.\n * The calendar view determines how the cell is displayed in the calendar.\n *\n * @type {CalendarView}\n */\n @Input('odxCalendarCellCalendarView')\n public calendarView!: CalendarView;\n\n /**\n * Represents the active date in the calendar view.\n *\n * @type {Date | null}\n * @default null\n */\n @Input('odxCalendarCellActiveDate')\n public activeDate: Date | null = null;\n\n /**\n * Represents the selected date in the calendar view.\n *\n * @type {Date | null}\n * @default null\n */\n @Input('odxCalendarCellSelectedDate')\n public selectedDate?: Date | null = null;\n\n /**\n * Represents the selected date range in the calendar view.\n *\n * @type {DateRangeState | null}\n * @default null\n */\n @Input('odxCalendarCellSelectedDateRange')\n public selectedDateRange?: DateRangeState | null = null;\n\n /**\n * Represents the preview date for the calendar view.\n * This property represents the date that is currently being previewed in the calendar view.\n * It can be set to a specific date or null if no date is being previewed.\n *\n * @type {Date | null}\n * @default null\n */\n @Input('odxCalendarCellPreviewDate')\n public previewDate?: Date | null = null;\n\n public ngOnChanges(changes: NgChanges<CalendarCellDirective>): void {\n if (hasChanged(changes, ['date', 'calendarView'], false)) {\n this.ariaLabel = this.dateLabelPipe.transform(this.date, getA11yLabel(this.calendarView));\n this.isCurrent = checkIdenticalDate(this.date, new Date(), this.calendarView);\n }\n\n if (this.activeDate && hasChanged(changes, ['date', 'activeDate'], false)) {\n this.isActive = checkIdenticalDate(this.date, this.activeDate, this.calendarView);\n if (this.calendarView === CalendarView.Month) {\n this.adjacent = !isSameMonth(this.date, this.activeDate);\n this.isHidden = this.adjacent && !this.config.displayAdjacentDays;\n }\n }\n\n if (this.selectedDate && hasChanged(changes, ['date', 'selectedDate'], false)) {\n this.isSelected = checkIdenticalDate(this.date, this.selectedDate, this.calendarView);\n }\n\n if (this.config.selectionMode === CalendarSelectionMode.DateRange && this.selectedDateRange && hasChanged(changes, ['date', 'selectedDateRange'], false)) {\n const start = this.selectedDateRange.dateRange.start;\n this.isSelected = checkIdenticalDate(this.date, start || new Date(), this.calendarView);\n const rangeValidation = checkCellInRange(this.date, this.selectedDateRange, this.calendarView, DateRangeSelectionState.EndSelected);\n this.isRangeStart = rangeValidation.isRangeStart;\n this.isRangeEnd = rangeValidation.isRangeEnd;\n this.isInRange = rangeValidation.isInRange;\n }\n\n if (\n this.config.selectionMode === CalendarSelectionMode.DateRange &&\n this.previewDate &&\n this.selectedDateRange &&\n hasChanged(changes, ['date', 'selectedDateRange', 'previewDate'])\n ) {\n const previewRange: DateRangeState = {\n selectionState: this.selectedDateRange.selectionState,\n dateRange: { start: this.selectedDateRange.dateRange.start, end: this.previewDate },\n };\n const rangeValidation = checkCellInRange(this.date, previewRange, this.calendarView, DateRangeSelectionState.StartSelected);\n this.isPreviewRangeStart = rangeValidation.isRangeStart;\n this.isPreviewRangeEnd = rangeValidation.isRangeEnd;\n this.isInPreviewRange = rangeValidation.isInRange;\n }\n\n if (this.isActive) {\n deferFn(() => this.element.nativeElement.focus());\n }\n }\n\n public ngOnInit(): void {\n if (this.config.selectionMode === CalendarSelectionMode.DateRange && this.calendarView === CalendarView.Month) {\n this.registerEvents();\n }\n }\n\n public ngOnDestroy(): void {\n this.eventManager.destroyListener(this.registeredEventId);\n }\n\n private registerEvents(): void {\n this.registeredEventId = this.eventManager.register(\n ['mouseover'],\n (event) => {\n event?.preventDefault();\n event?.stopPropagation();\n this.calendarService.setHoveredDate(this.date);\n },\n this.element.nativeElement,\n )[0];\n }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarService } from '../calendar.service';\nimport { CalendarView, DateFilter, DateRangeState } from '../models';\nimport { isDateDisabled } from '../utils';\n\n/**\n * Represents an abstract directive for a calendar view.\n */\n@Directive({\n standalone: true,\n})\nexport abstract class CalendarViewDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly calendar = inject(CalendarService);\n protected readonly config = injectCalendarConfig();\n protected abstract readonly currentView: CalendarView;\n protected abstract readonly nextView: CalendarView;\n\n public readonly element = injectElement();\n\n /**\n * The active date for the calendar view.\n *\n * @type {Date}\n */\n @Input()\n public activeDate!: Date;\n\n /**\n * The selected date in the calendar view.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public selectedDate?: Date | null = null;\n\n /**\n * The selected date range in the calendar view.\n *\n * @type {DateRangeState | null}\n * @default null\n */\n @Input()\n public selectedDateRange?: DateRangeState | null = null;\n\n /**\n * The preview date for the calendar view.\n * This property represents the date that is currently being previewed in the calendar view.\n * It can be set to a specific date or null if no date is being previewed.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public previewDate?: Date | null = null;\n\n /**\n * The minimum selectable date in the calendar view.\n * If set, dates before this minimum date will be disabled for selection.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public minDate?: Date | null = null;\n\n /**\n * The maximum selectable date in the calendar view.\n * If set, dates after this maximum date will be disabled for selection.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public maxDate?: Date | null = null;\n\n /**\n * The filter function used to determine if a date should be displayed in the calendar view.\n * If set to `null`, no filtering will be applied.\n *\n * @type {DateFilter | null}\n * @default null\n *\n * @remarks\n * The filter function should accept a `Date` object as its parameter and return a boolean value.\n * If the function returns `true`, the date will be displayed; if it returns `false`, the date will be hidden.\n *\n * @example\n * ```ts\n * // Filter out weekends\n * const filterFn: DateFilter = (date) => date.getDay() !== 0 && date.getDay() !== 6;\n * ```\n */\n @Input()\n public filterFn?: DateFilter | null = null;\n\n protected isDateDisabled(value: Date): boolean {\n return isDateDisabled(value, this.currentView, this.minDate, this.maxDate, this.filterFn);\n }\n\n protected changeView(): void {\n this.calendar.changeView(this.nextView);\n }\n\n protected updateActiveDate(event: Event, date: Date): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.calendar.setActiveDate(date);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { addDays, startOfMonth, startOfWeek } from 'date-fns';\nimport { map } from 'rxjs';\nimport { CalendarService } from '../calendar.service';\n\n/** @internal */\n@Injectable()\nexport class CalendarMonthService {\n private readonly calendar = inject(CalendarService);\n private readonly weeksInView = 6;\n\n public readonly weekDays$ = this.calendar.activeDate$.pipe(map((date) => this.generateWeekDays(date)));\n public readonly weeks$ = this.calendar.activeDate$.pipe(map((date) => this.generateWeeks(date)));\n\n private generateWeekDays(date: Date): Date[] {\n const firstWeekDay = startOfWeek(date, { weekStartsOn: 1 });\n return Array.from({ length: 7 }, (_, i) => addDays(firstWeekDay, i));\n }\n\n private generateWeeks(date: Date): Date[][] {\n const startOfTheSelectedMonth = startOfMonth(date);\n const startDate = startOfWeek(startOfTheSelectedMonth, { weekStartsOn: 1 });\n const allWeeks = [];\n\n let currentDate = startDate;\n\n for (let i = this.weeksInView; i > 0; i--) {\n allWeeks.push(this.generateDaysForWeek(currentDate, date));\n currentDate = addDays(currentDate, 7);\n }\n\n return allWeeks;\n }\n\n private generateDaysForWeek(date: Date, currentDate: Date): Date[] {\n return Array.from({ length: 7 }).map((_, i) => addDays(date, i), currentDate);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { eachMonthOfInterval, endOfYear, startOfYear } from 'date-fns';\nimport { map } from 'rxjs';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarService } from '../calendar.service';\n\n/** @internal */\n@Injectable()\nexport class CalendarYearService {\n private readonly config = injectCalendarConfig();\n private readonly calendar = inject(CalendarService);\n\n public readonly seasons$ = this.calendar.activeDate$.pipe(map((selectedDate) => this.generateSeasons(selectedDate)));\n\n private generateSeasons(date: Date): Date[][] {\n const { itemsPerRow } = this.config.yearView;\n const seasons = [];\n const months = eachMonthOfInterval({\n start: startOfYear(date),\n end: endOfYear(date),\n });\n\n let index = 0;\n while (index < months.length) {\n seasons.push(months.slice(index, index + itemsPerRow));\n index += itemsPerRow;\n }\n\n return seasons;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { addYears, getYear, setYear, startOfYear } from 'date-fns';\nimport { defer, of } from 'rxjs';\nimport { injectCalendarConfig } from '../calendar.config';\n\n/** @internal */\n@Injectable()\nexport class CalendarYearsService {\n private readonly config = injectCalendarConfig();\n\n public readonly years$ = defer(() => of(this.generateYears()));\n\n private generateYears(): Date[][] {\n const { itemsPerRow, padding } = this.config.yearsView;\n const now = Date.now();\n const startDate = startOfYear(addYears(now, -padding));\n const startYear = getYear(startDate);\n const endDate = startOfYear(addYears(now, padding));\n const endYear = getYear(endDate);\n\n const years: Date[] = [];\n const yearRows: Date[][] = [];\n\n for (let i = startYear; i <= endYear; i++) {\n years.push(setYear(startDate, i));\n }\n\n let index = 0;\n while (index < years.length) {\n yearRows.push(years.slice(index, index + itemsPerRow));\n index += itemsPerRow;\n }\n\n return yearRows;\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { addDays, addMonths, addWeeks, subDays, subMonths, subWeeks } from 'date-fns';\nimport { CalendarCellDirective, CalendarViewDirective } from '../../directives';\nimport { CalendarView } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarMonthService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\n\n/**\n * Represents a calendar month component.\n * This component extends the `CalendarViewDirective` class and provides functionality for managing the calendar month.\n *\n * @see {CalendarViewDirective}\n */\n@CSSComponent('calendar-month')\n@Component({\n selector: 'odx-calendar-month',\n standalone: true,\n imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe],\n templateUrl: './calendar-month.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarMonthService],\n})\nexport class CalendarMonthComponent extends CalendarViewDirective {\n protected readonly calendarMonth = inject(CalendarMonthService);\n protected readonly nextView = CalendarView.Years;\n protected readonly currentView = CalendarView.Month;\n protected previousDay(event: Event): void {\n this.updateActiveDate(event, subDays(this.activeDate, 1));\n }\n\n protected nextDay(event: Event): void {\n this.updateActiveDate(event, addDays(this.activeDate, 1));\n }\n\n protected previousWeek(event: Event): void {\n this.updateActiveDate(event, subWeeks(this.activeDate, 1));\n }\n\n protected nextWeek(event: Event): void {\n this.updateActiveDate(event, addWeeks(this.activeDate, 1));\n }\n\n protected previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n protected nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n protected selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n this.calendar.selectDate(value, { emitOutside: true });\n }\n}\n","<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"7\">\n <odx-calendar-header\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (previous)=\"previousMonth($event)\"\n (next)=\"nextMonth($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { month: 'long', year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n\n <tr class=\"odx-calendar__weekdays\">\n @for (day of calendarMonth.weekDays$ | async; track $index) {\n <td>\n {{ (day | odxDateLabel: { weekday: 'short' }).charAt(0) }}\n </td>\n }\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousDay($event)\"\n (keydown.ArrowRight)=\"nextDay($event)\"\n (keydown.ArrowUp)=\"previousWeek($event)\"\n (keydown.ArrowDown)=\"nextWeek($event)\"\n (keydown.PageUp)=\"previousMonth($event)\"\n (keydown.PageDown)=\"nextMonth($event)\"\n >\n @for (week of calendarMonth.weeks$ | async; track $index) {\n <tr>\n @for (day of week; track $index) {\n <td role=\"gridcell\">\n <button\n [disabled]=\"isDateDisabled(day)\"\n [odxCalendarCell]=\"day\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n [odxCalendarCellPreviewDate]=\"previewDate\"\n (click)=\"selectDate(day)\"\n >\n {{ day | odxDateLabel: { day: 'numeric' } }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { addMonths, getMonth, setMonth, subMonths } from 'date-fns';\nimport { CalendarCellDirective, CalendarViewDirective } from '../../directives';\nimport { CalendarView } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\n\n/**\n * Represents a component for displaying a calendar year view.\n * Extends the `CalendarViewDirective` class.\n *\n * @see {CalendarViewDirective}\n */\n@CSSComponent('calendar-year')\n@Component({\n selector: 'odx-calendar-year',\n standalone: true,\n imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe],\n templateUrl: './calendar-year.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarYearService],\n})\nexport class CalendarYearComponent extends CalendarViewDirective {\n protected readonly calendarYear = inject(CalendarYearService);\n protected readonly nextView = CalendarView.Month;\n protected readonly currentView = CalendarView.Year;\n\n protected previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n protected nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n protected previousSeason(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 3));\n }\n\n protected nextSeason(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 3));\n }\n\n protected previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n protected nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n protected selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setMonth(this.activeDate, getMonth(value));\n this.calendar.selectDate(date, { skipDaterangeUpdate: true });\n\n this.changeView();\n }\n}\n","<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"3\">\n <odx-calendar-header\n (previous)=\"previousYear($event)\"\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (next)=\"nextYear($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousMonth($event)\"\n (keydown.ArrowRight)=\"nextMonth($event)\"\n (keydown.ArrowUp)=\"previousSeason($event)\"\n (keydown.ArrowDown)=\"nextSeason($event)\"\n (keydown.PageDown)=\"nextYear($event)\"\n (keydown.PageUp)=\"previousYear($event)\"\n >\n @for (season of calendarYear.seasons$ | async; track $index) {\n <tr class=\"odx-calendar__season\">\n @for (month of season; track $index) {\n <td role=\"gridcell\">\n <button\n [disabled]=\"isDateDisabled(month)\"\n [odxCalendarCell]=\"month\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(month)\"\n >\n {{ month | odxDateLabel: { month: 'short' } }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { deferFn, isFunction } from '@odx/angular/utils';\nimport { addMonths, getYear, setYear, subMonths } from 'date-fns';\nimport { CalendarCellDirective, CalendarViewDirective } from '../../directives';\nimport { CalendarView } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearsService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\n\n/**\n * Represents the component for displaying the years view in a calendar.\n * Extends the `CalendarViewDirective` class and implements the `AfterViewInit` interface.\n *\n * @see {CalendarViewDirective}\n */\n@CSSComponent('calendar-years')\n@Component({\n selector: 'odx-calendar-years',\n standalone: true,\n imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe],\n templateUrl: './calendar-years.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarYearsService],\n})\nexport class CalendarYearsComponent extends CalendarViewDirective implements AfterViewInit {\n private readonly document = inject(DOCUMENT);\n\n protected readonly calendarYears = inject(CalendarYearsService);\n protected readonly nextView = CalendarView.Year;\n protected readonly currentView = CalendarView.Years;\n\n public ngAfterViewInit(): void {\n deferFn(() => this.scrollCurrentYearIntoView());\n }\n\n protected previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n protected nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n protected previousRow(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12 * 3));\n }\n\n protected nextRow(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12 * 3));\n }\n\n protected selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setYear(this.activeDate, getYear(value));\n this.calendar.selectDate(date, { skipDaterangeUpdate: true });\n\n this.changeView();\n }\n\n private scrollCurrentYearIntoView(): void {\n const selectedYear = this.document.querySelector('.odx-calendar-cell.is-selected');\n const currentYear = this.document.querySelector('.odx-calendar-cell--is-current');\n\n const element = selectedYear || currentYear;\n\n if (element && isFunction(element.scrollIntoView)) {\n element.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n }\n}\n","<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead aria-hidden=\"true\">\n <th></th>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousYear($event)\"\n (keydown.ArrowRight)=\"nextYear($event)\"\n (keydown.ArrowUp)=\"previousRow($event)\"\n (keydown.ArrowDown)=\"nextRow($event)\"\n >\n @for (yearRow of calendarYears.years$ | async; track $index) {\n <tr class=\"odx-calendar__year-row\">\n @for (year of yearRow; track $index) {\n <td role=\"gridcell\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"calendar.activeDate$ | async\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel: { year: 'numeric' } }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { EventEmitter, Injectable, inject } from '@angular/core';\nimport { deferFn } from '@odx/angular/utils';\nimport { BehaviorSubject, Observable, distinctUntilChanged, filter, map, shareReplay, withLatestFrom } from 'rxjs';\nimport { CalendarService } from './calendar.service';\nimport { DateRange, DateRangeSelectionState, DateSelectEvent, DateTypeRange } from './models';\nimport { DateRangeState } from './models/date-range';\nimport { validateDaterange } from './utils';\n\n/**\n * Service for managing date range selection.\n */\n@Injectable()\nexport class DaterangeService {\n private readonly calendar = inject(CalendarService);\n\n private readonly dateRangeState$$ = new BehaviorSubject<DateRangeState>({\n selectionState: DateRangeSelectionState.NothingSelected,\n dateRange: { start: null, end: null },\n });\n\n /**\n * An event emitter for outputting the selected date range.\n *\n * @emits {DateRange | null} outputDateRange$ - The selected date range or null if no range is selected.\n */\n public readonly outputDateRange$ = new EventEmitter<DateRange | null>();\n\n /**\n * An observable that emits the current date range state.\n * The date range state represents the current selection state and the selected date range.\n *\n * @emits {DateRangeState} dateRangeState$ - The current date range state.\n */\n public readonly dateRangeState$: Observable<DateRangeState> = this.calendar.dateSelectEvents$.pipe(\n filter((newSelectedDate: DateSelectEvent) => Boolean(newSelectedDate.date)),\n withLatestFrom(this.dateRangeState$$),\n map(([newSelectedDate, currentDateRangeState]) => {\n const newDate = newSelectedDate.date;\n const currentStart = currentDateRangeState.dateRange.start;\n const newDateRangeState: DateRangeState = {\n selectionState: DateRangeSelectionState.NothingSelected,\n dateRange: { start: null, end: null },\n };\n\n if (newSelectedDate.options.skipDaterangeUpdate) {\n return currentDateRangeState;\n }\n\n if (\n currentStart &&\n newDate &&\n currentDateRangeState.selectionState === DateRangeSelectionState.StartSelected &&\n validateDaterange(currentStart, newDate)\n ) {\n newDateRangeState.dateRange = { start: currentStart, end: newDate };\n newDateRangeState.selectionState = DateRangeSelectionState.EndSelected;\n } else {\n newDateRangeState.dateRange = { start: newDate, end: null };\n newDateRangeState.selectionState = DateRangeSelectionState.StartSelected;\n }\n\n this.dateRangeState$$.next(newDateRangeState);\n if (newSelectedDate.options?.emitOutside) {\n this.outputDateRange$.next(newDateRangeState.dateRange);\n }\n return newDateRangeState;\n }),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)),\n shareReplay({ refCount: true }),\n );\n\n /**\n * Sets the selected date range.\n *\n * @param {DateTypeRange} value - The selected date range.\n */\n public setDateRange(value: DateTypeRange): void {\n deferFn(() => {\n this.calendar.selectDate(value.start);\n this.calendar.selectDate(value.end);\n this.calendar.setActiveDate(value.start);\n });\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { EventManager, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { combineLatest } from 'rxjs';\nimport { injectCalendarConfig } from './calendar.config';\nimport { CalendarService } from './calendar.service';\nimport { CalendarMonthComponent, CalendarYearComponent, CalendarYearsComponent } from './components';\nimport { DaterangeService } from './daterange.service';\nimport { CalendarSelectionMode, CalendarView, DateFilter, DateRange, DateType, DateTypeRange } from './models';\n\n/**\n * A component for selecting a date or date range. It provides a calendar interface for selecting dates and date ranges,\n * and supports various configuration options for customizing the appearance and behavior of the calendar.\n */\n@CSSComponent('calendar')\n@Component({\n selector: 'odx-calendar',\n standalone: true,\n imports: [CoreModule, A11yModule, CalendarMonthComponent, CalendarYearComponent, CalendarYearsComponent],\n templateUrl: './calendar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarService, EventManager, DaterangeService],\n})\nexport class CalendarComponent implements OnChanges {\n private readonly config = injectCalendarConfig();\n protected readonly calendar = inject(CalendarService);\n protected readonly daterange = inject(DaterangeService);\n protected readonly CalendarView = CalendarView;\n\n protected readonly vm$ = combineLatest({\n activeDate: this.calendar.activeDate$,\n calendarView: this.calendar.calendarView$,\n selectedDate: this.calendar.selectedDate$,\n selectedDateRange: this.daterange.dateRangeState$,\n previewDate: this.calendar.previewDate$,\n });\n\n public readonly element = injectElement();\n\n /**\n * Represents the selected date in the calendar component.\n * It can be of type `DateType` or `null` if no date is selected.\n *\n * @type {DateType | null}\n * @default null\n */\n @Input()\n public selectedDate: DateType | null = null;\n\n /**\n * Represents the selected date range in the calendar component.\n * It can be of type `DateTypeRange` or `null` if no date range is selected.\n *\n * @type {DateTypeRange | null}\n * @default null\n */\n @Input()\n public selectedDateRange?: DateTypeRange | null = null;\n\n /**\n * The minimum selectable date for the calendar component.\n * If set to null, there is no minimum date restriction.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public minDate?: Date | null = null;\n\n /**\n * The maximum selectable date for the calendar component.\n * If set to null, there is no maximum date restriction.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public maxDate?: Date | null = null;\n\n /**\n * The filter function used to determine which dates are selectable in the calendar.\n * If set to `null`, all dates will be selectable.\n *\n * @type {DateFilter | null}\n * @default null\n *\n * @example\n * ```ts\n * // Filter out weekends\n * const filterFn: DateFilter = (date) => date.getDay() !== 0 && date.getDay() !== 6;\n * ```\n */\n @Input()\n public filterFn?: DateFilter | null = null;\n\n /**\n * Emits an event whenever the selected date changes.\n * The event payload is either a Date object representing the selected date or null\n * if no date is selected.\n *\n * @emits {Date | null}\n */\n @Output()\n public selectedDateChange: EventEmitter<Date | null>;\n\n /**\n * Emits an event whenever the selected date range changes.\n * The event payload is either a DateRange object representing the selected date range\n * or null if no date range is selected.\n *\n * @emits {DateRange | null}\n */\n @Output()\n public selectedDateRangeChange: EventEmitter<DateRange | null>;\n\n constructor() {\n this.selectedDateChange = this.calendar.outputDate$;\n this.selectedDateRangeChange = this.daterange.outputDateRange$;\n }\n\n public ngOnChanges(changes: NgChanges<CalendarComponent>): void {\n if (hasChanged(changes, 'selectedDate', false)) {\n this.calendar.selectDate(this.selectedDate, { skipDaterangeUpdate: true });\n }\n\n if (this.selectedDateRange && hasChanged(changes, 'selectedDateRange', false) && this.config.selectionMode === CalendarSelectionMode.DateRange) {\n this.daterange.setDateRange(this.selectedDateRange);\n }\n }\n}\n","@if (vm$ | async; as vm) {\n @switch (vm.calendarView) {\n @case (CalendarView.Year) {\n <odx-calendar-year\n [activeDate]=\"vm.activeDate\"\n [selectedDate]=\"vm.selectedDate\"\n [selectedDateRange]=\"vm.selectedDateRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [filterFn]=\"filterFn\"\n />\n }\n @case (CalendarView.Years) {\n <odx-calendar-years\n [activeDate]=\"vm.activeDate\"\n [selectedDate]=\"vm.selectedDate\"\n [selectedDateRange]=\"vm.selectedDateRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [filterFn]=\"filterFn\"\n />\n }\n @default {\n <odx-calendar-month\n [activeDate]=\"vm.activeDate\"\n [selectedDate]=\"vm.selectedDate\"\n [selectedDateRange]=\"vm.selectedDateRange\"\n [previewDate]=\"vm.previewDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [filterFn]=\"filterFn\"\n />\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["dateValidators","isNonNullable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-calendar.mjs","sources":["../../../../libs/angular/components/calendar/src/lib/models/selection-mode.ts","../../../../libs/angular/components/calendar/src/lib/calendar.config.ts","../../../../libs/angular/components/calendar/src/lib/models/calendar-view.ts","../../../../libs/angular/components/calendar/src/lib/models/date-range.ts","../../../../libs/angular/components/calendar/src/lib/models/selected-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/check-identical-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/get-A11y-label.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-max-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-min-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/is-date-disabled.ts","../../../../libs/angular/components/calendar/src/lib/utils/parse-date.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-daterange.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-next-date-set.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-previous-date-set.ts","../../../../libs/angular/components/calendar/src/lib/calendar.service.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-header/calendar-header.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-header/calendar-header.component.html","../../../../libs/angular/components/calendar/src/lib/pipes/date-label.pipe.ts","../../../../libs/angular/components/calendar/src/lib/utils/check-cell-in-range.ts","../../../../libs/angular/components/calendar/src/lib/directives/calendar-cell.directive.ts","../../../../libs/angular/components/calendar/src/lib/directives/calendar-view.directive.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar-month.service.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar-year.service.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar-years.service.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-month/calendar-month.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-month/calendar-month.component.html","../../../../libs/angular/components/calendar/src/lib/components/calendar-year/calendar-year.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-year/calendar-year.component.html","../../../../libs/angular/components/calendar/src/lib/components/calendar-years/calendar-years.component.ts","../../../../libs/angular/components/calendar/src/lib/components/calendar-years/calendar-years.component.html","../../../../libs/angular/components/calendar/src/lib/daterange.service.ts","../../../../libs/angular/components/calendar/src/lib/calendar.component.ts","../../../../libs/angular/components/calendar/src/lib/calendar.component.html","../../../../libs/angular/components/calendar/src/odx-angular-components-calendar.ts"],"sourcesContent":["export enum CalendarSelectionMode {\n Date,\n DateRange,\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { CalendarSelectionMode } from './models/selection-mode';\n\nexport interface CalendarConfig {\n /**\n * Displays the adjacent days in month calendar view.\n *\n * @default true\n */\n displayAdjacentDays: boolean;\n /**\n * Switches between single selection and a daterange selection.\n *\n * @default CalendarSelectionMode.Date\n */\n selectionMode: CalendarSelectionMode;\n\n /**\n * Configuration for the year view.\n *\n * @typedef {Object} YearViewConfig\n * @property {number} itemsPerRow - Number of items to display per row in the year view.\n * @default 3\n */\n /**\n * Configuration options for the calendar's year view.\n *\n * @type {YearViewConfig}\n */\n yearView: { itemsPerRow: number };\n /**\n * Configuration for the years view.\n *\n * @typedef {Object} YearsViewConfig\n * @property {number} itemsPerRow - Number of items to display per row in the years view.\n * @property {number} [padding=100] - The number of year items before and after the current year\n * @default\n * itemsPerRow: 3,\n * padding: 100\n */\n /**\n * Configuration options for the calendar's years view.\n *\n * @type {YearsViewConfig}\n */\n yearsView: { itemsPerRow: number; padding: number };\n}\n\n/**\n * Tools for customizing configuration for the calendar component\n *\n * @example\n * ```ts\n * @Component({\n * ...\n * providers: [provideCalendarConfig({ selectionMode: CalendarSelectionMode.DateRange, locale: new BehaviorSubject<Locale>(deDE)})]\n * })\n * export class MyDateRangepickerComponent {}\n * ```\n *\n * @example\n * ```ts\n * constructor(@Inject(CalendarConfig) private readonly calendarConfig: CalendarConfig) {}\n * ```\n */\nexport const { CalendarConfig, CalendarDefaultConfig, injectCalendarConfig, provideCalendarConfig } = createConfigTokens(\n 'Calendar',\n '@odx/angular/components/calendar',\n {\n displayAdjacentDays: true,\n selectionMode: CalendarSelectionMode.Date,\n yearView: {\n itemsPerRow: 3,\n },\n yearsView: {\n itemsPerRow: 3,\n padding: 100,\n },\n },\n);\n","export enum CalendarView {\n Month = 'month',\n Year = 'year',\n Years = 'years',\n}\n","import { DateType } from './date-type';\n\nexport interface DateTypeRange {\n start: DateType | null;\n end: DateType | null;\n}\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport enum DateRangeSelectionState {\n NothingSelected = 'NothingSelected',\n StartSelected = 'StartSelected',\n EndSelected = 'EndSelected',\n}\n\nexport interface DateRangeState {\n selectionState: DateRangeSelectionState;\n dateRange: DateRange;\n}\n","export interface DateSelectEvent {\n date: Date | null;\n options: DateSelectOptions;\n}\n\nexport interface DateSelectOptions {\n skipDaterangeUpdate?: boolean;\n emitOutside?: boolean;\n}\n\nexport const dateSelectOptionsDefaults: DateSelectOptions = {\n skipDaterangeUpdate: false,\n emitOutside: false,\n};\n","import { isSameDay, isSameMonth, isSameYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (currentDate: Date, date: Date) => isSameDay(currentDate, date),\n [CalendarView.Year]: (currentDate: Date, date: Date) => isSameMonth(currentDate, date),\n [CalendarView.Years]: (currentDate: Date, date: Date) => isSameYear(currentDate, date),\n};\n\n/** @internal */\nexport function checkIdenticalDate(currentDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](currentDate, date);\n}\n","import { CalendarView } from '../models';\n\n/** @internal */\nexport function getA11yLabel(calendarView: CalendarView): Intl.DateTimeFormatOptions {\n switch (calendarView) {\n case CalendarView.Year:\n return { month: 'long', year: 'numeric' };\n\n case CalendarView.Years:\n return { year: 'numeric' };\n\n default:\n return { month: 'long', day: '2-digit', year: 'numeric' };\n }\n}\n","import { endOfDay, endOfMonth, endOfYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (maxDate: Date, date: Date) => endOfDay(maxDate) < endOfDay(date),\n [CalendarView.Year]: (maxDate: Date, date: Date) => endOfMonth(maxDate) < endOfMonth(date),\n [CalendarView.Years]: (maxDate: Date, date: Date) => endOfYear(maxDate) < endOfYear(date),\n};\n\n/** @internal */\nexport function validateMaxDate(maxDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](maxDate, date);\n}\n","import { startOfDay, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (minDate: Date, date: Date) => startOfDay(minDate) > startOfDay(date),\n [CalendarView.Year]: (minDate: Date, date: Date) => startOfMonth(minDate) > startOfMonth(date),\n [CalendarView.Years]: (minDate: Date, date: Date) => startOfYear(minDate) > startOfYear(date),\n};\n\n/** @internal */\nexport function validateMinDate(maxDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](maxDate, date);\n}\n","import { CalendarView, DateFilter } from '../models';\nimport { validateMaxDate } from './validate-max-date';\nimport { validateMinDate } from './validate-min-date';\n\n/** @internal */\nexport function isDateDisabled(date: Date, calendarView: CalendarView, minDate?: Date | null, maxDate?: Date | null, filterFn?: DateFilter | null): boolean {\n const minDateValidation = minDate && validateMinDate(minDate, date, calendarView);\n const maxDateValidation = maxDate && validateMaxDate(maxDate, date, calendarView);\n const isDateFiltered = calendarView === CalendarView.Month && !!filterFn?.(date);\n\n return minDateValidation || maxDateValidation || isDateFiltered;\n}\n","import { isString } from '@odx/angular/utils';\nimport { isValid, toDate } from 'date-fns';\nimport { DateType } from '../models';\n\n/** @internal */\nexport function parseDate(value: DateType): Date {\n try {\n const timestamp = isString(value) ? Date.parse(value) : value;\n\n if (!isValid(timestamp)) {\n return new Date();\n }\n\n return toDate(timestamp);\n } catch {\n return new Date();\n }\n}\n","import { isBefore, isEqual } from 'date-fns';\n\n/** @internal */\nexport function validateDaterange(start: Date, end: Date): boolean {\n return isBefore(start, end) || isEqual(start, end);\n}\n","import { addMonths, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (maxDate: Date, date: Date) => maxDate < startOfMonth(addMonths(date, 1)),\n [CalendarView.Year]: (maxDate: Date, date: Date) => maxDate < startOfYear(addMonths(date, 12)),\n [CalendarView.Years]: () => false,\n};\n\n/** @internal */\nexport function validateNextDateSet(maxDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](maxDate, date);\n}\n","import { endOfMonth, endOfYear, subMonths } from 'date-fns';\nimport { CalendarView, DateValidator } from '../models';\n\nconst dateValidators: Record<CalendarView, DateValidator> = {\n [CalendarView.Month]: (minDate: Date, date: Date) => minDate > endOfMonth(subMonths(date, 1)),\n [CalendarView.Year]: (minDate: Date, date: Date) => minDate > endOfYear(subMonths(date, 12)),\n [CalendarView.Years]: () => false,\n};\n\n/** @internal */\nexport function validatePreviousDateSet(minDate: Date, date: Date, calendarView: CalendarView): boolean {\n return dateValidators[calendarView](minDate, date);\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { isPresent as isNonNullable } from '@odx/angular/utils';\nimport { isEqual, startOfDay } from 'date-fns';\nimport { BehaviorSubject, distinctUntilChanged, filter, map, merge, shareReplay } from 'rxjs';\nimport { CalendarView, DateSelectEvent, DateSelectOptions, DateType, dateSelectOptionsDefaults } from './models';\nimport { parseDate } from './utils';\n\n/**\n * Manages the state and functionality related to a calendar, such as tracking the active date,\n * hovered date, current calendar view, and handling date selections. It provides observable streams\n * that components can subscribe to in order to react to changes in the calendar's state.\n */\n@Injectable()\nexport class CalendarService {\n private readonly activeDate$$ = new BehaviorSubject<Date | null>(null); // the date that is being focused by click or arrow keys\n private readonly hoveredDate$$ = new BehaviorSubject<Date | null>(null); // the date that is being hovered by a pointing device\n private readonly calendarView$$ = new BehaviorSubject<CalendarView>(CalendarView.Month);\n private readonly dateSelectEvents$$ = new BehaviorSubject<DateSelectEvent>({\n date: null,\n options: dateSelectOptionsDefaults,\n });\n\n /**\n * Currently selected date to external subscribers, particularly useful for two-way binding.\n *\n * @emits {Date | null} The currently selected date or null if no date is selected.\n */\n public readonly outputDate$ = new EventEmitter<Date | null>();\n\n /**\n * An observable of the current calendar view state, allowing subscribers to adjust UI components\n * based on the view (e.g., month, year, multi-year).\n *\n * @emits {CalendarView} The current calendar view state.\n */\n public readonly calendarView$ = this.calendarView$$.pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Streams date select events which include the selected date and any associated options.\n *\n * @emits {DateSelectEvent} The date selection event, including the selected date and options.\n */\n public readonly dateSelectEvents$ = this.dateSelectEvents$$.asObservable();\n\n /**\n * Streams the last selected date, enabling components to update based on the latest date selection.\n *\n * @emits {Date | null} The last selected date or null if no date has been selected.\n */\n public readonly selectedDate$ = this.dateSelectEvents$$.pipe(\n map((x) => x.date),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Streams the active date which reflects the date that is being focused, either through UI interactions\n * like clicking or using arrow keys.\n *\n * @emits {Date | null} The active date or null if no date is active.\n */\n public readonly activeDate$ = this.activeDate$$.pipe(\n filter(Boolean),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Combines streams of active and hovered dates to provide a merged view of preview dates.\n *\n * @emits {Date | null} The preview date or null if no date is being previewed.\n */\n public readonly previewDate$ = merge(this.activeDate$$, this.hoveredDate$$).pipe(\n filter(Boolean),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Updates the active date state with a new date, parsed from various input types.\n *\n * @param {DateType | null} value - The new date or null to clear the active date.\n */\n public setActiveDate(value: DateType | null): void {\n if (!isNonNullable(value)) return;\n this.activeDate$$.next(parseDate(value));\n }\n\n /**\n * Sets a date as hovered, which can be used to preview date ranges or effects in the UI.\n *\n * @param {DateType | null} value - The date being hovered or null to clear the hovered state.\n */\n public setHoveredDate(value: DateType | null): void {\n if (!isNonNullable(value)) return;\n this.hoveredDate$$.next(parseDate(value));\n }\n\n /**\n * Selects a date and updates relevant states and options. Can emit the selected date externally\n * if specified in the options.\n *\n * @param {DateType | null} value - The date to select.\n * @param {DateSelectOptions} [options] - Optional settings for the date selection, such as whether\n * to emit the date change externally.\n */\n public selectDate(value: DateType | null, options?: DateSelectOptions): void {\n const date = isNonNullable(value) ? startOfDay(parseDate(value)) : null;\n this.dateSelectEvents$$.next({ date, options: { ...dateSelectOptionsDefaults, ...options } });\n if (options?.emitOutside) {\n this.outputDate$.next(date);\n }\n this.setActiveDate(date);\n }\n\n /**\n * Changes the calendar view to the specified view, updating the internal state and notifying subscribers.\n *\n * @param {CalendarView} view - The new view to set for the calendar.\n */\n public changeView(view: CalendarView): void {\n this.calendarView$$.next(view);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { NgChanges, hasChanged, injectElement } from '@odx/angular/utils';\nimport { CalendarView } from '../../models';\nimport { validateNextDateSet, validatePreviousDateSet } from '../../utils';\n\n/**\n * Represents the header component of the calendar.\n */\n@CSSComponent('calendar-header')\n@Component({\n selector: 'odx-calendar-header',\n standalone: true,\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent],\n templateUrl: './calendar-header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CalendarHeaderComponent implements OnChanges {\n protected isPreviousDisabled = false;\n protected isNextDisabled = false;\n\n public readonly element = injectElement();\n\n /**\n * The active date of the calendar.\n *\n * @type {Date}\n */\n @Input()\n public activeDate!: Date;\n\n /**\n * The current view of the calendar.\n *\n * @type {CalendarView}\n */\n @Input()\n public calendarView!: CalendarView;\n\n /**\n * The minimum selectable date in the calendar.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public minDate?: Date | null = null;\n\n /**\n * The maximum selectable date in the calendar.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public maxDate?: Date | null = null;\n\n /**\n * Event emitted when the previous button is clicked.\n *\n * @emits {MouseEvent}\n */\n @Output()\n public previous = new EventEmitter<MouseEvent>();\n\n /**\n * Event emitted when the next button is clicked.\n *\n * @emits {MouseEvent}\n */\n @Output()\n public next = new EventEmitter<MouseEvent>();\n\n /**\n * Event emitted when the view is changed.\n *\n * @emits {void}\n */\n @Output()\n public changeView = new EventEmitter<void>();\n\n public ngOnChanges(changes: NgChanges<CalendarHeaderComponent>): void {\n if (hasChanged(changes, ['activeDate', 'calendarView', 'minDate', 'maxDate'], false)) {\n this.isPreviousDisabled = this.minDate ? validatePreviousDateSet(this.minDate, this.activeDate, this.calendarView) : false;\n this.isNextDisabled = this.maxDate ? validateNextDateSet(this.maxDate, this.activeDate, this.calendarView) : false;\n }\n }\n\n protected previousClicked(event: MouseEvent): void {\n if (this.isPreviousDisabled) return;\n this.previous.emit(event);\n }\n\n protected nextClicked(event: MouseEvent): void {\n if (this.isNextDisabled) return;\n this.next.emit(event);\n }\n}\n","<odx-action-group>\n <button odxButton [disabled]=\"isPreviousDisabled\" (click)=\"previousClicked($event)\"><odx-icon name=\"chevron-left\" /></button>\n\n <button odxButton class=\"odx-calendar-header__title\" (click)=\"changeView.emit()\">\n <ng-content />\n </button>\n\n <button odxButton [disabled]=\"isNextDisabled\" (click)=\"nextClicked($event)\"><odx-icon name=\"chevron-right\" /></button>\n</odx-action-group>\n","import { ChangeDetectorRef, Pipe, PipeTransform, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { fastDeepEqual } from '@odx/angular/internal';\nimport { LocalizationService } from '@odx/angular/localization';\n\n/**\n * Transforms a given date into a formatted string based on the provided date format string.\n * The transformation utilizes the `format` function from date-fns library and considers the locale\n * from the global calendar configuration to ensure the date is represented in a locale-appropriate format.\n *\n * @param {Date | null} value - The date to format.\n * @param {Intl.DateTimeFormatOptions} formatOptions - The format options to apply to the date.\n * @returns {string} - The formatted date string.\n */\n@Pipe({\n standalone: true,\n name: 'odxDateLabel',\n pure: false,\n})\nexport class DateLabelPipe implements PipeTransform {\n private readonly localizationService = inject(LocalizationService);\n private readonly windowRef = inject(WindowRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private lastValue: Date | null = null;\n private lastFormatOptions: Intl.DateTimeFormatOptions | null = null;\n private formattedValue = '';\n\n public transform(value: Date | null, formatOptions: Intl.DateTimeFormatOptions): string {\n if (!value) return '';\n\n if (value === this.lastValue && fastDeepEqual(formatOptions, this.lastFormatOptions)) {\n return this.formattedValue;\n }\n\n this.formattedValue = this.windowRef.nativeWindow.Intl.DateTimeFormat(this.localizationService.getActiveLanguage(), formatOptions).format(value);\n this.lastValue = value;\n this.lastFormatOptions = formatOptions;\n this.cdr.markForCheck();\n\n return this.formattedValue;\n }\n}\n","import { isSameDay, isWithinInterval } from 'date-fns';\nimport { CalendarView, DateRange, DateRangeSelectionState, DateRangeState } from '../models';\nimport { validateDaterange } from './validate-daterange';\nexport interface DateRangeValidationInfo {\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n}\n\n/** @internal */\nexport function checkCellInRange(\n date: Date,\n dateRangeState: DateRangeState,\n calendarView: CalendarView,\n targetSelectionState: DateRangeSelectionState,\n): DateRangeValidationInfo {\n const { start, end } = dateRangeState.dateRange;\n\n if (calendarView !== CalendarView.Month || dateRangeState.selectionState !== targetSelectionState || (start && end && !validateDaterange(start, end))) {\n return {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n };\n }\n const isRangeStart = start ? isSameDay(date, start) : false;\n const isRangeEnd = end ? isSameDay(date, end) : false;\n return {\n isRangeStart,\n isRangeEnd,\n isInRange: isRangeEnd || isRangeStart || isWithinInclusiveRange(date, { start, end }),\n };\n}\n\nfunction isWithinInclusiveRange(date: Date, dateRange: DateRange): boolean {\n const { start, end } = dateRange;\n if (!start || !end) {\n return false;\n }\n\n return isWithinInterval(date, { start, end });\n}\n","import { Directive, inject, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { DisabledController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { deferFn, EventManager, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { isSameMonth } from 'date-fns';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarService } from '../calendar.service';\nimport { CalendarSelectionMode, CalendarView, DateRangeSelectionState, DateRangeState } from '../models';\nimport { DateLabelPipe } from '../pipes';\nimport { checkIdenticalDate, getA11yLabel } from '../utils';\nimport { checkCellInRange } from '../utils/check-cell-in-range';\n\n/**\n * Represents a directive for a cell in the calendar view.\n */\n@CSSComponent('calendar-cell')\n@Directive({\n selector: '[odxCalendarCell]',\n standalone: true,\n providers: [DisabledController.connect(), DateLabelPipe],\n host: {\n '[class.is-disabled]': 'isDisabled',\n '[class.is-selected]': 'isSelected',\n '[class.is-in-any-range]': 'isInRange || isInPreviewRange',\n '[attr.hidden]': 'isHidden || null',\n '[tabindex]': 'isActive ? 0 : -1',\n '[attr.aria-label]': 'ariaLabel',\n '[attr.aria-disabled]': 'isDisabled',\n '[attr.type]': '\"button\"',\n },\n})\nexport class CalendarCellDirective implements OnChanges, OnInit, OnDestroy {\n private readonly disabledController = DisabledController.inject();\n\n private readonly eventManager = inject(EventManager);\n private readonly calendarService = inject(CalendarService);\n private registeredEventId = '';\n\n protected readonly config = injectCalendarConfig();\n protected readonly dateLabelPipe = inject(DateLabelPipe);\n protected isActive = false;\n protected isSelected = false;\n protected isHidden = false;\n protected ariaLabel = '';\n\n protected get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n @CSSModifier()\n protected isCurrent = false;\n\n @CSSModifier()\n protected adjacent = false;\n\n @CSSModifier()\n protected isInRange = false;\n\n @CSSModifier()\n protected isRangeStart = false;\n\n @CSSModifier()\n protected isRangeEnd = false;\n\n @CSSModifier()\n protected isInPreviewRange = false;\n\n @CSSModifier()\n protected isPreviewRangeStart = false;\n\n @CSSModifier()\n protected isPreviewRangeEnd = false;\n\n public readonly element = injectElement();\n\n /**\n * Represents the date associated with a calendar cell.\n * The date is used to determine the date displayed in the cell.\n *\n * @type {Date}\n */\n @Input('odxCalendarCell')\n public date!: Date;\n\n /**\n * Represents the calendar view of the cell.\n * The calendar view determines how the cell is displayed in the calendar.\n *\n * @type {CalendarView}\n */\n @Input('odxCalendarCellCalendarView')\n public calendarView!: CalendarView;\n\n /**\n * Represents the active date in the calendar view.\n *\n * @type {Date | null}\n * @default null\n */\n @Input('odxCalendarCellActiveDate')\n public activeDate: Date | null = null;\n\n /**\n * Represents the selected date in the calendar view.\n *\n * @type {Date | null}\n * @default null\n */\n @Input('odxCalendarCellSelectedDate')\n public selectedDate?: Date | null = null;\n\n /**\n * Represents the selected date range in the calendar view.\n *\n * @type {DateRangeState | null}\n * @default null\n */\n @Input('odxCalendarCellSelectedDateRange')\n public selectedDateRange?: DateRangeState | null = null;\n\n /**\n * Represents the preview date for the calendar view.\n * This property represents the date that is currently being previewed in the calendar view.\n * It can be set to a specific date or null if no date is being previewed.\n *\n * @type {Date | null}\n * @default null\n */\n @Input('odxCalendarCellPreviewDate')\n public previewDate?: Date | null = null;\n\n public ngOnChanges(changes: NgChanges<CalendarCellDirective>): void {\n if (hasChanged(changes, ['date', 'calendarView'], false)) {\n this.ariaLabel = this.dateLabelPipe.transform(this.date, getA11yLabel(this.calendarView));\n this.isCurrent = checkIdenticalDate(this.date, new Date(), this.calendarView);\n }\n\n if (this.activeDate && hasChanged(changes, ['date', 'activeDate'], false)) {\n this.isActive = checkIdenticalDate(this.date, this.activeDate, this.calendarView);\n if (this.calendarView === CalendarView.Month) {\n this.adjacent = !isSameMonth(this.date, this.activeDate);\n this.isHidden = this.adjacent && !this.config.displayAdjacentDays;\n }\n }\n\n if (this.selectedDate && hasChanged(changes, ['date', 'selectedDate'], false)) {\n this.isSelected = checkIdenticalDate(this.date, this.selectedDate, this.calendarView);\n }\n\n if (this.config.selectionMode === CalendarSelectionMode.DateRange && this.selectedDateRange && hasChanged(changes, ['date', 'selectedDateRange'], false)) {\n const start = this.selectedDateRange.dateRange.start;\n this.isSelected = checkIdenticalDate(this.date, start || new Date(), this.calendarView);\n const rangeValidation = checkCellInRange(this.date, this.selectedDateRange, this.calendarView, DateRangeSelectionState.EndSelected);\n this.isRangeStart = rangeValidation.isRangeStart;\n this.isRangeEnd = rangeValidation.isRangeEnd;\n this.isInRange = rangeValidation.isInRange;\n }\n\n if (\n this.config.selectionMode === CalendarSelectionMode.DateRange &&\n this.previewDate &&\n this.selectedDateRange &&\n hasChanged(changes, ['date', 'selectedDateRange', 'previewDate'])\n ) {\n const previewRange: DateRangeState = {\n selectionState: this.selectedDateRange.selectionState,\n dateRange: { start: this.selectedDateRange.dateRange.start, end: this.previewDate },\n };\n const rangeValidation = checkCellInRange(this.date, previewRange, this.calendarView, DateRangeSelectionState.StartSelected);\n this.isPreviewRangeStart = rangeValidation.isRangeStart;\n this.isPreviewRangeEnd = rangeValidation.isRangeEnd;\n this.isInPreviewRange = rangeValidation.isInRange;\n }\n\n if (this.isActive) {\n deferFn(() => this.element.nativeElement.focus());\n }\n }\n\n public ngOnInit(): void {\n if (this.config.selectionMode === CalendarSelectionMode.DateRange && this.calendarView === CalendarView.Month) {\n this.registerEvents();\n }\n }\n\n public ngOnDestroy(): void {\n this.eventManager.destroyListener(this.registeredEventId);\n }\n\n private registerEvents(): void {\n this.registeredEventId = this.eventManager.register(\n ['mouseover'],\n (event) => {\n event?.preventDefault();\n event?.stopPropagation();\n this.calendarService.setHoveredDate(this.date);\n },\n this.element.nativeElement,\n )[0];\n }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarService } from '../calendar.service';\nimport { CalendarView, DateFilter, DateRangeState } from '../models';\nimport { isDateDisabled } from '../utils';\n\n/**\n * Represents an abstract directive for a calendar view.\n */\n@Directive({\n standalone: true,\n})\nexport abstract class CalendarViewDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly calendar = inject(CalendarService);\n protected readonly config = injectCalendarConfig();\n protected abstract readonly currentView: CalendarView;\n protected abstract readonly nextView: CalendarView;\n\n public readonly element = injectElement();\n\n /**\n * The active date for the calendar view.\n *\n * @type {Date}\n */\n @Input()\n public activeDate!: Date;\n\n /**\n * The selected date in the calendar view.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public selectedDate?: Date | null = null;\n\n /**\n * The selected date range in the calendar view.\n *\n * @type {DateRangeState | null}\n * @default null\n */\n @Input()\n public selectedDateRange?: DateRangeState | null = null;\n\n /**\n * The preview date for the calendar view.\n * This property represents the date that is currently being previewed in the calendar view.\n * It can be set to a specific date or null if no date is being previewed.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public previewDate?: Date | null = null;\n\n /**\n * The minimum selectable date in the calendar view.\n * If set, dates before this minimum date will be disabled for selection.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public minDate?: Date | null = null;\n\n /**\n * The maximum selectable date in the calendar view.\n * If set, dates after this maximum date will be disabled for selection.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public maxDate?: Date | null = null;\n\n /**\n * The filter function used to determine if a date should be displayed in the calendar view.\n * If set to `null`, no filtering will be applied.\n *\n * @type {DateFilter | null}\n * @default null\n *\n * @remarks\n * The filter function should accept a `Date` object as its parameter and return a boolean value.\n * If the function returns `true`, the date will be displayed; if it returns `false`, the date will be hidden.\n *\n * @example\n * ```ts\n * // Filter out weekends\n * const filterFn: DateFilter = (date) => date.getDay() !== 0 && date.getDay() !== 6;\n * ```\n */\n @Input()\n public filterFn?: DateFilter | null = null;\n\n protected isDateDisabled(value: Date): boolean {\n return isDateDisabled(value, this.currentView, this.minDate, this.maxDate, this.filterFn);\n }\n\n protected changeView(): void {\n this.calendar.changeView(this.nextView);\n }\n\n protected updateActiveDate(event: Event, date: Date): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.calendar.setActiveDate(date);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { addDays, startOfMonth, startOfWeek } from 'date-fns';\nimport { map } from 'rxjs';\nimport { CalendarService } from '../calendar.service';\n\n/** @internal */\n@Injectable()\nexport class CalendarMonthService {\n private readonly calendar = inject(CalendarService);\n private readonly weeksInView = 6;\n\n public readonly weekDays$ = this.calendar.activeDate$.pipe(map((date) => this.generateWeekDays(date)));\n public readonly weeks$ = this.calendar.activeDate$.pipe(map((date) => this.generateWeeks(date)));\n\n private generateWeekDays(date: Date): Date[] {\n const firstWeekDay = startOfWeek(date, { weekStartsOn: 1 });\n return Array.from({ length: 7 }, (_, i) => addDays(firstWeekDay, i));\n }\n\n private generateWeeks(date: Date): Date[][] {\n const startOfTheSelectedMonth = startOfMonth(date);\n const startDate = startOfWeek(startOfTheSelectedMonth, { weekStartsOn: 1 });\n const allWeeks = [];\n\n let currentDate = startDate;\n\n for (let i = this.weeksInView; i > 0; i--) {\n allWeeks.push(this.generateDaysForWeek(currentDate, date));\n currentDate = addDays(currentDate, 7);\n }\n\n return allWeeks;\n }\n\n private generateDaysForWeek(date: Date, currentDate: Date): Date[] {\n return Array.from({ length: 7 }).map((_, i) => addDays(date, i), currentDate);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { eachMonthOfInterval, endOfYear, startOfYear } from 'date-fns';\nimport { map } from 'rxjs';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarService } from '../calendar.service';\n\n/** @internal */\n@Injectable()\nexport class CalendarYearService {\n private readonly config = injectCalendarConfig();\n private readonly calendar = inject(CalendarService);\n\n public readonly seasons$ = this.calendar.activeDate$.pipe(map((selectedDate) => this.generateSeasons(selectedDate)));\n\n private generateSeasons(date: Date): Date[][] {\n const { itemsPerRow } = this.config.yearView;\n const seasons = [];\n const months = eachMonthOfInterval({\n start: startOfYear(date),\n end: endOfYear(date),\n });\n\n let index = 0;\n while (index < months.length) {\n seasons.push(months.slice(index, index + itemsPerRow));\n index += itemsPerRow;\n }\n\n return seasons;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { addYears, getYear, setYear, startOfYear } from 'date-fns';\nimport { defer, of } from 'rxjs';\nimport { injectCalendarConfig } from '../calendar.config';\n\n/** @internal */\n@Injectable()\nexport class CalendarYearsService {\n private readonly config = injectCalendarConfig();\n\n public readonly years$ = defer(() => of(this.generateYears()));\n\n private generateYears(): Date[][] {\n const { itemsPerRow, padding } = this.config.yearsView;\n const now = Date.now();\n const startDate = startOfYear(addYears(now, -padding));\n const startYear = getYear(startDate);\n const endDate = startOfYear(addYears(now, padding));\n const endYear = getYear(endDate);\n\n const years: Date[] = [];\n const yearRows: Date[][] = [];\n\n for (let i = startYear; i <= endYear; i++) {\n years.push(setYear(startDate, i));\n }\n\n let index = 0;\n while (index < years.length) {\n yearRows.push(years.slice(index, index + itemsPerRow));\n index += itemsPerRow;\n }\n\n return yearRows;\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { addDays, addMonths, addWeeks, subDays, subMonths, subWeeks } from 'date-fns';\nimport { CalendarCellDirective, CalendarViewDirective } from '../../directives';\nimport { CalendarView } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarMonthService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\n\n/**\n * Represents a calendar month component.\n * This component extends the `CalendarViewDirective` class and provides functionality for managing the calendar month.\n *\n * @see {CalendarViewDirective}\n */\n@CSSComponent('calendar-month')\n@Component({\n selector: 'odx-calendar-month',\n standalone: true,\n imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe],\n templateUrl: './calendar-month.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarMonthService],\n})\nexport class CalendarMonthComponent extends CalendarViewDirective {\n protected readonly calendarMonth = inject(CalendarMonthService);\n protected readonly nextView = CalendarView.Years;\n protected readonly currentView = CalendarView.Month;\n protected previousDay(event: Event): void {\n this.updateActiveDate(event, subDays(this.activeDate, 1));\n }\n\n protected nextDay(event: Event): void {\n this.updateActiveDate(event, addDays(this.activeDate, 1));\n }\n\n protected previousWeek(event: Event): void {\n this.updateActiveDate(event, subWeeks(this.activeDate, 1));\n }\n\n protected nextWeek(event: Event): void {\n this.updateActiveDate(event, addWeeks(this.activeDate, 1));\n }\n\n protected previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n protected nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n protected selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n this.calendar.selectDate(value, { emitOutside: true });\n }\n}\n","<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"7\">\n <odx-calendar-header\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (previous)=\"previousMonth($event)\"\n (next)=\"nextMonth($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { month: 'long', year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n\n <tr class=\"odx-calendar__weekdays\">\n @for (day of calendarMonth.weekDays$ | async; track $index) {\n <td>\n {{ (day | odxDateLabel: { weekday: 'short' }).charAt(0) }}\n </td>\n }\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousDay($event)\"\n (keydown.ArrowRight)=\"nextDay($event)\"\n (keydown.ArrowUp)=\"previousWeek($event)\"\n (keydown.ArrowDown)=\"nextWeek($event)\"\n (keydown.PageUp)=\"previousMonth($event)\"\n (keydown.PageDown)=\"nextMonth($event)\"\n >\n @for (week of calendarMonth.weeks$ | async; track $index) {\n <tr>\n @for (day of week; track $index) {\n <td role=\"gridcell\">\n <button\n [disabled]=\"isDateDisabled(day)\"\n [odxCalendarCell]=\"day\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n [odxCalendarCellPreviewDate]=\"previewDate\"\n (click)=\"selectDate(day)\"\n >\n {{ day | odxDateLabel: { day: 'numeric' } }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { addMonths, getMonth, setMonth, subMonths } from 'date-fns';\nimport { CalendarCellDirective, CalendarViewDirective } from '../../directives';\nimport { CalendarView } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\n\n/**\n * Represents a component for displaying a calendar year view.\n * Extends the `CalendarViewDirective` class.\n *\n * @see {CalendarViewDirective}\n */\n@CSSComponent('calendar-year')\n@Component({\n selector: 'odx-calendar-year',\n standalone: true,\n imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe],\n templateUrl: './calendar-year.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarYearService],\n})\nexport class CalendarYearComponent extends CalendarViewDirective {\n protected readonly calendarYear = inject(CalendarYearService);\n protected readonly nextView = CalendarView.Month;\n protected readonly currentView = CalendarView.Year;\n\n protected previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n protected nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n protected previousSeason(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 3));\n }\n\n protected nextSeason(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 3));\n }\n\n protected previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n protected nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n protected selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setMonth(this.activeDate, getMonth(value));\n this.calendar.selectDate(date, { skipDaterangeUpdate: true });\n\n this.changeView();\n }\n}\n","<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"3\">\n <odx-calendar-header\n (previous)=\"previousYear($event)\"\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (next)=\"nextYear($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousMonth($event)\"\n (keydown.ArrowRight)=\"nextMonth($event)\"\n (keydown.ArrowUp)=\"previousSeason($event)\"\n (keydown.ArrowDown)=\"nextSeason($event)\"\n (keydown.PageDown)=\"nextYear($event)\"\n (keydown.PageUp)=\"previousYear($event)\"\n >\n @for (season of calendarYear.seasons$ | async; track $index) {\n <tr class=\"odx-calendar__season\">\n @for (month of season; track $index) {\n <td role=\"gridcell\">\n <button\n [disabled]=\"isDateDisabled(month)\"\n [odxCalendarCell]=\"month\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(month)\"\n >\n {{ month | odxDateLabel: { month: 'short' } }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { deferFn, isFunction } from '@odx/angular/utils';\nimport { addMonths, getYear, setYear, subMonths } from 'date-fns';\nimport { CalendarCellDirective, CalendarViewDirective } from '../../directives';\nimport { CalendarView } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearsService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\n\n/**\n * Represents the component for displaying the years view in a calendar.\n * Extends the `CalendarViewDirective` class and implements the `AfterViewInit` interface.\n *\n * @see {CalendarViewDirective}\n */\n@CSSComponent('calendar-years')\n@Component({\n selector: 'odx-calendar-years',\n standalone: true,\n imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe],\n templateUrl: './calendar-years.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarYearsService],\n})\nexport class CalendarYearsComponent extends CalendarViewDirective implements AfterViewInit {\n private readonly document = inject(DOCUMENT);\n\n protected readonly calendarYears = inject(CalendarYearsService);\n protected readonly nextView = CalendarView.Year;\n protected readonly currentView = CalendarView.Years;\n\n public ngAfterViewInit(): void {\n deferFn(() => this.scrollCurrentYearIntoView());\n }\n\n protected previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n protected nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n protected previousRow(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12 * 3));\n }\n\n protected nextRow(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12 * 3));\n }\n\n protected selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setYear(this.activeDate, getYear(value));\n this.calendar.selectDate(date, { skipDaterangeUpdate: true });\n\n this.changeView();\n }\n\n private scrollCurrentYearIntoView(): void {\n const selectedYear = this.document.querySelector('.odx-calendar-cell.is-selected');\n const currentYear = this.document.querySelector('.odx-calendar-cell--is-current');\n\n const element = selectedYear || currentYear;\n\n if (element && isFunction(element.scrollIntoView)) {\n element.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n }\n}\n","<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead aria-hidden=\"true\">\n <th></th>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousYear($event)\"\n (keydown.ArrowRight)=\"nextYear($event)\"\n (keydown.ArrowUp)=\"previousRow($event)\"\n (keydown.ArrowDown)=\"nextRow($event)\"\n >\n @for (yearRow of calendarYears.years$ | async; track $index) {\n <tr class=\"odx-calendar__year-row\">\n @for (year of yearRow; track $index) {\n <td role=\"gridcell\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"calendar.activeDate$ | async\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel: { year: 'numeric' } }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { EventEmitter, Injectable, inject } from '@angular/core';\nimport { deferFn } from '@odx/angular/utils';\nimport { BehaviorSubject, Observable, distinctUntilChanged, filter, map, shareReplay, withLatestFrom } from 'rxjs';\nimport { CalendarService } from './calendar.service';\nimport { DateRange, DateRangeSelectionState, DateSelectEvent, DateTypeRange } from './models';\nimport { DateRangeState } from './models/date-range';\nimport { validateDaterange } from './utils';\n\n/**\n * Service for managing date range selection.\n */\n@Injectable()\nexport class DaterangeService {\n private readonly calendar = inject(CalendarService);\n\n private readonly dateRangeState$$ = new BehaviorSubject<DateRangeState>({\n selectionState: DateRangeSelectionState.NothingSelected,\n dateRange: { start: null, end: null },\n });\n\n /**\n * An event emitter for outputting the selected date range.\n *\n * @emits {DateRange | null} outputDateRange$ - The selected date range or null if no range is selected.\n */\n public readonly outputDateRange$ = new EventEmitter<DateRange | null>();\n\n /**\n * An observable that emits the current date range state.\n * The date range state represents the current selection state and the selected date range.\n *\n * @emits {DateRangeState} dateRangeState$ - The current date range state.\n */\n public readonly dateRangeState$: Observable<DateRangeState> = this.calendar.dateSelectEvents$.pipe(\n filter((newSelectedDate: DateSelectEvent) => Boolean(newSelectedDate.date)),\n withLatestFrom(this.dateRangeState$$),\n map(([newSelectedDate, currentDateRangeState]) => {\n const newDate = newSelectedDate.date;\n const currentStart = currentDateRangeState.dateRange.start;\n const newDateRangeState: DateRangeState = {\n selectionState: DateRangeSelectionState.NothingSelected,\n dateRange: { start: null, end: null },\n };\n\n if (newSelectedDate.options.skipDaterangeUpdate) {\n return currentDateRangeState;\n }\n\n if (\n currentStart &&\n newDate &&\n currentDateRangeState.selectionState === DateRangeSelectionState.StartSelected &&\n validateDaterange(currentStart, newDate)\n ) {\n newDateRangeState.dateRange = { start: currentStart, end: newDate };\n newDateRangeState.selectionState = DateRangeSelectionState.EndSelected;\n } else {\n newDateRangeState.dateRange = { start: newDate, end: null };\n newDateRangeState.selectionState = DateRangeSelectionState.StartSelected;\n }\n\n this.dateRangeState$$.next(newDateRangeState);\n if (newSelectedDate.options?.emitOutside) {\n this.outputDateRange$.next(newDateRangeState.dateRange);\n }\n return newDateRangeState;\n }),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)),\n shareReplay({ refCount: true }),\n );\n\n /**\n * Sets the selected date range.\n *\n * @param {DateTypeRange} value - The selected date range.\n */\n public setDateRange(value: DateTypeRange): void {\n deferFn(() => {\n this.calendar.selectDate(value.start);\n this.calendar.selectDate(value.end);\n this.calendar.setActiveDate(value.start);\n });\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { EventManager, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { combineLatest } from 'rxjs';\nimport { injectCalendarConfig } from './calendar.config';\nimport { CalendarService } from './calendar.service';\nimport { CalendarMonthComponent, CalendarYearComponent, CalendarYearsComponent } from './components';\nimport { DaterangeService } from './daterange.service';\nimport { CalendarSelectionMode, CalendarView, DateFilter, DateRange, DateType, DateTypeRange } from './models';\n\n/**\n * A component for selecting a date or date range. It provides a calendar interface for selecting dates and date ranges,\n * and supports various configuration options for customizing the appearance and behavior of the calendar.\n */\n@CSSComponent('calendar')\n@Component({\n selector: 'odx-calendar',\n standalone: true,\n imports: [CoreModule, A11yModule, CalendarMonthComponent, CalendarYearComponent, CalendarYearsComponent],\n templateUrl: './calendar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [CalendarService, EventManager, DaterangeService],\n})\nexport class CalendarComponent implements OnChanges {\n private readonly config = injectCalendarConfig();\n protected readonly calendar = inject(CalendarService);\n protected readonly daterange = inject(DaterangeService);\n protected readonly CalendarView = CalendarView;\n\n protected readonly vm$ = combineLatest({\n activeDate: this.calendar.activeDate$,\n calendarView: this.calendar.calendarView$,\n selectedDate: this.calendar.selectedDate$,\n selectedDateRange: this.daterange.dateRangeState$,\n previewDate: this.calendar.previewDate$,\n });\n\n public readonly element = injectElement();\n\n /**\n * Represents the selected date in the calendar component.\n * It can be of type `DateType` or `null` if no date is selected.\n *\n * @type {DateType | null}\n * @default null\n */\n @Input()\n public selectedDate: DateType | null = null;\n\n /**\n * Represents the selected date range in the calendar component.\n * It can be of type `DateTypeRange` or `null` if no date range is selected.\n *\n * @type {DateTypeRange | null}\n * @default null\n */\n @Input()\n public selectedDateRange?: DateTypeRange | null = null;\n\n /**\n * The minimum selectable date for the calendar component.\n * If set to null, there is no minimum date restriction.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public minDate?: Date | null = null;\n\n /**\n * The maximum selectable date for the calendar component.\n * If set to null, there is no maximum date restriction.\n *\n * @type {Date | null}\n * @default null\n */\n @Input()\n public maxDate?: Date | null = null;\n\n /**\n * The filter function used to determine which dates are selectable in the calendar.\n * If set to `null`, all dates will be selectable.\n *\n * @type {DateFilter | null}\n * @default null\n *\n * @example\n * ```ts\n * // Filter out weekends\n * const filterFn: DateFilter = (date) => date.getDay() !== 0 && date.getDay() !== 6;\n * ```\n */\n @Input()\n public filterFn?: DateFilter | null = null;\n\n /**\n * Emits an event whenever the selected date changes.\n * The event payload is either a Date object representing the selected date or null\n * if no date is selected.\n *\n * @emits {Date | null}\n */\n @Output()\n public selectedDateChange: EventEmitter<Date | null>;\n\n /**\n * Emits an event whenever the selected date range changes.\n * The event payload is either a DateRange object representing the selected date range\n * or null if no date range is selected.\n *\n * @emits {DateRange | null}\n */\n @Output()\n public selectedDateRangeChange: EventEmitter<DateRange | null>;\n\n constructor() {\n this.selectedDateChange = this.calendar.outputDate$;\n this.selectedDateRangeChange = this.daterange.outputDateRange$;\n }\n\n public ngOnChanges(changes: NgChanges<CalendarComponent>): void {\n if (hasChanged(changes, 'selectedDate', false)) {\n this.calendar.selectDate(this.selectedDate, { skipDaterangeUpdate: true });\n }\n\n if (this.selectedDateRange && hasChanged(changes, 'selectedDateRange', false) && this.config.selectionMode === CalendarSelectionMode.DateRange) {\n this.daterange.setDateRange(this.selectedDateRange);\n }\n }\n}\n","@if (vm$ | async; as vm) {\n @switch (vm.calendarView) {\n @case (CalendarView.Year) {\n <odx-calendar-year\n [activeDate]=\"vm.activeDate\"\n [selectedDate]=\"vm.selectedDate\"\n [selectedDateRange]=\"vm.selectedDateRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [filterFn]=\"filterFn\"\n />\n }\n @case (CalendarView.Years) {\n <odx-calendar-years\n [activeDate]=\"vm.activeDate\"\n [selectedDate]=\"vm.selectedDate\"\n [selectedDateRange]=\"vm.selectedDateRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [filterFn]=\"filterFn\"\n />\n }\n @default {\n <odx-calendar-month\n [activeDate]=\"vm.activeDate\"\n [selectedDate]=\"vm.selectedDate\"\n [selectedDateRange]=\"vm.selectedDateRange\"\n [previewDate]=\"vm.previewDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [filterFn]=\"filterFn\"\n />\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["dateValidators","isNonNullable"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { __decorate, __metadata } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { ViewEncapsulation, ChangeDetectionStrategy, Component, HostBinding, Input, inject, EventEmitter, ElementRef, Output, ContentChild, ViewChild, Directive, NgModule } from '@angular/core';
|
|
4
4
|
import * as i1 from '@odx/angular/cdk/a11y';
|
|
5
5
|
import { InteractiveDirective, A11yModule } from '@odx/angular/cdk/a11y';
|
|
6
6
|
import { ActionGroupComponent } from '@odx/angular/components/action-group';
|
|
7
7
|
import { ButtonComponent } from '@odx/angular/components/button';
|
|
8
8
|
import { IconComponent } from '@odx/angular/components/icon';
|
|
9
9
|
import * as i3 from '@odx/angular/components/menu';
|
|
10
|
-
import {
|
|
10
|
+
import { MenuModule, MenuDirective, MenuComponent } from '@odx/angular/components/menu';
|
|
11
11
|
import { CSSComponent, CSSModifier } from '@odx/angular/internal';
|
|
12
12
|
import { createConfigTokens, injectElement, untilDestroyed, containsElement } from '@odx/angular/utils';
|
|
13
13
|
import { ChipListRowComponent } from '@odx/angular/components/chip';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-card.mjs","sources":["../../../../libs/angular/components/card/src/lib/models/card-variant.ts","../../../../libs/angular/components/card/src/lib/card.config.ts","../../../../libs/angular/components/card/src/lib/components/card-footer/card-footer.component.ts","../../../../libs/angular/components/card/src/lib/components/card-footer/card-footer.component.html","../../../../libs/angular/components/card/src/lib/components/card-image/card-image.component.ts","../../../../libs/angular/components/card/src/lib/components/card-image/card-image.component.html","../../../../libs/angular/components/card/src/lib/components/launch-card-subtitle/launch-card-subtitle.component.ts","../../../../libs/angular/components/card/src/lib/components/launch-card-subtitle/launch-card-subtitle.component.html","../../../../libs/angular/components/card/src/lib/card.component.ts","../../../../libs/angular/components/card/src/lib/card.component.html","../../../../libs/angular/components/card/src/lib/directives/card-content.directive.ts","../../../../libs/angular/components/card/src/lib/card.module.ts","../../../../libs/angular/components/card/src/odx-angular-components-card.ts"],"sourcesContent":["export type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n\nexport const CardVariant = {\n DEFAULT: 'default',\n LAUNCH_TILE: 'launch-tile',\n LAUNCH_TILE_CENTERED: 'launch-tile-centered',\n IMAGE_CARD: 'image-card',\n} as const;\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { CardVariant } from './models';\n\nexport interface CardConfig {\n variant?: CardVariant;\n maxImageHeight?: string;\n imageRatio?: string;\n}\n\n/**\n * Tools for customizing configuration for the card component\n *\n * @example\n * ```ts\n * @Component({\n * ...\n * providers: [provideCardConfig({imageRatio: '5/3', maxImageHeight: '200px'})]\n * })\n * export class MyCardComponent {}\n * ```\n * @example\n * ```ts\n * constructor(@Inject(CardConfig) private readonly cardConfig: CardConfig) {}\n * ```\n */\nexport const { CardConfig, CardDefaultConfig, injectCardConfig, provideCardConfig } = createConfigTokens('Card', '@odx/angular/components/card', {\n variant: CardVariant.DEFAULT as CardVariant,\n maxImageHeight: 'auto',\n imageRatio: 'auto',\n});\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a card footer component.\n */\n@Component({\n selector: 'odx-card-footer',\n templateUrl: './card-footer.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-card__footer]': 'true',\n },\n})\nexport class CardFooterComponent {}\n","<ng-content />\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ChipListRowComponent } from '@odx/angular/components/chip';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { injectCardConfig } from '../../card.config';\n\n/**\n * Represents a card image component.\n */\n@CSSComponent('card-image')\n@Component({\n selector: 'odx-card-image',\n templateUrl: './card-image.component.html',\n standalone: true,\n imports: [ChipListRowComponent],\n})\nexport class CardImageComponent {\n private readonly config = injectCardConfig();\n public readonly element = injectElement();\n\n /**\n * The ratio of the card image.\n *\n * @type {string}\n * @default 'auto'\n */\n @Input()\n public imageRatio = this.config.imageRatio ?? 'auto';\n\n /**\n * The maximum height of the card image.\n *\n * @type {string}\n * @default 'auto'\n */\n @Input()\n public maxImageHeight = this.config.maxImageHeight ?? 'auto';\n\n @HostBinding(`style.--odx-card-image-max-height`)\n protected get getMaxImageHeight(): string {\n return this.maxImageHeight ?? this.config.maxImageHeight ?? 'auto';\n }\n\n @HostBinding(`style.--odx-card-image-aspect-ratio`)\n protected get getImageAspectRatio(): string {\n return this.imageRatio ?? this.config.imageRatio ?? 'auto';\n }\n}\n","<odx-chip-list-row>\n <ng-content ngProjectAs=\"odx-chip\" select=\"odx-chip\" />\n</odx-chip-list-row>\n\n<figure class=\"odx-card-image__img\">\n <ng-content select=\"img\" />\n</figure>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a launch card subtitle component.\n */\n@Component({\n selector: 'odx-launch-card-subtitle',\n templateUrl: './launch-card-subtitle.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-card__subtitle]': 'true',\n },\n})\nexport class LaunchCardSubtitleComponent {}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { A11yModule, InteractiveDirective } from '@odx/angular/cdk/a11y';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuComponent, MenuDirective, MenuModule } from '@odx/angular/components/menu';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { containsElement, injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { injectCardConfig } from './card.config';\nimport { CardFooterComponent } from './components';\nimport { CardVariant } from './models';\n\n/**\n * Represents a card component.\n * It can contain a header, body, and footer. The card component can also have a menu and action buttons.\n * Has host directive for interactivity.\n *\n * @see {InteractiveDirective}\n */\n@CSSComponent('card')\n@Component({\n selector: 'odx-card',\n templateUrl: './card.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [A11yModule, ButtonComponent, IconComponent, MenuModule, ActionGroupComponent],\n hostDirectives: [InteractiveDirective],\n})\nexport class CardComponent {\n private readonly interactiveDirective = inject(InteractiveDirective, { host: true });\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly config = injectCardConfig();\n\n protected cardVariant = CardVariant;\n\n @ContentChild(MenuComponent)\n protected readonly menu?: MenuComponent;\n\n @ContentChild(ActionGroupComponent)\n protected readonly buttons?: ActionGroupComponent;\n\n @ViewChild(MenuDirective)\n protected readonly menuHost?: MenuDirective;\n\n @ContentChild(CardFooterComponent, { read: ElementRef })\n protected readonly footer?: ElementRef<HTMLElement>;\n\n public element = injectElement();\n /**\n * The variant of the card.\n *\n * @type {CardVariant}\n * @default CardVariant.DEFAULT\n */\n\n @CSSModifier()\n @Input()\n public variant: CardVariant = this.config.variant ?? CardVariant.DEFAULT;\n\n /**\n * Menu icon name.\n *\n * @type {string}\n * @default 'more'\n */\n @Input()\n public menuIcon = 'more';\n\n /**\n * Interactivity event emitter.\n *\n * @emits {Event}\n */\n @Output()\n public interact = new EventEmitter<Event>();\n\n public get launchTile(): boolean {\n return this.variant === CardVariant.LAUNCH_TILE || this.variant === CardVariant.LAUNCH_TILE_CENTERED;\n }\n\n constructor() {\n this.interactiveDirective.interact.pipe(this.takeUntilDestroyed()).subscribe((event) => {\n this.stopEvents(event);\n });\n }\n\n private stopEvents(event: Event): void {\n const target = event.target as Element | null;\n const isFooterEvent = containsElement(this.footer?.nativeElement, target, false);\n const isMenuEvent = containsElement(this.menuHost?.element.nativeElement, target);\n const isHeaderButtonEvent = containsElement(this.buttons?.element.nativeElement, target);\n\n if (!isFooterEvent && !isMenuEvent && !this.menuHost?.isOpen() && !isHeaderButtonEvent) {\n this.interact.emit(event);\n }\n }\n}\n","@if (!launchTile) {\n <div class=\"odx-card__container\">\n <ng-content select=\"odx-card-image\" />\n <div class=\"odx-card__title odx-heading-5\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </div>\n <ng-content select=\"[odxCardContent], odx-card-content\" />\n </div>\n} @else {\n <div class=\"odx-card__container\">\n <ng-content select=\"odx-avatar\" />\n <div class=\"odx-card__content\">\n <div class=\"odx-card__title\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </div>\n <ng-content select=\"odx-launch-card-subtitle\" />\n </div>\n </div>\n}\n\n<ng-content select=\"odx-card-footer\" />\n\n@if (menu) {\n <odx-action-group class=\"odx-card__menu\">\n <button odxButton [odxMenu]=\"menuTpl\" odxMenuPosition=\"bottom-end\"><odx-icon [name]=\"menuIcon\" iconSet=\"core\" /></button>\n\n <ng-template #menuTpl>\n <ng-content select=\"odx-menu\" />\n </ng-template>\n </odx-action-group>\n} @else if (buttons) {\n <ng-content select=\"odx-action-group\" />\n}\n\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/**\n * Directive for displaying the content of a card.\n */\n@Directive({\n selector: '[odxCardContent], odx-card-content',\n standalone: true,\n host: {\n '[class.odx-card__content]': 'true',\n },\n})\nexport class CardContentDirective {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CardComponent } from './card.component';\nimport { CardFooterComponent, CardImageComponent, LaunchCardSubtitleComponent } from './components';\nimport { CardContentDirective } from './directives';\n\nconst modules = [CardComponent, CardFooterComponent, CardImageComponent, LaunchCardSubtitleComponent, CardContentDirective];\n\n@NgModule({\n imports: [modules],\n exports: [CoreModule, ...modules],\n})\nexport class CardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-card.mjs","sources":["../../../../libs/angular/components/card/src/lib/models/card-variant.ts","../../../../libs/angular/components/card/src/lib/card.config.ts","../../../../libs/angular/components/card/src/lib/components/card-footer/card-footer.component.ts","../../../../libs/angular/components/card/src/lib/components/card-footer/card-footer.component.html","../../../../libs/angular/components/card/src/lib/components/card-image/card-image.component.ts","../../../../libs/angular/components/card/src/lib/components/card-image/card-image.component.html","../../../../libs/angular/components/card/src/lib/components/launch-card-subtitle/launch-card-subtitle.component.ts","../../../../libs/angular/components/card/src/lib/components/launch-card-subtitle/launch-card-subtitle.component.html","../../../../libs/angular/components/card/src/lib/card.component.ts","../../../../libs/angular/components/card/src/lib/card.component.html","../../../../libs/angular/components/card/src/lib/directives/card-content.directive.ts","../../../../libs/angular/components/card/src/lib/card.module.ts","../../../../libs/angular/components/card/src/odx-angular-components-card.ts"],"sourcesContent":["export type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n\nexport const CardVariant = {\n DEFAULT: 'default',\n LAUNCH_TILE: 'launch-tile',\n LAUNCH_TILE_CENTERED: 'launch-tile-centered',\n IMAGE_CARD: 'image-card',\n} as const;\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { CardVariant } from './models';\n\nexport interface CardConfig {\n variant?: CardVariant;\n maxImageHeight?: string;\n imageRatio?: string;\n}\n\n/**\n * Tools for customizing configuration for the card component\n *\n * @example\n * ```ts\n * @Component({\n * ...\n * providers: [provideCardConfig({imageRatio: '5/3', maxImageHeight: '200px'})]\n * })\n * export class MyCardComponent {}\n * ```\n * @example\n * ```ts\n * constructor(@Inject(CardConfig) private readonly cardConfig: CardConfig) {}\n * ```\n */\nexport const { CardConfig, CardDefaultConfig, injectCardConfig, provideCardConfig } = createConfigTokens('Card', '@odx/angular/components/card', {\n variant: CardVariant.DEFAULT as CardVariant,\n maxImageHeight: 'auto',\n imageRatio: 'auto',\n});\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a card footer component.\n */\n@Component({\n selector: 'odx-card-footer',\n templateUrl: './card-footer.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-card__footer]': 'true',\n },\n})\nexport class CardFooterComponent {}\n","<ng-content />\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ChipListRowComponent } from '@odx/angular/components/chip';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { injectCardConfig } from '../../card.config';\n\n/**\n * Represents a card image component.\n */\n@CSSComponent('card-image')\n@Component({\n selector: 'odx-card-image',\n templateUrl: './card-image.component.html',\n standalone: true,\n imports: [ChipListRowComponent],\n})\nexport class CardImageComponent {\n private readonly config = injectCardConfig();\n public readonly element = injectElement();\n\n /**\n * The ratio of the card image.\n *\n * @type {string}\n * @default 'auto'\n */\n @Input()\n public imageRatio = this.config.imageRatio ?? 'auto';\n\n /**\n * The maximum height of the card image.\n *\n * @type {string}\n * @default 'auto'\n */\n @Input()\n public maxImageHeight = this.config.maxImageHeight ?? 'auto';\n\n @HostBinding(`style.--odx-card-image-max-height`)\n protected get getMaxImageHeight(): string {\n return this.maxImageHeight ?? this.config.maxImageHeight ?? 'auto';\n }\n\n @HostBinding(`style.--odx-card-image-aspect-ratio`)\n protected get getImageAspectRatio(): string {\n return this.imageRatio ?? this.config.imageRatio ?? 'auto';\n }\n}\n","<odx-chip-list-row>\n <ng-content ngProjectAs=\"odx-chip\" select=\"odx-chip\" />\n</odx-chip-list-row>\n\n<figure class=\"odx-card-image__img\">\n <ng-content select=\"img\" />\n</figure>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a launch card subtitle component.\n */\n@Component({\n selector: 'odx-launch-card-subtitle',\n templateUrl: './launch-card-subtitle.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.odx-card__subtitle]': 'true',\n },\n})\nexport class LaunchCardSubtitleComponent {}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { A11yModule, InteractiveDirective } from '@odx/angular/cdk/a11y';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuComponent, MenuDirective, MenuModule } from '@odx/angular/components/menu';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { containsElement, injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { injectCardConfig } from './card.config';\nimport { CardFooterComponent } from './components';\nimport { CardVariant } from './models';\n\n/**\n * Represents a card component.\n * It can contain a header, body, and footer. The card component can also have a menu and action buttons.\n * Has host directive for interactivity.\n *\n * @see {InteractiveDirective}\n */\n@CSSComponent('card')\n@Component({\n selector: 'odx-card',\n templateUrl: './card.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [A11yModule, ButtonComponent, IconComponent, MenuModule, ActionGroupComponent],\n hostDirectives: [InteractiveDirective],\n})\nexport class CardComponent {\n private readonly interactiveDirective = inject(InteractiveDirective, { host: true });\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly config = injectCardConfig();\n\n protected cardVariant = CardVariant;\n\n @ContentChild(MenuComponent)\n protected readonly menu?: MenuComponent;\n\n @ContentChild(ActionGroupComponent)\n protected readonly buttons?: ActionGroupComponent;\n\n @ViewChild(MenuDirective)\n protected readonly menuHost?: MenuDirective;\n\n @ContentChild(CardFooterComponent, { read: ElementRef })\n protected readonly footer?: ElementRef<HTMLElement>;\n\n public element = injectElement();\n /**\n * The variant of the card.\n *\n * @type {CardVariant}\n * @default CardVariant.DEFAULT\n */\n\n @CSSModifier()\n @Input()\n public variant: CardVariant = this.config.variant ?? CardVariant.DEFAULT;\n\n /**\n * Menu icon name.\n *\n * @type {string}\n * @default 'more'\n */\n @Input()\n public menuIcon = 'more';\n\n /**\n * Interactivity event emitter.\n *\n * @emits {Event}\n */\n @Output()\n public interact = new EventEmitter<Event>();\n\n public get launchTile(): boolean {\n return this.variant === CardVariant.LAUNCH_TILE || this.variant === CardVariant.LAUNCH_TILE_CENTERED;\n }\n\n constructor() {\n this.interactiveDirective.interact.pipe(this.takeUntilDestroyed()).subscribe((event) => {\n this.stopEvents(event);\n });\n }\n\n private stopEvents(event: Event): void {\n const target = event.target as Element | null;\n const isFooterEvent = containsElement(this.footer?.nativeElement, target, false);\n const isMenuEvent = containsElement(this.menuHost?.element.nativeElement, target);\n const isHeaderButtonEvent = containsElement(this.buttons?.element.nativeElement, target);\n\n if (!isFooterEvent && !isMenuEvent && !this.menuHost?.isOpen() && !isHeaderButtonEvent) {\n this.interact.emit(event);\n }\n }\n}\n","@if (!launchTile) {\n <div class=\"odx-card__container\">\n <ng-content select=\"odx-card-image\" />\n <div class=\"odx-card__title odx-heading-5\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </div>\n <ng-content select=\"[odxCardContent], odx-card-content\" />\n </div>\n} @else {\n <div class=\"odx-card__container\">\n <ng-content select=\"odx-avatar\" />\n <div class=\"odx-card__content\">\n <div class=\"odx-card__title\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </div>\n <ng-content select=\"odx-launch-card-subtitle\" />\n </div>\n </div>\n}\n\n<ng-content select=\"odx-card-footer\" />\n\n@if (menu) {\n <odx-action-group class=\"odx-card__menu\">\n <button odxButton [odxMenu]=\"menuTpl\" odxMenuPosition=\"bottom-end\"><odx-icon [name]=\"menuIcon\" iconSet=\"core\" /></button>\n\n <ng-template #menuTpl>\n <ng-content select=\"odx-menu\" />\n </ng-template>\n </odx-action-group>\n} @else if (buttons) {\n <ng-content select=\"odx-action-group\" />\n}\n\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/**\n * Directive for displaying the content of a card.\n */\n@Directive({\n selector: '[odxCardContent], odx-card-content',\n standalone: true,\n host: {\n '[class.odx-card__content]': 'true',\n },\n})\nexport class CardContentDirective {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CardComponent } from './card.component';\nimport { CardFooterComponent, CardImageComponent, LaunchCardSubtitleComponent } from './components';\nimport { CardContentDirective } from './directives';\n\nconst modules = [CardComponent, CardFooterComponent, CardImageComponent, LaunchCardSubtitleComponent, CardContentDirective];\n\n@NgModule({\n imports: [modules],\n exports: [CoreModule, ...modules],\n})\nexport class CardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|