@ardium-ui/ui 5.0.0-alpha.24 → 5.0.0-alpha.26

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 (48) hide show
  1. package/fesm2022/ardium-ui-ui.mjs +410 -401
  2. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  3. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +13 -14
  4. package/lib/_internal/item-storages/simple-item-storage.d.ts +15 -12
  5. package/lib/_internal/item-storages/simplest-item-storage.d.ts +1 -1
  6. package/lib/_internal/selectable-list-component.d.ts +2 -3
  7. package/lib/checkbox-list/checkbox-list.component.d.ts +2 -3
  8. package/lib/inputs/autocomplete-input/autocomplete-input.component.d.ts +2 -2
  9. package/lib/select/select.component.d.ts +8 -8
  10. package/lib/select/select.directive.d.ts +6 -0
  11. package/lib/select/select.module.d.ts +1 -1
  12. package/lib/select/select.types.d.ts +4 -2
  13. package/lib/types/item-storage.types.d.ts +15 -17
  14. package/package.json +1 -1
  15. package/prebuilt-themes/default/buttons/button.css.map +1 -1
  16. package/prebuilt-themes/default/buttons/fab.css.map +1 -1
  17. package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
  18. package/prebuilt-themes/default/calendar.css.map +1 -1
  19. package/prebuilt-themes/default/card.css.map +1 -1
  20. package/prebuilt-themes/default/chips.css.map +1 -1
  21. package/prebuilt-themes/default/core.css +1 -0
  22. package/prebuilt-themes/default/core.css.map +1 -1
  23. package/prebuilt-themes/default/dropdown-panel.css.map +1 -1
  24. package/prebuilt-themes/default/form-field-frame.css.map +1 -1
  25. package/prebuilt-themes/default/form-field.css.map +1 -1
  26. package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -1
  27. package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
  28. package/prebuilt-themes/default/inputs/digit-input.css.map +1 -1
  29. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  30. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
  31. package/prebuilt-themes/default/inputs/input.css.map +1 -1
  32. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
  33. package/prebuilt-themes/default/modal.css.map +1 -1
  34. package/prebuilt-themes/default/progress-circle.css.map +1 -1
  35. package/prebuilt-themes/default/segment.css +70 -57
  36. package/prebuilt-themes/default/segment.css.map +1 -1
  37. package/prebuilt-themes/default/select.css +11 -4
  38. package/prebuilt-themes/default/select.css.map +1 -1
  39. package/prebuilt-themes/default/slide-toggle.css.map +1 -1
  40. package/prebuilt-themes/default/slider.css +88 -49
  41. package/prebuilt-themes/default/slider.css.map +1 -1
  42. package/prebuilt-themes/default/stars.css.map +1 -1
  43. package/prebuilt-themes/default/table.css.map +1 -1
  44. package/themes/_variables.scss +1 -0
  45. package/themes/default/core.scss +1 -0
  46. package/themes/default/segment.scss +75 -67
  47. package/themes/default/select.scss +14 -4
  48. package/themes/default/slider.scss +88 -53
@@ -2,10 +2,10 @@ import 'first-last';
2
2
  import { Overlay, ScrollStrategyOptions, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
3
3
  import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
4
4
  import * as i0 from '@angular/core';
5
- import { signal, computed, InjectionToken, input, Directive, Input, HostBinding, output, ViewChildren, inject, Injector, runInInjectionContext, viewChild, contentChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewContainerRef, TemplateRef, forwardRef, HostListener, NgModule, effect, viewChildren, Pipe, model, ElementRef, ChangeDetectorRef, ContentChildren, ViewChild, linkedSignal, contentChildren, Renderer2, Injectable } from '@angular/core';
5
+ import { signal, computed, InjectionToken, input, Directive, Input, HostBinding, output, ViewChildren, inject, Injector, runInInjectionContext, viewChild, contentChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewContainerRef, TemplateRef, forwardRef, HostListener, NgModule, effect, viewChildren, Pipe, model, ElementRef, ChangeDetectorRef, ContentChildren, linkedSignal, contentChildren, Renderer2, Injectable } from '@angular/core';
6
6
  import { NgControl, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import * as i5 from '@ardium-ui/devkit';
8
- import { coerceBooleanProperty, coerceNumberProperty, coerceArrayProperty, ArdiumClickOutsideModule, ArdiumEscapeHTMLModule, FileSystemService, FileSystemMethod, ArdiumFilePipesModule, coerceDateProperty, ArdiumHoldModule } from '@ardium-ui/devkit';
8
+ import { arraySignal, coerceBooleanProperty, coerceNumberProperty, coerceArrayProperty, ArdiumClickOutsideModule, ArdiumEscapeHTMLModule, FileSystemService, FileSystemMethod, ArdiumFilePipesModule, coerceDateProperty, ArdiumHoldModule } from '@ardium-ui/devkit';
9
9
  import { isDefined, any, isPrimitive, isAnyString, isNull, isNumber, isString, isArray, isFunction, isRegExp, evaluate, isObject, isPromise } from 'simple-bool';
10
10
  import { resolvePath } from 'resolve-object-path';
11
11
  import { toObservable } from '@angular/core/rxjs-interop';
@@ -22,7 +22,7 @@ import { A11yModule } from '@angular/cdk/a11y';
22
22
  class SimplestItemStorage {
23
23
  constructor(_ardParentComp) {
24
24
  this._ardParentComp = _ardParentComp;
25
- this._items = signal([]);
25
+ this._items = arraySignal([]);
26
26
  this._highlightedItem = signal(null);
27
27
  /**
28
28
  * Gets all items.
@@ -58,12 +58,12 @@ class SimplestItemStorage {
58
58
  _setItemsMapFn(rawItemData, index, areItemsPrimitive) {
59
59
  if (areItemsPrimitive) {
60
60
  return {
61
- itemData: signal(rawItemData),
61
+ itemData: rawItemData,
62
62
  index: index,
63
- value: signal(rawItemData.value),
64
- label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),
65
- selected: signal(false),
66
- highlighted: signal(false),
63
+ value: rawItemData.value,
64
+ label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
65
+ selected: false,
66
+ highlighted: false,
67
67
  };
68
68
  }
69
69
  //get value
@@ -74,12 +74,12 @@ class SimplestItemStorage {
74
74
  const label = resolvePath(rawItemData, labelPath) ?? value;
75
75
  //return
76
76
  return {
77
- itemData: signal(rawItemData),
77
+ itemData: rawItemData,
78
78
  index: index,
79
- value: signal(value),
80
- label: signal(label?.toString?.() ?? String(label)),
81
- selected: signal(false),
82
- highlighted: signal(false),
79
+ value: value,
80
+ label: label?.toString?.() ?? String(label),
81
+ selected: false,
82
+ highlighted: false,
83
83
  };
84
84
  }
85
85
  /**
@@ -102,7 +102,10 @@ class SimplestItemStorage {
102
102
  unhighlightCurrent() {
103
103
  const hi = this._highlightedItem();
104
104
  if (hi) {
105
- hi.highlighted.set(false);
105
+ this._items.setAt(hi.index, {
106
+ ...hi,
107
+ highlighted: false,
108
+ });
106
109
  }
107
110
  this._highlightedItem.set(null);
108
111
  }
@@ -112,7 +115,10 @@ class SimplestItemStorage {
112
115
  */
113
116
  highlightItem(item) {
114
117
  this.unhighlightCurrent();
115
- item.highlighted.set(true);
118
+ this._items.setAt(item.index, {
119
+ ...item,
120
+ highlighted: true,
121
+ });
116
122
  this._highlightedItem.set(item);
117
123
  }
118
124
  /**
@@ -120,7 +126,10 @@ class SimplestItemStorage {
120
126
  * @param item The item to be unhighlighted.
121
127
  */
122
128
  unhighlightItem(item) {
123
- item.highlighted.set(false);
129
+ this._items.setAt(item.index, {
130
+ ...item,
131
+ highlighted: false,
132
+ });
124
133
  if (this._highlightedItem()?.index === item.index)
125
134
  this._highlightedItem.set(null);
126
135
  }
@@ -1245,6 +1254,16 @@ class ArdiumAutocompleteInputComponent extends _SimpleInputComponentBase {
1245
1254
  //! suggestions overlay
1246
1255
  this.dropdownHost = viewChild('suggestionsHost');
1247
1256
  this.dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });
1257
+ this.optionContextGenerator = computed(() => item => ({
1258
+ $implicit: item,
1259
+ item,
1260
+ index: item.index,
1261
+ value: item.value,
1262
+ label: item.label,
1263
+ selected: item.selected,
1264
+ highlighted: item.highlighted,
1265
+ itemData: item.itemData,
1266
+ }));
1248
1267
  //! suggestion-highligh-related
1249
1268
  this._isMouseBeingUsed = false;
1250
1269
  //! suggestion appearance
@@ -1302,13 +1321,6 @@ class ArdiumAutocompleteInputComponent extends _SimpleInputComponentBase {
1302
1321
  const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();
1303
1322
  this.dropdownOverlay.updateSize({ width: rect?.width });
1304
1323
  }
1305
- getOptionContext(item) {
1306
- return {
1307
- $implicit: item,
1308
- item,
1309
- itemData: item.itemData,
1310
- };
1311
- }
1312
1324
  onMouseMove() {
1313
1325
  this._isMouseBeingUsed = true;
1314
1326
  }
@@ -1415,7 +1427,7 @@ class ArdiumAutocompleteInputComponent extends _SimpleInputComponentBase {
1415
1427
  provide: ARD_FORM_FIELD_CONTROL,
1416
1428
  useExisting: ArdiumAutocompleteInputComponent,
1417
1429
  },
1418
- ], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdAutocompleteInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdAutocompleteInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdAutocompleteInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdAutocompleteInputSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdAutocompleteInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1430
+ ], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdAutocompleteInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdAutocompleteInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdAutocompleteInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdAutocompleteInputSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdAutocompleteInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected\"\r\n [class.ard-option-highlighted]=\"item.highlighted\"\r\n [attr.aria-selected]=\"item.selected\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1419
1431
  }
1420
1432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumAutocompleteInputComponent, decorators: [{
1421
1433
  type: Component,
@@ -1429,7 +1441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
1429
1441
  provide: ARD_FORM_FIELD_CONTROL,
1430
1442
  useExisting: ArdiumAutocompleteInputComponent,
1431
1443
  },
1432
- ], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"] }]
1444
+ ], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected\"\r\n [class.ard-option-highlighted]=\"item.highlighted\"\r\n [attr.aria-selected]=\"item.selected\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"] }]
1433
1445
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1434
1446
  type: Inject,
1435
1447
  args: [ARD_AUTOCOMPLETE_INPUT_DEFAULTS]
@@ -2657,43 +2669,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
2657
2669
  }] });
2658
2670
 
