@i-cell/ids-angular 0.1.6 → 0.1.8

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 (33) hide show
  1. package/core/public-api.d.ts +1 -1
  2. package/core/utils/date.d.ts +24 -0
  3. package/core/utils/number.d.ts +4 -0
  4. package/datepicker/calendar/calendar-page.d.ts +26 -0
  5. package/datepicker/calendar/calendar.component.d.ts +40 -0
  6. package/datepicker/datepicker-defaults.d.ts +7 -0
  7. package/datepicker/datepicker-intl.d.ts +22 -0
  8. package/datepicker/datepicker-positions.d.ts +2 -0
  9. package/datepicker/datepicker.directive.d.ts +58 -0
  10. package/datepicker/day-selector/day-selector.component.d.ts +26 -0
  11. package/datepicker/index.d.ts +5 -0
  12. package/datepicker/month-selector/month-selector.component.d.ts +20 -0
  13. package/datepicker/public-api.d.ts +7 -0
  14. package/datepicker/tokens/date-formatter.d.ts +3 -0
  15. package/datepicker/tokens/date-parser.d.ts +3 -0
  16. package/datepicker/tokens/datepicker-view.d.ts +6 -0
  17. package/datepicker/trigger/datepicker-trigger.component.d.ts +12 -0
  18. package/datepicker/year-selector/year-selector.component.d.ts +20 -0
  19. package/fesm2022/i-cell-ids-angular-core.mjs +156 -13
  20. package/fesm2022/i-cell-ids-angular-core.mjs.map +1 -1
  21. package/fesm2022/i-cell-ids-angular-datepicker.mjs +860 -0
  22. package/fesm2022/i-cell-ids-angular-datepicker.mjs.map +1 -0
  23. package/fesm2022/i-cell-ids-angular-forms.mjs +79 -66
  24. package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -1
  25. package/fesm2022/i-cell-ids-angular-select.mjs +18 -63
  26. package/fesm2022/i-cell-ids-angular-select.mjs.map +1 -1
  27. package/forms/components/form-field/form-field-control.d.ts +41 -17
  28. package/forms/components/form-field/form-field.component.d.ts +2 -1
  29. package/forms/components/form-field/tokens/form-field-control.d.ts +1 -1
  30. package/forms/components/input/input.directive.d.ts +7 -36
  31. package/package.json +6 -2
  32. package/select/select.component.d.ts +8 -37
  33. package/core/utils/even-odd.d.ts +0 -2
