@i-cell/ids-angular 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/avatar/avatar.component.d.ts +1 -1
  2. package/button/button.component.d.ts +3 -3
  3. package/checkbox/checkbox.component.d.ts +7 -5
  4. package/checkbox/types/checkbox-group-child.d.ts +2 -1
  5. package/dialog/dialog.component.d.ts +3 -3
  6. package/fesm2022/i-cell-ids-angular-avatar.mjs +4 -4
  7. package/fesm2022/i-cell-ids-angular-avatar.mjs.map +1 -1
  8. package/fesm2022/i-cell-ids-angular-button.mjs +4 -4
  9. package/fesm2022/i-cell-ids-angular-button.mjs.map +1 -1
  10. package/fesm2022/i-cell-ids-angular-checkbox.mjs +21 -20
  11. package/fesm2022/i-cell-ids-angular-checkbox.mjs.map +1 -1
  12. package/fesm2022/i-cell-ids-angular-dialog.mjs +5 -5
  13. package/fesm2022/i-cell-ids-angular-dialog.mjs.map +1 -1
  14. package/fesm2022/i-cell-ids-angular-forms.mjs +62 -57
  15. package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -1
  16. package/fesm2022/i-cell-ids-angular-icon-button.mjs +3 -3
  17. package/fesm2022/i-cell-ids-angular-icon-button.mjs.map +1 -1
  18. package/fesm2022/i-cell-ids-angular-icon.mjs +12 -2
  19. package/fesm2022/i-cell-ids-angular-icon.mjs.map +1 -1
  20. package/fesm2022/i-cell-ids-angular-menu.mjs +6 -6
  21. package/fesm2022/i-cell-ids-angular-menu.mjs.map +1 -1
  22. package/fesm2022/i-cell-ids-angular-notification.mjs +3 -3
  23. package/fesm2022/i-cell-ids-angular-notification.mjs.map +1 -1
  24. package/fesm2022/i-cell-ids-angular-paginator.mjs +11 -11
  25. package/fesm2022/i-cell-ids-angular-paginator.mjs.map +1 -1
  26. package/fesm2022/i-cell-ids-angular-radio.mjs +11 -11
  27. package/fesm2022/i-cell-ids-angular-radio.mjs.map +1 -1
  28. package/fesm2022/i-cell-ids-angular-select.mjs +59 -19
  29. package/fesm2022/i-cell-ids-angular-select.mjs.map +1 -1
  30. package/fesm2022/i-cell-ids-angular-snackbar.mjs +8 -8
  31. package/fesm2022/i-cell-ids-angular-snackbar.mjs.map +1 -1
  32. package/fesm2022/i-cell-ids-angular-spinner.mjs +67 -0
  33. package/fesm2022/i-cell-ids-angular-spinner.mjs.map +1 -0
  34. package/fesm2022/i-cell-ids-angular-switch.mjs +15 -15
  35. package/fesm2022/i-cell-ids-angular-switch.mjs.map +1 -1
  36. package/fesm2022/i-cell-ids-angular-tab.mjs +7 -6
  37. package/fesm2022/i-cell-ids-angular-tab.mjs.map +1 -1
  38. package/fesm2022/i-cell-ids-angular-table.mjs +4 -7
  39. package/fesm2022/i-cell-ids-angular-table.mjs.map +1 -1
  40. package/fesm2022/i-cell-ids-angular-tag.mjs +4 -4
  41. package/fesm2022/i-cell-ids-angular-tag.mjs.map +1 -1
  42. package/forms/components/form-field/form-field-control.d.ts +1 -1
  43. package/forms/components/form-field/form-field.component.d.ts +12 -13
  44. package/forms/components/input/input.directive.d.ts +15 -10
  45. package/icon/icon-defaults.d.ts +1 -0
  46. package/icon/icon.component.d.ts +1 -0
  47. package/icon-button/icon-button.component.d.ts +2 -2
  48. package/menu/menu-item/menu-item.component.d.ts +4 -4
  49. package/notification/notification.component.d.ts +1 -1
  50. package/package.json +13 -9
  51. package/paginator/paginator.component.d.ts +7 -7
  52. package/radio/radio.component.d.ts +6 -6
  53. package/select/select.component.d.ts +19 -7
  54. package/snackbar/snackbar.component.d.ts +5 -5
  55. package/spinner/index.d.ts +5 -0
  56. package/spinner/public-api.d.ts +3 -0
  57. package/spinner/spinner-defaults.d.ts +11 -0
  58. package/spinner/spinner.component.d.ts +17 -0
  59. package/spinner/types/spinner-variant.type.d.ts +11 -0
  60. package/switch/switch.component.d.ts +3 -3
  61. package/tab/tab-group.component.d.ts +3 -2
  62. package/tag/tag.component.d.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-checkbox.mjs","sources":["../../../projects/widgets/checkbox/types/checkbox-events.class.ts","../../../projects/widgets/checkbox/types/checkbox-state.type.ts","../../../projects/widgets/checkbox/types/checkbox-variant.type.ts","../../../projects/widgets/checkbox/checkbox-defaults.ts","../../../projects/widgets/checkbox/checkbox-group-defaults.ts","../../../projects/widgets/checkbox/types/checkbox-group-child.ts","../../../projects/widgets/checkbox/types/checkbox-parent.ts","../../../projects/widgets/checkbox/checkbox.component.ts","../../../projects/widgets/checkbox/checkbox.component.html","../../../projects/widgets/checkbox/checkbox-group.component.ts","../../../projects/widgets/checkbox/checkbox-group.component.html","../../../projects/widgets/checkbox/i-cell-ids-angular-checkbox.ts"],"sourcesContent":["import { IdsCheckboxComponent } from '../checkbox.component';\n\nexport class IdsCheckBoxChangeEvent {\n public source!: IdsCheckboxComponent;\n public checked!: boolean;\n public value?: unknown;\n}\n","export const IdsCheckboxState = {\n UNCHECKED: 'unchecked',\n CHECKED: 'checked',\n INDETERMINATE: 'indeterminate',\n} as const;\n\nexport type IdsCheckboxStateType = (typeof IdsCheckboxState)[keyof typeof IdsCheckboxState];\n","export const IdsCheckboxVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsCheckboxVariantType = (typeof IdsCheckboxVariant)[keyof typeof IdsCheckboxVariant];\n","import { IdsCheckboxVariant, IdsCheckboxVariantType } from './types/checkbox-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsCheckboxDefaultConfig {\n size?: IdsSizeType\n variant?: IdsCheckboxVariantType\n}\n\nexport const IDS_CHECKBOX_DEFAULT_CONFIG = new InjectionToken<IdsCheckboxDefaultConfig>(\n 'IDS_CHECKBOX_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY(): Required<IdsCheckboxDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsCheckboxVariant.SURFACE,\n };\n}\n","import { IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY, IdsCheckboxDefaultConfig } from './checkbox-defaults';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsOrientation, IdsOrientationType } from '@i-cell/ids-angular/core';\n\nexport interface IdsCheckboxGroupDefaultConfig extends IdsCheckboxDefaultConfig {\n orientation: IdsOrientationType,\n allowParent: boolean,\n}\n\nexport const IDS_CHECKBOX_GROUP_DEFAULT_CONFIG = new InjectionToken<IdsCheckboxGroupDefaultConfig>(\n 'IDS_CHECKBOX_GROUP_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY(): Required<IdsCheckboxGroupDefaultConfig> {\n return {\n ...IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY(),\n orientation: IdsOrientation.VERTICAL,\n allowParent: true,\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface IdsCheckboxGroupChild {\n isChecked(): boolean;\n deselect(): void;\n select(): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IDS_CHECKBOX_GROUP_CHILD = new InjectionToken<IdsCheckboxGroupChild>('IDS_CHECKBOX_GROUP_CHILD');\n","import { IdsCheckboxVariantType } from './checkbox-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsCheckboxParent {\n size: Signal<IdsSizeType | null>;\n variant: Signal<IdsCheckboxVariantType | null>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IDS_CHECKBOX_PARENT = new InjectionToken<IdsCheckboxParent>('IDS_CHECKBOX_PARENT');\n","import { IDS_CHECKBOX_DEFAULT_CONFIG, IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY, IdsCheckboxDefaultConfig } from './checkbox-defaults';\nimport { IdsCheckBoxChangeEvent } from './types/checkbox-events.class';\nimport { IDS_CHECKBOX_GROUP_CHILD, IdsCheckboxGroupChild } from './types/checkbox-group-child';\nimport { IDS_CHECKBOX_PARENT } from './types/checkbox-parent';\nimport { IdsCheckboxState, IdsCheckboxStateType } from './types/checkbox-state.type';\nimport { IdsCheckboxVariantType } from './types/checkbox-variant.type';\n\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Injector, OnChanges, OnInit, SimpleChange, SimpleChanges, ViewEncapsulation, computed, contentChildren, inject, input, model, output, signal, viewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { ComponentBaseWithDefaults, IdsSizeType, coerceBooleanAttribute, coerceNumberAttribute, isString } from '@i-cell/ids-angular/core';\nimport { IDS_FORM_FIELD_CONTROL, IdsErrorMessageComponent, IdsHintMessageComponent, IdsValidators } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\nconst defaultConfig = IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-checkbox',\n imports: [IdsIconComponent],\n templateUrl: './checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IdsCheckboxComponent,\n multi: true,\n },\n {\n provide: IDS_FORM_FIELD_CONTROL,\n useExisting: IdsCheckboxComponent,\n },\n {\n provide: IDS_CHECKBOX_GROUP_CHILD,\n useExisting: IdsCheckboxComponent,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n },\n})\nexport class IdsCheckboxComponent\n extends ComponentBaseWithDefaults<IdsCheckboxDefaultConfig>\n implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor, IdsCheckboxGroupChild {\n protected override get _hostName(): string {\n return 'checkbox';\n }\n\n private readonly _injector = inject(Injector);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_CHECKBOX_DEFAULT_CONFIG);\n\n private _checkboxGroup = inject(IDS_CHECKBOX_PARENT, { optional: true });\n\n private _checkboxState = signal<IdsCheckboxStateType>(IdsCheckboxState.UNCHECKED);\n\n public inputId = computed(() => `${this.id()}-input`);\n public name = input<string | null>();\n public required = input(false, { transform: coerceBooleanAttribute });\n public readonly = input(false, { transform: coerceBooleanAttribute });\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public tabIndex = input(0, { transform: coerceNumberAttribute });\n public value = input<unknown>();\n public variant = input<IdsCheckboxVariantType>(this._defaultConfig.variant);\n public checked = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public indeterminate = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n public ariaDescribedby = input<string>('', { alias: 'aria-describedby' });\n\n public disabled = model(false);\n\n public isChecked = computed(() => this._checkboxState() === IdsCheckboxState.CHECKED);\n public isIndeterminate = computed(() => this._checkboxState() === IdsCheckboxState.INDETERMINATE);\n public isFocusable = computed(() => !this.disabled() && !this.readonly());\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parentOrSelfSize(),\n this._parentOrSelfVariant(),\n this.disabled() ? 'disabled' : null,\n ]),\n );\n\n protected _nativeValue = computed(() => {\n const value = this.value();\n return isString(value) ? value : undefined;\n });\n\n private _parentOrSelfSize = computed(() => this._checkboxGroup?.size() ?? this.size());\n private _parentOrSelfVariant = computed(() => this._checkboxGroup?.variant() ?? this.variant());\n\n private _onChange: (value: unknown) => void = () => { };\n private _onTouched: () => unknown = () => { };\n\n public controlDir: NgControl | null = null;\n\n public readonly change = output<IdsCheckBoxChangeEvent>();\n public readonly indeterminateChange = output<boolean>();\n\n private _inputElement = viewChild.required<ElementRef<HTMLInputElement>>('inputEl');\n\n private _hintMessages = contentChildren(IdsHintMessageComponent, { descendants: true });\n private _errorMessages = contentChildren(IdsErrorMessageComponent, { descendants: true });\n\n public ngOnChanges(changes: SimpleChanges): void {\n const checkedChange = changes['checked'] as SimpleChange | undefined;\n const indeterminateChange = changes['indeterminate'] as SimpleChange | undefined;\n if (indeterminateChange || checkedChange) {\n const currentChecked = checkedChange?.currentValue;\n const currentIndeterminate = indeterminateChange?.currentValue;\n if (currentIndeterminate === true) {\n this._checkboxState.set(IdsCheckboxState.INDETERMINATE);\n } else if (currentChecked === true) {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n } else {\n this._checkboxState.set(IdsCheckboxState.UNCHECKED);\n }\n }\n }\n\n public ngOnInit(): void {\n this.controlDir = this._injector.get(NgControl, null, { self: true, optional: true });\n }\n\n public ngAfterViewInit(): void {\n if (this.indeterminate !== undefined) {\n this._syncIndeterminate(this.indeterminate());\n }\n }\n\n public focus(): void {\n this._inputElement().nativeElement.focus();\n }\n\n public writeValue(value: boolean): void {\n if (this.isIndeterminate()) {\n this._checkboxState.set(IdsCheckboxState.INDETERMINATE);\n } else {\n this._checkboxState.set(value ? IdsCheckboxState.CHECKED : IdsCheckboxState.UNCHECKED);\n }\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => unknown): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n protected _createChangeEvent(isChecked: boolean, value: unknown): IdsCheckBoxChangeEvent {\n const event = new IdsCheckBoxChangeEvent();\n event.source = this;\n event.checked = isChecked;\n event.value = value;\n return event;\n }\n\n private _emitChangeEvent(): void {\n this._onChange(this.isChecked());\n this.change.emit(this._createChangeEvent(this.isChecked(), this.value()));\n this._syncChecked(this.isChecked());\n }\n\n public toggle(): void {\n if (this.isIndeterminate()) {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n } else {\n this._checkboxState.set(this._checkboxState() === IdsCheckboxState.CHECKED ? IdsCheckboxState.UNCHECKED : IdsCheckboxState.CHECKED);\n }\n this._onChange(this.isChecked());\n }\n\n public select(): void {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n this._onChange(this.isChecked());\n }\n\n public deselect(): void {\n this._checkboxState.set(IdsCheckboxState.UNCHECKED);\n this._onChange(this.isChecked());\n }\n\n private _handleInputClick(): void {\n if (this.isIndeterminate()) {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n this.indeterminateChange.emit(this.isIndeterminate());\n } else {\n this._checkboxState.set(this._checkboxState() === IdsCheckboxState.CHECKED ? IdsCheckboxState.UNCHECKED : IdsCheckboxState.CHECKED);\n }\n\n this._emitChangeEvent();\n this._syncIndeterminate(this.isIndeterminate());\n }\n\n public onBlur(): void {\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _syncChecked(value: boolean): void {\n const nativeCheckbox = this._inputElement();\n nativeCheckbox.nativeElement.checked = value;\n }\n\n private _syncIndeterminate(value: boolean): void {\n const nativeCheckbox = this._inputElement();\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n\n public onInputClick(): void {\n if (!this.readonly() && !this.disabled()) {\n this._handleInputClick();\n }\n }\n\n public onTouchTargetClick(): void {\n if (!this.readonly() && !this.disabled()) {\n this._handleInputClick();\n }\n\n if (!this.disabled()) {\n this._inputElement().nativeElement.focus();\n }\n }\n\n public get displayedMessages(): 'error' | 'hint' | undefined {\n if (this._errorMessages().length > 0 && this.controlDir?.errors) {\n return 'error';\n }\n if (this._hintMessages().length > 0) {\n return 'hint';\n }\n return undefined;\n }\n\n public get hasRequiredValidator(): boolean {\n const control = this.controlDir?.control;\n if (!control) {\n return this.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","<div class=\"ids-checkbox__input-wrapper\">\n <div class=\"ids-checkbox__touch-target\" (click)=\"onTouchTargetClick()\"></div>\n <input\n #inputEl\n type=\"checkbox\"\n [class.ids-checkbox--selected]=\"isChecked()\"\n [id]=\"inputId()\"\n [disabled]=\"disabled()\"\n [attr.aria-checked]=\"isIndeterminate() ? 'mixed' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [checked]=\"isChecked()\"\n [indeterminate]=\"isIndeterminate()\"\n [name]=\"name()\"\n [required]=\"required()\"\n [tabIndex]=\"!isFocusable() ? -1 : tabIndex()\"\n [value]=\"_nativeValue()\"\n (blur)=\"onBlur()\"\n (click)=\"onInputClick()\"\n (change)=\"$event.stopPropagation()\"\n />\n <div class=\"ids-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\n<div class=\"ids-checkbox__label-wrapper\">\n <div class=\"ids-checkbox__label-container\">\n <label class=\"ids-checkbox__label\" [for]=\"inputId()\">\n <ng-content />\n @if (hasRequiredValidator) {\n <span class=\"ids-form-field__required-marker\"></span>\n }\n </label>\n </div>\n @let messages = displayedMessages;\n @if (messages) {\n <div class=\"ids-checkbox__message-container\">\n @switch (messages) {\n @case (\"error\") {\n <ng-content select=\"ids-error-message\" />\n }\n @case (\"hint\") {\n <ng-content select=\"ids-hint-message\" />\n }\n }\n </div>\n }\n</div>\n","import { IDS_CHECKBOX_GROUP_DEFAULT_CONFIG, IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY, IdsCheckboxGroupDefaultConfig } from './checkbox-group-defaults';\nimport { IdsCheckboxComponent } from './checkbox.component';\nimport { IdsCheckBoxChangeEvent } from './types/checkbox-events.class';\nimport { IDS_CHECKBOX_GROUP_CHILD } from './types/checkbox-group-child';\nimport { IDS_CHECKBOX_PARENT, IdsCheckboxParent } from './types/checkbox-parent';\nimport { IdsCheckboxVariantType } from './types/checkbox-variant.type';\n\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, effect, input, ViewEncapsulation } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsOrientation, IdsOrientationType, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-checkbox-group',\n imports: [IdsCheckboxComponent],\n templateUrl: './checkbox-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'group',\n '[attr.aria-labelledby]': '_groupLabelId()',\n },\n providers: [\n {\n provide: IDS_CHECKBOX_PARENT,\n useExisting: IdsCheckboxGroupComponent,\n },\n ],\n})\nexport class IdsCheckboxGroupComponent extends ComponentBaseWithDefaults<IdsCheckboxGroupDefaultConfig> implements IdsCheckboxParent {\n protected override get _hostName(): string {\n return 'checkbox-group';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_CHECKBOX_GROUP_DEFAULT_CONFIG);\n\n private _childCheckboxes = contentChildren(IDS_CHECKBOX_GROUP_CHILD);\n\n public groupLabel = input<string>('', { alias: 'label' });\n public allowParent = input<boolean>(this._defaultConfig.allowParent);\n public parentCheckboxLabel = input<string>('', { alias: 'parentLabel' });\n public name = input<string>();\n public size = input<IdsSizeType | null>(this._defaultConfig.size);\n public variant = input<IdsCheckboxVariantType | null>(this._defaultConfig.variant);\n public orientation = input<IdsOrientationType | null>(this._defaultConfig.orientation);\n\n protected _groupLabelId = computed(() => `${this.id()}-label`);\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n this.orientation(),\n ]));\n\n protected _parentCheckboxChecked = computed(() => this._childCheckboxes().every((child) => child.isChecked()));\n protected _parentCheckboxIndeterminate = computed(() =>\n !this._parentCheckboxChecked() && this._childCheckboxes().some((child) => child.isChecked()),\n );\n\n private _invalidParentOrientation = effect(() => {\n if (this.allowParent() && this.orientation() === IdsOrientation.HORIZONTAL) {\n throw this._createHostError('Parent checkbox can be used only in vertical orientation');\n }\n });\n\n public selectAllChild(): void {\n this._childCheckboxes().forEach((child) => {\n child.select();\n });\n }\n\n public deselectAllChild(): void {\n this._childCheckboxes().forEach((child) => {\n child.deselect();\n });\n }\n\n protected _handleParentChange(event: IdsCheckBoxChangeEvent): void {\n if (event.checked) {\n this.selectAllChild();\n } else {\n this.deselectAllChild();\n }\n }\n}\n","<label class=\"ids-checkbox-group__label\" [for]=\"id()\" [id]=\"_groupLabelId()\">{{ groupLabel() }}</label>\n\n@if (allowParent()) {\n <ids-checkbox\n [checked]=\"_parentCheckboxChecked()\"\n [indeterminate]=\"_parentCheckboxIndeterminate()\"\n (change)=\"_handleParentChange($event)\"\n >{{ parentCheckboxLabel() }}</ids-checkbox\n >\n}\n\n<div class=\"ids-checkbox-group__list\">\n <ng-content select=\"ids-checkbox\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultConfig"],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-checkbox.mjs","sources":["../../../projects/widgets/checkbox/types/checkbox-events.class.ts","../../../projects/widgets/checkbox/types/checkbox-state.type.ts","../../../projects/widgets/checkbox/types/checkbox-variant.type.ts","../../../projects/widgets/checkbox/checkbox-defaults.ts","../../../projects/widgets/checkbox/checkbox-group-defaults.ts","../../../projects/widgets/checkbox/types/checkbox-group-child.ts","../../../projects/widgets/checkbox/types/checkbox-parent.ts","../../../projects/widgets/checkbox/checkbox.component.ts","../../../projects/widgets/checkbox/checkbox.component.html","../../../projects/widgets/checkbox/checkbox-group.component.ts","../../../projects/widgets/checkbox/checkbox-group.component.html","../../../projects/widgets/checkbox/i-cell-ids-angular-checkbox.ts"],"sourcesContent":["import { IdsCheckboxComponent } from '../checkbox.component';\n\nexport class IdsCheckBoxChangeEvent {\n public source!: IdsCheckboxComponent;\n public checked!: boolean;\n public value?: unknown;\n}\n","export const IdsCheckboxState = {\n UNCHECKED: 'unchecked',\n CHECKED: 'checked',\n INDETERMINATE: 'indeterminate',\n} as const;\n\nexport type IdsCheckboxStateType = (typeof IdsCheckboxState)[keyof typeof IdsCheckboxState];\n","export const IdsCheckboxVariant = {\n SURFACE: 'surface',\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport type IdsCheckboxVariantType = (typeof IdsCheckboxVariant)[keyof typeof IdsCheckboxVariant];\n","import { IdsCheckboxVariant, IdsCheckboxVariantType } from './types/checkbox-variant.type';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsCheckboxDefaultConfig {\n size?: IdsSizeType\n variant?: IdsCheckboxVariantType\n}\n\nexport const IDS_CHECKBOX_DEFAULT_CONFIG = new InjectionToken<IdsCheckboxDefaultConfig>(\n 'IDS_CHECKBOX_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY(): Required<IdsCheckboxDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n variant: IdsCheckboxVariant.SURFACE,\n };\n}\n","import { IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY, IdsCheckboxDefaultConfig } from './checkbox-defaults';\n\nimport { InjectionToken } from '@angular/core';\nimport { IdsOrientation, IdsOrientationType } from '@i-cell/ids-angular/core';\n\nexport interface IdsCheckboxGroupDefaultConfig extends IdsCheckboxDefaultConfig {\n orientation: IdsOrientationType,\n allowParent: boolean,\n}\n\nexport const IDS_CHECKBOX_GROUP_DEFAULT_CONFIG = new InjectionToken<IdsCheckboxGroupDefaultConfig>(\n 'IDS_CHECKBOX_GROUP_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY(): Required<IdsCheckboxGroupDefaultConfig> {\n return {\n ...IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY(),\n orientation: IdsOrientation.VERTICAL,\n allowParent: true,\n };\n}\n","import { IdsCheckboxStateType } from './checkbox-state.type';\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface IdsCheckboxGroupChild {\n checkboxState(): IdsCheckboxStateType;\n deselect(): void;\n select(): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IDS_CHECKBOX_GROUP_CHILD = new InjectionToken<IdsCheckboxGroupChild>('IDS_CHECKBOX_GROUP_CHILD');\n","import { IdsCheckboxVariantType } from './checkbox-variant.type';\n\nimport { InjectionToken, Signal } from '@angular/core';\nimport { IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsCheckboxParent {\n size: Signal<IdsSizeType | null>;\n variant: Signal<IdsCheckboxVariantType | null>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const IDS_CHECKBOX_PARENT = new InjectionToken<IdsCheckboxParent>('IDS_CHECKBOX_PARENT');\n","import { IDS_CHECKBOX_DEFAULT_CONFIG, IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY, IdsCheckboxDefaultConfig } from './checkbox-defaults';\nimport { IdsCheckBoxChangeEvent } from './types/checkbox-events.class';\nimport { IDS_CHECKBOX_GROUP_CHILD, IdsCheckboxGroupChild } from './types/checkbox-group-child';\nimport { IDS_CHECKBOX_PARENT } from './types/checkbox-parent';\nimport { IdsCheckboxState, IdsCheckboxStateType } from './types/checkbox-state.type';\nimport { IdsCheckboxVariantType } from './types/checkbox-variant.type';\n\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Injector, OnChanges, OnInit, SimpleChange, SimpleChanges, ViewEncapsulation, computed, contentChildren, inject, input, model, output, signal, viewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { ComponentBaseWithDefaults, IdsSizeType, coerceBooleanAttribute, coerceNumberAttribute, isString } from '@i-cell/ids-angular/core';\nimport { IDS_FORM_FIELD_CONTROL, IdsErrorMessageComponent, IdsHintMessageComponent, IdsValidators } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\n\nconst defaultConfig = IDS_CHECKBOX_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-checkbox',\n imports: [IdsIconComponent],\n templateUrl: './checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IdsCheckboxComponent,\n multi: true,\n },\n {\n provide: IDS_FORM_FIELD_CONTROL,\n useExisting: IdsCheckboxComponent,\n },\n {\n provide: IDS_CHECKBOX_GROUP_CHILD,\n useExisting: IdsCheckboxComponent,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n },\n})\nexport class IdsCheckboxComponent\n extends ComponentBaseWithDefaults<IdsCheckboxDefaultConfig>\n implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor, IdsCheckboxGroupChild {\n protected override get _hostName(): string {\n return 'checkbox';\n }\n\n private readonly _injector = inject(Injector);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_CHECKBOX_DEFAULT_CONFIG);\n\n private _checkboxGroup = inject(IDS_CHECKBOX_PARENT, { optional: true });\n\n private _checkboxState = signal<IdsCheckboxStateType>(IdsCheckboxState.UNCHECKED);\n public checkboxState = this._checkboxState.asReadonly();\n\n protected _inputId = computed(() => `${this.id()}-input`);\n public name = input<string | null>();\n public required = input(false, { transform: coerceBooleanAttribute });\n public readonly = input(false, { transform: coerceBooleanAttribute });\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public tabIndex = input(0, { transform: coerceNumberAttribute });\n public value = input<unknown>();\n public variant = input<IdsCheckboxVariantType>(this._defaultConfig.variant);\n public checked = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public indeterminate = input<boolean, unknown>(false, { transform: coerceBooleanAttribute });\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n public ariaDescribedby = input<string>('', { alias: 'aria-describedby' });\n\n public disabled = model(false);\n\n protected _isChecked = computed(() => this._checkboxState() === IdsCheckboxState.CHECKED);\n protected _isIndeterminate = computed(() => this._checkboxState() === IdsCheckboxState.INDETERMINATE);\n protected _isFocusable = computed(() => !this.disabled() && !this.readonly());\n protected _hostClasses = computed(() => this._getHostClasses([\n this._parentOrSelfSize(),\n this._parentOrSelfVariant(),\n this.disabled() ? 'disabled' : null,\n ]),\n );\n\n protected _nativeValue = computed(() => {\n const value = this.value();\n return isString(value) ? value : undefined;\n });\n\n private _parentOrSelfSize = computed(() => this._checkboxGroup?.size() ?? this.size());\n private _parentOrSelfVariant = computed(() => this._checkboxGroup?.variant() ?? this.variant());\n\n private _onChange: (value: unknown) => void = () => { };\n private _onTouched: () => unknown = () => { };\n\n public controlDir: NgControl | null = null;\n\n public readonly change = output<IdsCheckBoxChangeEvent>();\n public readonly indeterminateChange = output<boolean>();\n\n private _inputElement = viewChild.required<ElementRef<HTMLInputElement>>('inputEl');\n\n private _hintMessages = contentChildren(IdsHintMessageComponent, { descendants: true });\n private _errorMessages = contentChildren(IdsErrorMessageComponent, { descendants: true });\n\n public ngOnChanges(changes: SimpleChanges): void {\n const checkedChange = changes['checked'] as SimpleChange | undefined;\n const indeterminateChange = changes['indeterminate'] as SimpleChange | undefined;\n if (indeterminateChange || checkedChange) {\n const currentChecked = checkedChange?.currentValue;\n const currentIndeterminate = indeterminateChange?.currentValue;\n if (currentIndeterminate === true) {\n this._checkboxState.set(IdsCheckboxState.INDETERMINATE);\n } else if (currentChecked === true) {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n } else {\n this._checkboxState.set(IdsCheckboxState.UNCHECKED);\n }\n }\n }\n\n public ngOnInit(): void {\n this.controlDir = this._injector.get(NgControl, null, { self: true, optional: true });\n }\n\n public ngAfterViewInit(): void {\n if (this.indeterminate !== undefined) {\n this._syncIndeterminate(this.indeterminate());\n }\n }\n\n public focus(): void {\n this._inputElement().nativeElement.focus();\n }\n\n public writeValue(value: boolean): void {\n if (this._isIndeterminate()) {\n this._checkboxState.set(IdsCheckboxState.INDETERMINATE);\n } else {\n this._checkboxState.set(value ? IdsCheckboxState.CHECKED : IdsCheckboxState.UNCHECKED);\n }\n }\n\n public registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => unknown): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n protected _createChangeEvent(isChecked: boolean, value: unknown): IdsCheckBoxChangeEvent {\n const event = new IdsCheckBoxChangeEvent();\n event.source = this;\n event.checked = isChecked;\n event.value = value;\n return event;\n }\n\n private _emitChangeEvent(): void {\n this._onChange(this._isChecked());\n this.change.emit(this._createChangeEvent(this._isChecked(), this.value()));\n this._syncChecked(this._isChecked());\n }\n\n public toggle(): void {\n if (this._isIndeterminate()) {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n } else {\n this._checkboxState.set(this._checkboxState() === IdsCheckboxState.CHECKED ? IdsCheckboxState.UNCHECKED : IdsCheckboxState.CHECKED);\n }\n this._onChange(this._isChecked());\n }\n\n public select(): void {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n this._onChange(this._isChecked());\n }\n\n public deselect(): void {\n this._checkboxState.set(IdsCheckboxState.UNCHECKED);\n this._onChange(this._isChecked());\n }\n\n private _handleInputClick(): void {\n if (this._isIndeterminate()) {\n this._checkboxState.set(IdsCheckboxState.CHECKED);\n this.indeterminateChange.emit(this._isIndeterminate());\n } else {\n this._checkboxState.set(this._checkboxState() === IdsCheckboxState.CHECKED ? IdsCheckboxState.UNCHECKED : IdsCheckboxState.CHECKED);\n }\n\n this._emitChangeEvent();\n this._syncIndeterminate(this._isIndeterminate());\n }\n\n public onBlur(): void {\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _syncChecked(value: boolean): void {\n const nativeCheckbox = this._inputElement();\n nativeCheckbox.nativeElement.checked = value;\n }\n\n private _syncIndeterminate(value: boolean): void {\n const nativeCheckbox = this._inputElement();\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n\n public onInputClick(): void {\n if (!this.readonly() && !this.disabled()) {\n this._handleInputClick();\n }\n }\n\n public onTouchTargetClick(): void {\n if (!this.readonly() && !this.disabled()) {\n this._handleInputClick();\n }\n\n if (!this.disabled()) {\n this._inputElement().nativeElement.focus();\n }\n }\n\n public get displayedMessages(): 'error' | 'hint' | undefined {\n if (this._errorMessages().length > 0 && this.controlDir?.errors) {\n return 'error';\n }\n if (this._hintMessages().length > 0) {\n return 'hint';\n }\n return undefined;\n }\n\n protected get _hasRequiredValidator(): boolean {\n const control = this.controlDir?.control;\n if (!control) {\n return this.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","<div class=\"ids-checkbox__input-wrapper\">\n <div class=\"ids-checkbox__touch-target\" (click)=\"onTouchTargetClick()\"></div>\n <input\n #inputEl\n type=\"checkbox\"\n [class.ids-checkbox--selected]=\"_isChecked()\"\n [id]=\"_inputId()\"\n [disabled]=\"disabled()\"\n [attr.aria-checked]=\"_isIndeterminate() ? 'mixed' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [checked]=\"_isChecked()\"\n [indeterminate]=\"_isIndeterminate()\"\n [name]=\"name()\"\n [required]=\"required()\"\n [tabIndex]=\"!_isFocusable() ? -1 : tabIndex()\"\n [value]=\"_nativeValue()\"\n (blur)=\"onBlur()\"\n (click)=\"onInputClick()\"\n (change)=\"$event.stopPropagation()\"\n />\n <div class=\"ids-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\n<div class=\"ids-checkbox__label-wrapper\">\n <div class=\"ids-checkbox__label-container\">\n <label class=\"ids-checkbox__label\" [for]=\"_inputId()\">\n <ng-content />\n @if (_hasRequiredValidator) {\n <span class=\"ids-form-field__required-marker\"></span>\n }\n </label>\n </div>\n @let messages = displayedMessages;\n @if (messages) {\n <div class=\"ids-checkbox__message-container\">\n @switch (messages) {\n @case (\"error\") {\n <ng-content select=\"ids-error-message\" />\n }\n @case (\"hint\") {\n <ng-content select=\"ids-hint-message\" />\n }\n }\n </div>\n }\n</div>\n","import { IDS_CHECKBOX_GROUP_DEFAULT_CONFIG, IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY, IdsCheckboxGroupDefaultConfig } from './checkbox-group-defaults';\nimport { IdsCheckboxComponent } from './checkbox.component';\nimport { IdsCheckBoxChangeEvent } from './types/checkbox-events.class';\nimport { IDS_CHECKBOX_GROUP_CHILD } from './types/checkbox-group-child';\nimport { IDS_CHECKBOX_PARENT, IdsCheckboxParent } from './types/checkbox-parent';\nimport { IdsCheckboxState } from './types/checkbox-state.type';\nimport { IdsCheckboxVariantType } from './types/checkbox-variant.type';\n\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, effect, input, ViewEncapsulation } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsOrientation, IdsOrientationType, IdsSizeType } from '@i-cell/ids-angular/core';\n\nconst defaultConfig = IDS_CHECKBOX_GROUP_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'ids-checkbox-group',\n imports: [IdsCheckboxComponent],\n templateUrl: './checkbox-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'group',\n '[attr.aria-labelledby]': '_groupLabelId()',\n },\n providers: [\n {\n provide: IDS_CHECKBOX_PARENT,\n useExisting: IdsCheckboxGroupComponent,\n },\n ],\n})\nexport class IdsCheckboxGroupComponent extends ComponentBaseWithDefaults<IdsCheckboxGroupDefaultConfig> implements IdsCheckboxParent {\n protected override get _hostName(): string {\n return 'checkbox-group';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_CHECKBOX_GROUP_DEFAULT_CONFIG);\n\n private _childCheckboxes = contentChildren(IDS_CHECKBOX_GROUP_CHILD);\n\n public groupLabel = input<string>('', { alias: 'label' });\n public allowParent = input<boolean>(this._defaultConfig.allowParent);\n public parentCheckboxLabel = input<string>('', { alias: 'parentLabel' });\n public name = input<string>();\n public size = input<IdsSizeType | null>(this._defaultConfig.size);\n public variant = input<IdsCheckboxVariantType | null>(this._defaultConfig.variant);\n public orientation = input<IdsOrientationType | null>(this._defaultConfig.orientation);\n\n protected _groupLabelId = computed(() => `${this.id()}-label`);\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.variant(),\n this.orientation(),\n ]));\n\n protected _parentCheckboxChecked = computed(() =>\n this._childCheckboxes().every((child) =>\n child.checkboxState() === IdsCheckboxState.CHECKED));\n\n protected _parentCheckboxIndeterminate = computed(() =>\n !this._parentCheckboxChecked() && this._childCheckboxes().some((child) =>\n child.checkboxState() === IdsCheckboxState.CHECKED),\n );\n\n private _invalidParentOrientation = effect(() => {\n if (this.allowParent() && this.orientation() === IdsOrientation.HORIZONTAL) {\n throw this._createHostError('Parent checkbox can be used only in vertical orientation');\n }\n });\n\n public selectAllChild(): void {\n this._childCheckboxes().forEach((child) => {\n child.select();\n });\n }\n\n public deselectAllChild(): void {\n this._childCheckboxes().forEach((child) => {\n child.deselect();\n });\n }\n\n protected _handleParentChange(event: IdsCheckBoxChangeEvent): void {\n if (event.checked) {\n this.selectAllChild();\n } else {\n this.deselectAllChild();\n }\n }\n}\n","<label class=\"ids-checkbox-group__label\" [for]=\"id()\" [id]=\"_groupLabelId()\">{{ groupLabel() }}</label>\n\n@if (allowParent()) {\n <ids-checkbox\n [checked]=\"_parentCheckboxChecked()\"\n [indeterminate]=\"_parentCheckboxIndeterminate()\"\n (change)=\"_handleParentChange($event)\"\n >{{ parentCheckboxLabel() }}</ids-checkbox\n >\n}\n\n<div class=\"ids-checkbox-group__list\">\n <ng-content select=\"ids-checkbox\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["defaultConfig"],"mappings":"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"}
@@ -39,13 +39,13 @@ class IdsDialogComponent extends ComponentBaseWithDefaults {
39
39
  super(...arguments);
40
40
  this._defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DIALOG_DEFAULT_CONFIG);
41
41
  this.dialog = inject(ElementRef).nativeElement;
42
- this.titleId = computed(() => `${this.id()}-title`);
42
+ this._titleId = computed(() => `${this.id()}-title`);
43
43
  this.size = input(this._defaultConfig.size);
44
44
  this.mainTitle = input.required();
45
45
  this.subTitle = input();
46
46
  this.showCloseButton = input(this._defaultConfig.showCloseButton);
47
47
  this.showBackdrop = input(this._defaultConfig.showBackdrop);
48
- this.customHeader = contentChild(IdsDialogHeaderDirective);
48
+ this._customHeader = contentChild(IdsDialogHeaderDirective);
49
49
  this._hostClasses = computed(() => this._getHostClasses([
50
50
  this.size(),
51
51
  this.showBackdrop() ? 'with-backdrop' : null,
@@ -64,7 +64,7 @@ class IdsDialogComponent extends ComponentBaseWithDefaults {
64
64
  this.dialog.close();
65
65
  }
66
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsDialogComponent, isStandalone: true, selector: "dialog[idsDialog]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, mainTitle: { classPropertyName: "mainTitle", publicName: "mainTitle", isSignal: true, isRequired: true, transformFunction: null }, subTitle: { classPropertyName: "subTitle", publicName: "subTitle", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, showBackdrop: { classPropertyName: "showBackdrop", publicName: "showBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "cancel": "_onCancel($event)" }, properties: { "attr.aria-labelledby": "titleId()" } }, queries: [{ propertyName: "customHeader", first: true, predicate: IdsDialogHeaderDirective, descendants: true, isSignal: true }], exportAs: ["idsDialog"], usesInheritance: true, ngImport: i0, template: "<section class=\"ids-dialog-container\">\n <header class=\"ids-dialog-header\">\n @if (customHeader()) {\n <ng-container [ngTemplateOutlet]=\"customHeader()!.template\" />\n } @else {\n <div class=\"ids-dialog-header-default-content\">\n <h2 class=\"ids-dialog-title\" [id]=\"titleId()\">{{ mainTitle() }}</h2>\n @if (subTitle()) {\n <h3 class=\"ids-dialog-subtitle\">{{ subTitle() }}</h3>\n }\n </div>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"ids-dialog-close-button\"\n idsIconButton\n appearance=\"standard\"\n size=\"compact\"\n variant=\"surface\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n </header>\n <div class=\"ids-dialog-content\" [class.ids-dialog-content-scrollable]=\"scrollDetector.isScrollable()\">\n <div #scrollDetector=\"idsDetectScrollable\" idsDetectScrollable class=\"ids-dialog-content-overflow\">\n <ng-content select=\"[idsDialogContent]\" />\n </div>\n </div>\n <footer class=\"ids-dialog-actions\">\n <ng-content select=\"[idsDialogActions]\" />\n </footer>\n</section>\n", dependencies: [{ kind: "directive", type: IdsDetectScrollableDirective, selector: "[idsDetectScrollable]", exportAs: ["idsDetectScrollable"] }, { 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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsDialogComponent, isStandalone: true, selector: "dialog[idsDialog]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, mainTitle: { classPropertyName: "mainTitle", publicName: "mainTitle", isSignal: true, isRequired: true, transformFunction: null }, subTitle: { classPropertyName: "subTitle", publicName: "subTitle", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, showBackdrop: { classPropertyName: "showBackdrop", publicName: "showBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "cancel": "_onCancel($event)" }, properties: { "attr.aria-labelledby": "_titleId()" } }, queries: [{ propertyName: "_customHeader", first: true, predicate: IdsDialogHeaderDirective, descendants: true, isSignal: true }], exportAs: ["idsDialog"], usesInheritance: true, ngImport: i0, template: "<section class=\"ids-dialog-container\">\n <header class=\"ids-dialog-header\">\n @if (_customHeader()) {\n <ng-container [ngTemplateOutlet]=\"_customHeader()!.template\" />\n } @else {\n <div class=\"ids-dialog-header-default-content\">\n <h2 class=\"ids-dialog-title\" [id]=\"_titleId()\">{{ mainTitle() }}</h2>\n @if (subTitle()) {\n <h3 class=\"ids-dialog-subtitle\">{{ subTitle() }}</h3>\n }\n </div>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"ids-dialog-close-button\"\n idsIconButton\n appearance=\"standard\"\n size=\"compact\"\n variant=\"surface\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n </header>\n <div class=\"ids-dialog-content\" [class.ids-dialog-content-scrollable]=\"scrollDetector.isScrollable()\">\n <div #scrollDetector=\"idsDetectScrollable\" idsDetectScrollable class=\"ids-dialog-content-overflow\">\n <ng-content select=\"[idsDialogContent]\" />\n </div>\n </div>\n <footer class=\"ids-dialog-actions\">\n <ng-content select=\"[idsDialogActions]\" />\n </footer>\n</section>\n", dependencies: [{ kind: "directive", type: IdsDetectScrollableDirective, selector: "[idsDetectScrollable]", exportAs: ["idsDetectScrollable"] }, { 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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
68
68
  }
69
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsDialogComponent, decorators: [{
70
70
  type: Component,
@@ -74,9 +74,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
74
74
  IdsIconButtonComponent,
75
75
  NgTemplateOutlet,
76
76
  ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'idsDialog', host: {
77
- '[attr.aria-labelledby]': 'titleId()',
77
+ '[attr.aria-labelledby]': '_titleId()',
78
78
  '(cancel)': '_onCancel($event)',
79
- }, template: "<section class=\"ids-dialog-container\">\n <header class=\"ids-dialog-header\">\n @if (customHeader()) {\n <ng-container [ngTemplateOutlet]=\"customHeader()!.template\" />\n } @else {\n <div class=\"ids-dialog-header-default-content\">\n <h2 class=\"ids-dialog-title\" [id]=\"titleId()\">{{ mainTitle() }}</h2>\n @if (subTitle()) {\n <h3 class=\"ids-dialog-subtitle\">{{ subTitle() }}</h3>\n }\n </div>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"ids-dialog-close-button\"\n idsIconButton\n appearance=\"standard\"\n size=\"compact\"\n variant=\"surface\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n </header>\n <div class=\"ids-dialog-content\" [class.ids-dialog-content-scrollable]=\"scrollDetector.isScrollable()\">\n <div #scrollDetector=\"idsDetectScrollable\" idsDetectScrollable class=\"ids-dialog-content-overflow\">\n <ng-content select=\"[idsDialogContent]\" />\n </div>\n </div>\n <footer class=\"ids-dialog-actions\">\n <ng-content select=\"[idsDialogActions]\" />\n </footer>\n</section>\n" }]
79
+ }, template: "<section class=\"ids-dialog-container\">\n <header class=\"ids-dialog-header\">\n @if (_customHeader()) {\n <ng-container [ngTemplateOutlet]=\"_customHeader()!.template\" />\n } @else {\n <div class=\"ids-dialog-header-default-content\">\n <h2 class=\"ids-dialog-title\" [id]=\"_titleId()\">{{ mainTitle() }}</h2>\n @if (subTitle()) {\n <h3 class=\"ids-dialog-subtitle\">{{ subTitle() }}</h3>\n }\n </div>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"ids-dialog-close-button\"\n idsIconButton\n appearance=\"standard\"\n size=\"compact\"\n variant=\"surface\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n </header>\n <div class=\"ids-dialog-content\" [class.ids-dialog-content-scrollable]=\"scrollDetector.isScrollable()\">\n <div #scrollDetector=\"idsDetectScrollable\" idsDetectScrollable class=\"ids-dialog-content-overflow\">\n <ng-content select=\"[idsDialogContent]\" />\n </div>\n </div>\n <footer class=\"ids-dialog-actions\">\n <ng-content select=\"[idsDialogActions]\" />\n </footer>\n</section>\n" }]
80
80
  }] });
81
81
 
82
82
  class IdsCustomDialogBase {
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-dialog.mjs","sources":["../../../projects/widgets/dialog/dialog-defaults.ts","../../../projects/widgets/dialog/dialog-header.directive.ts","../../../projects/widgets/dialog/dialog.component.ts","../../../projects/widgets/dialog/dialog.component.html","../../../projects/widgets/dialog/custom-dialog-base.ts","../../../projects/widgets/dialog/dialog.service.ts","../../../projects/widgets/dialog/i-cell-ids-angular-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsDialogDefaultConfig {\n size?: IdsSizeType,\n showCloseButton?: boolean,\n showBackdrop?: boolean,\n}\n\nexport const IDS_DIALOG_DEFAULT_CONFIG = new InjectionToken<IdsDialogDefaultConfig>(\n 'IDS_DIALOG_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_DIALOG_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_DIALOG_DEFAULT_CONFIG_FACTORY(): Required<IdsDialogDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n showCloseButton: false,\n showBackdrop: true,\n };\n}\n\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[idsDialogHeader]',\n standalone: true,\n})\nexport class IdsDialogHeaderDirective {\n public template = inject(TemplateRef);\n}\n","import { IDS_DIALOG_DEFAULT_CONFIG, IDS_DIALOG_DEFAULT_CONFIG_FACTORY, IdsDialogDefaultConfig } from './dialog-defaults';\nimport { IdsDialogHeaderDirective } from './dialog-header.directive';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, computed, contentChild, inject, input } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsDetectScrollableDirective, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_DIALOG_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'dialog[idsDialog]',\n imports: [\n IdsDetectScrollableDirective,\n IdsIconComponent,\n IdsIconButtonComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './dialog.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'idsDialog',\n host: {\n '[attr.aria-labelledby]': 'titleId()',\n '(cancel)': '_onCancel($event)',\n },\n})\nexport class IdsDialogComponent extends ComponentBaseWithDefaults<IdsDialogDefaultConfig> {\n protected override get _hostName(): string {\n return 'dialog';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DIALOG_DEFAULT_CONFIG);\n\n public dialog = inject<ElementRef<HTMLDialogElement>>(ElementRef).nativeElement;\n\n public titleId = computed(() => `${this.id()}-title`);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public mainTitle = input.required<string>();\n public subTitle = input<string>();\n public showCloseButton = input<boolean>(this._defaultConfig.showCloseButton);\n public showBackdrop = input<boolean>(this._defaultConfig.showBackdrop);\n\n public customHeader = contentChild(IdsDialogHeaderDirective);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.showBackdrop() ? 'with-backdrop' : null,\n ]));\n\n private _onCancel(event: Event): void {\n event.preventDefault();\n }\n\n public open(): void {\n this.dialog.showModal();\n }\n\n public close(): void {\n this.dialog.close();\n }\n}\n","<section class=\"ids-dialog-container\">\n <header class=\"ids-dialog-header\">\n @if (customHeader()) {\n <ng-container [ngTemplateOutlet]=\"customHeader()!.template\" />\n } @else {\n <div class=\"ids-dialog-header-default-content\">\n <h2 class=\"ids-dialog-title\" [id]=\"titleId()\">{{ mainTitle() }}</h2>\n @if (subTitle()) {\n <h3 class=\"ids-dialog-subtitle\">{{ subTitle() }}</h3>\n }\n </div>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"ids-dialog-close-button\"\n idsIconButton\n appearance=\"standard\"\n size=\"compact\"\n variant=\"surface\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n </header>\n <div class=\"ids-dialog-content\" [class.ids-dialog-content-scrollable]=\"scrollDetector.isScrollable()\">\n <div #scrollDetector=\"idsDetectScrollable\" idsDetectScrollable class=\"ids-dialog-content-overflow\">\n <ng-content select=\"[idsDialogContent]\" />\n </div>\n </div>\n <footer class=\"ids-dialog-actions\">\n <ng-content select=\"[idsDialogActions]\" />\n </footer>\n</section>\n","import { IdsDialogComponent } from './dialog.component';\n\nimport { AfterViewInit, Directive, OnDestroy, viewChild } from '@angular/core';\nimport { Subject, Subscription, fromEvent } from 'rxjs';\n\n@Directive({ standalone: true })\nexport abstract class IdsCustomDialogBase<ResultType = unknown> implements AfterViewInit, OnDestroy {\n public dialogResult = new Subject<ResultType | undefined>();\n\n protected _dialog = viewChild.required(IdsDialogComponent);\n\n private _closeSub?: Subscription;\n\n public ngAfterViewInit(): void {\n this._dialog().open();\n this._closeSub = fromEvent(this._dialog().dialog, 'close').subscribe(() => {\n this._setDialogResult();\n });\n }\n\n public ngOnDestroy(): void {\n this._closeSub?.unsubscribe();\n }\n\n public close(payload?: ResultType): void {\n this._closeSub?.unsubscribe();\n this._dialog().close();\n this._setDialogResult(payload);\n }\n\n private _setDialogResult(payload?: ResultType): void {\n this.dialogResult.next(payload);\n this.dialogResult.complete();\n }\n}\n","import { IdsCustomDialogBase } from './custom-dialog-base';\n\nimport { DOCUMENT } from '@angular/common';\nimport { ApplicationRef, EnvironmentInjector, Injectable, Injector, Provider, Signal, StaticProvider, Type, createComponent, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsDialogService {\n private _appRef = inject(ApplicationRef);\n private _document = inject(DOCUMENT);\n private _injector = inject(EnvironmentInjector);\n\n public open<C extends IdsCustomDialogBase<R>, R = unknown>(\n component: Type<C>,\n options?: { providers?: (Provider | StaticProvider)[], inputs?: { [P in keyof C]?: C[P] extends Signal<infer T> ? T : C[P] } },\n ): Observable<R | undefined> {\n let elementInjector = undefined;\n\n if (options?.providers) {\n elementInjector = Injector.create({\n parent: this._injector,\n providers: options.providers,\n });\n }\n\n const createOptions = {\n environmentInjector: this._injector,\n ...(elementInjector && { elementInjector }),\n };\n const dialogRef = createComponent(component, createOptions);\n\n if (options?.inputs) {\n Object.keys(options.inputs).forEach((key) => dialogRef.setInput(key, options.inputs![key as keyof C]));\n }\n\n this._document.body.appendChild(dialogRef.location.nativeElement);\n\n this._appRef.attachView(dialogRef.hostView);\n\n const onClose = dialogRef.instance.dialogResult.asObservable();\n\n onClose.subscribe(() => {\n this._document.body.removeChild(dialogRef.location.nativeElement);\n dialogRef.destroy();\n },\n );\n\n return onClose;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i-cell-ids-angular-dialog.mjs","sources":["../../../projects/widgets/dialog/dialog-defaults.ts","../../../projects/widgets/dialog/dialog-header.directive.ts","../../../projects/widgets/dialog/dialog.component.ts","../../../projects/widgets/dialog/dialog.component.html","../../../projects/widgets/dialog/custom-dialog-base.ts","../../../projects/widgets/dialog/dialog.service.ts","../../../projects/widgets/dialog/i-cell-ids-angular-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IdsSize, IdsSizeType } from '@i-cell/ids-angular/core';\n\nexport interface IdsDialogDefaultConfig {\n size?: IdsSizeType,\n showCloseButton?: boolean,\n showBackdrop?: boolean,\n}\n\nexport const IDS_DIALOG_DEFAULT_CONFIG = new InjectionToken<IdsDialogDefaultConfig>(\n 'IDS_DIALOG_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_DIALOG_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_DIALOG_DEFAULT_CONFIG_FACTORY(): Required<IdsDialogDefaultConfig> {\n return {\n size: IdsSize.COMPACT,\n showCloseButton: false,\n showBackdrop: true,\n };\n}\n\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[idsDialogHeader]',\n standalone: true,\n})\nexport class IdsDialogHeaderDirective {\n public template = inject(TemplateRef);\n}\n","import { IDS_DIALOG_DEFAULT_CONFIG, IDS_DIALOG_DEFAULT_CONFIG_FACTORY, IdsDialogDefaultConfig } from './dialog-defaults';\nimport { IdsDialogHeaderDirective } from './dialog-header.directive';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, computed, contentChild, inject, input } from '@angular/core';\nimport { ComponentBaseWithDefaults, IdsDetectScrollableDirective, IdsSizeType } from '@i-cell/ids-angular/core';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button';\n\nconst defaultConfig = IDS_DIALOG_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: 'dialog[idsDialog]',\n imports: [\n IdsDetectScrollableDirective,\n IdsIconComponent,\n IdsIconButtonComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './dialog.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'idsDialog',\n host: {\n '[attr.aria-labelledby]': '_titleId()',\n '(cancel)': '_onCancel($event)',\n },\n})\nexport class IdsDialogComponent extends ComponentBaseWithDefaults<IdsDialogDefaultConfig> {\n protected override get _hostName(): string {\n return 'dialog';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_DIALOG_DEFAULT_CONFIG);\n\n public dialog = inject<ElementRef<HTMLDialogElement>>(ElementRef).nativeElement;\n\n protected _titleId = computed(() => `${this.id()}-title`);\n public size = input<IdsSizeType>(this._defaultConfig.size);\n public mainTitle = input.required<string>();\n public subTitle = input<string>();\n public showCloseButton = input<boolean>(this._defaultConfig.showCloseButton);\n public showBackdrop = input<boolean>(this._defaultConfig.showBackdrop);\n\n protected _customHeader = contentChild(IdsDialogHeaderDirective);\n\n protected _hostClasses = computed(() => this._getHostClasses([\n this.size(),\n this.showBackdrop() ? 'with-backdrop' : null,\n ]));\n\n private _onCancel(event: Event): void {\n event.preventDefault();\n }\n\n public open(): void {\n this.dialog.showModal();\n }\n\n public close(): void {\n this.dialog.close();\n }\n}\n","<section class=\"ids-dialog-container\">\n <header class=\"ids-dialog-header\">\n @if (_customHeader()) {\n <ng-container [ngTemplateOutlet]=\"_customHeader()!.template\" />\n } @else {\n <div class=\"ids-dialog-header-default-content\">\n <h2 class=\"ids-dialog-title\" [id]=\"_titleId()\">{{ mainTitle() }}</h2>\n @if (subTitle()) {\n <h3 class=\"ids-dialog-subtitle\">{{ subTitle() }}</h3>\n }\n </div>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"ids-dialog-close-button\"\n idsIconButton\n appearance=\"standard\"\n size=\"compact\"\n variant=\"surface\"\n (click)=\"close()\"\n >\n <ids-icon aria-hidden=\"true\" alt=\"\" fontIcon=\"close\" />\n </button>\n }\n </header>\n <div class=\"ids-dialog-content\" [class.ids-dialog-content-scrollable]=\"scrollDetector.isScrollable()\">\n <div #scrollDetector=\"idsDetectScrollable\" idsDetectScrollable class=\"ids-dialog-content-overflow\">\n <ng-content select=\"[idsDialogContent]\" />\n </div>\n </div>\n <footer class=\"ids-dialog-actions\">\n <ng-content select=\"[idsDialogActions]\" />\n </footer>\n</section>\n","import { IdsDialogComponent } from './dialog.component';\n\nimport { AfterViewInit, Directive, OnDestroy, viewChild } from '@angular/core';\nimport { Subject, Subscription, fromEvent } from 'rxjs';\n\n@Directive({ standalone: true })\nexport abstract class IdsCustomDialogBase<ResultType = unknown> implements AfterViewInit, OnDestroy {\n public dialogResult = new Subject<ResultType | undefined>();\n\n protected _dialog = viewChild.required(IdsDialogComponent);\n\n private _closeSub?: Subscription;\n\n public ngAfterViewInit(): void {\n this._dialog().open();\n this._closeSub = fromEvent(this._dialog().dialog, 'close').subscribe(() => {\n this._setDialogResult();\n });\n }\n\n public ngOnDestroy(): void {\n this._closeSub?.unsubscribe();\n }\n\n public close(payload?: ResultType): void {\n this._closeSub?.unsubscribe();\n this._dialog().close();\n this._setDialogResult(payload);\n }\n\n private _setDialogResult(payload?: ResultType): void {\n this.dialogResult.next(payload);\n this.dialogResult.complete();\n }\n}\n","import { IdsCustomDialogBase } from './custom-dialog-base';\n\nimport { DOCUMENT } from '@angular/common';\nimport { ApplicationRef, EnvironmentInjector, Injectable, Injector, Provider, Signal, StaticProvider, Type, createComponent, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class IdsDialogService {\n private _appRef = inject(ApplicationRef);\n private _document = inject(DOCUMENT);\n private _injector = inject(EnvironmentInjector);\n\n public open<C extends IdsCustomDialogBase<R>, R = unknown>(\n component: Type<C>,\n options?: { providers?: (Provider | StaticProvider)[], inputs?: { [P in keyof C]?: C[P] extends Signal<infer T> ? T : C[P] } },\n ): Observable<R | undefined> {\n let elementInjector = undefined;\n\n if (options?.providers) {\n elementInjector = Injector.create({\n parent: this._injector,\n providers: options.providers,\n });\n }\n\n const createOptions = {\n environmentInjector: this._injector,\n ...(elementInjector && { elementInjector }),\n };\n const dialogRef = createComponent(component, createOptions);\n\n if (options?.inputs) {\n Object.keys(options.inputs).forEach((key) => dialogRef.setInput(key, options.inputs![key as keyof C]));\n }\n\n this._document.body.appendChild(dialogRef.location.nativeElement);\n\n this._appRef.attachView(dialogRef.hostView);\n\n const onClose = dialogRef.instance.dialogResult.asObservable();\n\n onClose.subscribe(() => {\n this._document.body.removeChild(dialogRef.location.nativeElement);\n dialogRef.destroy();\n },\n );\n\n return onClose;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MASa,yBAAyB,GAAG,IAAI,cAAc,CACzD,2BAA2B,EAC3B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,iCAAiC;AAC3C,CAAA;SAGa,iCAAiC,GAAA;IAC/C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,OAAO;AACrB,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,YAAY,EAAE,IAAI;KACnB;AACH;;MCjBa,wBAAwB,CAAA;AAJrC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC;8GAFY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACID,MAAM,aAAa,GAAG,iCAAiC,EAAE;AAmBnD,MAAO,kBAAmB,SAAQ,yBAAiD,CAAA;AAjBzF,IAAA,WAAA,GAAA;;QAsBqB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,yBAAyB,CAAC;AAE7F,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAgC,UAAU,CAAC,CAAC,aAAa;AAErE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,EAAE,EAAE,CAAA,MAAA,CAAQ,CAAC;QAClD,IAAI,CAAA,IAAA,GAAG,KAAK,CAAc,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACnD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAU;QACpC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU;QAC1B,IAAe,CAAA,eAAA,GAAG,KAAK,CAAU,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QACrE,IAAY,CAAA,YAAA,GAAG,KAAK,CAAU,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;AAE5D,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,wBAAwB,CAAC;QAEtD,IAAY,CAAA,YAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,YAAY,EAAE,GAAG,eAAe,GAAG,IAAI;AAC7C,SAAA,CAAC,CAAC;AAaJ;AAjCC,IAAA,IAAuB,SAAS,GAAA;AAC9B,QAAA,OAAO,QAAQ;;AAqBT,IAAA,SAAS,CAAC,KAAY,EAAA;QAC5B,KAAK,CAAC,cAAc,EAAE;;IAGjB,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;;IAGlB,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;8GAhCV,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgBU,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CjE,kuCAoCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBI,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAWP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACpB,OAAA,EAAA;wBACP,4BAA4B;wBAC5B,gBAAgB;wBAChB,sBAAsB;wBACtB,gBAAgB;qBACjB,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACrC,QAAA,EAAA,WAAW,EACf,IAAA,EAAA;AACJ,wBAAA,wBAAwB,EAAE,YAAY;AACtC,wBAAA,UAAU,EAAE,mBAAmB;AAChC,qBAAA,EAAA,QAAA,EAAA,kuCAAA,EAAA;;;MEpBmB,mBAAmB,CAAA;AADzC,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAA0B;AAEjD,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAyB3D;IArBQ,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAK;YACxE,IAAI,CAAC,gBAAgB,EAAE;AACzB,SAAC,CAAC;;IAGG,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;;AAGxB,IAAA,KAAK,CAAC,OAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AAC7B,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;AAGxB,IAAA,gBAAgB,CAAC,OAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;8GA1BV,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uFAGA,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAHrC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;mBAAC,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCElB,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAuChD;IArCQ,IAAI,CACT,SAAkB,EAClB,OAA8H,EAAA;QAE9H,IAAI,eAAe,GAAG,SAAS;AAE/B,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC;;AAGJ,QAAA,MAAM,aAAa,GAAG;YACpB,mBAAmB,EAAE,IAAI,CAAC,SAAS;AACnC,YAAA,IAAI,eAAe,IAAI,EAAE,eAAe,EAAE,CAAC;SAC5C;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC;AAE3D,QAAA,IAAI,OAAO,EAAE,MAAM,EAAE;AACnB,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,MAAO,CAAC,GAAc,CAAC,CAAC,CAAC;;AAGxG,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;QAE3C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE;AAE9D,QAAA,OAAO,CAAC,SAAS,CAAC,MAAK;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;YACjE,SAAS,CAAC,OAAO,EAAE;AACrB,SAAC,CACA;AAED,QAAA,OAAO,OAAO;;8GAxCL,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;AAEG;;;;"}
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, signal, Component, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Directive, input, contentChildren, computed, Input, inject, ElementRef, ChangeDetectorRef, viewChild, contentChild, isDevMode, effect, output } from '@angular/core';
2
+ import { Injectable, signal, Component, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Directive, input, contentChildren, computed, Input, inject, ElementRef, ChangeDetectorRef, viewChild, contentChild, booleanAttribute, effect, isDevMode, output } from '@angular/core';
3
3
  import { ComponentBase, IdsSize, ComponentBaseWithDefaults, coerceBooleanAttribute } from '@i-cell/ids-angular/core';
4
4
  import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { IdsIconComponent } from '@i-cell/ids-angular/icon';
6
- import { tap, switchMap, startWith, of, Subject } from 'rxjs';
7
- import { Validators, FormGroupDirective, NgForm, NgControl } from '@angular/forms';
6
+ import { observeOn, asapScheduler, tap, switchMap, startWith, of, Subject } from 'rxjs';
7
+ import { Validators, FormGroupDirective, NgForm, NgControl, StatusChangeEvent } from '@angular/forms';
8
8
  import { hasModifierKey } from '@angular/cdk/keycodes';
9
9
 
10
10
  class AbstractErrorStateMatcher {
@@ -387,7 +387,7 @@ class IdsErrorMessageComponent extends ComponentBase {
387
387
  this._validationError = signal(null);
388
388
  this._hostClasses = computed(() => this._getHostClasses([]));
389
389
  this.suffixes = contentChildren(IdsMessageSuffixDirective);
390
- toObservable(this._parent.control).pipe(tap((controlDir) => this._control.set(controlDir?.control ?? null)), switchMap(() => this._control()?.statusChanges.pipe(startWith(this._control()?.status)) ?? of(null)), takeUntilDestroyed(this._destroyRef)).subscribe((status) => {
390
+ toObservable(this._parent.controlDir).pipe(observeOn(asapScheduler), tap((controlDir) => this._control.set(controlDir?.control ?? null)), switchMap(() => this._control()?.statusChanges.pipe(startWith(this._control()?.status)) ?? of(null)), takeUntilDestroyed(this._destroyRef)).subscribe((status) => {
391
391
  if (status === 'INVALID') {
392
392
  const nextError = this._selectMostImportantValidationError();
393
393
  this._validationError.set(nextError);
@@ -477,26 +477,26 @@ class IdsFormFieldComponent extends ComponentBaseWithDefaults {
477
477
  this._parentFieldset = inject(IdsFieldsetComponent, { optional: true });
478
478
  this._defaultConfig = this._getDefaultConfig(defaultConfig$1, IDS_FORM_FIELD_DEFAULT_CONFIG);
479
479
  this._fieldWrapper = viewChild.required('fieldWrapper');
480
- this._child = contentChild(IDS_FORM_FIELD_CONTROL);
480
+ this._child = contentChild.required(IDS_FORM_FIELD_CONTROL);
481
481
  this._hintMessages = contentChildren(IdsHintMessageComponent, { descendants: true });
482
482
  this._successMessages = contentChildren(IdsSuccessMessageComponent, { descendants: true });
483
483
  this._errorMessages = contentChildren(IdsErrorMessageComponent, { descendants: true });
484
484
  this._actions = contentChildren(IdsFormFieldActionDirective);
485
485
  this._prefixes = contentChildren(IdsPrefixDirective);
486
486
  this._suffixes = contentChildren(IdsSuffixDirective);
487
- this.hasActions = computed(() => Boolean(this._actions().length));
488
- this.hasLeadingIcon = computed(() => Boolean(this._prefixes().filter((prefix) => prefix.isLeadingIcon).length));
489
- this.hasPrefix = computed(() => Boolean(this._prefixes().filter((prefix) => !prefix.isLeadingIcon).length));
490
- this.hasSuffix = computed(() => Boolean(this._suffixes().filter((suffix) => !suffix.isTrailingIcon).length));
491
- this.hasTrailingIcon = computed(() => Boolean(this._suffixes().filter((suffix) => suffix.isTrailingIcon).length));
492
- this.inputId = computed(() => this._child()?.id());
487
+ this._hasActions = computed(() => Boolean(this._actions().length));
488
+ this._hasLeadingIcon = computed(() => Boolean(this._prefixes().filter((prefix) => prefix.isLeadingIcon).length));
489
+ this._hasPrefix = computed(() => Boolean(this._prefixes().filter((prefix) => !prefix.isLeadingIcon).length));
490
+ this._hasSuffix = computed(() => Boolean(this._suffixes().filter((suffix) => !suffix.isTrailingIcon).length));
491
+ this._hasTrailingIcon = computed(() => Boolean(this._suffixes().filter((suffix) => suffix.isTrailingIcon).length));
492
+ this._inputId = computed(() => this._child()?.id());
493
493
  this.size = input(this._defaultConfig.size);
494
494
  this.variant = input(this._defaultConfig.variant);
495
495
  this.parentOrSelfSize = computed(() => this._parentFieldset?.size() ?? this.size());
496
496
  this.parentOrSelfVariant = computed(() => this._parentFieldset?.variant() ?? this.variant());
497
- this.control = computed(() => this._child()?.ngControl);
498
- this.disabled = computed(() => Boolean(this._child()?.disabled()));
497
+ this.controlDir = computed(() => this._child().ngControl());
499
498
  this._hasErrorState = computed(() => Boolean(this._child()?.hasErrorState()));
499
+ this.disabled = computed(() => Boolean(this._child()?.disabled()));
500
500
  this._hasSuccessState = computed(() => Boolean(this._child()?.hasSuccessState()));
501
501
  this._hostClasses = computed(() => this._getHostClasses([
502
502
  this.parentOrSelfSize(),
@@ -505,7 +505,7 @@ class IdsFormFieldComponent extends ComponentBaseWithDefaults {
505
505
  this._hasErrorState() ? 'invalid' : null,
506
506
  this._hasSuccessState() ? 'valid' : null,
507
507
  ]));
508
- this.displayedMessages = computed(() => {
508
+ this._displayedMessages = computed(() => {
509
509
  if (this._errorMessages().length > 0 && this._hasErrorState()) {
510
510
  return 'error';
511
511
  }
@@ -517,44 +517,34 @@ class IdsFormFieldComponent extends ComponentBaseWithDefaults {
517
517
  }
518
518
  return undefined;
519
519
  });
520
+ this.hasRequiredValidator = computed(() => {
521
+ const control = this.controlDir()?.control;
522
+ return this._child().required()
523
+ || control?.hasValidator(Validators.required)
524
+ || control?.hasValidator(Validators.requiredTrue)
525
+ || control?.hasValidator(IdsValidators.required)
526
+ || control?.hasValidator(IdsValidators.requiredTrue)
527
+ || control?.hasValidator(IdsValidators.requiredFalse);
528
+ });
520
529
  }
521
530
  get _hostName() {
522
531
  return 'form-field';
523
532
  }
524
- ngAfterContentInit() {
525
- if (isDevMode() && !this._child()) {
526
- throw this._createHostError('no form element was provided');
527
- }
528
- this._child()?.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
529
- this._changeDetectorRef.markForCheck();
530
- });
531
- }
532
- get hasRequiredValidator() {
533
- const control = this.control()?.control;
534
- if (!control) {
535
- return Boolean(this._child()?.required());
536
- }
537
- return control.hasValidator(Validators.required)
538
- || control.hasValidator(Validators.requiredTrue)
539
- || control.hasValidator(IdsValidators.required)
540
- || control.hasValidator(IdsValidators.requiredTrue)
541
- || control.hasValidator(IdsValidators.requiredFalse);
542
- }
543
533
  getConnectedOverlayOrigin() {
544
534
  return this._fieldWrapper();
545
535
  }
546
536
  containerClick(event) {
547
- const containerClick = this._child()?.onContainerClick;
537
+ const containerClick = this._child().onContainerClick;
548
538
  if (containerClick) {
549
539
  containerClick(event);
550
540
  }
551
541
  }
552
542
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsFormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
553
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsFormFieldComponent, isStandalone: true, selector: "ids-form-field", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_child", first: true, predicate: IDS_FORM_FIELD_CONTROL, descendants: true, isSignal: true }, { propertyName: "_hintMessages", predicate: IdsHintMessageComponent, descendants: true, isSignal: true }, { propertyName: "_successMessages", predicate: IdsSuccessMessageComponent, descendants: true, isSignal: true }, { propertyName: "_errorMessages", predicate: IdsErrorMessageComponent, descendants: true, isSignal: true }, { propertyName: "_actions", predicate: IdsFormFieldActionDirective, isSignal: true }, { propertyName: "_prefixes", predicate: IdsPrefixDirective, isSignal: true }, { propertyName: "_suffixes", predicate: IdsSuffixDirective, isSignal: true }], viewQueries: [{ propertyName: "_fieldWrapper", first: true, predicate: ["fieldWrapper"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<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", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
543
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsFormFieldComponent, isStandalone: true, selector: "ids-form-field", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_child", first: true, predicate: IDS_FORM_FIELD_CONTROL, descendants: true, isSignal: true }, { propertyName: "_hintMessages", predicate: IdsHintMessageComponent, descendants: true, isSignal: true }, { propertyName: "_successMessages", predicate: IdsSuccessMessageComponent, descendants: true, isSignal: true }, { propertyName: "_errorMessages", predicate: IdsErrorMessageComponent, descendants: true, isSignal: true }, { propertyName: "_actions", predicate: IdsFormFieldActionDirective, isSignal: true }, { propertyName: "_prefixes", predicate: IdsPrefixDirective, isSignal: true }, { propertyName: "_suffixes", predicate: IdsSuffixDirective, isSignal: true }], viewQueries: [{ propertyName: "_fieldWrapper", first: true, predicate: ["fieldWrapper"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<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", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
554
544
  }
555
545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsFormFieldComponent, decorators: [{
556
546
  type: Component,
557
- args: [{ selector: 'ids-form-field', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<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" }]
547
+ args: [{ selector: 'ids-form-field', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<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" }]
558
548
  }] });
559
549
 
560
550
  const IDS_INPUT_DEFAULT_CONFIG = new InjectionToken('IDS_INPUT_DEFAULT_CONFIG', {
@@ -589,19 +579,30 @@ class IdsInputDirective extends ComponentBaseWithDefaults {
589
579
  this._defaultConfig = this._getDefaultConfig(defaultConfig, IDS_INPUT_DEFAULT_CONFIG);
590
580
  this.errorStateChanges = new Subject();
591
581
  this.successStateChanges = new Subject();
592
- this.ngControl = inject(NgControl);
582
+ this.ngControl = signal(inject(NgControl, { self: true }));
593
583
  this._focused = false;
594
584
  this.placeholder = input('');
595
585
  this.name = input();
596
586
  this.type = input('text');
597
- this.required = input(false, { transform: coerceBooleanAttribute });
598
- this.readonly = input(false, { transform: coerceBooleanAttribute });
599
- this.disabled = input(false, { transform: coerceBooleanAttribute });
600
- this._controlDisabled = signal(false);
601
- this.isDisabled = computed(() => this.disabled() || this._controlDisabled());
587
+ this.required = input(false, { transform: booleanAttribute });
588
+ this.readonly = input(false, { transform: booleanAttribute });
602
589
  this.canHandleSuccessState = input(false);
603
590
  this.errorStateMatcher = input(inject(this._defaultConfig.errorStateMatcher));
604
591
  this.successStateMatcher = input(inject(this._defaultConfig.successStateMatcher));
592
+ /** Handles the `disabled` input binding */
593
+ this.disabledInput = input(false, { transform: booleanAttribute, alias: 'disabled' });
594
+ /** Stores the `disabled` state internally */
595
+ this._disabled = signal(this.disabledInput());
596
+ /** The input's `disabled` state as a read-only signal (to enable/disable the contol programmatically, use the FormControl's related API) */
597
+ this.disabled = computed(() => this._disabled());
598
+ /** This effect is triggered if the `disabled` attribute binding changes and delegates the change to the underlying FormControl */
599
+ this._disabledInputEffect = effect(() => {
600
+ const enableOrDisable = this.disabledInput() ? 'disable' : 'enable';
601
+ const controlDir = this.ngControl();
602
+ // The NgControl's `control` property might not be initialized so we delay the enable/disable call
603
+ // (the FormControl's enable/disable method call will trigger a StatusChangeEvent then we can update the `disabled` signal)
604
+ queueMicrotask(() => controlDir?.control?.[enableOrDisable]());
605
+ });
605
606
  this._hostClasses = computed(() => this._getHostClasses([], [formFieldControlClass]));
606
607
  this.hasErrorState = signal(false);
607
608
  this.hasSuccessState = signal(false);
@@ -615,7 +616,7 @@ class IdsInputDirective extends ComponentBaseWithDefaults {
615
616
  * Should be an arrow function in order to handle `this` outside of this class
616
617
  */
617
618
  this.onContainerClick = () => {
618
- if (!this._focused && !this.readonly() && !this.isDisabled()) {
619
+ if (!this._focused && !this.readonly() && !this.disabled) {
619
620
  this.focus();
620
621
  }
621
622
  };
@@ -634,26 +635,28 @@ class IdsInputDirective extends ComponentBaseWithDefaults {
634
635
  ngOnInit() {
635
636
  this._initErrorStateTracker();
636
637
  }
638
+ ngAfterViewInit() {
639
+ const control = this.ngControl()?.control;
640
+ if (control) {
641
+ this._disabled.set(control.status === 'DISABLED');
642
+ control.events.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((event) => this.updateControlState(event));
643
+ }
644
+ }
637
645
  _initErrorStateTracker() {
638
- this._errorStateTracker = new ErrorStateTracker(this.errorStateMatcher(), this.ngControl, this._parentFormGroup, this._parentForm, this.errorStateChanges);
646
+ this._errorStateTracker = new ErrorStateTracker(this.errorStateMatcher(), this.ngControl(), this._parentFormGroup, this._parentForm, this.errorStateChanges);
639
647
  this.errorStateChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.hasErrorState.set(this._errorStateTracker.hasErrorState));
648
+ this._errorStateTracker.updateErrorState();
640
649
  }
641
650
  _setSuccessStateTracker(canHandleSuccessState) {
642
651
  if (canHandleSuccessState) {
643
- this._successStateTracker = new SuccessStateTracker(this.successStateMatcher(), this.ngControl, this._parentFormGroup, this._parentForm, this.successStateChanges);
652
+ this._successStateTracker = new SuccessStateTracker(this.successStateMatcher(), this.ngControl(), this._parentFormGroup, this._parentForm, this.successStateChanges);
644
653
  this._successStateSubscription = this.successStateChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.hasSuccessState.set(this._successStateTracker.hasSuccessState));
654
+ this._successStateTracker.updateSuccessState();
645
655
  }
646
656
  else {
647
657
  this._successStateTracker = undefined;
648
658
  this._successStateSubscription?.unsubscribe();
649
- }
650
- }
651
- ngDoCheck() {
652
- if (this.ngControl) {
653
- this.updateErrorAndSuccessState();
654
- if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled()) {
655
- this._controlDisabled.set(this.ngControl.disabled);
656
- }
659
+ this.hasSuccessState.set(false);
657
660
  }
658
661
  }
659
662
  _validateType(type) {
@@ -669,12 +672,15 @@ class IdsInputDirective extends ComponentBaseWithDefaults {
669
672
  this._focused = isFocused;
670
673
  }
671
674
  }
672
- updateErrorAndSuccessState() {
675
+ updateControlState(event) {
673
676
  this._errorStateTracker?.updateErrorState();
674
677
  this._successStateTracker?.updateSuccessState();
678
+ if (event instanceof StatusChangeEvent) {
679
+ this._disabled.set(event.status === 'DISABLED');
680
+ }
675
681
  }
676
682
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
677
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.2", type: IdsInputDirective, isStandalone: true, 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])", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, canHandleSuccessState: { classPropertyName: "canHandleSuccessState", publicName: "canHandleSuccessState", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, successStateMatcher: { classPropertyName: "successStateMatcher", publicName: "successStateMatcher", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "_focusChanged(true)", "blur": "_focusChanged(false)" }, properties: { "attr.placeholder": "placeholder()", "attr.disabled": "isDisabled() ? \"\" : null", "attr.readonly": "readonly() ? \"\" : null" } }, providers: [
683
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.2", type: IdsInputDirective, isStandalone: true, 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])", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, canHandleSuccessState: { classPropertyName: "canHandleSuccessState", publicName: "canHandleSuccessState", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, successStateMatcher: { classPropertyName: "successStateMatcher", publicName: "successStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "_focusChanged(true)", "blur": "_focusChanged(false)" }, properties: { "attr.placeholder": "placeholder()", "attr.disabled": "disabled() ? \"\" : null", "attr.readonly": "readonly() ? \"\" : null" } }, providers: [
678
684
  {
679
685
  provide: IDS_FORM_FIELD_CONTROL,
680
686
  useExisting: IdsInputDirective,
@@ -700,7 +706,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
700
706
  ],
701
707
  host: {
702
708
  '[attr.placeholder]': 'placeholder()',
703
- '[attr.disabled]': 'isDisabled() ? "" : null',
709
+ '[attr.disabled]': 'disabled() ? "" : null',
704
710
  '[attr.readonly]': 'readonly() ? "" : null',
705
711
  '(focus)': '_focusChanged(true)',
706
712
  '(blur)': '_focusChanged(false)',
@@ -807,7 +813,6 @@ class IdsOptionComponent extends ComponentBase {
807
813
  this.disabledInput = input(false, { alias: 'disabled', transform: coerceBooleanAttribute });
808
814
  this.disabled = false; // Do not delete this class member, until ListKeyManagerOption requires: `disabled: boolean`
809
815
  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!
811
816
  this._multiSelect = Boolean(this._parent?.multiSelect());
812
817
  this.onSelectionChange = output();
813
818
  this.viewValue = computed(() => this._textElement().nativeElement.textContent || this.explicitViewValue() || '');