@i-cell/ids-angular 0.2.9 → 0.2.11

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.
@@ -86,9 +86,9 @@ declare class IdsDatepickerDirective extends DirectiveBaseWithDefaults<IdsDatepi
86
86
  registerOnValidatorChange?(fn: () => void): void;
87
87
  open(): void;
88
88
  close(): void;
89
- private _handleInput;
90
- private _handleBlur;
91
- private _handleKeydown;
89
+ protected _handleInput(value: string): void;
90
+ protected _handleBlur(): void;
91
+ protected _handleKeydown(event: KeyboardEvent): void;
92
92
  private _isValidValue;
93
93
  private _setInputValue;
94
94
  private _getOverlayConfig;
@@ -734,6 +734,8 @@ class IdsDatepickerDirective extends DirectiveBaseWithDefaults {
734
734
  this._componentRef.instance.selected.subscribe((selectedDate) => {
735
735
  this._onChange(selectedDate);
736
736
  this._setInputValue(this.value);
737
+ this._isValid.set(this._isValidValue(this.value));
738
+ this._parent.controlDir()?.control?.updateValueAndValidity();
737
739
  this.close();
738
740
  });
739
741
  this._componentRef.instance.monthSelected.subscribe((selectedMonth) => this.monthSelected.emit(selectedMonth));
@@ -813,7 +815,7 @@ class IdsDatepickerDirective extends DirectiveBaseWithDefaults {
813
815
  ].includes(event.code)));
814
816
  }
