@i-cell/ids-angular 0.1.3 → 0.1.4

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.
@@ -807,6 +807,7 @@ class IdsOptionComponent extends ComponentBase {
807
807
  this.disabledInput = input(false, { alias: 'disabled', transform: coerceBooleanAttribute });
808
808
  this.disabled = false; // Do not delete this class member, until ListKeyManagerOption requires: `disabled: boolean`
809
809
  this._groupOrOptionIsDisabled = computed(() => this.group?.disabled() || this.disabledInput());
810
+ // FIXME: Ha túl korán inicializálódik, a parent-ben még lehet, h később változik az érték!
810
811
  this._multiSelect = Boolean(this._parent?.multiSelect());
811
812
  this.onSelectionChange = output();
812
813
  this.viewValue = computed(() => this._textElement().nativeElement.textContent || this.explicitViewValue() || '');
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-forms.mjs","sources":["../../../projects/widgets/forms/common/error/error-state.ts","../../../projects/widgets/forms/common/success/success-state.ts","../../../projects/widgets/forms/components/fieldset/fieldset-row/fieldset-row.component.ts","../../../projects/widgets/forms/components/fieldset/fieldset-row/fieldset-row.component.html","../../../projects/widgets/forms/components/form-field/types/form-field-variant.type.ts","../../../projects/widgets/forms/components/fieldset/fieldset-defaults.ts","../../../projects/widgets/forms/components/fieldset/fieldset-message.directive.ts","../../../projects/widgets/forms/components/fieldset/fieldset.component.ts","../../../projects/widgets/forms/components/fieldset/fieldset.component.html","../../../projects/widgets/forms/components/form-field/tokens/form-field-control.ts","../../../projects/widgets/forms/components/form-field/form-field-control.ts","../../../projects/widgets/forms/components/form-field/form-field-defaults.ts","../../../projects/widgets/forms/directives/form-field-action.directive.ts","../../../projects/widgets/forms/directives/prefix.directive.ts","../../../projects/widgets/forms/directives/suffix.directive.ts","../../../projects/widgets/forms/validators.ts","../../../projects/widgets/forms/components/message/error-message/error-definition.directive.ts","../../../projects/widgets/forms/directives/message-suffix.directive.ts","../../../projects/widgets/forms/components/message/types/message-variant.type.ts","../../../projects/widgets/forms/components/message/message-defaults.ts","../../../projects/widgets/forms/components/message/types/message-parent-form-field.ts","../../../projects/widgets/forms/directives/message.directive.ts","../../../projects/widgets/forms/components/message/error-message/error-message.component.ts","../../../projects/widgets/forms/components/message/error-message/error-message.component.html","../../../projects/widgets/forms/directives/message-prefix.directive.ts","../../../projects/widgets/forms/components/message/hint-message/hint-message.component.ts","../../../projects/widgets/forms/components/message/hint-message/hint-message.component.html","../../../projects/widgets/forms/components/message/success-message/success-message.component.ts","../../../projects/widgets/forms/components/message/success-message/success-message.component.html","../../../projects/widgets/forms/components/form-field/form-field.component.ts","../../../projects/widgets/forms/components/form-field/form-field.component.html","../../../projects/widgets/forms/components/input/input-defaults.ts","../../../projects/widgets/forms/components/input/input.directive.ts","../../../projects/widgets/forms/components/message/types/message.type.ts","../../../projects/widgets/forms/components/option/tokens/option-group.ts","../../../projects/widgets/forms/components/option/tokens/option-parent.ts","../../../projects/widgets/forms/components/option/types/option-events.class.ts","../../../projects/widgets/forms/components/option/option-group.component.ts","../../../projects/widgets/forms/components/option/option-group.component.html","../../../projects/widgets/forms/components/pseudo-checkbox/tokens/pseudo-checkbox-parent.ts","../../../projects/widgets/forms/components/pseudo-checkbox/types/pseudo-checkbox-state.type.ts","../../../projects/widgets/forms/components/pseudo-checkbox/pseudo-checkbox.component.ts","../../../projects/widgets/forms/components/pseudo-checkbox/pseudo-checkbox.component.html","../../../projects/widgets/forms/components/option/option.component.ts","../../../projects/widgets/forms/components/option/option.component.html","../../../projects/widgets/forms/directives/label.directive.ts","../../../projects/widgets/forms/i-cell-ids-angular-forms.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport abstract class AbstractErrorStateMatcher {\n public abstract isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher extends AbstractErrorStateMatcher {\n public isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n\nexport class ErrorStateTracker {\n /** Whether the tracker is currently in an error state. */\n public hasErrorState = false;\n\n constructor(\n private _matcher: ErrorStateMatcher | null,\n private _ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges?: Subject<void>,\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n public updateErrorState(): void {\n const oldState = this.hasErrorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this._matcher;\n const control = this._ngControl ? (this._ngControl.control) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.hasErrorState = newState;\n this._stateChanges?.next();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport abstract class AbstractSuccessStateMatcher {\n public abstract isSuccessState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SuccessStateMatcher extends AbstractSuccessStateMatcher {\n public isSuccessState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.valid && (control.touched || (form && form.submitted)));\n }\n}\n\nexport class SuccessStateTracker {\n /** Whether the tracker is currently in an success state. */\n public hasSuccessState = false;\n\n constructor(\n private _matcher: SuccessStateMatcher | null,\n private _ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges?: Subject<void>,\n ) {}\n\n /** Updates the success state based on the provided success state matcher. */\n public updateSuccessState(): void {\n const oldState = this.hasSuccessState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this._matcher;\n const control = this._ngControl ? (this._ngControl.control) : null;\n const newState = matcher?.isSuccessState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.hasSuccessState = newState;\n this._stateChanges?.next();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, signal, ViewEncapsulation } from '@angular/core';\nimport { ComponentBase } from '@i-cell/ids-angular/core';\n\n@Component({\n selector: 'ids-fieldset-row',\n imports: [],\n templateUrl: './fieldset-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsFieldsetRowComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'fieldset-row';\n }\n\n protected _hostClasses = signal(this._getHostClasses([]));\n}\n","<ng-content />\n","export const IdsFormFieldVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsFormFieldVariantType = (typeof IdsFormFieldVariant)[keyof typeof IdsFormFieldVariant];\n","import { IdsFormFieldVariant, IdsFormFieldVariantType } from '../form-field/types/form-field-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsFieldsetDefaultConfig {\n size?: IdsSizeType\n variant?: IdsFormFieldVariantType,\n}\n\nexport const IDS_FIELDSET_DEFAULT_CONFIG = new InjectionToken<IdsFieldsetDefaultConfig>(\n 'IDS_FIELDSET_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_FIELDSET_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_FIELDSET_DEFAULT_CONFIG_FACTORY(): Required<IdsFieldsetDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsFormFieldVariant.SURFACE,\n };\n}\n\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsFieldsetMessage]',\n standalone: true,\n})\nexport class IdsFieldsetMessageDirective {}\n","import { IDS_FIELDSET_DEFAULT_CONFIG, IDS_FIELDSET_DEFAULT_CONFIG_FACTORY, IdsFieldsetDefaultConfig } from './fieldset-defaults';\nimport { IdsFieldsetMessageDirective } from './fieldset-message.directive';\n\nimport { IdsFormFieldVariantType } from '../form-field/types/form-field-variant.type';\n\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, ViewEncapsulation } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_FIELDSET_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'fieldset[idsFieldset]',\n imports: [],\n templateUrl: './fieldset.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsFieldsetComponent extends ComponentBaseWithDefaults<IdsFieldsetDefaultConfig> {\n protected override get _hostName(): string {\n return 'fieldset';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_FIELDSET_DEFAULT_CONFIG);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsFormFieldVariantType>(this._defaultConfig.variant);\n public legend = input<string>('');\n\n private _fieldsetMessage = contentChildren<IdsFieldsetMessageDirective>(IdsFieldsetMessageDirective);\n\n protected _hasMessage = computed(() => this._fieldsetMessage().length > 0);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n ]));\n}\n","<legend class=\"ids-fieldset-legend\">{{ legend() }}</legend>\n@if (_hasMessage()) {\n <div class=\"ids-fieldset-message\">\n <ng-content select=\"[idsFieldsetMessage]\" />\n </div>\n}\n<ng-content select=\"ids-fieldset-row\" />\n","import { IdsFormFieldControl } from '../form-field-control';\n\nimport { InjectionToken } from '@angular/core';\n\nexport const IDS_FORM_FIELD_CONTROL = new InjectionToken<IdsFormFieldControl>('IDS_FORM_FIELD_CONTROL');\n","import { Signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport const formFieldControlClass = 'ids-form-field-control';\n\nexport abstract class IdsFormFieldControl {\n public readonly errorStateChanges!: Observable<void>;\n public readonly successStateChanges!: Observable<void>;\n public readonly id!: Signal<string>;\n public readonly placeholder!: Signal<string>;\n public readonly ngControl!: NgControl | null;\n public readonly disabled!: Signal<boolean>;\n public readonly required!: Signal<boolean>;\n public readonly hasErrorState!: Signal<boolean>;\n public readonly hasSuccessState!: Signal<boolean>;\n public readonly controlType?: Signal<string>;\n public readonly autofilled?: Signal<boolean>;\n public readonly userAriaDescribedBy?: Signal<string>;\n public readonly disableAutomaticLabeling?: Signal<boolean>;\n public abstract setDescribedByIds(ids: string[]): void;\n public abstract onContainerClick(event: MouseEvent): void;\n}\n","import { IdsFormFieldVariant, IdsFormFieldVariantType } from './types/form-field-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsFormFieldDefaultConfig {\n size?: IdsSizeType\n variant?: IdsFormFieldVariantType\n}\n\nexport const IDS_FORM_FIELD_DEFAULT_CONFIG = new InjectionToken<IdsFormFieldDefaultConfig>(\n 'IDS_FORM_FIELD_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY(): Required<IdsFormFieldDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsFormFieldVariant.SURFACE,\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsFormFieldAction]',\n standalone: true,\n})\nexport class IdsFormFieldActionDirective {\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[idsPrefix], [idsLeadingIcon]',\n standalone: true,\n})\nexport class IdsPrefixDirective {\n @Input('idsLeadingIcon')\n public set idsLeadingIcon(value: '') {\n this.isLeadingIcon = true;\n }\n\n public isLeadingIcon = false;\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[idsSuffix], [idsTrailingIcon]',\n standalone: true,\n})\nexport class IdsSuffixDirective {\n @Input('idsTrailingIcon')\n public set idsTrailingIcon(value: '') {\n this.isTrailingIcon = true;\n }\n\n public isTrailingIcon = false;\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nfunction isEmptyInputValue(value: unknown): boolean {\n return (\n value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0)\n );\n}\n\nexport class IdsValidators {\n public static required(control: AbstractControl): ValidationErrors | null {\n return requiredValidator(control);\n }\n\n public static requiredTrue(control: AbstractControl): ValidationErrors | null {\n return requiredTrueValidator(control);\n }\n\n public static requiredFalse(control: AbstractControl): ValidationErrors | null {\n return requiredFalseValidator(control);\n }\n}\n\nexport function requiredValidator(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputValue(control.value) ? { required: true } : null;\n}\n\nexport function requiredTrueValidator(control: AbstractControl): ValidationErrors | null {\n return control.value === true ? null : { requiredTrue: true };\n}\n\nexport function requiredFalseValidator(control: AbstractControl): ValidationErrors | null {\n return control.value === false ? null : { requiredFalse: true };\n}\n","import { IdsErrorMessageMapping } from '../types/error-message-mapping';\n\nimport { Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Directive to map an error message to an error code for a form field.\n * Mappings must be defined between the directive element's tags ordered by priority (descending from top to bottom).\n * The error code is provided as an attribute, while the error message will be this directive's text content.\n * The latter can be a plain string literal or even an interpolated string value.\n *\n * @example\n * ```html\n * <ids-form-field>\n * <ids-label>Input field</ids-label>\n * <input\n * idsInput\n * ngModel\n * customValidator\n * required\n * [minlength]=\"3\"\n * [maxlength]=\"10\"\n * [pattern]=\"validPattern\"\n * >\n * <ids-error-message>\n * <ids-error-def code=\"required\">{{ 'ERROR.REQUIRED.CUSTOM' | translate }}</ids-error-def>\n * <ids-error-def code=\"minlength\">'minLength' error message</ids-error-def>\n * <ids-error-def code=\"maxlength\">'maxLength' error message</ids-error-def>\n * <ids-error-def code=\"pattern\">'pattern' error message with interpolation: {{ model.value }}</ids-error-def>\n * <ids-error-def code=\"custom\">Custom validator error message</ids-error-def>\n * </ids-error-message>\n * </ids-form-field>\n * ```\n */\n@Directive({\n selector: 'ids-error-def',\n})\nexport class IdsErrorDefinitionDirective {\n /**\n * The validation error's identifier code\n */\n public code = input.required<string>();\n\n private _elementRef = inject(ElementRef);\n\n /**\n * The validation error's message that will be presented to the user\n */\n get errorMessage(): string {\n return (this._elementRef.nativeElement as HTMLElement).innerText;\n }\n\n /**\n * Creates a IdsErrorMessageMapping instance based on this directive's state (code, errorMessage)\n * @returns A IdsErrorMessageMapping instance\n */\n public toErrorMessageMapping(): IdsErrorMessageMapping {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n return {\n code: this.code(),\n message: () => self.errorMessage,\n };\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsMessageSuffix]',\n standalone: true,\n})\nexport class IdsMessageSuffixDirective {\n}\n","export const IdsMessageVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsMessageVariantType = (typeof IdsMessageVariant)[keyof typeof IdsMessageVariant];\n","import { IdsMessageVariant, IdsMessageVariantType } from './types/message-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsMessageDefaultConfig {\n size?: IdsSizeType,\n variant?: IdsMessageVariantType,\n}\n\nexport const IDS_MESSAGE_DEFAULT_CONFIG = new InjectionToken<IdsMessageDefaultConfig>(\n 'IDS_MESSAGE_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_MESSAGE_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_MESSAGE_DEFAULT_CONFIG_FACTORY(): Required<IdsMessageDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsMessageVariant.SURFACE,\n };\n}\n\n","import { IdsFormFieldVariantType } from '../../form-field/types/form-field-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsMessageParentFormField {\n disabled: Signal<boolean>;\n size: Signal<IdsSizeType>;\n variant: Signal<IdsFormFieldVariantType>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IDS_MESSAGE_PARENT_FORM_FIELD = new InjectionToken<IdsMessageParentFormField>('IDS_MESSAGE_PARENT_FORM_FIELD');\n","import { IDS_MESSAGE_DEFAULT_CONFIG, IDS_MESSAGE_DEFAULT_CONFIG_FACTORY, IdsMessageDefaultConfig } from '../components/message/message-defaults';\nimport { IDS_MESSAGE_PARENT_FORM_FIELD } from '../components/message/types/message-parent-form-field';\nimport { IdsMessageVariantType } from '../components/message/types/message-variant.type';\n\nimport { Directive, computed, inject, input } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_MESSAGE_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: '[idsMessage]',\n standalone: true,\n})\nexport class IdsMessageDirective extends ComponentBaseWithDefaults<IdsMessageDefaultConfig> {\n protected override get _hostName(): string {\n return 'message';\n }\n\n private readonly _parent = inject(IDS_MESSAGE_PARENT_FORM_FIELD, { skipSelf: true, optional: true });\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_MESSAGE_DEFAULT_CONFIG);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsMessageVariantType>(this._defaultConfig.variant);\n private _parentOrSelfSize = computed(() => this._parent?.size() ?? this.size());\n private _parentOrSelfVariant = computed(() => this._parent?.variant() ?? this.variant());\n private _parentDisabled = computed(() => this._parent?.disabled());\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parentOrSelfSize(),\n this._parentOrSelfVariant(),\n this._parentDisabled() ? 'disabled' : null,\n ]));\n}\n","import { IdsErrorDefinitionDirective } from './error-definition.directive';\n\nimport { IdsMessageSuffixDirective } from '../../../directives/message-suffix.directive';\nimport { IdsMessageDirective } from '../../../directives/message.directive';\nimport { IdsFormFieldComponent } from '../../form-field/form-field.component';\nimport { IdsErrorMessageMapping } from '../types/error-message-mapping';\n\nimport { Component, ViewEncapsulation, computed, contentChildren, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { AbstractControl } from '@angular/forms';\nimport { ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { of, startWith, switchMap, tap } from 'rxjs';\n\n@Component({\n selector: 'ids-error-message',\n imports: [IdsIconComponent],\n templateUrl: './error-message.component.html',\n hostDirectives: [IdsMessageDirective],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IdsErrorMessageComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'error-message';\n }\n\n private _parent = inject(IdsFormFieldComponent, { skipSelf: true });\n\n private _control = signal<AbstractControl | null>(null);\n private _errorDefDirs = contentChildren(IdsErrorDefinitionDirective);\n private _errorDefs = computed(() => this._errorDefDirs().map((errorDefDir) => errorDefDir.toErrorMessageMapping()));\n\n protected _validationError = signal<IdsErrorMessageMapping | null>(null);\n\n protected _hostClasses = computed(() => this._getHostClasses([]));\n\n public suffixes = contentChildren(IdsMessageSuffixDirective);\n\n constructor() {\n super();\n toObservable(this._parent.control).pipe(\n tap((controlDir) => this._control.set(controlDir?.control ?? null)),\n switchMap(() => this._control()?.statusChanges.pipe(startWith(this._control()?.status)) ?? of(null)),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe((status) => {\n if (status === 'INVALID') {\n const nextError = this._selectMostImportantValidationError();\n this._validationError.set(nextError);\n } else {\n this._validationError.set(null);\n }\n });\n }\n\n private _selectMostImportantValidationError(): IdsErrorMessageMapping | null {\n const errorDefs = this._errorDefs();\n const control = this._control();\n\n if (!errorDefs?.length || !control?.errors || Object.keys(control.errors).length === 0) {\n return null;\n }\n\n const errorCodes = new Set(Object.keys(control.errors));\n\n return errorDefs.find((errorDef) => errorCodes.has(errorDef.code)) ?? null;\n }\n\n protected _getValidationErrorMessage(messageOrFn: IdsErrorMessageMapping['message']): string {\n return messageOrFn instanceof Function ? messageOrFn() : messageOrFn;\n }\n}\n","<div class=\"ids-message__prefix\">\n <ng-content select=\"[idsMessagePrefix]\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"exclamation-circle\" variant=\"error\" />\n </ng-content>\n</div>\n<div class=\"ids-message__text\">\n @let validationError = _validationError();\n @if (validationError) {\n @let messageString = _getValidationErrorMessage(validationError.message);\n {{ messageString }}\n }\n</div>\n@if (suffixes().length) {\n <div class=\"ids-message__suffix\">\n <ng-content select=\"[idsMessageSuffix]\" />\n </div>\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsMessagePrefix]',\n standalone: true,\n})\nexport class IdsMessagePrefixDirective {\n}\n","import { IdsMessagePrefixDirective } from '../../../directives/message-prefix.directive';\nimport { IdsMessageSuffixDirective } from '../../../directives/message-suffix.directive';\nimport { IdsMessageDirective } from '../../../directives/message.directive';\n\nimport { Component, contentChildren, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ids-hint-message',\n imports: [],\n templateUrl: './hint-message.component.html',\n host: {\n class: 'ids-hint-message',\n },\n hostDirectives: [\n {\n directive: IdsMessageDirective,\n inputs: [\n 'size: size',\n 'variant: variant',\n ],\n },\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IdsHintMessageComponent {\n public prefixes = contentChildren(IdsMessagePrefixDirective);\n public suffixes = contentChildren(IdsMessageSuffixDirective);\n}\n","@if (prefixes().length) {\n <div class=\"ids-message__prefix\">\n <ng-content select=\"[idsMessagePrefix]\" />\n </div>\n}\n<div class=\"ids-message__text\">\n <ng-content />\n</div>\n@if (suffixes().length) {\n <div class=\"ids-message__suffix\">\n <ng-content select=\"[idsMessageSuffix]\" />\n </div>\n}\n","import { IdsMessageSuffixDirective } from '../../../directives/message-suffix.directive';\nimport { IdsMessageDirective } from '../../../directives/message.directive';\n\nimport { Component, ViewEncapsulation, computed, contentChildren } from '@angular/core';\nimport { ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\n@Component({\n selector: 'ids-success-message',\n imports: [IdsIconComponent],\n templateUrl: './success-message.component.html',\n hostDirectives: [IdsMessageDirective],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IdsSuccessMessageComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'success-message';\n }\n\n protected _hostClasses = computed(() => this._getHostClasses([]));\n\n public suffixes = contentChildren(IdsMessageSuffixDirective);\n}\n","<div class=\"ids-message__prefix\">\n <ng-content select=\"[idsMessagePrefix]\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"check\" variant=\"success\" />\n </ng-content>\n</div>\n<div class=\"ids-message__text\">\n <ng-content />\n</div>\n@if (suffixes().length) {\n <div class=\"ids-message__suffix\">\n <ng-content select=\"[idsMessageSuffix]\" />\n </div>\n}\n","import { IDS_FORM_FIELD_DEFAULT_CONFIG, IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY, IdsFormFieldDefaultConfig } from './form-field-defaults';\nimport { IDS_FORM_FIELD_CONTROL } from './tokens/form-field-control';\nimport { IdsFormFieldVariantType } from './types/form-field-variant.type';\n\nimport { IdsFormFieldActionDirective } from '../../directives/form-field-action.directive';\nimport { IdsPrefixDirective } from '../../directives/prefix.directive';\nimport { IdsSuffixDirective } from '../../directives/suffix.directive';\nimport { IdsValidators } from '../../validators';\nimport { IdsFieldsetComponent } from '../fieldset/fieldset.component';\nimport { IdsErrorMessageComponent } from '../message/error-message/error-message.component';\nimport { IdsHintMessageComponent } from '../message/hint-message/hint-message.component';\nimport { IdsSuccessMessageComponent } from '../message/success-message/success-message.component';\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChild, contentChildren, ElementRef, inject, input, isDevMode, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Validators } from '@angular/forms';\nimport { ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-form-field',\n imports: [],\n templateUrl: './form-field.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsFormFieldComponent extends ComponentBaseWithDefaults<IdsFormFieldDefaultConfig> implements AfterContentInit {\n protected override get _hostName(): string {\n return 'form-field';\n }\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _parentFieldset = inject(IdsFieldsetComponent, { optional: true });\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_FORM_FIELD_DEFAULT_CONFIG);\n\n private _fieldWrapper = viewChild.required<ElementRef<HTMLElement>>('fieldWrapper');\n private _child = contentChild(IDS_FORM_FIELD_CONTROL);\n private _hintMessages = contentChildren(IdsHintMessageComponent, { descendants: true });\n private _successMessages = contentChildren(IdsSuccessMessageComponent, { descendants: true });\n private _errorMessages = contentChildren(IdsErrorMessageComponent, { descendants: true });\n private _actions = contentChildren(IdsFormFieldActionDirective);\n private _prefixes = contentChildren(IdsPrefixDirective);\n private _suffixes = contentChildren(IdsSuffixDirective);\n\n public hasActions = computed(() => Boolean(this._actions().length));\n public hasLeadingIcon = computed(() => Boolean(this._prefixes().filter((prefix) => prefix.isLeadingIcon).length));\n public hasPrefix = computed(() => Boolean(this._prefixes().filter((prefix) => !prefix.isLeadingIcon).length));\n public hasSuffix = computed(() => Boolean(this._suffixes().filter((suffix) => !suffix.isTrailingIcon).length));\n public hasTrailingIcon = computed(() => Boolean(this._suffixes().filter((suffix) => suffix.isTrailingIcon).length));\n public inputId = computed(() => this._child()?.id());\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsFormFieldVariantType>(this._defaultConfig.variant);\n public parentOrSelfSize = computed(() => this._parentFieldset?.size() ?? this.size());\n public parentOrSelfVariant = computed(() => this._parentFieldset?.variant() ?? this.variant());\n public control = computed(() => this._child()?.ngControl);\n public disabled = computed(() => Boolean(this._child()?.disabled()));\n private _hasErrorState = computed(() => Boolean(this._child()?.hasErrorState()));\n private _hasSuccessState = computed(() => Boolean(this._child()?.hasSuccessState()));\n protected _hostClasses = computed(() => this._getHostClasses([\n this.parentOrSelfSize(),\n this.parentOrSelfVariant(),\n this.disabled() ? 'disabled' : null,\n this._hasErrorState() ? 'invalid' : null,\n this._hasSuccessState() ? 'valid' : null,\n ]),\n );\n\n public displayedMessages = computed<'error' | 'success' | 'hint' | undefined>(() => {\n if (this._errorMessages().length > 0 && this._hasErrorState()) {\n return 'error';\n }\n if (this._successMessages().length > 0 && this._hasSuccessState()) {\n return 'success';\n }\n if (this._hintMessages().length > 0) {\n return 'hint';\n }\n return undefined;\n });\n\n public ngAfterContentInit(): void {\n if (isDevMode() && !this._child()) {\n throw this._createHostError('no form element was provided');\n }\n this._child()?.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n public get hasRequiredValidator(): boolean {\n const control = this.control()?.control;\n if (!control) {\n return Boolean(this._child()?.required());\n }\n return control.hasValidator(Validators.required)\n || control.hasValidator(Validators.requiredTrue)\n || control.hasValidator(IdsValidators.required)\n || control.hasValidator(IdsValidators.requiredTrue)\n || control.hasValidator(IdsValidators.requiredFalse);\n }\n\n public getConnectedOverlayOrigin(): ElementRef {\n return this._fieldWrapper();\n }\n\n public containerClick(event: MouseEvent): void {\n const containerClick = this._child()?.onContainerClick;\n if (containerClick) {\n containerClick(event);\n }\n }\n}\n","<label class=\"ids-form-field__label\" [for]=\"inputId()\">\n <ng-content select=\"ids-label\" />\n @if (hasRequiredValidator) {\n <span class=\"ids-form-field__required-marker\"></span>\n }\n</label>\n\n<div #fieldWrapper class=\"ids-form-field__field-wrapper\">\n <div class=\"ids-form-field__field-wrapper__container\" (click)=\"containerClick($event)\">\n @if (hasLeadingIcon()) {\n <div class=\"ids-form-field__leading-icon\">\n <ng-content select=\"ids-icon[idsLeadingIcon]\" />\n </div>\n }\n @if (hasPrefix()) {\n <div class=\"ids-form-field__prefix\">\n <ng-content select=\"[idsPrefix]\" />\n </div>\n }\n <div class=\"ids-form-field__infix\">\n <ng-content />\n </div>\n @if (hasSuffix()) {\n <div class=\"ids-form-field__suffix\">\n <ng-content select=\"[idsSuffix]\" />\n </div>\n }\n @if (hasTrailingIcon()) {\n <div class=\"ids-form-field__trailing-icon\">\n <ng-content select=\"ids-icon[idsTrailingIcon]\" />\n </div>\n }\n </div>\n @if (hasActions()) {\n <div class=\"ids-form-field__field-wrapper__action\">\n <ng-content select=\"[idsFormFieldAction]\" />\n </div>\n }\n</div>\n\n<div class=\"ids-form-field__subscript-wrapper\">\n @let messages = displayedMessages();\n @if (messages) {\n <div class=\"ids-form-field__message-container\">\n @switch (messages) {\n @case (\"error\") {\n <ng-content select=\"ids-error-message\" />\n }\n @case (\"success\") {\n <ng-content select=\"ids-success-message\" />\n }\n @case (\"hint\") {\n <ng-content select=\"ids-hint-message\" />\n }\n }\n </div>\n }\n</div>\n","import { AbstractErrorStateMatcher, ErrorStateMatcher } from '../../common/error/error-state';\nimport { AbstractSuccessStateMatcher, SuccessStateMatcher } from '../../common/success/success-state';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsInputDefaultConfig {\n errorStateMatcher?: typeof AbstractErrorStateMatcher\n successStateMatcher?: typeof AbstractSuccessStateMatcher\n}\n\nexport const IDS_INPUT_DEFAULT_CONFIG = new InjectionToken<IdsInputDefaultConfig>(\n 'IDS_INPUT_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_INPUT_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_INPUT_DEFAULT_CONFIG_FACTORY(): Required<IdsInputDefaultConfig> {\n return {\n errorStateMatcher: ErrorStateMatcher,\n successStateMatcher: SuccessStateMatcher,\n };\n}\n","import { IDS_INPUT_DEFAULT_CONFIG, IDS_INPUT_DEFAULT_CONFIG_FACTORY, IdsInputDefaultConfig } from './input-defaults';\nimport { IdsInputType } from './types/input.type';\n\nimport { AbstractErrorStateMatcher, ErrorStateTracker } from '../../common/error/error-state';\nimport { AbstractSuccessStateMatcher, SuccessStateTracker } from '../../common/success/success-state';\nimport { formFieldControlClass, IdsFormFieldControl } from '../form-field/form-field-control';\nimport { IDS_FORM_FIELD_CONTROL } from '../form-field/tokens/form-field-control';\n\nimport { computed, Directive, effect, ElementRef, inject, input, isDevMode, DoCheck, signal, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { coerceBooleanAttribute, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\nimport { Subject, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_INPUT_DEFAULT_CONFIG_FACTORY();\n\nconst IDS_INPUT_INVALID_TYPES: IdsInputType[] = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n@Directive({\n selector: `input[idsInput][ngModel]:not([formControl]):not([formControlName]),\n input[idsInput][formControl]:not([ngModel]):not([formControlName]),\n input[idsInput][formControlName]:not([ngModel]):not([formControl]),\n textarea[idsInput][ngModel]:not([formControl]):not([formControlName]),\n textarea[idsInput][formControl]:not([ngModel]):not([formControlName]),\n textarea[idsInput][formControlName]:not([ngModel]):not([formControl])`,\n exportAs: 'idsInput',\n standalone: true,\n providers: [\n {\n provide: IDS_FORM_FIELD_CONTROL,\n useExisting: IdsInputDirective,\n },\n ],\n host: {\n '[attr.placeholder]': 'placeholder()',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.readonly]': 'readonly() ? \"\" : null',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n },\n})\nexport class IdsInputDirective\n extends ComponentBaseWithDefaults<IdsInputDefaultConfig>\n implements IdsFormFieldControl, OnInit, DoCheck {\n protected override get _hostName(): string {\n return 'input';\n }\n\n private readonly _elementRef = inject<ElementRef<HTMLInputElement> | ElementRef<HTMLTextAreaElement>>(ElementRef);\n private readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n private readonly _parentForm = inject(NgForm, { optional: true });\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_INPUT_DEFAULT_CONFIG);\n\n public readonly errorStateChanges = new Subject<void>();\n public readonly successStateChanges = new Subject<void>();\n public readonly ngControl = inject(NgControl);\n\n private _focused = false;\n private _errorStateTracker?: ErrorStateTracker;\n private _successStateTracker?: SuccessStateTracker;\n private _successStateSubscription?: Subscription;\n\n public placeholder = input<string>('');\n public name = input<string>();\n public type = input<IdsInputType>('text');\n public required = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public readonly = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public disabled = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n private _controlDisabled = signal(false);\n public isDisabled = computed(() => this.disabled() || this._controlDisabled());\n public canHandleSuccessState = input<boolean>(false);\n public errorStateMatcher = input<AbstractErrorStateMatcher>(inject(this._defaultConfig.errorStateMatcher));\n public successStateMatcher = input<AbstractSuccessStateMatcher>(inject(this._defaultConfig.successStateMatcher));\n\n protected _hostClasses = computed(() => this._getHostClasses([], [formFieldControlClass]),\n );\n\n public hasErrorState = signal<boolean>(false);\n public hasSuccessState = signal<boolean>(false);\n\n private _validateTypeEffect = effect(() => {\n this._validateType(this.type());\n });\n\n private _canHandleSuccessStateEffect = effect(() => {\n this._setSuccessStateTracker(this.canHandleSuccessState());\n });\n\n public setDescribedByIds(ids: string[]): void {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n public ngOnInit(): void {\n this._initErrorStateTracker();\n }\n\n protected _initErrorStateTracker(): void {\n this._errorStateTracker = new ErrorStateTracker(\n this.errorStateMatcher(),\n this.ngControl,\n this._parentFormGroup,\n this._parentForm,\n this.errorStateChanges,\n );\n\n this.errorStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasErrorState.set(this._errorStateTracker!.hasErrorState));\n }\n\n protected _setSuccessStateTracker(canHandleSuccessState: boolean): void {\n if (canHandleSuccessState) {\n this._successStateTracker = new SuccessStateTracker(\n this.successStateMatcher(),\n this.ngControl,\n this._parentFormGroup,\n this._parentForm,\n this.successStateChanges,\n );\n\n this._successStateSubscription = this.successStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasSuccessState.set(this._successStateTracker!.hasSuccessState));\n } else {\n this._successStateTracker = undefined;\n this._successStateSubscription?.unsubscribe();\n }\n }\n\n public ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorAndSuccessState();\n\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled()) {\n this._controlDisabled.set(this.ngControl.disabled);\n }\n }\n }\n\n private _validateType(type: IdsInputType): void {\n if (isDevMode() && IDS_INPUT_INVALID_TYPES.indexOf(type) > -1) {\n throw this._createHostError(`Input type ${type} is not supportedby idsInput`);\n }\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n private _focusChanged(isFocused: boolean): void {\n if (isFocused !== this._focused) {\n this._focused = isFocused;\n }\n }\n\n public updateErrorAndSuccessState(): void {\n this._errorStateTracker?.updateErrorState();\n this._successStateTracker?.updateSuccessState();\n }\n\n /**\n * Should be an arrow function in order to handle `this` outside of this class\n */\n public onContainerClick = (): void => {\n if (!this._focused && !this.readonly() && !this.isDisabled()) {\n this.focus();\n }\n };\n}\n","export const Message = {\n HINT: 'hint',\n ERROR: 'error',\n SUCCESS: 'success',\n} as const;\n\nexport type MessageType = (typeof Message)[keyof typeof Message];\n","import { IdsOptionGroupComponent } from '../option-group.component';\n\nimport { InjectionToken } from '@angular/core';\n\nexport const IDS_OPTION_GROUP = new InjectionToken<IdsOptionGroupComponent>('IdsOptionGroup');\n","import { IdsFormFieldVariantType } from '../../form-field/types/form-field-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsOptionParentComponent {\n multiSelect: Signal<boolean>\n inertGroups?: boolean\n parentSize: Signal<IdsSizeType>\n parentVariant: Signal<IdsFormFieldVariantType>\n isOptionPreSelectedByValue(optionValue: unknown): boolean\n}\n\nexport const IDS_OPTION_PARENT_COMPONENT = new InjectionToken<IdsOptionParentComponent>(\n 'IDS_OPTION_PARENT_COMPONENT',\n);\n","import { IdsOptionComponent } from '../option.component';\n\nexport class IdsOptionSelectionChange<T = unknown> {\n constructor(\n public source: IdsOptionComponent<T>,\n public selected: boolean,\n public isUserInput = false,\n ) {}\n}\n","import { IDS_OPTION_GROUP } from './tokens/option-group';\nimport { IDS_OPTION_PARENT_COMPONENT } from './tokens/option-parent';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanAttribute, ComponentBase } from '@i-cell/ids-angular/core';\n\n@Component({\n selector: 'ids-option-group',\n imports: [],\n templateUrl: './option-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: IDS_OPTION_GROUP, useExisting: IdsOptionGroupComponent }],\n host: {\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled().toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId()',\n },\n})\nexport class IdsOptionGroupComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'option-group';\n }\n\n private readonly _parent = inject(IDS_OPTION_PARENT_COMPONENT);\n protected readonly _inert = this._parent?.inertGroups ?? false;\n\n public label = input<string>();\n public disabled = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n\n protected readonly _labelId = computed(() => `${this.id()}-label`);\n protected readonly _hostClasses = computed(() => this._getHostClasses([\n this.disabled() ? 'disabled' : null,\n this._parent.parentSize(),\n this._parent.parentVariant(),\n ]));\n}\n","<div role=\"presentation\" class=\"ids-option-group__label\" [id]=\"_labelId()\">\n <div class=\"ids-option-group__text\">{{ label() }}</div>\n</div>\n<ng-content select=\"ids-option, ng-container\" />\n","import { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsPseudoCheckboxParent<T extends string> {\n embeddedPseudoCheckboxSize: Signal<IdsSizeType>\n embeddedPseudoCheckboxVariant: Signal<T>\n}\n\nexport const IDS_PSEUDO_CHECKBOX_PARENT = new InjectionToken<IdsPseudoCheckboxParent<string>>(\n 'IDS_PSEUDO_CHECKBOX_PARENT',\n);\n","export const IdsPseudoCheckboxState = {\n UNCHECKED: 'unchecked',\n CHECKED: 'checked',\n INDETERMINATE: 'indeterminate',\n} as const;\n\nexport type IdsPseudoCheckboxStateType = (typeof IdsPseudoCheckboxState)[keyof typeof IdsPseudoCheckboxState];\n","import { IDS_PSEUDO_CHECKBOX_PARENT } from './tokens/pseudo-checkbox-parent';\nimport { IdsPseudoCheckboxState, IdsPseudoCheckboxStateType } from './types/pseudo-checkbox-state.type';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanAttribute, ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\n@Component({\n selector: 'ids-pseudo-checkbox',\n imports: [IdsIconComponent],\n templateUrl: './pseudo-checkbox.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PseudoCheckboxComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'pseudo-checkbox';\n }\n\n private readonly _parent = inject(IDS_PSEUDO_CHECKBOX_PARENT, { optional: true });\n public checkboxState = input<IdsPseudoCheckboxStateType>(IdsPseudoCheckboxState.UNCHECKED);\n public disabled = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n\n protected _isChecked = computed(() => this.checkboxState() === IdsPseudoCheckboxState.CHECKED);\n protected _isIndeterminate = computed(() => this.checkboxState() === IdsPseudoCheckboxState.INDETERMINATE);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parent?.embeddedPseudoCheckboxSize(),\n this._parent?.embeddedPseudoCheckboxVariant(),\n this.disabled() ? 'disabled' : null,\n ]),\n );\n}\n","<div class=\"ids-pseudo-checkbox__input-wrapper\">\n <input\n type=\"checkbox\"\n [disabled]=\"disabled()\"\n [attr.aria-checked]=\"_isIndeterminate() ? 'mixed' : null\"\n [checked]=\"_isChecked()\"\n [indeterminate]=\"_isIndeterminate()\"\n (change)=\"$event.stopPropagation()\"\n />\n <div class=\"ids-pseudo-checkbox__icon\" aria-hidden=\"true\">\n @if (_isIndeterminate()) {\n <ids-icon fontIcon=\"minus\" aria-hidden=\"true\" />\n }\n @if (_isChecked()) {\n <ids-icon fontIcon=\"check\" aria-hidden=\"true\" />\n }\n </div>\n</div>\n","import { IdsOptionGroupComponent } from './option-group.component';\nimport { IDS_OPTION_GROUP } from './tokens/option-group';\nimport { IDS_OPTION_PARENT_COMPONENT } from './tokens/option-parent';\nimport { IdsOptionSelectionChange } from './types/option-events.class';\n\nimport { IdsFormFieldVariant, IdsFormFieldVariantType } from '../form-field/types/form-field-variant.type';\nimport { PseudoCheckboxComponent } from '../pseudo-checkbox/pseudo-checkbox.component';\nimport { IDS_PSEUDO_CHECKBOX_PARENT, IdsPseudoCheckboxParent } from '../pseudo-checkbox/tokens/pseudo-checkbox-parent';\nimport { IdsPseudoCheckboxState } from '../pseudo-checkbox/types/pseudo-checkbox-state.type';\n\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, OnInit, output, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanAttribute, ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\n@Component({\n selector: 'ids-option',\n imports: [\n IdsIconComponent,\n PseudoCheckboxComponent,\n ],\n templateUrl: './option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IDS_PSEUDO_CHECKBOX_PARENT,\n useExisting: IdsOptionComponent,\n },\n ],\n host: {\n 'role': 'option',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': 'selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsOptionComponent<T = unknown>\n extends ComponentBase\n implements OnInit, IdsPseudoCheckboxParent<IdsFormFieldVariantType> {\n protected override get _hostName(): string {\n return 'option';\n }\n\n private readonly _parent = inject(IDS_OPTION_PARENT_COMPONENT);\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\n public readonly group = inject(IDS_OPTION_GROUP, { optional: true });\n\n private _textElement = viewChild.required<ElementRef<HTMLElement>>('text');\n\n public selected = signal<boolean>(false);\n private _active = signal<boolean>(false);\n public size = computed(() => this._parent.parentSize());\n public variant = computed(() => this._parent.parentVariant());\n\n public value = input<T>();\n public explicitViewValue = input<string | null>(null, { alias: 'viewValue' });\n public disabledInput = input<boolean, unknown>(false, { alias: 'disabled', transform: coerceBooleanAttribute });\n\n public disabled = false; // Do not delete this class member, until ListKeyManagerOption requires: `disabled: boolean`\n\n protected _groupOrOptionIsDisabled = computed(() => this.group?.disabled() || this.disabledInput());\n\n protected readonly _multiSelect = Boolean(this._parent?.multiSelect());\n\n public onSelectionChange = output<IdsOptionSelectionChange<T>>();\n\n public viewValue = computed(() => this._textElement().nativeElement.textContent || this.explicitViewValue() || '');\n protected readonly _hostClasses = computed(() => this._getHostClasses([\n this.selected() ? 'selected' : null,\n this._active() ? 'active' : null,\n this._groupOrOptionIsDisabled() ? 'disabled' : null,\n this._multiSelect ? 'multiselect' : null,\n this.size(),\n this.variant(),\n ]));\n\n protected _pseudoCheckboxState = computed(() => (this.selected() ? IdsPseudoCheckboxState.CHECKED : IdsPseudoCheckboxState.UNCHECKED));\n public embeddedPseudoCheckboxSize = computed(() => this.size());\n public embeddedPseudoCheckboxVariant = signal(IdsFormFieldVariant.SURFACE);\n\n constructor() {\n super();\n effect(() => { // Do not delete this effect, until ListKeyManagerOption requires: `disabled: boolean`\n this.disabled = this.disabledInput();\n });\n }\n\n public ngOnInit(): void {\n const parent = this._parent;\n\n if (parent.isOptionPreSelectedByValue(this.value())) {\n this.selected.set(true);\n }\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === 'ENTER' || event.key === ' ') && !hasModifierKey(event)) {\n this.selectViaInteraction();\n event.preventDefault();\n }\n }\n\n public selectViaInteraction(): void {\n if (!this._groupOrOptionIsDisabled()) {\n this._emitSelectionChangeEvent(!this.selected(), true);\n }\n }\n\n public getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n public select(emitEvent = true): void {\n if (!this.selected()) {\n if (emitEvent) {\n this._emitSelectionChangeEvent(true);\n }\n }\n }\n\n public deselect(emitEvent = true): void {\n if (this.selected()) {\n if (emitEvent) {\n this._emitSelectionChangeEvent(false);\n }\n }\n }\n\n public focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n const element = this._element.nativeElement;\n\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n\n public setActiveStyles(): void {\n if (!this._active()) {\n this._active.set(true);\n }\n }\n\n public setInactiveStyles(): void {\n if (this._active()) {\n this._active.set(false);\n }\n }\n\n public getLabel(): string {\n return this.viewValue();\n }\n\n private _emitSelectionChangeEvent(selected: boolean, isUserInput = false): void {\n if (this._multiSelect || !this.selected()) {\n this.onSelectionChange.emit(new IdsOptionSelectionChange<T>(this, selected, isUserInput));\n }\n }\n}\n\nexport function _countGroupLabelsBeforeOption(\n optionIndex: number,\n options: Readonly<IdsOptionComponent[]>,\n optionGroups: Readonly<IdsOptionGroupComponent[]>,\n): number {\n if (optionGroups.length) {\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (options[i].group && options[i].group === optionGroups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\nexport function _getOptionScrollPosition(\n optionOffset: number,\n optionHeight: number,\n currentScrollPosition: number,\n panelHeight: number,\n): number {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\n}\n","@if (_multiSelect) {\n <ids-pseudo-checkbox aria-hidden=\"true\" [disabled]=\"_groupOrOptionIsDisabled()\" [checkboxState]=\"_pseudoCheckboxState()\" />\n}\n\n<div #text class=\"ids-option__text\"><ng-content /></div>\n\n@if (!_multiSelect && selected()) {\n <ids-icon fontIcon=\"check\" />\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ids-label',\n standalone: true,\n})\nexport class IdsLabelDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultConfig","i1.IdsMessageDirective"],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-forms.mjs","sources":["../../../projects/widgets/forms/common/error/error-state.ts","../../../projects/widgets/forms/common/success/success-state.ts","../../../projects/widgets/forms/components/fieldset/fieldset-row/fieldset-row.component.ts","../../../projects/widgets/forms/components/fieldset/fieldset-row/fieldset-row.component.html","../../../projects/widgets/forms/components/form-field/types/form-field-variant.type.ts","../../../projects/widgets/forms/components/fieldset/fieldset-defaults.ts","../../../projects/widgets/forms/components/fieldset/fieldset-message.directive.ts","../../../projects/widgets/forms/components/fieldset/fieldset.component.ts","../../../projects/widgets/forms/components/fieldset/fieldset.component.html","../../../projects/widgets/forms/components/form-field/tokens/form-field-control.ts","../../../projects/widgets/forms/components/form-field/form-field-control.ts","../../../projects/widgets/forms/components/form-field/form-field-defaults.ts","../../../projects/widgets/forms/directives/form-field-action.directive.ts","../../../projects/widgets/forms/directives/prefix.directive.ts","../../../projects/widgets/forms/directives/suffix.directive.ts","../../../projects/widgets/forms/validators.ts","../../../projects/widgets/forms/components/message/error-message/error-definition.directive.ts","../../../projects/widgets/forms/directives/message-suffix.directive.ts","../../../projects/widgets/forms/components/message/types/message-variant.type.ts","../../../projects/widgets/forms/components/message/message-defaults.ts","../../../projects/widgets/forms/components/message/types/message-parent-form-field.ts","../../../projects/widgets/forms/directives/message.directive.ts","../../../projects/widgets/forms/components/message/error-message/error-message.component.ts","../../../projects/widgets/forms/components/message/error-message/error-message.component.html","../../../projects/widgets/forms/directives/message-prefix.directive.ts","../../../projects/widgets/forms/components/message/hint-message/hint-message.component.ts","../../../projects/widgets/forms/components/message/hint-message/hint-message.component.html","../../../projects/widgets/forms/components/message/success-message/success-message.component.ts","../../../projects/widgets/forms/components/message/success-message/success-message.component.html","../../../projects/widgets/forms/components/form-field/form-field.component.ts","../../../projects/widgets/forms/components/form-field/form-field.component.html","../../../projects/widgets/forms/components/input/input-defaults.ts","../../../projects/widgets/forms/components/input/input.directive.ts","../../../projects/widgets/forms/components/message/types/message.type.ts","../../../projects/widgets/forms/components/option/tokens/option-group.ts","../../../projects/widgets/forms/components/option/tokens/option-parent.ts","../../../projects/widgets/forms/components/option/types/option-events.class.ts","../../../projects/widgets/forms/components/option/option-group.component.ts","../../../projects/widgets/forms/components/option/option-group.component.html","../../../projects/widgets/forms/components/pseudo-checkbox/tokens/pseudo-checkbox-parent.ts","../../../projects/widgets/forms/components/pseudo-checkbox/types/pseudo-checkbox-state.type.ts","../../../projects/widgets/forms/components/pseudo-checkbox/pseudo-checkbox.component.ts","../../../projects/widgets/forms/components/pseudo-checkbox/pseudo-checkbox.component.html","../../../projects/widgets/forms/components/option/option.component.ts","../../../projects/widgets/forms/components/option/option.component.html","../../../projects/widgets/forms/directives/label.directive.ts","../../../projects/widgets/forms/i-cell-ids-angular-forms.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport abstract class AbstractErrorStateMatcher {\n public abstract isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher extends AbstractErrorStateMatcher {\n public isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n\nexport class ErrorStateTracker {\n /** Whether the tracker is currently in an error state. */\n public hasErrorState = false;\n\n constructor(\n private _matcher: ErrorStateMatcher | null,\n private _ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges?: Subject<void>,\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n public updateErrorState(): void {\n const oldState = this.hasErrorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this._matcher;\n const control = this._ngControl ? (this._ngControl.control) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.hasErrorState = newState;\n this._stateChanges?.next();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport abstract class AbstractSuccessStateMatcher {\n public abstract isSuccessState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SuccessStateMatcher extends AbstractSuccessStateMatcher {\n public isSuccessState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.valid && (control.touched || (form && form.submitted)));\n }\n}\n\nexport class SuccessStateTracker {\n /** Whether the tracker is currently in an success state. */\n public hasSuccessState = false;\n\n constructor(\n private _matcher: SuccessStateMatcher | null,\n private _ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges?: Subject<void>,\n ) {}\n\n /** Updates the success state based on the provided success state matcher. */\n public updateSuccessState(): void {\n const oldState = this.hasSuccessState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this._matcher;\n const control = this._ngControl ? (this._ngControl.control) : null;\n const newState = matcher?.isSuccessState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.hasSuccessState = newState;\n this._stateChanges?.next();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, signal, ViewEncapsulation } from '@angular/core';\nimport { ComponentBase } from '@i-cell/ids-angular/core';\n\n@Component({\n selector: 'ids-fieldset-row',\n imports: [],\n templateUrl: './fieldset-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsFieldsetRowComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'fieldset-row';\n }\n\n protected _hostClasses = signal(this._getHostClasses([]));\n}\n","<ng-content />\n","export const IdsFormFieldVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n} as const;\n\nexport type IdsFormFieldVariantType = (typeof IdsFormFieldVariant)[keyof typeof IdsFormFieldVariant];\n","import { IdsFormFieldVariant, IdsFormFieldVariantType } from '../form-field/types/form-field-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsFieldsetDefaultConfig {\n size?: IdsSizeType\n variant?: IdsFormFieldVariantType,\n}\n\nexport const IDS_FIELDSET_DEFAULT_CONFIG = new InjectionToken<IdsFieldsetDefaultConfig>(\n 'IDS_FIELDSET_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_FIELDSET_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_FIELDSET_DEFAULT_CONFIG_FACTORY(): Required<IdsFieldsetDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsFormFieldVariant.SURFACE,\n };\n}\n\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsFieldsetMessage]',\n standalone: true,\n})\nexport class IdsFieldsetMessageDirective {}\n","import { IDS_FIELDSET_DEFAULT_CONFIG, IDS_FIELDSET_DEFAULT_CONFIG_FACTORY, IdsFieldsetDefaultConfig } from './fieldset-defaults';\nimport { IdsFieldsetMessageDirective } from './fieldset-message.directive';\n\nimport { IdsFormFieldVariantType } from '../form-field/types/form-field-variant.type';\n\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, ViewEncapsulation } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_FIELDSET_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'fieldset[idsFieldset]',\n imports: [],\n templateUrl: './fieldset.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsFieldsetComponent extends ComponentBaseWithDefaults<IdsFieldsetDefaultConfig> {\n protected override get _hostName(): string {\n return 'fieldset';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_FIELDSET_DEFAULT_CONFIG);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsFormFieldVariantType>(this._defaultConfig.variant);\n public legend = input<string>('');\n\n private _fieldsetMessage = contentChildren<IdsFieldsetMessageDirective>(IdsFieldsetMessageDirective);\n\n protected _hasMessage = computed(() => this._fieldsetMessage().length > 0);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n ]));\n}\n","<legend class=\"ids-fieldset-legend\">{{ legend() }}</legend>\n@if (_hasMessage()) {\n <div class=\"ids-fieldset-message\">\n <ng-content select=\"[idsFieldsetMessage]\" />\n </div>\n}\n<ng-content select=\"ids-fieldset-row\" />\n","import { IdsFormFieldControl } from '../form-field-control';\n\nimport { InjectionToken } from '@angular/core';\n\nexport const IDS_FORM_FIELD_CONTROL = new InjectionToken<IdsFormFieldControl>('IDS_FORM_FIELD_CONTROL');\n","import { Signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport const formFieldControlClass = 'ids-form-field-control';\n\nexport abstract class IdsFormFieldControl {\n public readonly errorStateChanges!: Observable<void>;\n public readonly successStateChanges!: Observable<void>;\n public readonly id!: Signal<string>;\n public readonly placeholder!: Signal<string>;\n public readonly ngControl!: NgControl | null;\n public readonly disabled!: Signal<boolean>;\n public readonly required!: Signal<boolean>;\n public readonly hasErrorState!: Signal<boolean>;\n public readonly hasSuccessState!: Signal<boolean>;\n public readonly controlType?: Signal<string>;\n public readonly autofilled?: Signal<boolean>;\n public readonly userAriaDescribedBy?: Signal<string>;\n public readonly disableAutomaticLabeling?: Signal<boolean>;\n public abstract setDescribedByIds(ids: string[]): void;\n public abstract onContainerClick(event: MouseEvent): void;\n}\n","import { IdsFormFieldVariant, IdsFormFieldVariantType } from './types/form-field-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsFormFieldDefaultConfig {\n size?: IdsSizeType\n variant?: IdsFormFieldVariantType\n}\n\nexport const IDS_FORM_FIELD_DEFAULT_CONFIG = new InjectionToken<IdsFormFieldDefaultConfig>(\n 'IDS_FORM_FIELD_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY(): Required<IdsFormFieldDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsFormFieldVariant.SURFACE,\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsFormFieldAction]',\n standalone: true,\n})\nexport class IdsFormFieldActionDirective {\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[idsPrefix], [idsLeadingIcon]',\n standalone: true,\n})\nexport class IdsPrefixDirective {\n @Input('idsLeadingIcon')\n public set idsLeadingIcon(value: '') {\n this.isLeadingIcon = true;\n }\n\n public isLeadingIcon = false;\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[idsSuffix], [idsTrailingIcon]',\n standalone: true,\n})\nexport class IdsSuffixDirective {\n @Input('idsTrailingIcon')\n public set idsTrailingIcon(value: '') {\n this.isTrailingIcon = true;\n }\n\n public isTrailingIcon = false;\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nfunction isEmptyInputValue(value: unknown): boolean {\n return (\n value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0)\n );\n}\n\nexport class IdsValidators {\n public static required(control: AbstractControl): ValidationErrors | null {\n return requiredValidator(control);\n }\n\n public static requiredTrue(control: AbstractControl): ValidationErrors | null {\n return requiredTrueValidator(control);\n }\n\n public static requiredFalse(control: AbstractControl): ValidationErrors | null {\n return requiredFalseValidator(control);\n }\n}\n\nexport function requiredValidator(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputValue(control.value) ? { required: true } : null;\n}\n\nexport function requiredTrueValidator(control: AbstractControl): ValidationErrors | null {\n return control.value === true ? null : { requiredTrue: true };\n}\n\nexport function requiredFalseValidator(control: AbstractControl): ValidationErrors | null {\n return control.value === false ? null : { requiredFalse: true };\n}\n","import { IdsErrorMessageMapping } from '../types/error-message-mapping';\n\nimport { Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Directive to map an error message to an error code for a form field.\n * Mappings must be defined between the directive element's tags ordered by priority (descending from top to bottom).\n * The error code is provided as an attribute, while the error message will be this directive's text content.\n * The latter can be a plain string literal or even an interpolated string value.\n *\n * @example\n * ```html\n * <ids-form-field>\n * <ids-label>Input field</ids-label>\n * <input\n * idsInput\n * ngModel\n * customValidator\n * required\n * [minlength]=\"3\"\n * [maxlength]=\"10\"\n * [pattern]=\"validPattern\"\n * >\n * <ids-error-message>\n * <ids-error-def code=\"required\">{{ 'ERROR.REQUIRED.CUSTOM' | translate }}</ids-error-def>\n * <ids-error-def code=\"minlength\">'minLength' error message</ids-error-def>\n * <ids-error-def code=\"maxlength\">'maxLength' error message</ids-error-def>\n * <ids-error-def code=\"pattern\">'pattern' error message with interpolation: {{ model.value }}</ids-error-def>\n * <ids-error-def code=\"custom\">Custom validator error message</ids-error-def>\n * </ids-error-message>\n * </ids-form-field>\n * ```\n */\n@Directive({\n selector: 'ids-error-def',\n})\nexport class IdsErrorDefinitionDirective {\n /**\n * The validation error's identifier code\n */\n public code = input.required<string>();\n\n private _elementRef = inject(ElementRef);\n\n /**\n * The validation error's message that will be presented to the user\n */\n get errorMessage(): string {\n return (this._elementRef.nativeElement as HTMLElement).innerText;\n }\n\n /**\n * Creates a IdsErrorMessageMapping instance based on this directive's state (code, errorMessage)\n * @returns A IdsErrorMessageMapping instance\n */\n public toErrorMessageMapping(): IdsErrorMessageMapping {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n return {\n code: this.code(),\n message: () => self.errorMessage,\n };\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsMessageSuffix]',\n standalone: true,\n})\nexport class IdsMessageSuffixDirective {\n}\n","export const IdsMessageVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsMessageVariantType = (typeof IdsMessageVariant)[keyof typeof IdsMessageVariant];\n","import { IdsMessageVariant, IdsMessageVariantType } from './types/message-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsMessageDefaultConfig {\n size?: IdsSizeType,\n variant?: IdsMessageVariantType,\n}\n\nexport const IDS_MESSAGE_DEFAULT_CONFIG = new InjectionToken<IdsMessageDefaultConfig>(\n 'IDS_MESSAGE_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_MESSAGE_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_MESSAGE_DEFAULT_CONFIG_FACTORY(): Required<IdsMessageDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsMessageVariant.SURFACE,\n };\n}\n\n","import { IdsFormFieldVariantType } from '../../form-field/types/form-field-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsMessageParentFormField {\n disabled: Signal<boolean>;\n size: Signal<IdsSizeType>;\n variant: Signal<IdsFormFieldVariantType>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IDS_MESSAGE_PARENT_FORM_FIELD = new InjectionToken<IdsMessageParentFormField>('IDS_MESSAGE_PARENT_FORM_FIELD');\n","import { IDS_MESSAGE_DEFAULT_CONFIG, IDS_MESSAGE_DEFAULT_CONFIG_FACTORY, IdsMessageDefaultConfig } from '../components/message/message-defaults';\nimport { IDS_MESSAGE_PARENT_FORM_FIELD } from '../components/message/types/message-parent-form-field';\nimport { IdsMessageVariantType } from '../components/message/types/message-variant.type';\n\nimport { Directive, computed, inject, input } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_MESSAGE_DEFAULT_CONFIG_FACTORY();\n\n@Directive({\n selector: '[idsMessage]',\n standalone: true,\n})\nexport class IdsMessageDirective extends ComponentBaseWithDefaults<IdsMessageDefaultConfig> {\n protected override get _hostName(): string {\n return 'message';\n }\n\n private readonly _parent = inject(IDS_MESSAGE_PARENT_FORM_FIELD, { skipSelf: true, optional: true });\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_MESSAGE_DEFAULT_CONFIG);\n\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsMessageVariantType>(this._defaultConfig.variant);\n private _parentOrSelfSize = computed(() => this._parent?.size() ?? this.size());\n private _parentOrSelfVariant = computed(() => this._parent?.variant() ?? this.variant());\n private _parentDisabled = computed(() => this._parent?.disabled());\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parentOrSelfSize(),\n this._parentOrSelfVariant(),\n this._parentDisabled() ? 'disabled' : null,\n ]));\n}\n","import { IdsErrorDefinitionDirective } from './error-definition.directive';\n\nimport { IdsMessageSuffixDirective } from '../../../directives/message-suffix.directive';\nimport { IdsMessageDirective } from '../../../directives/message.directive';\nimport { IdsFormFieldComponent } from '../../form-field/form-field.component';\nimport { IdsErrorMessageMapping } from '../types/error-message-mapping';\n\nimport { Component, ViewEncapsulation, computed, contentChildren, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { AbstractControl } from '@angular/forms';\nimport { ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { of, startWith, switchMap, tap } from 'rxjs';\n\n@Component({\n selector: 'ids-error-message',\n imports: [IdsIconComponent],\n templateUrl: './error-message.component.html',\n hostDirectives: [IdsMessageDirective],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IdsErrorMessageComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'error-message';\n }\n\n private _parent = inject(IdsFormFieldComponent, { skipSelf: true });\n\n private _control = signal<AbstractControl | null>(null);\n private _errorDefDirs = contentChildren(IdsErrorDefinitionDirective);\n private _errorDefs = computed(() => this._errorDefDirs().map((errorDefDir) => errorDefDir.toErrorMessageMapping()));\n\n protected _validationError = signal<IdsErrorMessageMapping | null>(null);\n\n protected _hostClasses = computed(() => this._getHostClasses([]));\n\n public suffixes = contentChildren(IdsMessageSuffixDirective);\n\n constructor() {\n super();\n toObservable(this._parent.control).pipe(\n tap((controlDir) => this._control.set(controlDir?.control ?? null)),\n switchMap(() => this._control()?.statusChanges.pipe(startWith(this._control()?.status)) ?? of(null)),\n takeUntilDestroyed(this._destroyRef),\n ).subscribe((status) => {\n if (status === 'INVALID') {\n const nextError = this._selectMostImportantValidationError();\n this._validationError.set(nextError);\n } else {\n this._validationError.set(null);\n }\n });\n }\n\n private _selectMostImportantValidationError(): IdsErrorMessageMapping | null {\n const errorDefs = this._errorDefs();\n const control = this._control();\n\n if (!errorDefs?.length || !control?.errors || Object.keys(control.errors).length === 0) {\n return null;\n }\n\n const errorCodes = new Set(Object.keys(control.errors));\n\n return errorDefs.find((errorDef) => errorCodes.has(errorDef.code)) ?? null;\n }\n\n protected _getValidationErrorMessage(messageOrFn: IdsErrorMessageMapping['message']): string {\n return messageOrFn instanceof Function ? messageOrFn() : messageOrFn;\n }\n}\n","<div class=\"ids-message__prefix\">\n <ng-content select=\"[idsMessagePrefix]\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"exclamation-circle\" variant=\"error\" />\n </ng-content>\n</div>\n<div class=\"ids-message__text\">\n @let validationError = _validationError();\n @if (validationError) {\n @let messageString = _getValidationErrorMessage(validationError.message);\n {{ messageString }}\n }\n</div>\n@if (suffixes().length) {\n <div class=\"ids-message__suffix\">\n <ng-content select=\"[idsMessageSuffix]\" />\n </div>\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[idsMessagePrefix]',\n standalone: true,\n})\nexport class IdsMessagePrefixDirective {\n}\n","import { IdsMessagePrefixDirective } from '../../../directives/message-prefix.directive';\nimport { IdsMessageSuffixDirective } from '../../../directives/message-suffix.directive';\nimport { IdsMessageDirective } from '../../../directives/message.directive';\n\nimport { Component, contentChildren, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ids-hint-message',\n imports: [],\n templateUrl: './hint-message.component.html',\n host: {\n class: 'ids-hint-message',\n },\n hostDirectives: [\n {\n directive: IdsMessageDirective,\n inputs: [\n 'size: size',\n 'variant: variant',\n ],\n },\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IdsHintMessageComponent {\n public prefixes = contentChildren(IdsMessagePrefixDirective);\n public suffixes = contentChildren(IdsMessageSuffixDirective);\n}\n","@if (prefixes().length) {\n <div class=\"ids-message__prefix\">\n <ng-content select=\"[idsMessagePrefix]\" />\n </div>\n}\n<div class=\"ids-message__text\">\n <ng-content />\n</div>\n@if (suffixes().length) {\n <div class=\"ids-message__suffix\">\n <ng-content select=\"[idsMessageSuffix]\" />\n </div>\n}\n","import { IdsMessageSuffixDirective } from '../../../directives/message-suffix.directive';\nimport { IdsMessageDirective } from '../../../directives/message.directive';\n\nimport { Component, ViewEncapsulation, computed, contentChildren } from '@angular/core';\nimport { ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\n@Component({\n selector: 'ids-success-message',\n imports: [IdsIconComponent],\n templateUrl: './success-message.component.html',\n hostDirectives: [IdsMessageDirective],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IdsSuccessMessageComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'success-message';\n }\n\n protected _hostClasses = computed(() => this._getHostClasses([]));\n\n public suffixes = contentChildren(IdsMessageSuffixDirective);\n}\n","<div class=\"ids-message__prefix\">\n <ng-content select=\"[idsMessagePrefix]\">\n <ids-icon aria-hidden=\"true\" fontIcon=\"check\" variant=\"success\" />\n </ng-content>\n</div>\n<div class=\"ids-message__text\">\n <ng-content />\n</div>\n@if (suffixes().length) {\n <div class=\"ids-message__suffix\">\n <ng-content select=\"[idsMessageSuffix]\" />\n </div>\n}\n","import { IDS_FORM_FIELD_DEFAULT_CONFIG, IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY, IdsFormFieldDefaultConfig } from './form-field-defaults';\nimport { IDS_FORM_FIELD_CONTROL } from './tokens/form-field-control';\nimport { IdsFormFieldVariantType } from './types/form-field-variant.type';\n\nimport { IdsFormFieldActionDirective } from '../../directives/form-field-action.directive';\nimport { IdsPrefixDirective } from '../../directives/prefix.directive';\nimport { IdsSuffixDirective } from '../../directives/suffix.directive';\nimport { IdsValidators } from '../../validators';\nimport { IdsFieldsetComponent } from '../fieldset/fieldset.component';\nimport { IdsErrorMessageComponent } from '../message/error-message/error-message.component';\nimport { IdsHintMessageComponent } from '../message/hint-message/hint-message.component';\nimport { IdsSuccessMessageComponent } from '../message/success-message/success-message.component';\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChild, contentChildren, ElementRef, inject, input, isDevMode, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Validators } from '@angular/forms';\nimport { ComponentBaseWithDefaults, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_FORM_FIELD_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-form-field',\n imports: [],\n templateUrl: './form-field.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IdsFormFieldComponent extends ComponentBaseWithDefaults<IdsFormFieldDefaultConfig> implements AfterContentInit {\n protected override get _hostName(): string {\n return 'form-field';\n }\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _parentFieldset = inject(IdsFieldsetComponent, { optional: true });\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_FORM_FIELD_DEFAULT_CONFIG);\n\n private _fieldWrapper = viewChild.required<ElementRef<HTMLElement>>('fieldWrapper');\n private _child = contentChild(IDS_FORM_FIELD_CONTROL);\n private _hintMessages = contentChildren(IdsHintMessageComponent, { descendants: true });\n private _successMessages = contentChildren(IdsSuccessMessageComponent, { descendants: true });\n private _errorMessages = contentChildren(IdsErrorMessageComponent, { descendants: true });\n private _actions = contentChildren(IdsFormFieldActionDirective);\n private _prefixes = contentChildren(IdsPrefixDirective);\n private _suffixes = contentChildren(IdsSuffixDirective);\n\n public hasActions = computed(() => Boolean(this._actions().length));\n public hasLeadingIcon = computed(() => Boolean(this._prefixes().filter((prefix) => prefix.isLeadingIcon).length));\n public hasPrefix = computed(() => Boolean(this._prefixes().filter((prefix) => !prefix.isLeadingIcon).length));\n public hasSuffix = computed(() => Boolean(this._suffixes().filter((suffix) => !suffix.isTrailingIcon).length));\n public hasTrailingIcon = computed(() => Boolean(this._suffixes().filter((suffix) => suffix.isTrailingIcon).length));\n public inputId = computed(() => this._child()?.id());\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public variant = input<IdsFormFieldVariantType>(this._defaultConfig.variant);\n public parentOrSelfSize = computed(() => this._parentFieldset?.size() ?? this.size());\n public parentOrSelfVariant = computed(() => this._parentFieldset?.variant() ?? this.variant());\n public control = computed(() => this._child()?.ngControl);\n public disabled = computed(() => Boolean(this._child()?.disabled()));\n private _hasErrorState = computed(() => Boolean(this._child()?.hasErrorState()));\n private _hasSuccessState = computed(() => Boolean(this._child()?.hasSuccessState()));\n protected _hostClasses = computed(() => this._getHostClasses([\n this.parentOrSelfSize(),\n this.parentOrSelfVariant(),\n this.disabled() ? 'disabled' : null,\n this._hasErrorState() ? 'invalid' : null,\n this._hasSuccessState() ? 'valid' : null,\n ]),\n );\n\n public displayedMessages = computed<'error' | 'success' | 'hint' | undefined>(() => {\n if (this._errorMessages().length > 0 && this._hasErrorState()) {\n return 'error';\n }\n if (this._successMessages().length > 0 && this._hasSuccessState()) {\n return 'success';\n }\n if (this._hintMessages().length > 0) {\n return 'hint';\n }\n return undefined;\n });\n\n public ngAfterContentInit(): void {\n if (isDevMode() && !this._child()) {\n throw this._createHostError('no form element was provided');\n }\n this._child()?.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n public get hasRequiredValidator(): boolean {\n const control = this.control()?.control;\n if (!control) {\n return Boolean(this._child()?.required());\n }\n return control.hasValidator(Validators.required)\n || control.hasValidator(Validators.requiredTrue)\n || control.hasValidator(IdsValidators.required)\n || control.hasValidator(IdsValidators.requiredTrue)\n || control.hasValidator(IdsValidators.requiredFalse);\n }\n\n public getConnectedOverlayOrigin(): ElementRef {\n return this._fieldWrapper();\n }\n\n public containerClick(event: MouseEvent): void {\n const containerClick = this._child()?.onContainerClick;\n if (containerClick) {\n containerClick(event);\n }\n }\n}\n","<label class=\"ids-form-field__label\" [for]=\"inputId()\">\n <ng-content select=\"ids-label\" />\n @if (hasRequiredValidator) {\n <span class=\"ids-form-field__required-marker\"></span>\n }\n</label>\n\n<div #fieldWrapper class=\"ids-form-field__field-wrapper\">\n <div class=\"ids-form-field__field-wrapper__container\" (click)=\"containerClick($event)\">\n @if (hasLeadingIcon()) {\n <div class=\"ids-form-field__leading-icon\">\n <ng-content select=\"ids-icon[idsLeadingIcon]\" />\n </div>\n }\n @if (hasPrefix()) {\n <div class=\"ids-form-field__prefix\">\n <ng-content select=\"[idsPrefix]\" />\n </div>\n }\n <div class=\"ids-form-field__infix\">\n <ng-content />\n </div>\n @if (hasSuffix()) {\n <div class=\"ids-form-field__suffix\">\n <ng-content select=\"[idsSuffix]\" />\n </div>\n }\n @if (hasTrailingIcon()) {\n <div class=\"ids-form-field__trailing-icon\">\n <ng-content select=\"ids-icon[idsTrailingIcon]\" />\n </div>\n }\n </div>\n @if (hasActions()) {\n <div class=\"ids-form-field__field-wrapper__action\">\n <ng-content select=\"[idsFormFieldAction]\" />\n </div>\n }\n</div>\n\n<div class=\"ids-form-field__subscript-wrapper\">\n @let messages = displayedMessages();\n @if (messages) {\n <div class=\"ids-form-field__message-container\">\n @switch (messages) {\n @case (\"error\") {\n <ng-content select=\"ids-error-message\" />\n }\n @case (\"success\") {\n <ng-content select=\"ids-success-message\" />\n }\n @case (\"hint\") {\n <ng-content select=\"ids-hint-message\" />\n }\n }\n </div>\n }\n</div>\n","import { AbstractErrorStateMatcher, ErrorStateMatcher } from '../../common/error/error-state';\nimport { AbstractSuccessStateMatcher, SuccessStateMatcher } from '../../common/success/success-state';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsInputDefaultConfig {\n errorStateMatcher?: typeof AbstractErrorStateMatcher\n successStateMatcher?: typeof AbstractSuccessStateMatcher\n}\n\nexport const IDS_INPUT_DEFAULT_CONFIG = new InjectionToken<IdsInputDefaultConfig>(\n 'IDS_INPUT_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_INPUT_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_INPUT_DEFAULT_CONFIG_FACTORY(): Required<IdsInputDefaultConfig> {\n return {\n errorStateMatcher: ErrorStateMatcher,\n successStateMatcher: SuccessStateMatcher,\n };\n}\n","import { IDS_INPUT_DEFAULT_CONFIG, IDS_INPUT_DEFAULT_CONFIG_FACTORY, IdsInputDefaultConfig } from './input-defaults';\nimport { IdsInputType } from './types/input.type';\n\nimport { AbstractErrorStateMatcher, ErrorStateTracker } from '../../common/error/error-state';\nimport { AbstractSuccessStateMatcher, SuccessStateTracker } from '../../common/success/success-state';\nimport { formFieldControlClass, IdsFormFieldControl } from '../form-field/form-field-control';\nimport { IDS_FORM_FIELD_CONTROL } from '../form-field/tokens/form-field-control';\n\nimport { computed, Directive, effect, ElementRef, inject, input, isDevMode, DoCheck, signal, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { coerceBooleanAttribute, ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';\nimport { Subject, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_INPUT_DEFAULT_CONFIG_FACTORY();\n\nconst IDS_INPUT_INVALID_TYPES: IdsInputType[] = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n@Directive({\n selector: `input[idsInput][ngModel]:not([formControl]):not([formControlName]),\n input[idsInput][formControl]:not([ngModel]):not([formControlName]),\n input[idsInput][formControlName]:not([ngModel]):not([formControl]),\n textarea[idsInput][ngModel]:not([formControl]):not([formControlName]),\n textarea[idsInput][formControl]:not([ngModel]):not([formControlName]),\n textarea[idsInput][formControlName]:not([ngModel]):not([formControl])`,\n exportAs: 'idsInput',\n standalone: true,\n providers: [\n {\n provide: IDS_FORM_FIELD_CONTROL,\n useExisting: IdsInputDirective,\n },\n ],\n host: {\n '[attr.placeholder]': 'placeholder()',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.readonly]': 'readonly() ? \"\" : null',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n },\n})\nexport class IdsInputDirective\n extends ComponentBaseWithDefaults<IdsInputDefaultConfig>\n implements IdsFormFieldControl, OnInit, DoCheck {\n protected override get _hostName(): string {\n return 'input';\n }\n\n private readonly _elementRef = inject<ElementRef<HTMLInputElement> | ElementRef<HTMLTextAreaElement>>(ElementRef);\n private readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n private readonly _parentForm = inject(NgForm, { optional: true });\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_INPUT_DEFAULT_CONFIG);\n\n public readonly errorStateChanges = new Subject<void>();\n public readonly successStateChanges = new Subject<void>();\n public readonly ngControl = inject(NgControl);\n\n private _focused = false;\n private _errorStateTracker?: ErrorStateTracker;\n private _successStateTracker?: SuccessStateTracker;\n private _successStateSubscription?: Subscription;\n\n public placeholder = input<string>('');\n public name = input<string>();\n public type = input<IdsInputType>('text');\n public required = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public readonly = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public disabled = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n private _controlDisabled = signal(false);\n public isDisabled = computed(() => this.disabled() || this._controlDisabled());\n public canHandleSuccessState = input<boolean>(false);\n public errorStateMatcher = input<AbstractErrorStateMatcher>(inject(this._defaultConfig.errorStateMatcher));\n public successStateMatcher = input<AbstractSuccessStateMatcher>(inject(this._defaultConfig.successStateMatcher));\n\n protected _hostClasses = computed(() => this._getHostClasses([], [formFieldControlClass]),\n );\n\n public hasErrorState = signal<boolean>(false);\n public hasSuccessState = signal<boolean>(false);\n\n private _validateTypeEffect = effect(() => {\n this._validateType(this.type());\n });\n\n private _canHandleSuccessStateEffect = effect(() => {\n this._setSuccessStateTracker(this.canHandleSuccessState());\n });\n\n public setDescribedByIds(ids: string[]): void {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n public ngOnInit(): void {\n this._initErrorStateTracker();\n }\n\n protected _initErrorStateTracker(): void {\n this._errorStateTracker = new ErrorStateTracker(\n this.errorStateMatcher(),\n this.ngControl,\n this._parentFormGroup,\n this._parentForm,\n this.errorStateChanges,\n );\n\n this.errorStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasErrorState.set(this._errorStateTracker!.hasErrorState));\n }\n\n protected _setSuccessStateTracker(canHandleSuccessState: boolean): void {\n if (canHandleSuccessState) {\n this._successStateTracker = new SuccessStateTracker(\n this.successStateMatcher(),\n this.ngControl,\n this._parentFormGroup,\n this._parentForm,\n this.successStateChanges,\n );\n\n this._successStateSubscription = this.successStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasSuccessState.set(this._successStateTracker!.hasSuccessState));\n } else {\n this._successStateTracker = undefined;\n this._successStateSubscription?.unsubscribe();\n }\n }\n\n public ngDoCheck(): void {\n if (this.ngControl) {\n this.updateErrorAndSuccessState();\n\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled()) {\n this._controlDisabled.set(this.ngControl.disabled);\n }\n }\n }\n\n private _validateType(type: IdsInputType): void {\n if (isDevMode() && IDS_INPUT_INVALID_TYPES.indexOf(type) > -1) {\n throw this._createHostError(`Input type ${type} is not supportedby idsInput`);\n }\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n private _focusChanged(isFocused: boolean): void {\n if (isFocused !== this._focused) {\n this._focused = isFocused;\n }\n }\n\n public updateErrorAndSuccessState(): void {\n this._errorStateTracker?.updateErrorState();\n this._successStateTracker?.updateSuccessState();\n }\n\n /**\n * Should be an arrow function in order to handle `this` outside of this class\n */\n public onContainerClick = (): void => {\n if (!this._focused && !this.readonly() && !this.isDisabled()) {\n this.focus();\n }\n };\n}\n","export const Message = {\n HINT: 'hint',\n ERROR: 'error',\n SUCCESS: 'success',\n} as const;\n\nexport type MessageType = (typeof Message)[keyof typeof Message];\n","import { IdsOptionGroupComponent } from '../option-group.component';\n\nimport { InjectionToken } from '@angular/core';\n\nexport const IDS_OPTION_GROUP = new InjectionToken<IdsOptionGroupComponent>('IdsOptionGroup');\n","import { IdsFormFieldVariantType } from '../../form-field/types/form-field-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsOptionParentComponent {\n multiSelect: Signal<boolean>\n inertGroups?: boolean\n parentSize: Signal<IdsSizeType>\n parentVariant: Signal<IdsFormFieldVariantType>\n isOptionPreSelectedByValue(optionValue: unknown): boolean\n}\n\nexport const IDS_OPTION_PARENT_COMPONENT = new InjectionToken<IdsOptionParentComponent>(\n 'IDS_OPTION_PARENT_COMPONENT',\n);\n","import { IdsOptionComponent } from '../option.component';\n\nexport class IdsOptionSelectionChange<T = unknown> {\n constructor(\n public source: IdsOptionComponent<T>,\n public selected: boolean,\n public isUserInput = false,\n ) {}\n}\n","import { IDS_OPTION_GROUP } from './tokens/option-group';\nimport { IDS_OPTION_PARENT_COMPONENT } from './tokens/option-parent';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanAttribute, ComponentBase } from '@i-cell/ids-angular/core';\n\n@Component({\n selector: 'ids-option-group',\n imports: [],\n templateUrl: './option-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: IDS_OPTION_GROUP, useExisting: IdsOptionGroupComponent }],\n host: {\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled().toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId()',\n },\n})\nexport class IdsOptionGroupComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'option-group';\n }\n\n private readonly _parent = inject(IDS_OPTION_PARENT_COMPONENT);\n protected readonly _inert = this._parent?.inertGroups ?? false;\n\n public label = input<string>();\n public disabled = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n\n protected readonly _labelId = computed(() => `${this.id()}-label`);\n protected readonly _hostClasses = computed(() => this._getHostClasses([\n this.disabled() ? 'disabled' : null,\n this._parent.parentSize(),\n this._parent.parentVariant(),\n ]));\n}\n","<div role=\"presentation\" class=\"ids-option-group__label\" [id]=\"_labelId()\">\n <div class=\"ids-option-group__text\">{{ label() }}</div>\n</div>\n<ng-content select=\"ids-option, ng-container\" />\n","import { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsPseudoCheckboxParent<T extends string> {\n embeddedPseudoCheckboxSize: Signal<IdsSizeType>\n embeddedPseudoCheckboxVariant: Signal<T>\n}\n\nexport const IDS_PSEUDO_CHECKBOX_PARENT = new InjectionToken<IdsPseudoCheckboxParent<string>>(\n 'IDS_PSEUDO_CHECKBOX_PARENT',\n);\n","export const IdsPseudoCheckboxState = {\n UNCHECKED: 'unchecked',\n CHECKED: 'checked',\n INDETERMINATE: 'indeterminate',\n} as const;\n\nexport type IdsPseudoCheckboxStateType = (typeof IdsPseudoCheckboxState)[keyof typeof IdsPseudoCheckboxState];\n","import { IDS_PSEUDO_CHECKBOX_PARENT } from './tokens/pseudo-checkbox-parent';\nimport { IdsPseudoCheckboxState, IdsPseudoCheckboxStateType } from './types/pseudo-checkbox-state.type';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanAttribute, ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\n@Component({\n selector: 'ids-pseudo-checkbox',\n imports: [IdsIconComponent],\n templateUrl: './pseudo-checkbox.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PseudoCheckboxComponent extends ComponentBase {\n protected override get _hostName(): string {\n return 'pseudo-checkbox';\n }\n\n private readonly _parent = inject(IDS_PSEUDO_CHECKBOX_PARENT, { optional: true });\n public checkboxState = input<IdsPseudoCheckboxStateType>(IdsPseudoCheckboxState.UNCHECKED);\n public disabled = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n\n protected _isChecked = computed(() => this.checkboxState() === IdsPseudoCheckboxState.CHECKED);\n protected _isIndeterminate = computed(() => this.checkboxState() === IdsPseudoCheckboxState.INDETERMINATE);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parent?.embeddedPseudoCheckboxSize(),\n this._parent?.embeddedPseudoCheckboxVariant(),\n this.disabled() ? 'disabled' : null,\n ]),\n );\n}\n","<div class=\"ids-pseudo-checkbox__input-wrapper\">\n <input\n type=\"checkbox\"\n [disabled]=\"disabled()\"\n [attr.aria-checked]=\"_isIndeterminate() ? 'mixed' : null\"\n [checked]=\"_isChecked()\"\n [indeterminate]=\"_isIndeterminate()\"\n (change)=\"$event.stopPropagation()\"\n />\n <div class=\"ids-pseudo-checkbox__icon\" aria-hidden=\"true\">\n @if (_isIndeterminate()) {\n <ids-icon fontIcon=\"minus\" aria-hidden=\"true\" />\n }\n @if (_isChecked()) {\n <ids-icon fontIcon=\"check\" aria-hidden=\"true\" />\n }\n </div>\n</div>\n","import { IdsOptionGroupComponent } from './option-group.component';\nimport { IDS_OPTION_GROUP } from './tokens/option-group';\nimport { IDS_OPTION_PARENT_COMPONENT } from './tokens/option-parent';\nimport { IdsOptionSelectionChange } from './types/option-events.class';\n\nimport { IdsFormFieldVariant, IdsFormFieldVariantType } from '../form-field/types/form-field-variant.type';\nimport { PseudoCheckboxComponent } from '../pseudo-checkbox/pseudo-checkbox.component';\nimport { IDS_PSEUDO_CHECKBOX_PARENT, IdsPseudoCheckboxParent } from '../pseudo-checkbox/tokens/pseudo-checkbox-parent';\nimport { IdsPseudoCheckboxState } from '../pseudo-checkbox/types/pseudo-checkbox-state.type';\n\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, OnInit, output, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanAttribute, ComponentBase } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\n@Component({\n selector: 'ids-option',\n imports: [\n IdsIconComponent,\n PseudoCheckboxComponent,\n ],\n templateUrl: './option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: IDS_PSEUDO_CHECKBOX_PARENT,\n useExisting: IdsOptionComponent,\n },\n ],\n host: {\n 'role': 'option',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': 'selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n },\n})\nexport class IdsOptionComponent<T = unknown>\n extends ComponentBase\n implements OnInit, IdsPseudoCheckboxParent<IdsFormFieldVariantType> {\n protected override get _hostName(): string {\n return 'option';\n }\n\n private readonly _parent = inject(IDS_OPTION_PARENT_COMPONENT);\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\n public readonly group = inject(IDS_OPTION_GROUP, { optional: true });\n\n private _textElement = viewChild.required<ElementRef<HTMLElement>>('text');\n\n public selected = signal<boolean>(false);\n private _active = signal<boolean>(false);\n public size = computed(() => this._parent.parentSize());\n public variant = computed(() => this._parent.parentVariant());\n\n public value = input<T>();\n public explicitViewValue = input<string | null>(null, { alias: 'viewValue' });\n public disabledInput = input<boolean, unknown>(false, { alias: 'disabled', transform: coerceBooleanAttribute });\n\n public disabled = false; // Do not delete this class member, until ListKeyManagerOption requires: `disabled: boolean`\n\n protected _groupOrOptionIsDisabled = computed(() => this.group?.disabled() || this.disabledInput());\n\n // FIXME: Ha túl korán inicializálódik, a parent-ben még lehet, h később változik az érték!\n protected readonly _multiSelect = Boolean(this._parent?.multiSelect());\n\n public onSelectionChange = output<IdsOptionSelectionChange<T>>();\n\n public viewValue = computed(() => this._textElement().nativeElement.textContent || this.explicitViewValue() || '');\n protected readonly _hostClasses = computed(() => this._getHostClasses([\n this.selected() ? 'selected' : null,\n this._active() ? 'active' : null,\n this._groupOrOptionIsDisabled() ? 'disabled' : null,\n this._multiSelect ? 'multiselect' : null,\n this.size(),\n this.variant(),\n ]));\n\n protected _pseudoCheckboxState = computed(() => (this.selected() ? IdsPseudoCheckboxState.CHECKED : IdsPseudoCheckboxState.UNCHECKED));\n public embeddedPseudoCheckboxSize = computed(() => this.size());\n public embeddedPseudoCheckboxVariant = signal(IdsFormFieldVariant.SURFACE);\n\n constructor() {\n super();\n effect(() => { // Do not delete this effect, until ListKeyManagerOption requires: `disabled: boolean`\n this.disabled = this.disabledInput();\n });\n }\n\n public ngOnInit(): void {\n const parent = this._parent;\n\n if (parent.isOptionPreSelectedByValue(this.value())) {\n this.selected.set(true);\n }\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n if ((event.key === 'ENTER' || event.key === ' ') && !hasModifierKey(event)) {\n this.selectViaInteraction();\n event.preventDefault();\n }\n }\n\n public selectViaInteraction(): void {\n if (!this._groupOrOptionIsDisabled()) {\n this._emitSelectionChangeEvent(!this.selected(), true);\n }\n }\n\n public getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n public select(emitEvent = true): void {\n if (!this.selected()) {\n if (emitEvent) {\n this._emitSelectionChangeEvent(true);\n }\n }\n }\n\n public deselect(emitEvent = true): void {\n if (this.selected()) {\n if (emitEvent) {\n this._emitSelectionChangeEvent(false);\n }\n }\n }\n\n public focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n const element = this._element.nativeElement;\n\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n\n public setActiveStyles(): void {\n if (!this._active()) {\n this._active.set(true);\n }\n }\n\n public setInactiveStyles(): void {\n if (this._active()) {\n this._active.set(false);\n }\n }\n\n public getLabel(): string {\n return this.viewValue();\n }\n\n private _emitSelectionChangeEvent(selected: boolean, isUserInput = false): void {\n if (this._multiSelect || !this.selected()) {\n this.onSelectionChange.emit(new IdsOptionSelectionChange<T>(this, selected, isUserInput));\n }\n }\n}\n\nexport function _countGroupLabelsBeforeOption(\n optionIndex: number,\n options: Readonly<IdsOptionComponent[]>,\n optionGroups: Readonly<IdsOptionGroupComponent[]>,\n): number {\n if (optionGroups.length) {\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (options[i].group && options[i].group === optionGroups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\nexport function _getOptionScrollPosition(\n optionOffset: number,\n optionHeight: number,\n currentScrollPosition: number,\n panelHeight: number,\n): number {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\n}\n","@if (_multiSelect) {\n <ids-pseudo-checkbox aria-hidden=\"true\" [disabled]=\"_groupOrOptionIsDisabled()\" [checkboxState]=\"_pseudoCheckboxState()\" />\n}\n\n<div #text class=\"ids-option__text\"><ng-content /></div>\n\n@if (!_multiSelect && selected()) {\n <ids-icon fontIcon=\"check\" />\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ids-label',\n standalone: true,\n})\nexport class IdsLabelDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultConfig","i1.IdsMessageDirective"],"mappings":"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"}
@@ -277,6 +277,7 @@ class IdsCellContentComponent extends IdsTableCellRenderer {
277
277
  // Forces recalculation of this computed signal
278
278
  this._updateCellContent();
279
279
  if (this._isHeader) {
280
+ // FIXME: Header label IdsTableIntl-ből kénem, h jöjjön
280
281
  return this.colDef().label ?? '';
281
282
  }
282
283
  const rowData = this.rowData();
@@ -316,7 +317,7 @@ class IdsCellContentComponent extends IdsTableCellRenderer {
316
317
  this._updateCellContent.set(!this._updateCellContent());
317
318
  }
318
319
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsCellContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
319
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsCellContentComponent, isStandalone: true, selector: "th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]", inputs: { externalCellTemplates: { classPropertyName: "externalCellTemplates", publicName: "externalCellTemplates", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
320
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsCellContentComponent, isStandalone: true, selector: "th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]", inputs: { externalCellTemplates: { classPropertyName: "externalCellTemplates", publicName: "externalCellTemplates", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<!-- TODO: sortable oszlopok display: flex bekavar!!! -->\r\n\r\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", dependencies: [{ kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
320
321
  }
321
322
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsCellContentComponent, decorators: [{
322
323
  type: Component,
@@ -324,7 +325,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
324
325
  IdsIconComponent,
325
326
  NgComponentOutlet,
326
327
  NgTemplateOutlet,
327
- ], template: "<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" }]
328
+ ], template: "<!-- TODO: sortable oszlopok display: flex bekavar!!! -->\r\n\r\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" }]
328
329
  }] });
329
330
 
330
331
  class RowInfoHolderDirective {
@@ -370,6 +371,7 @@ class IdsTableComponent extends ComponentBaseWithDefaults {
370
371
  /** Enable master-detail rows */
371
372
  this.masterDetail = input(this._defaultConfig.masterDetail, { transform: coerceBooleanAttribute });
372
373
  /** Name of the detail row renderer template */
374
+ // TODO: component?
373
375
  this.detailTemplateName = input(this._defaultConfig.detailTemplateName);
374
376
  /** If true the detail cell will not span sticky and stickyEnd columns. If false the detail cell will span the table's full width */
375
377
  this.detailStickyColumns = input(this._defaultConfig.detailStickyColumns, { transform: coerceBooleanAttribute });
@@ -378,6 +380,7 @@ class IdsTableComponent extends ComponentBaseWithDefaults {
378
380
  /** Predicate function to decide whether a data row has details or not */
379
381
  this.hasDetailRow = input(() => false);
380
382
  /** Enable row selection feature */
383
+ // TODO: legyen `multiSelect` a prop neve
381
384
  this.enableRowSelection = input(this._defaultConfig.enableRowSelection, { transform: coerceBooleanAttribute });
382
385
  /** Clear row selection if the table's content changes */
383
386
  this.clearSelectionOnChange = input(this._defaultConfig.clearSelectionOnChange, { transform: coerceBooleanAttribute });
@@ -616,7 +619,7 @@ class IdsTableComponent extends ComponentBaseWithDefaults {
616
619
  this.rowSelection.select(...data);
617
620
  }
618
621
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
619
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsTableComponent, isStandalone: true, selector: "ids-table", inputs: { columnDefs: { classPropertyName: "columnDefs", publicName: "columnDefs", isSignal: true, isRequired: true, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, fixedHeader: { classPropertyName: "fixedHeader", publicName: "fixedHeader", isSignal: true, isRequired: false, transformFunction: null }, enableSorting: { classPropertyName: "enableSorting", publicName: "enableSorting", isSignal: true, isRequired: false, transformFunction: null }, masterDetail: { classPropertyName: "masterDetail", publicName: "masterDetail", isSignal: true, isRequired: false, transformFunction: null }, detailTemplateName: { classPropertyName: "detailTemplateName", publicName: "detailTemplateName", isSignal: true, isRequired: false, transformFunction: null }, detailStickyColumns: { classPropertyName: "detailStickyColumns", publicName: "detailStickyColumns", isSignal: true, isRequired: false, transformFunction: null }, showDetailHeader: { classPropertyName: "showDetailHeader", publicName: "showDetailHeader", isSignal: true, isRequired: false, transformFunction: null }, hasDetailRow: { classPropertyName: "hasDetailRow", publicName: "hasDetailRow", isSignal: true, isRequired: false, transformFunction: null }, enableRowSelection: { classPropertyName: "enableRowSelection", publicName: "enableRowSelection", isSignal: true, isRequired: false, transformFunction: null }, clearSelectionOnChange: { classPropertyName: "clearSelectionOnChange", publicName: "clearSelectionOnChange", isSignal: true, isRequired: false, transformFunction: null }, isRowSelectable: { classPropertyName: "isRowSelectable", publicName: "isRowSelectable", isSignal: true, isRequired: false, transformFunction: null }, noRowsToShowOverlayBelow: { classPropertyName: "noRowsToShowOverlayBelow", publicName: "noRowsToShowOverlayBelow", isSignal: true, isRequired: false, transformFunction: null }, withBorder: { classPropertyName: "withBorder", publicName: "withBorder", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", 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 } }, outputs: { sortChange: "sortChange", cellClick: "cellClick", rowClick: "rowClick", rowKeydown: "rowKeydown", contentChanged: "contentChanged" }, providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }], queries: [{ propertyName: "_contentCellTemplates", predicate: IdsTableCellTemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "_viewCellTemplates", predicate: IdsTableCellTemplateDirective, descendants: true, isSignal: true }, { propertyName: "_rowDataHolders", predicate: (RowInfoHolderDirective), descendants: true, isSignal: true }, { propertyName: "_selectorCheckboxes", predicate: IdsCheckboxComponent, descendants: true, isSignal: true }, { propertyName: "_cellContentRenderers", predicate: (IdsCellContentComponent), descendants: true, isSignal: true }], exportAs: ["idsTable"], usesInheritance: true, ngImport: i0, template: "<!-- 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", dependencies: [{ kind: "component", type: IdsTableComponent, selector: "ids-table", inputs: ["columnDefs", "dataSource", "fixedHeader", "enableSorting", "masterDetail", "detailTemplateName", "detailStickyColumns", "showDetailHeader", "hasDetailRow", "enableRowSelection", "clearSelectionOnChange", "isRowSelectable", "noRowsToShowOverlayBelow", "withBorder", "appearance", "size", "variant"], outputs: ["sortChange", "cellClick", "rowClick", "rowKeydown", "contentChanged"], exportAs: ["idsTable"] }, { kind: "component", type: IdsCellContentComponent, selector: "th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]", inputs: ["externalCellTemplates"] }, { kind: "component", type: IdsCheckboxComponent, selector: "ids-checkbox", inputs: ["name", "required", "readonly", "size", "tabIndex", "value", "variant", "checked", "indeterminate", "aria-label", "aria-labelledby", "aria-describedby", "disabled"], outputs: ["disabledChange", "change", "indeterminateChange"] }, { kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled"] }, { kind: "directive", type: IdsTableCellTemplateDirective, selector: "[idsCellTemplate]", inputs: ["idsCellTemplate"] }, { kind: "directive", type: CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "directive", type: CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["cdkColumnDef", "sticky", "stickyEnd"] }, { kind: "directive", type: CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "directive", type: CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "component", type: CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "directive", type: CdkNoDataRow, selector: "ng-template[cdkNoDataRow]" }, { kind: "component", type: CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "component", type: CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RowInfoHolderDirective, selector: "[rowInfo]", inputs: ["rowInfo"] }], animations: [
622
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsTableComponent, isStandalone: true, selector: "ids-table", inputs: { columnDefs: { classPropertyName: "columnDefs", publicName: "columnDefs", isSignal: true, isRequired: true, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, fixedHeader: { classPropertyName: "fixedHeader", publicName: "fixedHeader", isSignal: true, isRequired: false, transformFunction: null }, enableSorting: { classPropertyName: "enableSorting", publicName: "enableSorting", isSignal: true, isRequired: false, transformFunction: null }, masterDetail: { classPropertyName: "masterDetail", publicName: "masterDetail", isSignal: true, isRequired: false, transformFunction: null }, detailTemplateName: { classPropertyName: "detailTemplateName", publicName: "detailTemplateName", isSignal: true, isRequired: false, transformFunction: null }, detailStickyColumns: { classPropertyName: "detailStickyColumns", publicName: "detailStickyColumns", isSignal: true, isRequired: false, transformFunction: null }, showDetailHeader: { classPropertyName: "showDetailHeader", publicName: "showDetailHeader", isSignal: true, isRequired: false, transformFunction: null }, hasDetailRow: { classPropertyName: "hasDetailRow", publicName: "hasDetailRow", isSignal: true, isRequired: false, transformFunction: null }, enableRowSelection: { classPropertyName: "enableRowSelection", publicName: "enableRowSelection", isSignal: true, isRequired: false, transformFunction: null }, clearSelectionOnChange: { classPropertyName: "clearSelectionOnChange", publicName: "clearSelectionOnChange", isSignal: true, isRequired: false, transformFunction: null }, isRowSelectable: { classPropertyName: "isRowSelectable", publicName: "isRowSelectable", isSignal: true, isRequired: false, transformFunction: null }, noRowsToShowOverlayBelow: { classPropertyName: "noRowsToShowOverlayBelow", publicName: "noRowsToShowOverlayBelow", isSignal: true, isRequired: false, transformFunction: null }, withBorder: { classPropertyName: "withBorder", publicName: "withBorder", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", 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 } }, outputs: { sortChange: "sortChange", cellClick: "cellClick", rowClick: "rowClick", rowKeydown: "rowKeydown", contentChanged: "contentChanged" }, providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }], queries: [{ propertyName: "_contentCellTemplates", predicate: IdsTableCellTemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "_viewCellTemplates", predicate: IdsTableCellTemplateDirective, descendants: true, isSignal: true }, { propertyName: "_rowDataHolders", predicate: (RowInfoHolderDirective), descendants: true, isSignal: true }, { propertyName: "_selectorCheckboxes", predicate: IdsCheckboxComponent, descendants: true, isSignal: true }, { propertyName: "_cellContentRenderers", predicate: (IdsCellContentComponent), descendants: true, isSignal: true }], exportAs: ["idsTable"], usesInheritance: true, ngImport: i0, template: "<!-- 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 ids-table__row--surface\">\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", dependencies: [{ kind: "component", type: IdsTableComponent, selector: "ids-table", inputs: ["columnDefs", "dataSource", "fixedHeader", "enableSorting", "masterDetail", "detailTemplateName", "detailStickyColumns", "showDetailHeader", "hasDetailRow", "enableRowSelection", "clearSelectionOnChange", "isRowSelectable", "noRowsToShowOverlayBelow", "withBorder", "appearance", "size", "variant"], outputs: ["sortChange", "cellClick", "rowClick", "rowKeydown", "contentChanged"], exportAs: ["idsTable"] }, { kind: "component", type: IdsCellContentComponent, selector: "th[idsCellContent],td[idsCellContent],th[idsHeaderCellContent],td[idsHeaderCellContent]", inputs: ["externalCellTemplates"] }, { kind: "component", type: IdsCheckboxComponent, selector: "ids-checkbox", inputs: ["name", "required", "readonly", "size", "tabIndex", "value", "variant", "checked", "indeterminate", "aria-label", "aria-labelledby", "aria-describedby", "disabled"], outputs: ["disabledChange", "change", "indeterminateChange"] }, { kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }, { kind: "component", type: IdsIconButtonComponent, selector: "button[idsIconButton]", inputs: ["appearance", "size", "variant", "disabled"] }, { kind: "directive", type: IdsTableCellTemplateDirective, selector: "[idsCellTemplate]", inputs: ["idsCellTemplate"] }, { kind: "directive", type: CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "directive", type: CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["cdkColumnDef", "sticky", "stickyEnd"] }, { kind: "directive", type: CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "directive", type: CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "component", type: CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "directive", type: CdkNoDataRow, selector: "ng-template[cdkNoDataRow]" }, { kind: "component", type: CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "component", type: CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RowInfoHolderDirective, selector: "[rowInfo]", inputs: ["rowInfo"] }], animations: [
620
623
  trigger('detailExpand', [
621
624
  state('collapsed', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),
622
625
  state('expanded', style({ height: '*', visibility: 'visible' })),
@@ -652,7 +655,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
652
655
  state('expanded', style({ height: '*', visibility: 'visible' })),
653
656
  transition('expanded <=> collapsed', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
654
657
  ]),
655
- ], providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }], exportAs: 'idsTable', template: "<!-- 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" }]
658
+ ], providers: [{ provide: IDS_ICON_BUTTON_PARENT, useExisting: IdsTableComponent }], exportAs: 'idsTable', template: "<!-- 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 ids-table__row--surface\">\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" }]
656
659
  }] });