@@ -1,15 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Directive, inject, Injector, ElementRef, ChangeDetectorRef, input, booleanAttribute, signal, computed, effect, viewChild, contentChildren, contentChild, isDevMode, forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
- import { ErrorStateMatcher, SuccessStateMatcher, IdsFormFieldComponent, formFieldControlClass, IdsOptionComponent, IDS_OPTION_GROUP, ErrorStateTracker, SuccessStateTracker, _countGroupLabelsBeforeOption, _getOptionScrollPosition, IDS_FORM_FIELD_CONTROL, IDS_OPTION_PARENT_COMPONENT } from '@i-cell/ids-angular/forms';
2
+ import { InjectionToken, Directive, inject, ElementRef, ChangeDetectorRef, input, signal, computed, viewChild, contentChildren, contentChild, effect, isDevMode, forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { ErrorStateMatcher, SuccessStateMatcher, IdsFormFieldControl, IdsFormFieldComponent, formFieldControlClass, IdsOptionComponent, IDS_OPTION_GROUP, _countGroupLabelsBeforeOption, _getOptionScrollPosition, IDS_FORM_FIELD_CONTROL, IDS_OPTION_PARENT_COMPONENT } from '@i-cell/ids-angular/forms';
4
4
  import { LiveAnnouncer, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
5
5
  import { SelectionModel } from '@angular/cdk/collections';
6
6
  import { hasModifierKey } from '@angular/cdk/keycodes';
7
7
  import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
8
8
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
- import { NgForm, FormGroupDirective, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
10
- import { ComponentBaseWithDefaults, coerceNumberAttribute, createClassList } from '@i-cell/ids-angular/core';
9
+ import { ValueChangeEvent, NG_VALUE_ACCESSOR } from '@angular/forms';
10
+ import { coerceNumberAttribute, createClassList } from '@i-cell/ids-angular/core';
11
11
  import { IdsIconComponent } from '@i-cell/ids-angular/icon';
12
- import { Subject, first } from 'rxjs';
12
+ import { filter, first } from 'rxjs';
13
13
 
14
14
  const IDS_SELECT_DEFAULT_CONFIG = new InjectionToken('IDS_SELECT_DEFAULT_CONFIG', {
15
15
  providedIn: 'root',
@@ -65,7 +65,7 @@ const selectConnectedPositions = [
65
65
  ];
66
66
 
67
67
  const defaultConfig = IDS_SELECT_DEFAULT_CONFIG_FACTORY();
68
- class IdsSelectComponent extends ComponentBaseWithDefaults {
68
+ class IdsSelectComponent extends IdsFormFieldControl {
69
69
  get _hostName() {
70
70
  return 'select';
71
71
  }
@@ -88,22 +88,13 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
88
88
  constructor() {
89
89
  super();
90
90
  this._defaultConfig = this._getDefaultConfig(defaultConfig, IDS_SELECT_DEFAULT_CONFIG);
91
- this._injector = inject(Injector);
92
91
  this._elementRef = inject(ElementRef);
93
92
  this._changeDetectorRef = inject(ChangeDetectorRef);
94
93
  this._liveAnnouncer = inject(LiveAnnouncer);
95
94
  this._parentFormField = inject(IdsFormFieldComponent);
96
- this._parentForm = inject(NgForm, { optional: true });
97
- this._parentFormGroup = inject(FormGroupDirective, { optional: true });
98
95
  this._connectedPositions = selectConnectedPositions;
99
- this.errorStateChanges = new Subject();
100
- this.successStateChanges = new Subject();
101
96
  this._overlayWidth = 0;
102
97
  this.multiSelect = input(false);
103
- this.placeholder = input('');
104
- this.required = input(false, { transform: booleanAttribute });
105
- this.readonly = input(false, { transform: booleanAttribute });
106
- this.canHandleSuccessState = input(false);
107
98
  this.errorStateMatcher = input(inject(this._defaultConfig.errorStateMatcher));
108
99
  this.successStateMatcher = input(inject(this._defaultConfig.successStateMatcher));
109
100
  this.ariaLabel = input('', { alias: 'aria-label' });
@@ -112,25 +103,7 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
112
103
  this.sortCompareFn = input();
113
104
  this.tabIndex = input(0, { transform: coerceNumberAttribute });
114
105
  this.typeaheadDebounceInterval = input(this._defaultConfig.typeaheadDebounceInterval, { transform: coerceNumberAttribute });
115
- this.ngControl = signal(null);
116
- /** Handles the `disabled` input binding */
117
- this.disabledInput = input(false, { transform: booleanAttribute, alias: 'disabled' });
118
- /** Stores the `disabled` state internally */
119
- this._disabled = signal(this.disabledInput());
120
- /** The input's `disabled` state as a read-only signal (to enable/disable the contol programmatically, use the FormControl's related API) */
121
- this.disabled = computed(() => this._disabled());
122
- /** This effect is triggered if the `disabled` attribute binding changes and delegates the change to the underlying FormControl */
123
- this._disabledInputEffect = effect(() => {
124
- const enableOrDisable = this.disabledInput() ? 'disable' : 'enable';
125
- const controlDir = this.ngControl();
126
- // The NgControl's `control` property might not be initialized so we delay the enable/disable call
127
- // (the FormControl's enable/disable method call will trigger the CVA's setDisabledState() callback
128
- // which sets the "main" disabled signal)
129
- queueMicrotask(() => controlDir?.control?.[enableOrDisable]());
130
- });
131
106
  this.isPanelOpen = signal(false);
132
- this.hasErrorState = signal(false);
133
- this.hasSuccessState = signal(false);
134
107
  this.parentSize = computed(() => this._parentFormField.parentOrSelfSize());
135
108
  this.parentVariant = computed(() => this._parentFormField.parentOrSelfVariant());
136
109
  this._focused = signal(false);
@@ -150,9 +123,6 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
150
123
  this.options = contentChildren(IdsOptionComponent, { descendants: true });
151
124
  this.optionGroups = contentChildren(IDS_OPTION_GROUP, { descendants: true });
152
125
  this._customTrigger = contentChild(IdsSelectTriggerDirective);
153
- this._canHandleSuccessStateEffect = effect(() => {
154
- this._setSuccessStateTracker(this.canHandleSuccessState());
155
- });
156
126
  this._onChange = () => { };
157
127
  this._onTouched = () => { };
158
128
  this._skipPredicate = (option) => {
@@ -170,14 +140,23 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
170
140
  effect(() => {
171
141
  this._keyManager?.withTypeAhead(this.typeaheadDebounceInterval());
172
142
  });
173
- // Get the NgControl reference as soon as we can
174
- queueMicrotask(() => this.ngControl.set(this._injector.get(NgControl, null, { self: true })));
175
143
  }
176
144
  ngOnInit() {
145
+ super.ngOnInit();
177
146
  if (!this._parentFormField) {
178
147
  throw this._createHostError('Select must be in a form field');
179
148
  }
180
149
  this._selectionModel = new SelectionModel(this.multiSelect(), undefined, false, this.valueCompareFn());
150
+ queueMicrotask(() => {
151
+ const control = this.ngControl()?.control;
152
+ if (control) {
153
+ control.events
154
+ .pipe(filter((event) => event instanceof ValueChangeEvent), takeUntilDestroyed(this._destroyRef))
155
+ .subscribe(() => {
156
+ this._changeDetectorRef.markForCheck();
157
+ });
158
+ }
159
+ });
181
160
  this._initErrorStateTracker();
182
161
  }
183
162
  ngAfterContentInit() {
@@ -198,22 +177,6 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
198
177
  ngOnDestroy() {
199
178
  this._keyManager?.destroy();
200
179
  }
201
- _initErrorStateTracker() {
202
- this._errorStateTracker = new ErrorStateTracker(this.errorStateMatcher(), this.ngControl(), this._parentFormGroup, this._parentForm, this.errorStateChanges);
203
- this.errorStateChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.hasErrorState.set(this._errorStateTracker.hasErrorState));
204
- }
205
- _setSuccessStateTracker(canHandleSuccessState) {
206
- if (canHandleSuccessState) {
207
- this._successStateTracker = new SuccessStateTracker(this.successStateMatcher(), this.ngControl(), this._parentFormGroup, this._parentForm, this.successStateChanges);
208
- this._successStateSubscription = this.successStateChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.hasSuccessState.set(this._successStateTracker.hasSuccessState));
209
- this._successStateTracker.updateSuccessState();
210
- }
211
- else {
212
- this._successStateTracker = undefined;
213
- this._successStateSubscription?.unsubscribe();
214
- this.hasSuccessState.set(false);
215
- }
216
- }
217
180
  _initKeyManager() {
218
181
  this._keyManager = new ActiveDescendantKeyManager(this.options())
219
182
  .withTypeAhead(this.typeaheadDebounceInterval())
@@ -505,14 +468,6 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
505
468
  }
506
469
  return optionValue === this._rawValue;
507
470
  }
508
- setDescribedByIds(ids) {
509
- if (ids.length) {
510
- this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));
511
- }
512
- else {
513
- this._elementRef.nativeElement.removeAttribute('aria-describedby');
514
- }
515
- }
516
471
  _onFocus() {
517
472
  if (!this.disabled()) {
518
473
  this._focused.set(true);
@@ -536,7 +491,7 @@ class IdsSelectComponent extends ComponentBaseWithDefaults {
536
491
  this._elementRef.nativeElement.focus(options);
537
492
  }
538
493
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
539
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsSelectComponent, isStandalone: true, selector: "ids-select[ngModel]:not([formControl]):not([formControlName]),\n ids-select[formControl]:not([ngModel]):not([formControlName]),\n ids-select[formControlName]:not([ngModel]):not([formControl])", inputs: { multiSelect: { classPropertyName: "multiSelect", publicName: "multiSelect", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", 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 }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, valueCompareFn: { classPropertyName: "valueCompareFn", publicName: "valueCompareFn", isSignal: true, isRequired: false, transformFunction: null }, sortCompareFn: { classPropertyName: "sortCompareFn", publicName: "sortCompareFn", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, typeaheadDebounceInterval: { classPropertyName: "typeaheadDebounceInterval", publicName: "typeaheadDebounceInterval", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "select", "aria-autocomplete": "none", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "focus()", "blur": "_onBlur()" }, properties: { "attr.tabindex": "disabled() ? -1 : tabIndex()", "attr.aria-controls": "isPanelOpen() ? id() + \"-panel\" : null", "attr.aria-owns": "isPanelOpen() ? id() + \"-panel\" : null", "attr.aria-expanded": "isPanelOpen()", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "ariaLabelledby() || null", "attr.aria-required": "required().toString()", "attr.aria-disabled": "disabled().toString()", "attr.aria-invalid": "hasErrorState()", "attr.aria-activedescendant": "_getAriaActiveDescendant()" } }, providers: [
494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsSelectComponent, isStandalone: true, selector: "ids-select[ngModel]:not([formControl]):not([formControlName]),\n ids-select[formControl]:not([ngModel]):not([formControlName]),\n ids-select[formControlName]:not([ngModel]):not([formControl])", inputs: { multiSelect: { classPropertyName: "multiSelect", publicName: "multiSelect", 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 }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, valueCompareFn: { classPropertyName: "valueCompareFn", publicName: "valueCompareFn", isSignal: true, isRequired: false, transformFunction: null }, sortCompareFn: { classPropertyName: "sortCompareFn", publicName: "sortCompareFn", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, typeaheadDebounceInterval: { classPropertyName: "typeaheadDebounceInterval", publicName: "typeaheadDebounceInterval", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "select", "aria-autocomplete": "none", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "focus()", "blur": "_onBlur()" }, properties: { "attr.tabindex": "disabled() ? -1 : tabIndex()", "attr.aria-controls": "isPanelOpen() ? id() + \"-panel\" : null", "attr.aria-owns": "isPanelOpen() ? id() + \"-panel\" : null", "attr.aria-expanded": "isPanelOpen()", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "ariaLabelledby() || null", "attr.aria-required": "required().toString()", "attr.aria-disabled": "disabled().toString()", "attr.aria-invalid": "hasErrorState()", "attr.aria-activedescendant": "_getAriaActiveDescendant()" } }, providers: [
540
495
  { provide: IDS_FORM_FIELD_CONTROL, useExisting: IdsSelectComponent },
541
496
  { provide: IDS_OPTION_PARENT_COMPONENT, useExisting: IdsSelectComponent },
542
497
  {
@@ -1 +1 @@
1
- {"version":3,"file":"i-cell-ids-angular-select.mjs","sources":["../../../projects/widgets/select/select-defaults.ts","../../../projects/widgets/select/select-trigger.directive.ts","../../../projects/widgets/select/select-positions.ts","../../../projects/widgets/select/select.component.ts","../../../projects/widgets/select/select.component.html","../../../projects/widgets/select/i-cell-ids-angular-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractErrorStateMatcher, AbstractSuccessStateMatcher, ErrorStateMatcher, SuccessStateMatcher } from '@i-cell/ids-angular/forms';\n\nexport interface IdsSelectDefaultConfig {\n errorStateMatcher?: typeof AbstractErrorStateMatcher\n successStateMatcher?: typeof AbstractSuccessStateMatcher\n typeaheadDebounceInterval: number\n}\n\nexport const IDS_SELECT_DEFAULT_CONFIG = new InjectionToken<IdsSelectDefaultConfig>(\n 'IDS_SELECT_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_SELECT_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_SELECT_DEFAULT_CONFIG_FACTORY(): Required<IdsSelectDefaultConfig> {\n return {\n errorStateMatcher: ErrorStateMatcher,\n successStateMatcher: SuccessStateMatcher,\n typeaheadDebounceInterval: 200,\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ids-select-trigger',\n standalone: true,\n})\nexport class IdsSelectTriggerDirective {\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const selectConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-select-panel-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-select-panel-above',\n },\n];\n","import { IDS_SELECT_DEFAULT_CONFIG, IDS_SELECT_DEFAULT_CONFIG_FACTORY, IdsSelectDefaultConfig } from './select-defaults';\nimport { selectConnectedPositions } from './select-positions';\nimport { IdsSelectTriggerDirective } from './select-trigger.directive';\n\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChildren, ElementRef, inject, input, OnInit, signal, viewChild, ViewEncapsulation, AfterContentInit, forwardRef, contentChild, OnDestroy, effect, isDevMode, booleanAttribute, Injector, AfterViewInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\nimport { coerceNumberAttribute, ComponentBaseWithDefaults, createClassList } from '@i-cell/ids-angular/core';\nimport { IDS_FORM_FIELD_CONTROL, IdsFormFieldControl, IdsOptionComponent, IdsOptionGroupComponent, AbstractSuccessStateMatcher, AbstractErrorStateMatcher, ErrorStateTracker, SuccessStateTracker, _getOptionScrollPosition, _countGroupLabelsBeforeOption, IdsOptionSelectionChange, IDS_OPTION_PARENT_COMPONENT, formFieldControlClass, IdsFormFieldComponent, IDS_OPTION_GROUP } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { first, Subject, Subscription } from 'rxjs';\n\nconst defaultConfig = IDS_SELECT_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: `ids-select[ngModel]:not([formControl]):not([formControlName]),\n ids-select[formControl]:not([ngModel]):not([formControlName]),\n ids-select[formControlName]:not([ngModel]):not([formControl])`,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n IdsIconComponent,\n ],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: IDS_FORM_FIELD_CONTROL, useExisting: IdsSelectComponent },\n { provide: IDS_OPTION_PARENT_COMPONENT, useExisting: IdsSelectComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsSelectComponent),\n multi: true,\n },\n ],\n host: {\n 'role': 'select',\n 'aria-autocomplete': 'none',\n 'aria-haspopup': 'listbox',\n '[attr.tabindex]': 'disabled() ? -1 : tabIndex()',\n '[attr.aria-controls]': 'isPanelOpen() ? id() + \"-panel\" : null',\n '[attr.aria-owns]': 'isPanelOpen() ? id() + \"-panel\" : null',\n '[attr.aria-expanded]': 'isPanelOpen()',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-labelledby]': 'ariaLabelledby() || null',\n '[attr.aria-required]': 'required().toString()',\n '[attr.aria-disabled]': 'disabled().toString()',\n '[attr.aria-invalid]': 'hasErrorState()',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_onBlur()',\n },\n})\nexport class IdsSelectComponent\n extends ComponentBaseWithDefaults<IdsSelectDefaultConfig>\n implements IdsFormFieldControl, ControlValueAccessor, OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n protected override get _hostName(): string {\n return 'select';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_SELECT_DEFAULT_CONFIG);\n private readonly _injector = inject(Injector);\n private readonly _elementRef = inject(ElementRef);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n private readonly _parentFormField = inject(IdsFormFieldComponent);\n private readonly _parentForm = inject(NgForm, { optional: true });\n private readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n protected readonly _connectedPositions = selectConnectedPositions;\n public readonly errorStateChanges = new Subject<void>();\n public readonly successStateChanges = new Subject<void>();\n\n protected _preferredOverlayOrigin: CdkOverlayOrigin | ElementRef | undefined;\n protected _overlayWidth: string | number = 0;\n\n public multiSelect = input<boolean>(false);\n public placeholder = input<string>('');\n public required = input<boolean, unknown>(false, { transform: booleanAttribute });\n public readonly = input<boolean, unknown>(false, { transform: booleanAttribute });\n public canHandleSuccessState = input<boolean>(false);\n public errorStateMatcher = input<AbstractErrorStateMatcher>(inject(this._defaultConfig.errorStateMatcher));\n public successStateMatcher = input<AbstractSuccessStateMatcher>(inject(this._defaultConfig.successStateMatcher));\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledby = input<string>('', { alias: 'aria-labelledby' });\n public valueCompareFn = input<(o1: unknown, o2: unknown) => boolean>((o1: unknown, o2: unknown) => o1 === o2);\n public sortCompareFn = input<(a: IdsOptionComponent, b: IdsOptionComponent, options: Readonly<IdsOptionComponent[]>) => number>();\n public tabIndex = input<number, unknown>(0, { transform: coerceNumberAttribute });\n public typeaheadDebounceInterval = input<number, unknown>(\n this._defaultConfig.typeaheadDebounceInterval, { transform: coerceNumberAttribute },\n );\n\n public ngControl = signal<NgControl | null>(null);\n\n /** Handles the `disabled` input binding */\n public disabledInput = input<boolean, unknown>(false, { transform: booleanAttribute, alias: 'disabled' });\n /** Stores the `disabled` state internally */\n private _disabled = signal(this.disabledInput());\n /** The input's `disabled` state as a read-only signal (to enable/disable the contol programmatically, use the FormControl's related API) */\n public disabled = computed(() => this._disabled());\n\n /** This effect is triggered if the `disabled` attribute binding changes and delegates the change to the underlying FormControl */\n private _disabledInputEffect = effect(() => {\n const enableOrDisable = this.disabledInput() ? 'disable' : 'enable';\n const controlDir = this.ngControl();\n\n // The NgControl's `control` property might not be initialized so we delay the enable/disable call\n // (the FormControl's enable/disable method call will trigger the CVA's setDisabledState() callback\n // which sets the \"main\" disabled signal)\n queueMicrotask(() => controlDir?.control?.[enableOrDisable]());\n });\n\n public isPanelOpen = signal<boolean>(false);\n public hasErrorState = signal<boolean>(false);\n public hasSuccessState = signal<boolean>(false);\n public parentSize = computed(() => this._parentFormField.parentOrSelfSize());\n public parentVariant = computed(() => this._parentFormField.parentOrSelfVariant());\n private _focused = signal<boolean>(false);\n\n private _canOpen = computed(() => !this.isPanelOpen() && !this.disabled() && !this.readonly() && this.options().length > 0);\n protected _hostClasses = computed(() => this._getHostClasses([\n this.parentSize(),\n this.parentVariant(),\n this.disabled() ? 'disabled' : null,\n this.readonly() ? 'readonly' : null,\n ], [formFieldControlClass]));\n\n protected _panelClasses = computed(() => createClassList(`${this._hostClassName}-panel`, [\n this.parentSize(),\n this.parentVariant(),\n ]));\n\n private _panel = viewChild<ElementRef<HTMLElement>>('panel');\n private _overlayDir = viewChild(CdkConnectedOverlay);\n public options = contentChildren<IdsOptionComponent>(IdsOptionComponent, { descendants: true });\n public optionGroups = contentChildren<IdsOptionGroupComponent>(IDS_OPTION_GROUP, { descendants: true });\n protected _customTrigger = contentChild(IdsSelectTriggerDirective);\n\n private _errorStateTracker?: ErrorStateTracker;\n private _successStateTracker?: SuccessStateTracker;\n private _successStateSubscription?: Subscription;\n\n private _canHandleSuccessStateEffect = effect(() => {\n this._setSuccessStateTracker(this.canHandleSuccessState());\n });\n\n private _keyManager?: ActiveDescendantKeyManager<IdsOptionComponent>;\n private _rawValue: unknown | unknown[];\n private _selectionModel?: SelectionModel<IdsOptionComponent>;\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => unknown = () => { };\n\n protected get _empty(): boolean {\n return Boolean(this._selectionModel?.isEmpty());\n }\n\n public get selected(): IdsOptionComponent | IdsOptionComponent[] | undefined {\n return this.multiSelect() ? this._selectionModel?.selected : this._selectionModel?.selected?.[0];\n }\n\n protected get _triggerValue(): string {\n if (this._empty) {\n return '';\n }\n\n if (this.multiSelect()) {\n const selectedOptions = this._selectionModel?.selected?.map((option) => option.viewValue());\n return selectedOptions?.join(', ') || '';\n }\n\n return this._selectionModel?.selected?.[0].viewValue() || '';\n }\n\n constructor() {\n super();\n effect(() => {\n this._keyManager?.withTypeAhead(this.typeaheadDebounceInterval());\n });\n\n // Get the NgControl reference as soon as we can\n queueMicrotask(() => this.ngControl.set(this._injector.get(NgControl, null, { self: true })));\n }\n\n public ngOnInit(): void {\n if (!this._parentFormField) {\n throw this._createHostError('Select must be in a form field');\n }\n this._selectionModel = new SelectionModel<IdsOptionComponent>(this.multiSelect(), undefined, false, this.valueCompareFn());\n this._initErrorStateTracker();\n }\n\n public ngAfterContentInit(): void {\n this._initKeyManager();\n this._selectionModel?.select(...this.options().filter((item) => item.selected()));\n this._subscribeOptionChanges();\n }\n\n public ngAfterViewInit(): void {\n const controlDir = this.ngControl();\n if (controlDir?.control) {\n controlDir.control.events.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.updateErrorAndSuccessState());\n }\n }\n\n public updateErrorAndSuccessState(): void {\n this._errorStateTracker?.updateErrorState();\n this._successStateTracker?.updateSuccessState();\n }\n\n public ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n private _initErrorStateTracker(): void {\n this._errorStateTracker = new ErrorStateTracker(\n this.errorStateMatcher(),\n this.ngControl(),\n this._parentFormGroup,\n this._parentForm,\n this.errorStateChanges,\n );\n\n this.errorStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasErrorState.set(this._errorStateTracker!.hasErrorState));\n }\n\n protected _setSuccessStateTracker(canHandleSuccessState: boolean): void {\n if (canHandleSuccessState) {\n this._successStateTracker = new SuccessStateTracker(\n this.successStateMatcher(),\n this.ngControl(),\n this._parentFormGroup,\n this._parentForm,\n this.successStateChanges,\n );\n\n this._successStateSubscription = this.successStateChanges.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => this.hasSuccessState.set(this._successStateTracker!.hasSuccessState));\n\n this._successStateTracker.updateSuccessState();\n } else {\n this._successStateTracker = undefined;\n this._successStateSubscription?.unsubscribe();\n this.hasSuccessState.set(false);\n }\n }\n\n private _initKeyManager(): void {\n this._keyManager = new ActiveDescendantKeyManager<IdsOptionComponent>(this.options())\n .withTypeAhead(this.typeaheadDebounceInterval())\n .withVerticalOrientation()\n .withHorizontalOrientation('ltr')\n .withHomeAndEnd()\n .withPageUpDown()\n .withAllowedModifierKeys(['shiftKey'])\n .skipPredicate(this._skipPredicate);\n\n this._keyManager.tabOut.subscribe(() => {\n if (this.isPanelOpen()) {\n if (!this.multiSelect() && this._keyManager?.activeItem) {\n this._keyManager.activeItem.selectViaInteraction();\n }\n this.focus();\n this.close();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n if (this.isPanelOpen() && this._panel()) {\n this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);\n }\n });\n }\n\n private _subscribeOptionChanges(): void {\n this.options().forEach((option) => {\n option.onSelectionChange.subscribe(\n (change) => {\n this._handleOptionChange(change);\n },\n );\n });\n }\n\n private _handleOptionChange(change: IdsOptionSelectionChange): void {\n const { source, selected, isUserInput } = change;\n if (!this.multiSelect()) {\n this._clearSelection();\n }\n source.selected.set(selected);\n\n if (isUserInput) {\n this._keyManager?.setActiveItem(source);\n }\n\n if (isUserInput && !this.multiSelect() && this.isPanelOpen()) {\n this.close();\n this.focus();\n }\n\n if (this.multiSelect()) {\n this._sortValues();\n\n if (isUserInput) {\n this.focus();\n }\n }\n\n if (selected) {\n this._selectionModel?.select(source);\n } else {\n this._selectionModel?.deselect(source);\n }\n this._handleChange();\n this._onTouched();\n }\n\n protected _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled() && !this.readonly()) {\n this.isPanelOpen() ? this._handleOpenedPanelKeydown(event) : this._handleClosedPanelKeydown(event);\n }\n }\n\n private _handleClosedPanelKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey =\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight';\n const isOpenKey = key === 'Enter' || key === ' ';\n\n if ((!manager?.isTyping() && isOpenKey && !hasModifierKey(event)) || isArrowKey) {\n event.preventDefault();\n this.open();\n } else if (!this.multiSelect()) {\n const previouslySelectedOption = this.selected;\n manager?.onKeydown(event);\n const selectedOption = this.selected as IdsOptionComponent;\n\n if (selectedOption?.viewValue() && previouslySelectedOption !== selectedOption) {\n // eslint-disable-next-line no-magic-numbers\n this._liveAnnouncer.announce(selectedOption.viewValue(), 10000);\n }\n }\n }\n\n private _handleOpenedPanelKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey = key === 'ArrowDown' || key === 'ArrowUp';\n const isTyping = manager?.isTyping();\n\n if (isArrowKey && event.altKey) {\n event.preventDefault();\n this.close();\n } else if (\n !isTyping &&\n (key === 'Enter' || key === ' ') &&\n manager?.activeItem &&\n !hasModifierKey(event)\n ) {\n event.preventDefault();\n manager.activeItem.selectViaInteraction();\n } else if (!isTyping && this.multiSelect() && key === 'a' && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options().some((opt) => !opt.disabled && !opt.selected());\n\n this.options().forEach((option) => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager?.activeItemIndex;\n\n manager?.onKeydown(event);\n\n if (\n this.multiSelect() &&\n isArrowKey &&\n event.shiftKey &&\n manager?.activeItem &&\n manager?.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager?.activeItem.selectViaInteraction();\n }\n }\n }\n\n private _positioningSettled(): void {\n this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);\n }\n\n private _scrollOptionIntoView(index: number): void {\n const option = this.options()[index];\n\n if (option) {\n const panel: HTMLElement | undefined = this._panel()!.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options(), this.optionGroups());\n const element = option.getHostElement();\n\n if (index === 0 && labelCount === 1) {\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n panel.scrollTop,\n panel.offsetHeight,\n );\n }\n }\n }\n\n private _sortValues(): void {\n if (this.multiSelect()) {\n const options = this.options();\n\n const sortComparator = this.sortCompareFn();\n this._selectionModel?.sort((a, b) => (sortComparator\n ? sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b)));\n }\n }\n\n private _getOverlayWidth(\n preferredOrigin: ElementRef<ElementRef> | CdkOverlayOrigin | undefined,\n ): string | number {\n const refToMeasure\n = preferredOrigin instanceof CdkOverlayOrigin\n ? preferredOrigin.elementRef\n : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n\n protected _panelAttached(): void {\n this._overlayDir()?.positionChange.pipe(first()).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n\n public toggle(): void {\n this.isPanelOpen() ? this.close() : this.open();\n }\n\n public open(): void {\n if (!this._canOpen()) {\n return;\n }\n\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField?.getConnectedOverlayOrigin();\n }\n\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this.isPanelOpen.set(true);\n this._keyManager?.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.isPanelOpen()) {\n this.isPanelOpen.set(false);\n this._keyManager?.withHorizontalOrientation('ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n // #region ControlValueAccessor implementation\n public writeValue(value: unknown | unknown[]): void {\n this._setSelectionByValue(value);\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 this._changeDetectorRef.markForCheck();\n }\n // #endregion\n\n private _setSelectionByValue(value: unknown | unknown[]): void {\n this.options().forEach((option) => option.setInactiveStyles());\n this._selectionModel?.clear();\n this._rawValue = value;\n\n if (this.options().length === 0) {\n return;\n }\n\n if (this.multiSelect() && value) {\n if (!Array.isArray(value)) {\n throw this._createHostError('value must be an array in multiple-selection mode');\n }\n\n value.forEach((currentValue: unknown) => this._selectValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectValue(value);\n if (correspondingOption) {\n this._keyManager?.updateActiveItem(correspondingOption);\n } else if (!this.isPanelOpen()) {\n this._keyManager?.updateActiveItem(-1);\n }\n }\n }\n\n private _selectValue(value: unknown): IdsOptionComponent | undefined {\n const correspondingOption = this.options().find((option) => {\n if (this._selectionModel?.isSelected(option)) {\n return false;\n }\n\n try {\n const valueCompareFn = this.valueCompareFn();\n return option.value() != null && valueCompareFn && valueCompareFn(option.value(), value);\n } catch (error) {\n if (isDevMode()) {\n console.warn(error);\n }\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.selected.set(true);\n this._selectionModel?.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n private _clearSelection(): void {\n this._selectionModel?.clear();\n this.options().forEach((option) => {\n option.selected.set(false);\n });\n }\n\n private _handleChange(): void {\n const selectionModelValues = this._selectionModel?.selected?.map((item) => item.value());\n if (this.multiSelect()) {\n this._onChange(selectionModelValues);\n } else {\n this._onChange(selectionModelValues?.[0]);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _skipPredicate = (option: IdsOptionComponent): boolean => {\n if (this.isPanelOpen()) {\n return false;\n }\n\n return option.disabledInput();\n };\n\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this._empty) {\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options().length; index++) {\n const option = this.options()[index]!;\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n if (this._selectionModel) {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n }\n\n public isOptionPreSelectedByValue(optionValue: unknown): boolean {\n if (this._rawValue === undefined) {\n return false;\n }\n\n if (this.multiSelect() && Array.isArray(this._rawValue)) {\n return this._rawValue.some((value) => optionValue != null && value === optionValue);\n }\n return optionValue === this._rawValue;\n }\n\n public setDescribedByIds(ids: string[]): void {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n\n private _onFocus(): void {\n if (!this.disabled()) {\n this._focused.set(true);\n }\n }\n\n private _onBlur(): void {\n this._focused.set(false);\n this._keyManager?.cancelTypeahead();\n\n if (!this.disabled() && !this.isPanelOpen()) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _getAriaActiveDescendant(): string | null {\n if (this.isPanelOpen() && this._keyManager?.activeItem) {\n return this._keyManager.activeItem.id();\n }\n\n return null;\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n public onContainerClick = (): void => {\n if (!this._focused && !this.readonly() && !this.disabled()) {\n this.focus();\n this.open();\n }\n };\n}\n","<div #trigger #fallbackOverlayOrigin=\"cdkOverlayOrigin\" cdk-overlay-origin class=\"ids-select__trigger\" (click)=\"open()\">\n <div class=\"ids-select__value\">\n @if (_empty) {\n <span class=\"ids-select__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"ids-select__value-text\">\n @if (_customTrigger()) {\n <ng-content select=\"ids-select-trigger\" />\n } @else {\n {{ _triggerValue }}\n }\n </span>\n }\n </div>\n\n <div class=\"ids-select__arrow\">\n <ids-icon fontIcon=\"chevron-down\" />\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isPanelOpen()\"\n [cdkConnectedOverlayPositions]=\"_connectedPositions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayPush]=\"true\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"_panelAttached()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id() + '-panel'\"\n [attr.aria-multiselectable]=\"multiSelect()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [class]=\"_panelClasses()\"\n (keydown)=\"_handleKeydown($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\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-select.mjs","sources":["../../../projects/widgets/select/select-defaults.ts","../../../projects/widgets/select/select-trigger.directive.ts","../../../projects/widgets/select/select-positions.ts","../../../projects/widgets/select/select.component.ts","../../../projects/widgets/select/select.component.html","../../../projects/widgets/select/i-cell-ids-angular-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractErrorStateMatcher, AbstractSuccessStateMatcher, ErrorStateMatcher, SuccessStateMatcher } from '@i-cell/ids-angular/forms';\n\nexport interface IdsSelectDefaultConfig {\n errorStateMatcher?: typeof AbstractErrorStateMatcher\n successStateMatcher?: typeof AbstractSuccessStateMatcher\n typeaheadDebounceInterval: number\n}\n\nexport const IDS_SELECT_DEFAULT_CONFIG = new InjectionToken<IdsSelectDefaultConfig>(\n 'IDS_SELECT_DEFAULT_CONFIG',\n {\n providedIn: 'root',\n factory: IDS_SELECT_DEFAULT_CONFIG_FACTORY,\n },\n);\n\nexport function IDS_SELECT_DEFAULT_CONFIG_FACTORY(): Required<IdsSelectDefaultConfig> {\n return {\n errorStateMatcher: ErrorStateMatcher,\n successStateMatcher: SuccessStateMatcher,\n typeaheadDebounceInterval: 200,\n };\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ids-select-trigger',\n standalone: true,\n})\nexport class IdsSelectTriggerDirective {\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const selectConnectedPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'ids-select-panel-above',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'ids-select-panel-above',\n },\n];\n","import { IDS_SELECT_DEFAULT_CONFIG, IDS_SELECT_DEFAULT_CONFIG_FACTORY, IdsSelectDefaultConfig } from './select-defaults';\nimport { selectConnectedPositions } from './select-positions';\nimport { IdsSelectTriggerDirective } from './select-trigger.directive';\n\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, contentChild, contentChildren, effect, ElementRef, forwardRef, inject, input, isDevMode, OnDestroy, OnInit, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ValueChangeEvent } from '@angular/forms';\nimport { coerceNumberAttribute, createClassList } from '@i-cell/ids-angular/core';\nimport { _countGroupLabelsBeforeOption, _getOptionScrollPosition, AbstractErrorStateMatcher, AbstractSuccessStateMatcher, formFieldControlClass, IDS_FORM_FIELD_CONTROL, IDS_OPTION_GROUP, IDS_OPTION_PARENT_COMPONENT, IdsFormFieldComponent, IdsFormFieldControl, IdsOptionComponent, IdsOptionGroupComponent, IdsOptionSelectionChange } from '@i-cell/ids-angular/forms';\nimport { IdsIconComponent } from '@i-cell/ids-angular/icon';\nimport { filter, first } from 'rxjs';\n\nconst defaultConfig = IDS_SELECT_DEFAULT_CONFIG_FACTORY();\n\n@Component({\n selector: `ids-select[ngModel]:not([formControl]):not([formControlName]),\n ids-select[formControl]:not([ngModel]):not([formControlName]),\n ids-select[formControlName]:not([ngModel]):not([formControl])`,\n imports: [\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n IdsIconComponent,\n ],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: IDS_FORM_FIELD_CONTROL, useExisting: IdsSelectComponent },\n { provide: IDS_OPTION_PARENT_COMPONENT, useExisting: IdsSelectComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdsSelectComponent),\n multi: true,\n },\n ],\n host: {\n 'role': 'select',\n 'aria-autocomplete': 'none',\n 'aria-haspopup': 'listbox',\n '[attr.tabindex]': 'disabled() ? -1 : tabIndex()',\n '[attr.aria-controls]': 'isPanelOpen() ? id() + \"-panel\" : null',\n '[attr.aria-owns]': 'isPanelOpen() ? id() + \"-panel\" : null',\n '[attr.aria-expanded]': 'isPanelOpen()',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-labelledby]': 'ariaLabelledby() || null',\n '[attr.aria-required]': 'required().toString()',\n '[attr.aria-disabled]': 'disabled().toString()',\n '[attr.aria-invalid]': 'hasErrorState()',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_onBlur()',\n },\n})\nexport class IdsSelectComponent\n extends IdsFormFieldControl<IdsSelectDefaultConfig>\n implements ControlValueAccessor, OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n protected override get _hostName(): string {\n return 'select';\n }\n\n protected readonly _defaultConfig = this._getDefaultConfig(defaultConfig, IDS_SELECT_DEFAULT_CONFIG);\n protected readonly _elementRef = inject(ElementRef);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n private readonly _parentFormField = inject(IdsFormFieldComponent);\n\n protected readonly _connectedPositions = selectConnectedPositions;\n\n protected _preferredOverlayOrigin: CdkOverlayOrigin | ElementRef | undefined;\n protected _overlayWidth: string | number = 0;\n\n public multiSelect = input<boolean>(false);\n public readonly errorStateMatcher = input<AbstractErrorStateMatcher>(inject(this._defaultConfig.errorStateMatcher));\n public readonly successStateMatcher = input<AbstractSuccessStateMatcher>(inject(this._defaultConfig.successStateMatcher));\n public ariaLabel = input<string>('', { alias: 'aria-label' });\n public ariaLabelledby = input<string>('', { alias: 'aria-labelledby' });\n public valueCompareFn = input<(o1: unknown, o2: unknown) => boolean>((o1: unknown, o2: unknown) => o1 === o2);\n public sortCompareFn = input<(a: IdsOptionComponent, b: IdsOptionComponent, options: Readonly<IdsOptionComponent[]>) => number>();\n public tabIndex = input<number, unknown>(0, { transform: coerceNumberAttribute });\n public typeaheadDebounceInterval = input<number, unknown>(\n this._defaultConfig.typeaheadDebounceInterval, { transform: coerceNumberAttribute },\n );\n\n public isPanelOpen = signal<boolean>(false);\n public parentSize = computed(() => this._parentFormField.parentOrSelfSize());\n public parentVariant = computed(() => this._parentFormField.parentOrSelfVariant());\n private _focused = signal<boolean>(false);\n\n private _canOpen = computed(() => !this.isPanelOpen() && !this.disabled() && !this.readonly() && this.options().length > 0);\n protected _hostClasses = computed(() => this._getHostClasses([\n this.parentSize(),\n this.parentVariant(),\n this.disabled() ? 'disabled' : null,\n this.readonly() ? 'readonly' : null,\n ], [formFieldControlClass]));\n\n protected _panelClasses = computed(() => createClassList(`${this._hostClassName}-panel`, [\n this.parentSize(),\n this.parentVariant(),\n ]));\n\n private _panel = viewChild<ElementRef<HTMLElement>>('panel');\n private _overlayDir = viewChild(CdkConnectedOverlay);\n public options = contentChildren<IdsOptionComponent>(IdsOptionComponent, { descendants: true });\n public optionGroups = contentChildren<IdsOptionGroupComponent>(IDS_OPTION_GROUP, { descendants: true });\n protected _customTrigger = contentChild(IdsSelectTriggerDirective);\n\n private _keyManager?: ActiveDescendantKeyManager<IdsOptionComponent>;\n private _rawValue: unknown | unknown[];\n private _selectionModel?: SelectionModel<IdsOptionComponent>;\n private _onChange: (value: unknown) => void = () => {};\n private _onTouched: () => unknown = () => { };\n\n protected get _empty(): boolean {\n return Boolean(this._selectionModel?.isEmpty());\n }\n\n public get selected(): IdsOptionComponent | IdsOptionComponent[] | undefined {\n return this.multiSelect() ? this._selectionModel?.selected : this._selectionModel?.selected?.[0];\n }\n\n protected get _triggerValue(): string {\n if (this._empty) {\n return '';\n }\n\n if (this.multiSelect()) {\n const selectedOptions = this._selectionModel?.selected?.map((option) => option.viewValue());\n return selectedOptions?.join(', ') || '';\n }\n\n return this._selectionModel?.selected?.[0].viewValue() || '';\n }\n\n constructor() {\n super();\n effect(() => {\n this._keyManager?.withTypeAhead(this.typeaheadDebounceInterval());\n });\n }\n\n public override ngOnInit(): void {\n super.ngOnInit();\n\n if (!this._parentFormField) {\n throw this._createHostError('Select must be in a form field');\n }\n this._selectionModel = new SelectionModel<IdsOptionComponent>(this.multiSelect(), undefined, false, this.valueCompareFn());\n queueMicrotask(() => {\n const control = this.ngControl()?.control;\n if (control) {\n control.events\n .pipe(\n filter((event) => event instanceof ValueChangeEvent),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n this._initErrorStateTracker();\n }\n\n public ngAfterContentInit(): void {\n this._initKeyManager();\n this._selectionModel?.select(...this.options().filter((item) => item.selected()));\n this._subscribeOptionChanges();\n }\n\n public ngAfterViewInit(): void {\n const controlDir = this.ngControl();\n if (controlDir?.control) {\n controlDir.control.events.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.updateErrorAndSuccessState());\n }\n }\n\n public updateErrorAndSuccessState(): void {\n this._errorStateTracker?.updateErrorState();\n this._successStateTracker?.updateSuccessState();\n }\n\n public ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n private _initKeyManager(): void {\n this._keyManager = new ActiveDescendantKeyManager<IdsOptionComponent>(this.options())\n .withTypeAhead(this.typeaheadDebounceInterval())\n .withVerticalOrientation()\n .withHorizontalOrientation('ltr')\n .withHomeAndEnd()\n .withPageUpDown()\n .withAllowedModifierKeys(['shiftKey'])\n .skipPredicate(this._skipPredicate);\n\n this._keyManager.tabOut.subscribe(() => {\n if (this.isPanelOpen()) {\n if (!this.multiSelect() && this._keyManager?.activeItem) {\n this._keyManager.activeItem.selectViaInteraction();\n }\n this.focus();\n this.close();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n if (this.isPanelOpen() && this._panel()) {\n this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);\n }\n });\n }\n\n private _subscribeOptionChanges(): void {\n this.options().forEach((option) => {\n option.onSelectionChange.subscribe(\n (change) => {\n this._handleOptionChange(change);\n },\n );\n });\n }\n\n private _handleOptionChange(change: IdsOptionSelectionChange): void {\n const { source, selected, isUserInput } = change;\n if (!this.multiSelect()) {\n this._clearSelection();\n }\n source.selected.set(selected);\n\n if (isUserInput) {\n this._keyManager?.setActiveItem(source);\n }\n\n if (isUserInput && !this.multiSelect() && this.isPanelOpen()) {\n this.close();\n this.focus();\n }\n\n if (this.multiSelect()) {\n this._sortValues();\n\n if (isUserInput) {\n this.focus();\n }\n }\n\n if (selected) {\n this._selectionModel?.select(source);\n } else {\n this._selectionModel?.deselect(source);\n }\n this._handleChange();\n this._onTouched();\n }\n\n protected _handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled() && !this.readonly()) {\n this.isPanelOpen() ? this._handleOpenedPanelKeydown(event) : this._handleClosedPanelKeydown(event);\n }\n }\n\n private _handleClosedPanelKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey =\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight';\n const isOpenKey = key === 'Enter' || key === ' ';\n\n if ((!manager?.isTyping() && isOpenKey && !hasModifierKey(event)) || isArrowKey) {\n event.preventDefault();\n this.open();\n } else if (!this.multiSelect()) {\n const previouslySelectedOption = this.selected;\n manager?.onKeydown(event);\n const selectedOption = this.selected as IdsOptionComponent;\n\n if (selectedOption?.viewValue() && previouslySelectedOption !== selectedOption) {\n // eslint-disable-next-line no-magic-numbers\n this._liveAnnouncer.announce(selectedOption.viewValue(), 10000);\n }\n }\n }\n\n private _handleOpenedPanelKeydown(event: KeyboardEvent): void {\n const manager = this._keyManager;\n const key = event.key;\n const isArrowKey = key === 'ArrowDown' || key === 'ArrowUp';\n const isTyping = manager?.isTyping();\n\n if (isArrowKey && event.altKey) {\n event.preventDefault();\n this.close();\n } else if (\n !isTyping &&\n (key === 'Enter' || key === ' ') &&\n manager?.activeItem &&\n !hasModifierKey(event)\n ) {\n event.preventDefault();\n manager.activeItem.selectViaInteraction();\n } else if (!isTyping && this.multiSelect() && key === 'a' && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options().some((opt) => !opt.disabled && !opt.selected());\n\n this.options().forEach((option) => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager?.activeItemIndex;\n\n manager?.onKeydown(event);\n\n if (\n this.multiSelect() &&\n isArrowKey &&\n event.shiftKey &&\n manager?.activeItem &&\n manager?.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager?.activeItem.selectViaInteraction();\n }\n }\n }\n\n private _positioningSettled(): void {\n this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);\n }\n\n private _scrollOptionIntoView(index: number): void {\n const option = this.options()[index];\n\n if (option) {\n const panel: HTMLElement | undefined = this._panel()!.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options(), this.optionGroups());\n const element = option.getHostElement();\n\n if (index === 0 && labelCount === 1) {\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n panel.scrollTop,\n panel.offsetHeight,\n );\n }\n }\n }\n\n private _sortValues(): void {\n if (this.multiSelect()) {\n const options = this.options();\n\n const sortComparator = this.sortCompareFn();\n this._selectionModel?.sort((a, b) => (sortComparator\n ? sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b)));\n }\n }\n\n private _getOverlayWidth(\n preferredOrigin: ElementRef<ElementRef> | CdkOverlayOrigin | undefined,\n ): string | number {\n const refToMeasure\n = preferredOrigin instanceof CdkOverlayOrigin\n ? preferredOrigin.elementRef\n : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n\n protected _panelAttached(): void {\n this._overlayDir()?.positionChange.pipe(first()).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n\n public toggle(): void {\n this.isPanelOpen() ? this.close() : this.open();\n }\n\n public open(): void {\n if (!this._canOpen()) {\n return;\n }\n\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField?.getConnectedOverlayOrigin();\n }\n\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this.isPanelOpen.set(true);\n this._keyManager?.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.isPanelOpen()) {\n this.isPanelOpen.set(false);\n this._keyManager?.withHorizontalOrientation('ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n // #region ControlValueAccessor implementation\n public writeValue(value: unknown | unknown[]): void {\n this._setSelectionByValue(value);\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 this._changeDetectorRef.markForCheck();\n }\n // #endregion\n\n private _setSelectionByValue(value: unknown | unknown[]): void {\n this.options().forEach((option) => option.setInactiveStyles());\n this._selectionModel?.clear();\n this._rawValue = value;\n\n if (this.options().length === 0) {\n return;\n }\n\n if (this.multiSelect() && value) {\n if (!Array.isArray(value)) {\n throw this._createHostError('value must be an array in multiple-selection mode');\n }\n\n value.forEach((currentValue: unknown) => this._selectValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectValue(value);\n if (correspondingOption) {\n this._keyManager?.updateActiveItem(correspondingOption);\n } else if (!this.isPanelOpen()) {\n this._keyManager?.updateActiveItem(-1);\n }\n }\n }\n\n private _selectValue(value: unknown): IdsOptionComponent | undefined {\n const correspondingOption = this.options().find((option) => {\n if (this._selectionModel?.isSelected(option)) {\n return false;\n }\n\n try {\n const valueCompareFn = this.valueCompareFn();\n return option.value() != null && valueCompareFn && valueCompareFn(option.value(), value);\n } catch (error) {\n if (isDevMode()) {\n console.warn(error);\n }\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.selected.set(true);\n this._selectionModel?.select(correspondingOption);\n }\n\n return correspondingOption;\n }\n\n private _clearSelection(): void {\n this._selectionModel?.clear();\n this.options().forEach((option) => {\n option.selected.set(false);\n });\n }\n\n private _handleChange(): void {\n const selectionModelValues = this._selectionModel?.selected?.map((item) => item.value());\n if (this.multiSelect()) {\n this._onChange(selectionModelValues);\n } else {\n this._onChange(selectionModelValues?.[0]);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _skipPredicate = (option: IdsOptionComponent): boolean => {\n if (this.isPanelOpen()) {\n return false;\n }\n\n return option.disabledInput();\n };\n\n private _highlightCorrectOption(): void {\n if (this._keyManager) {\n if (this._empty) {\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options().length; index++) {\n const option = this.options()[index]!;\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n if (this._selectionModel) {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n }\n\n public isOptionPreSelectedByValue(optionValue: unknown): boolean {\n if (this._rawValue === undefined) {\n return false;\n }\n\n if (this.multiSelect() && Array.isArray(this._rawValue)) {\n return this._rawValue.some((value) => optionValue != null && value === optionValue);\n }\n return optionValue === this._rawValue;\n }\n\n private _onFocus(): void {\n if (!this.disabled()) {\n this._focused.set(true);\n }\n }\n\n private _onBlur(): void {\n this._focused.set(false);\n this._keyManager?.cancelTypeahead();\n\n if (!this.disabled() && !this.isPanelOpen()) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _getAriaActiveDescendant(): string | null {\n if (this.isPanelOpen() && this._keyManager?.activeItem) {\n return this._keyManager.activeItem.id();\n }\n\n return null;\n }\n\n public focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n public onContainerClick = (): void => {\n if (!this._focused && !this.readonly() && !this.disabled()) {\n this.focus();\n this.open();\n }\n };\n}\n","<div #trigger #fallbackOverlayOrigin=\"cdkOverlayOrigin\" cdk-overlay-origin class=\"ids-select__trigger\" (click)=\"open()\">\n <div class=\"ids-select__value\">\n @if (_empty) {\n <span class=\"ids-select__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"ids-select__value-text\">\n @if (_customTrigger()) {\n <ng-content select=\"ids-select-trigger\" />\n } @else {\n {{ _triggerValue }}\n }\n </span>\n }\n </div>\n\n <div class=\"ids-select__arrow\">\n <ids-icon fontIcon=\"chevron-down\" />\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isPanelOpen()\"\n [cdkConnectedOverlayPositions]=\"_connectedPositions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayPush]=\"true\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"_panelAttached()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id() + '-panel'\"\n [attr.aria-multiselectable]=\"multiSelect()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [class]=\"_panelClasses()\"\n (keydown)=\"_handleKeydown($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,21 +1,45 @@
1
- import { Signal } from '@angular/core';
2
- import { NgControl } from '@angular/forms';
3
- import { Observable } from 'rxjs';
1
+ import { AbstractErrorStateMatcher, ErrorStateTracker } from '../../common/error/error-state';
2
+ import { AbstractSuccessStateMatcher, SuccessStateTracker } from '../../common/success/success-state';
3
+ import { ElementRef, Injector, OnInit, Signal } from '@angular/core';
4
+ import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
5
+ import { ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';
6
+ import { Subject } from 'rxjs';
7
+ import * as i0 from "@angular/core";
4
8
  export declare const formFieldControlClass = "ids-form-field-control";
5
- export declare abstract class IdsFormFieldControl {
6
- readonly errorStateChanges: Observable<void>;
7
- readonly successStateChanges: Observable<void>;
8
- readonly id: Signal<string>;
9
- readonly placeholder: Signal<string>;
10
- readonly ngControl: Signal<NgControl | null>;
9
+ export declare abstract class IdsFormFieldControl<D = unknown> extends ComponentBaseWithDefaults<D> implements OnInit {
10
+ protected readonly _injector: Injector;
11
+ protected readonly _parentForm: NgForm | null;
12
+ protected readonly _parentFormGroup: FormGroupDirective | null;
13
+ readonly ngControl: import("@angular/core").WritableSignal<NgControl | null>;
14
+ readonly errorStateChanges: Subject<void>;
15
+ readonly successStateChanges: Subject<void>;
16
+ readonly canHandleSuccessState: import("@angular/core").InputSignal<boolean>;
17
+ readonly hasErrorState: import("@angular/core").WritableSignal<boolean>;
18
+ readonly hasSuccessState: import("@angular/core").WritableSignal<boolean>;
19
+ protected abstract readonly _elementRef: ElementRef;
20
+ abstract readonly errorStateMatcher: Signal<AbstractErrorStateMatcher>;
21
+ abstract readonly successStateMatcher: Signal<AbstractSuccessStateMatcher>;
22
+ private _canHandleSuccessStateEffect;
23
+ /** Handles the `disabled` input binding */
24
+ readonly disabledInput: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
25
+ /** Stores the `disabled` state internally */
26
+ protected readonly _disabled: import("@angular/core").WritableSignal<boolean>;
27
+ /** The input's `disabled` state as a read-only signal (to enable/disable the contol programmatically, use the FormControl's related API) */
11
28
  readonly disabled: Signal<boolean>;
12
- readonly required: Signal<boolean>;
13
- readonly hasErrorState: Signal<boolean>;
14
- readonly hasSuccessState: Signal<boolean>;
15
- readonly controlType?: Signal<string>;
16
- readonly autofilled?: Signal<boolean>;
17
- readonly userAriaDescribedBy?: Signal<string>;
18
- readonly disableAutomaticLabeling?: Signal<boolean>;
19
- abstract setDescribedByIds(ids: string[]): void;
29
+ readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
30
+ /** This effect is triggered if the `disabled` attribute binding changes and delegates the change to the underlying FormControl */
31
+ private _disabledInputEffect;
32
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
33
+ readonly placeholder: import("@angular/core").InputSignal<string>;
20
34
  abstract onContainerClick(event: MouseEvent): void;
35
+ protected _errorStateTracker?: ErrorStateTracker;
36
+ protected _successStateTracker?: SuccessStateTracker;
37
+ private _successStateSubscription?;
38
+ constructor();
39
+ ngOnInit(): void;
40
+ setDescribedByIds(ids: string[]): void;
41
+ protected _initErrorStateTracker(): void;
42
+ protected _setSuccessStateTracker(canHandleSuccessState: boolean): void;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdsFormFieldControl<any>, never>;
44
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IdsFormFieldControl<any>, never, never, { "canHandleSuccessState": { "alias": "canHandleSuccessState"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
45
  }
@@ -27,8 +27,9 @@ export declare class IdsFormFieldComponent extends ComponentBaseWithDefaults<Ids
27
27
  parentOrSelfSize: import("@angular/core").Signal<IdsSizeType>;
28
28
  parentOrSelfVariant: import("@angular/core").Signal<IdsFormFieldVariantType>;
29
29
  controlDir: import("@angular/core").Signal<import("@angular/forms").NgControl | null>;
30
- private _hasErrorState;
31
30
  disabled: import("@angular/core").Signal<boolean>;
31
+ readonly: import("@angular/core").Signal<boolean>;
32
+ private _hasErrorState;
32
33
  private _hasSuccessState;
33
34
  protected _hostClasses: import("@angular/core").Signal<string>;
34
35
  protected _displayedMessages: import("@angular/core").Signal<"error" | "success" | "hint" | undefined>;
@@ -1,3 +1,3 @@
1
1
  import { IdsFormFieldControl } from '../form-field-control';
2
2
  import { InjectionToken } from '@angular/core';
3
- export declare const IDS_FORM_FIELD_CONTROL: InjectionToken<IdsFormFieldControl>;
3
+ export declare const IDS_FORM_FIELD_CONTROL: InjectionToken<IdsFormFieldControl<unknown>>;
@@ -3,50 +3,21 @@ import { IdsInputType } from './types/input.type';
3
3
  import { AbstractErrorStateMatcher } from '../../common/error/error-state';
4
4
  import { AbstractSuccessStateMatcher } from '../../common/success/success-state';
5
5
  import { IdsFormFieldControl } from '../form-field/form-field-control';
6
- import { AfterViewInit, OnInit } from '@angular/core';
7
- import { ControlEvent, NgControl } from '@angular/forms';
8
- import { ComponentBaseWithDefaults } from '@i-cell/ids-angular/core';
9
- import { Subject } from 'rxjs';
6
+ import { AfterViewInit, ElementRef, OnInit } from '@angular/core';
7
+ import { ControlEvent } from '@angular/forms';
10
8
  import * as i0 from "@angular/core";
11
- export declare class IdsInputDirective extends ComponentBaseWithDefaults<IdsInputDefaultConfig> implements IdsFormFieldControl, OnInit, AfterViewInit {
9
+ export declare class IdsInputDirective extends IdsFormFieldControl<IdsInputDefaultConfig> implements OnInit, AfterViewInit {
12
10
  protected get _hostName(): string;
13
- private readonly _elementRef;
14
- private readonly _parentFormGroup;
15
- private readonly _parentForm;
11
+ protected readonly _elementRef: ElementRef<HTMLInputElement> | ElementRef<HTMLTextAreaElement>;
16
12
  protected readonly _defaultConfig: Required<IdsInputDefaultConfig>;
17
- readonly errorStateChanges: Subject<void>;
18
- readonly successStateChanges: Subject<void>;
19
- readonly ngControl: import("@angular/core").WritableSignal<NgControl>;
20
13
  private _focused;
21
- private _errorStateTracker?;
22
- private _successStateTracker?;
23
- private _successStateSubscription?;
24
- placeholder: import("@angular/core").InputSignal<string>;
25
14
  name: import("@angular/core").InputSignal<string | undefined>;
26
15
  type: import("@angular/core").InputSignal<IdsInputType>;
27
- required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
28
- readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
29
- canHandleSuccessState: import("@angular/core").InputSignal<boolean>;
30
- errorStateMatcher: import("@angular/core").InputSignal<AbstractErrorStateMatcher>;
31
- successStateMatcher: import("@angular/core").InputSignal<AbstractSuccessStateMatcher>;
32
- /** Handles the `disabled` input binding */
33
- disabledInput: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
34
- /** Stores the `disabled` state internally */
35
- private _disabled;
36
- /** The input's `disabled` state as a read-only signal (to enable/disable the contol programmatically, use the FormControl's related API) */
37
- disabled: import("@angular/core").Signal<boolean>;
38
- /** This effect is triggered if the `disabled` attribute binding changes and delegates the change to the underlying FormControl */
39
- private _disabledInputEffect;
16
+ readonly errorStateMatcher: import("@angular/core").InputSignal<AbstractErrorStateMatcher>;
17
+ readonly successStateMatcher: import("@angular/core").InputSignal<AbstractSuccessStateMatcher>;
40
18
  protected _hostClasses: import("@angular/core").Signal<string>;
41
- hasErrorState: import("@angular/core").WritableSignal<boolean>;
42
- hasSuccessState: import("@angular/core").WritableSignal<boolean>;
43
19
  private _validateTypeEffect;
44
- private _canHandleSuccessStateEffect;
45
- setDescribedByIds(ids: string[]): void;
46
- ngOnInit(): void;
47
20
  ngAfterViewInit(): void;
48
- protected _initErrorStateTracker(): void;
49
- protected _setSuccessStateTracker(canHandleSuccessState: boolean): void;
50
21
  private _validateType;
51
22
  focus(options?: FocusOptions): void;
52
23
  private _focusChanged;
@@ -56,5 +27,5 @@ export declare class IdsInputDirective extends ComponentBaseWithDefaults<IdsInpu
56
27
  */
57
28
  onContainerClick: () => void;
58
29
  static ɵfac: i0.ɵɵFactoryDeclaration<IdsInputDirective, never>;
59
- static ɵdir: i0.ɵɵDirectiveDeclaration<IdsInputDirective, "input[idsInput][ngModel]:not([formControl]):not([formControlName]), input[idsInput][formControl]:not([ngModel]):not([formControlName]), input[idsInput][formControlName]:not([ngModel]):not([formControl]), textarea[idsInput][ngModel]:not([formControl]):not([formControlName]), textarea[idsInput][formControl]:not([ngModel]):not([formControlName]), textarea[idsInput][formControlName]:not([ngModel]):not([formControl])", ["idsInput"], { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "canHandleSuccessState": { "alias": "canHandleSuccessState"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "successStateMatcher": { "alias": "successStateMatcher"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IdsInputDirective, "input[idsInput][ngModel]:not([formControl]):not([formControlName]), input[idsInput][formControl]:not([ngModel]):not([formControlName]), input[idsInput][formControlName]:not([ngModel]):not([formControl]), textarea[idsInput][ngModel]:not([formControl]):not([formControlName]), textarea[idsInput][formControl]:not([ngModel]):not([formControlName]), textarea[idsInput][formControlName]:not([ngModel]):not([formControl])", ["idsInput"], { "name": { "alias": "name"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "successStateMatcher": { "alias": "successStateMatcher"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
60
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@i-cell/ids-angular",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "private": false,
5
5
  "description": "i-Cell Design System UI Kit components for Angular",
6
6
  "publishConfig": {
@@ -31,7 +31,7 @@
31
31
  "@angular/forms": "^19.1.2",
32
32
  "@angular/platform-browser": "^19.1.2",
33
33
  "@angular/router": "^19.1.2",
34
- "@i-cell/ids-styles": "0.0.34"
34
+ "@i-cell/ids-styles": "^0.0.38"
35
35
  },
36
36
  "dependencies": {
37
37
  "tslib": "^2.3.0"
@@ -75,6 +75,10 @@
75
75
  "types": "./checkbox/index.d.ts",
76
76
  "default": "./fesm2022/i-cell-ids-angular-checkbox.mjs"
77
77
  },
78
+ "./datepicker": {
79
+ "types": "./datepicker/index.d.ts",
80
+ "default": "./fesm2022/i-cell-ids-angular-datepicker.mjs"
81
+ },
78
82
  "./dialog": {
79
83
  "types": "./dialog/index.d.ts",
80
84
  "default": "./fesm2022/i-cell-ids-angular-dialog.mjs"