2659
2671
  class ItemStorage {
2672
+ _updateItems(updateFn) {
2673
+ this._items.map(updateFn);
2674
+ }
2675
+ _updateItemsFromArray(updateFn, itemsToUpdate) {
2676
+ this._items.update(items => {
2677
+ for (const itemToUpdate of itemsToUpdate) {
2678
+ const item = items[itemToUpdate.index];
2679
+ if (item) {
2680
+ items[itemToUpdate.index] = updateFn(item);
2681
+ }
2682
+ }
2683
+ return items;
2684
+ });
2685
+ }
2660
2686
  constructor(_ardParentComp) {
2661
2687
  this._ardParentComp = _ardParentComp;
2662
- this._groups = signal(this._createEmptyGroupMap());
2663
- this._items = signal([]);
2664
- this._filteredItems = signal([]);
2665
- this._highlightedItems = signal([]);
2666
- this._highlightedGroups = signal([]);
2688
+ this._items = arraySignal([]);
2689
+ this.filteredItems = computed(() => this.items().filter(item => item.filtered));
2690
+ this.selectedItems = computed(() => this.items().filter(item => item.selected));
2691
+ this.highlightedItems = computed(() => this.items().filter(item => item.highlighted));
2692
+ this._lastHighlightedItem = signal(undefined);
2667
2693
  this._recentlyHighlightedItem = signal(undefined);
2668
- this._selectedItems = signal([]);
2669
- this.groups = computed(() => Array.from(this._groups().entries())
2670
- .map(([, group]) => group)
2671
- .filter(group => group.children().length));
2672
- this.items = this._items.asReadonly();
2673
- this.filteredItems = this._filteredItems.asReadonly();
2674
- this.highlightedItems = this._highlightedItems.asReadonly();
2675
- this.selectedItems = computed(() => {
2676
- if (this._ardParentComp.sortMultipleValues()) {
2677
- return [...this._selectedItems()].sort((a, b) => {
2678
- return a.index - b.index;
2679
- });
2694
+ this._groups = computed(() => {
2695
+ const groupMap = this._createEmptyGroupMap();
2696
+ for (const item of this.filteredItems()) {
2697
+ if (this._ardParentComp.hideSelected() && item.selected)
2698
+ continue;
2699
+ let group = groupMap.get(item.group);
2700
+ if (!group) {
2701
+ group = {
2702
+ label: item.group?.toString?.() ?? String(item.group),
2703
+ children: [],
2704
+ disabled: false,
2705
+ };
2706
+ groupMap.set(item.group, group);
2707
+ }
2708
+ group.children.push(item);
2680
2709
  }
2681
- return this._selectedItems();
2710
+ return groupMap;
2682
2711
  });
2683
- this.lastSelectedItem = computed(() => this._filteredItems().last(1, item => !item.disabled()));
2712
+ this.groups = computed(() => Array.from(this._groups().entries())
2713
+ .map(([, group]) => group)
2714
+ .filter(group => group.children.length));
2715
+ this.items = computed(() => [...this._items()]);
2716
+ this.lastSelectedItem = computed(() => this.selectedItems().last(1, item => !item.disabled));
2684
2717
  this.value = computed(() => this._itemsToValue(this.selectedItems()));
2685
- this.isNoItemsToSelect = computed(() => this._items().length === this._selectedItems().length);
2686
- this.isNoItemsFound = computed(() => this._filteredItems().length === 0);
2687
- this.isAnyItemSelected = computed(() => this._selectedItems().length > 0);
2688
- this.isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);
2689
- this.isItemLimitReached = computed(() => this._ardParentComp.multiselectable() &&
2690
- isDefined(this._ardParentComp.maxSelectedItems()) &&
2691
- this._ardParentComp.maxSelectedItems() <= this.selectedItems().length);
2718
+ this.isNoItemsToSelect = computed(() => this.items().length === this.selectedItems().length);
2719
+ this.isNoItemsFound = computed(() => this.filteredItems().length === 0);
2720
+ this.isAnyItemSelected = computed(() => this.selectedItems().length > 0);
2721
+ this.isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);
2722
+ this.itemsLeftUntilLimit = computed(() => this._ardParentComp.multiselectable() && isDefined(this._ardParentComp.maxSelectedItems())
2723
+ ? this._ardParentComp.maxSelectedItems() - this.selectedItems().length
2724
+ : 1);
2725
+ this.isItemLimitReached = computed(() => this.itemsLeftUntilLimit() <= 0);
2726
+ this._highlightableItems = computed(() => this.filteredItems().filter(item => !item.disabled && (this._ardParentComp.hideSelected() ? !item.selected : this.isItemLimitReached() ? item.selected : true)));
2692
2727
  this._valueToWriteAfterItemsLoad = signal(undefined);
2693
2728
  this._wasValueWriteDeferred = signal(false);
2694
2729
  }
2695
2730
  _itemsToValue(items) {
2696
- return items.map(item => item.value());
2731
+ return items.map(item => item.value);
2697
2732
  }
2698
2733
  setItems(items) {
2699
2734
  let areItemsPrimitive = false;
@@ -2713,16 +2748,20 @@ class ItemStorage {
2713
2748
  this._items.set(items.map((item, index) => {
2714
2749
  return this._setItemsMapFn(item, index, areItemsPrimitive);
2715
2750
  }));
2716
- //add all items to filter array
2717
- this._filteredItems.set(this._items());
2718
- //add items to groups
2719
- this._populateGroups();
2751
+ this._updateItems(item => ({ ...item, filtered: true }));
2720
2752
  //write value if it was
2721
2753
  const toWrite = this._valueToWriteAfterItemsLoad();
2722
2754
  if (toWrite !== undefined) {
2723
2755
  this.handleWriteValue(toWrite);
2724
2756
  }
2725
2757
  }
2758
+ updateItemFromOptionComponent(itemValue, updatedItem) {
2759
+ const item = this.findItemByValue(itemValue);
2760
+ if (!item)
2761
+ return;
2762
+ const index = item.index;
2763
+ this._items.setAt(index, { ...item, ...updatedItem });
2764
+ }
2726
2765
  _addSingleItem(item) {
2727
2766
  const isItemPrimitive = isPrimitive(item);
2728
2767
  //map a primitive item to a usable object
@@ -2730,13 +2769,11 @@ class ItemStorage {
2730
2769
  item = this._primitiveItemsMapFn(item);
2731
2770
  }
2732
2771
  //map the item to create data bindings
2733
- const ardOption = this._setItemsMapFn(item, (this._items().last()?.index ?? 0) + 1, isItemPrimitive);
2772
+ const ardOption = this._setItemsMapFn(item, (this.items().last()?.index ?? 0) + 1, isItemPrimitive);
2734
2773
  //push the item into all items
2735
- this._items.update(v => [...v, ardOption]);
2774
+ this._items.push(ardOption);
2736
2775
  //add all items to filter array
2737
- this._filteredItems.set(this._items());
2738
- //add item to groups
2739
- this._populateGroups();
2776
+ this._updateItems(item => ({ ...item, filtered: true }));
2740
2777
  return ardOption;
2741
2778
  }
2742
2779
  _primitiveItemsMapFn(item) {
@@ -2775,15 +2812,16 @@ class ItemStorage {
2775
2812
  _setItemsMapFn(rawItemData, index, areItemsPrimitive) {
2776
2813
  if (areItemsPrimitive) {
2777
2814
  return {
2778
- itemData: signal(rawItemData),
2815
+ itemData: rawItemData,
2779
2816
  index: index,
2780
- value: signal(rawItemData.value),
2781
- label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),
2782
- disabled: signal(false),
2783
- selected: signal(false),
2784
- highlighted: signal(false),
2817
+ value: rawItemData.value,
2818
+ label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
2819
+ disabled: false,
2820
+ filtered: true,
2821
+ selected: false,
2822
+ highlighted: false,
2785
2823
  group: undefined,
2786
- highlighted_recently: signal(false),
2824
+ highlighted_recently: false,
2787
2825
  };
2788
2826
  }
2789
2827
  //get value
@@ -2815,55 +2853,28 @@ class ItemStorage {
2815
2853
  }
2816
2854
  }
2817
2855
  return {
2818
- itemData: signal(rawItemData),
2856
+ itemData: rawItemData,
2819
2857
  index: index,
2820
- value: signal(value),
2821
- label: signal(label?.toString?.() ?? String(label)),
2822
- disabled: signal(disabled),
2858
+ value: value,
2859
+ label: label?.toString?.() ?? String(label),
2860
+ disabled: disabled,
2823
2861
  group: group,
2824
- selected: signal(false),
2825
- highlighted: signal(false),
2826
- highlighted_recently: signal(false),
2862
+ filtered: true,
2863
+ selected: false,
2864
+ highlighted: false,
2865
+ highlighted_recently: false,
2827
2866
  };
2828
2867
  }
2829
- _populateGroups() {
2830
- this._groups.set(this._createEmptyGroupMap());
2831
- for (const item of this._filteredItems()) {
2832
- if (this._ardParentComp.hideSelected() && item.selected())
2833
- continue;
2834
- this._addToGroup(item);
2835
- }
2836
- }
2837
- _addToGroup(item) {
2838
- const groupKey = item.group;
2839
- const targetGroup = this._groups().get(groupKey);
2840
- //create new group if no such group exists
2841
- if (!targetGroup) {
2842
- this._groups.update(v => {
2843
- const map = new Map(v);
2844
- map.set(groupKey, {
2845
- label: signal(String(groupKey ?? '')),
2846
- children: signal([item]),
2847
- disabled: signal(false),
2848
- selected: signal(false),
2849
- highlighted: signal(false),
2850
- });
2851
- return map;
2852
- });
2853
- return;
2854
- }
2855
- targetGroup.children.update(v => [...v, item]);
2856
- }
2857
2868
  _createEmptyGroupMap() {
2858
2869
  return new Map([
2859
2870
  [
2860
2871
  undefined,
2861
2872
  {
2862
- label: signal(''),
2863
- children: signal([]),
2864
- disabled: signal(false),
2865
- selected: signal(false),
2866
- highlighted: signal(false),
2873
+ label: '',
2874
+ children: [],
2875
+ disabled: false,
2876
+ selected: false,
2877
+ highlighted: false,
2867
2878
  },
2868
2879
  ],
2869
2880
  ]);
@@ -2879,7 +2890,7 @@ class ItemStorage {
2879
2890
  }
2880
2891
  handleWriteValue(ngModel) {
2881
2892
  //defer writing the value if no options are yet loaded
2882
- if (!this._wasValueWriteDeferred() && this._items().length === 0) {
2893
+ if (!this._wasValueWriteDeferred() && this.items().length === 0) {
2883
2894
  this._valueToWriteAfterItemsLoad.set(ngModel);
2884
2895
  return;
2885
2896
  }
@@ -2911,12 +2922,12 @@ class ItemStorage {
2911
2922
  findItemByValue(valueToFind) {
2912
2923
  let findBy;
2913
2924
  if (this._ardParentComp.compareWith()) {
2914
- findBy = item => this._ardParentComp.compareWith()(valueToFind, item.value());
2925
+ findBy = item => this._ardParentComp.compareWith()(valueToFind, item.value);
2915
2926
  }
2916
2927
  else {
2917
- findBy = item => item.value() === valueToFind;
2928
+ findBy = item => item.value === valueToFind;
2918
2929
  }
2919
- return this._items().find(item => findBy(item));
2930
+ return this.items().find(item => findBy(item));
2920
2931
  }
2921
2932
  async addCustomOption(value, fn) {
2922
2933
  const fnResult = fn(value);
@@ -2933,20 +2944,13 @@ class ItemStorage {
2933
2944
  const newOptionObj = this._addSingleItem(optionValue);
2934
2945
  return newOptionObj;
2935
2946
  }
2936
- clearAllSelected(repopulateGroups = false) {
2937
- for (const item of this._selectedItems()) {
2938
- item.selected.set(false);
2939
- }
2940
- const removedItemValues = this._itemsToValue(this._selectedItems());
2941
- if (this._selectedItems().length) {
2942
- this._selectedItems.set([]);
2943
- }
2944
- if (repopulateGroups && this._ardParentComp.hideSelected())
2945
- this._populateGroups();
2947
+ clearAllSelected() {
2948
+ const removedItemValues = this._itemsToValue(this.selectedItems());
2949
+ this._updateItems(item => ({ ...item, selected: false }));
2946
2950
  return removedItemValues;
2947
2951
  }
2948
2952
  clearLastSelected() {
2949
- const item = this._selectedItems().last();
2953
+ const item = this.selectedItems().last();
2950
2954
  if (!item)
2951
2955
  return item;
2952
2956
  this.unselectItem(item);
@@ -2956,120 +2960,94 @@ class ItemStorage {
2956
2960
  if (this.isItemLimitReached()) {
2957
2961
  return [[], [], this._itemsToValue(items)];
2958
2962
  }
2963
+ const itemsLeftUntilLimit = this.itemsLeftUntilLimit();
2959
2964
  let itemsSelectedCount = 0;
2965
+ const newItemsArray = this.items();
2960
2966
  for (const item of items) {
2961
2967
  itemsSelectedCount++;
2962
- if (item.selected())
2968
+ if (item.selected)
2963
2969
  continue;
2964
- if (this.isItemLimitReached()) {
2970
+ if (itemsSelectedCount > itemsLeftUntilLimit) {
2965
2971
  break;
2966
2972
  }
2967
- item.selected.set(true);
2968
- }
2969
- if (this._ardParentComp.hideSelected()) {
2970
- this._populateGroups();
2973
+ newItemsArray[item.index] = { ...item, selected: true };
2971
2974
  }
2972
2975
  const itemsUnselected = this._ardParentComp.multiselectable()
2973
2976
  ? []
2974
- : this._selectedItems().filter(item => !items.find(v => v.value === item.value));
2977
+ : this.selectedItems().filter(item => !items.find(v => v.value === item.value));
2978
+ for (const item of itemsUnselected) {
2979
+ newItemsArray[item.index] = { ...item, selected: false };
2980
+ }
2975
2981
  const itemsSelected = items.slice(0, itemsSelectedCount);
2976
2982
  const itemsFailedToSelect = items.slice(itemsSelectedCount);
2977
- const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this._selectedItems().find(v => v.value === item.value));
2983
+ const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this.selectedItems().find(v => v.value === item.value));
2978
2984
  if (isAnyNewItemToBeSelected) {
2979
- if (this._ardParentComp.multiselectable()) {
2980
- this._selectedItems.update(v => [...v, ...itemsSelected]);
2981
- }
2982
- else {
2983
- this._selectedItems.set(itemsSelected);
2984
- }
2985
+ this._items.set(newItemsArray);
2985
2986
  }
2986
- return [this._itemsToValue(itemsSelected), itemsUnselected, this._itemsToValue(itemsFailedToSelect)];
2987
+ if (!this._lastHighlightedItem()) {
2988
+ this._lastHighlightedItem.set(itemsFailedToSelect.first() || itemsSelected.last());
2989
+ }
2990
+ return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsUnselected), this._itemsToValue(itemsFailedToSelect)];
2987
2991
  }
2988
2992
  unselectItem(...items) {
2989
- for (const item of items) {
2990
- if (!item.selected())
2991
- continue;
2992
- item.selected.set(false);
2993
- }
2994
- this._selectedItems.update(v => v.filter(v => v.selected()));
2995
- if (this._ardParentComp.hideSelected()) {
2996
- this._populateGroups();
2993
+ this._updateItemsFromArray(item => ({ ...item, selected: false }), items);
2994
+ if (!this._lastHighlightedItem()) {
2995
+ this._lastHighlightedItem.set(items.last());
2997
2996
  }
2998
2997
  return this._itemsToValue(items);
2999
2998
  }
3000
- clearAllHighlights() {
3001
- for (const item of this._highlightedItems()) {
3002
- item.highlighted.set(false);
3003
- }
3004
- for (const group of this._highlightedGroups()) {
3005
- group.highlighted.set(false);
2999
+ toggleItem(item) {
3000
+ if (item.selected) {
3001
+ this.unselectItem(item);
3002
+ return;
3006
3003
  }
3007
- this._highlightedItems.set([]);
3008
- this._highlightedGroups.set([]);
3004
+ this.selectItem(item);
3005
+ }
3006
+ clearAllHighlights() {
3007
+ this._updateItems(item => ({ ...item, highlighted: false }));
3009
3008
  }
3010
3009
  highlightGroup(group) {
3011
- this.clearAllHighlights();
3012
- group.highlighted.set(true);
3013
- this.highlightItem(...group.children());
3014
- return group.children().first();
3010
+ const childrenIndexes = new Set(group.children.map(item => item.index));
3011
+ this._updateItems(item => ({ ...item, highlighted: childrenIndexes.has(item.index) }));
3012
+ return group.children.first();
3015
3013
  }
3016
3014
  highlightSingleItem(item) {
3017
- if (!item || item.disabled())
3015
+ if (!item || item.disabled)
3018
3016
  return null;
3019
3017
  this.clearAllHighlights();
3020
3018
  return this.highlightItem(item);
3021
3019
  }
3022
3020
  highlightItem(...items) {
3023
- for (const item of items) {
3024
- item.highlighted.set(true);
3025
- }
3026
- this._highlightedItems.update(v => [...v, ...items]);
3021
+ this._updateItemsFromArray(item => ({ ...item, highlighted: true }), items);
3022
+ this._lastHighlightedItem.set(items.last());
3027
3023
  return items.last();
3028
3024
  }
3029
3025
  unhighlightItem(...items) {
3030
- for (const item of items) {
3031
- if (!item || !item.highlighted)
3032
- return;
3033
- item.highlighted.set(false);
3034
- }
3035
- this._highlightedItems.update(v => v.filter(v => v.highlighted()));
3026
+ this._updateItemsFromArray(item => ({ ...item, highlighted: false }), items);
3036
3027
  }
3037
3028
  highlightFirstItem() {
3038
3029
  this.clearAllHighlights();
3039
- const itemsToHighlight = this._getHiglightableItems();
3030
+ const itemsToHighlight = this._highlightableItems();
3040
3031
  return this.highlightSingleItem(itemsToHighlight.first());
3041
3032
  }
3042
3033
  highlightLastItem() {
3043
3034
  this.clearAllHighlights();
3044
- const itemsToHighlight = this._getHiglightableItems();
3035
+ const itemsToHighlight = this._highlightableItems();
3045
3036
  return this.highlightSingleItem(itemsToHighlight.last());
3046
3037
  }
3047
- _getHiglightableItems() {
3048
- let itemsToHighlight = this._filteredItems().filter(item => !item.disabled());
3049
- if (this._ardParentComp.hideSelected()) {
3050
- itemsToHighlight = itemsToHighlight.filter(item => !item.selected());
3051
- }
3052
- return itemsToHighlight;
3053
- }
3054
3038
  highlightAllItems() {
3055
- this.highlightItem(...this._getHiglightableItems());
3039
+ this.highlightItem(...this._highlightableItems());
3056
3040
  }
3057
- _clearRecentlyHighlighted() {
3058
- if (this._recentlyHighlightedItem()) {
3059
- this._recentlyHighlightedItem().highlighted_recently.set(false);
3060
- }
3061
- }
3062
- setRecentlyHighlighted(item) {
3063
- this._clearRecentlyHighlighted();
3064
- item.highlighted_recently.set(true);
3065
- this._recentlyHighlightedItem.set(item);
3041
+ setRecentlyHighlighted(itemToSet) {
3042
+ this._updateItemsFromArray(item => ({ ...item, highlighted_recently: itemToSet.index === item.index }), [itemToSet]);
3043
+ this._recentlyHighlightedItem.set(itemToSet);
3066
3044
  }
3067
3045
  highlightNextItem(offset, hasShift) {
3068
3046
  if (!this.isAnyItemHighlighted()) {
3069
3047
  return this.highlightFirstItem();
3070
3048
  }
3071
- const currentItem = this.highlightedItems().last();
3072
- const highlightableItems = this._getHiglightableItems();
3049
+ const currentItem = this._lastHighlightedItem() ?? this._highlightableItems().first();
3050
+ const highlightableItems = this._highlightableItems();
3073
3051
  const currentIndexInFiltered = highlightableItems.findIndex(item => item.index === currentItem.index);
3074
3052
  let nextItemIndex = currentIndexInFiltered + offset;
3075
3053
  if (nextItemIndex >= highlightableItems.length) {
@@ -3080,7 +3058,7 @@ class ItemStorage {
3080
3058
  }
3081
3059
  const itemToHighlight = highlightableItems[nextItemIndex];
3082
3060
  if (hasShift && this._ardParentComp.multiselectable()) {
3083
- if (itemToHighlight.highlighted()) {
3061
+ if (itemToHighlight.highlighted) {
3084
3062
  this.unhighlightItem(currentItem);
3085
3063
  }
3086
3064
  return this.highlightItem(itemToHighlight);
@@ -3095,24 +3073,18 @@ class ItemStorage {
3095
3073
  filterTerm = filterTerm.toLocaleLowerCase();
3096
3074
  }
3097
3075
  const searchFn = this._ardParentComp.searchFn();
3098
- const newFilteredItems = this._items().filter(item => searchFn(filterTerm, item));
3099
- this._filteredItems.set(newFilteredItems);
3100
- this._populateGroups();
3076
+ this._updateItems(item => ({ ...item, filtered: searchFn(filterTerm, item) }));
3101
3077
  if (!this.isNoItemsFound)
3102
3078
  this.highlightFirstItem();
3103
3079
  else
3104
3080
  this.clearAllHighlights();
3105
- return this._itemsToValue(newFilteredItems);
3081
+ return this._itemsToValue(this.filteredItems());
3106
3082
  }
3107
3083
  resetFiltered() {
3108
- if (this._filteredItems().length === this._items().length)
3109
- return this._items();
3110
- let newFilteredItems = this._items();
3111
- if (this._ardParentComp.hideSelected() && this.isAnyItemSelected()) {
3112
- newFilteredItems = newFilteredItems.filter(item => !item.selected());
3113
- }
3114
- this._populateGroups();
3115
- return newFilteredItems;
3084
+ if (this.filteredItems().length === this.items().length)
3085
+ return this.items();
3086
+ this._updateItems(item => ({ ...item, filtered: true }));
3087
+ return this.items();
3116
3088
  }
3117
3089
  }
3118
3090
 
@@ -3129,7 +3101,7 @@ const searchFunctions = {
3129
3101
  * @returns `true` if the item matches the search term, otherwise `false`.
3130
3102
  */
3131
3103
  byLabel: (searchTerm, item) => {
3132
- return searchInString(searchTerm, item.label());
3104
+ return searchInString(searchTerm, item.label);
3133
3105
  },
3134
3106
  /**
3135
3107
  * Determines if the item should appear in the search results, based on the value only.
@@ -3138,7 +3110,7 @@ const searchFunctions = {
3138
3110
  * @returns `true` if the item matches the search term, otherwise `false`.
3139
3111
  */
3140
3112
  byValue: (searchTerm, item) => {
3141
- return searchInString(searchTerm, item.value());
3113
+ return searchInString(searchTerm, item.value);
3142
3114
  },
3143
3115
  /**
3144
3116
  * Determines if the item should appear in the search results, based on the group only.
@@ -3156,7 +3128,7 @@ const searchFunctions = {
3156
3128
  * @returns `true` if the item matches the search term, otherwise `false`.
3157
3129
  */
3158
3130
  byLabelAndGroup: (searchTerm, item) => {
3159
- return (searchFunctions.byLabel(searchTerm, item) || (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item)));
3131
+ return (searchFunctions.byLabel(searchTerm, item) || (item.label !== item.value && searchFunctions.byValue(searchTerm, item)));
3160
3132
  },
3161
3133
  /**
3162
3134
  * Determines if the item should appear in the search results, based on the label and value.
@@ -3175,7 +3147,7 @@ const searchFunctions = {
3175
3147
  */
3176
3148
  byLabelAndGroupAndValue: (searchTerm, item) => {
3177
3149
  return (searchFunctions.byLabel(searchTerm, item) ||
3178
- (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item)) ||
3150
+ (item.label !== item.value && searchFunctions.byValue(searchTerm, item)) ||
3179
3151
  searchFunctions.byGroup(searchTerm, item));
3180
3152
  },
3181
3153
  };
@@ -3319,6 +3291,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
3319
3291
  type: Directive,
3320
3292
  args: [{ standalone: false, selector: 'ard-select > ng-template[ard-placeholder-tmp]' }]
3321
3293
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
3294
+ class ArdSelectDropdownArrowTemplateDirective {
3295
+ constructor(template) {
3296
+ this.template = template;
3297
+ }
3298
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdSelectDropdownArrowTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
3299
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: ArdSelectDropdownArrowTemplateDirective, isStandalone: false, selector: "ard-select > ng-template[ard-dropdown-arrow-tmp]", ngImport: i0 }); }
3300
+ }
3301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdSelectDropdownArrowTemplateDirective, decorators: [{
3302
+ type: Directive,
3303
+ args: [{ standalone: false, selector: 'ard-select > ng-template[ard-dropdown-arrow-tmp]' }]
3304
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
3322
3305
  class ArdLoadingSpinnerTemplateDirective {
3323
3306
  constructor(template) {
3324
3307
  this.template = template;
@@ -3576,15 +3559,21 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3576
3559
  this.itemsAlreadyGrouped = input(this._DEFAULTS.itemsAlreadyGrouped, {
3577
3560
  transform: v => coerceBooleanProperty(v),
3578
3561
  });
3579
- this.invertDisabled = input(this._DEFAULTS.invertDisabled, { transform: v => coerceBooleanProperty(v) });
3580
- this.noGroupActions = input(this._DEFAULTS.noGroupActions, { transform: v => coerceBooleanProperty(v) });
3562
+ this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
3563
+ transform: v => coerceBooleanProperty(v),
3564
+ });
3565
+ this.noGroupActions = input(this._DEFAULTS.noGroupActions, {
3566
+ transform: v => coerceBooleanProperty(v),
3567
+ });
3581
3568
  this.autoHighlightFirst = input(this._DEFAULTS.autoHighlightFirst, {
3582
3569
  transform: v => coerceBooleanProperty(v),
3583
3570
  });
3584
3571
  this.autoFocus = input(this._DEFAULTS.autoFocus, { transform: v => coerceBooleanProperty(v) });
3585
3572
  this.keepOpen = input(this._DEFAULTS.keepOpen, { transform: v => coerceBooleanProperty(v) });
3586
3573
  this.hideSelected = input(this._DEFAULTS.hideSelected, { transform: v => coerceBooleanProperty(v) });
3587
- this.noBackspaceClear = input(this._DEFAULTS.noBackspaceClear, { transform: v => coerceBooleanProperty(v) });
3574
+ this.noBackspaceClear = input(this._DEFAULTS.noBackspaceClear, {
3575
+ transform: v => coerceBooleanProperty(v),
3576
+ });
3588
3577
  this.sortMultipleValues = input(this._DEFAULTS.sortMultipleValues, {
3589
3578
  transform: v => coerceBooleanProperty(v),
3590
3579
  });
@@ -3638,7 +3627,9 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3638
3627
  return variant;
3639
3628
  });
3640
3629
  //! attribute and/or class setters/getters
3641
- this.multiselectable = input(this._DEFAULTS.multiselectable, { transform: v => coerceBooleanProperty(v) });
3630
+ this.multiselectable = input(this._DEFAULTS.multiselectable, {
3631
+ transform: v => coerceBooleanProperty(v),
3632
+ });
3642
3633
  this.clearable = input(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });
3643
3634
  this.searchable = input(this._DEFAULTS.searchable, { transform: v => coerceBooleanProperty(v) });
3644
3635
  this.filtered = computed(() => this.searchable() && this.searchTerm() !== '');
@@ -3658,7 +3649,6 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3658
3649
  this.shouldShowAddCustom = computed(() => this.addCustom() !== false && this.searchTerm().length > 0 && this.itemStorage.isNoItemsFound());
3659
3650
  this.valueChange = output();
3660
3651
  //! output events
3661
- this.changeEvent = output({ alias: 'change' });
3662
3652
  this.addEvent = output({ alias: 'add' });
3663
3653
  this.failedToAddEvent = output({ alias: 'failedToAdd' });
3664
3654
  this.removeEvent = output({ alias: 'remove' });
@@ -3677,6 +3667,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3677
3667
  this.optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);
3678
3668
  this.valueTemplate = contentChild(ArdValueTemplateDirective);
3679
3669
  this.placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);
3670
+ this.dropdownArrowTemplate = contentChild(ArdSelectDropdownArrowTemplateDirective);
3680
3671
  this.loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);
3681
3672
  this.loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);
3682
3673
  this.dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);
@@ -3687,6 +3678,34 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3687
3678
  this.itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);
3688
3679
  this.prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);