657
660
 
658
661
  /**
@@ -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 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 // FIXME: Header label IdsTableIntl-ből kénem, h jöjjön\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","<!-- TODO: sortable oszlopok display: flex bekavar!!! -->\r\n\r\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 // TODO: component?\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 // TODO: legyen `multiSelect` a prop neve\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 ids-table__row--surface\">\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.1.3",
3
+ "version": "0.1.4",
4
4
  "private": false,
5
5
  "description": "i-Cell Design System UI Kit components for Angular",
6
6
  "publishConfig": {
@@ -31,7 +31,7 @@
31
31
  "@angular/forms": "^19.1.2",
32
32
  "@angular/platform-browser": "^19.1.2",
33
33
  "@angular/router": "^19.1.2",
34
- "@i-cell/ids-styles": "0.0.32"
34
+ "@i-cell/ids-styles": "0.0.34"
35
35
  },
36
36
  "dependencies": {
37
37
  "tslib": "^2.3.0"
@@ -55,21 +55,21 @@
55
55
  "types": "./avatar/index.d.ts",
56
56
  "default": "./fesm2022/i-cell-ids-angular-avatar.mjs"
57
57
  },
58
- "./card": {
59
- "types": "./card/index.d.ts",
60
- "default": "./fesm2022/i-cell-ids-angular-card.mjs"
61
- },
62
58
  "./button": {
63
59
  "types": "./button/index.d.ts",
64
60
  "default": "./fesm2022/i-cell-ids-angular-button.mjs"
65
61
  },
62
+ "./checkbox": {
63
+ "types": "./checkbox/index.d.ts",
64
+ "default": "./fesm2022/i-cell-ids-angular-checkbox.mjs"
65
+ },
66
66
  "./core": {
67
67
  "types": "./core/index.d.ts",
68
68
  "default": "./fesm2022/i-cell-ids-angular-core.mjs"
69
69
  },
70
- "./checkbox": {
71
- "types": "./checkbox/index.d.ts",
72
- "default": "./fesm2022/i-cell-ids-angular-checkbox.mjs"
70
+ "./card": {
71
+ "types": "./card/index.d.ts",
72
+ "default": "./fesm2022/i-cell-ids-angular-card.mjs"
73
73
  },
74
74
  "./chip": {
75
75
  "types": "./chip/index.d.ts",