815
817
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsDatepickerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
816
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: IdsDatepickerDirective, isStandalone: true, selector: "input[idsDatepicker]", inputs: { formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, parser: { classPropertyName: "parser", publicName: "parser", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, openedInput: { classPropertyName: "openedInput", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { monthSelected: "monthSelected", yearSelected: "yearSelected" }, host: { listeners: { "input": "_handleInput($event.target.value)", "blur": "_handleBlur()", "keydown": "_handleKeydown($event)" }, properties: { "disabled": "disabled" } }, providers: [
818
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: IdsDatepickerDirective, isStandalone: true, selector: "input[idsDatepicker]", inputs: { formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, parser: { classPropertyName: "parser", publicName: "parser", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, openedInput: { classPropertyName: "openedInput", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { monthSelected: "monthSelected", yearSelected: "yearSelected" }, host: { listeners: { "input": "_handleInput($event.target.value)", "blur": "_handleBlur()", "keydown": "_handleKeydown($event)" } }, providers: [
817
819
  {
818
820
  provide: NG_VALUE_ACCESSOR,
819
821
  useExisting: forwardRef(() => IdsDatepickerDirective),
@@ -843,7 +845,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
843
845
  },
844
846
  ],
845
847
  host: {
846
- '[disabled]': 'disabled',
847
848
  '(input)': '_handleInput($event.target.value)',
848
849
  '(blur)': '_handleBlur()',
849
850
  '(keydown)': '_handleKeydown($event)',
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-datepicker.mjs","sources":["../../../projects/widgets/datepicker/tokens/datepicker-view.ts","../../../projects/widgets/datepicker/tokens/date-formatter.ts","../../../projects/widgets/datepicker/tokens/date-parser.ts","../../../projects/widgets/datepicker/datepicker-intl.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.html","../../../projects/widgets/datepicker/datepicker-defaults.ts","../../../projects/widgets/datepicker/calendar/calendar-page.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.html","../../../projects/widgets/datepicker/month-selector/month-selector.component.ts","../../../projects/widgets/datepicker/month-selector/month-selector.component.html","../../../projects/widgets/datepicker/year-selector/year-selector.component.ts","../../../projects/widgets/datepicker/year-selector/year-selector.component.html","../../../projects/widgets/datepicker/calendar/calendar.component.ts","../../../projects/widgets/datepicker/calendar/calendar.component.html","../../../projects/widgets/datepicker/datepicker-positions.ts","../../../projects/widgets/datepicker/datepicker.directive.ts","../../../projects/widgets/datepicker/i-cell-ids-angular-datepicker.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IdsDatepickerView = {\n DAY: 'day',\n MONTH: 'month',\n YEAR: 'year',\n} as const;\n\nexport type IdsDatepickerViewType = (typeof IdsDatepickerView)[keyof typeof IdsDatepickerView];\n","import { InjectionToken } from '@angular/core';\nimport { formatDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateFormatterFn = (date: Date) => string;\n\nexport const IDS_DATE_FORMATTER = new InjectionToken<IdsDateFormatterFn>('idsDateFormatter', {\n providedIn: 'root',\n factory: (): IdsDateFormatterFn => formatDate,\n});\n","import { InjectionToken } from '@angular/core';\nimport { parseDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateParserFn = (value: string, utc?: boolean) => Date | null;\n\nexport const IDS_DATE_PARSER = new InjectionToken<IdsDateParserFn>('idsDateParser', {\n providedIn: 'root',\n factory: (): IdsDateParserFn => parseDate,\n});\n","import { Injectable } from '@angular/core';\nimport { isValidDate } from '@i-cell/ids-angular/core';\nimport { Subject } from 'rxjs';\n\nconst dayAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long', day: 'numeric' });\nconst monthLabelFormat = new Intl.DateTimeFormat('en-GB', { month: 'short' });\nconst monthAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst daySelectorHeaderLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst weekdayLabelFormat = new Intl.DateTimeFormat('en-GB', { weekday: 'narrow' });\n\n@Injectable({ providedIn: 'root' })\nexport class IdsDatepickerIntl {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public triggerButtonLabel = 'Open calendar';\n\n public prevMonthLabel = 'Previous month';\n public nextMonthLabel = 'Next month';\n\n public prevYearLabel = 'Previous year';\n public nextYearLabel = 'Next year';\n\n public prevYearsPageLabel = 'Previous 24 years';\n public nextYearsPageLabel = 'Next 24 years';\n\n public switchToDaySelectorLabel = 'Choose date';\n public switchToYearSelectorLabel = 'Choose year and month';\n\n public getDayAriaLabel(date: Date): string | null {\n return this._formatDate(date, dayAriaLabelFormat);\n }\n\n public getMonthLabel(date: Date): string | null {\n return this._formatDate(date, monthLabelFormat);\n }\n\n public getMonthAriaLabel(date: Date): string | null {\n return this._formatDate(date, monthAriaLabelFormat);\n }\n\n public getDaySelectorHeaderLabel(date: Date): string | null {\n return this._formatDate(date, daySelectorHeaderLabelFormat);\n }\n\n public getWeekdayHeaderLabel(date: Date): string | null {\n return this._formatDate(date, weekdayLabelFormat);\n }\n\n protected _formatDate(date: unknown, dateFormat: Intl.DateTimeFormat): string | null {\n return isValidDate(date) ? dateFormat.format(date) : null;\n }\n}\n","import { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDatepickerDirective } from '../datepicker.directive';\n\nimport { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-datepicker-trigger',\n imports: [\n IdsIconComponent,\n IdsIconButtonComponent,\n ],\n templateUrl: './datepicker-trigger.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsDatepickerTriggerComponent {\n protected _parent = inject(IdsFormFieldComponent);\n protected _intl = inject(IdsDatepickerIntl);\n\n public datepicker = input.required<IdsDatepickerDirective>({ alias: 'for' });\n public ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n}\n","<button\n type=\"button\"\n idsIconButton\n aria-haspopup=\"true\"\n [size]=\"'dense'\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n</button>\n","import { IdsDatepickerView, IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsDatepickerDefaultConfig {\n view?: IdsDatepickerViewType,\n}\n\nexport const IDS_DATEPICKER_DEFAULT_CONFIG = new InjectionToken<IdsDatepickerDefaultConfig>(\n 'IDS_DATEPICKER_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY(): Required<IdsDatepickerDefaultConfig> {\n return {\n view: IdsDatepickerView.DAY,\n };\n}\n\n","import { IdsDatepickerIntl } from '../datepicker-intl';\n\nimport { afterNextRender, AfterViewInit, ChangeDetectorRef, Directive, ElementRef, inject, Injector, input, model, output, Signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\n@Directive()\nexport abstract class IdsCalendarPage implements AfterViewInit {\n private readonly _calendarButtonSelector = '.ids-calendar-button-focused';\n public abstract headerLabel: Signal<string>;\n\n protected _element = inject(ElementRef);\n private _injector = inject(Injector);\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public focusedDate = model.required<Date>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n\n public abstract hasPreviousPage(): boolean;\n public abstract gotoPreviousPage(): void;\n public abstract hasNextPage(): boolean;\n public abstract gotoNextPage(): void;\n\n protected readonly _today = new Date();\n\n constructor() {\n toObservable(this.focusedDate).pipe(takeUntilDestroyed()).subscribe(() => this._moveFocusToCurrent());\n this._intl.changes.pipe(takeUntilDestroyed()).subscribe(() => this._cdRef.markForCheck());\n }\n\n public ngAfterViewInit(): void {\n this._moveFocusToCurrent();\n }\n\n private _moveFocusToCurrent(): void {\n afterNextRender(() => {\n const focusedDayButton = this._element.nativeElement.querySelector(this._calendarButtonSelector) as HTMLButtonElement;\n if (focusedDayButton) {\n focusedDayButton.focus();\n }\n }, { injector: this._injector });\n }\n}\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addDays, addMonths, addYears, clampDate, compareDates, endOfMonth, endOfWeek, equalDates, getDatesBetween, isValidDate, startOfMonth, startOfWeek } from '@i-cell/ids-angular/core';\n\nconst firstDayOfWeekOffset = 1;\nconst daysPerWeek = 7;\n\n@Component({\n selector: 'ids-day-selector',\n imports: [],\n templateUrl: './day-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsDaySelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-day-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsDaySelectorComponent extends IdsCalendarPage {\n public override headerLabel = computed<string>(() => (this._intl.getDaySelectorHeaderLabel(this._currentMonth()) ?? ''));\n\n protected _currentMonth = computed<Date>(() => startOfMonth(this.focusedDate()));\n protected _previousMonth = computed<Date>(() => addMonths(this._currentMonth(), -1));\n protected _nextMonth = computed<Date>(() => addMonths(this._currentMonth(), 1));\n\n protected _gridStartDate = computed(() => startOfWeek(this._currentMonth(), firstDayOfWeekOffset));\n protected _gridEndDate = computed(() => endOfWeek(endOfMonth(this._currentMonth()), firstDayOfWeekOffset));\n protected _days = computed(() => getDatesBetween(this._gridStartDate(), this._gridEndDate()));\n\n protected _weekdayLabels = computed<string[]>(() =>\n this._days().slice(0, daysPerWeek).map((date: Date) => this._intl.getWeekdayHeaderLabel(date) ?? ''));\n\n public override hasPreviousPage(): boolean {\n const dayOnPrevPage = addDays(this._gridStartDate(), -1);\n const min = this.min() ?? dayOnPrevPage;\n\n return compareDates(dayOnPrevPage, min) > -1;\n }\n\n public override gotoPreviousPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth(), 0));\n }\n\n public override hasNextPage(): boolean {\n const dayOnNextPage = addDays(this._gridEndDate(), 1);\n const max = this.max() ?? dayOnNextPage;\n\n return compareDates(dayOnNextPage, max) < 1;\n }\n\n public override gotoNextPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));\n }\n\n protected _selectDate(event: MouseEvent, date: Date): void {\n event.stopPropagation();\n event.preventDefault();\n this.selected.emit(date);\n }\n\n protected _isDateInCurrentMonth(date: Date): boolean {\n return date.getMonth() === this._currentMonth().getMonth();\n }\n\n protected _isDateFocused(date: Date): boolean {\n return equalDates(date, this.focusedDate());\n }\n\n protected _isDateSelected(date: Date): boolean {\n return equalDates(date, this.value());\n }\n\n protected _isDateDisabled(date: Date): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && compareDates(date, min) === -1) || (isValidDate(max) && compareDates(date, max) === 1);\n }\n\n protected _isDateToday(date: Date): boolean {\n return equalDates(date, this._today);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n\n focusedDate = addDays(focusedDate, -daysPerWeek);\n break;\n case 'ArrowDown':\n\n focusedDate = addDays(focusedDate, daysPerWeek);\n break;\n case 'ArrowLeft':\n focusedDate = addDays(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addDays(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = startOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'End':\n focusedDate = endOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'PageUp':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, -1) : addMonths(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, 1) : addMonths(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _hasShiftModifierKey(event: KeyboardEvent): boolean {\n return event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey;\n }\n}\n","<div class=\"ids-day-selector__days-grid ids-calendar-grid\">\n @for (label of _weekdayLabels(); track $index) {\n <div class=\"ids-calendar-cell\">\n <span class=\"ids-day-selector__header--label ids-calendar-weekday-label\">{{ label }}</span>\n </div>\n }\n @for (day of _days(); track $index) {\n @let dayLabel = day.getDate();\n @let isSelected = _isDateSelected(day);\n @let isFocused = _isDateFocused(day);\n @let isToday = _isDateToday(day);\n @let isDisabled = _isDateDisabled(day) || !_isDateInCurrentMonth(day);\n @let tabIndex = isFocused ? 0 : -1;\n @let ariaLabel = _intl.getDayAriaLabel(day);\n <div class=\"ids-calendar-cell\" [class.ids-calendar-cell-selected]=\"isSelected\">\n <button\n type=\"button\"\n class=\"ids-day-selector__day-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isToday\"\n [tabIndex]=\"tabIndex\"\n [class.ids-calendar-button-today]=\"isToday\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectDate($event, day)\"\n >{{ dayLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { addMonths, addYears, clampDate, compareDates, createNormalizedDate, endOfMonth, isValidDate, startOfMonth } from '@i-cell/ids-angular/core';\nimport { map, startWith } from 'rxjs';\n\nconst monthsPerRow = 4;\nconst lastMonth = 11;\n\n@Component({\n selector: 'ids-month-selector',\n imports: [],\n templateUrl: './month-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsMonthSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-month-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsMonthSelectorComponent extends IdsCalendarPage {\n protected _focusedYear = computed<number>(() => this.focusedDate().getFullYear());\n\n protected _monthLabels = toSignal(this._intl.changes.pipe(startWith(null), map(() => {\n const currentYear = new Date().getFullYear();\n const monthLabels = Array.from({ length: 12 })\n .map((nil, month) => this._intl.getMonthLabel(createNormalizedDate(currentYear, month, 1)) ?? '');\n return monthLabels;\n })));\n\n public override headerLabel = computed<string>(() => String(this._focusedYear()));\n\n public override hasPreviousPage(): boolean {\n const min = this.min();\n\n if (!isValidDate(min)) {\n return true;\n }\n\n const startOfYear = createNormalizedDate(this._focusedYear(), 0, 1);\n\n return compareDates(min, startOfYear) === -1;\n }\n\n public override gotoPreviousPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() - 1, lastMonth, 1));\n }\n\n public override hasNextPage(): boolean {\n const max = this.max();\n\n if (!isValidDate(max)) {\n return true;\n }\n\n // eslint-disable-next-line no-magic-numbers\n const endOfYear = createNormalizedDate(this._focusedYear(), 11, 31);\n\n return compareDates(max, endOfYear) === 1;\n }\n\n public override gotoNextPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() + 1, 0, 1));\n }\n\n protected _selectMonth(event: MouseEvent, month: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(currentFocusedDate.getFullYear(), month, currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isMonthFocused(month: number): boolean {\n return month === this.focusedDate().getMonth();\n }\n\n protected _isMonthSelected(month: number): boolean {\n const selectedYear = this.value()?.getFullYear();\n const selectedMonth = this.value()?.getMonth();\n\n return this._focusedYear() === selectedYear && month === selectedMonth;\n }\n\n protected _isCurrentMonth(month: number): boolean {\n return this._focusedYear() === this._today.getFullYear() && month === this._today.getMonth();\n }\n\n protected _isMonthDisabled(month: number): boolean {\n const min = this.min();\n const max = this.max();\n const monthAsDate = new Date(this._focusedYear(), month, 1);\n\n return (isValidDate(min) && compareDates(endOfMonth(monthAsDate), startOfMonth(min)) === -1) ||\n (isValidDate(max) && compareDates(monthAsDate, endOfMonth(max)) === 1);\n }\n\n protected _getMonthAsDate(month: number): Date {\n return createNormalizedDate(this._focusedYear(), month, 1);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addMonths(focusedDate, -monthsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addMonths(focusedDate, monthsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addMonths(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addMonths(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(focusedDate.getFullYear(), 0, focusedDate.getDate());\n break;\n case 'End':\n // eslint-disable-next-line no-magic-numbers\n focusedDate = new Date(focusedDate.getFullYear(), 11, focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n}\n","<div class=\"ids-month-selector__months-grid ids-calendar-grid\">\n @for (monthLabel of _monthLabels(); track $index; let month = $index) {\n @let isSelected = _isMonthSelected(month);\n @let isFocused = _isMonthFocused(month);\n @let isCurrentMonth = _isCurrentMonth(month);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isMonthDisabled(month);\n @let ariaLabel = _intl.getMonthAriaLabel(_getMonthAsDate(month));\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-month-selector__month-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentMonth\"\n [tabIndex]=\"tabIndex\"\n [class.ids-month-selector__month-button--current-month]=\"isCurrentMonth\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectMonth($event, month)\"\n >{{ monthLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addYears, clampDate, createNormalizedDate, isValidDate, positiveModulus } from '@i-cell/ids-angular/core';\n\nconst yearsPerRow = 4;\nconst yearsPerPage = 24;\n\n@Component({\n selector: 'ids-year-selector',\n imports: [],\n templateUrl: './year-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsYearSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-year-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsYearSelectorComponent extends IdsCalendarPage {\n private _firstYearOnPage = computed(() => {\n const focusedYear = this.focusedDate().getFullYear();\n const firstYearOffset = this._getFirstYearOffset(focusedYear, this.min()?.getFullYear(), this.max()?.getFullYear());\n const firstYearOnPage = focusedYear - firstYearOffset;\n\n return firstYearOnPage;\n });\n\n protected _years = computed(() => {\n const firstYearOnPage = this._firstYearOnPage();\n const years = Array.from({ length: yearsPerPage }).map((_nil, index) => firstYearOnPage + index);\n\n return years;\n });\n\n public override headerLabel = computed<string>(() => `${this._years()[0]} - ${this._years().at(-1)}`);\n\n public override hasPreviousPage(): boolean {\n const min = Number.isFinite(this.min()?.getFullYear()) ? this.min()!.getFullYear() : Number.POSITIVE_INFINITY;\n const firstYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() : Number.NEGATIVE_INFINITY;\n\n return firstYearOnPage > min;\n }\n\n public override gotoPreviousPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(createNormalizedDate(firstYearOnPage - 1, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n public override hasNextPage(): boolean {\n const max = Number.isFinite(this.max()?.getFullYear()) ? this.max()!.getFullYear() : Number.NEGATIVE_INFINITY;\n const lastYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() + yearsPerPage - 1 : Number.POSITIVE_INFINITY;\n\n return lastYearOnPage < max;\n }\n\n public override gotoNextPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(\n createNormalizedDate(firstYearOnPage + yearsPerPage, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n protected _selectYear(event: MouseEvent, year: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(year, currentFocusedDate.getMonth(), currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isYearFocused(year: number): boolean {\n return year === this.focusedDate().getFullYear();\n }\n\n protected _isYearSelected(year: number): boolean {\n return year === this.value()?.getFullYear();\n }\n\n protected _isCurrentYear(year: number): boolean {\n return year === new Date().getFullYear();\n }\n\n protected _isYearDisabled(year: number): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && year < min.getFullYear()) || (isValidDate(max) && year > max.getFullYear());\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addYears(focusedDate, -yearsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addYears(focusedDate, yearsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addYears(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(this._years()[0], focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'End':\n focusedDate = new Date(this._years().at(-1)!, focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -yearsPerPage);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, yearsPerPage);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _getFirstYearOffset(focusedYear: number, minYear?: number, maxYear: number = (yearsPerPage - 1)): number {\n // If we have a max year we calculate an offset so that the max year will be the last in the years list\n // Otherwise if we have a min year we calculate an offset so that the min year will be the first in the years list\n const minMaxOffset = maxYear - yearsPerPage + 1 || minYear || 0;\n return positiveModulus(focusedYear - minMaxOffset, yearsPerPage);\n }\n}\n","<div class=\"ids-year-selector__years-grid ids-calendar-grid\">\n @for (year of _years(); track $index) {\n @let isSelected = _isYearSelected(year);\n @let isFocused = _isYearFocused(year);\n @let isCurrentYear = _isCurrentYear(year);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isYearDisabled(year);\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-year-selector__year-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentYear\"\n [tabIndex]=\"tabIndex\"\n [class.ids-year-selector__year-button--current-year]=\"isCurrentYear\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectYear($event, year)\"\n >{{ year }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from './calendar-page';\n\nimport { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDaySelectorComponent } from '../day-selector/day-selector.component';\nimport { IdsMonthSelectorComponent } from '../month-selector/month-selector.component';\nimport { IdsDatepickerView, IdsDatepickerViewType } from '../tokens/datepicker-view';\nimport { IdsYearSelectorComponent } from '../year-selector/year-selector.component';\n\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, linkedSignal, OnInit, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IdsButtonComponent } from '@i-cell/ids-angular/button';\nimport { clampDate, ComponentBaseWithDefaults, IdsSize, IdsSizeType, isValidDate, startOfMonth, startOfYear } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-calendar',\n imports: [\n IdsButtonComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsDaySelectorComponent,\n IdsMonthSelectorComponent,\n IdsYearSelectorComponent,\n ],\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkTrapFocus],\n host: {\n 'class': 'ids-calendar-surface',\n },\n})\nexport class IdsCalendarComponent extends ComponentBaseWithDefaults<object> implements OnInit {\n protected readonly _defaultConfig = {};\n protected override get _hostName(): string {\n return 'calendar';\n }\n\n private _cdRef = inject(ChangeDetectorRef);\n private _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public size = input.required<IdsSizeType>();\n public view = input.required<IdsDatepickerViewType>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _calendarPage = viewChild(IdsCalendarPage);\n\n protected _view = linkedSignal(() => this.view());\n\n protected _hostClasses = computed(() => this._getHostClasses([this.size()]));\n\n protected _headerButtonSize = computed(() => (this.size() === IdsSize.DENSE ? IdsSize.COMPACT : this.size()));\n protected _headerLabel = computed<string>(() => this._calendarPage()?.headerLabel() ?? '');\n\n protected _prevPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.prevMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.prevYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.prevYearsPageLabel;\n }\n });\n\n protected _nextPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.nextMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.nextYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.nextYearsPageLabel;\n }\n });\n\n protected _switchViewLabel = computed<string>(() => (\n this._view() === IdsDatepickerView.DAY ? this._intl.switchToYearSelectorLabel : this._intl.switchToDaySelectorLabel\n ));\n\n protected _focusedDate: Date = new Date();\n\n public ngOnInit(): void {\n this._intl.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._cdRef.markForCheck());\n this._setFocusedDate(this.value());\n }\n\n protected _selectYear(selectedYear: Date): void {\n this._setFocusedDate(selectedYear);\n this.yearSelected.emit(startOfYear(selectedYear));\n this._view.set(IdsDatepickerView.MONTH);\n }\n\n protected _selectMonth(selectedMonth: Date): void {\n this._setFocusedDate(selectedMonth);\n this.monthSelected.emit(startOfMonth(selectedMonth));\n this._view.set(IdsDatepickerView.DAY);\n }\n\n protected _selectDate(date: Date): void {\n this.selected.emit(date);\n }\n\n protected _hasPrevPage(): boolean {\n return this._calendarPage()?.hasPreviousPage() ?? true;\n }\n\n protected _gotoPrevPage(): void {\n this._calendarPage()!.gotoPreviousPage();\n }\n\n protected _hasNextPage(): boolean {\n return this._calendarPage()?.hasNextPage() ?? true;\n }\n\n protected _gotoNextPage(): void {\n this._calendarPage()!.gotoNextPage();\n }\n\n protected _switchView(): void {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n this._view.set(IdsDatepickerView.YEAR);\n break;\n case IdsDatepickerView.YEAR:\n case IdsDatepickerView.MONTH:\n this._view.set(IdsDatepickerView.DAY);\n break;\n }\n }\n\n private _setFocusedDate(date: Date | null): void {\n const safeValue = isValidDate(date) ? date : new Date();\n this._focusedDate = clampDate(safeValue, this.min(), this.max());\n this._cdRef.markForCheck();\n }\n}\n","<div class=\"ids-calendar__header\">\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasPrevPage()\"\n [attr.aria-label]=\"_prevPageLabel()\"\n (click)=\"_gotoPrevPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-left\" [sizeCollection]=\"'big'\" />\n </button>\n <button\n type=\"button\"\n idsButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'text'\"\n [attr.aria-label]=\"_switchViewLabel()\"\n [attr.aria-description]=\"_headerLabel()\"\n (click)=\"_switchView()\"\n >\n {{ _headerLabel() }}\n <ids-icon icon-trailing aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-down\" />\n </button>\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasNextPage()\"\n [attr.aria-label]=\"_nextPageLabel()\"\n (click)=\"_gotoNextPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-right\" />\n </button>\n</div>\n@switch (_view()) {\n @case ('day') {\n <ids-day-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectDate($event)\" />\n }\n @case ('month') {\n <ids-month-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectMonth($event)\" />\n }\n @case ('year') {\n <ids-year-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectYear($event)\" />\n }\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const datepickerConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n];\n","import { IdsCalendarComponent } from './calendar/calendar.component';\nimport { IDS_DATEPICKER_DEFAULT_CONFIG, IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY, IdsDatepickerDefaultConfig } from './datepicker-defaults';\nimport { datepickerConnectedPositions } from './datepicker-positions';\nimport { IDS_DATE_FORMATTER } from './tokens/date-formatter';\nimport { IDS_DATE_PARSER } from './tokens/date-parser';\nimport { IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { afterNextRender, booleanAttribute, ComponentRef, Directive, effect, ElementRef, forwardRef, inject, Injector, input, OnChanges, output, signal, SimpleChanges, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport { compareDates, deserializeDate, DirectiveBaseWithDefaults, equalDates, getValidDateOrNull, isValidDate } from '@i-cell/ids-angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { filter, merge, Observable, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: 'input[idsDatepicker]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n ],\n host: {\n '[disabled]': 'disabled',\n '(input)': '_handleInput($event.target.value)',\n '(blur)': '_handleBlur()',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'idsDatepicker',\n})\nexport class IdsDatepickerDirective extends DirectiveBaseWithDefaults<IdsDatepickerDefaultConfig>\n implements OnChanges, ControlValueAccessor, Validator {\n\n protected override _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DATEPICKER_DEFAULT_CONFIG);\n protected override _hostClasses = signal('');\n\n private _viewContainerRef = inject(ViewContainerRef);\n private _elementRef = inject(ElementRef);\n private _parent = inject(IdsFormFieldComponent);\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n\n public formatter = input(inject(IDS_DATE_FORMATTER));\n public parser = input(inject(IDS_DATE_PARSER));\n\n public view = input<IdsDatepickerViewType>(this._defaultConfig.view);\n public minDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n public maxDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n\n private _inputChanges = effect(() => {\n const min = this.minDate();\n const max = this.maxDate();\n const view = this.view();\n const size = this._parent.size();\n const calendar = this._componentRef?.instance;\n\n if (!calendar) {\n return;\n }\n\n if (!equalDates(min, calendar.min())) {\n this._componentRef?.setInput('min', min);\n }\n if (!equalDates(max, calendar.max())) {\n this._componentRef?.setInput('max', max);\n }\n if (view !== calendar.view()) {\n this._componentRef?.setInput('view', view);\n }\n if (size !== calendar.size()) {\n this._componentRef?.setInput('size', size);\n }\n });\n\n public openedInput = input<boolean, unknown>(false, { transform: booleanAttribute, alias: 'opened' });\n private _opened = signal(this.openedInput() ?? false);\n public opened = this._opened.asReadonly();\n\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _onValidatorChange: () => void = () => {};\n\n private _overlayRef: OverlayRef | null = null;\n private _componentRef: ComponentRef<IdsCalendarComponent> | null = null;\n private _scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n private _overlayCloseSub = Subscription.EMPTY;\n\n public get value(): Date | null {\n return deserializeDate(this._parent.controlDir()?.value);\n }\n\n private _isValid = signal(false);\n\n private _dateFormatValidator: ValidatorFn = (): ValidationErrors | null => (this._isValid() ? null : { idsDateFormat: true });\n\n private _minValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const min = this.minDate();\n return !min || !current || compareDates(min, current) <= 0 ? null : { 'idsDateMin': { min, current } };\n };\n\n private _maxValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const max = this.maxDate();\n return !max || !current || compareDates(max, current) >= 0 ? null : { 'idsDateMax': { max, current } };\n };\n\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n private _validator = Validators.compose([this._dateFormatValidator, this._minValidator, this._maxValidator]) as ValidatorFn;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('opened' in changes) {\n if (this.openedInput()) {\n this.open();\n } else {\n this.close();\n }\n }\n if (('minDate' in changes && !changes['minDate'].firstChange) || ('maxDate' in changes && !changes['maxDate'].firstChange)) {\n this._onValidatorChange();\n }\n }\n\n // #region Value accessor implementation\n public writeValue(obj: unknown): void {\n this._isValid.set(this._isValidValue(deserializeDate(obj)));\n this._setInputValue(obj);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n // #endregion\n\n // #region Validator implementation\n public validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n public registerOnValidatorChange?(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n // #endregion\n\n public open(): void {\n if (this.opened() || this._parent.disabled()) {\n return;\n }\n\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n\n this._overlayCloseSub = this._onOverlayClose(this._overlayRef).subscribe((event) => {\n event?.preventDefault();\n this.close();\n });\n this._onPageNavigationKeydown(this._overlayRef).subscribe((event) => event?.preventDefault());\n\n this._componentRef = this._overlayRef.attach(new ComponentPortal(IdsCalendarComponent, this._viewContainerRef));\n this._componentRef.setInput('value', this.value);\n this._componentRef.setInput('min', this.minDate());\n this._componentRef.setInput('max', this.maxDate());\n this._componentRef.setInput('view', this.view());\n this._componentRef.setInput('size', this._parent.size());\n\n this._componentRef.instance.selected.subscribe((selectedDate: Date) => {\n this._onChange(selectedDate);\n this._setInputValue(this.value);\n this.close();\n });\n this._componentRef.instance.monthSelected.subscribe((selectedMonth: Date) => this.monthSelected.emit(selectedMonth));\n this._componentRef.instance.yearSelected.subscribe((selectedYear: Date) => this.yearSelected.emit(selectedYear));\n\n this._opened.set(true);\n }\n\n public close(): void {\n if (!this._opened()) {\n return;\n }\n\n this._overlayCloseSub.unsubscribe();\n this._overlayCloseSub = Subscription.EMPTY;\n\n this._disposeOverlay();\n\n this._opened.set(false);\n\n afterNextRender(() => this._elementRef.nativeElement.focus(), { injector: this._injector });\n }\n\n private _handleInput(value: string): void {\n const parsed = this.parser()(value);\n\n this._isValid.set(this._isValidValue(parsed));\n\n const date = getValidDateOrNull(parsed);\n const valueChanged = !equalDates(date, this.value);\n\n if (!date || valueChanged) {\n this._onChange(date);\n }\n }\n\n private _handleBlur(): void {\n this._onTouched();\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n if (event.code === 'ArrowDown' && event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {\n this.open();\n }\n }\n\n private _isValidValue(value: unknown): boolean {\n return !value || isValidDate(value);\n }\n\n private _setInputValue(value: unknown): void {\n this._elementRef.nativeElement.value = isValidDate(value) ? this.formatter()(value) : '';\n }\n\n private _getOverlayConfig(): OverlayConfig {\n const overlayViewportMargin = 8;\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._parent.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(overlayViewportMargin)\n .withLockedPosition()\n .withPositions(datepickerConnectedPositions);\n\n return {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: [],\n direction: 'ltr',\n scrollStrategy: this._scrollStrategy,\n panelClass: 'ids-datepicker-panel',\n };\n }\n\n private _disposeOverlay(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n this._componentRef = null;\n }\n }\n\n private _onOverlayClose(overlayRef: OverlayRef): Observable<MouseEvent | KeyboardEvent | void> {\n return merge(\n overlayRef.backdropClick(),\n overlayRef.detachments(),\n overlayRef.keydownEvents().pipe(filter((event) => event.code === 'Escape' && !hasModifierKey(event))),\n );\n }\n\n private _onPageNavigationKeydown(overlayRef: OverlayRef): Observable<KeyboardEvent> {\n return overlayRef.keydownEvents().pipe(filter((event) => [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n ].includes(event.code)));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-datepicker.mjs","sources":["../../../projects/widgets/datepicker/tokens/datepicker-view.ts","../../../projects/widgets/datepicker/tokens/date-formatter.ts","../../../projects/widgets/datepicker/tokens/date-parser.ts","../../../projects/widgets/datepicker/datepicker-intl.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.ts","../../../projects/widgets/datepicker/trigger/datepicker-trigger.component.html","../../../projects/widgets/datepicker/datepicker-defaults.ts","../../../projects/widgets/datepicker/calendar/calendar-page.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.ts","../../../projects/widgets/datepicker/day-selector/day-selector.component.html","../../../projects/widgets/datepicker/month-selector/month-selector.component.ts","../../../projects/widgets/datepicker/month-selector/month-selector.component.html","../../../projects/widgets/datepicker/year-selector/year-selector.component.ts","../../../projects/widgets/datepicker/year-selector/year-selector.component.html","../../../projects/widgets/datepicker/calendar/calendar.component.ts","../../../projects/widgets/datepicker/calendar/calendar.component.html","../../../projects/widgets/datepicker/datepicker-positions.ts","../../../projects/widgets/datepicker/datepicker.directive.ts","../../../projects/widgets/datepicker/i-cell-ids-angular-datepicker.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IdsDatepickerView = {\n DAY: 'day',\n MONTH: 'month',\n YEAR: 'year',\n} as const;\n\nexport type IdsDatepickerViewType = (typeof IdsDatepickerView)[keyof typeof IdsDatepickerView];\n","import { InjectionToken } from '@angular/core';\nimport { formatDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateFormatterFn = (date: Date) => string;\n\nexport const IDS_DATE_FORMATTER = new InjectionToken<IdsDateFormatterFn>('idsDateFormatter', {\n providedIn: 'root',\n factory: (): IdsDateFormatterFn => formatDate,\n});\n","import { InjectionToken } from '@angular/core';\nimport { parseDate } from '@i-cell/ids-angular/core';\n\nexport type IdsDateParserFn = (value: string, utc?: boolean) => Date | null;\n\nexport const IDS_DATE_PARSER = new InjectionToken<IdsDateParserFn>('idsDateParser', {\n providedIn: 'root',\n factory: (): IdsDateParserFn => parseDate,\n});\n","import { Injectable } from '@angular/core';\nimport { isValidDate } from '@i-cell/ids-angular/core';\nimport { Subject } from 'rxjs';\n\nconst dayAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long', day: 'numeric' });\nconst monthLabelFormat = new Intl.DateTimeFormat('en-GB', { month: 'short' });\nconst monthAriaLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst daySelectorHeaderLabelFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long' });\nconst weekdayLabelFormat = new Intl.DateTimeFormat('en-GB', { weekday: 'narrow' });\n\n@Injectable({ providedIn: 'root' })\nexport class IdsDatepickerIntl {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public triggerButtonLabel = 'Open calendar';\n\n public prevMonthLabel = 'Previous month';\n public nextMonthLabel = 'Next month';\n\n public prevYearLabel = 'Previous year';\n public nextYearLabel = 'Next year';\n\n public prevYearsPageLabel = 'Previous 24 years';\n public nextYearsPageLabel = 'Next 24 years';\n\n public switchToDaySelectorLabel = 'Choose date';\n public switchToYearSelectorLabel = 'Choose year and month';\n\n public getDayAriaLabel(date: Date): string | null {\n return this._formatDate(date, dayAriaLabelFormat);\n }\n\n public getMonthLabel(date: Date): string | null {\n return this._formatDate(date, monthLabelFormat);\n }\n\n public getMonthAriaLabel(date: Date): string | null {\n return this._formatDate(date, monthAriaLabelFormat);\n }\n\n public getDaySelectorHeaderLabel(date: Date): string | null {\n return this._formatDate(date, daySelectorHeaderLabelFormat);\n }\n\n public getWeekdayHeaderLabel(date: Date): string | null {\n return this._formatDate(date, weekdayLabelFormat);\n }\n\n protected _formatDate(date: unknown, dateFormat: Intl.DateTimeFormat): string | null {\n return isValidDate(date) ? dateFormat.format(date) : null;\n }\n}\n","import { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDatepickerDirective } from '../datepicker.directive';\n\nimport { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-datepicker-trigger',\n imports: [\n IdsIconComponent,\n IdsIconButtonComponent,\n ],\n templateUrl: './datepicker-trigger.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsDatepickerTriggerComponent {\n protected _parent = inject(IdsFormFieldComponent);\n protected _intl = inject(IdsDatepickerIntl);\n\n public datepicker = input.required<IdsDatepickerDirective>({ alias: 'for' });\n public ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n}\n","<button\n type=\"button\"\n idsIconButton\n aria-haspopup=\"true\"\n [size]=\"'dense'\"\n [variant]=\"'surface'\"\n [disabled]=\"_parent.disabled()\"\n [attr.aria-label]=\"ariaLabel() || _intl.triggerButtonLabel\"\n [attr.aria-expanded]=\"datepicker() ? datepicker().opened() : null\"\n (click)=\"datepicker().open()\"\n>\n <ids-icon aria-hidden=\"true\" fontIcon=\"calendar-month-outline\" [attr.alt]=\"ariaLabel() || _intl.triggerButtonLabel\" />\n</button>\n","import { IdsDatepickerView, IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsDatepickerDefaultConfig {\n view?: IdsDatepickerViewType,\n}\n\nexport const IDS_DATEPICKER_DEFAULT_CONFIG = new InjectionToken<IdsDatepickerDefaultConfig>(\n 'IDS_DATEPICKER_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY(): Required<IdsDatepickerDefaultConfig> {\n return {\n view: IdsDatepickerView.DAY,\n };\n}\n\n","import { IdsDatepickerIntl } from '../datepicker-intl';\n\nimport { afterNextRender, AfterViewInit, ChangeDetectorRef, Directive, ElementRef, inject, Injector, input, model, output, Signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\n@Directive()\nexport abstract class IdsCalendarPage implements AfterViewInit {\n private readonly _calendarButtonSelector = '.ids-calendar-button-focused';\n public abstract headerLabel: Signal<string>;\n\n protected _element = inject(ElementRef);\n private _injector = inject(Injector);\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public focusedDate = model.required<Date>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n\n public abstract hasPreviousPage(): boolean;\n public abstract gotoPreviousPage(): void;\n public abstract hasNextPage(): boolean;\n public abstract gotoNextPage(): void;\n\n protected readonly _today = new Date();\n\n constructor() {\n toObservable(this.focusedDate).pipe(takeUntilDestroyed()).subscribe(() => this._moveFocusToCurrent());\n this._intl.changes.pipe(takeUntilDestroyed()).subscribe(() => this._cdRef.markForCheck());\n }\n\n public ngAfterViewInit(): void {\n this._moveFocusToCurrent();\n }\n\n private _moveFocusToCurrent(): void {\n afterNextRender(() => {\n const focusedDayButton = this._element.nativeElement.querySelector(this._calendarButtonSelector) as HTMLButtonElement;\n if (focusedDayButton) {\n focusedDayButton.focus();\n }\n }, { injector: this._injector });\n }\n}\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addDays, addMonths, addYears, clampDate, compareDates, endOfMonth, endOfWeek, equalDates, getDatesBetween, isValidDate, startOfMonth, startOfWeek } from '@i-cell/ids-angular/core';\n\nconst firstDayOfWeekOffset = 1;\nconst daysPerWeek = 7;\n\n@Component({\n selector: 'ids-day-selector',\n imports: [],\n templateUrl: './day-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsDaySelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-day-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsDaySelectorComponent extends IdsCalendarPage {\n public override headerLabel = computed<string>(() => (this._intl.getDaySelectorHeaderLabel(this._currentMonth()) ?? ''));\n\n protected _currentMonth = computed<Date>(() => startOfMonth(this.focusedDate()));\n protected _previousMonth = computed<Date>(() => addMonths(this._currentMonth(), -1));\n protected _nextMonth = computed<Date>(() => addMonths(this._currentMonth(), 1));\n\n protected _gridStartDate = computed(() => startOfWeek(this._currentMonth(), firstDayOfWeekOffset));\n protected _gridEndDate = computed(() => endOfWeek(endOfMonth(this._currentMonth()), firstDayOfWeekOffset));\n protected _days = computed(() => getDatesBetween(this._gridStartDate(), this._gridEndDate()));\n\n protected _weekdayLabels = computed<string[]>(() =>\n this._days().slice(0, daysPerWeek).map((date: Date) => this._intl.getWeekdayHeaderLabel(date) ?? ''));\n\n public override hasPreviousPage(): boolean {\n const dayOnPrevPage = addDays(this._gridStartDate(), -1);\n const min = this.min() ?? dayOnPrevPage;\n\n return compareDates(dayOnPrevPage, min) > -1;\n }\n\n public override gotoPreviousPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth(), 0));\n }\n\n public override hasNextPage(): boolean {\n const dayOnNextPage = addDays(this._gridEndDate(), 1);\n const max = this.max() ?? dayOnNextPage;\n\n return compareDates(dayOnNextPage, max) < 1;\n }\n\n public override gotoNextPage(): void {\n const current = this._currentMonth();\n this.focusedDate.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));\n }\n\n protected _selectDate(event: MouseEvent, date: Date): void {\n event.stopPropagation();\n event.preventDefault();\n this.selected.emit(date);\n }\n\n protected _isDateInCurrentMonth(date: Date): boolean {\n return date.getMonth() === this._currentMonth().getMonth();\n }\n\n protected _isDateFocused(date: Date): boolean {\n return equalDates(date, this.focusedDate());\n }\n\n protected _isDateSelected(date: Date): boolean {\n return equalDates(date, this.value());\n }\n\n protected _isDateDisabled(date: Date): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && compareDates(date, min) === -1) || (isValidDate(max) && compareDates(date, max) === 1);\n }\n\n protected _isDateToday(date: Date): boolean {\n return equalDates(date, this._today);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n\n focusedDate = addDays(focusedDate, -daysPerWeek);\n break;\n case 'ArrowDown':\n\n focusedDate = addDays(focusedDate, daysPerWeek);\n break;\n case 'ArrowLeft':\n focusedDate = addDays(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addDays(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = startOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'End':\n focusedDate = endOfWeek(focusedDate, firstDayOfWeekOffset);\n break;\n case 'PageUp':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, -1) : addMonths(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = this._hasShiftModifierKey(event) ? addYears(focusedDate, 1) : addMonths(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _hasShiftModifierKey(event: KeyboardEvent): boolean {\n return event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey;\n }\n}\n","<div class=\"ids-day-selector__days-grid ids-calendar-grid\">\n @for (label of _weekdayLabels(); track $index) {\n <div class=\"ids-calendar-cell\">\n <span class=\"ids-day-selector__header--label ids-calendar-weekday-label\">{{ label }}</span>\n </div>\n }\n @for (day of _days(); track $index) {\n @let dayLabel = day.getDate();\n @let isSelected = _isDateSelected(day);\n @let isFocused = _isDateFocused(day);\n @let isToday = _isDateToday(day);\n @let isDisabled = _isDateDisabled(day) || !_isDateInCurrentMonth(day);\n @let tabIndex = isFocused ? 0 : -1;\n @let ariaLabel = _intl.getDayAriaLabel(day);\n <div class=\"ids-calendar-cell\" [class.ids-calendar-cell-selected]=\"isSelected\">\n <button\n type=\"button\"\n class=\"ids-day-selector__day-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isToday\"\n [tabIndex]=\"tabIndex\"\n [class.ids-calendar-button-today]=\"isToday\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectDate($event, day)\"\n >{{ dayLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { addMonths, addYears, clampDate, compareDates, createNormalizedDate, endOfMonth, isValidDate, startOfMonth } from '@i-cell/ids-angular/core';\nimport { map, startWith } from 'rxjs';\n\nconst monthsPerRow = 4;\nconst lastMonth = 11;\n\n@Component({\n selector: 'ids-month-selector',\n imports: [],\n templateUrl: './month-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsMonthSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-month-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsMonthSelectorComponent extends IdsCalendarPage {\n protected _focusedYear = computed<number>(() => this.focusedDate().getFullYear());\n\n protected _monthLabels = toSignal(this._intl.changes.pipe(startWith(null), map(() => {\n const currentYear = new Date().getFullYear();\n const monthLabels = Array.from({ length: 12 })\n .map((nil, month) => this._intl.getMonthLabel(createNormalizedDate(currentYear, month, 1)) ?? '');\n return monthLabels;\n })));\n\n public override headerLabel = computed<string>(() => String(this._focusedYear()));\n\n public override hasPreviousPage(): boolean {\n const min = this.min();\n\n if (!isValidDate(min)) {\n return true;\n }\n\n const startOfYear = createNormalizedDate(this._focusedYear(), 0, 1);\n\n return compareDates(min, startOfYear) === -1;\n }\n\n public override gotoPreviousPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() - 1, lastMonth, 1));\n }\n\n public override hasNextPage(): boolean {\n const max = this.max();\n\n if (!isValidDate(max)) {\n return true;\n }\n\n // eslint-disable-next-line no-magic-numbers\n const endOfYear = createNormalizedDate(this._focusedYear(), 11, 31);\n\n return compareDates(max, endOfYear) === 1;\n }\n\n public override gotoNextPage(): void {\n this.focusedDate.set(createNormalizedDate(this._focusedYear() + 1, 0, 1));\n }\n\n protected _selectMonth(event: MouseEvent, month: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(currentFocusedDate.getFullYear(), month, currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isMonthFocused(month: number): boolean {\n return month === this.focusedDate().getMonth();\n }\n\n protected _isMonthSelected(month: number): boolean {\n const selectedYear = this.value()?.getFullYear();\n const selectedMonth = this.value()?.getMonth();\n\n return this._focusedYear() === selectedYear && month === selectedMonth;\n }\n\n protected _isCurrentMonth(month: number): boolean {\n return this._focusedYear() === this._today.getFullYear() && month === this._today.getMonth();\n }\n\n protected _isMonthDisabled(month: number): boolean {\n const min = this.min();\n const max = this.max();\n const monthAsDate = new Date(this._focusedYear(), month, 1);\n\n return (isValidDate(min) && compareDates(endOfMonth(monthAsDate), startOfMonth(min)) === -1) ||\n (isValidDate(max) && compareDates(monthAsDate, endOfMonth(max)) === 1);\n }\n\n protected _getMonthAsDate(month: number): Date {\n return createNormalizedDate(this._focusedYear(), month, 1);\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addMonths(focusedDate, -monthsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addMonths(focusedDate, monthsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addMonths(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addMonths(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(focusedDate.getFullYear(), 0, focusedDate.getDate());\n break;\n case 'End':\n // eslint-disable-next-line no-magic-numbers\n focusedDate = new Date(focusedDate.getFullYear(), 11, focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, 1);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n}\n","<div class=\"ids-month-selector__months-grid ids-calendar-grid\">\n @for (monthLabel of _monthLabels(); track $index; let month = $index) {\n @let isSelected = _isMonthSelected(month);\n @let isFocused = _isMonthFocused(month);\n @let isCurrentMonth = _isCurrentMonth(month);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isMonthDisabled(month);\n @let ariaLabel = _intl.getMonthAriaLabel(_getMonthAsDate(month));\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-month-selector__month-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentMonth\"\n [tabIndex]=\"tabIndex\"\n [class.ids-month-selector__month-button--current-month]=\"isCurrentMonth\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectMonth($event, month)\"\n >{{ monthLabel }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from '../calendar/calendar-page';\n\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport { addYears, clampDate, createNormalizedDate, isValidDate, positiveModulus } from '@i-cell/ids-angular/core';\n\nconst yearsPerRow = 4;\nconst yearsPerPage = 24;\n\n@Component({\n selector: 'ids-year-selector',\n imports: [],\n templateUrl: './year-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IdsCalendarPage,\n useExisting: IdsYearSelectorComponent,\n },\n ],\n host: {\n 'class': 'ids-year-selector',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsYearSelectorComponent extends IdsCalendarPage {\n private _firstYearOnPage = computed(() => {\n const focusedYear = this.focusedDate().getFullYear();\n const firstYearOffset = this._getFirstYearOffset(focusedYear, this.min()?.getFullYear(), this.max()?.getFullYear());\n const firstYearOnPage = focusedYear - firstYearOffset;\n\n return firstYearOnPage;\n });\n\n protected _years = computed(() => {\n const firstYearOnPage = this._firstYearOnPage();\n const years = Array.from({ length: yearsPerPage }).map((_nil, index) => firstYearOnPage + index);\n\n return years;\n });\n\n public override headerLabel = computed<string>(() => `${this._years()[0]} - ${this._years().at(-1)}`);\n\n public override hasPreviousPage(): boolean {\n const min = Number.isFinite(this.min()?.getFullYear()) ? this.min()!.getFullYear() : Number.POSITIVE_INFINITY;\n const firstYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() : Number.NEGATIVE_INFINITY;\n\n return firstYearOnPage > min;\n }\n\n public override gotoPreviousPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(createNormalizedDate(firstYearOnPage - 1, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n public override hasNextPage(): boolean {\n const max = Number.isFinite(this.max()?.getFullYear()) ? this.max()!.getFullYear() : Number.NEGATIVE_INFINITY;\n const lastYearOnPage = Number.isFinite(this._firstYearOnPage()) ? this._firstYearOnPage() + yearsPerPage - 1 : Number.POSITIVE_INFINITY;\n\n return lastYearOnPage < max;\n }\n\n public override gotoNextPage(): void {\n const firstYearOnPage = this._firstYearOnPage();\n const currentFocusedDate = this.focusedDate();\n this.focusedDate.set(\n createNormalizedDate(firstYearOnPage + yearsPerPage, currentFocusedDate.getMonth(), currentFocusedDate.getDate()));\n }\n\n protected _selectYear(event: MouseEvent, year: number): void {\n event.stopPropagation();\n event.preventDefault();\n\n const currentFocusedDate = this.focusedDate();\n const nextFocusedDate = createNormalizedDate(year, currentFocusedDate.getMonth(), currentFocusedDate.getDate());\n\n this.selected.emit(clampDate(nextFocusedDate, this.min(), this.max()));\n }\n\n protected _isYearFocused(year: number): boolean {\n return year === this.focusedDate().getFullYear();\n }\n\n protected _isYearSelected(year: number): boolean {\n return year === this.value()?.getFullYear();\n }\n\n protected _isCurrentYear(year: number): boolean {\n return year === new Date().getFullYear();\n }\n\n protected _isYearDisabled(year: number): boolean {\n const min = this.min();\n const max = this.max();\n\n return (isValidDate(min) && year < min.getFullYear()) || (isValidDate(max) && year > max.getFullYear());\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n let focusedDate = this.focusedDate();\n\n switch (event.code) {\n case 'ArrowUp':\n focusedDate = addYears(focusedDate, -yearsPerRow);\n break;\n case 'ArrowDown':\n focusedDate = addYears(focusedDate, yearsPerRow);\n break;\n case 'ArrowLeft':\n focusedDate = addYears(focusedDate, -1);\n break;\n case 'ArrowRight':\n focusedDate = addYears(focusedDate, 1);\n break;\n case 'Home':\n focusedDate = new Date(this._years()[0], focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'End':\n focusedDate = new Date(this._years().at(-1)!, focusedDate.getMonth(), focusedDate.getDate());\n break;\n case 'PageUp':\n focusedDate = addYears(focusedDate, -yearsPerPage);\n break;\n case 'PageDown':\n focusedDate = addYears(focusedDate, yearsPerPage);\n break;\n }\n\n this.focusedDate.set(clampDate(focusedDate, this.min(), this.max()));\n }\n\n private _getFirstYearOffset(focusedYear: number, minYear?: number, maxYear: number = (yearsPerPage - 1)): number {\n // If we have a max year we calculate an offset so that the max year will be the last in the years list\n // Otherwise if we have a min year we calculate an offset so that the min year will be the first in the years list\n const minMaxOffset = maxYear - yearsPerPage + 1 || minYear || 0;\n return positiveModulus(focusedYear - minMaxOffset, yearsPerPage);\n }\n}\n","<div class=\"ids-year-selector__years-grid ids-calendar-grid\">\n @for (year of _years(); track $index) {\n @let isSelected = _isYearSelected(year);\n @let isFocused = _isYearFocused(year);\n @let isCurrentYear = _isCurrentYear(year);\n @let tabIndex = isFocused ? 0 : -1;\n @let isDisabled = _isYearDisabled(year);\n <div class=\"ids-calendar-cell\">\n <button\n type=\"button\"\n class=\"ids-year-selector__year-button ids-calendar-button\"\n [attr.disabled]=\"isDisabled || null\"\n [attr.aria-pressed]=\"isSelected\"\n [attr.aria-current]=\"isCurrentYear\"\n [tabIndex]=\"tabIndex\"\n [class.ids-year-selector__year-button--current-year]=\"isCurrentYear\"\n [class.ids-calendar-button-selected]=\"isSelected\"\n [class.ids-calendar-button-focused]=\"isFocused\"\n (click)=\"_selectYear($event, year)\"\n >{{ year }}</button>\n </div>\n }\n</div>\n","import { IdsCalendarPage } from './calendar-page';\n\nimport { IdsDatepickerIntl } from '../datepicker-intl';\nimport { IdsDaySelectorComponent } from '../day-selector/day-selector.component';\nimport { IdsMonthSelectorComponent } from '../month-selector/month-selector.component';\nimport { IdsDatepickerView, IdsDatepickerViewType } from '../tokens/datepicker-view';\nimport { IdsYearSelectorComponent } from '../year-selector/year-selector.component';\n\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, linkedSignal, OnInit, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IdsButtonComponent } from '@i-cell/ids-angular/button';\nimport { clampDate, ComponentBaseWithDefaults, IdsSize, IdsSizeType, isValidDate, startOfMonth, startOfYear } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\n@Component({\n selector: 'ids-calendar',\n imports: [\n IdsButtonComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsDaySelectorComponent,\n IdsMonthSelectorComponent,\n IdsYearSelectorComponent,\n ],\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkTrapFocus],\n host: {\n 'class': 'ids-calendar-surface',\n },\n})\nexport class IdsCalendarComponent extends ComponentBaseWithDefaults<object> implements OnInit {\n protected readonly _defaultConfig = {};\n protected override get _hostName(): string {\n return 'calendar';\n }\n\n private _cdRef = inject(ChangeDetectorRef);\n private _intl = inject(IdsDatepickerIntl);\n\n public value = input<Date | null>(null);\n public size = input.required<IdsSizeType>();\n public view = input.required<IdsDatepickerViewType>();\n public min = input<Date | null>(null);\n public max = input<Date | null>(null);\n\n public selected = output<Date>();\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _calendarPage = viewChild(IdsCalendarPage);\n\n protected _view = linkedSignal(() => this.view());\n\n protected _hostClasses = computed(() => this._getHostClasses([this.size()]));\n\n protected _headerButtonSize = computed(() => (this.size() === IdsSize.DENSE ? IdsSize.COMPACT : this.size()));\n protected _headerLabel = computed<string>(() => this._calendarPage()?.headerLabel() ?? '');\n\n protected _prevPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.prevMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.prevYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.prevYearsPageLabel;\n }\n });\n\n protected _nextPageLabel = computed<string>(() => {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n return this._intl.nextMonthLabel;\n case IdsDatepickerView.MONTH:\n return this._intl.nextYearLabel;\n case IdsDatepickerView.YEAR:\n return this._intl.nextYearsPageLabel;\n }\n });\n\n protected _switchViewLabel = computed<string>(() => (\n this._view() === IdsDatepickerView.DAY ? this._intl.switchToYearSelectorLabel : this._intl.switchToDaySelectorLabel\n ));\n\n protected _focusedDate: Date = new Date();\n\n public ngOnInit(): void {\n this._intl.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._cdRef.markForCheck());\n this._setFocusedDate(this.value());\n }\n\n protected _selectYear(selectedYear: Date): void {\n this._setFocusedDate(selectedYear);\n this.yearSelected.emit(startOfYear(selectedYear));\n this._view.set(IdsDatepickerView.MONTH);\n }\n\n protected _selectMonth(selectedMonth: Date): void {\n this._setFocusedDate(selectedMonth);\n this.monthSelected.emit(startOfMonth(selectedMonth));\n this._view.set(IdsDatepickerView.DAY);\n }\n\n protected _selectDate(date: Date): void {\n this.selected.emit(date);\n }\n\n protected _hasPrevPage(): boolean {\n return this._calendarPage()?.hasPreviousPage() ?? true;\n }\n\n protected _gotoPrevPage(): void {\n this._calendarPage()!.gotoPreviousPage();\n }\n\n protected _hasNextPage(): boolean {\n return this._calendarPage()?.hasNextPage() ?? true;\n }\n\n protected _gotoNextPage(): void {\n this._calendarPage()!.gotoNextPage();\n }\n\n protected _switchView(): void {\n switch (this._view()) {\n case IdsDatepickerView.DAY:\n this._view.set(IdsDatepickerView.YEAR);\n break;\n case IdsDatepickerView.YEAR:\n case IdsDatepickerView.MONTH:\n this._view.set(IdsDatepickerView.DAY);\n break;\n }\n }\n\n private _setFocusedDate(date: Date | null): void {\n const safeValue = isValidDate(date) ? date : new Date();\n this._focusedDate = clampDate(safeValue, this.min(), this.max());\n this._cdRef.markForCheck();\n }\n}\n","<div class=\"ids-calendar__header\">\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasPrevPage()\"\n [attr.aria-label]=\"_prevPageLabel()\"\n (click)=\"_gotoPrevPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-left\" [sizeCollection]=\"'big'\" />\n </button>\n <button\n type=\"button\"\n idsButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'text'\"\n [attr.aria-label]=\"_switchViewLabel()\"\n [attr.aria-description]=\"_headerLabel()\"\n (click)=\"_switchView()\"\n >\n {{ _headerLabel() }}\n <ids-icon icon-trailing aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-down\" />\n </button>\n <button\n type=\"button\"\n idsIconButton\n [size]=\"_headerButtonSize()\"\n [variant]=\"'surface'\"\n [appearance]=\"'standard'\"\n [disabled]=\"!_hasNextPage()\"\n [attr.aria-label]=\"_nextPageLabel()\"\n (click)=\"_gotoNextPage()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"chevron-right\" />\n </button>\n</div>\n@switch (_view()) {\n @case ('day') {\n <ids-day-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectDate($event)\" />\n }\n @case ('month') {\n <ids-month-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectMonth($event)\" />\n }\n @case ('year') {\n <ids-year-selector [value]=\"value()\" [min]=\"min()\" [max]=\"max()\" [(focusedDate)]=\"_focusedDate\" (selected)=\"_selectYear($event)\" />\n }\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const datepickerConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-datepicker-calendar-above',\n },\n];\n","import { IdsCalendarComponent } from './calendar/calendar.component';\nimport { IDS_DATEPICKER_DEFAULT_CONFIG, IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY, IdsDatepickerDefaultConfig } from './datepicker-defaults';\nimport { datepickerConnectedPositions } from './datepicker-positions';\nimport { IDS_DATE_FORMATTER } from './tokens/date-formatter';\nimport { IDS_DATE_PARSER } from './tokens/date-parser';\nimport { IdsDatepickerViewType } from './tokens/datepicker-view';\n\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { afterNextRender, booleanAttribute, ComponentRef, Directive, effect, ElementRef, forwardRef, inject, Injector, input, OnChanges, output, signal, SimpleChanges, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport { compareDates, deserializeDate, DirectiveBaseWithDefaults, equalDates, getValidDateOrNull, isValidDate } from '@i-cell/ids-angular/core';\nimport { IdsFormFieldComponent } from '@i-cell/ids-angular/forms';\nimport { filter, merge, Observable, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_DATEPICKER_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: 'input[idsDatepicker]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IdsDatepickerDirective),\n multi: true,\n },\n ],\n host: {\n '(input)': '_handleInput($event.target.value)',\n '(blur)': '_handleBlur()',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'idsDatepicker',\n})\nexport class IdsDatepickerDirective extends DirectiveBaseWithDefaults<IdsDatepickerDefaultConfig>\n implements OnChanges, ControlValueAccessor, Validator {\n\n protected override _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DATEPICKER_DEFAULT_CONFIG);\n protected override _hostClasses = signal('');\n\n private _viewContainerRef = inject(ViewContainerRef);\n private _elementRef = inject(ElementRef);\n private _parent = inject(IdsFormFieldComponent);\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n\n public formatter = input(inject(IDS_DATE_FORMATTER));\n public parser = input(inject(IDS_DATE_PARSER));\n\n public view = input<IdsDatepickerViewType>(this._defaultConfig.view);\n public minDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n public maxDate = input(null, { transform: (value: unknown) => getValidDateOrNull(deserializeDate(value)) });\n\n private _inputChanges = effect(() => {\n const min = this.minDate();\n const max = this.maxDate();\n const view = this.view();\n const size = this._parent.size();\n const calendar = this._componentRef?.instance;\n\n if (!calendar) {\n return;\n }\n\n if (!equalDates(min, calendar.min())) {\n this._componentRef?.setInput('min', min);\n }\n if (!equalDates(max, calendar.max())) {\n this._componentRef?.setInput('max', max);\n }\n if (view !== calendar.view()) {\n this._componentRef?.setInput('view', view);\n }\n if (size !== calendar.size()) {\n this._componentRef?.setInput('size', size);\n }\n });\n\n public openedInput = input<boolean, unknown>(false, { transform: booleanAttribute, alias: 'opened' });\n private _opened = signal(this.openedInput() ?? false);\n public opened = this._opened.asReadonly();\n\n public monthSelected = output<Date>();\n public yearSelected = output<Date>();\n\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _onValidatorChange: () => void = () => {};\n\n private _overlayRef: OverlayRef | null = null;\n private _componentRef: ComponentRef<IdsCalendarComponent> | null = null;\n private _scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n private _overlayCloseSub = Subscription.EMPTY;\n\n public get value(): Date | null {\n return deserializeDate(this._parent.controlDir()?.value);\n }\n\n private _isValid = signal(false);\n\n private _dateFormatValidator: ValidatorFn = (): ValidationErrors | null => (this._isValid() ? null : { idsDateFormat: true });\n\n private _minValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const min = this.minDate();\n return !min || !current || compareDates(min, current) <= 0 ? null : { 'idsDateMin': { min, current } };\n };\n\n private _maxValidator: ValidatorFn = (): ValidationErrors | null => {\n const current = getValidDateOrNull(deserializeDate(this.value));\n const max = this.maxDate();\n return !max || !current || compareDates(max, current) >= 0 ? null : { 'idsDateMax': { max, current } };\n };\n\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n private _validator = Validators.compose([this._dateFormatValidator, this._minValidator, this._maxValidator]) as ValidatorFn;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('opened' in changes) {\n if (this.openedInput()) {\n this.open();\n } else {\n this.close();\n }\n }\n if (('minDate' in changes && !changes['minDate'].firstChange) || ('maxDate' in changes && !changes['maxDate'].firstChange)) {\n this._onValidatorChange();\n }\n }\n\n // #region Value accessor implementation\n public writeValue(obj: unknown): void {\n this._isValid.set(this._isValidValue(deserializeDate(obj)));\n this._setInputValue(obj);\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n // #endregion\n\n // #region Validator implementation\n public validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n public registerOnValidatorChange?(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n // #endregion\n\n public open(): void {\n if (this.opened() || this._parent.disabled()) {\n return;\n }\n\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n\n this._overlayCloseSub = this._onOverlayClose(this._overlayRef).subscribe((event) => {\n event?.preventDefault();\n this.close();\n });\n this._onPageNavigationKeydown(this._overlayRef).subscribe((event) => event?.preventDefault());\n\n this._componentRef = this._overlayRef.attach(new ComponentPortal(IdsCalendarComponent, this._viewContainerRef));\n this._componentRef.setInput('value', this.value);\n this._componentRef.setInput('min', this.minDate());\n this._componentRef.setInput('max', this.maxDate());\n this._componentRef.setInput('view', this.view());\n this._componentRef.setInput('size', this._parent.size());\n\n this._componentRef.instance.selected.subscribe((selectedDate: Date) => {\n this._onChange(selectedDate);\n this._setInputValue(this.value);\n this._isValid.set(this._isValidValue(this.value));\n this._parent.controlDir()?.control?.updateValueAndValidity();\n this.close();\n });\n this._componentRef.instance.monthSelected.subscribe((selectedMonth: Date) => this.monthSelected.emit(selectedMonth));\n this._componentRef.instance.yearSelected.subscribe((selectedYear: Date) => this.yearSelected.emit(selectedYear));\n\n this._opened.set(true);\n }\n\n public close(): void {\n if (!this._opened()) {\n return;\n }\n\n this._overlayCloseSub.unsubscribe();\n this._overlayCloseSub = Subscription.EMPTY;\n\n this._disposeOverlay();\n\n this._opened.set(false);\n\n afterNextRender(() => this._elementRef.nativeElement.focus(), { injector: this._injector });\n }\n\n protected _handleInput(value: string): void {\n const parsed = this.parser()(value);\n this._isValid.set(this._isValidValue(parsed));\n\n const date = getValidDateOrNull(parsed);\n const valueChanged = !equalDates(date, this.value);\n\n if (!date || valueChanged) {\n this._onChange(date);\n }\n }\n\n protected _handleBlur(): void {\n this._onTouched();\n }\n\n protected _handleKeydown(event: KeyboardEvent): void {\n if (event.code === 'ArrowDown' && event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {\n this.open();\n }\n }\n\n private _isValidValue(value: unknown): boolean {\n return !value || isValidDate(value);\n }\n\n private _setInputValue(value: unknown): void {\n this._elementRef.nativeElement.value = isValidDate(value) ? this.formatter()(value) : '';\n }\n\n private _getOverlayConfig(): OverlayConfig {\n const overlayViewportMargin = 8;\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._parent.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(overlayViewportMargin)\n .withLockedPosition()\n .withPositions(datepickerConnectedPositions);\n\n return {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: [],\n direction: 'ltr',\n scrollStrategy: this._scrollStrategy,\n panelClass: 'ids-datepicker-panel',\n };\n }\n\n private _disposeOverlay(): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n this._componentRef = null;\n }\n }\n\n private _onOverlayClose(overlayRef: OverlayRef): Observable<MouseEvent | KeyboardEvent | void> {\n return merge(\n overlayRef.backdropClick(),\n overlayRef.detachments(),\n overlayRef.keydownEvents().pipe(filter((event) => event.code === 'Escape' && !hasModifierKey(event))),\n );\n }\n\n private _onPageNavigationKeydown(overlayRef: OverlayRef): Observable<KeyboardEvent> {\n return overlayRef.keydownEvents().pipe(filter((event) => [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n ].includes(event.code)));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -302,13 +302,13 @@ class IdsPaginatorComponent extends ComponentBaseWithDefaults {
302
302
  });
303
303
  }
304
304
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
305
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: IdsPaginatorComponent, isStandalone: true, selector: "ids-paginator", inputs: { pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showFirstLastButton: { classPropertyName: "showFirstLastButton", publicName: "showFirstLastButton", isSignal: true, isRequired: false, transformFunction: null }, showPrevNextLabel: { classPropertyName: "showPrevNextLabel", publicName: "showPrevNextLabel", isSignal: true, isRequired: false, transformFunction: null }, showPageInfo: { classPropertyName: "showPageInfo", publicName: "showPageInfo", isSignal: true, isRequired: false, transformFunction: null }, showPageButtons: { classPropertyName: "showPageButtons", publicName: "showPageButtons", isSignal: true, isRequired: false, transformFunction: null }, showAllPages: { classPropertyName: "showAllPages", publicName: "showAllPages", isSignal: true, isRequired: false, transformFunction: null }, maxDisplayedItemCount: { classPropertyName: "maxDisplayedItemCount", publicName: "maxDisplayedItemCount", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, pageButtonAppearance: { classPropertyName: "pageButtonAppearance", publicName: "pageButtonAppearance", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, compactLayout: { classPropertyName: "compactLayout", publicName: "compactLayout", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageChanged: "pageChanged" }, host: { listeners: { "keydown": "_handleKeyDown($event)" } }, usesInheritance: true, ngImport: i0, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horizontal\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
305
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: IdsPaginatorComponent, isStandalone: true, selector: "ids-paginator", inputs: { pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showFirstLastButton: { classPropertyName: "showFirstLastButton", publicName: "showFirstLastButton", isSignal: true, isRequired: false, transformFunction: null }, showPrevNextLabel: { classPropertyName: "showPrevNextLabel", publicName: "showPrevNextLabel", isSignal: true, isRequired: false, transformFunction: null }, showPageInfo: { classPropertyName: "showPageInfo", publicName: "showPageInfo", isSignal: true, isRequired: false, transformFunction: null }, showPageButtons: { classPropertyName: "showPageButtons", publicName: "showPageButtons", isSignal: true, isRequired: false, transformFunction: null }, showAllPages: { classPropertyName: "showAllPages", publicName: "showAllPages", isSignal: true, isRequired: false, transformFunction: null }, maxDisplayedItemCount: { classPropertyName: "maxDisplayedItemCount", publicName: "maxDisplayedItemCount", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, pageButtonAppearance: { classPropertyName: "pageButtonAppearance", publicName: "pageButtonAppearance", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, compactLayout: { classPropertyName: "compactLayout", publicName: "compactLayout", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageChanged: "pageChanged" }, host: { listeners: { "keydown": "_handleKeyDown($event)" } }, usesInheritance: true, ngImport: i0, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horiz\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
306
306
  }
307
307
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsPaginatorComponent, decorators: [{
308
308
  type: Component,
309
309
  args: [{ selector: 'ids-paginator', imports: [IdsIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
310
310
  '(keydown)': '_handleKeyDown($event)',
311
- }, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horizontal\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n" }]
311
+ }, template: "<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horiz\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n" }]
312
312
  }], ctorParameters: () => [] });
313
313
 
314
314
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-paginator.mjs","sources":["../../../projects/widgets/paginator/types/paginator-appearance.type.ts","../../../projects/widgets/paginator/types/paginator-events.class.ts","../../../projects/widgets/paginator/types/paginator-variant.type.ts","../../../projects/widgets/paginator/paginator-defaults.ts","../../../projects/widgets/paginator/paginator-intl.ts","../../../projects/widgets/paginator/paginator.component.ts","../../../projects/widgets/paginator/paginator.component.html","../../../projects/widgets/paginator/i-cell-ids-angular-paginator.ts"],"sourcesContent":["export const IdsPaginatorPageButtonAppearance = {\n PLAIN: 'plain',\n} as const;\n\nexport type IdsPaginatorPageButtonAppearanceType = (typeof IdsPaginatorPageButtonAppearance)[keyof typeof IdsPaginatorPageButtonAppearance];\n","export class IdsPaginatorPageChangeEvent {\n public pageIndex!: number;\n public previousPageIndex?: number;\n public pageSize!: number;\n public length!: number;\n}\n","export const IdsPaginatorVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsPaginatorVariantType = (typeof IdsPaginatorVariant)[keyof typeof IdsPaginatorVariant];\n","/* eslint-disable no-magic-numbers */\nimport { IdsPaginatorPageButtonAppearance, IdsPaginatorPageButtonAppearanceType } from './types/paginator-appearance.type';\nimport { IdsPaginatorVariant, IdsPaginatorVariantType } from './types/paginator-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSizeType, IdsSize } from '@i-cell/ids-angular/core';\n\nexport const DEFAULT_PAGE_SIZE = 10;\nexport const MAX_DISPLAYED_ITEM_COUNT = 7;\n\nexport interface IdsPaginatorDefaultConfig {\n pageSize?: number\n pageSizeOptions?: number[]\n showFirstLastButton?: boolean\n showPrevNextLabel?: boolean\n showPageInfo?: boolean\n showPageButtons?: boolean\n showAllPages?: boolean\n maxDisplayedItemCount?: number\n size?: IdsSizeType\n variant?: IdsPaginatorVariantType\n pageButtonAppearance?: IdsPaginatorPageButtonAppearanceType\n debounceTime: number\n}\n\nexport const IDS_PAGINATOR_DEFAULT_CONFIG = new InjectionToken<IdsPaginatorDefaultConfig>(\n 'IDS_PAGINATOR_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY(): Required<IdsPaginatorDefaultConfig> {\n return {\n pageSize: DEFAULT_PAGE_SIZE,\n pageSizeOptions: [\n 10,\n 20,\n 50,\n 100,\n ],\n showFirstLastButton: true,\n showPrevNextLabel: false,\n showPageInfo: true,\n showPageButtons: true,\n showAllPages: false,\n maxDisplayedItemCount: MAX_DISPLAYED_ITEM_COUNT,\n size: IdsSize.COMPACT,\n variant: IdsPaginatorVariant.SURFACE,\n pageButtonAppearance: IdsPaginatorPageButtonAppearance.PLAIN,\n debounceTime: 300,\n };\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsPaginatorIntl {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public nextPageLabel = 'Next';\n public previousPageLabel = 'Previous';\n public nextPageAriaLabel = 'Go to next page';\n public previousPageAriaLabel = 'Go to previous page';\n public firstPageAriaLabel = 'Go to first page';\n public lastPageAriaLabel = 'Go to last page';\n\n public getPageAriaLabel = (page: string): string => `Go to page ${page}`;\n\n public getRangeLabel = (page: number, pageSize: number, length: number): string => {\n if (length === 0 || pageSize === 0) {\n return 'Page 0 of 0';\n }\n\n const maxPageCount = Math.ceil(length / pageSize);\n\n return `Page ${page + 1} of ${maxPageCount}`;\n };\n}\n\n/** @docs-private */\nexport function IDS_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl?: IdsPaginatorIntl): IdsPaginatorIntl {\n return parentIntl || new IdsPaginatorIntl();\n}\n\n/** @docs-private */\nexport const IDS_PAGINATOR_INTL_PROVIDER = {\n // If there is already an IdsPaginatorIntl available, use that. Otherwise, provide a new one.\n provide: IdsPaginatorIntl,\n deps: [\n [\n new Optional(),\n new SkipSelf(),\n IdsPaginatorIntl,\n ],\n ],\n useFactory: IDS_PAGINATOR_INTL_PROVIDER_FACTORY,\n};\n","import { DEFAULT_PAGE_SIZE, IDS_PAGINATOR_DEFAULT_CONFIG, IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY, IdsPaginatorDefaultConfig } from './paginator-defaults';\nimport { IdsPaginatorIntl } from './paginator-intl';\nimport { IdsPaginatorPageButtonAppearanceType } from './types/paginator-appearance.type';\nimport { IdsPaginatorPageChangeEvent } from './types/paginator-events.class';\nimport { IdsPaginatorVariantType } from './types/paginator-variant.type';\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, ElementRef, inject, input, isDevMode, model, output, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { createClassList, isNumberEven, IdsSizeType, coerceNumberAttribute, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { debounceTime, Subject } from 'rxjs';\n\nconst defaultConfig = IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-paginator',\n imports: [IdsIconComponent],\n templateUrl: './paginator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': '_handleKeyDown($event)',\n },\n})\nexport class IdsPaginatorComponent extends ComponentBaseWithDefaults<IdsPaginatorDefaultConfig> {\n protected override get _hostName(): string {\n return 'paginator';\n }\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _hostElementRef = inject(ElementRef);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_PAGINATOR_DEFAULT_CONFIG);\n\n private _pageEventDebouncer = new Subject<IdsPaginatorPageChangeEvent>();\n\n protected readonly _intl = inject(IdsPaginatorIntl);\n\n public pageSize = input<number, unknown>(this._defaultConfig.pageSize, { transform: coerceNumberAttribute });\n public pageSizeOptions = input<number[]>(this._defaultConfig.pageSizeOptions);\n public showFirstLastButton = input<boolean>(this._defaultConfig.showFirstLastButton);\n public showPrevNextLabel = input<boolean>(this._defaultConfig.showPrevNextLabel);\n public showPageInfo = input<boolean>(this._defaultConfig.showPageInfo);\n public showPageButtons = input<boolean>(this._defaultConfig.showPageButtons);\n public showAllPages = input<boolean>(this._defaultConfig.showAllPages);\n public maxDisplayedItemCount = input<number>(this._defaultConfig.maxDisplayedItemCount);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsPaginatorVariantType>(this._defaultConfig.variant);\n public pageButtonAppearance = input<IdsPaginatorPageButtonAppearanceType>(this._defaultConfig.pageButtonAppearance);\n /** The total number of items that are being paginated. */\n public length = input.required<number, number>({ transform: coerceNumberAttribute });\n public disabled = input<boolean>(false);\n public compactLayout = input<boolean>(false);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n this.compactLayout() ? 'compact-layout' : null,\n ]));\n\n protected _pageButtonClasses = computed(() => createClassList('ids-paginator__page-button', [this.pageButtonAppearance()]));\n\n protected _safePageSizeData = computed(() => this._getSafePageSizeData(this.pageSizeOptions(), this.pageSize()));\n protected _pageButtonIdPrefix = computed(() => `${this.id()}__page-button-`);\n\n /**\n * The index (0 based!) of the currently selected page.\n *\n * Usage note (!):\n * In case paging initiates an async process to update the data and an error occurs the pageIndex needs to be reset to the previous value from the outside.\n * If `pageIndex` is only 1-way bound (input) the model signal's value won't be updated, it needs 2-way binding!\n * Possible cause: https://github.com/angular/angular/issues/57124\n */\n public pageIndex = model(0);\n\n private _pageIndexValidation = effect(() => {\n const pageIndex = this._pageIndex();\n const numberOfPages = this._numberOfPages();\n if (pageIndex > 0 && numberOfPages < (pageIndex + 1)) {\n this.stepPage(0);\n }\n });\n\n protected _pageIndex = computed(() => Math.max(coerceNumberAttribute(this.pageIndex()) || 0, 0));\n\n private _numberOfPages = computed(() => {\n if (!this.pageSize()) {\n return 0;\n }\n return Math.ceil(this.length() / this.pageSize());\n });\n\n private _hasPreviousPage = computed(() =>\n this._pageIndex() >= 1 && this.pageSize() !== 0,\n );\n\n private _hasNextPage = computed(() => {\n const maxPageIndex = this._numberOfPages() - 1;\n return this._pageIndex() < maxPageIndex && this.pageSize() !== 0;\n });\n\n protected _isPreviousButtonDisabled = computed(() => this.disabled() || !this._hasPreviousPage());\n protected _isNextButtonDisabled = computed(() => this.disabled() || !this._hasNextPage());\n\n // eslint-disable-next-line arrow-body-style\n protected _pageButtonLabels = computed<string[]>(() => {\n return this.compactLayout()\n ? []\n : this._getPageButtonLabels(\n this._pageIndex(), this._numberOfPages(), this.showAllPages(), this.maxDisplayedItemCount(), this.showPageButtons(),\n );\n });\n\n public pageChanged = output<IdsPaginatorPageChangeEvent>();\n\n private _handleKeyDown(event: KeyboardEvent): void {\n event.stopPropagation();\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n const navigationKeys = ['ArrowLeft', 'ArrowRight', 'PageDown', 'PageUp', 'Home', 'End'];\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'PageDown':\n event.preventDefault();\n this.stepPreviousPage();\n break;\n case 'ArrowRight':\n case 'PageUp':\n event.preventDefault();\n this.stepNextPage();\n break;\n case 'Home':\n event.preventDefault();\n this.stepFirstPage();\n break;\n case 'End':\n event.preventDefault();\n this.stepLastPage();\n break;\n default:\n break;\n }\n\n if (event.key !== 'Tab' && navigationKeys.includes(event.key)) {\n const pageButtonId = `${this._pageButtonIdPrefix()}${this._pageIndex() + 1}`; // after navigation pageIndex is new value now\n const button = this._hostElementRef.nativeElement.querySelector(`button#${pageButtonId}`);\n button?.focus();\n }\n }\n\n constructor() {\n super();\n\n this._intl.changes.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n\n this._pageEventDebouncer.pipe(\n debounceTime(this._defaultConfig.debounceTime),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe((pageEvent) => {\n this.pageChanged.emit(pageEvent);\n });\n }\n\n private _getSafePageSizeData(\n pageSizeOptions: number[],\n pageSize: number,\n ): { safePageSizeOptions: number[], safePageSize: number } {\n if (isDevMode() && (!pageSize || pageSize < 0)) {\n throw this._createHostError('invalid pageSize value. Must be a number and greater than 0');\n }\n\n const safePageSizeOptions = pageSizeOptions.slice();\n if (isDevMode() && !safePageSizeOptions.includes(pageSize)) {\n throw this._createHostError('invalid pageSize. pageSizeOptions not includes pageSize. Use an item from pageSizeOptions.');\n }\n safePageSizeOptions.sort((a, b) => a - b);\n const safePageSize: number = safePageSizeOptions.length !== 0 ? safePageSizeOptions[0] : DEFAULT_PAGE_SIZE;\n\n return {\n safePageSize,\n safePageSizeOptions,\n };\n }\n\n private _getPageButtonLabels(\n pageIndex: number, numberOfPages: number, showAllPages: boolean, maxDisplayedItemCount: number, enabled: boolean,\n ): string[] {\n const allPages = [...Array(numberOfPages).keys()].map((item) => (item + 1).toString());\n if (!enabled) {\n return [];\n }\n if (showAllPages || numberOfPages <= maxDisplayedItemCount) {\n return allPages;\n }\n\n return this._getTruncatedPageLabels(allPages, pageIndex, maxDisplayedItemCount);\n }\n\n private _getTruncatedPageLabels(\n allPages: string[],\n pageIndex: number,\n maxDisplayedItemCount: number,\n ): string[] {\n if (isDevMode() && isNumberEven(maxDisplayedItemCount)) {\n throw this._createHostError('maxDisplayedItemCount should be an odd number');\n }\n const center = Math.ceil(maxDisplayedItemCount / 2);\n const actualPage = pageIndex + 1;\n const lastPage = +(allPages.at(-1)!);\n const isTruncatedRight = actualPage <= center;\n const isTruncatedBoth = actualPage > center && actualPage <= lastPage - center;\n const isTruncatedLeft = actualPage > lastPage - center;\n\n if (isTruncatedRight) {\n const x = maxDisplayedItemCount - 2; // 2 = 1 last page, 1 truncation\n return [\n ...allPages.slice(0, x),\n 'tr',\n lastPage.toString(),\n ];\n }\n\n if (isTruncatedBoth) {\n // eslint-disable-next-line no-magic-numbers\n const x = (maxDisplayedItemCount - 5) / 2; // 5 = 1 fist page + 1 last page + 2 truncation + 1 actual page\n return [\n '1',\n 'tl',\n ...allPages.slice(pageIndex - x, pageIndex + x + 1),\n 'tr',\n lastPage.toString(),\n ];\n }\n\n if (isTruncatedLeft) {\n const x = maxDisplayedItemCount - 2; // 2 = 1 last page, 1 truncation\n return [\n '1',\n 'tl',\n ...allPages.slice(lastPage - x),\n ];\n }\n\n return [];\n }\n\n public stepNextPage(): void {\n if (!this._hasNextPage()) {\n return;\n }\n this.stepPage(this._pageIndex() + 1);\n }\n\n public stepPreviousPage(): void {\n if (!this._hasPreviousPage()) {\n return;\n }\n this.stepPage(this._pageIndex() - 1);\n }\n\n public stepFirstPage(): void {\n if (!this._hasPreviousPage()) {\n return;\n }\n this.stepPage(0);\n }\n\n public stepLastPage(): void {\n if (!this._hasNextPage()) {\n return;\n }\n this.stepPage(this._numberOfPages() - 1);\n }\n\n public stepPage(pageIndex: number): void {\n const previousPageIndex = this._pageIndex();\n this.pageIndex.set(pageIndex);\n this._debouncePageEvent(previousPageIndex, pageIndex);\n }\n\n private _debouncePageEvent(previousPageIndex: number, pageIndex: number): void {\n this._pageEventDebouncer.next({\n previousPageIndex,\n pageIndex,\n pageSize: this.pageSize(),\n length: this.length(),\n });\n }\n}\n","<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horizontal\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-paginator.mjs","sources":["../../../projects/widgets/paginator/types/paginator-appearance.type.ts","../../../projects/widgets/paginator/types/paginator-events.class.ts","../../../projects/widgets/paginator/types/paginator-variant.type.ts","../../../projects/widgets/paginator/paginator-defaults.ts","../../../projects/widgets/paginator/paginator-intl.ts","../../../projects/widgets/paginator/paginator.component.ts","../../../projects/widgets/paginator/paginator.component.html","../../../projects/widgets/paginator/i-cell-ids-angular-paginator.ts"],"sourcesContent":["export const IdsPaginatorPageButtonAppearance = {\n PLAIN: 'plain',\n} as const;\n\nexport type IdsPaginatorPageButtonAppearanceType = (typeof IdsPaginatorPageButtonAppearance)[keyof typeof IdsPaginatorPageButtonAppearance];\n","export class IdsPaginatorPageChangeEvent {\n public pageIndex!: number;\n public previousPageIndex?: number;\n public pageSize!: number;\n public length!: number;\n}\n","export const IdsPaginatorVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsPaginatorVariantType = (typeof IdsPaginatorVariant)[keyof typeof IdsPaginatorVariant];\n","/* eslint-disable no-magic-numbers */\nimport { IdsPaginatorPageButtonAppearance, IdsPaginatorPageButtonAppearanceType } from './types/paginator-appearance.type';\nimport { IdsPaginatorVariant, IdsPaginatorVariantType } from './types/paginator-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSizeType, IdsSize } from '@i-cell/ids-angular/core';\n\nexport const DEFAULT_PAGE_SIZE = 10;\nexport const MAX_DISPLAYED_ITEM_COUNT = 7;\n\nexport interface IdsPaginatorDefaultConfig {\n pageSize?: number\n pageSizeOptions?: number[]\n showFirstLastButton?: boolean\n showPrevNextLabel?: boolean\n showPageInfo?: boolean\n showPageButtons?: boolean\n showAllPages?: boolean\n maxDisplayedItemCount?: number\n size?: IdsSizeType\n variant?: IdsPaginatorVariantType\n pageButtonAppearance?: IdsPaginatorPageButtonAppearanceType\n debounceTime: number\n}\n\nexport const IDS_PAGINATOR_DEFAULT_CONFIG = new InjectionToken<IdsPaginatorDefaultConfig>(\n 'IDS_PAGINATOR_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY(): Required<IdsPaginatorDefaultConfig> {\n return {\n pageSize: DEFAULT_PAGE_SIZE,\n pageSizeOptions: [\n 10,\n 20,\n 50,\n 100,\n ],\n showFirstLastButton: true,\n showPrevNextLabel: false,\n showPageInfo: true,\n showPageButtons: true,\n showAllPages: false,\n maxDisplayedItemCount: MAX_DISPLAYED_ITEM_COUNT,\n size: IdsSize.COMPACT,\n variant: IdsPaginatorVariant.SURFACE,\n pageButtonAppearance: IdsPaginatorPageButtonAppearance.PLAIN,\n debounceTime: 300,\n };\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsPaginatorIntl {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public nextPageLabel = 'Next';\n public previousPageLabel = 'Previous';\n public nextPageAriaLabel = 'Go to next page';\n public previousPageAriaLabel = 'Go to previous page';\n public firstPageAriaLabel = 'Go to first page';\n public lastPageAriaLabel = 'Go to last page';\n\n public getPageAriaLabel = (page: string): string => `Go to page ${page}`;\n\n public getRangeLabel = (page: number, pageSize: number, length: number): string => {\n if (length === 0 || pageSize === 0) {\n return 'Page 0 of 0';\n }\n\n const maxPageCount = Math.ceil(length / pageSize);\n\n return `Page ${page + 1} of ${maxPageCount}`;\n };\n}\n\n/** @docs-private */\nexport function IDS_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl?: IdsPaginatorIntl): IdsPaginatorIntl {\n return parentIntl || new IdsPaginatorIntl();\n}\n\n/** @docs-private */\nexport const IDS_PAGINATOR_INTL_PROVIDER = {\n // If there is already an IdsPaginatorIntl available, use that. Otherwise, provide a new one.\n provide: IdsPaginatorIntl,\n deps: [\n [\n new Optional(),\n new SkipSelf(),\n IdsPaginatorIntl,\n ],\n ],\n useFactory: IDS_PAGINATOR_INTL_PROVIDER_FACTORY,\n};\n","import { DEFAULT_PAGE_SIZE, IDS_PAGINATOR_DEFAULT_CONFIG, IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY, IdsPaginatorDefaultConfig } from './paginator-defaults';\nimport { IdsPaginatorIntl } from './paginator-intl';\nimport { IdsPaginatorPageButtonAppearanceType } from './types/paginator-appearance.type';\nimport { IdsPaginatorPageChangeEvent } from './types/paginator-events.class';\nimport { IdsPaginatorVariantType } from './types/paginator-variant.type';\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, ElementRef, inject, input, isDevMode, model, output, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { createClassList, isNumberEven, IdsSizeType, coerceNumberAttribute, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { debounceTime, Subject } from 'rxjs';\n\nconst defaultConfig = IDS_PAGINATOR_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-paginator',\n imports: [IdsIconComponent],\n templateUrl: './paginator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': '_handleKeyDown($event)',\n },\n})\nexport class IdsPaginatorComponent extends ComponentBaseWithDefaults<IdsPaginatorDefaultConfig> {\n protected override get _hostName(): string {\n return 'paginator';\n }\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _hostElementRef = inject(ElementRef);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_PAGINATOR_DEFAULT_CONFIG);\n\n private _pageEventDebouncer = new Subject<IdsPaginatorPageChangeEvent>();\n\n protected readonly _intl = inject(IdsPaginatorIntl);\n\n public pageSize = input<number, unknown>(this._defaultConfig.pageSize, { transform: coerceNumberAttribute });\n public pageSizeOptions = input<number[]>(this._defaultConfig.pageSizeOptions);\n public showFirstLastButton = input<boolean>(this._defaultConfig.showFirstLastButton);\n public showPrevNextLabel = input<boolean>(this._defaultConfig.showPrevNextLabel);\n public showPageInfo = input<boolean>(this._defaultConfig.showPageInfo);\n public showPageButtons = input<boolean>(this._defaultConfig.showPageButtons);\n public showAllPages = input<boolean>(this._defaultConfig.showAllPages);\n public maxDisplayedItemCount = input<number>(this._defaultConfig.maxDisplayedItemCount);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsPaginatorVariantType>(this._defaultConfig.variant);\n public pageButtonAppearance = input<IdsPaginatorPageButtonAppearanceType>(this._defaultConfig.pageButtonAppearance);\n /** The total number of items that are being paginated. */\n public length = input.required<number, number>({ transform: coerceNumberAttribute });\n public disabled = input<boolean>(false);\n public compactLayout = input<boolean>(false);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n this.compactLayout() ? 'compact-layout' : null,\n ]));\n\n protected _pageButtonClasses = computed(() => createClassList('ids-paginator__page-button', [this.pageButtonAppearance()]));\n\n protected _safePageSizeData = computed(() => this._getSafePageSizeData(this.pageSizeOptions(), this.pageSize()));\n protected _pageButtonIdPrefix = computed(() => `${this.id()}__page-button-`);\n\n /**\n * The index (0 based!) of the currently selected page.\n *\n * Usage note (!):\n * In case paging initiates an async process to update the data and an error occurs the pageIndex needs to be reset to the previous value from the outside.\n * If `pageIndex` is only 1-way bound (input) the model signal's value won't be updated, it needs 2-way binding!\n * Possible cause: https://github.com/angular/angular/issues/57124\n */\n public pageIndex = model(0);\n\n private _pageIndexValidation = effect(() => {\n const pageIndex = this._pageIndex();\n const numberOfPages = this._numberOfPages();\n if (pageIndex > 0 && numberOfPages < (pageIndex + 1)) {\n this.stepPage(0);\n }\n });\n\n protected _pageIndex = computed(() => Math.max(coerceNumberAttribute(this.pageIndex()) || 0, 0));\n\n private _numberOfPages = computed(() => {\n if (!this.pageSize()) {\n return 0;\n }\n return Math.ceil(this.length() / this.pageSize());\n });\n\n private _hasPreviousPage = computed(() =>\n this._pageIndex() >= 1 && this.pageSize() !== 0,\n );\n\n private _hasNextPage = computed(() => {\n const maxPageIndex = this._numberOfPages() - 1;\n return this._pageIndex() < maxPageIndex && this.pageSize() !== 0;\n });\n\n protected _isPreviousButtonDisabled = computed(() => this.disabled() || !this._hasPreviousPage());\n protected _isNextButtonDisabled = computed(() => this.disabled() || !this._hasNextPage());\n\n // eslint-disable-next-line arrow-body-style\n protected _pageButtonLabels = computed<string[]>(() => {\n return this.compactLayout()\n ? []\n : this._getPageButtonLabels(\n this._pageIndex(), this._numberOfPages(), this.showAllPages(), this.maxDisplayedItemCount(), this.showPageButtons(),\n );\n });\n\n public pageChanged = output<IdsPaginatorPageChangeEvent>();\n\n private _handleKeyDown(event: KeyboardEvent): void {\n event.stopPropagation();\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n const navigationKeys = ['ArrowLeft', 'ArrowRight', 'PageDown', 'PageUp', 'Home', 'End'];\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'PageDown':\n event.preventDefault();\n this.stepPreviousPage();\n break;\n case 'ArrowRight':\n case 'PageUp':\n event.preventDefault();\n this.stepNextPage();\n break;\n case 'Home':\n event.preventDefault();\n this.stepFirstPage();\n break;\n case 'End':\n event.preventDefault();\n this.stepLastPage();\n break;\n default:\n break;\n }\n\n if (event.key !== 'Tab' && navigationKeys.includes(event.key)) {\n const pageButtonId = `${this._pageButtonIdPrefix()}${this._pageIndex() + 1}`; // after navigation pageIndex is new value now\n const button = this._hostElementRef.nativeElement.querySelector(`button#${pageButtonId}`);\n button?.focus();\n }\n }\n\n constructor() {\n super();\n\n this._intl.changes.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n\n this._pageEventDebouncer.pipe(\n debounceTime(this._defaultConfig.debounceTime),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe((pageEvent) => {\n this.pageChanged.emit(pageEvent);\n });\n }\n\n private _getSafePageSizeData(\n pageSizeOptions: number[],\n pageSize: number,\n ): { safePageSizeOptions: number[], safePageSize: number } {\n if (isDevMode() && (!pageSize || pageSize < 0)) {\n throw this._createHostError('invalid pageSize value. Must be a number and greater than 0');\n }\n\n const safePageSizeOptions = pageSizeOptions.slice();\n if (isDevMode() && !safePageSizeOptions.includes(pageSize)) {\n throw this._createHostError('invalid pageSize. pageSizeOptions not includes pageSize. Use an item from pageSizeOptions.');\n }\n safePageSizeOptions.sort((a, b) => a - b);\n const safePageSize: number = safePageSizeOptions.length !== 0 ? safePageSizeOptions[0] : DEFAULT_PAGE_SIZE;\n\n return {\n safePageSize,\n safePageSizeOptions,\n };\n }\n\n private _getPageButtonLabels(\n pageIndex: number, numberOfPages: number, showAllPages: boolean, maxDisplayedItemCount: number, enabled: boolean,\n ): string[] {\n const allPages = [...Array(numberOfPages).keys()].map((item) => (item + 1).toString());\n if (!enabled) {\n return [];\n }\n if (showAllPages || numberOfPages <= maxDisplayedItemCount) {\n return allPages;\n }\n\n return this._getTruncatedPageLabels(allPages, pageIndex, maxDisplayedItemCount);\n }\n\n private _getTruncatedPageLabels(\n allPages: string[],\n pageIndex: number,\n maxDisplayedItemCount: number,\n ): string[] {\n if (isDevMode() && isNumberEven(maxDisplayedItemCount)) {\n throw this._createHostError('maxDisplayedItemCount should be an odd number');\n }\n const center = Math.ceil(maxDisplayedItemCount / 2);\n const actualPage = pageIndex + 1;\n const lastPage = +(allPages.at(-1)!);\n const isTruncatedRight = actualPage <= center;\n const isTruncatedBoth = actualPage > center && actualPage <= lastPage - center;\n const isTruncatedLeft = actualPage > lastPage - center;\n\n if (isTruncatedRight) {\n const x = maxDisplayedItemCount - 2; // 2 = 1 last page, 1 truncation\n return [\n ...allPages.slice(0, x),\n 'tr',\n lastPage.toString(),\n ];\n }\n\n if (isTruncatedBoth) {\n // eslint-disable-next-line no-magic-numbers\n const x = (maxDisplayedItemCount - 5) / 2; // 5 = 1 fist page + 1 last page + 2 truncation + 1 actual page\n return [\n '1',\n 'tl',\n ...allPages.slice(pageIndex - x, pageIndex + x + 1),\n 'tr',\n lastPage.toString(),\n ];\n }\n\n if (isTruncatedLeft) {\n const x = maxDisplayedItemCount - 2; // 2 = 1 last page, 1 truncation\n return [\n '1',\n 'tl',\n ...allPages.slice(lastPage - x),\n ];\n }\n\n return [];\n }\n\n public stepNextPage(): void {\n if (!this._hasNextPage()) {\n return;\n }\n this.stepPage(this._pageIndex() + 1);\n }\n\n public stepPreviousPage(): void {\n if (!this._hasPreviousPage()) {\n return;\n }\n this.stepPage(this._pageIndex() - 1);\n }\n\n public stepFirstPage(): void {\n if (!this._hasPreviousPage()) {\n return;\n }\n this.stepPage(0);\n }\n\n public stepLastPage(): void {\n if (!this._hasNextPage()) {\n return;\n }\n this.stepPage(this._numberOfPages() - 1);\n }\n\n public stepPage(pageIndex: number): void {\n const previousPageIndex = this._pageIndex();\n this.pageIndex.set(pageIndex);\n this._debouncePageEvent(previousPageIndex, pageIndex);\n }\n\n private _debouncePageEvent(previousPageIndex: number, pageIndex: number): void {\n this._pageEventDebouncer.next({\n previousPageIndex,\n pageIndex,\n pageSize: this.pageSize(),\n length: this.length(),\n });\n }\n}\n","<nav class=\"ids-paginator__navigation-container\">\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow first\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.firstPageAriaLabel\"\n (click)=\"stepFirstPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-left\" [size]=\"size()\" />\n </button>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow previous\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isPreviousButtonDisabled()\"\n [attr.aria-label]=\"_intl.previousPageAriaLabel\"\n (click)=\"stepPreviousPage()\"\n >\n <ids-icon fontIcon=\"chevron-left\" [size]=\"size()\" />\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.previousPageLabel }}</span>\n }\n </button>\n\n @if (showPageButtons() && !compactLayout()) {\n <ul class=\"ids-paginator__page-button-container\">\n @for (pageButtonLabel of _pageButtonLabels(); track pageButtonLabel) {\n <li>\n @if (pageButtonLabel === \"tl\" || pageButtonLabel === \"tr\") {\n <button type=\"button\" disabled class=\"ids-paginator__page-button-truncation\" [class]=\"_pageButtonClasses()\">\n <ids-icon fontIcon=\"more-horiz\" [size]=\"size()\" />\n </button>\n } @else {\n <button\n #pageButtonElement\n type=\"button\"\n class=\"ids-paginator__page-button\"\n [id]=\"_pageButtonIdPrefix() + pageButtonLabel\"\n [disabled]=\"disabled()\"\n [class]=\"_pageButtonClasses()\"\n [class.active]=\"+pageButtonLabel === _pageIndex() + 1\"\n [attr.aria-label]=\"_intl.getPageAriaLabel(pageButtonLabel)\"\n [attr.aria-current]=\"+pageButtonLabel === _pageIndex() + 1 ? 'page' : null\"\n (click)=\"stepPage(+pageButtonLabel - 1)\"\n >\n <span>{{ pageButtonLabel }}</span>\n </button>\n }\n </li>\n }\n </ul>\n }\n\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow next\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.nextPageAriaLabel\"\n (click)=\"stepNextPage()\"\n >\n @if (showPrevNextLabel() && compactLayout()) {\n <span class=\"ids-paginator__page-button-arrow__label\">{{ _intl.nextPageLabel }}</span>\n }\n <ids-icon fontIcon=\"chevron-right\" [size]=\"size()\" />\n </button>\n\n @if (showFirstLastButton()) {\n <button\n type=\"button\"\n class=\"ids-paginator__page-button-arrow last\"\n [class]=\"_pageButtonClasses()\"\n [disabled]=\"_isNextButtonDisabled()\"\n [attr.aria-label]=\"_intl.lastPageAriaLabel\"\n (click)=\"stepLastPage()\"\n >\n <ids-icon fontIcon=\"chevron-double-right\" [size]=\"size()\" />\n </button>\n }\n\n <span class=\"ids-paginator__help-text\" [class.sr-only]=\"!showPageInfo()\">{{\n _intl.getRangeLabel(_pageIndex(), _safePageSizeData().safePageSize, length())\n }}</span>\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -114,28 +114,13 @@ class ServerSideDataSource {
114
114
 
115
115
  class IdsTableCellRenderer {
116
116
  constructor() {
117
- this._entities = [
118
- { rx: '&', entity: '&amp;' },
119
- { rx: '<', entity: '&lt;' },
120
- { rx: '>', entity: '&gt;' },
121
- { rx: '"', entity: '&quot;' },
122
- { rx: '\'', entity: '&#x27;' },
123
- { rx: '/', entity: '&#x2F;' },
124
- ];
125
- this.cellValue = input('', ...(ngDevMode ? [{ debugName: "cellValue", transform: (value) => this._preSanitize(String(value ?? '')) }] : [{ transform: (value) => this._preSanitize(String(value ?? '')) }]));
117
+ this.cellValue = input('', ...(ngDevMode ? [{ debugName: "cellValue", transform: (value) => String(value ?? '') }] : [{ transform: (value) => String(value ?? '') }]));
126
118
  this.colDef = input.required(...(ngDevMode ? [{ debugName: "colDef" }] : []));
127
119
  this.rowData = input(...(ngDevMode ? [undefined, { debugName: "rowData" }] : []));
128
120
  }
129
121
  _isComponentCellRenderer(cellRendererDef) {
130
122
  return !!cellRendererDef && !isString(cellRendererDef) && isTypeDerivedFrom(cellRendererDef, IdsTableCellRenderer);
131
123
  }
132
- _preSanitize(input) {
133
- if (!input) {
134
- return input;
135
- }
136
- // Convert & to &amp;, Convert < to &lt;, Convert > to &gt;, Convert " to &quot;, Convert ' to &#x27;, Convert / to &#x2F;
137
- return this._entities.reduce((result, item) => result.replaceAll(item.rx, item.entity), input);
138
- }
139
124
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: IdsTableCellRenderer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
125
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: IdsTableCellRenderer, isStandalone: true, inputs: { cellValue: { classPropertyName: "cellValue", publicName: "cellValue", isSignal: true, isRequired: false, transformFunction: null }, colDef: { classPropertyName: "colDef", publicName: "colDef", isSignal: true, isRequired: true, transformFunction: null }, rowData: { classPropertyName: "rowData", publicName: "rowData", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
141
126
  }
@@ -286,7 +271,7 @@ class IdsCellContentComponent extends IdsTableCellRenderer {
286
271
  const field = this.colDef().field ?? '';
287
272
  const valueFn = this.colDef().value ?? (() => '');
288
273
  const rawResult = field && Object.hasOwn(rowData, field) ? rowData[field] : valueFn(rowData);
289
- return isString(rawResult) ? this._preSanitize(rawResult) : rawResult;
274
+ return rawResult;
290
275
  }, ...(ngDevMode ? [{ debugName: "_cellValue" }] : []));
291
276
  this._stringCellValue = computed(() => String(this._cellValue() ?? ''), ...(ngDevMode ? [{ debugName: "_stringCellValue" }] : []));
292
277
  this._numericCellValue = computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-table.mjs","sources":["../../../projects/widgets/table/datasource/server-side-datasource.ts","../../../projects/widgets/table/directives/cell-renderer.ts","../../../projects/widgets/table/directives/cell-template.ts","../../../projects/widgets/table/types/table-appearance.type.ts","../../../projects/widgets/table/types/table-sort-direction.ts","../../../projects/widgets/table/types/table-sort-info.ts","../../../projects/widgets/table/types/table-variant.type.ts","../../../projects/widgets/table/table-defaults.ts","../../../projects/widgets/table/table-intl.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.html","../../../projects/widgets/table/directives/row-info-holder.ts","../../../projects/widgets/table/table.component.ts","../../../projects/widgets/table/table.component.html","../../../projects/widgets/table/i-cell-ids-angular-table.ts"],"sourcesContent":["import { IdsTablePaginationParams } from '../types/pagination-params';\nimport { IdsTableRequestFactory } from '../types/request-factory';\nimport { IdsTableRequestPaginationData } from '../types/request-pagination-data';\nimport { IdsTableSortInfo } from '../types/table-sort-info';\n\nimport { DataSource } from '@angular/cdk/collections';\nimport { DEFAULT_PAGE_SIZE, IdsPaginatorPageChangeEvent } from '@i-cell/ids-angular/paginator';\nimport { BehaviorSubject, catchError, debounceTime, finalize, map, merge, Observable, of, Subject, Subscription, switchMap, tap } from 'rxjs';\n\nexport const DEFAULT_DATA_LOAD_DEBOUNCE_TIME = 100;\n\nexport class ServerSideDataSource<D> implements DataSource<D> {\n private _dataSubject = new BehaviorSubject<D[]>([]);\n private _sortSubject = new BehaviorSubject<IdsTableSortInfo | null>(null);\n private _pageSubject = new BehaviorSubject<IdsTableRequestPaginationData | null>(null);\n private _pageInfoSubject = new BehaviorSubject<IdsTablePaginationParams | null>(null);\n private _loadDataTriggerSubject = new Subject<void>();\n private _loadingSubject = new BehaviorSubject<boolean>(false);\n\n private _loadDataSubscription?: Subscription;\n\n public data$ = this._dataSubject.asObservable();\n public isLoading$ = this._loadingSubject.asObservable();\n public pageInfo$ = this._pageInfoSubject.asObservable();\n public pageIndex$ = this.pageInfo$.pipe(map((pageInfo) => ((pageInfo?.page ?? 1) - 1)));\n\n get data(): D[] {\n return this._dataSubject.value;\n }\n\n set data(value: D[]) {\n this._dataSubject.next(value);\n }\n\n get pageInfo(): IdsTablePaginationParams | null {\n return this._pageInfoSubject.value;\n }\n\n set pageInfo(value: IdsTablePaginationParams | null) {\n this._pageInfoSubject.next(value);\n }\n\n get length(): number {\n return this.data.length;\n }\n\n constructor(\n private _requestFactory: IdsTableRequestFactory<D>,\n private _resetDataAndPagingOnError = false,\n ) {}\n\n public connect(): Observable<readonly D[]> {\n this._initDataLoading();\n this.refreshData();\n\n return this.data$;\n }\n\n public disconnect(): void {\n this._dataSubject.complete();\n this._sortSubject.complete();\n this._loadingSubject.complete();\n this._loadDataSubscription?.unsubscribe();\n }\n\n public sort(sortInfo?: IdsTableSortInfo | null): void {\n // sorting resets the \"page\" to 1 (TODO: config option?)\n this._pageSubject.next({\n page: 1,\n rows: this._pageSubject.value?.rows ?? DEFAULT_PAGE_SIZE,\n });\n this._sortSubject.next(sortInfo ?? null);\n }\n\n public page(pageEvent: IdsPaginatorPageChangeEvent): void {\n this._pageSubject.next(pageEvent ? {\n page: pageEvent.pageIndex + 1,\n rows: pageEvent.pageSize,\n } : null);\n }\n\n /**\n * Loads data from specified endpoint.\n */\n public refreshData(): void {\n this._loadDataTriggerSubject.next();\n }\n\n private _initDataLoading(): void {\n this._loadDataSubscription = merge(this._sortSubject, this._pageSubject, this._loadDataTriggerSubject)\n .pipe(\n debounceTime(DEFAULT_DATA_LOAD_DEBOUNCE_TIME),\n switchMap(() => {\n this._loadingSubject.next(true);\n\n const pageInfo = this.pageInfo;\n const paginationData = this._pageSubject.value;\n let requestPaginationData: IdsTableRequestPaginationData | null = null;\n\n if (pageInfo || paginationData) {\n requestPaginationData = {\n page: paginationData?.page ?? pageInfo?.page ?? 1,\n rows: paginationData?.rows ?? pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n };\n }\n\n const request$ = this._requestFactory(requestPaginationData, this._sortSubject.value);\n\n if (!(request$ instanceof Observable)) {\n throw new Error('The `requestFactory` should return an Observable!');\n }\n\n return request$.pipe(\n catchError(() => of(this._resetDataAndPagingOnError ?\n {\n resultList: [] as D[],\n paginationParams: {\n page: 1,\n totalRows: 0,\n rows: this.pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n },\n }\n :\n {\n resultList: this.data,\n paginationParams: this.pageInfo,\n },\n )),\n tap((response) => {\n this.data = response.resultList ?? [];\n this._pageInfoSubject.next(response.paginationParams);\n }),\n finalize(() => this._loadingSubject.next(false)),\n );\n }),\n ).subscribe();\n }\n}\n","import { IdsTableColumnDef } from '../types/table-column-def';\n\nimport { Directive, input, Type } from '@angular/core';\nimport { isString, isTypeDerivedFrom } from '@i-cell/ids-angular/core';\n\n@Directive()\nexport abstract class IdsTableCellRenderer<D> {\n private readonly _entities = [\n { rx: '&', entity: '&amp;' },\n { rx: '<', entity: '&lt;' },\n { rx: '>', entity: '&gt;' },\n { rx: '\"', entity: '&quot;' },\n { rx: '\\'', entity: '&#x27;' },\n { rx: '/', entity: '&#x2F;' },\n ];\n\n public cellValue = input('', { transform: (value) => this._preSanitize(String(value ?? '')) });\n public colDef = input.required<IdsTableColumnDef<D>>();\n public rowData = input<D>();\n\n protected _isComponentCellRenderer<C>(cellRendererDef: string | Type<C> | undefined):\n cellRendererDef is Type<C> {\n return !!cellRendererDef && !isString(cellRendererDef) && isTypeDerivedFrom(cellRendererDef, IdsTableCellRenderer);\n }\n\n protected _preSanitize(input: string): string {\n if (!input) {\n return input;\n }\n\n // Convert & to &amp;, Convert < to &lt;, Convert > to &gt;, Convert \" to &quot;, Convert ' to &#x27;, Convert / to &#x2F;\n return this._entities.reduce((result, item) => result.replaceAll(item.rx, item.entity), input);\n }\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[idsCellTemplate]',\n standalone: true,\n})\nexport class IdsTableCellTemplateDirective {\n public templateName = input.required<string>({ alias: 'idsCellTemplate' });\n public templateRef = inject(TemplateRef);\n}\n","export const IdsTableAppearance = {\n PLAIN: 'plain',\n LINE_DIVISION: 'line-division',\n ZEBRA: 'zebra',\n} as const;\n\nexport type IdsTableAppearanceType = (typeof IdsTableAppearance)[keyof typeof IdsTableAppearance];\n","export const IdsTableSortDirection = {\n NONE: '',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n\nexport type IdsTableSortDirectionType = (typeof IdsTableSortDirection)[keyof typeof IdsTableSortDirection];\n","import { IdsTableSortDirectionType } from './table-sort-direction';\n\nexport class IdsTableSortInfo {\n constructor(public sortBy: string, public direction: IdsTableSortDirectionType) {}\n}\n","export const IdsTableVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n} as const;\n\nexport type IdsTableVariantType = (typeof IdsTableVariant)[keyof typeof IdsTableVariant];\n\n","import { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport const DEFAULT_MASTER_DETAIL_TEMPLATE_NAME = 'detail';\n\nexport interface IdsTableDefaultConfig {\n appearance?: IdsTableAppearanceType,\n size?: IdsSizeType,\n variant?: IdsTableVariantType,\n fixedHeader?: boolean,\n enableSorting?: boolean,\n masterDetail?: boolean,\n detailTemplateName?: string,\n detailStickyColumns?: boolean,\n showDetailHeader?: boolean,\n enableRowSelection?: boolean,\n clearSelectionOnChange?: boolean,\n noRowsToShowOverlayBelow?: boolean,\n withBorder?: boolean,\n}\n\nexport const IDS_TABLE_DEFAULT_CONFIG = new InjectionToken<IdsTableDefaultConfig>(\n 'IDS_TABLE_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_TABLE_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_TABLE_DEFAULT_CONFIG_FACTORY(): Required<IdsTableDefaultConfig> {\n return {\n appearance: IdsTableAppearance.LINE_DIVISION,\n size: IdsSize.COMPACT,\n variant: IdsTableVariant.SURFACE,\n fixedHeader: false,\n enableSorting: false,\n masterDetail: false,\n detailTemplateName: DEFAULT_MASTER_DETAIL_TEMPLATE_NAME,\n detailStickyColumns: true,\n showDetailHeader: false,\n enableRowSelection: false,\n clearSelectionOnChange: true,\n noRowsToShowOverlayBelow: false,\n withBorder: false,\n };\n}\n\n","import { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\n\nimport { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsTableIntl<D> {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public numberFormat = new Intl.NumberFormat();\n public headerSelectorAriaLabel = 'Select/deselect all rows';\n public rowSelectorAriaLabel = 'Select/deselect row';\n public detailHeaderLabel = 'Actions';\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getDetailExpandButtonAriaLabel(rowData: D): string {\n return 'Expand row details';\n }\n\n public getSortButtonAriaLabel(colDef: IdsTableColumnDef<D>, nextSortDirection: IdsTableSortDirectionType): string {\n const label = this.getColLabel(colDef);\n\n switch (nextSortDirection) {\n case IdsTableSortDirection.NONE:\n return `Unsort ${label}`;\n case IdsTableSortDirection.ASC:\n return `Sort ${label} ascending`;\n case IdsTableSortDirection.DESC:\n return `Sort ${label} descending`;\n }\n };\n\n public getColLabel(colDef: IdsTableColumnDef<D>): string {\n return colDef.label || '';\n }\n}\n\n/** @docs-private */\nexport function IDS_TABLE_INTL_PROVIDER_FACTORY<D>(parentIntl?: IdsTableIntl<D>): IdsTableIntl<D> {\n return parentIntl || new IdsTableIntl();\n}\n\n/** @docs-private */\nexport const IDS_TABLE_INTL_PROVIDER = {\n // If there is already an IdsTableIntl available, use that. Otherwise, provide a new one.\n provide: IdsTableIntl,\n deps: [\n [\n new Optional(),\n new SkipSelf(),\n IdsTableIntl,\n ],\n ],\n useFactory: IDS_TABLE_INTL_PROVIDER_FACTORY,\n};\n","import { IdsTableCellRenderer } from '../../directives/cell-renderer';\nimport { IdsTableIntl } from '../../table-intl';\n\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { isString } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { map, startWith } from 'rxjs';\n\n/**\n * This component handles the rendering of a table cell based on the column definition and row data using internal or external cell renderer\n * templates or components.\n */\n@Component({\n selector: 'th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]',\n templateUrl: './cell-content.component.html',\n imports: [\n IdsIconComponent,\n NgComponentOutlet,\n NgTemplateOutlet,\n ],\n})\nexport class IdsCellContentComponent<D> extends IdsTableCellRenderer<D> {\n private _elementRef = inject(ElementRef);\n private _intl = inject(IdsTableIntl);\n private _isHeader = (this._elementRef.nativeElement as Element).hasAttribute('idsHeaderCellContent');\n private _numberFormat = toSignal(this._intl.changes.pipe(map(() => this._intl.numberFormat), startWith(this._intl.numberFormat)));\n\n public externalCellTemplates = input<Map<string, TemplateRef<unknown>>>();\n\n private _cellRendererDef = computed(() => (this._isHeader ? this.colDef().headerCellRenderer : this.colDef().cellRenderer));\n private _updateCellContent = signal(true);\n\n protected _cellValue = computed(() => {\n // Forces recalculation of this computed signal\n this._updateCellContent();\n\n if (this._isHeader) {\n return this.colDef().label ?? '';\n }\n\n const rowData = this.rowData();\n\n if (!rowData) {\n return '';\n }\n\n const field = this.colDef().field ?? '';\n const valueFn = this.colDef().value ?? ((): string => '');\n\n const rawResult = field && Object.hasOwn(rowData, field) ? (rowData as Record<string, unknown>)[field] : valueFn(rowData);\n return isString(rawResult) ? this._preSanitize(rawResult) : rawResult;\n });\n\n protected _stringCellValue = computed(() => String(this._cellValue() ?? ''));\n\n protected _numericCellValue = computed(() => {\n const stringValue = this._stringCellValue();\n return this._numberFormat()?.format(parseFloat(stringValue)) ?? stringValue;\n });\n\n protected _cellRendererComp = computed(() => {\n const renderer = this._cellRendererDef();\n if (this._isComponentCellRenderer(renderer)) {\n return renderer;\n }\n\n return null;\n });\n\n protected _cellTemplateName = computed(() => {\n if (isString(this._cellRendererDef())) {\n return this._cellRendererDef() as string;\n }\n\n return undefined;\n });\n\n protected _cellTemplate = computed(() => {\n const templateName = this._cellTemplateName();\n const templates = this.externalCellTemplates();\n return isString(templateName) && templates?.has(templateName) ? templates.get(templateName) ?? null : null;\n });\n\n public updateValue(): void {\n this._updateCellContent.set(!this._updateCellContent());\n }\n}\n","<ng-content select=\"[colStart]\" />\r\n\r\n@if (_cellRendererComp()) {\r\n <ng-container *ngComponentOutlet=\"_cellRendererComp(); inputs: { rowData: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n} @else {\r\n @switch (_cellTemplateName()) {\r\n @case ('strong') {\r\n <strong class=\"ids-cell-content ids-cell-content__strong\">{{ _cellValue() }}</strong>\r\n }\r\n @case ('numeric') {\r\n <div class=\"ids-cell-content ids-cell-content__numeric\">{{ _numericCellValue() }}</div>\r\n }\r\n @case ('icon') {\r\n <ids-icon\r\n class=\"ids-cell-content ids-cell-content__icon\"\r\n [fontIcon]=\"_stringCellValue()\"\r\n [aria-hidden]=\"true\"\r\n />\r\n }\r\n <!-- TODO: label-description template (needs further discussion) -->\r\n @default {\r\n @let template = _cellTemplate();\r\n @if (template) {\r\n <!-- external template ref -->\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n } @else {\r\n <!-- default basic cell content -->\r\n <div class=\"ids-cell-content ids-cell-content__default\">{{ _cellValue() }}</div>\r\n }\r\n }\r\n }\r\n}\r\n\r\n<ng-content select=\"[colEnd]\" />\r\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[rowInfo]',\n standalone: true,\n})\nexport class RowInfoHolderDirective<D> {\n public rowInfo = input.required<{ rowData: D, index: number }>();\n}\n","import { IdsCellContentComponent } from './components/cell-content/cell-content.component';\nimport { IdsTableCellTemplateDirective } from './directives/cell-template';\nimport { RowInfoHolderDirective } from './directives/row-info-holder';\nimport { DEFAULT_MASTER_DETAIL_TEMPLATE_NAME, IDS_TABLE_DEFAULT_CONFIG, IDS_TABLE_DEFAULT_CONFIG_FACTORY, IdsTableDefaultConfig } from './table-defaults';\nimport { IdsTableIntl } from './table-intl';\nimport { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableCellClickEvent } from './types/table-cell-click-event';\nimport { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableRowClickEvent } from './types/table-row-click-event';\nimport { IdsTableRowKeydownEvent } from './types/table-row-keydown-event';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\nimport { IdsTableSortInfo } from './types/table-sort-info';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkCell, CdkCellDef, CdkColumnDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRow, CdkRowDef, CdkTable, CdkTableDataSourceInput } from '@angular/cdk/table';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChildren, inject, input, OnInit, output, signal, TemplateRef, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { IdsCheckboxComponent } from '@i-cell/ids-angular/checkbox';\nimport { coerceBooleanAttribute, ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IDS_ICON_BUTTON_PARENT, IdsIconButtonAppearance, IdsIconButtonAppearanceType, IdsIconButtonComponent, IdsIconButtonParent, IdsIconButtonVariant, IdsIconButtonVariantType } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_TABLE_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-table',\n imports: [\n IdsCellContentComponent,\n IdsCheckboxComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsTableCellTemplateDirective,\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkNoDataRow,\n CdkRow,\n CdkRowDef,\n CdkTable,\n NgClass,\n NgTemplateOutlet,\n RowInfoHolderDirective,\n ],\n templateUrl: './table.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }],\n exportAs: 'idsTable',\n})\nexport class IdsTableComponent<D>\n extends ComponentBaseWithDefaults<IdsTableDefaultConfig> implements IdsIconButtonParent, OnInit {\n\n private readonly _sortDirections: IdsTableSortDirectionType[] = [\n '',\n 'asc',\n 'desc',\n ];\n\n protected readonly _appearanceZebra = IdsTableAppearance.ZEBRA;\n protected readonly _defaultMasterDetailTemplateName = DEFAULT_MASTER_DETAIL_TEMPLATE_NAME;\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_TABLE_DEFAULT_CONFIG);\n\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsTableIntl);\n\n private _viewCellTemplates = viewChildren(IdsTableCellTemplateDirective);\n private _rowDataHolders = viewChildren(RowInfoHolderDirective<D>);\n private _selectorCheckboxes = viewChildren(IdsCheckboxComponent);\n private _cellContentRenderers = viewChildren(IdsCellContentComponent<D>);\n private _contentCellTemplates = contentChildren(IdsTableCellTemplateDirective);\n\n public columnDefs = input.required<IdsTableColumnDef<D>[]>();\n public dataSource = input.required<CdkTableDataSourceInput<D>>();\n /** Flag to have sticky header. */\n public fixedHeader = input<boolean, unknown>(this._defaultConfig.fixedHeader, { transform: coerceBooleanAttribute });\n /** Enable sorting feature */\n public enableSorting = input<boolean, unknown>(this._defaultConfig.enableSorting, { transform: coerceBooleanAttribute });\n /** Enable master-detail rows */\n public masterDetail = input<boolean, unknown>(this._defaultConfig.masterDetail, { transform: coerceBooleanAttribute });\n /** Name of the detail row renderer template */\n public detailTemplateName = input(this._defaultConfig.detailTemplateName);\n /** If true the detail cell will not span sticky and stickyEnd columns. If false the detail cell will span the table's full width */\n public detailStickyColumns = input<boolean, unknown>(this._defaultConfig.detailStickyColumns, { transform: coerceBooleanAttribute });\n /** Whether to show the master-detail column label or not. */\n public showDetailHeader = input<boolean, unknown>(this._defaultConfig.showDetailHeader, { transform: coerceBooleanAttribute });\n /** Predicate function to decide whether a data row has details or not */\n public hasDetailRow = input<(index: number, data: D) => boolean>(() => false);\n /** Enable row selection feature */\n public enableRowSelection = input<boolean, unknown>(this._defaultConfig.enableRowSelection, { transform: coerceBooleanAttribute });\n /** Clear row selection if the table's content changes */\n public clearSelectionOnChange = input<boolean, unknown>(this._defaultConfig.clearSelectionOnChange,\n { transform: coerceBooleanAttribute });\n\n /** Predicate function to decide whether a row can be selected or not */\n public isRowSelectable = input<(index: number, data: D) => boolean>(() => true);\n /** Render \"no rows to show\" overlay below the table instead of as a row */\n public noRowsToShowOverlayBelow = input<boolean, unknown>(this._defaultConfig.noRowsToShowOverlayBelow,\n { transform: coerceBooleanAttribute });\n /** Whether to show a border around the table or not. */\n\n public withBorder = input<boolean, unknown>(this._defaultConfig.withBorder, { transform: coerceBooleanAttribute });\n /**\n * The table's appearance type. Availabla options:\n * - \"line-division\": row backgrounds are uniformly colored and divided by thin border lines\n * - \"zebra\": the backgrounds of even and odd rows are different colors\n * - \"plain\": row backgrounds are uniformly colored without border lines\n */\n public appearance = input<IdsTableAppearanceType>(this._defaultConfig.appearance);\n /** The size type of the table. Affects paddings, margins, gaps, typography, etc. */\n public size = input<IdsSizeType>(this._defaultConfig.size);\n /** The color variant of the table. Availabla options: \"primary\", \"secondary\", \"surface\" */\n public variant = input<IdsTableVariantType>(this._defaultConfig.variant);\n\n /** Emits if the column sorting has changed */\n public sortChange = output<IdsTableSortInfo | null>();\n /** Emits if the user clicked a cell */\n public cellClick = output<IdsTableCellClickEvent<D>>();\n /** Emits if the user clicked a row */\n public rowClick = output<IdsTableRowClickEvent<D>>();\n /** Emits if the user hits a key while a row is in focus */\n public rowKeydown = output<IdsTableRowKeydownEvent<D>>();\n /** Emits if the table's contents have changed */\n public contentChanged = output<void>();\n\n //#region IdsIconButtonParent implementation\n public embeddedIconButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const tableVariant = this.variant();\n switch (tableVariant) {\n case IdsTableVariant.PRIMARY:\n return IdsIconButtonVariant.SURFACE;\n default:\n return tableVariant;\n }\n });\n\n public embeddedIconButtonAppearance = signal<IdsIconButtonAppearanceType>(IdsIconButtonAppearance.STANDARD);\n public disabled = signal<boolean>(false);\n //#endregion\n\n /** Signal that holds the current table contents as an array of objects */\n public rowData = computed(() => {\n const dataHolders = this._rowDataHolders();\n\n if (!dataHolders?.length) {\n return [];\n }\n\n try {\n // try-catch for now to avoid \"NG0950: Input is required but no value is available yet. Find more at https://angular.dev/errors/NG0950\" at \"holder.rowInfo()\"\n return dataHolders\n .map((holder) => holder.rowInfo())\n .sort((data1, data2) => data1.index - data2.index)\n .map((data) => data.rowData);\n } catch {\n return [];\n }\n });\n\n /** The row selection model for the table */\n public rowSelection: SelectionModel<D> = new SelectionModel<D>(true, [], true);\n\n protected _expandedRows = new Set<D>();\n protected _allRowsExpanded = signal<boolean>(false);\n\n protected _sortState = signal<IdsTableSortInfo | null>(null);\n\n protected override get _hostName(): string {\n return 'table';\n }\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n (this.withBorder() ? 'with-border' : null),\n ]));\n\n protected _actualColumns = computed(() => {\n const cols = this.columnDefs()\n // Filter non-visible columns\n .filter((colDef) => (colDef.visible !== false))\n // Sort sticky columns to the beginning and stickyEnd columns to the end of the list\n .reduce<string[][]>(\n (acc, colDef) => {\n if (colDef.sticky) {\n // Sticky columns first\n acc[0].push(colDef.id);\n } else if (colDef.stickyEnd) {\n // StickyEnd columns last\n acc[2].push(colDef.id);\n } else {\n // The rest of the columns in between\n acc[1].push(colDef.id);\n }\n\n return acc;\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n }, [[], [], []])\n .flat();\n\n if (this.masterDetail()) {\n cols.push('$masterDetail');\n }\n\n if (this.enableRowSelection()) {\n cols.unshift('$selectBoxes');\n }\n\n return cols;\n });\n\n protected _hiddenColumns = computed(() =>\n this.columnDefs()\n .filter((colDef) => (colDef.visible === false))\n .map((colDef) => ({ ...colDef, visible: true })),\n );\n\n protected _detailRowTemplates = computed(() => {\n if (!this.detailStickyColumns()) {\n return ['$expandedDetail'];\n }\n\n return [\n ...(this.enableRowSelection() ? ['$empty'] : []),\n ...this.columnDefs().filter((colDef) => colDef.sticky).map(() => '$empty'),\n '$expandedDetail',\n ...this.columnDefs().filter((colDef) => colDef.stickyEnd).map(() => '$emptyEnd'),\n ...(this.masterDetail() ? ['$emptyEnd'] : []),\n ];\n });\n\n protected _detailColSpan = computed(() => {\n const colDefs = this.columnDefs();\n let detailColSpan = colDefs.length;\n\n if (this.detailStickyColumns()) {\n detailColSpan = colDefs.filter((def) => (!def.sticky && !def.stickyEnd && def.visible !== false)).length;\n }\n\n return detailColSpan;\n });\n\n protected _cellTemplatesByName = computed(() => {\n const templateMap = new Map<string, TemplateRef<unknown>>();\n\n for (const cellTemplate of this._viewCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n for (const cellTemplate of this._contentCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n\n return templateMap;\n });\n\n protected _defaulDetailTemplate = computed(() =>\n this._viewCellTemplates().find((cellTemplate) => cellTemplate.templateName() === this._defaultMasterDetailTemplateName)?.templateRef,\n );\n\n protected _detailTemplate = computed(() => this._cellTemplatesByName().get(this.detailTemplateName()));\n\n protected _hasNoRows = computed<boolean>(() => this.rowData().length === 0);\n\n protected _masterDetailEnabled = computed(() =>\n this.masterDetail() && this._cellTemplatesByName().has(this._defaultMasterDetailTemplateName),\n );\n\n protected _unselectableRows = computed(() => {\n const rows = this.rowData();\n\n return new Set<D>(rows.filter((rowData, index) => !this.isRowSelectable()(index, rowData)));\n });\n\n private _rowSelectorCheckboxes = computed(() => {\n const disabledRows = this._unselectableRows();\n\n return this._selectorCheckboxes().filter((component) => {\n const value = component.value() as D;\n return value && !disabledRows.has(value);\n });\n });\n\n private _selectableRowData = computed(() => this._rowSelectorCheckboxes().map((component) => component.value() as D));\n\n private _rowSelectionChange = toSignal(this.rowSelection.changed);\n\n protected _isAllSelected = computed(() => {\n const selectionChange = this._rowSelectionChange();\n const data = this._selectableRowData();\n const disabledRows = this._unselectableRows();\n\n if (!selectionChange || !data) {\n return false;\n }\n\n const numSelected = selectionChange.source.selected.length;\n const activeRowCount = data.filter((row) => !disabledRows.has(row)).length;\n return numSelected === activeRowCount;\n });\n\n protected _isSelectAllDisabled = computed(() => this._unselectableRows().size === this._selectableRowData().length);\n\n public ngOnInit(): void {\n this._intl.changes.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._cdRef.markForCheck());\n }\n\n /**\n * Open up all row details.\n */\n public expandAll(): void {\n this.rowData().forEach((rowData, idx) => {\n if (!this._expandedRows.has(rowData) && this.hasDetailRow()(idx, rowData)) {\n this._expandedRows.add(rowData);\n }\n });\n this._cdRef.markForCheck();\n }\n\n /**\n * Closes all opened row details.\n */\n public collapseAll(): void {\n this._expandedRows.clear();\n this._cdRef.markForCheck();\n }\n\n /**\n * Refresh rendered cell values. Useful if for eg. the `value` getter function is not pure and the values need to be refreshed manually.\n */\n public updateCellContents(): void {\n this._cellContentRenderers().forEach((cellContent) => cellContent.updateValue());\n }\n\n protected _tableContentChanged(): void {\n this.contentChanged.emit();\n\n if (this.clearSelectionOnChange()) {\n this.rowSelection.clear();\n }\n }\n\n protected _getNextSortDirectionFor(colId: string): IdsTableSortDirectionType {\n const sortState = this._sortState();\n const nextIndex = sortState?.sortBy === colId ?\n (this._sortDirections.indexOf(sortState.direction) + 1) % this._sortDirections.length : 1;\n\n return this._sortDirections[nextIndex];\n }\n\n protected _handleSortClick(colId: string): void {\n const nextSortDirection = this._getNextSortDirectionFor(colId);\n\n this._sortState.set(nextSortDirection !== IdsTableSortDirection.NONE ? new IdsTableSortInfo(colId, nextSortDirection) : null);\n\n this.sortChange.emit(this._sortState());\n }\n\n protected _handleCellClick(event: MouseEvent, rowData: D, colDef: IdsTableColumnDef<D>): void {\n this.cellClick.emit({ event, colDef, rowData });\n }\n\n protected _handleRowClick(event: MouseEvent, rowData: D): void {\n this.rowClick.emit({ event, rowData });\n }\n\n protected _handleRowKeyDown(event: KeyboardEvent, rowData: D): void {\n this.rowKeydown.emit({ event, rowData });\n }\n\n protected _handleMasterDetailClick(rowData: D): void {\n if (this._expandedRows.has(rowData)) {\n this._expandedRows.delete(rowData);\n } else {\n this._expandedRows.add(rowData);\n }\n this._cdRef.markForCheck();\n }\n\n protected _masterToggle(): void {\n const data = this._selectableRowData();\n if (this._isAllSelected() || !data) {\n this.rowSelection.clear();\n return;\n }\n\n this.rowSelection.select(...data);\n }\n}\n","<!-- eslint-disable @angular-eslint/template/prefer-self-closing-tags -->\n\n<!-- Empty table message template -->\n<ng-template #noRowsToShow>\n <div class=\"ids-table__no-rows-to-show\">\n <ng-content select=\"[idsNoRowsToShow]\">No rows to show</ng-content>\n </div>\n</ng-template>\n\n<!-- Default detail cell template (a table showing the non-visible columns) -->\n<ng-template #defaultDetail let-row let-cols=\"cols\" [idsCellTemplate]=\"_defaultMasterDetailTemplateName\">\n <ids-table appearance=\"zebra\" [dataSource]=\"[row]\" [columnDefs]=\"cols\"></ids-table>\n</ng-template>\n\n<!-- TODO: Loading spinner -->\n\n<div class=\"ids-table__horizontal-scroll\">\n <table\n cdk-table\n cdkDropListGroup\n multiTemplateDataRows\n [id]=\"id()\"\n [dataSource]=\"dataSource()\"\n (contentChanged)=\"_tableContentChanged()\"\n >\n <caption><ng-content select=\"[idsTableCaption]\"></ng-content></caption>\n\n <!-- Column and row definitions for row selection -->\n <ng-container cdkColumnDef=\"$selectBoxes\" sticky>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n role=\"cell\"\n class=\"ids-table__header-cell ids-table__header-cell--select-all-rows\"\n >\n @let isRowSelected = rowSelection.hasValue();\n @let isTableVariantPrimary = variant() === 'primary';\n <ids-checkbox\n [indeterminate]=\"isRowSelected && !_isAllSelected()\"\n [checked]=\"isRowSelected && _isAllSelected()\"\n [disabled]=\"_isSelectAllDisabled()\"\n [aria-label]=\"_intl.headerSelectorAriaLabel\"\n [variant]=\"isTableVariantPrimary && isRowSelected ? 'light' : 'surface'\"\n (change)=\"$event ? _masterToggle() : null\"\n >\n </ids-checkbox>\n </th>\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--row-select\"\n >\n <ids-checkbox\n class=\"ids-table__checkbox--row-selector\"\n [disabled]=\"_unselectableRows().has(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"row\"\n [aria-label]=\"_intl.rowSelectorAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? rowSelection.toggle(row) : null\"\n >\n </ids-checkbox>\n </td>\n </ng-container>\n\n <!-- Column and row definitions for the master-detail toggle feature -->\n <ng-container cdkColumnDef=\"$masterDetail\" stickyEnd>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n class=\"ids-table__header-cell ids-table__header-cell--master-detail-toggle\"\n [class.ids-table__header-cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @if (showDetailHeader()) {\n <span>{{ _intl.detailHeaderLabel }}</span>\n }\n </th>\n <td\n *cdkCellDef=\"let row; let idx = $index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--master-detail-toggle\"\n [class.ids-table__cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @let hasDetail = hasDetailRow()(idx, row);\n @let rowExpanded = _expandedRows.has(row);\n @if (hasDetail) {\n <button\n type=\"button\"\n idsIconButton\n class=\"ids-table__button--master-detail\"\n [attr.aria-expanded]=\"rowExpanded || false\"\n [attr.aria-label]=\"_intl.getDetailExpandButtonAriaLabel(row) || null\"\n (click)=\"_handleMasterDetailClick(row)\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" [fontIcon]=\"rowExpanded ? 'chevron-up' : 'chevron-down'\" />\n </button>\n }\n </td>\n </ng-container>\n <!-- Column definition for the detail cells -->\n <ng-container cdkColumnDef=\"$expandedDetail\">\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell ids-table__detail-cell\" [attr.colspan]=\"_detailColSpan()\">\n <div class=\"ids-table__detail-cell--content-wrapper\" [@detailExpand]=\"_expandedRows.has(row) ? 'expanded' : 'collapsed'\">\n @let isDefaultTemplate = _detailTemplate() === _defaulDetailTemplate();\n @let context = isDefaultTemplate ? { $implicit: row, cols: _hiddenColumns() } : { $implicit: row };\n <ng-container *ngTemplateOutlet=\"_detailTemplate() ?? defaultDetail; context: context\"></ng-container>\n </div>\n </td>\n </ng-container>\n\n <!-- Column definitions for sticky empty cells -->\n <ng-container cdkColumnDef=\"$empty\" sticky>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n <ng-container cdkColumnDef=\"$emptyEnd\" stickyEnd>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n\n <!-- Column and row definitions for the actual data -->\n @for (col of columnDefs(); track col.id; let colIndex = $index; let isLast = $last ) {\n <ng-container\n [cdkColumnDef]=\"col.id\"\n [sticky]=\"col.sticky && !col.stickyEnd\"\n [stickyEnd]=\"col.stickyEnd && !col.sticky\"\n >\n @let colSortable = col.sortable && enableSorting();\n @let colNumeric = col.cellRenderer === 'numeric';\n @let orderName = col.orderName || col.field || col.id;\n @let sortDirection = colSortable && _sortState()?.sortBy === orderName ? _sortState()?.direction : null;\n @let nextSortDirection = _getNextSortDirectionFor(orderName);\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n class=\"ids-table__header-cell\"\n idsHeaderCellContent\n scope=\"col\"\n [class.ids-table__header-cell--sortable]=\"colSortable\"\n [class.ids-table__header-cell--numeric]=\"colNumeric\"\n [class]=\"col.columnClasses || ''\"\n [colDef]=\"col\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n [id]=\"id() + '-header-' + col.id\"\n >\n @if (colSortable) {\n <button\n type=\"button\"\n idsIconButton\n colEnd\n class=\"ids-table__header-cell--sort-button\"\n [attr.aria-label]=\"_intl.getSortButtonAriaLabel(col, nextSortDirection)\"\n (click)=\"_handleSortClick(orderName)\"\n >\n @switch (sortDirection) {\n @case ('asc') {\n <ids-icon [fontIcon]=\"'chevron-up'\"></ids-icon>\n }\n @case ('desc') {\n <ids-icon [fontIcon]=\"'chevron-down'\"></ids-icon>\n }\n @default {\n <ids-icon [fontIcon]=\"'adjustments-horizontal'\"></ids-icon>\n }\n }\n </button>\n }\n </th>\n\n @if (col.identifier) {\n <th\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n idsCellContent\n class=\"ids-table__cell ids-table__cell--identifier\"\n role=\"gridcell\"\n scope=\"row\"\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></th>\n } @else {\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell\"\n idsCellContent\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></td>\n }\n </ng-container>\n }\n\n <!-- Header row render definition -->\n <tr *cdkHeaderRowDef=\"_actualColumns(); sticky: fixedHeader()\" cdk-header-row class=\"ids-table__header-row\"></tr>\n\n <!-- Row render definition -->\n <tr\n *cdkRowDef=\"let row; columns: _actualColumns(); let idx = dataIndex\"\n cdk-row\n class=\"ids-table__row\"\n [rowInfo]=\"{ rowData: row, index: idx }\"\n [ngClass]=\"(appearance() !== _appearanceZebra || idx % 2 === 0) ? 'ids-table__row--surface' : 'ids-table__row--secondary'\"\n (click)=\"_handleRowClick($event, row)\"\n (keydown)=\"_handleRowKeyDown($event, row)\"\n ></tr>\n\n <!-- Detail row render definition -->\n @if (masterDetail()) {\n <tr\n *cdkRowDef=\"let row; columns: _detailRowTemplates(); when: hasDetailRow()\"\n cdk-row\n class=\"ids-table__detail-row ids-table__row--surface\"\n [class.ids-table__detail-row--expanded]=\"_expandedRows.has(row) || _allRowsExpanded()\"\n ></tr>\n }\n\n <!-- Empty table message (inside the table) -->\n @if (!noRowsToShowOverlayBelow()) {\n <tr *cdkNoDataRow class=\"ids-table__row\">\n <td class=\"ids-table__cell\" [attr.colspan]=\"_actualColumns().length\">\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n </td>\n </tr>\n }\n </table>\n</div>\n<!-- Empty table message (outside the table) -->\n@if (noRowsToShowOverlayBelow() && _hasNoRows()) {\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-table.mjs","sources":["../../../projects/widgets/table/datasource/server-side-datasource.ts","../../../projects/widgets/table/directives/cell-renderer.ts","../../../projects/widgets/table/directives/cell-template.ts","../../../projects/widgets/table/types/table-appearance.type.ts","../../../projects/widgets/table/types/table-sort-direction.ts","../../../projects/widgets/table/types/table-sort-info.ts","../../../projects/widgets/table/types/table-variant.type.ts","../../../projects/widgets/table/table-defaults.ts","../../../projects/widgets/table/table-intl.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.ts","../../../projects/widgets/table/components/cell-content/cell-content.component.html","../../../projects/widgets/table/directives/row-info-holder.ts","../../../projects/widgets/table/table.component.ts","../../../projects/widgets/table/table.component.html","../../../projects/widgets/table/i-cell-ids-angular-table.ts"],"sourcesContent":["import { IdsTablePaginationParams } from '../types/pagination-params';\nimport { IdsTableRequestFactory } from '../types/request-factory';\nimport { IdsTableRequestPaginationData } from '../types/request-pagination-data';\nimport { IdsTableSortInfo } from '../types/table-sort-info';\n\nimport { DataSource } from '@angular/cdk/collections';\nimport { DEFAULT_PAGE_SIZE, IdsPaginatorPageChangeEvent } from '@i-cell/ids-angular/paginator';\nimport { BehaviorSubject, catchError, debounceTime, finalize, map, merge, Observable, of, Subject, Subscription, switchMap, tap } from 'rxjs';\n\nexport const DEFAULT_DATA_LOAD_DEBOUNCE_TIME = 100;\n\nexport class ServerSideDataSource<D> implements DataSource<D> {\n private _dataSubject = new BehaviorSubject<D[]>([]);\n private _sortSubject = new BehaviorSubject<IdsTableSortInfo | null>(null);\n private _pageSubject = new BehaviorSubject<IdsTableRequestPaginationData | null>(null);\n private _pageInfoSubject = new BehaviorSubject<IdsTablePaginationParams | null>(null);\n private _loadDataTriggerSubject = new Subject<void>();\n private _loadingSubject = new BehaviorSubject<boolean>(false);\n\n private _loadDataSubscription?: Subscription;\n\n public data$ = this._dataSubject.asObservable();\n public isLoading$ = this._loadingSubject.asObservable();\n public pageInfo$ = this._pageInfoSubject.asObservable();\n public pageIndex$ = this.pageInfo$.pipe(map((pageInfo) => ((pageInfo?.page ?? 1) - 1)));\n\n get data(): D[] {\n return this._dataSubject.value;\n }\n\n set data(value: D[]) {\n this._dataSubject.next(value);\n }\n\n get pageInfo(): IdsTablePaginationParams | null {\n return this._pageInfoSubject.value;\n }\n\n set pageInfo(value: IdsTablePaginationParams | null) {\n this._pageInfoSubject.next(value);\n }\n\n get length(): number {\n return this.data.length;\n }\n\n constructor(\n private _requestFactory: IdsTableRequestFactory<D>,\n private _resetDataAndPagingOnError = false,\n ) {}\n\n public connect(): Observable<readonly D[]> {\n this._initDataLoading();\n this.refreshData();\n\n return this.data$;\n }\n\n public disconnect(): void {\n this._dataSubject.complete();\n this._sortSubject.complete();\n this._loadingSubject.complete();\n this._loadDataSubscription?.unsubscribe();\n }\n\n public sort(sortInfo?: IdsTableSortInfo | null): void {\n // sorting resets the \"page\" to 1 (TODO: config option?)\n this._pageSubject.next({\n page: 1,\n rows: this._pageSubject.value?.rows ?? DEFAULT_PAGE_SIZE,\n });\n this._sortSubject.next(sortInfo ?? null);\n }\n\n public page(pageEvent: IdsPaginatorPageChangeEvent): void {\n this._pageSubject.next(pageEvent ? {\n page: pageEvent.pageIndex + 1,\n rows: pageEvent.pageSize,\n } : null);\n }\n\n /**\n * Loads data from specified endpoint.\n */\n public refreshData(): void {\n this._loadDataTriggerSubject.next();\n }\n\n private _initDataLoading(): void {\n this._loadDataSubscription = merge(this._sortSubject, this._pageSubject, this._loadDataTriggerSubject)\n .pipe(\n debounceTime(DEFAULT_DATA_LOAD_DEBOUNCE_TIME),\n switchMap(() => {\n this._loadingSubject.next(true);\n\n const pageInfo = this.pageInfo;\n const paginationData = this._pageSubject.value;\n let requestPaginationData: IdsTableRequestPaginationData | null = null;\n\n if (pageInfo || paginationData) {\n requestPaginationData = {\n page: paginationData?.page ?? pageInfo?.page ?? 1,\n rows: paginationData?.rows ?? pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n };\n }\n\n const request$ = this._requestFactory(requestPaginationData, this._sortSubject.value);\n\n if (!(request$ instanceof Observable)) {\n throw new Error('The `requestFactory` should return an Observable!');\n }\n\n return request$.pipe(\n catchError(() => of(this._resetDataAndPagingOnError ?\n {\n resultList: [] as D[],\n paginationParams: {\n page: 1,\n totalRows: 0,\n rows: this.pageInfo?.rows ?? DEFAULT_PAGE_SIZE,\n },\n }\n :\n {\n resultList: this.data,\n paginationParams: this.pageInfo,\n },\n )),\n tap((response) => {\n this.data = response.resultList ?? [];\n this._pageInfoSubject.next(response.paginationParams);\n }),\n finalize(() => this._loadingSubject.next(false)),\n );\n }),\n ).subscribe();\n }\n}\n","import { IdsTableColumnDef } from '../types/table-column-def';\n\nimport { Directive, input, Type } from '@angular/core';\nimport { isString, isTypeDerivedFrom } from '@i-cell/ids-angular/core';\n\n@Directive()\nexport abstract class IdsTableCellRenderer<D> {\n public cellValue = input('', { transform: (value) => String(value ?? '') });\n public colDef = input.required<IdsTableColumnDef<D>>();\n public rowData = input<D>();\n\n protected _isComponentCellRenderer<C>(cellRendererDef: string | Type<C> | undefined):\n cellRendererDef is Type<C> {\n return !!cellRendererDef && !isString(cellRendererDef) && isTypeDerivedFrom(cellRendererDef, IdsTableCellRenderer);\n }\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[idsCellTemplate]',\n standalone: true,\n})\nexport class IdsTableCellTemplateDirective {\n public templateName = input.required<string>({ alias: 'idsCellTemplate' });\n public templateRef = inject(TemplateRef);\n}\n","export const IdsTableAppearance = {\n PLAIN: 'plain',\n LINE_DIVISION: 'line-division',\n ZEBRA: 'zebra',\n} as const;\n\nexport type IdsTableAppearanceType = (typeof IdsTableAppearance)[keyof typeof IdsTableAppearance];\n","export const IdsTableSortDirection = {\n NONE: '',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n\nexport type IdsTableSortDirectionType = (typeof IdsTableSortDirection)[keyof typeof IdsTableSortDirection];\n","import { IdsTableSortDirectionType } from './table-sort-direction';\n\nexport class IdsTableSortInfo {\n constructor(public sortBy: string, public direction: IdsTableSortDirectionType) {}\n}\n","export const IdsTableVariant = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SURFACE: 'surface',\n} as const;\n\nexport type IdsTableVariantType = (typeof IdsTableVariant)[keyof typeof IdsTableVariant];\n\n","import { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport const DEFAULT_MASTER_DETAIL_TEMPLATE_NAME = 'detail';\n\nexport interface IdsTableDefaultConfig {\n appearance?: IdsTableAppearanceType,\n size?: IdsSizeType,\n variant?: IdsTableVariantType,\n fixedHeader?: boolean,\n enableSorting?: boolean,\n masterDetail?: boolean,\n detailTemplateName?: string,\n detailStickyColumns?: boolean,\n showDetailHeader?: boolean,\n enableRowSelection?: boolean,\n clearSelectionOnChange?: boolean,\n noRowsToShowOverlayBelow?: boolean,\n withBorder?: boolean,\n}\n\nexport const IDS_TABLE_DEFAULT_CONFIG = new InjectionToken<IdsTableDefaultConfig>(\n 'IDS_TABLE_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_TABLE_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_TABLE_DEFAULT_CONFIG_FACTORY(): Required<IdsTableDefaultConfig> {\n return {\n appearance: IdsTableAppearance.LINE_DIVISION,\n size: IdsSize.COMPACT,\n variant: IdsTableVariant.SURFACE,\n fixedHeader: false,\n enableSorting: false,\n masterDetail: false,\n detailTemplateName: DEFAULT_MASTER_DETAIL_TEMPLATE_NAME,\n detailStickyColumns: true,\n showDetailHeader: false,\n enableRowSelection: false,\n clearSelectionOnChange: true,\n noRowsToShowOverlayBelow: false,\n withBorder: false,\n };\n}\n\n","import { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\n\nimport { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsTableIntl<D> {\n public readonly changes: Subject<void> = new Subject<void>();\n\n public numberFormat = new Intl.NumberFormat();\n public headerSelectorAriaLabel = 'Select/deselect all rows';\n public rowSelectorAriaLabel = 'Select/deselect row';\n public detailHeaderLabel = 'Actions';\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getDetailExpandButtonAriaLabel(rowData: D): string {\n return 'Expand row details';\n }\n\n public getSortButtonAriaLabel(colDef: IdsTableColumnDef<D>, nextSortDirection: IdsTableSortDirectionType): string {\n const label = this.getColLabel(colDef);\n\n switch (nextSortDirection) {\n case IdsTableSortDirection.NONE:\n return `Unsort ${label}`;\n case IdsTableSortDirection.ASC:\n return `Sort ${label} ascending`;\n case IdsTableSortDirection.DESC:\n return `Sort ${label} descending`;\n }\n };\n\n public getColLabel(colDef: IdsTableColumnDef<D>): string {\n return colDef.label || '';\n }\n}\n\n/** @docs-private */\nexport function IDS_TABLE_INTL_PROVIDER_FACTORY<D>(parentIntl?: IdsTableIntl<D>): IdsTableIntl<D> {\n return parentIntl || new IdsTableIntl();\n}\n\n/** @docs-private */\nexport const IDS_TABLE_INTL_PROVIDER = {\n // If there is already an IdsTableIntl available, use that. Otherwise, provide a new one.\n provide: IdsTableIntl,\n deps: [\n [\n new Optional(),\n new SkipSelf(),\n IdsTableIntl,\n ],\n ],\n useFactory: IDS_TABLE_INTL_PROVIDER_FACTORY,\n};\n","import { IdsTableCellRenderer } from '../../directives/cell-renderer';\nimport { IdsTableIntl } from '../../table-intl';\n\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { isString } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { map, startWith } from 'rxjs';\n\n/**\n * This component handles the rendering of a table cell based on the column definition and row data using internal or external cell renderer\n * templates or components.\n */\n@Component({\n selector: 'th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]',\n templateUrl: './cell-content.component.html',\n imports: [\n IdsIconComponent,\n NgComponentOutlet,\n NgTemplateOutlet,\n ],\n})\nexport class IdsCellContentComponent<D> extends IdsTableCellRenderer<D> {\n private _elementRef = inject(ElementRef);\n private _intl = inject(IdsTableIntl);\n private _isHeader = (this._elementRef.nativeElement as Element).hasAttribute('idsHeaderCellContent');\n private _numberFormat = toSignal(this._intl.changes.pipe(map(() => this._intl.numberFormat), startWith(this._intl.numberFormat)));\n\n public externalCellTemplates = input<Map<string, TemplateRef<unknown>>>();\n\n private _cellRendererDef = computed(() => (this._isHeader ? this.colDef().headerCellRenderer : this.colDef().cellRenderer));\n private _updateCellContent = signal(true);\n\n protected _cellValue = computed(() => {\n // Forces recalculation of this computed signal\n this._updateCellContent();\n\n if (this._isHeader) {\n return this.colDef().label ?? '';\n }\n\n const rowData = this.rowData();\n\n if (!rowData) {\n return '';\n }\n\n const field = this.colDef().field ?? '';\n const valueFn = this.colDef().value ?? ((): string => '');\n\n const rawResult = field && Object.hasOwn(rowData, field) ? (rowData as Record<string, unknown>)[field] : valueFn(rowData);\n return rawResult;\n });\n\n protected _stringCellValue = computed(() => String(this._cellValue() ?? ''));\n\n protected _numericCellValue = computed(() => {\n const stringValue = this._stringCellValue();\n return this._numberFormat()?.format(parseFloat(stringValue)) ?? stringValue;\n });\n\n protected _cellRendererComp = computed(() => {\n const renderer = this._cellRendererDef();\n if (this._isComponentCellRenderer(renderer)) {\n return renderer;\n }\n\n return null;\n });\n\n protected _cellTemplateName = computed(() => {\n if (isString(this._cellRendererDef())) {\n return this._cellRendererDef() as string;\n }\n\n return undefined;\n });\n\n protected _cellTemplate = computed(() => {\n const templateName = this._cellTemplateName();\n const templates = this.externalCellTemplates();\n return isString(templateName) && templates?.has(templateName) ? templates.get(templateName) ?? null : null;\n });\n\n public updateValue(): void {\n this._updateCellContent.set(!this._updateCellContent());\n }\n}\n","<ng-content select=\"[colStart]\" />\r\n\r\n@if (_cellRendererComp()) {\r\n <ng-container *ngComponentOutlet=\"_cellRendererComp(); inputs: { rowData: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n} @else {\r\n @switch (_cellTemplateName()) {\r\n @case ('strong') {\r\n <strong class=\"ids-cell-content ids-cell-content__strong\">{{ _cellValue() }}</strong>\r\n }\r\n @case ('numeric') {\r\n <div class=\"ids-cell-content ids-cell-content__numeric\">{{ _numericCellValue() }}</div>\r\n }\r\n @case ('icon') {\r\n <ids-icon\r\n class=\"ids-cell-content ids-cell-content__icon\"\r\n [fontIcon]=\"_stringCellValue()\"\r\n [aria-hidden]=\"true\"\r\n />\r\n }\r\n <!-- TODO: label-description template (needs further discussion) -->\r\n @default {\r\n @let template = _cellTemplate();\r\n @if (template) {\r\n <!-- external template ref -->\r\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: rowData(), colDef: colDef(), cellValue: _cellValue() }\" />\r\n } @else {\r\n <!-- default basic cell content -->\r\n <div class=\"ids-cell-content ids-cell-content__default\">{{ _cellValue() }}</div>\r\n }\r\n }\r\n }\r\n}\r\n\r\n<ng-content select=\"[colEnd]\" />\r\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[rowInfo]',\n standalone: true,\n})\nexport class RowInfoHolderDirective<D> {\n public rowInfo = input.required<{ rowData: D, index: number }>();\n}\n","import { IdsCellContentComponent } from './components/cell-content/cell-content.component';\nimport { IdsTableCellTemplateDirective } from './directives/cell-template';\nimport { RowInfoHolderDirective } from './directives/row-info-holder';\nimport { DEFAULT_MASTER_DETAIL_TEMPLATE_NAME, IDS_TABLE_DEFAULT_CONFIG, IDS_TABLE_DEFAULT_CONFIG_FACTORY, IdsTableDefaultConfig } from './table-defaults';\nimport { IdsTableIntl } from './table-intl';\nimport { IdsTableAppearance, IdsTableAppearanceType } from './types/table-appearance.type';\nimport { IdsTableCellClickEvent } from './types/table-cell-click-event';\nimport { IdsTableColumnDef } from './types/table-column-def';\nimport { IdsTableRowClickEvent } from './types/table-row-click-event';\nimport { IdsTableRowKeydownEvent } from './types/table-row-keydown-event';\nimport { IdsTableSortDirection, IdsTableSortDirectionType } from './types/table-sort-direction';\nimport { IdsTableSortInfo } from './types/table-sort-info';\nimport { IdsTableVariant, IdsTableVariantType } from './types/table-variant.type';\n\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkCell, CdkCellDef, CdkColumnDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRow, CdkRowDef, CdkTable, CdkTableDataSourceInput } from '@angular/cdk/table';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChildren, inject, input, OnInit, output, signal, TemplateRef, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { IdsCheckboxComponent } from '@i-cell/ids-angular/checkbox';\nimport { coerceBooleanAttribute, ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IDS_ICON_BUTTON_PARENT, IdsIconButtonAppearance, IdsIconButtonAppearanceType, IdsIconButtonComponent, IdsIconButtonParent, IdsIconButtonVariant, IdsIconButtonVariantType } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_TABLE_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-table',\n imports: [\n IdsCellContentComponent,\n IdsCheckboxComponent,\n IdsIconComponent,\n IdsIconButtonComponent,\n IdsTableCellTemplateDirective,\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkNoDataRow,\n CdkRow,\n CdkRowDef,\n CdkTable,\n NgClass,\n NgTemplateOutlet,\n RowInfoHolderDirective,\n ],\n templateUrl: './table.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }],\n exportAs: 'idsTable',\n})\nexport class IdsTableComponent<D>\n extends ComponentBaseWithDefaults<IdsTableDefaultConfig> implements IdsIconButtonParent, OnInit {\n\n private readonly _sortDirections: IdsTableSortDirectionType[] = [\n '',\n 'asc',\n 'desc',\n ];\n\n protected readonly _appearanceZebra = IdsTableAppearance.ZEBRA;\n protected readonly _defaultMasterDetailTemplateName = DEFAULT_MASTER_DETAIL_TEMPLATE_NAME;\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_TABLE_DEFAULT_CONFIG);\n\n private _cdRef = inject(ChangeDetectorRef);\n protected _intl = inject(IdsTableIntl);\n\n private _viewCellTemplates = viewChildren(IdsTableCellTemplateDirective);\n private _rowDataHolders = viewChildren(RowInfoHolderDirective<D>);\n private _selectorCheckboxes = viewChildren(IdsCheckboxComponent);\n private _cellContentRenderers = viewChildren(IdsCellContentComponent<D>);\n private _contentCellTemplates = contentChildren(IdsTableCellTemplateDirective);\n\n public columnDefs = input.required<IdsTableColumnDef<D>[]>();\n public dataSource = input.required<CdkTableDataSourceInput<D>>();\n /** Flag to have sticky header. */\n public fixedHeader = input<boolean, unknown>(this._defaultConfig.fixedHeader, { transform: coerceBooleanAttribute });\n /** Enable sorting feature */\n public enableSorting = input<boolean, unknown>(this._defaultConfig.enableSorting, { transform: coerceBooleanAttribute });\n /** Enable master-detail rows */\n public masterDetail = input<boolean, unknown>(this._defaultConfig.masterDetail, { transform: coerceBooleanAttribute });\n /** Name of the detail row renderer template */\n public detailTemplateName = input(this._defaultConfig.detailTemplateName);\n /** If true the detail cell will not span sticky and stickyEnd columns. If false the detail cell will span the table's full width */\n public detailStickyColumns = input<boolean, unknown>(this._defaultConfig.detailStickyColumns, { transform: coerceBooleanAttribute });\n /** Whether to show the master-detail column label or not. */\n public showDetailHeader = input<boolean, unknown>(this._defaultConfig.showDetailHeader, { transform: coerceBooleanAttribute });\n /** Predicate function to decide whether a data row has details or not */\n public hasDetailRow = input<(index: number, data: D) => boolean>(() => false);\n /** Enable row selection feature */\n public enableRowSelection = input<boolean, unknown>(this._defaultConfig.enableRowSelection, { transform: coerceBooleanAttribute });\n /** Clear row selection if the table's content changes */\n public clearSelectionOnChange = input<boolean, unknown>(this._defaultConfig.clearSelectionOnChange,\n { transform: coerceBooleanAttribute });\n\n /** Predicate function to decide whether a row can be selected or not */\n public isRowSelectable = input<(index: number, data: D) => boolean>(() => true);\n /** Render \"no rows to show\" overlay below the table instead of as a row */\n public noRowsToShowOverlayBelow = input<boolean, unknown>(this._defaultConfig.noRowsToShowOverlayBelow,\n { transform: coerceBooleanAttribute });\n /** Whether to show a border around the table or not. */\n\n public withBorder = input<boolean, unknown>(this._defaultConfig.withBorder, { transform: coerceBooleanAttribute });\n /**\n * The table's appearance type. Availabla options:\n * - \"line-division\": row backgrounds are uniformly colored and divided by thin border lines\n * - \"zebra\": the backgrounds of even and odd rows are different colors\n * - \"plain\": row backgrounds are uniformly colored without border lines\n */\n public appearance = input<IdsTableAppearanceType>(this._defaultConfig.appearance);\n /** The size type of the table. Affects paddings, margins, gaps, typography, etc. */\n public size = input<IdsSizeType>(this._defaultConfig.size);\n /** The color variant of the table. Availabla options: \"primary\", \"secondary\", \"surface\" */\n public variant = input<IdsTableVariantType>(this._defaultConfig.variant);\n\n /** Emits if the column sorting has changed */\n public sortChange = output<IdsTableSortInfo | null>();\n /** Emits if the user clicked a cell */\n public cellClick = output<IdsTableCellClickEvent<D>>();\n /** Emits if the user clicked a row */\n public rowClick = output<IdsTableRowClickEvent<D>>();\n /** Emits if the user hits a key while a row is in focus */\n public rowKeydown = output<IdsTableRowKeydownEvent<D>>();\n /** Emits if the table's contents have changed */\n public contentChanged = output<void>();\n\n //#region IdsIconButtonParent implementation\n public embeddedIconButtonVariant = computed<IdsIconButtonVariantType>(() => {\n const tableVariant = this.variant();\n switch (tableVariant) {\n case IdsTableVariant.PRIMARY:\n return IdsIconButtonVariant.SURFACE;\n default:\n return tableVariant;\n }\n });\n\n public embeddedIconButtonAppearance = signal<IdsIconButtonAppearanceType>(IdsIconButtonAppearance.STANDARD);\n public disabled = signal<boolean>(false);\n //#endregion\n\n /** Signal that holds the current table contents as an array of objects */\n public rowData = computed(() => {\n const dataHolders = this._rowDataHolders();\n\n if (!dataHolders?.length) {\n return [];\n }\n\n try {\n // try-catch for now to avoid \"NG0950: Input is required but no value is available yet. Find more at https://angular.dev/errors/NG0950\" at \"holder.rowInfo()\"\n return dataHolders\n .map((holder) => holder.rowInfo())\n .sort((data1, data2) => data1.index - data2.index)\n .map((data) => data.rowData);\n } catch {\n return [];\n }\n });\n\n /** The row selection model for the table */\n public rowSelection: SelectionModel<D> = new SelectionModel<D>(true, [], true);\n\n protected _expandedRows = new Set<D>();\n protected _allRowsExpanded = signal<boolean>(false);\n\n protected _sortState = signal<IdsTableSortInfo | null>(null);\n\n protected override get _hostName(): string {\n return 'table';\n }\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.appearance(),\n this.size(),\n this.variant(),\n (this.withBorder() ? 'with-border' : null),\n ]));\n\n protected _actualColumns = computed(() => {\n const cols = this.columnDefs()\n // Filter non-visible columns\n .filter((colDef) => (colDef.visible !== false))\n // Sort sticky columns to the beginning and stickyEnd columns to the end of the list\n .reduce<string[][]>(\n (acc, colDef) => {\n if (colDef.sticky) {\n // Sticky columns first\n acc[0].push(colDef.id);\n } else if (colDef.stickyEnd) {\n // StickyEnd columns last\n acc[2].push(colDef.id);\n } else {\n // The rest of the columns in between\n acc[1].push(colDef.id);\n }\n\n return acc;\n // eslint-disable-next-line @stylistic/js/array-bracket-newline, @stylistic/js/array-element-newline\n }, [[], [], []])\n .flat();\n\n if (this.masterDetail()) {\n cols.push('$masterDetail');\n }\n\n if (this.enableRowSelection()) {\n cols.unshift('$selectBoxes');\n }\n\n return cols;\n });\n\n protected _hiddenColumns = computed(() =>\n this.columnDefs()\n .filter((colDef) => (colDef.visible === false))\n .map((colDef) => ({ ...colDef, visible: true })),\n );\n\n protected _detailRowTemplates = computed(() => {\n if (!this.detailStickyColumns()) {\n return ['$expandedDetail'];\n }\n\n return [\n ...(this.enableRowSelection() ? ['$empty'] : []),\n ...this.columnDefs().filter((colDef) => colDef.sticky).map(() => '$empty'),\n '$expandedDetail',\n ...this.columnDefs().filter((colDef) => colDef.stickyEnd).map(() => '$emptyEnd'),\n ...(this.masterDetail() ? ['$emptyEnd'] : []),\n ];\n });\n\n protected _detailColSpan = computed(() => {\n const colDefs = this.columnDefs();\n let detailColSpan = colDefs.length;\n\n if (this.detailStickyColumns()) {\n detailColSpan = colDefs.filter((def) => (!def.sticky && !def.stickyEnd && def.visible !== false)).length;\n }\n\n return detailColSpan;\n });\n\n protected _cellTemplatesByName = computed(() => {\n const templateMap = new Map<string, TemplateRef<unknown>>();\n\n for (const cellTemplate of this._viewCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n for (const cellTemplate of this._contentCellTemplates()) {\n templateMap.set(cellTemplate.templateName(), cellTemplate.templateRef);\n }\n\n return templateMap;\n });\n\n protected _defaulDetailTemplate = computed(() =>\n this._viewCellTemplates().find((cellTemplate) => cellTemplate.templateName() === this._defaultMasterDetailTemplateName)?.templateRef,\n );\n\n protected _detailTemplate = computed(() => this._cellTemplatesByName().get(this.detailTemplateName()));\n\n protected _hasNoRows = computed<boolean>(() => this.rowData().length === 0);\n\n protected _masterDetailEnabled = computed(() =>\n this.masterDetail() && this._cellTemplatesByName().has(this._defaultMasterDetailTemplateName),\n );\n\n protected _unselectableRows = computed(() => {\n const rows = this.rowData();\n\n return new Set<D>(rows.filter((rowData, index) => !this.isRowSelectable()(index, rowData)));\n });\n\n private _rowSelectorCheckboxes = computed(() => {\n const disabledRows = this._unselectableRows();\n\n return this._selectorCheckboxes().filter((component) => {\n const value = component.value() as D;\n return value && !disabledRows.has(value);\n });\n });\n\n private _selectableRowData = computed(() => this._rowSelectorCheckboxes().map((component) => component.value() as D));\n\n private _rowSelectionChange = toSignal(this.rowSelection.changed);\n\n protected _isAllSelected = computed(() => {\n const selectionChange = this._rowSelectionChange();\n const data = this._selectableRowData();\n const disabledRows = this._unselectableRows();\n\n if (!selectionChange || !data) {\n return false;\n }\n\n const numSelected = selectionChange.source.selected.length;\n const activeRowCount = data.filter((row) => !disabledRows.has(row)).length;\n return numSelected === activeRowCount;\n });\n\n protected _isSelectAllDisabled = computed(() => this._unselectableRows().size === this._selectableRowData().length);\n\n public ngOnInit(): void {\n this._intl.changes.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this._cdRef.markForCheck());\n }\n\n /**\n * Open up all row details.\n */\n public expandAll(): void {\n this.rowData().forEach((rowData, idx) => {\n if (!this._expandedRows.has(rowData) && this.hasDetailRow()(idx, rowData)) {\n this._expandedRows.add(rowData);\n }\n });\n this._cdRef.markForCheck();\n }\n\n /**\n * Closes all opened row details.\n */\n public collapseAll(): void {\n this._expandedRows.clear();\n this._cdRef.markForCheck();\n }\n\n /**\n * Refresh rendered cell values. Useful if for eg. the `value` getter function is not pure and the values need to be refreshed manually.\n */\n public updateCellContents(): void {\n this._cellContentRenderers().forEach((cellContent) => cellContent.updateValue());\n }\n\n protected _tableContentChanged(): void {\n this.contentChanged.emit();\n\n if (this.clearSelectionOnChange()) {\n this.rowSelection.clear();\n }\n }\n\n protected _getNextSortDirectionFor(colId: string): IdsTableSortDirectionType {\n const sortState = this._sortState();\n const nextIndex = sortState?.sortBy === colId ?\n (this._sortDirections.indexOf(sortState.direction) + 1) % this._sortDirections.length : 1;\n\n return this._sortDirections[nextIndex];\n }\n\n protected _handleSortClick(colId: string): void {\n const nextSortDirection = this._getNextSortDirectionFor(colId);\n\n this._sortState.set(nextSortDirection !== IdsTableSortDirection.NONE ? new IdsTableSortInfo(colId, nextSortDirection) : null);\n\n this.sortChange.emit(this._sortState());\n }\n\n protected _handleCellClick(event: MouseEvent, rowData: D, colDef: IdsTableColumnDef<D>): void {\n this.cellClick.emit({ event, colDef, rowData });\n }\n\n protected _handleRowClick(event: MouseEvent, rowData: D): void {\n this.rowClick.emit({ event, rowData });\n }\n\n protected _handleRowKeyDown(event: KeyboardEvent, rowData: D): void {\n this.rowKeydown.emit({ event, rowData });\n }\n\n protected _handleMasterDetailClick(rowData: D): void {\n if (this._expandedRows.has(rowData)) {\n this._expandedRows.delete(rowData);\n } else {\n this._expandedRows.add(rowData);\n }\n this._cdRef.markForCheck();\n }\n\n protected _masterToggle(): void {\n const data = this._selectableRowData();\n if (this._isAllSelected() || !data) {\n this.rowSelection.clear();\n return;\n }\n\n this.rowSelection.select(...data);\n }\n}\n","<!-- eslint-disable @angular-eslint/template/prefer-self-closing-tags -->\n\n<!-- Empty table message template -->\n<ng-template #noRowsToShow>\n <div class=\"ids-table__no-rows-to-show\">\n <ng-content select=\"[idsNoRowsToShow]\">No rows to show</ng-content>\n </div>\n</ng-template>\n\n<!-- Default detail cell template (a table showing the non-visible columns) -->\n<ng-template #defaultDetail let-row let-cols=\"cols\" [idsCellTemplate]=\"_defaultMasterDetailTemplateName\">\n <ids-table appearance=\"zebra\" [dataSource]=\"[row]\" [columnDefs]=\"cols\"></ids-table>\n</ng-template>\n\n<!-- TODO: Loading spinner -->\n\n<div class=\"ids-table__horizontal-scroll\">\n <table\n cdk-table\n cdkDropListGroup\n multiTemplateDataRows\n [id]=\"id()\"\n [dataSource]=\"dataSource()\"\n (contentChanged)=\"_tableContentChanged()\"\n >\n <caption><ng-content select=\"[idsTableCaption]\"></ng-content></caption>\n\n <!-- Column and row definitions for row selection -->\n <ng-container cdkColumnDef=\"$selectBoxes\" sticky>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n role=\"cell\"\n class=\"ids-table__header-cell ids-table__header-cell--select-all-rows\"\n >\n @let isRowSelected = rowSelection.hasValue();\n @let isTableVariantPrimary = variant() === 'primary';\n <ids-checkbox\n [indeterminate]=\"isRowSelected && !_isAllSelected()\"\n [checked]=\"isRowSelected && _isAllSelected()\"\n [disabled]=\"_isSelectAllDisabled()\"\n [aria-label]=\"_intl.headerSelectorAriaLabel\"\n [variant]=\"isTableVariantPrimary && isRowSelected ? 'light' : 'surface'\"\n (change)=\"$event ? _masterToggle() : null\"\n >\n </ids-checkbox>\n </th>\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--row-select\"\n >\n <ids-checkbox\n class=\"ids-table__checkbox--row-selector\"\n [disabled]=\"_unselectableRows().has(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"row\"\n [aria-label]=\"_intl.rowSelectorAriaLabel\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? rowSelection.toggle(row) : null\"\n >\n </ids-checkbox>\n </td>\n </ng-container>\n\n <!-- Column and row definitions for the master-detail toggle feature -->\n <ng-container cdkColumnDef=\"$masterDetail\" stickyEnd>\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n scope=\"col\"\n class=\"ids-table__header-cell ids-table__header-cell--master-detail-toggle\"\n [class.ids-table__header-cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @if (showDetailHeader()) {\n <span>{{ _intl.detailHeaderLabel }}</span>\n }\n </th>\n <td\n *cdkCellDef=\"let row; let idx = $index\"\n cdk-cell\n class=\"ids-table__cell ids-table__cell--master-detail-toggle\"\n [class.ids-table__cell--master-detail-toggle-expand]=\"showDetailHeader()\"\n >\n @let hasDetail = hasDetailRow()(idx, row);\n @let rowExpanded = _expandedRows.has(row);\n @if (hasDetail) {\n <button\n type=\"button\"\n idsIconButton\n class=\"ids-table__button--master-detail\"\n [attr.aria-expanded]=\"rowExpanded || false\"\n [attr.aria-label]=\"_intl.getDetailExpandButtonAriaLabel(row) || null\"\n (click)=\"_handleMasterDetailClick(row)\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" [fontIcon]=\"rowExpanded ? 'chevron-up' : 'chevron-down'\" />\n </button>\n }\n </td>\n </ng-container>\n <!-- Column definition for the detail cells -->\n <ng-container cdkColumnDef=\"$expandedDetail\">\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell ids-table__detail-cell\" [attr.colspan]=\"_detailColSpan()\">\n <div class=\"ids-table__detail-cell--content-wrapper\" [@detailExpand]=\"_expandedRows.has(row) ? 'expanded' : 'collapsed'\">\n @let isDefaultTemplate = _detailTemplate() === _defaulDetailTemplate();\n @let context = isDefaultTemplate ? { $implicit: row, cols: _hiddenColumns() } : { $implicit: row };\n <ng-container *ngTemplateOutlet=\"_detailTemplate() ?? defaultDetail; context: context\"></ng-container>\n </div>\n </td>\n </ng-container>\n\n <!-- Column definitions for sticky empty cells -->\n <ng-container cdkColumnDef=\"$empty\" sticky>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n <ng-container cdkColumnDef=\"$emptyEnd\" stickyEnd>\n <td *cdkCellDef=\"let row; let idx = index\" cdk-cell class=\"ids-table__cell\"></td>\n </ng-container>\n\n <!-- Column and row definitions for the actual data -->\n @for (col of columnDefs(); track col.id; let colIndex = $index; let isLast = $last ) {\n <ng-container\n [cdkColumnDef]=\"col.id\"\n [sticky]=\"col.sticky && !col.stickyEnd\"\n [stickyEnd]=\"col.stickyEnd && !col.sticky\"\n >\n @let colSortable = col.sortable && enableSorting();\n @let colNumeric = col.cellRenderer === 'numeric';\n @let orderName = col.orderName || col.field || col.id;\n @let sortDirection = colSortable && _sortState()?.sortBy === orderName ? _sortState()?.direction : null;\n @let nextSortDirection = _getNextSortDirectionFor(orderName);\n <th\n *cdkHeaderCellDef\n cdk-header-cell\n class=\"ids-table__header-cell\"\n idsHeaderCellContent\n scope=\"col\"\n [class.ids-table__header-cell--sortable]=\"colSortable\"\n [class.ids-table__header-cell--numeric]=\"colNumeric\"\n [class]=\"col.columnClasses || ''\"\n [colDef]=\"col\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n [id]=\"id() + '-header-' + col.id\"\n >\n @if (colSortable) {\n <button\n type=\"button\"\n idsIconButton\n colEnd\n class=\"ids-table__header-cell--sort-button\"\n [attr.aria-label]=\"_intl.getSortButtonAriaLabel(col, nextSortDirection)\"\n (click)=\"_handleSortClick(orderName)\"\n >\n @switch (sortDirection) {\n @case ('asc') {\n <ids-icon [fontIcon]=\"'chevron-up'\"></ids-icon>\n }\n @case ('desc') {\n <ids-icon [fontIcon]=\"'chevron-down'\"></ids-icon>\n }\n @default {\n <ids-icon [fontIcon]=\"'adjustments-horizontal'\"></ids-icon>\n }\n }\n </button>\n }\n </th>\n\n @if (col.identifier) {\n <th\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n idsCellContent\n class=\"ids-table__cell ids-table__cell--identifier\"\n role=\"gridcell\"\n scope=\"row\"\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></th>\n } @else {\n <td\n *cdkCellDef=\"let row; let idx = index\"\n cdk-cell\n class=\"ids-table__cell\"\n idsCellContent\n [class]=\"col.cellClasses || ''\"\n [colDef]=\"col\"\n [rowData]=\"row\"\n [externalCellTemplates]=\"_cellTemplatesByName()\"\n (click)=\"_handleCellClick($event, row, col)\"\n ></td>\n }\n </ng-container>\n }\n\n <!-- Header row render definition -->\n <tr *cdkHeaderRowDef=\"_actualColumns(); sticky: fixedHeader()\" cdk-header-row class=\"ids-table__header-row\"></tr>\n\n <!-- Row render definition -->\n <tr\n *cdkRowDef=\"let row; columns: _actualColumns(); let idx = dataIndex\"\n cdk-row\n class=\"ids-table__row\"\n [rowInfo]=\"{ rowData: row, index: idx }\"\n [ngClass]=\"(appearance() !== _appearanceZebra || idx % 2 === 0) ? 'ids-table__row--surface' : 'ids-table__row--secondary'\"\n (click)=\"_handleRowClick($event, row)\"\n (keydown)=\"_handleRowKeyDown($event, row)\"\n ></tr>\n\n <!-- Detail row render definition -->\n @if (masterDetail()) {\n <tr\n *cdkRowDef=\"let row; columns: _detailRowTemplates(); when: hasDetailRow()\"\n cdk-row\n class=\"ids-table__detail-row ids-table__row--surface\"\n [class.ids-table__detail-row--expanded]=\"_expandedRows.has(row) || _allRowsExpanded()\"\n ></tr>\n }\n\n <!-- Empty table message (inside the table) -->\n @if (!noRowsToShowOverlayBelow()) {\n <tr *cdkNoDataRow class=\"ids-table__row\">\n <td class=\"ids-table__cell\" [attr.colspan]=\"_actualColumns().length\">\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n </td>\n </tr>\n }\n </table>\n</div>\n<!-- Empty table message (outside the table) -->\n@if (noRowsToShowOverlayBelow() && _hasNoRows()) {\n <ng-container [ngTemplateOutlet]=\"noRowsToShow\"></ng-container>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@i-cell/ids-angular",
3
- "version": "0.2.9",
3
+ "version": "0.2.11",
4
4
  "private": false,
5
5
  "description": "i-Cell Design System UI Kit components for Angular",
6
6
  "publishConfig": {
@@ -56,14 +56,14 @@
56
56
  "types": "./avatar/index.d.ts",
57
57
  "default": "./fesm2022/i-cell-ids-angular-avatar.mjs"
58
58
  },
59
- "./badge": {
60
- "types": "./badge/index.d.ts",
61
- "default": "./fesm2022/i-cell-ids-angular-badge.mjs"
62
- },
63
59
  "./breadcrumb": {
64
60
  "types": "./breadcrumb/index.d.ts",
65
61
  "default": "./fesm2022/i-cell-ids-angular-breadcrumb.mjs"
66
62
  },
63
+ "./badge": {
64
+ "types": "./badge/index.d.ts",
65
+ "default": "./fesm2022/i-cell-ids-angular-badge.mjs"
66
+ },
67
67
  "./button": {
68
68
  "types": "./button/index.d.ts",
69
69
  "default": "./fesm2022/i-cell-ids-angular-button.mjs"
@@ -80,14 +80,14 @@
80
80
  "types": "./chip/index.d.ts",
81
81
  "default": "./fesm2022/i-cell-ids-angular-chip.mjs"
82
82
  },
83
- "./datepicker": {
84
- "types": "./datepicker/index.d.ts",
85
- "default": "./fesm2022/i-cell-ids-angular-datepicker.mjs"
86
- },
87
83
  "./core": {
88
84
  "types": "./core/index.d.ts",
89
85
  "default": "./fesm2022/i-cell-ids-angular-core.mjs"
90
86
  },
87
+ "./datepicker": {
88
+ "types": "./datepicker/index.d.ts",
89
+ "default": "./fesm2022/i-cell-ids-angular-datepicker.mjs"
90
+ },
91
91
  "./dialog": {
92
92
  "types": "./dialog/index.d.ts",
93
93
  "default": "./fesm2022/i-cell-ids-angular-dialog.mjs"
package/table/index.d.ts CHANGED
@@ -175,12 +175,10 @@ type IdsTableColumnDef<D> = {
175
175
  };
176
176
 
177
177
  declare abstract class IdsTableCellRenderer<D> {
178
- private readonly _entities;
179
178
  cellValue: _angular_core.InputSignalWithTransform<string, unknown>;
180
179
  colDef: _angular_core.InputSignal<IdsTableColumnDef<D>>;
181
180
  rowData: _angular_core.InputSignal<D | undefined>;
182
181
  protected _isComponentCellRenderer<C>(cellRendererDef: string | Type<C> | undefined): cellRendererDef is Type<C>;
183
- protected _preSanitize(input: string): string;
184
182
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IdsTableCellRenderer<any>, never>;
185
183
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IdsTableCellRenderer<any>, never, never, { "cellValue": { "alias": "cellValue"; "required": false; "isSignal": true; }; "colDef": { "alias": "colDef"; "required": true; "isSignal": true; }; "rowData": { "alias": "rowData"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
186
184
  }