3689
3680
  this.suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);
3681
+ //! context providers
3682
+ this.optionContextGenerator = computed(() => item => ({
3683
+ $implicit: item,
3684
+ item,
3685
+ index: item.index,
3686
+ value: item.value,
3687
+ label: item.label,
3688
+ selected: item.selected,
3689
+ highlighted: item.highlighted,
3690
+ itemData: item.itemData,
3691
+ group: item.group,
3692
+ disabled: item.disabled,
3693
+ highlighted_recently: item.highlighted_recently,
3694
+ }));
3695
+ this.valueContextGenerator = computed(() => item => ({
3696
+ ...this.optionContextGenerator()(item),
3697
+ unselect: () => {
3698
+ this.unselectItem(item);
3699
+ },
3700
+ }));
3701
+ this.groupContextGenerator = computed(() => group => ({
3702
+ $implicit: group,
3703
+ group,
3704
+ label: group.label,
3705
+ disabled: group.disabled,
3706
+ selectedChildrenCount: group.children.filter(v => v.selected).length,
3707
+ totalChildrenCount: group.children.length,
3708
+ }));
3690
3709
  this.getStatsContext = computed(() => ({
3691
3710
  totalItems: this.totalItems(),
3692
3711
  foundItems: this.foundItems(),
@@ -3727,6 +3746,9 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3727
3746
  this.overlay = inject(Overlay);
3728
3747
  this.viewContainerRef = inject(ViewContainerRef);
3729
3748
  this.scrollStrategyOpts = inject(ScrollStrategyOptions);
3749
+ //! dropdown overlay
3750
+ this.dropdownHost = viewChild.required('dropdownHost');
3751
+ this.dropdownTemplate = viewChild.required('dropdownTemplate');
3730
3752
  this.dropdownPanelWidth = input(this._DEFAULTS.dropdownPanelWidth, {
3731
3753
  transform: transformDropdownPanelSize,
3732
3754
  });
@@ -3786,18 +3808,16 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3786
3808
  .pipe(takeUntil(changedOrDestroyed))
3787
3809
  .subscribe(option => {
3788
3810
  setTimeout(() => {
3789
- const item = this.itemStorage.findItemByValue(option.oldValue ?? option.value);
3790
- if (item) {
3791
- item.disabled.set(option.disabled);
3792
- item.label.set(option.label || item.label());
3793
- item.value.set(option.value);
3794
- item.itemData.set({
3795
- label: option.label || item.label(),
3811
+ this.itemStorage.updateItemFromOptionComponent(option.oldValue ?? option.value, {
3812
+ disabled: option.disabled,
3813
+ label: option.label || undefined,
3814
+ value: option.value,
3815
+ itemData: {
3816
+ label: option.label,
3796
3817
  value: option.value,
3797
3818
  disabled: option.disabled,
3798
- });
3799
- }
3800
- this.detectChanges();
3819
+ },
3820
+ });
3801
3821
  }, 0);
3802
3822
  });
3803
3823
  };
@@ -3842,7 +3862,6 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3842
3862
  _emitChange() {
3843
3863
  const value = this.multiselectable() ? this.itemStorage.value() : this.itemStorage.value()[0];
3844
3864
  this._onChangeRegistered?.(value);
3845
- this.changeEvent.emit(value);
3846
3865
  this.valueChange.emit(value);
3847
3866
  }
3848
3867
  _onTouched() {
@@ -3862,36 +3881,10 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3862
3881
  get value() {
3863
3882
  return this.itemStorage.value;
3864
3883
  }
3865
- //! context providers
3866
- getValueContext(item) {
3867
- return {
3868
- $implicit: item,
3869
- item,
3870
- itemData: item.itemData(),
3871
- unselect: () => {
3872
- this.unselectItem(item);
3873
- },
3874
- };
3875
- }
3876
- getGroupContext(group) {
3877
- return {
3878
- $implicit: group,
3879
- group,
3880
- selectedChildren: group.children().filter(v => v.selected()).length,
3881
- totalChildren: group.children().length,
3882
- };
3883
- }
3884
- getOptionContext(item) {
3885
- return {
3886
- $implicit: item,
3887
- item,
3888
- itemData: item.itemData(),
3889
- };
3890
- }
3891
3884
  _createOverlay() {
3892
3885
  const strategy = this.overlay
3893
3886
  .position()
3894
- .flexibleConnectedTo(this.dropdownHost)
3887
+ .flexibleConnectedTo(this.dropdownHost())
3895
3888
  .withFlexibleDimensions(false)
3896
3889
  .withPositions([
3897
3890
  {
@@ -3931,7 +3924,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3931
3924
  maxHeight: this.dropdownPanelMaxHeight() ?? undefined,
3932
3925
  });
3933
3926
  this.dropdownOverlay = this.overlay.create(config);
3934
- const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);
3927
+ const portal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);
3935
3928
  this.dropdownOverlay.attach(portal);
3936
3929
  this.setOverlaySize();
3937
3930
  }
@@ -3944,7 +3937,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
3944
3937
  setOverlaySize() {
3945
3938
  if (!this.dropdownOverlay)
3946
3939
  return;
3947
- const rect = this.dropdownHost.nativeElement.getBoundingClientRect();
3940
+ const rect = this.dropdownHost().nativeElement.getBoundingClientRect();
3948
3941
  this.dropdownOverlay.updateSize({ width: rect.width });
3949
3942
  }
3950
3943
  onWindowResize() {
@@ -4005,7 +3998,8 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4005
3998
  }
4006
3999
  //! item selection handlers
4007
4000
  toggleItem(item) {
4008
- if (item.selected()) {
4001
+ // don't use itemStorage.toggleItem() - we need to emit different events for select/unselect
4002
+ if (item.selected) {
4009
4003
  this.unselectItem(item);
4010
4004
  return;
4011
4005
  }
@@ -4044,14 +4038,14 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4044
4038
  }
4045
4039
  }
4046
4040
  _clearAllItems() {
4047
- const cleared = this.itemStorage.clearAllSelected(true);
4041
+ const cleared = this.itemStorage.clearAllSelected();
4048
4042
  this.focus();
4049
4043
  this.clearEvent.emit();
4050
4044
  this.removeEvent.emit(cleared);
4051
4045
  this._emitChange();
4052
4046
  }
4053
4047
  _clearLastItem() {
4054
- const clearedValue = this.itemStorage.clearLastSelected().value();
4048
+ const clearedValue = this.itemStorage.clearLastSelected().value;
4055
4049
  this.focus();
4056
4050
  this.removeEvent.emit([clearedValue]);
4057
4051
  this._emitChange();
@@ -4082,7 +4076,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4082
4076
  }
4083
4077
  onItemClick(option, event) {
4084
4078
  event.stopPropagation();
4085
- if (this.clearable())
4079
+ if (this.clearable() || this.multiselectable())
4086
4080
  this.toggleItem(option);
4087
4081
  else
4088
4082
  this.selectItem(option);
@@ -4091,11 +4085,11 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4091
4085
  onGroupClick(group) {
4092
4086
  if (!this.multiselectable() || this.noGroupActions())
4093
4087
  return;
4094
- if (group.children().every(o => o.selected)) {
4095
- this.unselectItem(...group.children());
4088
+ if (group.children.every(o => o.selected)) {
4089
+ this.unselectItem(...group.children);
4096
4090
  return;
4097
4091
  }
4098
- this.selectItem(...group.children());
4092
+ this.selectItem(...group.children);
4099
4093
  this._isClickedWithin.set(true);
4100
4094
  }
4101
4095
  handleClearButtonClick(event) {
@@ -4236,9 +4230,10 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4236
4230
  async _onEnterPress(event) {
4237
4231
  event.preventDefault();
4238
4232
  let shouldClose = true;
4233
+ console.log('enter pressed', this.itemStorage.highlightedItems());
4239
4234
  //select the currently highlighted option
4240
4235
  if (this.isOpen() && this.firstHighlightedItem()) {
4241
- if (this.clearable() && this.itemStorage.highlightedItems().every(item => item.selected)) {
4236
+ if ((this.clearable() || this.multiselectable()) && this.itemStorage.highlightedItems().every(item => item.selected)) {
4242
4237
  this.unselectItem(...this.itemStorage.highlightedItems());
4243
4238
  }
4244
4239
  else {
@@ -4250,8 +4245,9 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4250
4245
  await this.addCustomOption(this.searchTerm());
4251
4246
  }
4252
4247
  //in case of no action, open the dropdown (or keep it open)
4253
- else
4248
+ else {
4254
4249
  shouldClose = false;
4250
+ }
4255
4251
  if (!this.keepOpen() && shouldClose) {
4256
4252
  this.itemStorage.clearAllHighlights();
4257
4253
  this.close();
@@ -4326,7 +4322,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4326
4322
  this.itemStorage.highlightAllItems();
4327
4323
  }
4328
4324
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSelectComponent, deps: [{ token: ARD_SELECT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
4329
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumSelectComponent, isStandalone: false, selector: "ard-select", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, groupLabelFrom: { classPropertyName: "groupLabelFrom", publicName: "groupLabelFrom", isSignal: true, isRequired: false, transformFunction: null }, groupDisabledFrom: { classPropertyName: "groupDisabledFrom", publicName: "groupDisabledFrom", isSignal: true, isRequired: false, transformFunction: null }, childrenFrom: { classPropertyName: "childrenFrom", publicName: "childrenFrom", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, clearButtonTitle: { classPropertyName: "clearButtonTitle", publicName: "clearButtonTitle", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, noItemsFoundText: { classPropertyName: "noItemsFoundText", publicName: "noItemsFoundText", isSignal: true, isRequired: false, transformFunction: null }, addCustomOptionText: { classPropertyName: "addCustomOptionText", publicName: "addCustomOptionText", isSignal: true, isRequired: false, transformFunction: null }, loadingPlaceholderText: { classPropertyName: "loadingPlaceholderText", publicName: "loadingPlaceholderText", isSignal: true, isRequired: false, transformFunction: null }, searchInputId: { classPropertyName: "searchInputId", publicName: "searchInputId", isSignal: true, isRequired: false, transformFunction: null }, inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsAlreadyGrouped: { classPropertyName: "itemsAlreadyGrouped", publicName: "itemsAlreadyGrouped", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, noGroupActions: { classPropertyName: "noGroupActions", publicName: "noGroupActions", isSignal: true, isRequired: false, transformFunction: null }, autoHighlightFirst: { classPropertyName: "autoHighlightFirst", publicName: "autoHighlightFirst", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, keepOpen: { classPropertyName: "keepOpen", publicName: "keepOpen", isSignal: true, isRequired: false, transformFunction: null }, hideSelected: { classPropertyName: "hideSelected", publicName: "hideSelected", isSignal: true, isRequired: false, transformFunction: null }, noBackspaceClear: { classPropertyName: "noBackspaceClear", publicName: "noBackspaceClear", isSignal: true, isRequired: false, transformFunction: null }, sortMultipleValues: { classPropertyName: "sortMultipleValues", publicName: "sortMultipleValues", isSignal: true, isRequired: false, transformFunction: null }, searchCaseSensitive: { classPropertyName: "searchCaseSensitive", publicName: "searchCaseSensitive", isSignal: true, isRequired: false, transformFunction: null }, keepSearchAfterSelect: { classPropertyName: "keepSearchAfterSelect", publicName: "keepSearchAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, itemDisplayLimit: { classPropertyName: "itemDisplayLimit", publicName: "itemDisplayLimit", isSignal: true, isRequired: false, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, dropdownAppearance: { classPropertyName: "dropdownAppearance", publicName: "dropdownAppearance", isSignal: true, isRequired: false, transformFunction: null }, dropdownVariant: { classPropertyName: "dropdownVariant", publicName: "dropdownVariant", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, addCustom: { classPropertyName: "addCustom", publicName: "addCustom", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelWidth: { classPropertyName: "dropdownPanelWidth", publicName: "dropdownPanelWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelHeight: { classPropertyName: "dropdownPanelHeight", publicName: "dropdownPanelHeight", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMinWidth: { classPropertyName: "dropdownPanelMinWidth", publicName: "dropdownPanelMinWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMinHeight: { classPropertyName: "dropdownPanelMinHeight", publicName: "dropdownPanelMinHeight", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMaxWidth: { classPropertyName: "dropdownPanelMaxWidth", publicName: "dropdownPanelMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMaxHeight: { classPropertyName: "dropdownPanelMaxHeight", publicName: "dropdownPanelMaxHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change", addEvent: "add", failedToAddEvent: "failedToAdd", removeEvent: "remove", clearEvent: "clear", openEvent: "open", closeEvent: "close", scrollEvent: "scroll", scrollToEndEvent: "scrollToEnd", searchEvent: "search", isOpen: "isOpenChange" }, host: { listeners: { "window:resize": "onWindowResize()", "mouseup": "onMouseup()", "keydown": "onKeyPress($event)" }, properties: { "class.ard-group-items": "this._groupItemsHostAttribute" } }, providers: [
4325
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumSelectComponent, isStandalone: false, selector: "ard-select", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, groupLabelFrom: { classPropertyName: "groupLabelFrom", publicName: "groupLabelFrom", isSignal: true, isRequired: false, transformFunction: null }, groupDisabledFrom: { classPropertyName: "groupDisabledFrom", publicName: "groupDisabledFrom", isSignal: true, isRequired: false, transformFunction: null }, childrenFrom: { classPropertyName: "childrenFrom", publicName: "childrenFrom", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, clearButtonTitle: { classPropertyName: "clearButtonTitle", publicName: "clearButtonTitle", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, noItemsFoundText: { classPropertyName: "noItemsFoundText", publicName: "noItemsFoundText", isSignal: true, isRequired: false, transformFunction: null }, addCustomOptionText: { classPropertyName: "addCustomOptionText", publicName: "addCustomOptionText", isSignal: true, isRequired: false, transformFunction: null }, loadingPlaceholderText: { classPropertyName: "loadingPlaceholderText", publicName: "loadingPlaceholderText", isSignal: true, isRequired: false, transformFunction: null }, searchInputId: { classPropertyName: "searchInputId", publicName: "searchInputId", isSignal: true, isRequired: false, transformFunction: null }, inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsAlreadyGrouped: { classPropertyName: "itemsAlreadyGrouped", publicName: "itemsAlreadyGrouped", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, noGroupActions: { classPropertyName: "noGroupActions", publicName: "noGroupActions", isSignal: true, isRequired: false, transformFunction: null }, autoHighlightFirst: { classPropertyName: "autoHighlightFirst", publicName: "autoHighlightFirst", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, keepOpen: { classPropertyName: "keepOpen", publicName: "keepOpen", isSignal: true, isRequired: false, transformFunction: null }, hideSelected: { classPropertyName: "hideSelected", publicName: "hideSelected", isSignal: true, isRequired: false, transformFunction: null }, noBackspaceClear: { classPropertyName: "noBackspaceClear", publicName: "noBackspaceClear", isSignal: true, isRequired: false, transformFunction: null }, sortMultipleValues: { classPropertyName: "sortMultipleValues", publicName: "sortMultipleValues", isSignal: true, isRequired: false, transformFunction: null }, searchCaseSensitive: { classPropertyName: "searchCaseSensitive", publicName: "searchCaseSensitive", isSignal: true, isRequired: false, transformFunction: null }, keepSearchAfterSelect: { classPropertyName: "keepSearchAfterSelect", publicName: "keepSearchAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, itemDisplayLimit: { classPropertyName: "itemDisplayLimit", publicName: "itemDisplayLimit", isSignal: true, isRequired: false, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, dropdownAppearance: { classPropertyName: "dropdownAppearance", publicName: "dropdownAppearance", isSignal: true, isRequired: false, transformFunction: null }, dropdownVariant: { classPropertyName: "dropdownVariant", publicName: "dropdownVariant", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, addCustom: { classPropertyName: "addCustom", publicName: "addCustom", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelWidth: { classPropertyName: "dropdownPanelWidth", publicName: "dropdownPanelWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelHeight: { classPropertyName: "dropdownPanelHeight", publicName: "dropdownPanelHeight", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMinWidth: { classPropertyName: "dropdownPanelMinWidth", publicName: "dropdownPanelMinWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMinHeight: { classPropertyName: "dropdownPanelMinHeight", publicName: "dropdownPanelMinHeight", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMaxWidth: { classPropertyName: "dropdownPanelMaxWidth", publicName: "dropdownPanelMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMaxHeight: { classPropertyName: "dropdownPanelMaxHeight", publicName: "dropdownPanelMaxHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", addEvent: "add", failedToAddEvent: "failedToAdd", removeEvent: "remove", clearEvent: "clear", openEvent: "open", closeEvent: "close", scrollEvent: "scroll", scrollToEndEvent: "scrollToEnd", searchEvent: "search", isOpen: "isOpenChange" }, host: { listeners: { "window:resize": "onWindowResize()", "mouseup": "onMouseup()", "keydown": "onKeyPress($event)" }, properties: { "class.ard-group-items": "this._groupItemsHostAttribute" } }, providers: [
4330
4326
  {
4331
4327
  provide: NG_VALUE_ACCESSOR,
4332
4328
  useExisting: forwardRef(() => ArdiumSelectComponent),
@@ -4336,7 +4332,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
4336
4332
  provide: ARD_FORM_FIELD_CONTROL,
4337
4333
  useExisting: ArdiumSelectComponent,
4338
4334
  },
4339
- ], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdOptionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optgroupTemplate", first: true, predicate: ArdOptgroupTemplateDirective, descendants: true, isSignal: true }, { propertyName: "valueTemplate", first: true, predicate: ArdValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSelectPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: ArdLoadingSpinnerTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingPlaceholderTemplate", first: true, predicate: ArdLoadingPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownHeaderTemplate", first: true, predicate: ArdDropdownHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownFooterTemplate", first: true, predicate: ArdDropdownFooterTemplateDirective, descendants: true, isSignal: true }, { propertyName: "noItemsFoundTemplate", first: true, predicate: ArdNoItemsFoundTemplateDirective, descendants: true, isSignal: true }, { propertyName: "addCustomTemplate", first: true, predicate: ArdAddCustomTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemLimitReachedTemplate", first: true, predicate: ArdItemLimitReachedTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemDisplayLimitTemplate", first: true, predicate: ArdItemDisplayLimitTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdSelectPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSelectSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optionComponents", predicate: ArdiumOptionComponent }], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, read: ElementRef }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n } @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (group.label() | escapeHTML) : group.label()\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (option.label() | escapeHTML) : option.label()\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n </div>\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "component", type: ArdiumDeletableChipComponent, selector: "ard-deletable-chip", inputs: ["deleteButtonTitle", "contentAlignment", "appearance", "variant", "color", "compact", "wrapperClasses"], outputs: ["delete"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "pipe", type: i5.ArdiumEscapeHTMLPipe, name: "escapeHTML" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4335
+ ], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdOptionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optgroupTemplate", first: true, predicate: ArdOptgroupTemplateDirective, descendants: true, isSignal: true }, { propertyName: "valueTemplate", first: true, predicate: ArdValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSelectPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownArrowTemplate", first: true, predicate: ArdSelectDropdownArrowTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: ArdLoadingSpinnerTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingPlaceholderTemplate", first: true, predicate: ArdLoadingPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownHeaderTemplate", first: true, predicate: ArdDropdownHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownFooterTemplate", first: true, predicate: ArdDropdownFooterTemplateDirective, descendants: true, isSignal: true }, { propertyName: "noItemsFoundTemplate", first: true, predicate: ArdNoItemsFoundTemplateDirective, descendants: true, isSignal: true }, { propertyName: "addCustomTemplate", first: true, predicate: ArdAddCustomTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemLimitReachedTemplate", first: true, predicate: ArdItemLimitReachedTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemDisplayLimitTemplate", first: true, predicate: ArdItemDisplayLimitTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdSelectPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSelectSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optionComponents", predicate: ArdiumOptionComponent }], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"valueContextGenerator()(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-label=\"label\"\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-label=\"label\"\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n } @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <ng-template #defaultDropdownArrowTemplate>\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"dropdownArrowTemplate()?.template || defaultDropdownArrowTemplate\" />\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (!!group.label) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-label=\"label\"\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"groupContextGenerator()(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children; track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled || (itemStorage.isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently\"\r\n [attr.aria-selected]=\"option.selected\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-label=\"label\"\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n </div>\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "component", type: ArdiumDeletableChipComponent, selector: "ard-deletable-chip", inputs: ["deleteButtonTitle", "contentAlignment", "appearance", "variant", "color", "compact", "wrapperClasses"], outputs: ["delete"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "pipe", type: i5.ArdiumEscapeHTMLPipe, name: "escapeHTML" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4340
4336
  }
4341
4337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSelectComponent, decorators: [{
4342
4338
  type: Component,
@@ -4350,7 +4346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
4350
4346
  provide: ARD_FORM_FIELD_CONTROL,
4351
4347
  useExisting: ArdiumSelectComponent,
4352
4348
  },
4353
- ], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n } @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (group.label() | escapeHTML) : group.label()\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (option.label() | escapeHTML) : option.label()\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n </div>\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"] }]
4349
+ ], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"valueContextGenerator()(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-label=\"label\"\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-label=\"label\"\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n } @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <ng-template #defaultDropdownArrowTemplate>\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"dropdownArrowTemplate()?.template || defaultDropdownArrowTemplate\" />\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (!!group.label) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-label=\"label\"\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"groupContextGenerator()(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children; track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled || (itemStorage.isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently\"\r\n [attr.aria-selected]=\"option.selected\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-label=\"label\"\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n </div>\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"] }]
4354
4350
  }], ctorParameters: () => [{ type: undefined, decorators: [{
4355
4351
  type: Inject,
4356
4352
  args: [ARD_SELECT_DEFAULTS]
@@ -4364,12 +4360,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
4364
4360
  args: [ArdiumOptionComponent]
4365
4361
  }], value: [{
4366
4362
  type: Input
4367
- }], dropdownHost: [{
4368
- type: ViewChild,
4369
- args: ['dropdownHost', { read: ElementRef }]
4370
- }], dropdownTemplate: [{
4371
- type: ViewChild,
4372
- args: ['dropdownTemplate', { read: TemplateRef }]
4373
4363
  }], onWindowResize: [{
4374
4364
  type: HostListener,
4375
4365
  args: ['window:resize']
@@ -4595,7 +4585,8 @@ class ArdiumSelectModule {
4595
4585
  ArdItemDisplayLimitTemplateDirective,
4596
4586
  ArdAddCustomTemplateDirective,
4597
4587
  ArdSelectPrefixTemplateDirective,
4598
- ArdSelectSuffixTemplateDirective], imports: [CommonModule,
4588
+ ArdSelectSuffixTemplateDirective,
4589
+ ArdSelectDropdownArrowTemplateDirective], imports: [CommonModule,
4599
4590
  ArdiumFormFieldFrameModule,
4600
4591
  ArdiumDropdownPanelModule,
4601
4592
  ArdiumChipModule,
@@ -4617,7 +4608,8 @@ class ArdiumSelectModule {
4617
4608
  ArdItemDisplayLimitTemplateDirective,
4618
4609
  ArdAddCustomTemplateDirective,
4619
4610
  ArdSelectPrefixTemplateDirective,
4620
- ArdSelectSuffixTemplateDirective] }); }
4611
+ ArdSelectSuffixTemplateDirective,
4612
+ ArdSelectDropdownArrowTemplateDirective] }); }
4621
4613
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSelectModule, imports: [CommonModule,
4622
4614
  ArdiumFormFieldFrameModule,
4623
4615
  ArdiumDropdownPanelModule,
@@ -4647,6 +4639,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
4647
4639
  ArdAddCustomTemplateDirective,
4648
4640
  ArdSelectPrefixTemplateDirective,
4649
4641
  ArdSelectSuffixTemplateDirective,
4642
+ ArdSelectDropdownArrowTemplateDirective,
4650
4643
  ],
4651
4644
  imports: [
4652
4645
  CommonModule,
@@ -4675,6 +4668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
4675
4668
  ArdAddCustomTemplateDirective,
4676
4669
  ArdSelectPrefixTemplateDirective,
4677
4670
  ArdSelectSuffixTemplateDirective,
4671
+ ArdSelectDropdownArrowTemplateDirective,
4678
4672
  ],
4679
4673
  }]
4680
4674
  }] });
@@ -9094,46 +9088,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
9094
9088
  class SimpleItemStorage {
9095
9089
  constructor(_ardParentComp) {
9096
9090
  this._ardParentComp = _ardParentComp;
9097
- this._items = signal([]);
9098
- this._highlightedItems = signal([]);
9099
- this._selectedItems = signal([]);
9091
+ this._items = arraySignal([]);
9100
9092
  /**
9101
9093
  * Gets all items.
9102
9094
  */
9103
- this.items = this._items.asReadonly();
9095
+ this.items = computed(() => [...this._items()]);
9104
9096
  /**
9105
- * Gets all currently highlighted items.
9097
+ * Gets all currently selected items.
9106
9098
  */
9107
- this.highlightedItems = this._highlightedItems.asReadonly();
9099
+ this.selectedItems = computed(() => this.items().filter(item => item.selected));
9108
9100
  /**
9109
- * Gets all currently selected items.
9101
+ * Gets all currently highlighted items.
9110
9102
  */
9111
- this.selectedItems = this._selectedItems.asReadonly();
9103
+ this.highlightedItems = computed(() => this.items().filter(item => item.highlighted));
9112
9104
  /**
9113
9105
  * Gets the values of the currently selected items.
9114
9106
  */
9115
- this.value = computed(() => this._itemsToValue(this._selectedItems()));
9107
+ this.value = computed(() => this._itemsToValue(this.selectedItems()));
9116
9108
  /**
9117
9109
  * Returns true if at least one item is highlighted, otherwise false.
9118
9110
  */
9119
- this.isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);
9111
+ this.isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);
9112
+ /**
9113
+ * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.
9114
+ * @returns An array of all highlightable items.
9115
+ */
9116
+ this._highlightableItems = computed(() => this.items().filter(item => !item.disabled && (this.isItemLimitReached() ? item.selected : true)));
9117
+ this.itemsLeftUntilLimit = computed(() => this._ardParentComp.multiselectable() && isDefined(this._ardParentComp.maxSelectedItems())
9118
+ ? this._ardParentComp.maxSelectedItems() - this.selectedItems().length
9119
+ : 1);
9120
9120
  /**
9121
9121
  * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.
9122
9122
  *
9123
9123
  * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.
9124
9124
  */
9125
- this.isItemLimitReached = computed(() => {
9126
- const msi = this._ardParentComp.maxSelectedItems();
9127
- if (!this._ardParentComp.multiselectable() || !isDefined(msi)) {
9128
- return false;
9129
- }
9130
- return msi <= this.selectedItems().length;
9131
- });
9132
- /**
9133
- * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.
9134
- * @returns An array of all highlightable items.
9135
- */
9136
- this.highlightableItems = computed(() => this._items().filter(item => !item.disabled()));
9125
+ this.isItemLimitReached = computed(() => this.itemsLeftUntilLimit() <= 0);
9126
+ this._areItemsInitialized = false;
9127
+ this._valueBeforeItemsSet = null;
9137
9128
  }
9138
9129
  /**
9139
9130
  * Maps an array of items into their values.
@@ -9141,7 +9132,21 @@ class SimpleItemStorage {
9141
9132
  * @returns An array of item values.
9142
9133
  */
9143
9134
  _itemsToValue(items) {
9144
- return items.map(item => item.value());
9135
+ return items.map(item => item.value);
9136
+ }
9137
+ _updateItems(updateFn) {
9138
+ this._items.map(updateFn);
9139
+ }
9140
+ _updateItemsFromArray(updateFn, itemsToUpdate) {
9141
+ this._items.update(items => {
9142
+ for (const itemToUpdate of itemsToUpdate) {
9143
+ const item = items[itemToUpdate.index];
9144
+ if (item) {
9145
+ items[itemToUpdate.index] = updateFn(item);
9146
+ }
9147
+ }
9148
+ return items;
9149
+ });
9145
9150
  }
9146
9151
  /**
9147
9152
  * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.
@@ -9149,6 +9154,7 @@ class SimpleItemStorage {
9149
9154
  * @returns true if at least one of the items is of primitive type, otherwise false.
9150
9155
  */
9151
9156
  setItems(items) {
9157
+ this._areItemsInitialized = true;
9152
9158
  let areItemsPrimitive = false;
9153
9159
  if (items.some(isPrimitive)) {
9154
9160
  items = items.map(this._primitiveItemsMapFn);
@@ -9157,6 +9163,10 @@ class SimpleItemStorage {
9157
9163
  this._items.set(items.map((item, index) => {
9158
9164
  return this._setItemsMapFn(item, index, areItemsPrimitive);
9159
9165
  }));
9166
+ if (this._valueBeforeItemsSet !== null) {
9167
+ this.writeValue(this._valueBeforeItemsSet);
9168
+ this._valueBeforeItemsSet = null;
9169
+ }
9160
9170
  }
9161
9171
  _primitiveItemsMapFn(item) {
9162
9172
  return { value: item };
@@ -9164,13 +9174,13 @@ class SimpleItemStorage {
9164
9174
  _setItemsMapFn(rawItemData, index, areItemsPrimitive) {
9165
9175
  if (areItemsPrimitive) {
9166
9176
  return {
9167
- itemData: signal(rawItemData),
9177
+ itemData: rawItemData,
9168
9178
  index: index,
9169
- value: signal(rawItemData.value),
9170
- label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),
9171
- disabled: signal(false),
9172
- selected: signal(false),
9173
- highlighted: signal(false),
9179
+ value: rawItemData.value,
9180
+ label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
9181
+ disabled: false,
9182
+ selected: false,
9183
+ highlighted: false,
9174
9184
  };
9175
9185
  }
9176
9186
  //get value
@@ -9187,13 +9197,13 @@ class SimpleItemStorage {
9187
9197
  }
9188
9198
  //return
9189
9199
  return {
9190
- itemData: signal(rawItemData),
9200
+ itemData: rawItemData,
9191
9201
  index: index,
9192
- value: signal(value),
9193
- label: signal(label?.toString?.() ?? String(label)),
9194
- disabled: signal(disabled),
9195
- selected: signal(false),
9196
- highlighted: signal(false),
9202
+ value: value,
9203
+ label: label?.toString?.() ?? String(label),
9204
+ disabled: disabled,
9205
+ selected: false,
9206
+ highlighted: false,
9197
9207
  };
9198
9208
  }
9199
9209
  /**
@@ -9201,6 +9211,10 @@ class SimpleItemStorage {
9201
9211
  * @param ngModel The value of the ngModel to set.
9202
9212
  */
9203
9213
  writeValue(ngModel) {
9214
+ if (!this._areItemsInitialized) {
9215
+ this._valueBeforeItemsSet = ngModel;
9216
+ return;
9217
+ }
9204
9218
  this._forceUnselectAll();
9205
9219
  if (!this._validateWriteValue(ngModel))
9206
9220
  return;
@@ -9266,12 +9280,12 @@ class SimpleItemStorage {
9266
9280
  let findBy;
9267
9281
  const cmpFn = this._ardParentComp.compareWith();
9268
9282
  if (isDefined(cmpFn)) {
9269
- findBy = item => cmpFn(valueToFind, item.value());
9283
+ findBy = item => cmpFn(valueToFind, item.value);
9270
9284
  }
9271
9285
  else {
9272
- findBy = item => item.value() === valueToFind;
9286
+ findBy = item => item.value === valueToFind;
9273
9287
  }
9274
- return this._items().find(item => findBy(item));
9288
+ return this.items().find(item => findBy(item));
9275
9289
  }
9276
9290
  /**
9277
9291
  * Unselects all selected items.
@@ -9280,27 +9294,15 @@ class SimpleItemStorage {
9280
9294
  * @returns An array of items cleared, mapped to only their values.
9281
9295
  */
9282
9296
  unselectAll() {
9283
- for (const item of this._selectedItems()) {
9284
- item.selected.set(false);
9285
- }
9286
- const ret = this.value();
9287
- if (this._ardParentComp.isValueRequired() && this._selectedItems().length > 0) {
9288
- this._selectedItems().first().selected.set(true);
9289
- ret.splice(0, 1);
9290
- }
9291
- this._selectedItems.set([]);
9292
- return ret;
9297
+ return this.unselectItem(...this.selectedItems());
9293
9298
  }
9294
9299
  /**
9295
9300
  * Unselects all selected items, no matter what the component settings are.
9296
9301
  * @returns An array of items cleared, mapped to only their values.
9297
9302
  */
9298
9303
  _forceUnselectAll() {
9299
- for (const item of this._selectedItems()) {
9300
- item.selected.set(false);
9301
- }
9302
- const ret = this._itemsToValue(this._selectedItems());
9303
- this._selectedItems.set([]);
9304
+ const ret = this.value();
9305
+ this._updateItems(item => ({ ...item, selected: false }));
9304
9306
  return ret;
9305
9307
  }
9306
9308
  /**
@@ -9317,25 +9319,31 @@ class SimpleItemStorage {
9317
9319
  if (this.isItemLimitReached()) {
9318
9320
  return [[], [], this._itemsToValue(items)];
9319
9321
  }
9320
- let unselected = [];
9321
- if (!this._ardParentComp.multiselectable()) {
9322
- unselected = this._forceUnselectAll();
9323
- }
9322
+ const itemsLeftUntilLimit = this.itemsLeftUntilLimit();
9324
9323
  let itemsSelectedCount = 0;
9325
- const itemsSelected = [];
9324
+ const newItemsArray = [...this.items()];
9326
9325
  for (const item of items) {
9327
9326
  itemsSelectedCount++;
9328
- if (item.selected())
9327
+ if (item.selected)
9329
9328
  continue;
9330
- if (this.isItemLimitReached()) {
9329
+ if (itemsSelectedCount > itemsLeftUntilLimit) {
9331
9330
  break;
9332
9331
  }
9333
- item.selected.set(true);
9334
- itemsSelected.push(item);
9332
+ newItemsArray[item.index] = { ...item, selected: true };
9335
9333
  }
9336
- this._selectedItems.update(v => [...v, ...itemsSelected]);
9337
- const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);
9338
- return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];
9334
+ const itemsUnselected = this._ardParentComp.multiselectable()
9335
+ ? []
9336
+ : this.selectedItems().filter(item => !items.find(v => v.value === item.value));
9337
+ for (const item of itemsUnselected) {
9338
+ newItemsArray[item.index] = { ...item, selected: false };
9339
+ }
9340
+ const itemsSelected = items.slice(0, itemsSelectedCount);
9341
+ const itemsFailedToSelect = items.slice(itemsSelectedCount);
9342
+ const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this.selectedItems().find(v => v.value === item.value));
9343
+ if (isAnyNewItemToBeSelected) {
9344
+ this._items.set(newItemsArray);
9345
+ }
9346
+ return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsUnselected), this._itemsToValue(itemsFailedToSelect)];
9339
9347
  }
9340
9348
  /**
9341
9349
  *
@@ -9343,27 +9351,28 @@ class SimpleItemStorage {
9343
9351
  * @returns An array of items unselected, mapped to only their values.
9344
9352
  */
9345
9353
  unselectItem(...items) {
9346
- let skippedItem = false;
9347
- for (const item of items) {
9348
- if (this._ardParentComp.isValueRequired() && !skippedItem) {
9349
- skippedItem = true;
9350
- continue;
9354
+ let shouldKeepFirstSelected = this._ardParentComp.isValueRequired();
9355
+ const unselectedItems = [];
9356
+ this._updateItemsFromArray(item => {
9357
+ if (item.selected && shouldKeepFirstSelected) {
9358
+ shouldKeepFirstSelected = false;
9359
+ return item;
9351
9360
  }
9352
- if (!item.selected())
9353
- continue;
9354
- item.selected.set(false);
9355
- }
9356
- this._selectedItems.update(v => v.filter(v => v.selected()));
9357
- return this._itemsToValue(items);
9361
+ if (item.selected) {
9362
+ unselectedItems.push(item);
9363
+ }
9364
+ return {
9365
+ ...item,
9366
+ selected: false,
9367
+ };
9368
+ }, items);
9369
+ return this._itemsToValue(unselectedItems);
9358
9370
  }
9359
9371
  /**
9360
9372
  * Unhighlights all currently highlighted items.
9361
9373
  */
9362
9374
  unhighlightAll() {
9363
- for (const item of this._highlightedItems()) {
9364
- item.highlighted.set(false);
9365
- }
9366
- this._highlightedItems.set([]);
9375
+ this._updateItems(item => ({ ...item, highlighted: false }));
9367
9376
  }
9368
9377
  /**
9369
9378
  * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.
@@ -9371,7 +9380,7 @@ class SimpleItemStorage {
9371
9380
  * @returns The highlighted item.
9372
9381
  */
9373
9382
  highlightSingleItem(item) {
9374
- if (!item || item.disabled())
9383
+ if (!item || item.disabled)
9375
9384
  return null;
9376
9385
  this.unhighlightAll();
9377
9386
  return this.highlightItem(item);
@@ -9382,10 +9391,7 @@ class SimpleItemStorage {
9382
9391
  * @returns The last highlighted item.
9383
9392
  */
9384
9393
  highlightItem(...items) {
9385
- for (const item of items) {
9386
- item.highlighted.set(true);
9387
- }
9388
- this._highlightedItems.update(v => [...v, ...items]);
9394
+ this._updateItemsFromArray(item => ({ ...item, highlighted: true }), items);
9389
9395
  return items.last();
9390
9396
  }
9391
9397
  /**
@@ -9393,12 +9399,7 @@ class SimpleItemStorage {
9393
9399
  * @param items A rest operator array of items to be unhighlighted.
9394
9400
  */
9395
9401
  unhighlightItem(...items) {
9396
- for (const item of items) {
9397
- if (!item || !item.highlighted())
9398
- return;
9399
- item.highlighted.set(false);
9400
- }
9401
- this._highlightedItems.update(v => v.filter(v => v.highlighted()));
9402
+ this._updateItemsFromArray(item => ({ ...item, highlighted: false }), items);
9402
9403
  }
9403
9404
  /**
9404
9405
  * Highlights the first item out of all items.
@@ -9406,7 +9407,7 @@ class SimpleItemStorage {
9406
9407
  */
9407
9408
  highlightFirstItem() {
9408
9409
  this.unhighlightAll();
9409
- const itemToHighlight = this.highlightableItems().first();
9410
+ const itemToHighlight = this._highlightableItems().first();
9410
9411
  return this.highlightItem(itemToHighlight);
9411
9412
  }
9412
9413
  /**
@@ -9415,14 +9416,14 @@ class SimpleItemStorage {
9415
9416
  */
9416
9417
  highlightLastItem() {
9417
9418
  this.unhighlightAll();
9418
- const itemToHighlight = this.highlightableItems().last();
9419
+ const itemToHighlight = this._highlightableItems().last();
9419
9420
  return this.highlightItem(itemToHighlight);
9420
9421
  }
9421
9422
  /**
9422
9423
  * Highlights all non-disabled items.
9423
9424
  */
9424
9425
  highlightAllItems() {
9425
- const itemsToHighlight = this.highlightableItems();
9426
+ const itemsToHighlight = this._highlightableItems();
9426
9427
  this.highlightItem(...itemsToHighlight);
9427
9428
  }
9428
9429
  /**
@@ -9438,7 +9439,7 @@ class SimpleItemStorage {
9438
9439
  return this.highlightFirstItem();
9439
9440
  }
9440
9441
  const currentItem = this.highlightedItems().last();
9441
- const itemsWithoutDisabled = this._items().filter(item => !item.disabled() && (!this.isItemLimitReached() || item.selected()));
9442
+ const itemsWithoutDisabled = this._items().filter(item => !item.disabled && (!this.isItemLimitReached() || item.selected));
9442
9443
  const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index === currentItem.index);
9443
9444
  let nextItemIndex = currentIndexInItems + offset;
9444
9445
  if (nextItemIndex >= itemsWithoutDisabled.length) {
@@ -9449,7 +9450,7 @@ class SimpleItemStorage {
9449
9450
  }
9450
9451
  const itemToHighlight = itemsWithoutDisabled[nextItemIndex];
9451
9452
  if (hasShift && this._ardParentComp.multiselectable()) {
9452
- if (itemToHighlight.highlighted()) {
9453
+ if (itemToHighlight.highlighted) {
9453
9454
  this.unhighlightItem(currentItem);
9454
9455
  }
9455
9456
  return this.highlightItem(itemToHighlight);
@@ -9482,13 +9483,17 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
9482
9483
  this.disabledFrom = input(this._DEFAULTS.disabledFrom);
9483
9484
  this.compareWith = input(this._DEFAULTS.compareWith);
9484
9485
  //! multiselectable
9485
- this.multiselectable = input(this._DEFAULTS.multiselectable, { transform: v => coerceBooleanProperty(v) });
9486
+ this.multiselectable = input(this._DEFAULTS.multiselectable, {
9487
+ transform: v => coerceBooleanProperty(v),
9488
+ });
9486
9489
  this.singleselectable = computed(() => !this.multiselectable());
9487
9490
  //! require value
9488
9491
  this.requireValue = input(this._DEFAULTS.requireValue, { transform: v => coerceBooleanProperty(v) });
9489
9492
  this.isValueRequired = computed(() => this.requireValue() || !this.multiselectable());
9490
9493
  //! coerced properties
9491
- this.invertDisabled = input(this._DEFAULTS.invertDisabled, { transform: v => coerceBooleanProperty(v) });
9494
+ this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
9495
+ transform: v => coerceBooleanProperty(v),
9496
+ });
9492
9497
  this.maxSelectedItems = input(this._DEFAULTS.maxSelectedItems, {
9493
9498
  transform: v => coerceNumberProperty(v, undefined),
9494
9499
  });
@@ -9500,9 +9505,20 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
9500
9505
  this.highlightedItems = computed(() => this.itemStorage.highlightedItems());
9501
9506
  this.firstHighlightedItem = computed(() => this.highlightedItems()?.first());
9502
9507
  this.isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());
9508
+ //! context providers
9509
+ this.optionContextGenerator = computed(() => item => ({
9510
+ $implicit: item,
9511
+ item,
9512
+ index: item.index,
9513
+ value: item.value,
9514
+ label: item.label,
9515
+ selected: item.selected,
9516
+ highlighted: item.highlighted,
9517
+ itemData: item.itemData,
9518
+ disabled: item.disabled,
9519
+ }));
9503
9520
  this.valueChange = output();
9504
9521
  //! output events
9505
- this.changeEvent = output({ alias: 'change' });
9506
9522
  this.addEvent = output({ alias: 'add' });
9507
9523
  this.removeEvent = output({ alias: 'remove' });
9508
9524
  //! highligh-related
@@ -9539,7 +9555,6 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
9539
9555
  _emitChange() {
9540
9556
  const value = this.singleselectable() ? this.itemStorage.value()[0] : this.itemStorage.value();
9541
9557
  this._onChangeRegistered?.(value);
9542
- this.changeEvent.emit(value);
9543
9558
  this.valueChange.emit(value);
9544
9559
  }
9545
9560
  _onTouched() {
@@ -9561,14 +9576,6 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
9561
9576
  if (!this.touched())
9562
9577
  this.lastBlurTimestamp.set(Date.now());
9563
9578
  }
9564
- //! context providers
9565
- getOptionContext(item) {
9566
- return {
9567
- $implicit: item,
9568
- item,
9569
- itemData: item.itemData(),
9570
- };
9571
- }
9572
9579
  //! value input & output
9573
9580
  set value(newValue) {
9574
9581
  if (this.multiselectable() && !Array.isArray(newValue))
@@ -9577,7 +9584,7 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
9577
9584
  }
9578
9585
  //! item selection handlers
9579
9586
  toggleItem(item) {
9580
- if (item.selected()) {
9587
+ if (item.selected) {
9581
9588
  if (this.singleselectable())
9582
9589
  return;
9583
9590
  this.unselectItem(item);
@@ -9696,7 +9703,7 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
9696
9703
  this.itemStorage.highlightAllItems();
9697
9704
  }
9698
9705
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _SelectableListComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
9699
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: _SelectableListComponentBase, isStandalone: true, inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, requireValue: { classPropertyName: "requireValue", publicName: "requireValue", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change", addEvent: "add", removeEvent: "remove" }, host: { listeners: { "mousemove": "onMouseMove()", "keydown": "onKeyPress($event)" }, properties: { "attr.multiple": "this._multiselectableHostAttribute", "class.ard-multiselect": "this._multiselectableHostAttribute", "class.ard-require-value": "this._requireValueHostAttribute", "class.ard-touched": "this._touchedHostAttribute" } }, usesInheritance: true, ngImport: i0 }); }
9706
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: _SelectableListComponentBase, isStandalone: true, inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, requireValue: { classPropertyName: "requireValue", publicName: "requireValue", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", addEvent: "add", removeEvent: "remove" }, host: { listeners: { "mousemove": "onMouseMove()", "keydown": "onKeyPress($event)" }, properties: { "attr.multiple": "this._multiselectableHostAttribute", "class.ard-multiselect": "this._multiselectableHostAttribute", "class.ard-require-value": "this._requireValueHostAttribute", "class.ard-touched": "this._touchedHostAttribute" } }, usesInheritance: true, ngImport: i0 }); }
9700
9707
  }
9701
9708
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _SelectableListComponentBase, decorators: [{
9702
9709
  type: Directive
@@ -9865,7 +9872,7 @@ class ArdiumSegmentComponent extends _SelectableListComponentBase {
9865
9872
  provide: ARD_FORM_FIELD_CONTROL,
9866
9873
  useExisting: ArdiumSegmentComponent,
9867
9874
  },
9868
- ], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdSegmentOptionTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled() || (isItemLimitReached() && !option.selected())\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [ariaSelected]=\"option.selected()\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-segment-container{display:flex;flex-direction:column}.ard-segment-container.ard-align-left .ard-segment-option{justify-content:left}.ard-segment-container.ard-align-middle .ard-segment-option{justify-content:center}.ard-segment-container.ard-align-right .ard-segment-option{justify-content:right}.ard-segment-row{width:100%;display:flex;align-items:center}.ard-segment-row.ard-segment-row-uniform{display:grid;grid-template-columns:repeat(var(--ard-_segment-row-items),1fr)}.ard-segment-option{-webkit-user-select:none;user-select:none}.ard-option-disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9875
+ ], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdSegmentOptionTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled || (isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [ariaSelected]=\"option.selected\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-segment-container{display:flex;flex-direction:column}.ard-segment-container.ard-align-left .ard-segment-option{justify-content:left}.ard-segment-container.ard-align-middle .ard-segment-option{justify-content:center}.ard-segment-container.ard-align-right .ard-segment-option{justify-content:right}.ard-segment-row{width:100%;display:flex;align-items:center}.ard-segment-row.ard-segment-row-uniform{display:grid;grid-template-columns:repeat(var(--ard-_segment-row-items),1fr)}.ard-segment-option{-webkit-user-select:none;user-select:none}.ard-option-disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9869
9876
  }
9870
9877
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSegmentComponent, decorators: [{
9871
9878
  type: Component,
@@ -9879,7 +9886,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
9879
9886
  provide: ARD_FORM_FIELD_CONTROL,
9880
9887
  useExisting: ArdiumSegmentComponent,
9881
9888
  },
9882
- ], template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled() || (isItemLimitReached() && !option.selected())\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [ariaSelected]=\"option.selected()\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-segment-container{display:flex;flex-direction:column}.ard-segment-container.ard-align-left .ard-segment-option{justify-content:left}.ard-segment-container.ard-align-middle .ard-segment-option{justify-content:center}.ard-segment-container.ard-align-right .ard-segment-option{justify-content:right}.ard-segment-row{width:100%;display:flex;align-items:center}.ard-segment-row.ard-segment-row-uniform{display:grid;grid-template-columns:repeat(var(--ard-_segment-row-items),1fr)}.ard-segment-option{-webkit-user-select:none;user-select:none}.ard-option-disabled{pointer-events:none}\n"] }]
9889
+ ], template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled || (isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [ariaSelected]=\"option.selected\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-segment-container{display:flex;flex-direction:column}.ard-segment-container.ard-align-left .ard-segment-option{justify-content:left}.ard-segment-container.ard-align-middle .ard-segment-option{justify-content:center}.ard-segment-container.ard-align-right .ard-segment-option{justify-content:right}.ard-segment-row{width:100%;display:flex;align-items:center}.ard-segment-row.ard-segment-row-uniform{display:grid;grid-template-columns:repeat(var(--ard-_segment-row-items),1fr)}.ard-segment-option{-webkit-user-select:none;user-select:none}.ard-option-disabled{pointer-events:none}\n"] }]
9883
9890
  }], ctorParameters: () => [{ type: undefined, decorators: [{
9884
9891
  type: Inject,
9885
9892
  args: [ARD_SEGMENT_DEFAULTS]
@@ -11122,9 +11129,9 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
11122
11129
  this._componentId = '300';
11123
11130
  this._componentName = 'checkbox-list';
11124
11131
  this._itemStorage = new SimpleItemStorage(this);
11125
- this.valueFrom = input(this.DEFAULTS.valueFrom);
11126
- this.labelFrom = input(this.DEFAULTS.labelFrom);
11127
- this.disabledFrom = input(this.DEFAULTS.disabledFrom);
11132
+ this.valueFrom = input(this._DEFAULTS.valueFrom);
11133
+ this.labelFrom = input(this._DEFAULTS.labelFrom);
11134
+ this.disabledFrom = input(this._DEFAULTS.disabledFrom);
11128
11135
  this.compareWith = input(this._DEFAULTS.compareWith);
11129
11136
  this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
11130
11137
  transform: v => coerceBooleanProperty(v),
@@ -11138,11 +11145,21 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
11138
11145
  this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
11139
11146
  this.ngClasses = computed(() => [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' '));
11140
11147
  this.valueChange = output();
11141
- this.changeEvent = output({ alias: 'change' });
11142
11148
  this._isViewInit = false;
11143
11149
  //! templates
11144
11150
  this.checkboxTemplate = contentChild(ArdCheckboxListCheckboxTemplateDirective);
11145
11151
  this.labelTemplate = contentChild(ArdCheckboxListLabelTemplateDirective);
11152
+ this.labelContextGenerator = computed(() => item => ({
11153
+ $implicit: item,
11154
+ item,
11155
+ index: item.index,
11156
+ value: item.value,
11157
+ label: item.label,
11158
+ selected: item.selected,
11159
+ highlighted: item.highlighted,
11160
+ itemData: item.itemData,
11161
+ disabled: item.disabled,
11162
+ }));
11146
11163
  }
11147
11164
  get _htmlIdHostAttribute() {
11148
11165
  return this.htmlId();
@@ -11176,7 +11193,6 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
11176
11193
  _emitChange() {
11177
11194
  const v = this.value;
11178
11195
  this._onChangeRegistered?.(v);
11179
- this.changeEvent.emit(v);
11180
11196
  this.valueChange.emit(v);
11181
11197
  }
11182
11198
  onItemHighlight(v) {
@@ -11197,25 +11213,18 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
11197
11213
  this._emitChange();
11198
11214
  }
11199
11215
  toggleItem(v) {
11200
- if (v.selected()) {
11216
+ if (v.selected) {
11201
11217
  this.unselectItem(v);
11202
11218
  return;
11203
11219
  }
11204
11220
  this.selectItem(v);
11205
11221
  }
11206
- getLabelContext(item) {
11207
- return {
11208
- $implicit: item,
11209
- item,
11210
- itemData: item.itemData(),
11211
- };
11212
- }
11213
11222
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListComponent, deps: [{ token: ARD_CHECKBOX_LIST_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
11214
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumCheckboxListComponent, isStandalone: false, selector: "ard-checkbox-list", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change" }, host: { properties: { "attr.id": "this._htmlIdHostAttribute" } }, queries: [{ propertyName: "checkboxTemplate", first: true, predicate: ArdCheckboxListCheckboxTemplateDirective, descendants: true, isSignal: true }, { propertyName: "labelTemplate", first: true, predicate: ArdCheckboxListLabelTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n [class.ard-item-selected]=\"item.selected()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template _ard-tmp-repository [checkboxTmp]=\"checkboxTemplate()\" />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n <ng-template #defaultLabelTemplate let-labelItem>\r\n {{ labelItem.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"getLabelContext(item)\"\r\n />\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumCheckboxComponent, selector: "ard-checkbox", inputs: ["color", "unselectedColor", "state"], outputs: ["stateChange"] }, { kind: "directive", type: _CheckboxTemplateRepositoryDirective, selector: "ard-checkbox > ng-template[_ard-tmp-repository]", inputs: ["checkboxTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11223
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumCheckboxListComponent, isStandalone: false, selector: "ard-checkbox-list", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.id": "this._htmlIdHostAttribute" } }, queries: [{ propertyName: "checkboxTemplate", first: true, predicate: ArdCheckboxListCheckboxTemplateDirective, descendants: true, isSignal: true }, { propertyName: "labelTemplate", first: true, predicate: ArdCheckboxListLabelTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted\"\r\n [class.ard-item-disabled]=\"item.disabled\"\r\n [class.ard-item-selected]=\"item.selected\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected\"\r\n [disabled]=\"item.disabled\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [checkboxTmp]=\"checkboxTemplate()\"\r\n />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label=\"label\"\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"labelContextGenerator()(item)\"\r\n />\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumCheckboxComponent, selector: "ard-checkbox", inputs: ["color", "unselectedColor", "state"], outputs: ["stateChange"] }, { kind: "directive", type: _CheckboxTemplateRepositoryDirective, selector: "ard-checkbox > ng-template[_ard-tmp-repository]", inputs: ["checkboxTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11215
11224
  }
11216
11225
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListComponent, decorators: [{
11217
11226
  type: Component,
11218
- args: [{ standalone: false, selector: 'ard-checkbox-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n [class.ard-item-selected]=\"item.selected()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template _ard-tmp-repository [checkboxTmp]=\"checkboxTemplate()\" />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n <ng-template #defaultLabelTemplate let-labelItem>\r\n {{ labelItem.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"getLabelContext(item)\"\r\n />\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n" }]
11227
+ args: [{ standalone: false, selector: 'ard-checkbox-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted\"\r\n [class.ard-item-disabled]=\"item.disabled\"\r\n [class.ard-item-selected]=\"item.selected\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected\"\r\n [disabled]=\"item.disabled\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [checkboxTmp]=\"checkboxTemplate()\"\r\n />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label=\"label\"\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"labelContextGenerator()(item)\"\r\n />\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n" }]
11219
11228
  }], ctorParameters: () => [{ type: undefined, decorators: [{
11220
11229
  type: Inject,
11221
11230
  args: [ARD_CHECKBOX_LIST_DEFAULTS]
@@ -13039,7 +13048,7 @@ class ArdiumTablePaginationComponent extends _FocusableComponentBase {
13039
13048
  this._emitPageEvent();
13040
13049
  }
13041
13050
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTablePaginationComponent, deps: [{ token: ARD_TABLE_PAGINATION_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
13042
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumTablePaginationComponent, isStandalone: false, selector: "ard-table-pagination", inputs: { totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, useFirstLastButtons: { classPropertyName: "useFirstLastButtons", publicName: "useFirstLastButtons", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPageText: { classPropertyName: "itemsPerPageText", publicName: "itemsPerPageText", isSignal: true, isRequired: false, transformFunction: null }, currentItemsFormatFn: { classPropertyName: "currentItemsFormatFn", publicName: "currentItemsFormatFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsPerPage: "itemsPerPageChange", page: "pageChange", itemsPerPageChangeEvent: "itemsPerPageChange", pageChangeEvent: "pageChange" }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ArdiumSelectComponent, selector: "ard-select", inputs: ["valueFrom", "labelFrom", "disabledFrom", "groupLabelFrom", "groupDisabledFrom", "childrenFrom", "placeholder", "searchPlaceholder", "clearButtonTitle", "dropdownPosition", "noItemsFoundText", "addCustomOptionText", "loadingPlaceholderText", "searchInputId", "inputAttrs", "isLoading", "itemsAlreadyGrouped", "invertDisabled", "noGroupActions", "autoHighlightFirst", "autoFocus", "keepOpen", "hideSelected", "noBackspaceClear", "sortMultipleValues", "searchCaseSensitive", "keepSearchAfterSelect", "maxSelectedItems", "itemDisplayLimit", "searchFn", "compareWith", "appearance", "variant", "compact", "dropdownAppearance", "dropdownVariant", "items", "multiselectable", "clearable", "searchable", "addCustom", "value", "isOpen", "dropdownPanelWidth", "dropdownPanelHeight", "dropdownPanelMinWidth", "dropdownPanelMinHeight", "dropdownPanelMaxWidth", "dropdownPanelMaxHeight"], outputs: ["valueChange", "change", "add", "failedToAdd", "remove", "clear", "open", "close", "scroll", "scrollToEnd", "search", "isOpenChange"] }, { kind: "component", type: ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
13051
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumTablePaginationComponent, isStandalone: false, selector: "ard-table-pagination", inputs: { totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, useFirstLastButtons: { classPropertyName: "useFirstLastButtons", publicName: "useFirstLastButtons", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPageText: { classPropertyName: "itemsPerPageText", publicName: "itemsPerPageText", isSignal: true, isRequired: false, transformFunction: null }, currentItemsFormatFn: { classPropertyName: "currentItemsFormatFn", publicName: "currentItemsFormatFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsPerPage: "itemsPerPageChange", page: "pageChange", itemsPerPageChangeEvent: "itemsPerPageChange", pageChangeEvent: "pageChange" }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ArdiumSelectComponent, selector: "ard-select", inputs: ["valueFrom", "labelFrom", "disabledFrom", "groupLabelFrom", "groupDisabledFrom", "childrenFrom", "placeholder", "searchPlaceholder", "clearButtonTitle", "dropdownPosition", "noItemsFoundText", "addCustomOptionText", "loadingPlaceholderText", "searchInputId", "inputAttrs", "isLoading", "itemsAlreadyGrouped", "invertDisabled", "noGroupActions", "autoHighlightFirst", "autoFocus", "keepOpen", "hideSelected", "noBackspaceClear", "sortMultipleValues", "searchCaseSensitive", "keepSearchAfterSelect", "maxSelectedItems", "itemDisplayLimit", "searchFn", "compareWith", "appearance", "variant", "compact", "dropdownAppearance", "dropdownVariant", "items", "multiselectable", "clearable", "searchable", "addCustom", "value", "isOpen", "dropdownPanelWidth", "dropdownPanelHeight", "dropdownPanelMinWidth", "dropdownPanelMinHeight", "dropdownPanelMaxWidth", "dropdownPanelMaxHeight"], outputs: ["valueChange", "add", "failedToAdd", "remove", "clear", "open", "close", "scroll", "scrollToEnd", "search", "isOpenChange"] }, { kind: "component", type: ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
13043
13052
  }
13044
13053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTablePaginationComponent, decorators: [{
13045
13054
  type: Component,
@@ -14959,5 +14968,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
14959
14968
  * Generated bundle index. Do not edit.
14960
14969
  */
14961
14970
 
14962
- export { ARD_BADGE_DEFAULTS, ARD_BUTTON_DEFAULTS, ARD_CALENDAR_DEFAULTS, ARD_CARD_DEFAULTS, ARD_CHECKBOX_DEFAULTS, ARD_CHECKBOX_LIST_DEFAULTS, ARD_CHIP_DEFAULTS, ARD_DATE_INPUT_DEFAULTS, ARD_DELETABLE_CHIP_DEFAULTS, ARD_DIALOG_DEFAULTS, ARD_DIGIT_INPUT_DEFAULTS, ARD_DIVIDER_DEFAULTS, ARD_DROPDOWN_PANEL_DEFAULTS, ARD_FAB_DEFAULTS, ARD_FILE_DROP_AREA_DEFAULTS, ARD_FILE_INPUT_DEFAULTS, ARD_FORM_FIELD_CONTROL, ARD_FORM_FIELD_DEFAULTS, ARD_FORM_FIELD_FRAME_DEFAULTS, ARD_HEX_INPUT_DEFAULTS, ARD_ICON_BUTTON_DEFAULTS, ARD_ICON_DEFAULTS, ARD_KBD_DEFAULTS, ARD_KBD_SHORTCUT_DEFAULTS, ARD_MODAL_DEFAULTS, ARD_NUMBER_INPUT_DEFAULTS, ARD_PASSWORD_INPUT_DEFAULTS, ARD_PROGRESS_BAR_DEFAULTS, ARD_PROGRESS_CIRCLE_DEFAULTS, ARD_RADIO_DEFAULTS, ARD_RATING_DISPLAY_DEFAULTS, ARD_RATING_INPUT_DEFAULTS, ARD_SEGMENT_DEFAULTS, ARD_SELECTABLE_CHIP_DEFAULTS, ARD_SELECT_DEFAULTS, ARD_SIMPLE_INPUT_DEFAULTS, ARD_SLIDER_DEFAULTS, ARD_SLIDE_TOGGLE_DEFAULTS, ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DATA, ARD_SNACKBAR_DEFAULTS, ARD_SPINNER_DEFAULTS, ARD_STAR_BUTTON_DEFAULTS, ARD_STAR_DEFAULTS, ARD_STATEBOX_DEFAULTS, ARD_TABBER_DEFAULTS, ARD_TABLE_DEFAULTS, ARD_TABLE_FROM_CSV_DEFAULTS, ARD_TABLE_PAGINATION_DEFAULTS, ARD_TAB_DEFAULTS, ArdAddCustomTemplateDirective, ArdAutocompleteInputLoadingTemplateDirective, ArdAutocompleteInputPlaceholderTemplateDirective, ArdAutocompleteInputPrefixTemplateDirective, ArdAutocompleteInputSuffixTemplateDirective, ArdAutocompleteInputSuggestionTemplateDirective, ArdCalendarDayTemplateDirective, ArdCalendarDaysViewHeaderTemplateDirective, ArdCalendarFloatingMonthTemplateDirective, ArdCalendarMonthTemplateDirective, ArdCalendarMonthsViewHeaderTemplateDirective, ArdCalendarView, ArdCalendarWeekdayTemplateDirective, ArdCalendarYearTemplateDirective, ArdCalendarYearsViewHeaderTemplateDirective, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective, ArdCheckboxTemplateDirective, ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputDayTemplateDirective, ArdDateInputDaysViewHeaderTemplateDirective, ArdDateInputFloatingMonthTemplateDirective, ArdDateInputMinMaxStrategy, ArdDateInputMonthTemplateDirective, ArdDateInputMonthsViewHeaderTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, ArdDateInputWeekdayTemplateDirective, ArdDateInputYearTemplateDirective, ArdDateInputYearsViewHeaderTemplateDirective, ArdDialogActionType, ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective, ArdDialogResult, ArdDropdownFooterTemplateDirective, ArdDropdownHeaderTemplateDirective, ArdFileInputPlaceholderTemplateDirective, ArdFileInputPrefixTemplateDirective, ArdFileInputSuffixTemplateDirective, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective, ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective, ArdInputPlaceholderTemplateDirective, ArdInputPrefixTemplateDirective, ArdInputSuffixTemplateDirective, ArdItemDisplayLimitTemplateDirective, ArdItemLimitReachedTemplateDirective, ArdLoadingPlaceholderTemplateDirective, ArdLoadingSpinnerTemplateDirective, ArdModalCloseIconTemplateDirective, ArdNoItemsFoundTemplateDirective, ArdNumberInputPlaceholderTemplateDirective, ArdOptgroupTemplateDirective, ArdOptionTemplateDirective, ArdPanelPosition, ArdPasswordInputPlaceholderTemplateDirective, ArdPasswordInputPrefixTemplateDirective, ArdPasswordInputRevealButtonTemplateDirective, ArdPasswordInputSuffixTemplateDirective, ArdProgressBarValueTemplateDirective, ArdProgressCircleValueTemplateDirective, ArdRatingDisplayStarTemplateDirective, ArdRatingInputStarButtonTemplateDirective, searchFunctions as ArdSearchFunction, ArdSegmentOptionTemplateDirective, ArdSelectPlaceholderTemplateDirective, ArdSelectPrefixTemplateDirective, ArdSelectSuffixTemplateDirective, ArdSlideToggleAppearance, ArdSliderTooltipDirective, ArdSnackbarAlignment, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarRef, ArdSnackbarType, ArdStarButtonStarTemplateDirective, ArdStarIconTemplateDirective, ArdTabberLabelTemplateDirective, ArdValueChipTemplateDirective, ArdValueTemplateDirective, ArdiumAutocompleteInputComponent, ArdiumAutocompleteInputModule, ArdiumBadgeDirective, ArdiumBadgeModule, ArdiumButtonComponent, ArdiumButtonModule, ArdiumCalendarComponent, ArdiumCalendarModule, ArdiumCardActionButtonsDirective, ArdiumCardAvatarDirective, ArdiumCardComponent, ArdiumCardContentDirective, ArdiumCardDirective, ArdiumCardFooterDirective, ArdiumCardHeaderComponent, ArdiumCardImageDirective, ArdiumCardModule, ArdiumCardSubtitleDirective, ArdiumCardTitleDirective, ArdiumCheckboxComponent, ArdiumCheckboxListComponent, ArdiumCheckboxListModule, ArdiumCheckboxModule, ArdiumChipComponent, ArdiumChipModule, ArdiumDateInputComponent, ArdiumDateInputModule, ArdiumDeletableChipComponent, ArdiumDialogComponent, ArdiumDialogModule, ArdiumDigitInputComponent, ArdiumDigitInputModule, ArdiumDividerComponent, ArdiumDividerModule, ArdiumDropdownPanelComponent, ArdiumDropdownPanelModule, ArdiumErrorComponent, ArdiumErrorDirective, ArdiumFabComponent, ArdiumFabModule, ArdiumFileDropAreaComponent, ArdiumFileDropAreaDragoverContentTemplateDirective, ArdiumFileDropAreaIdleContentTemplateDirective, ArdiumFileDropAreaModule, ArdiumFileDropAreaUploadedContentTemplateDirective, ArdiumFileInputComponent, ArdiumFileInputDragoverContentTemplateDirective, ArdiumFileInputFolderIconTemplateDirective, ArdiumFileInputIdleContentTemplateDirective, ArdiumFileInputModule, ArdiumFileInputUploadedContentTemplateDirective, ArdiumFormFieldComponent, ArdiumFormFieldFrameComponent, ArdiumFormFieldFrameModule, ArdiumFormFieldModule, ArdiumFormFieldNativeInputAdapterDirective, ArdiumHexInputComponent, ArdiumHexInputModule, ArdiumHintComponent, ArdiumHintDirective, ArdiumHintErrorComponent, ArdiumHintErrorDirective, ArdiumHorizontalFormFieldComponent, ArdiumIconButtonComponent, ArdiumIconButtonModule, ArdiumIconComponent, ArdiumIconModule, ArdiumIconPipe, ArdiumInputComponent, ArdiumInputModule, ArdiumKbdComponent, ArdiumKbdDirective, ArdiumKbdModule, ArdiumKbdPipe, ArdiumKbdShortcutComponent, ArdiumKbdShortcutModule, ArdiumLabelComponent, ArdiumModalComponent, ArdiumModalModule, ArdiumNumberInputComponent, ArdiumNumberInputModule, ArdiumOptionComponent, ArdiumOptionModule, ArdiumPasswordInputComponent, ArdiumPasswordInputModule, ArdiumProgressBarComponent, ArdiumProgressBarModule, ArdiumProgressCircleComponent, ArdiumProgressCircleModule, ArdiumRadioComponent, ArdiumRadioGroupComponent, ArdiumRadioModule, ArdiumRangeSliderComponent, ArdiumRangeSliderModule, ArdiumRatingDisplayComponent, ArdiumRatingDisplayModule, ArdiumRatingInputComponent, ArdiumRatingInputModule, ArdiumSegmentComponent, ArdiumSegmentModule, ArdiumSelectComponent, ArdiumSelectModule, ArdiumSelectableChipComponent, ArdiumSlideToggleComponent, ArdiumSlideToggleModule, ArdiumSliderComponent, ArdiumSliderModule, ArdiumSnackbarService, ArdiumSpinnerComponent, ArdiumSpinnerModule, ArdiumStarButtonComponent, ArdiumStarButtonModule, ArdiumStarComponent, ArdiumStarModule, ArdiumStateboxComponent, ArdiumStateboxModule, ArdiumTabComponent, ArdiumTabberComponent, ArdiumTabberModule, ArdiumTableCaptionTemplateDirective, ArdiumTableCheckboxTemplateDirective, ArdiumTableComponent, ArdiumTableFromCsvComponent, ArdiumTableFromCsvModule, ArdiumTableHeaderCheckboxTemplateDirective, ArdiumTableModule, ArdiumTablePaginationComponent, ArdiumTablePaginationModule, ArdiumTablePaginationTemplateDirective, ArdiumTableTemplateDirective, ArdiumTextListComponent, ArdiumTextListModule, ArdiumTextListPipe, BadgePosition, BadgeSize, ButtonAppearance, ButtonVariant, CardAppearance, CardVariant, CheckboxListAlignType, CheckboxState, ClickStrategy, ComponentColor, DecorationElementAppearance, DigitInputPrimitiveOption, DigitInputShape, DropdownPanelAppearance, DropdownPanelVariant, FabSize, FormElementAppearance, FormElementVariant, OneAxisAlignment, OutlinedAppearance, PaginationAlign, PanelAppearance, PanelVariant, ProgressBarAppearance, ProgressBarMode, ProgressBarSize, ProgressBarVariant, ProgressCircleAppearance, ProgressCircleVariant, SegmentAppearance, SegmentVariant, SimpleComponentColor, SimpleOneAxisAlignment, SliderDecorationPosition, SliderTooltipBehavior, SortType, StarColor, StarFillMode, TableAlignType, TableAppearance, TablePaginationStrategy, TableVariant, TransformType, _chipDefaults, _modalDefaults, provideBadgeDefaults, provideButtonDefaults, provideCalendarDefaults, provideCardDefaults, provideCheckboxDefaults, provideCheckboxListDefaults, provideChipDefaults, provideDateInputDefaults, provideDeletableChipDefaults, provideDialogDefaults, provideDigitInputDefaults, provideDividerDefaults, provideDropdownPanelDefaults, provideFabDefaults, provideFileDropAreaDefaults, provideFileInputDefaults, provideFormFieldDefaults, provideFormFieldFrameDefaults, provideHexInputDefaults, provideIconButtonDefaults, provideIconDefaults, provideInputDefaults, provideKbdDefaults, provideKbdShortcutDefaults, provideModalDefaults, provideNumberInputDefaults, providePasswordInputDefaults, provideProgressBarDefaults, provideProgressCircleDefaults, provideRadioDefaults, provideRatingDisplayDefaults, provideRatingInputDefaults, provideSegmentDefaults, provideSelectDefaults, provideSelectableChipDefaults, provideSlideToggleDefaults, provideSliderDefaults, provideSnackbarDefaults, provideSpinnerDefaults, provideStarButtonDefaults, provideStarDefaults, provideStateboxDefaults, provideTabDefaults, provideTabberDefaults, provideTableDefaults, provideTableFromCsvDefaults, provideTablePaginationDefaults, searchInString };
14971
+ export { ARD_BADGE_DEFAULTS, ARD_BUTTON_DEFAULTS, ARD_CALENDAR_DEFAULTS, ARD_CARD_DEFAULTS, ARD_CHECKBOX_DEFAULTS, ARD_CHECKBOX_LIST_DEFAULTS, ARD_CHIP_DEFAULTS, ARD_DATE_INPUT_DEFAULTS, ARD_DELETABLE_CHIP_DEFAULTS, ARD_DIALOG_DEFAULTS, ARD_DIGIT_INPUT_DEFAULTS, ARD_DIVIDER_DEFAULTS, ARD_DROPDOWN_PANEL_DEFAULTS, ARD_FAB_DEFAULTS, ARD_FILE_DROP_AREA_DEFAULTS, ARD_FILE_INPUT_DEFAULTS, ARD_FORM_FIELD_CONTROL, ARD_FORM_FIELD_DEFAULTS, ARD_FORM_FIELD_FRAME_DEFAULTS, ARD_HEX_INPUT_DEFAULTS, ARD_ICON_BUTTON_DEFAULTS, ARD_ICON_DEFAULTS, ARD_KBD_DEFAULTS, ARD_KBD_SHORTCUT_DEFAULTS, ARD_MODAL_DEFAULTS, ARD_NUMBER_INPUT_DEFAULTS, ARD_PASSWORD_INPUT_DEFAULTS, ARD_PROGRESS_BAR_DEFAULTS, ARD_PROGRESS_CIRCLE_DEFAULTS, ARD_RADIO_DEFAULTS, ARD_RATING_DISPLAY_DEFAULTS, ARD_RATING_INPUT_DEFAULTS, ARD_SEGMENT_DEFAULTS, ARD_SELECTABLE_CHIP_DEFAULTS, ARD_SELECT_DEFAULTS, ARD_SIMPLE_INPUT_DEFAULTS, ARD_SLIDER_DEFAULTS, ARD_SLIDE_TOGGLE_DEFAULTS, ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DATA, ARD_SNACKBAR_DEFAULTS, ARD_SPINNER_DEFAULTS, ARD_STAR_BUTTON_DEFAULTS, ARD_STAR_DEFAULTS, ARD_STATEBOX_DEFAULTS, ARD_TABBER_DEFAULTS, ARD_TABLE_DEFAULTS, ARD_TABLE_FROM_CSV_DEFAULTS, ARD_TABLE_PAGINATION_DEFAULTS, ARD_TAB_DEFAULTS, ArdAddCustomTemplateDirective, ArdAutocompleteInputLoadingTemplateDirective, ArdAutocompleteInputPlaceholderTemplateDirective, ArdAutocompleteInputPrefixTemplateDirective, ArdAutocompleteInputSuffixTemplateDirective, ArdAutocompleteInputSuggestionTemplateDirective, ArdCalendarDayTemplateDirective, ArdCalendarDaysViewHeaderTemplateDirective, ArdCalendarFloatingMonthTemplateDirective, ArdCalendarMonthTemplateDirective, ArdCalendarMonthsViewHeaderTemplateDirective, ArdCalendarView, ArdCalendarWeekdayTemplateDirective, ArdCalendarYearTemplateDirective, ArdCalendarYearsViewHeaderTemplateDirective, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective, ArdCheckboxTemplateDirective, ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputDayTemplateDirective, ArdDateInputDaysViewHeaderTemplateDirective, ArdDateInputFloatingMonthTemplateDirective, ArdDateInputMinMaxStrategy, ArdDateInputMonthTemplateDirective, ArdDateInputMonthsViewHeaderTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, ArdDateInputWeekdayTemplateDirective, ArdDateInputYearTemplateDirective, ArdDateInputYearsViewHeaderTemplateDirective, ArdDialogActionType, ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective, ArdDialogResult, ArdDropdownFooterTemplateDirective, ArdDropdownHeaderTemplateDirective, ArdFileInputPlaceholderTemplateDirective, ArdFileInputPrefixTemplateDirective, ArdFileInputSuffixTemplateDirective, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective, ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective, ArdInputPlaceholderTemplateDirective, ArdInputPrefixTemplateDirective, ArdInputSuffixTemplateDirective, ArdItemDisplayLimitTemplateDirective, ArdItemLimitReachedTemplateDirective, ArdLoadingPlaceholderTemplateDirective, ArdLoadingSpinnerTemplateDirective, ArdModalCloseIconTemplateDirective, ArdNoItemsFoundTemplateDirective, ArdNumberInputPlaceholderTemplateDirective, ArdOptgroupTemplateDirective, ArdOptionTemplateDirective, ArdPanelPosition, ArdPasswordInputPlaceholderTemplateDirective, ArdPasswordInputPrefixTemplateDirective, ArdPasswordInputRevealButtonTemplateDirective, ArdPasswordInputSuffixTemplateDirective, ArdProgressBarValueTemplateDirective, ArdProgressCircleValueTemplateDirective, ArdRatingDisplayStarTemplateDirective, ArdRatingInputStarButtonTemplateDirective, searchFunctions as ArdSearchFunction, ArdSegmentOptionTemplateDirective, ArdSelectDropdownArrowTemplateDirective, ArdSelectPlaceholderTemplateDirective, ArdSelectPrefixTemplateDirective, ArdSelectSuffixTemplateDirective, ArdSlideToggleAppearance, ArdSliderTooltipDirective, ArdSnackbarAlignment, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarRef, ArdSnackbarType, ArdStarButtonStarTemplateDirective, ArdStarIconTemplateDirective, ArdTabberLabelTemplateDirective, ArdValueChipTemplateDirective, ArdValueTemplateDirective, ArdiumAutocompleteInputComponent, ArdiumAutocompleteInputModule, ArdiumBadgeDirective, ArdiumBadgeModule, ArdiumButtonComponent, ArdiumButtonModule, ArdiumCalendarComponent, ArdiumCalendarModule, ArdiumCardActionButtonsDirective, ArdiumCardAvatarDirective, ArdiumCardComponent, ArdiumCardContentDirective, ArdiumCardDirective, ArdiumCardFooterDirective, ArdiumCardHeaderComponent, ArdiumCardImageDirective, ArdiumCardModule, ArdiumCardSubtitleDirective, ArdiumCardTitleDirective, ArdiumCheckboxComponent, ArdiumCheckboxListComponent, ArdiumCheckboxListModule, ArdiumCheckboxModule, ArdiumChipComponent, ArdiumChipModule, ArdiumDateInputComponent, ArdiumDateInputModule, ArdiumDeletableChipComponent, ArdiumDialogComponent, ArdiumDialogModule, ArdiumDigitInputComponent, ArdiumDigitInputModule, ArdiumDividerComponent, ArdiumDividerModule, ArdiumDropdownPanelComponent, ArdiumDropdownPanelModule, ArdiumErrorComponent, ArdiumErrorDirective, ArdiumFabComponent, ArdiumFabModule, ArdiumFileDropAreaComponent, ArdiumFileDropAreaDragoverContentTemplateDirective, ArdiumFileDropAreaIdleContentTemplateDirective, ArdiumFileDropAreaModule, ArdiumFileDropAreaUploadedContentTemplateDirective, ArdiumFileInputComponent, ArdiumFileInputDragoverContentTemplateDirective, ArdiumFileInputFolderIconTemplateDirective, ArdiumFileInputIdleContentTemplateDirective, ArdiumFileInputModule, ArdiumFileInputUploadedContentTemplateDirective, ArdiumFormFieldComponent, ArdiumFormFieldFrameComponent, ArdiumFormFieldFrameModule, ArdiumFormFieldModule, ArdiumFormFieldNativeInputAdapterDirective, ArdiumHexInputComponent, ArdiumHexInputModule, ArdiumHintComponent, ArdiumHintDirective, ArdiumHintErrorComponent, ArdiumHintErrorDirective, ArdiumHorizontalFormFieldComponent, ArdiumIconButtonComponent, ArdiumIconButtonModule, ArdiumIconComponent, ArdiumIconModule, ArdiumIconPipe, ArdiumInputComponent, ArdiumInputModule, ArdiumKbdComponent, ArdiumKbdDirective, ArdiumKbdModule, ArdiumKbdPipe, ArdiumKbdShortcutComponent, ArdiumKbdShortcutModule, ArdiumLabelComponent, ArdiumModalComponent, ArdiumModalModule, ArdiumNumberInputComponent, ArdiumNumberInputModule, ArdiumOptionComponent, ArdiumOptionModule, ArdiumPasswordInputComponent, ArdiumPasswordInputModule, ArdiumProgressBarComponent, ArdiumProgressBarModule, ArdiumProgressCircleComponent, ArdiumProgressCircleModule, ArdiumRadioComponent, ArdiumRadioGroupComponent, ArdiumRadioModule, ArdiumRangeSliderComponent, ArdiumRangeSliderModule, ArdiumRatingDisplayComponent, ArdiumRatingDisplayModule, ArdiumRatingInputComponent, ArdiumRatingInputModule, ArdiumSegmentComponent, ArdiumSegmentModule, ArdiumSelectComponent, ArdiumSelectModule, ArdiumSelectableChipComponent, ArdiumSlideToggleComponent, ArdiumSlideToggleModule, ArdiumSliderComponent, ArdiumSliderModule, ArdiumSnackbarService, ArdiumSpinnerComponent, ArdiumSpinnerModule, ArdiumStarButtonComponent, ArdiumStarButtonModule, ArdiumStarComponent, ArdiumStarModule, ArdiumStateboxComponent, ArdiumStateboxModule, ArdiumTabComponent, ArdiumTabberComponent, ArdiumTabberModule, ArdiumTableCaptionTemplateDirective, ArdiumTableCheckboxTemplateDirective, ArdiumTableComponent, ArdiumTableFromCsvComponent, ArdiumTableFromCsvModule, ArdiumTableHeaderCheckboxTemplateDirective, ArdiumTableModule, ArdiumTablePaginationComponent, ArdiumTablePaginationModule, ArdiumTablePaginationTemplateDirective, ArdiumTableTemplateDirective, ArdiumTextListComponent, ArdiumTextListModule, ArdiumTextListPipe, BadgePosition, BadgeSize, ButtonAppearance, ButtonVariant, CardAppearance, CardVariant, CheckboxListAlignType, CheckboxState, ClickStrategy, ComponentColor, DecorationElementAppearance, DigitInputPrimitiveOption, DigitInputShape, DropdownPanelAppearance, DropdownPanelVariant, FabSize, FormElementAppearance, FormElementVariant, OneAxisAlignment, OutlinedAppearance, PaginationAlign, PanelAppearance, PanelVariant, ProgressBarAppearance, ProgressBarMode, ProgressBarSize, ProgressBarVariant, ProgressCircleAppearance, ProgressCircleVariant, SegmentAppearance, SegmentVariant, SimpleComponentColor, SimpleOneAxisAlignment, SliderDecorationPosition, SliderTooltipBehavior, SortType, StarColor, StarFillMode, TableAlignType, TableAppearance, TablePaginationStrategy, TableVariant, TransformType, _chipDefaults, _modalDefaults, provideBadgeDefaults, provideButtonDefaults, provideCalendarDefaults, provideCardDefaults, provideCheckboxDefaults, provideCheckboxListDefaults, provideChipDefaults, provideDateInputDefaults, provideDeletableChipDefaults, provideDialogDefaults, provideDigitInputDefaults, provideDividerDefaults, provideDropdownPanelDefaults, provideFabDefaults, provideFileDropAreaDefaults, provideFileInputDefaults, provideFormFieldDefaults, provideFormFieldFrameDefaults, provideHexInputDefaults, provideIconButtonDefaults, provideIconDefaults, provideInputDefaults, provideKbdDefaults, provideKbdShortcutDefaults, provideModalDefaults, provideNumberInputDefaults, providePasswordInputDefaults, provideProgressBarDefaults, provideProgressCircleDefaults, provideRadioDefaults, provideRatingDisplayDefaults, provideRatingInputDefaults, provideSegmentDefaults, provideSelectDefaults, provideSelectableChipDefaults, provideSlideToggleDefaults, provideSliderDefaults, provideSnackbarDefaults, provideSpinnerDefaults, provideStarButtonDefaults, provideStarDefaults, provideStateboxDefaults, provideTabDefaults, provideTabberDefaults, provideTableDefaults, provideTableFromCsvDefaults, provideTablePaginationDefaults, searchInString };
14963
14972
  //# sourceMappingURL=ardium-ui-ui.mjs.map