@odx/angular 2.9.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/components/calendar/lib/calendar.config.d.ts +10 -0
  3. package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +1 -0
  4. package/components/calendar/lib/directives/calendar-cell.directive.d.ts +2 -0
  5. package/components/calendar/lib/directives/calendar-view.directive.d.ts +1 -0
  6. package/components/calendar/lib/pipes/date-label.pipe.d.ts +1 -0
  7. package/components/paginator/README.md +3 -0
  8. package/components/paginator/index.d.ts +5 -0
  9. package/components/paginator/lib/interfaces/index.d.ts +1 -0
  10. package/components/paginator/lib/interfaces/page-change.interface.d.ts +5 -0
  11. package/components/paginator/lib/models/get-range-content.model.d.ts +2 -0
  12. package/components/paginator/lib/models/get-summary-content.model.d.ts +2 -0
  13. package/components/paginator/lib/models/index.d.ts +2 -0
  14. package/components/paginator/lib/paginator.component.d.ts +44 -0
  15. package/components/paginator/lib/paginator.config.d.ts +37 -0
  16. package/components/paginator/lib/paginator.module.d.ts +7 -0
  17. package/esm2020/components/calendar/lib/calendar.config.mjs +2 -1
  18. package/esm2020/components/calendar/lib/directives/calendar-cell.directive.mjs +5 -2
  19. package/esm2020/components/paginator/index.mjs +6 -0
  20. package/esm2020/components/paginator/lib/interfaces/index.mjs +2 -0
  21. package/esm2020/components/paginator/lib/interfaces/page-change.interface.mjs +2 -0
  22. package/esm2020/components/paginator/lib/models/get-range-content.model.mjs +2 -0
  23. package/esm2020/components/paginator/lib/models/get-summary-content.model.mjs +2 -0
  24. package/esm2020/components/paginator/lib/models/index.mjs +3 -0
  25. package/esm2020/components/paginator/lib/paginator.component.mjs +139 -0
  26. package/esm2020/components/paginator/lib/paginator.config.mjs +20 -0
  27. package/esm2020/components/paginator/lib/paginator.module.mjs +17 -0
  28. package/esm2020/components/paginator/odx-angular-components-paginator.mjs +5 -0
  29. package/esm2020/components/table/lib/components/header-title/header-title.component.mjs +2 -5
  30. package/fesm2015/odx-angular-components-calendar.mjs +5 -1
  31. package/fesm2015/odx-angular-components-calendar.mjs.map +1 -1
  32. package/fesm2015/odx-angular-components-paginator.mjs +180 -0
  33. package/fesm2015/odx-angular-components-paginator.mjs.map +1 -0
  34. package/fesm2015/odx-angular-components-table.mjs +1 -4
  35. package/fesm2015/odx-angular-components-table.mjs.map +1 -1
  36. package/fesm2020/odx-angular-components-calendar.mjs +5 -1
  37. package/fesm2020/odx-angular-components-calendar.mjs.map +1 -1
  38. package/fesm2020/odx-angular-components-paginator.mjs +177 -0
  39. package/fesm2020/odx-angular-components-paginator.mjs.map +1 -0
  40. package/fesm2020/odx-angular-components-table.mjs +1 -4
  41. package/fesm2020/odx-angular-components-table.mjs.map +1 -1
  42. package/package.json +12 -2
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-calendar.mjs","sources":["../../../../libs/angular/components/calendar/src/lib/calendar.config.ts","../../../../libs/angular/components/calendar/src/lib/enums/calendar-view.enum.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/parse-date.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/validate-next-date-set.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-previous-date-set.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar.service.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-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/directives/calendar-cell.directive.ts","../../../../libs/angular/components/calendar/src/lib/directives/calendar-view.directive.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/calendar.component.ts","../../../../libs/angular/components/calendar/src/lib/calendar.component.html","../../../../libs/angular/components/calendar/src/odx-angular-components-calendar.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { Locale } from 'date-fns';\nimport { enGB } from 'date-fns/locale';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface CalendarConfig {\n /**\n * Pattern by which month-year label is transformed\n * @default 'LLLL yyyy'\n */\n monthYearLabel: string;\n /**\n * Pattern by which month label is transformed\n * @default 'LLL'\n */\n monthLabel: string;\n /**\n * Pattern by which week label is transformed\n * @default 'EEEEE'\n */\n weekLabel: string;\n /**\n * Pattern by which day label is transformed\n * @default 'd'\n */\n dayLabel: string;\n /**\n * Pattern by which Year label is transformed\n * @default 'yyyy'\n */\n yearLabel: string;\n /**\n * Pattern by which A11y day label is transformed\n * @default 'MMMM dd, yyyy'\n */\n dayA11yLabel: string;\n /**\n * Pattern by which A11y month label is transformed\n * @default 'MMMM, yyyy'\n */\n monthA11yLabel: string;\n /**\n * Pattern by which A11y year label is transformed\n * @default 'yyyy'\n */\n yearA11yLabel: string;\n /**\n * Locale by which calendar labels are transformed\n * @default enGB\n */\n locale: BehaviorSubject<Locale>;\n}\n\nexport const { CalendarConfig, CalendarDefaultConfig, injectCalendarConfig, provideCalendarConfig } = createConfigTokens(\n 'Calendar',\n '@odx/angular/components/calendar',\n {\n monthYearLabel: 'LLLL yyyy',\n monthLabel: 'LLL',\n weekLabel: 'EEEEE',\n dayLabel: 'd',\n yearLabel: 'yyyy',\n dayA11yLabel: 'MMMM dd, yyyy',\n monthA11yLabel: 'MMMM, yyyy',\n yearA11yLabel: 'yyyy',\n locale: new BehaviorSubject<Locale>(enGB),\n },\n);\n","export enum CalendarViewEnum {\n Month = 'month',\n Year = 'year',\n Years = 'years',\n}\n","import { isSameDay, isSameMonth, isSameYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (currentDate: Date, date: Date) => isSameDay(currentDate, date),\n [CalendarViewEnum.Year]: (currentDate: Date, date: Date) => isSameMonth(currentDate, date),\n [CalendarViewEnum.Years]: (currentDate: Date, date: Date) => isSameYear(currentDate, date),\n};\n\nexport function checkIdenticalDate(currentDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](currentDate, date);\n}\n","import { CalendarConfig } from '../calendar.config';\nimport { CalendarViewEnum } from '../enums';\n\nconst functionList: Record<CalendarViewEnum, (config: CalendarConfig) => string> = {\n [CalendarViewEnum.Month]: (config: CalendarConfig) => config.dayA11yLabel,\n [CalendarViewEnum.Year]: (config: CalendarConfig) => config.monthA11yLabel,\n [CalendarViewEnum.Years]: (config: CalendarConfig) => config.yearA11yLabel,\n};\n\nexport function getA11yLabel(calendarView: CalendarViewEnum, config: CalendarConfig): string {\n return functionList[calendarView](config);\n}\n","import { isString } from '@odx/angular/utils';\nimport { isValid, toDate } from 'date-fns';\nimport { DateType } from '../models';\n\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 { endOfDay, endOfMonth, endOfYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (maxDate: Date, date: Date) => endOfDay(maxDate) < endOfDay(date),\n [CalendarViewEnum.Year]: (maxDate: Date, date: Date) => endOfMonth(maxDate) < endOfMonth(date),\n [CalendarViewEnum.Years]: (maxDate: Date, date: Date) => endOfYear(maxDate) < endOfYear(date),\n};\n\nexport function validateMaxDate(maxDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](maxDate, date);\n}\n","import { startOfDay, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (minDate: Date, date: Date) => startOfDay(minDate) > startOfDay(date),\n [CalendarViewEnum.Year]: (minDate: Date, date: Date) => startOfMonth(minDate) > startOfMonth(date),\n [CalendarViewEnum.Years]: (minDate: Date, date: Date) => startOfYear(minDate) > startOfYear(date),\n};\n\nexport function validateMinDate(maxDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](maxDate, date);\n}\n","import { addMonths, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (maxDate: Date, date: Date) => maxDate < startOfMonth(addMonths(date, 1)),\n [CalendarViewEnum.Year]: (maxDate: Date, date: Date) => maxDate < startOfYear(addMonths(date, 12)),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [CalendarViewEnum.Years]: (maxDate: Date, date: Date) => false,\n};\n\nexport function validateNextDateSet(maxDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](maxDate, date);\n}\n","import { endOfMonth, endOfYear, subMonths } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (minDate: Date, date: Date) => minDate > endOfMonth(subMonths(date, 1)),\n [CalendarViewEnum.Year]: (minDate: Date, date: Date) => minDate > endOfYear(subMonths(date, 12)),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [CalendarViewEnum.Years]: () => false,\n};\n\nexport function validatePreviousDateSet(minDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](minDate, date);\n}\n","import { Injectable } from '@angular/core';\nimport { isPresent, Pure } from '@odx/angular/utils';\nimport { startOfDay } from 'date-fns';\nimport { BehaviorSubject, shareReplay, tap } from 'rxjs';\nimport { CalendarViewEnum } from '../enums';\nimport { DateFilter, DateType } from '../models';\nimport { parseDate, validateMaxDate, validateMinDate, validateNextDateSet, validatePreviousDateSet } from '../utils';\n\n@Injectable()\nexport class CalendarService {\n private readonly calendarView$$ = new BehaviorSubject<CalendarViewEnum>(CalendarViewEnum.Month);\n private readonly activeDate$$ = new BehaviorSubject<Date>(startOfDay(new Date()));\n private readonly selectedDate$$ = new BehaviorSubject<Date | null>(null);\n\n public minDate: Date | null = null;\n public maxDate: Date | null = null;\n public filterFn?: DateFilter | null = null;\n\n public readonly calendarView$ = this.calendarView$$.pipe(shareReplay({ refCount: true }));\n\n public readonly activeDate$ = this.activeDate$$.pipe(shareReplay({ refCount: true }));\n public readonly selectedDate$ = this.selectedDate$$.pipe(\n tap((date) => isPresent(date) && this.setActiveDate(date)),\n shareReplay({ refCount: true }),\n );\n\n public setActiveDate(value: DateType | null): void {\n if (isPresent(value)) {\n this.activeDate$$.next(parseDate(value));\n }\n }\n\n public selectDate(value: DateType | null): void {\n if (isPresent(value)) {\n this.selectedDate$$.next(startOfDay(parseDate(value)));\n } else {\n this.selectedDate$$.next(null);\n }\n }\n\n public get activeDate(): Date {\n return this.activeDate$$.getValue();\n }\n\n public get selectedDate(): Date | null {\n return this.selectedDate$$.getValue();\n }\n\n public changeView(view: CalendarViewEnum): void {\n this.calendarView$$.next(view);\n }\n\n public get calendarCurrentView(): CalendarViewEnum {\n return this.calendarView$$.getValue();\n }\n\n @Pure\n public isDateDisabled(date: Date): boolean {\n const minDate = this.minDate && validateMinDate(this.minDate, date, this.calendarCurrentView);\n const maxDate = this.maxDate && validateMaxDate(this.maxDate, date, this.calendarCurrentView);\n let isDateFiltered = false;\n\n if (this.calendarCurrentView === CalendarViewEnum.Month) {\n isDateFiltered = this.filterFn?.(date) ?? false;\n }\n\n return minDate || maxDate || isDateFiltered;\n }\n\n public isPreviousDateSetDisabled(): boolean {\n return this.minDate ? validatePreviousDateSet(this.minDate, this.activeDate, this.calendarCurrentView) : false;\n }\n\n public isNextDateSetDisabled(): boolean {\n return this.maxDate ? validateNextDateSet(this.maxDate, this.activeDate, this.calendarCurrentView) : false;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { addDays, endOfMonth, endOfWeek, startOfMonth, startOfWeek } from 'date-fns';\nimport { map, Observable } from 'rxjs';\nimport { CalendarService } from './calendar.service';\n\n@Injectable()\nexport class CalendarMonthService {\n protected readonly calendar = inject(CalendarService);\n\n public readonly weekDays$: Observable<Date[]> = this.calendar.activeDate$.pipe(map((date) => this.generateWeekDays(date)));\n public readonly weeks$: Observable<Date[][]> = this.calendar.activeDate$.pipe(map((date) => this.generateWeeks(date)));\n\n public generateWeekDays(date: Date): Date[] {\n const firstWeekDay = startOfWeek(date, { weekStartsOn: 1 });\n\n return Array.from({ length: 7 }, (_, i) => addDays(firstWeekDay, i));\n }\n\n public generateWeeks(date: Date): Date[][] {\n const startOfTheSelectedMonth = startOfMonth(date);\n const endOfTheSelectedMonth = endOfMonth(date);\n const startDate = startOfWeek(startOfTheSelectedMonth, { weekStartsOn: 1 });\n const endDate = endOfWeek(endOfTheSelectedMonth);\n const allWeeks = [];\n\n let currentDate = startDate;\n while (currentDate <= endDate) {\n allWeeks.push(this.generateDaysForWeek(currentDate, date));\n currentDate = addDays(currentDate, 7);\n }\n\n return allWeeks;\n }\n\n public 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, Observable } from 'rxjs';\nimport { CalendarService } from './calendar.service';\n\n@Injectable()\nexport class CalendarYearService {\n protected readonly calendar = inject(CalendarService);\n\n public readonly seasonSeparator = 3;\n\n public readonly seasons$: Observable<Date[][]> = this.calendar.activeDate$.pipe(map((selectedDate) => this.generateSeasons(selectedDate)));\n\n public generateSeasons(date: Date): Date[][] {\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 + this.seasonSeparator));\n index += this.seasonSeparator;\n }\n\n return seasons;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { addYears, getYear, setYear, startOfYear } from 'date-fns';\n\n@Injectable()\nexport class CalendarYearsService {\n public readonly yearsSeparator = 3;\n public readonly yearsLimit = 100;\n public readonly date = new Date();\n\n public get years(): Date[][] {\n const startDate = startOfYear(addYears(this.date, -this.yearsLimit));\n const startYear = getYear(startDate);\n const endDate = startOfYear(addYears(this.date, this.yearsLimit));\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 + this.yearsSeparator));\n index += this.yearsSeparator;\n }\n\n return yearRows;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, 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 { injectElement } from '@odx/angular/utils';\nimport { map, Observable } from 'rxjs';\nimport { injectCalendarConfig } from '../../calendar.config';\nimport { CalendarService } from '../../services';\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 {\n protected readonly calendar = inject(CalendarService);\n\n public readonly element = injectElement();\n\n @Output()\n public previous = new EventEmitter<Event>();\n\n @Output()\n public next = new EventEmitter<Event>();\n\n @Output()\n public changeView = new EventEmitter<null>();\n\n public readonly config = injectCalendarConfig();\n\n protected previousClicked(event: Event): void {\n !this.isPreviousDisabled && this.previous.emit(event);\n }\n\n protected nextClicked(event: Event): void {\n !this.isNextDisabled && this.next.emit(event);\n }\n\n protected get handleIsPreviousDisabled$(): Observable<boolean> {\n return this.calendar.activeDate$.pipe(map(() => this.isPreviousDisabled));\n }\n\n protected get handleIsNextDisabled$(): Observable<boolean> {\n return this.calendar.activeDate$.pipe(map(() => this.isNextDisabled));\n }\n\n protected get isPreviousDisabled(): boolean {\n return this.calendar.isPreviousDateSetDisabled();\n }\n\n protected get isNextDisabled(): boolean {\n return this.calendar.isNextDateSetDisabled();\n }\n}\n","<odx-action-group>\n <button odxButton (click)=\"previousClicked($event)\" [disabled]=\"handleIsPreviousDisabled$ | async\">\n <odx-icon name=\"chevron-left\"></odx-icon>\n </button>\n\n <button class=\"odx-calendar-header__title\" odxButton (click)=\"changeView.emit()\">\n <ng-content></ng-content>\n </button>\n\n <button odxButton (click)=\"nextClicked($event)\" [disabled]=\"handleIsNextDisabled$ | async\">\n <odx-icon name=\"chevron-right\"></odx-icon>\n </button>\n</odx-action-group>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { format } from 'date-fns';\nimport { injectCalendarConfig } from '../calendar.config';\n\n@Pipe({\n pure: false,\n name: 'odxDateLabel',\n standalone: true,\n})\nexport class DateLabelPipe implements PipeTransform {\n public readonly config = injectCalendarConfig();\n\n public transform(value: Date | null, dateFormat: string): string {\n if (!value) return '';\n\n return format(value, dateFormat, { locale: this.config.locale.getValue() });\n }\n}\n","import { Directive, inject, Input, OnChanges } from '@angular/core';\nimport { DisabledController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { deferFn, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { isSameMonth } from 'date-fns';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarViewEnum } from '../enums';\nimport { DateLabelPipe } from '../pipes';\nimport { checkIdenticalDate, getA11yLabel } from '../utils';\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 '[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 {\n private readonly disabledController = DisabledController.inject();\n\n protected isActive = false;\n protected isSelected = false;\n\n @CSSModifier()\n protected isCurrent = false;\n\n @CSSModifier()\n protected adjacent = false;\n\n protected get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public readonly element = injectElement();\n public readonly dateLabelPipe = inject(DateLabelPipe);\n\n public readonly config = injectCalendarConfig();\n\n @Input('odxCalendarCell')\n public date!: Date;\n\n @Input('odxCalendarCellCalendarView')\n public calendarView: CalendarViewEnum = CalendarViewEnum.Month;\n\n @Input('odxCalendarCellActiveDate')\n public activeDate: Date | null = null;\n\n @Input('odxCalendarCellSelectedDate')\n public selectedDate: Date | null = null;\n\n public ngOnChanges(changes: NgChanges<CalendarCellDirective>): void {\n if (hasChanged(changes, ['date'], false)) {\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\n if (this.calendarView === CalendarViewEnum.Month) {\n this.adjacent = !isSameMonth(this.date, this.activeDate);\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.isActive) {\n deferFn(() => this.element.nativeElement.focus());\n }\n }\n\n public get ariaLabel(): string {\n const dateFormat = getA11yLabel(this.calendarView, this.config);\n return this.dateLabelPipe.transform(this.date, dateFormat);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarViewEnum } from '../enums';\nimport { CalendarService } from '../services';\n\n@Directive({\n standalone: true,\n})\nexport abstract class CalendarViewDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n\n protected readonly calendar = inject(CalendarService);\n\n protected abstract readonly calendarNextView: CalendarViewEnum;\n\n protected abstract readonly calendarCurrentView: CalendarViewEnum;\n\n public readonly config = injectCalendarConfig();\n\n public readonly element = injectElement();\n\n public get activeDate(): Date {\n return this.calendar.activeDate;\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public isDateDisabled(value: Date): boolean {\n return this.calendar.isDateDisabled(value);\n }\n\n public changeView(): void {\n this.calendar.changeView(this.calendarNextView);\n }\n\n public updateActiveDate(event: Event, date: Date): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.calendar.setActiveDate(date);\n }\n\n protected abstract selectDate(value: Date): void;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output, 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 { CalendarViewEnum } from '../../enums';\nimport { DateType } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarMonthService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\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\n protected readonly calendarNextView = CalendarViewEnum.Years;\n protected readonly calendarCurrentView = CalendarViewEnum.Month;\n\n @Output()\n public selectedChange = new EventEmitter<DateType | null>();\n\n public previousDay(event: Event): void {\n this.updateActiveDate(event, subDays(this.activeDate, 1));\n }\n\n public nextDay(event: Event): void {\n this.updateActiveDate(event, addDays(this.activeDate, 1));\n }\n\n public previousWeek(event: Event): void {\n this.updateActiveDate(event, subWeeks(this.activeDate, 1));\n }\n\n public nextWeek(event: Event): void {\n this.updateActiveDate(event, addWeeks(this.activeDate, 1));\n }\n\n public previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n public nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n public selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n this.calendar.selectDate(value);\n this.selectedChange.emit(value);\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 (previous)=\"previousMonth($event)\" (next)=\"nextMonth($event)\" (changeView)=\"changeView()\">\n {{ calendar.activeDate$ | async | odxDateLabel: config.monthYearLabel }}\n </odx-calendar-header>\n </th>\n </tr>\n\n <tr class=\"odx-calendar__weekdays\">\n <td *ngFor=\"let day of calendarMonth.weekDays$ | async\">\n {{ day | odxDateLabel: config.weekLabel }}\n </td>\n </tr>\n </thead>\n\n <tbody\n *ngIf=\"calendar.activeDate$ | async as activeDate\"\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 <tr *ngFor=\"let week of calendarMonth.weeks$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let day of week; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(day)\"\n [odxCalendarCell]=\"day\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellSelectedDate]=\"calendar.selectedDate$ | async\"\n (click)=\"selectDate(day)\"\n >\n {{ day | odxDateLabel: config.dayLabel }}\n </button>\n </td>\n </tr>\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 { CalendarViewEnum } from '../../enums';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\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\n protected readonly calendarNextView = CalendarViewEnum.Month;\n protected readonly calendarCurrentView = CalendarViewEnum.Year;\n\n public previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n public nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n public previousSeason(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 3));\n }\n\n public nextSeason(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 3));\n }\n\n public previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n public nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n public selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setMonth(this.calendar.activeDate, getMonth(value));\n this.calendar.selectDate(date);\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 (previous)=\"previousYear($event)\" (next)=\"nextYear($event)\" (changeView)=\"changeView()\">\n {{ calendar.activeDate$ | async | odxDateLabel: config.yearLabel }}\n </odx-calendar-header>\n </th>\n </tr>\n </thead>\n\n <tbody\n *ngIf=\"calendar.activeDate$ | async as activeDate\"\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 <tr class=\"odx-calendar__season\" *ngFor=\"let season of calendarYear.seasons$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let month of season; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(month)\"\n [odxCalendarCell]=\"month\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellSelectedDate]=\"calendar.selectedDate$ | async\"\n [odxCalendarCellCalendarView]=\"calendarCurrentView\"\n (click)=\"selectDate(month)\"\n >\n {{ month | odxDateLabel: config.monthLabel }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, inject, ViewEncapsulation } 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 { CalendarViewEnum } from '../../enums';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearsService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\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\n protected readonly calendarNextView = CalendarViewEnum.Year;\n protected readonly calendarCurrentView = CalendarViewEnum.Years;\n\n public ngAfterViewInit(): void {\n deferFn(() => this.scrollCurrentYearIntoView());\n }\n\n public previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n public nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n public previousRow(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12 * 3));\n }\n\n public nextRow(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12 * 3));\n }\n\n public selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setYear(this.calendar.activeDate, getYear(value));\n this.calendar.selectDate(date);\n\n this.changeView();\n }\n\n public 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 *ngIf=\"calendar.activeDate$ | async as activeDate\"\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 <tr class=\"odx-calendar__year-row\" *ngFor=\"let yearRow of calendarYears.years; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let year of yearRow; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellSelectedDate]=\"calendar.selectedDate$ | async\"\n [odxCalendarCellCalendarView]=\"calendarCurrentView\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel: config.yearLabel }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { hasChanged, injectElement } from '@odx/angular/utils';\nimport { CalendarMonthComponent, CalendarYearComponent, CalendarYearsComponent } from './components';\nimport { CalendarViewEnum } from './enums';\nimport { DateFilter, DateType } from './models';\nimport { CalendarService } from './services';\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],\n})\nexport class CalendarComponent implements OnChanges {\n protected readonly calendar = inject(CalendarService);\n\n public readonly element = injectElement();\n\n public readonly calendarView = CalendarViewEnum;\n\n @Input()\n public set selectedDate(value: DateType | null) {\n this.calendar.selectDate(value);\n }\n\n @Input()\n public minDate: Date | null = null;\n\n @Input()\n public maxDate: Date | null = null;\n\n @Input()\n public filterFn?: DateFilter | null = null;\n\n @Output()\n public selectedChange = new EventEmitter<DateType | null>();\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (hasChanged(changes, 'minDate', false)) {\n this.calendar.minDate = this.minDate;\n }\n\n if (hasChanged(changes, 'maxDate', false)) {\n this.calendar.maxDate = this.maxDate;\n }\n\n if (hasChanged(changes, 'filterFn', false)) {\n this.calendar.filterFn = this.filterFn;\n }\n }\n}\n","<ng-container [ngSwitch]=\"calendar.calendarCurrentView\">\n <odx-calendar-year *ngSwitchCase=\"calendarView.Year\"></odx-calendar-year>\n <odx-calendar-years *ngSwitchCase=\"calendarView.Years\"></odx-calendar-years>\n <odx-calendar-month *ngSwitchDefault (selectedChange)=\"selectedChange.emit($event)\"></odx-calendar-month>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["functionList"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-calendar.mjs","sources":["../../../../libs/angular/components/calendar/src/lib/calendar.config.ts","../../../../libs/angular/components/calendar/src/lib/enums/calendar-view.enum.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/parse-date.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/validate-next-date-set.ts","../../../../libs/angular/components/calendar/src/lib/utils/validate-previous-date-set.ts","../../../../libs/angular/components/calendar/src/lib/services/calendar.service.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-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/directives/calendar-cell.directive.ts","../../../../libs/angular/components/calendar/src/lib/directives/calendar-view.directive.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/calendar.component.ts","../../../../libs/angular/components/calendar/src/lib/calendar.component.html","../../../../libs/angular/components/calendar/src/odx-angular-components-calendar.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { Locale } from 'date-fns';\nimport { enGB } from 'date-fns/locale';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface CalendarConfig {\n /**\n * Pattern by which month-year label is transformed\n * @default 'LLLL yyyy'\n */\n monthYearLabel: string;\n /**\n * Pattern by which month label is transformed\n * @default 'LLL'\n */\n monthLabel: string;\n /**\n * Pattern by which week label is transformed\n * @default 'EEEEE'\n */\n weekLabel: string;\n /**\n * Pattern by which day label is transformed\n * @default 'd'\n */\n dayLabel: string;\n /**\n * Pattern by which Year label is transformed\n * @default 'yyyy'\n */\n yearLabel: string;\n /**\n * Pattern by which A11y day label is transformed\n * @default 'MMMM dd, yyyy'\n */\n dayA11yLabel: string;\n /**\n * Pattern by which A11y month label is transformed\n * @default 'MMMM, yyyy'\n */\n monthA11yLabel: string;\n /**\n * Pattern by which A11y year label is transformed\n * @default 'yyyy'\n */\n yearA11yLabel: string;\n /**\n * Displays the adjacent days in month calendar view\n * @default true\n */\n displayAdjacentDays: boolean;\n /**\n * Locale by which calendar labels are transformed\n * @default enGB\n */\n locale: BehaviorSubject<Locale>;\n}\n\nexport const { CalendarConfig, CalendarDefaultConfig, injectCalendarConfig, provideCalendarConfig } = createConfigTokens(\n 'Calendar',\n '@odx/angular/components/calendar',\n {\n monthYearLabel: 'LLLL yyyy',\n monthLabel: 'LLL',\n weekLabel: 'EEEEE',\n dayLabel: 'd',\n yearLabel: 'yyyy',\n dayA11yLabel: 'MMMM dd, yyyy',\n monthA11yLabel: 'MMMM, yyyy',\n yearA11yLabel: 'yyyy',\n displayAdjacentDays: true,\n locale: new BehaviorSubject<Locale>(enGB),\n },\n);\n","export enum CalendarViewEnum {\n Month = 'month',\n Year = 'year',\n Years = 'years',\n}\n","import { isSameDay, isSameMonth, isSameYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (currentDate: Date, date: Date) => isSameDay(currentDate, date),\n [CalendarViewEnum.Year]: (currentDate: Date, date: Date) => isSameMonth(currentDate, date),\n [CalendarViewEnum.Years]: (currentDate: Date, date: Date) => isSameYear(currentDate, date),\n};\n\nexport function checkIdenticalDate(currentDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](currentDate, date);\n}\n","import { CalendarConfig } from '../calendar.config';\nimport { CalendarViewEnum } from '../enums';\n\nconst functionList: Record<CalendarViewEnum, (config: CalendarConfig) => string> = {\n [CalendarViewEnum.Month]: (config: CalendarConfig) => config.dayA11yLabel,\n [CalendarViewEnum.Year]: (config: CalendarConfig) => config.monthA11yLabel,\n [CalendarViewEnum.Years]: (config: CalendarConfig) => config.yearA11yLabel,\n};\n\nexport function getA11yLabel(calendarView: CalendarViewEnum, config: CalendarConfig): string {\n return functionList[calendarView](config);\n}\n","import { isString } from '@odx/angular/utils';\nimport { isValid, toDate } from 'date-fns';\nimport { DateType } from '../models';\n\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 { endOfDay, endOfMonth, endOfYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (maxDate: Date, date: Date) => endOfDay(maxDate) < endOfDay(date),\n [CalendarViewEnum.Year]: (maxDate: Date, date: Date) => endOfMonth(maxDate) < endOfMonth(date),\n [CalendarViewEnum.Years]: (maxDate: Date, date: Date) => endOfYear(maxDate) < endOfYear(date),\n};\n\nexport function validateMaxDate(maxDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](maxDate, date);\n}\n","import { startOfDay, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (minDate: Date, date: Date) => startOfDay(minDate) > startOfDay(date),\n [CalendarViewEnum.Year]: (minDate: Date, date: Date) => startOfMonth(minDate) > startOfMonth(date),\n [CalendarViewEnum.Years]: (minDate: Date, date: Date) => startOfYear(minDate) > startOfYear(date),\n};\n\nexport function validateMinDate(maxDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](maxDate, date);\n}\n","import { addMonths, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (maxDate: Date, date: Date) => maxDate < startOfMonth(addMonths(date, 1)),\n [CalendarViewEnum.Year]: (maxDate: Date, date: Date) => maxDate < startOfYear(addMonths(date, 12)),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [CalendarViewEnum.Years]: (maxDate: Date, date: Date) => false,\n};\n\nexport function validateNextDateSet(maxDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](maxDate, date);\n}\n","import { endOfMonth, endOfYear, subMonths } from 'date-fns';\nimport { CalendarViewEnum } from '../enums';\nimport { DateValidator } from '../models';\n\nconst functionList: Record<CalendarViewEnum, DateValidator> = {\n [CalendarViewEnum.Month]: (minDate: Date, date: Date) => minDate > endOfMonth(subMonths(date, 1)),\n [CalendarViewEnum.Year]: (minDate: Date, date: Date) => minDate > endOfYear(subMonths(date, 12)),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [CalendarViewEnum.Years]: () => false,\n};\n\nexport function validatePreviousDateSet(minDate: Date, date: Date, calendarView: CalendarViewEnum): boolean {\n return functionList[calendarView](minDate, date);\n}\n","import { Injectable } from '@angular/core';\nimport { isPresent, Pure } from '@odx/angular/utils';\nimport { startOfDay } from 'date-fns';\nimport { BehaviorSubject, shareReplay, tap } from 'rxjs';\nimport { CalendarViewEnum } from '../enums';\nimport { DateFilter, DateType } from '../models';\nimport { parseDate, validateMaxDate, validateMinDate, validateNextDateSet, validatePreviousDateSet } from '../utils';\n\n@Injectable()\nexport class CalendarService {\n private readonly calendarView$$ = new BehaviorSubject<CalendarViewEnum>(CalendarViewEnum.Month);\n private readonly activeDate$$ = new BehaviorSubject<Date>(startOfDay(new Date()));\n private readonly selectedDate$$ = new BehaviorSubject<Date | null>(null);\n\n public minDate: Date | null = null;\n public maxDate: Date | null = null;\n public filterFn?: DateFilter | null = null;\n\n public readonly calendarView$ = this.calendarView$$.pipe(shareReplay({ refCount: true }));\n\n public readonly activeDate$ = this.activeDate$$.pipe(shareReplay({ refCount: true }));\n public readonly selectedDate$ = this.selectedDate$$.pipe(\n tap((date) => isPresent(date) && this.setActiveDate(date)),\n shareReplay({ refCount: true }),\n );\n\n public setActiveDate(value: DateType | null): void {\n if (isPresent(value)) {\n this.activeDate$$.next(parseDate(value));\n }\n }\n\n public selectDate(value: DateType | null): void {\n if (isPresent(value)) {\n this.selectedDate$$.next(startOfDay(parseDate(value)));\n } else {\n this.selectedDate$$.next(null);\n }\n }\n\n public get activeDate(): Date {\n return this.activeDate$$.getValue();\n }\n\n public get selectedDate(): Date | null {\n return this.selectedDate$$.getValue();\n }\n\n public changeView(view: CalendarViewEnum): void {\n this.calendarView$$.next(view);\n }\n\n public get calendarCurrentView(): CalendarViewEnum {\n return this.calendarView$$.getValue();\n }\n\n @Pure\n public isDateDisabled(date: Date): boolean {\n const minDate = this.minDate && validateMinDate(this.minDate, date, this.calendarCurrentView);\n const maxDate = this.maxDate && validateMaxDate(this.maxDate, date, this.calendarCurrentView);\n let isDateFiltered = false;\n\n if (this.calendarCurrentView === CalendarViewEnum.Month) {\n isDateFiltered = this.filterFn?.(date) ?? false;\n }\n\n return minDate || maxDate || isDateFiltered;\n }\n\n public isPreviousDateSetDisabled(): boolean {\n return this.minDate ? validatePreviousDateSet(this.minDate, this.activeDate, this.calendarCurrentView) : false;\n }\n\n public isNextDateSetDisabled(): boolean {\n return this.maxDate ? validateNextDateSet(this.maxDate, this.activeDate, this.calendarCurrentView) : false;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { addDays, endOfMonth, endOfWeek, startOfMonth, startOfWeek } from 'date-fns';\nimport { map, Observable } from 'rxjs';\nimport { CalendarService } from './calendar.service';\n\n@Injectable()\nexport class CalendarMonthService {\n protected readonly calendar = inject(CalendarService);\n\n public readonly weekDays$: Observable<Date[]> = this.calendar.activeDate$.pipe(map((date) => this.generateWeekDays(date)));\n public readonly weeks$: Observable<Date[][]> = this.calendar.activeDate$.pipe(map((date) => this.generateWeeks(date)));\n\n public generateWeekDays(date: Date): Date[] {\n const firstWeekDay = startOfWeek(date, { weekStartsOn: 1 });\n\n return Array.from({ length: 7 }, (_, i) => addDays(firstWeekDay, i));\n }\n\n public generateWeeks(date: Date): Date[][] {\n const startOfTheSelectedMonth = startOfMonth(date);\n const endOfTheSelectedMonth = endOfMonth(date);\n const startDate = startOfWeek(startOfTheSelectedMonth, { weekStartsOn: 1 });\n const endDate = endOfWeek(endOfTheSelectedMonth);\n const allWeeks = [];\n\n let currentDate = startDate;\n while (currentDate <= endDate) {\n allWeeks.push(this.generateDaysForWeek(currentDate, date));\n currentDate = addDays(currentDate, 7);\n }\n\n return allWeeks;\n }\n\n public 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, Observable } from 'rxjs';\nimport { CalendarService } from './calendar.service';\n\n@Injectable()\nexport class CalendarYearService {\n protected readonly calendar = inject(CalendarService);\n\n public readonly seasonSeparator = 3;\n\n public readonly seasons$: Observable<Date[][]> = this.calendar.activeDate$.pipe(map((selectedDate) => this.generateSeasons(selectedDate)));\n\n public generateSeasons(date: Date): Date[][] {\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 + this.seasonSeparator));\n index += this.seasonSeparator;\n }\n\n return seasons;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { addYears, getYear, setYear, startOfYear } from 'date-fns';\n\n@Injectable()\nexport class CalendarYearsService {\n public readonly yearsSeparator = 3;\n public readonly yearsLimit = 100;\n public readonly date = new Date();\n\n public get years(): Date[][] {\n const startDate = startOfYear(addYears(this.date, -this.yearsLimit));\n const startYear = getYear(startDate);\n const endDate = startOfYear(addYears(this.date, this.yearsLimit));\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 + this.yearsSeparator));\n index += this.yearsSeparator;\n }\n\n return yearRows;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, 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 { injectElement } from '@odx/angular/utils';\nimport { map, Observable } from 'rxjs';\nimport { injectCalendarConfig } from '../../calendar.config';\nimport { CalendarService } from '../../services';\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 {\n protected readonly calendar = inject(CalendarService);\n\n public readonly element = injectElement();\n\n @Output()\n public previous = new EventEmitter<Event>();\n\n @Output()\n public next = new EventEmitter<Event>();\n\n @Output()\n public changeView = new EventEmitter<null>();\n\n public readonly config = injectCalendarConfig();\n\n protected previousClicked(event: Event): void {\n !this.isPreviousDisabled && this.previous.emit(event);\n }\n\n protected nextClicked(event: Event): void {\n !this.isNextDisabled && this.next.emit(event);\n }\n\n protected get handleIsPreviousDisabled$(): Observable<boolean> {\n return this.calendar.activeDate$.pipe(map(() => this.isPreviousDisabled));\n }\n\n protected get handleIsNextDisabled$(): Observable<boolean> {\n return this.calendar.activeDate$.pipe(map(() => this.isNextDisabled));\n }\n\n protected get isPreviousDisabled(): boolean {\n return this.calendar.isPreviousDateSetDisabled();\n }\n\n protected get isNextDisabled(): boolean {\n return this.calendar.isNextDateSetDisabled();\n }\n}\n","<odx-action-group>\n <button odxButton (click)=\"previousClicked($event)\" [disabled]=\"handleIsPreviousDisabled$ | async\">\n <odx-icon name=\"chevron-left\"></odx-icon>\n </button>\n\n <button class=\"odx-calendar-header__title\" odxButton (click)=\"changeView.emit()\">\n <ng-content></ng-content>\n </button>\n\n <button odxButton (click)=\"nextClicked($event)\" [disabled]=\"handleIsNextDisabled$ | async\">\n <odx-icon name=\"chevron-right\"></odx-icon>\n </button>\n</odx-action-group>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { format } from 'date-fns';\nimport { injectCalendarConfig } from '../calendar.config';\n\n@Pipe({\n pure: false,\n name: 'odxDateLabel',\n standalone: true,\n})\nexport class DateLabelPipe implements PipeTransform {\n public readonly config = injectCalendarConfig();\n\n public transform(value: Date | null, dateFormat: string): string {\n if (!value) return '';\n\n return format(value, dateFormat, { locale: this.config.locale.getValue() });\n }\n}\n","import { Directive, inject, Input, OnChanges } from '@angular/core';\nimport { DisabledController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { deferFn, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { isSameMonth } from 'date-fns';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarViewEnum } from '../enums';\nimport { DateLabelPipe } from '../pipes';\nimport { checkIdenticalDate, getA11yLabel } from '../utils';\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 '[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 {\n private readonly disabledController = DisabledController.inject();\n\n protected isActive = false;\n protected isSelected = false;\n protected isHidden = false;\n\n @CSSModifier()\n protected isCurrent = false;\n\n @CSSModifier()\n protected adjacent = false;\n\n protected get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public readonly element = injectElement();\n public readonly dateLabelPipe = inject(DateLabelPipe);\n\n public readonly config = injectCalendarConfig();\n\n @Input('odxCalendarCell')\n public date!: Date;\n\n @Input('odxCalendarCellCalendarView')\n public calendarView: CalendarViewEnum = CalendarViewEnum.Month;\n\n @Input('odxCalendarCellActiveDate')\n public activeDate: Date | null = null;\n\n @Input('odxCalendarCellSelectedDate')\n public selectedDate: Date | null = null;\n\n public ngOnChanges(changes: NgChanges<CalendarCellDirective>): void {\n if (hasChanged(changes, ['date'], false)) {\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\n if (this.calendarView === CalendarViewEnum.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.isActive) {\n deferFn(() => this.element.nativeElement.focus());\n }\n }\n\n public get ariaLabel(): string {\n const dateFormat = getA11yLabel(this.calendarView, this.config);\n return this.dateLabelPipe.transform(this.date, dateFormat);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { injectCalendarConfig } from '../calendar.config';\nimport { CalendarViewEnum } from '../enums';\nimport { CalendarService } from '../services';\n\n@Directive({\n standalone: true,\n})\nexport abstract class CalendarViewDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n\n protected readonly calendar = inject(CalendarService);\n\n protected abstract readonly calendarNextView: CalendarViewEnum;\n\n protected abstract readonly calendarCurrentView: CalendarViewEnum;\n\n public readonly config = injectCalendarConfig();\n\n public readonly element = injectElement();\n\n public get activeDate(): Date {\n return this.calendar.activeDate;\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public isDateDisabled(value: Date): boolean {\n return this.calendar.isDateDisabled(value);\n }\n\n public changeView(): void {\n this.calendar.changeView(this.calendarNextView);\n }\n\n public updateActiveDate(event: Event, date: Date): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.calendar.setActiveDate(date);\n }\n\n protected abstract selectDate(value: Date): void;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output, 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 { CalendarViewEnum } from '../../enums';\nimport { DateType } from '../../models';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarMonthService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\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\n protected readonly calendarNextView = CalendarViewEnum.Years;\n protected readonly calendarCurrentView = CalendarViewEnum.Month;\n\n @Output()\n public selectedChange = new EventEmitter<DateType | null>();\n\n public previousDay(event: Event): void {\n this.updateActiveDate(event, subDays(this.activeDate, 1));\n }\n\n public nextDay(event: Event): void {\n this.updateActiveDate(event, addDays(this.activeDate, 1));\n }\n\n public previousWeek(event: Event): void {\n this.updateActiveDate(event, subWeeks(this.activeDate, 1));\n }\n\n public nextWeek(event: Event): void {\n this.updateActiveDate(event, addWeeks(this.activeDate, 1));\n }\n\n public previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n public nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n public selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n this.calendar.selectDate(value);\n this.selectedChange.emit(value);\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 (previous)=\"previousMonth($event)\" (next)=\"nextMonth($event)\" (changeView)=\"changeView()\">\n {{ calendar.activeDate$ | async | odxDateLabel: config.monthYearLabel }}\n </odx-calendar-header>\n </th>\n </tr>\n\n <tr class=\"odx-calendar__weekdays\">\n <td *ngFor=\"let day of calendarMonth.weekDays$ | async\">\n {{ day | odxDateLabel: config.weekLabel }}\n </td>\n </tr>\n </thead>\n\n <tbody\n *ngIf=\"calendar.activeDate$ | async as activeDate\"\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 <tr *ngFor=\"let week of calendarMonth.weeks$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let day of week; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(day)\"\n [odxCalendarCell]=\"day\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellSelectedDate]=\"calendar.selectedDate$ | async\"\n (click)=\"selectDate(day)\"\n >\n {{ day | odxDateLabel: config.dayLabel }}\n </button>\n </td>\n </tr>\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 { CalendarViewEnum } from '../../enums';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\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\n protected readonly calendarNextView = CalendarViewEnum.Month;\n protected readonly calendarCurrentView = CalendarViewEnum.Year;\n\n public previousMonth(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 1));\n }\n\n public nextMonth(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 1));\n }\n\n public previousSeason(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 3));\n }\n\n public nextSeason(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 3));\n }\n\n public previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n public nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n public selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setMonth(this.calendar.activeDate, getMonth(value));\n this.calendar.selectDate(date);\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 (previous)=\"previousYear($event)\" (next)=\"nextYear($event)\" (changeView)=\"changeView()\">\n {{ calendar.activeDate$ | async | odxDateLabel: config.yearLabel }}\n </odx-calendar-header>\n </th>\n </tr>\n </thead>\n\n <tbody\n *ngIf=\"calendar.activeDate$ | async as activeDate\"\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 <tr class=\"odx-calendar__season\" *ngFor=\"let season of calendarYear.seasons$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let month of season; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(month)\"\n [odxCalendarCell]=\"month\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellSelectedDate]=\"calendar.selectedDate$ | async\"\n [odxCalendarCellCalendarView]=\"calendarCurrentView\"\n (click)=\"selectDate(month)\"\n >\n {{ month | odxDateLabel: config.monthLabel }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, inject, ViewEncapsulation } 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 { CalendarViewEnum } from '../../enums';\nimport { DateLabelPipe } from '../../pipes';\nimport { CalendarYearsService } from '../../services';\nimport { CalendarHeaderComponent } from '../calendar-header';\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\n protected readonly calendarNextView = CalendarViewEnum.Year;\n protected readonly calendarCurrentView = CalendarViewEnum.Years;\n\n public ngAfterViewInit(): void {\n deferFn(() => this.scrollCurrentYearIntoView());\n }\n\n public previousYear(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12));\n }\n\n public nextYear(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12));\n }\n\n public previousRow(event: Event): void {\n this.updateActiveDate(event, subMonths(this.activeDate, 12 * 3));\n }\n\n public nextRow(event: Event): void {\n this.updateActiveDate(event, addMonths(this.activeDate, 12 * 3));\n }\n\n public selectDate(value: Date): void {\n if (this.isDateDisabled(value)) return;\n\n const date = setYear(this.calendar.activeDate, getYear(value));\n this.calendar.selectDate(date);\n\n this.changeView();\n }\n\n public 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 *ngIf=\"calendar.activeDate$ | async as activeDate\"\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 <tr class=\"odx-calendar__year-row\" *ngFor=\"let yearRow of calendarYears.years; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let year of yearRow; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellSelectedDate]=\"calendar.selectedDate$ | async\"\n [odxCalendarCellCalendarView]=\"calendarCurrentView\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel: config.yearLabel }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { hasChanged, injectElement } from '@odx/angular/utils';\nimport { CalendarMonthComponent, CalendarYearComponent, CalendarYearsComponent } from './components';\nimport { CalendarViewEnum } from './enums';\nimport { DateFilter, DateType } from './models';\nimport { CalendarService } from './services';\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],\n})\nexport class CalendarComponent implements OnChanges {\n protected readonly calendar = inject(CalendarService);\n\n public readonly element = injectElement();\n\n public readonly calendarView = CalendarViewEnum;\n\n @Input()\n public set selectedDate(value: DateType | null) {\n this.calendar.selectDate(value);\n }\n\n @Input()\n public minDate: Date | null = null;\n\n @Input()\n public maxDate: Date | null = null;\n\n @Input()\n public filterFn?: DateFilter | null = null;\n\n @Output()\n public selectedChange = new EventEmitter<DateType | null>();\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (hasChanged(changes, 'minDate', false)) {\n this.calendar.minDate = this.minDate;\n }\n\n if (hasChanged(changes, 'maxDate', false)) {\n this.calendar.maxDate = this.maxDate;\n }\n\n if (hasChanged(changes, 'filterFn', false)) {\n this.calendar.filterFn = this.filterFn;\n }\n }\n}\n","<ng-container [ngSwitch]=\"calendar.calendarCurrentView\">\n <odx-calendar-year *ngSwitchCase=\"calendarView.Year\"></odx-calendar-year>\n <odx-calendar-years *ngSwitchCase=\"calendarView.Years\"></odx-calendar-years>\n <odx-calendar-month *ngSwitchDefault (selectedChange)=\"selectedChange.emit($event)\"></odx-calendar-month>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["functionList"],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import { __decorate } from 'tslib';
2
+ import * as i0 from '@angular/core';
3
+ import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
4
+ import * as i2 from '@odx/angular';
5
+ import { DisabledController, CoreModule } from '@odx/angular';
6
+ import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
7
+ import { ActionGroupComponent } from '@odx/angular/components/action-group';
8
+ import { ButtonSize, ButtonComponent } from '@odx/angular/components/button';
9
+ import { IconComponent } from '@odx/angular/components/icon';
10
+ import { CSSComponent } from '@odx/angular/internal';
11
+ import { createConfigTokens, injectElement } from '@odx/angular/utils';
12
+ import * as i1 from '@angular/common';
13
+
14
+ const getSummaryContent = (startItemIndex, endItemIndex, length) => {
15
+ return `
16
+ <strong>${startItemIndex}</strong>
17
+ to <strong>${endItemIndex}</strong>
18
+ of <strong>${length}</strong>
19
+ `;
20
+ };
21
+ const getRangeContent = (pageIndex, totalPages) => {
22
+ return `
23
+ Page <strong>${pageIndex + 1}</strong>
24
+ of <strong>${totalPages}</strong>
25
+ `;
26
+ };
27
+ const { PaginatorConfig, PaginatorDefaultConfig, injectPaginatorConfig, providePaginatorConfig } = createConfigTokens('Paginator', '@odx/angular/components/paginator', {
28
+ getSummaryContent,
29
+ getRangeContent,
30
+ pageSize: 10,
31
+ });
32
+
33
+ let PaginatorComponent = class PaginatorComponent {
34
+ constructor() {
35
+ this.disabledController = DisabledController.inject();
36
+ this.config = injectPaginatorConfig();
37
+ this._pageIndex = 0;
38
+ this._pageSize = this.config.pageSize;
39
+ this._length = 0;
40
+ this.buttonSize = ButtonSize.SMALL;
41
+ this.element = injectElement();
42
+ this.getSummaryContentFn = null;
43
+ this.getRangeContentFn = null;
44
+ this.showSummary = true;
45
+ this.showFirstLastButtons = true;
46
+ this.pageChanged = new EventEmitter();
47
+ }
48
+ set pageIndex(value) {
49
+ if (value >= 0)
50
+ this._pageIndex = value;
51
+ }
52
+ get pageIndex() {
53
+ return this._length ? this._pageIndex : -1;
54
+ }
55
+ set pageSize(value) {
56
+ if (value > 0)
57
+ this._pageSize = value;
58
+ }
59
+ get pageSize() {
60
+ return this._pageSize;
61
+ }
62
+ set length(value) {
63
+ if (value >= 0)
64
+ this._length = value;
65
+ }
66
+ get length() {
67
+ return this._length;
68
+ }
69
+ get isDisabled() {
70
+ return !!this.disabledController?.disabled;
71
+ }
72
+ get defaultGetSummaryContentFn() {
73
+ return this.config.getSummaryContent;
74
+ }
75
+ get defaultGetRangeContentFn() {
76
+ return this.config.getRangeContent;
77
+ }
78
+ get summaryContent() {
79
+ const fn = this.getSummaryContentFn ?? this.defaultGetSummaryContentFn;
80
+ return fn(this.startItemIndex + 1, this.endItemIndex, this.length);
81
+ }
82
+ get rangeContent() {
83
+ const fn = this.getRangeContentFn ?? this.defaultGetRangeContentFn;
84
+ return fn(this.pageIndex, this.totalPages);
85
+ }
86
+ firstPage() {
87
+ this.pageChange(0);
88
+ }
89
+ previousPage() {
90
+ this.pageChange(this._pageIndex - 1);
91
+ }
92
+ nextPage() {
93
+ this.pageChange(this._pageIndex + 1);
94
+ }
95
+ lastPage() {
96
+ this.pageChange(this.totalPages - 1);
97
+ }
98
+ get isFirstPage() {
99
+ return this._pageIndex === 0;
100
+ }
101
+ get isLastPage() {
102
+ return this._pageIndex === this.totalPages - 1;
103
+ }
104
+ get isPreviousDisabled() {
105
+ return this.isFirstPage || !this._length;
106
+ }
107
+ get isNextDisabled() {
108
+ return this.isLastPage || !this._length;
109
+ }
110
+ get totalPages() {
111
+ return Math.ceil(this._length / this._pageSize);
112
+ }
113
+ get startItemIndex() {
114
+ return this._length ? this._pageIndex * this._pageSize : -1;
115
+ }
116
+ get endItemIndex() {
117
+ return Math.min(this.startItemIndex + this._pageSize, this._length);
118
+ }
119
+ pageChange(pageIndex) {
120
+ if (pageIndex < 0)
121
+ return;
122
+ this._pageIndex = pageIndex;
123
+ this.pageChanged.emit({
124
+ pageIndex: this._pageIndex,
125
+ length: this._length,
126
+ pageSize: this._pageSize,
127
+ });
128
+ }
129
+ };
130
+ PaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
+ PaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PaginatorComponent, isStandalone: true, selector: "odx-paginator", inputs: { getSummaryContentFn: "getSummaryContentFn", getRangeContentFn: "getRangeContentFn", showSummary: "showSummary", showFirstLastButtons: "showFirstLastButtons", pageIndex: "pageIndex", pageSize: "pageSize", length: "length" }, outputs: { pageChanged: "pageChanged" }, host: { properties: { "class.is-disabled": "isDisabled" } }, providers: [DisabledController.connect()], ngImport: i0, template: "<div *ngIf=\"showSummary\" class=\"odx-paginator__summary\">\n <ng-template [odxDynamicView]=\"summaryContent\"></ng-template>\n</div>\n\n<div class=\"odx-paginator__navigation\">\n <odx-action-group>\n <button\n *ngIf=\"showFirstLastButtons\"\n odxButton\n [size]=\"buttonSize\"\n class=\"odx-paginator__navigation_first\"\n (click)=\"firstPage()\"\n [disabled]=\"isPreviousDisabled\"\n >\n <odx-icon name=\"chevron-left-end\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_previous\" (click)=\"previousPage()\" [disabled]=\"isPreviousDisabled\">\n <odx-icon name=\"chevron-left\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n\n <div class=\"odx-paginator__range\">\n <ng-template [odxDynamicView]=\"rangeContent\"></ng-template>\n </div>\n\n <odx-action-group>\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_next\" (click)=\"nextPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button *ngIf=\"showFirstLastButtons\" [size]=\"buttonSize\" odxButton class=\"odx-paginator__navigation_last\" (click)=\"lastPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right-end\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
132
+ PaginatorComponent = __decorate([
133
+ CSSComponent('paginator')
134
+ ], PaginatorComponent);
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorComponent, decorators: [{
136
+ type: Component,
137
+ args: [{ standalone: true, selector: 'odx-paginator', imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, DynamicViewDirective], providers: [DisabledController.connect()], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
138
+ '[class.is-disabled]': 'isDisabled',
139
+ }, template: "<div *ngIf=\"showSummary\" class=\"odx-paginator__summary\">\n <ng-template [odxDynamicView]=\"summaryContent\"></ng-template>\n</div>\n\n<div class=\"odx-paginator__navigation\">\n <odx-action-group>\n <button\n *ngIf=\"showFirstLastButtons\"\n odxButton\n [size]=\"buttonSize\"\n class=\"odx-paginator__navigation_first\"\n (click)=\"firstPage()\"\n [disabled]=\"isPreviousDisabled\"\n >\n <odx-icon name=\"chevron-left-end\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_previous\" (click)=\"previousPage()\" [disabled]=\"isPreviousDisabled\">\n <odx-icon name=\"chevron-left\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n\n <div class=\"odx-paginator__range\">\n <ng-template [odxDynamicView]=\"rangeContent\"></ng-template>\n </div>\n\n <odx-action-group>\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_next\" (click)=\"nextPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button *ngIf=\"showFirstLastButtons\" [size]=\"buttonSize\" odxButton class=\"odx-paginator__navigation_last\" (click)=\"lastPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right-end\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n</div>\n" }]
140
+ }], propDecorators: { getSummaryContentFn: [{
141
+ type: Input
142
+ }], getRangeContentFn: [{
143
+ type: Input
144
+ }], showSummary: [{
145
+ type: Input
146
+ }], showFirstLastButtons: [{
147
+ type: Input
148
+ }], pageIndex: [{
149
+ type: Input
150
+ }], pageSize: [{
151
+ type: Input
152
+ }], length: [{
153
+ type: Input
154
+ }], pageChanged: [{
155
+ type: Output
156
+ }] } });
157
+
158
+ const modules = [PaginatorComponent];
159
+ class PaginatorModule {
160
+ }
161
+ PaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
162
+ PaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, imports: [PaginatorComponent], exports: [PaginatorComponent] });
163
+ PaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, imports: [modules] });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginatorModule, decorators: [{
165
+ type: NgModule,
166
+ args: [{
167
+ imports: modules,
168
+ exports: [...modules],
169
+ }]
170
+ }] });
171
+
172
+ /**
173
+ * Generated bundle index. Do not edit.
174
+ */
175
+
176
+ export { PaginatorComponent, PaginatorConfig, PaginatorDefaultConfig, PaginatorModule, injectPaginatorConfig, providePaginatorConfig };
177
+ //# sourceMappingURL=odx-angular-components-paginator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-components-paginator.mjs","sources":["../../../../libs/angular/components/paginator/src/lib/paginator.config.ts","../../../../libs/angular/components/paginator/src/lib/paginator.component.ts","../../../../libs/angular/components/paginator/src/lib/paginator.component.html","../../../../libs/angular/components/paginator/src/lib/paginator.module.ts","../../../../libs/angular/components/paginator/src/odx-angular-components-paginator.ts"],"sourcesContent":["import { DynamicTextContent } from '@odx/angular/cdk/dynamic-view';\nimport { createConfigTokens } from '@odx/angular/utils';\nimport { GetRangeContentFn, GetSummaryContentFn } from './models';\n\nexport interface PaginatorConfig {\n /**\n * @param {GetSummaryContentFn} - Content is responsible for paginator summary\n */\n getSummaryContent: GetSummaryContentFn;\n /**\n * @param {GetRangeContentFn} - Content is responsible for paginator range\n */\n getRangeContent: GetRangeContentFn;\n /**\n * Default paginator page size\n * @default 10\n */\n pageSize: number;\n}\n\nconst getSummaryContent: GetSummaryContentFn = (startItemIndex: number, endItemIndex: number, length: number): DynamicTextContent => {\n return `\n <strong>${startItemIndex}</strong>\n to <strong>${endItemIndex}</strong>\n of <strong>${length}</strong>\n `;\n};\n\nconst getRangeContent: GetRangeContentFn = (pageIndex: number, totalPages: number): DynamicTextContent => {\n return `\n Page <strong>${pageIndex + 1}</strong>\n of <strong>${totalPages}</strong>\n `;\n};\n\nexport const { PaginatorConfig, PaginatorDefaultConfig, injectPaginatorConfig, providePaginatorConfig } = createConfigTokens(\n 'Paginator',\n '@odx/angular/components/paginator',\n {\n getSummaryContent,\n getRangeContent,\n pageSize: 10,\n },\n);\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, DisabledController } from '@odx/angular';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent, ButtonSize } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { PageChangeEvent } from './interfaces';\nimport { GetRangeContentFn, GetSummaryContentFn } from './models';\nimport { injectPaginatorConfig } from './paginator.config';\n\n@CSSComponent('paginator')\n@Component({\n standalone: true,\n selector: 'odx-paginator',\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, DynamicViewDirective],\n providers: [DisabledController.connect()],\n templateUrl: './paginator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.is-disabled]': 'isDisabled',\n },\n})\nexport class PaginatorComponent {\n private readonly disabledController = DisabledController.inject();\n\n private readonly config = injectPaginatorConfig();\n\n private _pageIndex = 0;\n private _pageSize = this.config.pageSize;\n private _length = 0;\n\n protected buttonSize = ButtonSize.SMALL;\n\n public readonly element = injectElement();\n\n @Input()\n public getSummaryContentFn?: GetSummaryContentFn | null = null;\n\n @Input()\n public getRangeContentFn?: GetRangeContentFn | null = null;\n\n @Input()\n public showSummary = true;\n\n @Input()\n public showFirstLastButtons = true;\n\n @Input()\n public set pageIndex(value: number) {\n if (value >= 0) this._pageIndex = value;\n }\n\n public get pageIndex(): number {\n return this._length ? this._pageIndex : -1;\n }\n\n @Input()\n public set pageSize(value: number) {\n if (value > 0) this._pageSize = value;\n }\n\n public get pageSize(): number {\n return this._pageSize;\n }\n\n @Input()\n public set length(value: number) {\n if (value >= 0) this._length = value;\n }\n\n public get length(): number {\n return this._length;\n }\n\n @Output()\n public pageChanged = new EventEmitter<PageChangeEvent>();\n\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public get defaultGetSummaryContentFn(): GetSummaryContentFn {\n return this.config.getSummaryContent;\n }\n\n public get defaultGetRangeContentFn(): GetRangeContentFn {\n return this.config.getRangeContent;\n }\n\n public get summaryContent(): DynamicTextContent {\n const fn = this.getSummaryContentFn ?? this.defaultGetSummaryContentFn;\n return fn(this.startItemIndex + 1, this.endItemIndex, this.length);\n }\n\n public get rangeContent(): DynamicTextContent {\n const fn = this.getRangeContentFn ?? this.defaultGetRangeContentFn;\n return fn(this.pageIndex, this.totalPages);\n }\n\n public firstPage(): void {\n this.pageChange(0);\n }\n\n public previousPage(): void {\n this.pageChange(this._pageIndex - 1);\n }\n\n public nextPage(): void {\n this.pageChange(this._pageIndex + 1);\n }\n\n public lastPage(): void {\n this.pageChange(this.totalPages - 1);\n }\n\n public get isFirstPage(): boolean {\n return this._pageIndex === 0;\n }\n\n public get isLastPage(): boolean {\n return this._pageIndex === this.totalPages - 1;\n }\n\n public get isPreviousDisabled(): boolean {\n return this.isFirstPage || !this._length;\n }\n\n public get isNextDisabled(): boolean {\n return this.isLastPage || !this._length;\n }\n\n public get totalPages(): number {\n return Math.ceil(this._length / this._pageSize);\n }\n\n public get startItemIndex(): number {\n return this._length ? this._pageIndex * this._pageSize : -1;\n }\n\n public get endItemIndex(): number {\n return Math.min(this.startItemIndex + this._pageSize, this._length);\n }\n\n public pageChange(pageIndex: number): void {\n if (pageIndex < 0) return;\n\n this._pageIndex = pageIndex;\n\n this.pageChanged.emit({\n pageIndex: this._pageIndex,\n length: this._length,\n pageSize: this._pageSize,\n });\n }\n}\n","<div *ngIf=\"showSummary\" class=\"odx-paginator__summary\">\n <ng-template [odxDynamicView]=\"summaryContent\"></ng-template>\n</div>\n\n<div class=\"odx-paginator__navigation\">\n <odx-action-group>\n <button\n *ngIf=\"showFirstLastButtons\"\n odxButton\n [size]=\"buttonSize\"\n class=\"odx-paginator__navigation_first\"\n (click)=\"firstPage()\"\n [disabled]=\"isPreviousDisabled\"\n >\n <odx-icon name=\"chevron-left-end\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_previous\" (click)=\"previousPage()\" [disabled]=\"isPreviousDisabled\">\n <odx-icon name=\"chevron-left\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n\n <div class=\"odx-paginator__range\">\n <ng-template [odxDynamicView]=\"rangeContent\"></ng-template>\n </div>\n\n <odx-action-group>\n <button odxButton [size]=\"buttonSize\" class=\"odx-paginator__navigation_next\" (click)=\"nextPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right\" iconSet=\"core\"></odx-icon>\n </button>\n\n <button *ngIf=\"showFirstLastButtons\" [size]=\"buttonSize\" odxButton class=\"odx-paginator__navigation_last\" (click)=\"lastPage()\" [disabled]=\"isNextDisabled\">\n <odx-icon name=\"chevron-right-end\" iconSet=\"core\"></odx-icon>\n </button>\n </odx-action-group>\n</div>\n","import { NgModule } from '@angular/core';\nimport { PaginatorComponent } from './paginator.component';\n\nconst modules = [PaginatorComponent];\n\n@NgModule({\n imports: modules,\n exports: [...modules],\n})\nexport class PaginatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,iBAAiB,GAAwB,CAAC,cAAsB,EAAE,YAAoB,EAAE,MAAc,KAAwB;IAClI,OAAO,CAAA;cACK,cAAc,CAAA;iBACX,YAAY,CAAA;iBACZ,MAAM,CAAA;GACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAsB,CAAC,SAAiB,EAAE,UAAkB,KAAwB;IACvG,OAAO,CAAA;AACU,iBAAA,EAAA,SAAS,GAAG,CAAC,CAAA;iBACf,UAAU,CAAA;GACxB,CAAC;AACJ,CAAC,CAAC;AAEW,MAAA,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,kBAAkB,CAC1H,WAAW,EACX,mCAAmC,EACnC;IACE,iBAAiB;IACjB,eAAe;AACf,IAAA,QAAQ,EAAE,EAAE;AACb,CAAA;;ACjBU,IAAA,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;AAAxB,IAAA,WAAA,GAAA;AACY,QAAA,IAAA,CAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAEjD,IAAM,CAAA,MAAA,GAAG,qBAAqB,EAAE,CAAC;QAE1C,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAEV,QAAA,IAAA,CAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;QAExB,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;QAGnC,IAAmB,CAAA,mBAAA,GAAgC,IAAI,CAAC;QAGxD,IAAiB,CAAA,iBAAA,GAA8B,IAAI,CAAC;QAGpD,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAGnB,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;AA8B5B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAmB,CAAC;AA+E1D,KAAA;IA3GC,IACW,SAAS,CAAC,KAAa,EAAA;QAChC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;KAC5C;IAED,IACW,QAAQ,CAAC,KAAa,EAAA;QAC/B,IAAI,KAAK,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACvC;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IACW,MAAM,CAAC,KAAa,EAAA;QAC7B,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtC;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAKD,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAC5C;AAED,IAAA,IAAW,0BAA0B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;KACtC;AAED,IAAA,IAAW,wBAAwB,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;KACpC;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,0BAA0B,CAAC;AACvE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACpE;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,CAAC;QACnE,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC5C;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;KACtC;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;KACtC;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;KACtC;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;KAChD;AAED,IAAA,IAAW,kBAAkB,GAAA;QAC3B,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KAC1C;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KACzC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;KACjD;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;KAC7D;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACrE;AAEM,IAAA,UAAU,CAAC,SAAiB,EAAA;QACjC,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO;AAE1B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAE5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,QAAQ,EAAE,IAAI,CAAC,SAAS;AACzB,SAAA,CAAC,CAAC;KACJ;;+GAnIU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4YARlB,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,ECjB3C,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,65CAoCA,EDpBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,qOAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAE,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,oGAAE,oBAAoB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AASrF,kBAAkB,GAAA,UAAA,CAAA;IAb9B,YAAY,CAAC,WAAW,CAAC;AAab,CAAA,EAAA,kBAAkB,CAoI9B,CAAA;2FApIY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,eAAe,EAChB,OAAA,EAAA,CAAC,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,CAAC,EACtF,SAAA,EAAA,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,EAAA,aAAA,EAE1B,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA,EAAA,QAAA,EAAA,65CAAA,EAAA,CAAA;8BAgBM,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAIC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,oBAAoB,EAAA,CAAA;sBAD1B,KAAK;gBAIK,SAAS,EAAA,CAAA;sBADnB,KAAK;gBAUK,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBAUK,MAAM,EAAA,CAAA;sBADhB,KAAK;gBAUC,WAAW,EAAA,CAAA;sBADjB,MAAM;;;AE1ET,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;MAMxB,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,OAAA,EAAA,CANX,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAAlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAMtB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHjB,OAAO,CAAA,EAAA,CAAA,CAAA;2FAGL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;AACtB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
@@ -63,6 +63,7 @@ class HeaderTitleComponent {
63
63
  if (!this.item?.sortable)
64
64
  return;
65
65
  switch (this.sortStatus.sortVariant) {
66
+ case TableSortVariant.DESC:
66
67
  case TableSortVariant.UNSORTED:
67
68
  this.table.clearSort();
68
69
  this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.ASC };
@@ -71,10 +72,6 @@ class HeaderTitleComponent {
71
72
  this.table.clearSort();
72
73
  this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.DESC };
73
74
  break;
74
- case TableSortVariant.DESC:
75
- this.table.clearSort();
76
- this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.ASC };
77
- break;
78
75
  }
79
76
  this.table.sorted.emit(this.sortStatus);
80
77
  }