@fundamental-ngx/platform 0.46.2-rc.7 → 0.46.2-rc.9

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.
@@ -1,6 +1,6 @@
1
1
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ContentChild, InjectionToken, Directive, Injectable, Inject, forwardRef, EventEmitter, TemplateRef, ElementRef, Optional, Self, SkipSelf, Output, ViewChild, ContentChildren, ViewChildren, Host, NgModule, Attribute, HostListener, Injector, Pipe, isDevMode, LOCALE_ID } from '@angular/core';
3
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ContentChild, InjectionToken, Directive, Injectable, Inject, forwardRef, EventEmitter, TemplateRef, ElementRef, Optional, Self, SkipSelf, Output, ViewChild, ContentChildren, ViewChildren, Host, NgModule, Attribute, HostListener, Injector, Pipe, inject, isDevMode, LOCALE_ID } from '@angular/core';
4
4
  import * as i1$1 from '@angular/forms';
5
5
  import { Validators, FormControl, FormGroup, FormsModule, ReactiveFormsModule, NgForm, NgControl, FormGroupDirective } from '@angular/forms';
6
6
  import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
@@ -44,9 +44,10 @@ import { TokenizerComponent, TokenComponent, TokenizerInputDirective } from '@fu
44
44
  import * as i7 from '@fundamental-ngx/platform/list';
45
45
  import { FdpListComponent, ListComponent as ListComponent$1, BaseListItem, PlatformListModule, StandardListItemModule } from '@fundamental-ngx/platform/list';
46
46
  import * as i5 from '@fundamental-ngx/core/content-density';
47
- import { contentDensityObserverProviders, ContentDensityModule, CONTENT_DENSITY_DIRECTIVE, ContentDensityGlobalKeyword } from '@fundamental-ngx/core/content-density';
47
+ import { contentDensityObserverProviders, ContentDensityModule, CONTENT_DENSITY_DIRECTIVE, ContentDensityGlobalKeyword, ContentDensityDirective } from '@fundamental-ngx/core/content-density';
48
48
  import * as i6 from '@fundamental-ngx/core/input-group';
49
49
  import { InputGroupModule } from '@fundamental-ngx/core/input-group';
50
+ import { MultiAnnouncerDirective } from '@fundamental-ngx/core/multi-combobox';
50
51
  import equal from 'fast-deep-equal';
51
52
  import { MobileModeBase, MobileModeControl, MOBILE_MODE_CONFIG } from '@fundamental-ngx/core/mobile-mode';
52
53
  import { CdkScrollable } from '@angular/cdk/overlay';
@@ -4747,7 +4748,7 @@ class PlatformMultiInputComponent extends BaseMultiInput {
4747
4748
  multi: true
4748
4749
  },
4749
4750
  contentDensityObserverProviders()
4750
- ], viewQueries: [{ propertyName: "listTemplateDD", first: true, predicate: ListComponent$1, descendants: true }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_listItems", predicate: BaseListItem, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: PlatformListModule }, { kind: "component", type: i7.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator"], outputs: ["selectedItemChange"] }, { kind: "component", type: i7.ListGroupHeaderComponent, selector: "fdp-list-group-header", inputs: ["groupHeaderTitle"] }, { kind: "component", type: i7.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "ngmodule", type: StandardListItemModule }, { kind: "pipe", type: DisplayFnPipe, name: "displayFnPipe" }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4751
+ ], viewQueries: [{ propertyName: "listTemplateDD", first: true, predicate: ListComponent$1, descendants: true }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_listItems", predicate: BaseListItem, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: PlatformListModule }, { kind: "component", type: i7.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator"], outputs: ["selectedItemChange"] }, { kind: "component", type: i7.ListGroupHeaderComponent, selector: "fdp-list-group-header", inputs: ["groupHeaderTitle"] }, { kind: "component", type: i7.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "ngmodule", type: StandardListItemModule }, { kind: "pipe", type: DisplayFnPipe, name: "displayFnPipe" }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: MultiAnnouncerDirective, selector: "[fdMultiAnnouncer]", inputs: ["multiAnnouncerOptions"], exportAs: ["fdMultiAnnouncer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4751
4752
  }
4752
4753
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiInputComponent, decorators: [{
4753
4754
  type: Component,
@@ -4777,8 +4778,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
4777
4778
  StandardListItemModule,
4778
4779
  DisplayFnPipe,
4779
4780
  ContentDensityModule,
4780
- FdTranslatePipe
4781
- ], template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"] }]
4781
+ FdTranslatePipe,
4782
+ MultiAnnouncerDirective
4783
+ ], template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"] }]
4782
4784
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.NgControl, decorators: [{
4783
4785
  type: Optional
4784
4786
  }, {
@@ -6373,37 +6375,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
6373
6375
  }]
6374
6376
  }] });
6375
6377
 
6376
- /**
6377
- * Default options for Combobox
6378
- */
6379
- class ComboboxConfig {
6380
- /**
6381
- * Create Provider factory function
6382
- */
6383
- static createProviderFactory(obj) {
6384
- const useFactory = (platformConfig) => Object.assign(new ComboboxConfig(platformConfig), obj);
6385
- return useFactory;
6386
- }
6387
- /** @hidden */
6388
- constructor(platformConfig) {
6389
- /**
6390
- * String matching strategy for typeahead list. Default: 'starts with per term'
6391
- */
6392
- this.matchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;
6393
- /**
6394
- * Maps data providers
6395
- */
6396
- this.providers = new Map();
6397
- this.contentDensity = platformConfig.contentDensity;
6398
- }
6399
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxConfig, deps: [{ token: i1.PlatformConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
6400
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxConfig, providedIn: 'root' }); }
6401
- }
6402
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxConfig, decorators: [{
6403
- type: Injectable,
6404
- args: [{ providedIn: 'root' }]
6405
- }], ctorParameters: function () { return [{ type: i1.PlatformConfig }]; } });
6406
-
6407
6378
  const COMBOBOX_COMPONENT = new InjectionToken('ComboboxInterface');
6408
6379
 
6409
6380
  class ComboboxMobileComponent extends MobileModeBase {
@@ -6499,6 +6470,196 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
6499
6470
  args: ['dialogTemplate']
6500
6471
  }] } });
6501
6472
 
6473
+ class PlatformComboboxMobileModule {
6474
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6475
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent], exports: [ComboboxMobileComponent] }); }
6476
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent] }); }
6477
+ }
6478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, decorators: [{
6479
+ type: NgModule,
6480
+ args: [{
6481
+ imports: [ComboboxMobileComponent],
6482
+ exports: [ComboboxMobileComponent]
6483
+ }]
6484
+ }] });
6485
+
6486
+ /**
6487
+ * Default options for Combobox
6488
+ */
6489
+ class ComboboxConfig {
6490
+ /**
6491
+ * Create Provider factory function
6492
+ */
6493
+ static createProviderFactory(obj) {
6494
+ const useFactory = (platformConfig) => Object.assign(new ComboboxConfig(platformConfig), obj);
6495
+ return useFactory;
6496
+ }
6497
+ /** @hidden */
6498
+ constructor(platformConfig) {
6499
+ /**
6500
+ * String matching strategy for typeahead list. Default: 'starts with per term'
6501
+ */
6502
+ this.matchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;
6503
+ /**
6504
+ * Maps data providers
6505
+ */
6506
+ this.providers = new Map();
6507
+ this.contentDensity = platformConfig.contentDensity;
6508
+ }
6509
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxConfig, deps: [{ token: i1.PlatformConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
6510
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxConfig, providedIn: 'root' }); }
6511
+ }
6512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxConfig, decorators: [{
6513
+ type: Injectable,
6514
+ args: [{ providedIn: 'root' }]
6515
+ }], ctorParameters: function () { return [{ type: i1.PlatformConfig }]; } });
6516
+
6517
+ const FDP_COMBOBOX_ITEM_DEF = new InjectionToken('FdpComboboxItemDefinition');
6518
+ class FdpComboboxItemDef {
6519
+ constructor() {
6520
+ /** @hidden */
6521
+ this.templateRef = inject((TemplateRef));
6522
+ }
6523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FdpComboboxItemDef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6524
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: FdpComboboxItemDef, ngImport: i0 }); }
6525
+ }
6526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FdpComboboxItemDef, decorators: [{
6527
+ type: Directive
6528
+ }] });
6529
+ class ComboboxItemDirective extends FdpComboboxItemDef {
6530
+ constructor() {
6531
+ super(...arguments);
6532
+ /** @hidden */
6533
+ this.name = 'optionItemTemplate';
6534
+ }
6535
+ /** @hidden */
6536
+ static ngTemplateContextGuard(dir, ctx) {
6537
+ return true;
6538
+ }
6539
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxItemDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6540
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxItemDirective, isStandalone: true, selector: "[fdpComboboxItem]", inputs: { useModel: ["fdpComboboxItemUse", "useModel"] }, providers: [
6541
+ {
6542
+ provide: FDP_COMBOBOX_ITEM_DEF,
6543
+ useExisting: ComboboxItemDirective
6544
+ }
6545
+ ], usesInheritance: true, ngImport: i0 }); }
6546
+ }
6547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxItemDirective, decorators: [{
6548
+ type: Directive,
6549
+ args: [{
6550
+ selector: '[fdpComboboxItem]',
6551
+ standalone: true,
6552
+ providers: [
6553
+ {
6554
+ provide: FDP_COMBOBOX_ITEM_DEF,
6555
+ useExisting: ComboboxItemDirective
6556
+ }
6557
+ ]
6558
+ }]
6559
+ }], propDecorators: { useModel: [{
6560
+ type: Input,
6561
+ args: ['fdpComboboxItemUse']
6562
+ }] } });
6563
+ class ComboboxSelectedItemDirective extends FdpComboboxItemDef {
6564
+ constructor() {
6565
+ super(...arguments);
6566
+ /** @hidden */
6567
+ this.name = 'selectedItemTemplate';
6568
+ }
6569
+ /** @hidden */
6570
+ static ngTemplateContextGuard(dir, ctx) {
6571
+ return true;
6572
+ }
6573
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxSelectedItemDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6574
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxSelectedItemDirective, isStandalone: true, selector: "[fdpComboboxSelectedItem]", inputs: { useModel: ["fdpComboboxSelectedItemUse", "useModel"] }, providers: [
6575
+ {
6576
+ provide: FDP_COMBOBOX_ITEM_DEF,
6577
+ useExisting: ComboboxSelectedItemDirective
6578
+ }
6579
+ ], usesInheritance: true, ngImport: i0 }); }
6580
+ }
6581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxSelectedItemDirective, decorators: [{
6582
+ type: Directive,
6583
+ args: [{
6584
+ selector: '[fdpComboboxSelectedItem]',
6585
+ standalone: true,
6586
+ providers: [
6587
+ {
6588
+ provide: FDP_COMBOBOX_ITEM_DEF,
6589
+ useExisting: ComboboxSelectedItemDirective
6590
+ }
6591
+ ]
6592
+ }]
6593
+ }], propDecorators: { useModel: [{
6594
+ type: Input,
6595
+ args: ['fdpComboboxSelectedItemUse']
6596
+ }] } });
6597
+ class ComboboxItemGroupDirective extends FdpComboboxItemDef {
6598
+ constructor() {
6599
+ super(...arguments);
6600
+ /** @hidden */
6601
+ this.name = 'groupItemTemplate';
6602
+ }
6603
+ /** @hidden */
6604
+ static ngTemplateContextGuard(dir, ctx) {
6605
+ return true;
6606
+ }
6607
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxItemGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6608
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxItemGroupDirective, isStandalone: true, selector: "[fdpComboboxGroup]", providers: [
6609
+ {
6610
+ provide: FDP_COMBOBOX_ITEM_DEF,
6611
+ useExisting: ComboboxItemGroupDirective
6612
+ }
6613
+ ], usesInheritance: true, ngImport: i0 }); }
6614
+ }
6615
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxItemGroupDirective, decorators: [{
6616
+ type: Directive,
6617
+ args: [{
6618
+ selector: '[fdpComboboxGroup]',
6619
+ standalone: true,
6620
+ providers: [
6621
+ {
6622
+ provide: FDP_COMBOBOX_ITEM_DEF,
6623
+ useExisting: ComboboxItemGroupDirective
6624
+ }
6625
+ ]
6626
+ }]
6627
+ }] });
6628
+ class ComboboxSecondaryItemDirective extends FdpComboboxItemDef {
6629
+ constructor() {
6630
+ super(...arguments);
6631
+ /** @hidden */
6632
+ this.name = 'secondaryItemTemplate';
6633
+ }
6634
+ /** @hidden */
6635
+ static ngTemplateContextGuard(dir, ctx) {
6636
+ return true;
6637
+ }
6638
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxSecondaryItemDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6639
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxSecondaryItemDirective, isStandalone: true, selector: "[fdpComboboxSecondaryItem]", inputs: { useModel: ["fdpComboboxSecondaryItemUse", "useModel"] }, providers: [
6640
+ {
6641
+ provide: FDP_COMBOBOX_ITEM_DEF,
6642
+ useExisting: ComboboxSecondaryItemDirective
6643
+ }
6644
+ ], usesInheritance: true, ngImport: i0 }); }
6645
+ }
6646
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxSecondaryItemDirective, decorators: [{
6647
+ type: Directive,
6648
+ args: [{
6649
+ selector: '[fdpComboboxSecondaryItem]',
6650
+ standalone: true,
6651
+ providers: [
6652
+ {
6653
+ provide: FDP_COMBOBOX_ITEM_DEF,
6654
+ useExisting: ComboboxSecondaryItemDirective
6655
+ }
6656
+ ]
6657
+ }]
6658
+ }], propDecorators: { useModel: [{
6659
+ type: Input,
6660
+ args: ['fdpComboboxSecondaryItemUse']
6661
+ }] } });
6662
+
6502
6663
  class BaseCombobox extends CollectionBaseInput {
6503
6664
  /** Datasource for suggestion list */
6504
6665
  set dataSource(value) {
@@ -6669,10 +6830,10 @@ class BaseCombobox extends CollectionBaseInput {
6669
6830
  return;
6670
6831
  }
6671
6832
  this.inputText = text;
6672
- const map = new Map();
6673
- map.set('query', text);
6674
- map.set('limit', 12);
6675
- this.ds.match(map);
6833
+ const queryMap = new Map();
6834
+ queryMap.set('query', text);
6835
+ queryMap.set('limit', 12);
6836
+ this.ds.match(queryMap);
6676
6837
  }
6677
6838
  /** @hidden */
6678
6839
  isOpenChangeHandle(isOpen) {
@@ -6875,10 +7036,10 @@ class BaseCombobox extends CollectionBaseInput {
6875
7036
  initDataSource.dataProvider.setMatchingBy(matchingBy);
6876
7037
  initDataSource.dataProvider.setMatchingStrategy(this._matchingStrategy);
6877
7038
  // initial data fetch
6878
- const map = new Map();
6879
- map.set('query', '*');
6880
- map.set('limit', 12);
6881
- initDataSource.match(map);
7039
+ const queryMap = new Map();
7040
+ queryMap.set('query', '*');
7041
+ queryMap.set('limit', 12);
7042
+ initDataSource.match(queryMap);
6882
7043
  return initDataSource;
6883
7044
  }
6884
7045
  /** @hidden */
@@ -7025,25 +7186,29 @@ class BaseCombobox extends CollectionBaseInput {
7025
7186
  }
7026
7187
  /** @hidden Assign custom templates */
7027
7188
  _assignCustomTemplates() {
7028
- this.customTemplates.forEach((template) => {
7029
- switch (template.name) {
7030
- case 'optionItemTemplate':
7031
- this.optionItemTemplate = template.templateRef;
7032
- break;
7033
- case 'groupItemTemplate':
7034
- this.groupItemTemplate = template.templateRef;
7035
- break;
7036
- case 'secondaryItemTemplate':
7037
- this.secondaryItemTemplate = template.templateRef;
7038
- break;
7039
- case 'selectedItemTemplate':
7040
- this.selectedItemTemplate = template.templateRef;
7041
- break;
7042
- }
7189
+ combineLatest([this._customTemplates.changes, this._customItemDef.changes])
7190
+ .pipe(startWith(null), map(() => this._customItemDef.length > 0 ? this._customItemDef.toArray() : this._customTemplates.toArray()), takeUntil(this._destroyed))
7191
+ .subscribe((data) => {
7192
+ data.forEach((template) => {
7193
+ switch (template.name) {
7194
+ case 'optionItemTemplate':
7195
+ this.optionItemTemplate = template.templateRef;
7196
+ break;
7197
+ case 'groupItemTemplate':
7198
+ this.groupItemTemplate = template.templateRef;
7199
+ break;
7200
+ case 'secondaryItemTemplate':
7201
+ this.secondaryItemTemplate = template.templateRef;
7202
+ break;
7203
+ case 'selectedItemTemplate':
7204
+ this.selectedItemTemplate = template.templateRef;
7205
+ break;
7206
+ }
7207
+ });
7043
7208
  });
7044
7209
  }
7045
7210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BaseCombobox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$1.NgControl, optional: true, self: true }, { token: i1$1.ControlContainer, optional: true, skipSelf: true }, { token: i1$1.NgForm, optional: true, self: true }, { token: i1$2.DialogConfig, optional: true }, { token: ComboboxConfig }, { token: FD_FORM_FIELD, host: true, optional: true, skipSelf: true }, { token: FD_FORM_FIELD_CONTROL, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
7046
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BaseCombobox, inputs: { maxHeight: "maxHeight", autoComplete: "autoComplete", entityClass: "entityClass", mobile: "mobile", mobileConfig: "mobileConfig", group: "group", groupKey: "groupKey", secondaryKey: "secondaryKey", showSecondaryText: "showSecondaryText", secondaryTextAlignment: "secondaryTextAlignment", autoResize: "autoResize", fillControlMode: "fillControlMode", buttonFocusable: "buttonFocusable", triggers: "triggers", closeOnOutsideClick: "closeOnOutsideClick", byline: "byline", dataSource: "dataSource", value: "value" }, outputs: { onDataRequested: "onDataRequested", onDataReceived: "onDataReceived" }, queries: [{ propertyName: "customTemplates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }], usesInheritance: true, ngImport: i0 }); }
7211
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BaseCombobox, inputs: { maxHeight: "maxHeight", autoComplete: "autoComplete", entityClass: "entityClass", mobile: "mobile", mobileConfig: "mobileConfig", group: "group", groupKey: "groupKey", secondaryKey: "secondaryKey", showSecondaryText: "showSecondaryText", secondaryTextAlignment: "secondaryTextAlignment", autoResize: "autoResize", fillControlMode: "fillControlMode", buttonFocusable: "buttonFocusable", triggers: "triggers", closeOnOutsideClick: "closeOnOutsideClick", byline: "byline", dataSource: "dataSource", value: "value" }, outputs: { onDataRequested: "onDataRequested", onDataReceived: "onDataReceived" }, queries: [{ propertyName: "_customTemplates", predicate: TemplateDirective }, { propertyName: "_customItemDef", predicate: FDP_COMBOBOX_ITEM_DEF }], viewQueries: [{ propertyName: "listComponent", first: true, predicate: ListComponent, descendants: true }], usesInheritance: true, ngImport: i0 }); }
7047
7212
  }
7048
7213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BaseCombobox, decorators: [{
7049
7214
  type: Directive
@@ -7122,9 +7287,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
7122
7287
  }], listComponent: [{
7123
7288
  type: ViewChild,
7124
7289
  args: [ListComponent]
7125
- }], customTemplates: [{
7290
+ }], _customTemplates: [{
7126
7291
  type: ContentChildren,
7127
7292
  args: [TemplateDirective]
7293
+ }], _customItemDef: [{
7294
+ type: ContentChildren,
7295
+ args: [FDP_COMBOBOX_ITEM_DEF]
7128
7296
  }] } });
7129
7297
 
7130
7298
  class ComboboxSelectionChangeEvent {
@@ -7286,7 +7454,7 @@ class ComboboxComponent extends BaseCombobox {
7286
7454
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxComponent, isStandalone: true, selector: "fdp-combobox", outputs: { selectionChange: "selectionChange" }, providers: [
7287
7455
  { provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },
7288
7456
  contentDensityObserverProviders()
7289
- ], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6$1.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6$1.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7457
+ ], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else customGroupItemTemplateRenderer\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-template #customGroupItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else customOptinItemTemplateRenderer\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-template #customOptinItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else customSecondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #customSecondaryItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6$1.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6$1.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7290
7458
  }
7291
7459
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxComponent, decorators: [{
7292
7460
  type: Component,
@@ -7311,7 +7479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
7311
7479
  SearchHighlightPipe,
7312
7480
  FdTranslatePipe,
7313
7481
  ContentDensityModule
7314
- ], template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"] }]
7482
+ ], template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else customGroupItemTemplateRenderer\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-template #customGroupItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else customOptinItemTemplateRenderer\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-template #customOptinItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else customSecondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #customSecondaryItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"] }]
7315
7483
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.NgControl, decorators: [{
7316
7484
  type: Optional
7317
7485
  }, {
@@ -7362,29 +7530,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
7362
7530
  args: ['listTemplate']
7363
7531
  }] } });
7364
7532
 
7533
+ const EXPORTABLE_COMPONENTS = [
7534
+ ComboboxComponent,
7535
+ ComboboxItemDirective,
7536
+ ComboboxSelectedItemDirective,
7537
+ ComboboxItemGroupDirective,
7538
+ ComboboxSecondaryItemDirective
7539
+ ];
7365
7540
  class PlatformComboboxModule {
7366
7541
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7367
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent], exports: [ComboboxComponent] }); }
7542
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent,
7543
+ ComboboxItemDirective,
7544
+ ComboboxSelectedItemDirective,
7545
+ ComboboxItemGroupDirective,
7546
+ ComboboxSecondaryItemDirective], exports: [ComboboxComponent,
7547
+ ComboboxItemDirective,
7548
+ ComboboxSelectedItemDirective,
7549
+ ComboboxItemGroupDirective,
7550
+ ComboboxSecondaryItemDirective] }); }
7368
7551
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent] }); }
7369
7552
  }
7370
7553
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, decorators: [{
7371
7554
  type: NgModule,
7372
7555
  args: [{
7373
- imports: [ComboboxComponent],
7374
- exports: [ComboboxComponent]
7375
- }]
7376
- }] });
7377
-
7378
- class PlatformComboboxMobileModule {
7379
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7380
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent], exports: [ComboboxMobileComponent] }); }
7381
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent] }); }
7382
- }
7383
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxMobileModule, decorators: [{
7384
- type: NgModule,
7385
- args: [{
7386
- imports: [ComboboxMobileComponent],
7387
- exports: [ComboboxMobileComponent]
7556
+ imports: [...EXPORTABLE_COMPONENTS],
7557
+ exports: [...EXPORTABLE_COMPONENTS]
7388
7558
  }]
7389
7559
  }] });
7390
7560
 
@@ -7740,6 +7910,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
7740
7910
  }]
7741
7911
  }] });
7742
7912
 
7913
+ const defaultFormGeneratorHintOptions = {
7914
+ placement: 'right',
7915
+ position: 'after',
7916
+ trigger: [
7917
+ { trigger: 'mouseenter', openAction: true, closeAction: false },
7918
+ { trigger: 'mouseleave', openAction: false, closeAction: true },
7919
+ { trigger: 'focusin', openAction: true, closeAction: false },
7920
+ { trigger: 'focusout', openAction: false, closeAction: true }
7921
+ ],
7922
+ glyph: 'hint',
7923
+ target: 'auto'
7924
+ };
7925
+
7743
7926
  /**
7744
7927
  * @description
7745
7928
  * Structural directive, which hides current form item and toggles validation rules for it.
@@ -7818,19 +8001,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
7818
8001
  type: Input
7819
8002
  }] } });
7820
8003
 
7821
- const defaultFormGeneratorHintOptions = {
7822
- placement: 'right',
7823
- position: 'after',
7824
- trigger: [
7825
- { trigger: 'mouseenter', openAction: true, closeAction: false },
7826
- { trigger: 'mouseleave', openAction: false, closeAction: true },
7827
- { trigger: 'focusin', openAction: true, closeAction: false },
7828
- { trigger: 'focusout', openAction: false, closeAction: true }
7829
- ],
7830
- glyph: 'hint',
7831
- target: 'auto'
7832
- };
7833
-
7834
8004
  const FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS = new InjectionToken('Default options for form-generator hint', {
7835
8005
  factory: () => defaultFormGeneratorHintOptions
7836
8006
  });
@@ -8413,28 +8583,79 @@ const CSS_CLASS_NAME = {
8413
8583
  };
8414
8584
  const INPUT_GROUP_CHILD_TOKEN = new InjectionToken('INPUT_GROUP_CHILD_TOKEN');
8415
8585
 
8416
- const inputGroupAddonChildProvider = {
8417
- provide: INPUT_GROUP_CHILD_TOKEN,
8418
- useExisting: forwardRef(() => InputGroupAddonComponent)
8419
- };
8420
8586
  /**
8421
- * Fundamental input group addon component
8422
- *
8423
- * This component is intended to be used inside `<fdp-input-group>`
8424
- *
8425
- *
8426
- * Input group addon can contain a plain text:
8427
- * ```
8428
- * <fdp-input-group-addon>$</fdp-input-group-addon>
8429
- * ```
8430
- * Icon:
8431
- * ```
8432
- * <fdp-input-group-addon><i class="sap-icon--employee"></i></fdp-input-group-addon>
8433
- * ```
8434
- * Button component:
8435
- * ```
8436
- * <fdp-input-group-addon><fdp-button label="Action"></fdp-button></fdp-input-group-addon>
8437
- * ```
8587
+ * Fundamental input group addon body component
8588
+ */
8589
+ class InputGroupAddonBodyComponent {
8590
+ /**
8591
+ * indicates if addon contains a button
8592
+ */
8593
+ set hasButton(hasButton) {
8594
+ if (hasButton) {
8595
+ this._addClassNameToHostElement(CSS_CLASS_NAME.addonButton);
8596
+ }
8597
+ else {
8598
+ this._removeClassNameFromHostElement(CSS_CLASS_NAME.addonButton);
8599
+ }
8600
+ }
8601
+ /** @hidden */
8602
+ constructor(_elementRef, _renderer, contentDensityObserver) {
8603
+ this._elementRef = _elementRef;
8604
+ this._renderer = _renderer;
8605
+ this.contentDensityObserver = contentDensityObserver;
8606
+ contentDensityObserver.subscribe();
8607
+ }
8608
+ /** @hidden */
8609
+ ngOnInit() {
8610
+ this._addClassNameToHostElement(CSS_CLASS_NAME.addon);
8611
+ }
8612
+ /** @hidden */
8613
+ _addClassNameToHostElement(className) {
8614
+ this._renderer.addClass(this._elementRef.nativeElement, className);
8615
+ }
8616
+ /** @hidden */
8617
+ _removeClassNameFromHostElement(className) {
8618
+ this._renderer.removeClass(this._elementRef.nativeElement, className);
8619
+ }
8620
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupAddonBodyComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i5.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
8621
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: InputGroupAddonBodyComponent, isStandalone: true, selector: "fdp-input-group-addon-body", inputs: { hasButton: "hasButton" }, providers: [contentDensityObserverProviders()], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, dependencies: [{ kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8622
+ }
8623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupAddonBodyComponent, decorators: [{
8624
+ type: Component,
8625
+ args: [{
8626
+ selector: 'fdp-input-group-addon-body',
8627
+ template: '<ng-content></ng-content>',
8628
+ changeDetection: ChangeDetectionStrategy.OnPush,
8629
+ providers: [contentDensityObserverProviders()],
8630
+ imports: [ContentDensityModule],
8631
+ standalone: true
8632
+ }]
8633
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i5.ContentDensityObserver }]; }, propDecorators: { hasButton: [{
8634
+ type: Input
8635
+ }] } });
8636
+
8637
+ const inputGroupAddonChildProvider = {
8638
+ provide: INPUT_GROUP_CHILD_TOKEN,
8639
+ useExisting: forwardRef(() => InputGroupAddonComponent)
8640
+ };
8641
+ /**
8642
+ * Fundamental input group addon component
8643
+ *
8644
+ * This component is intended to be used inside `<fdp-input-group>`
8645
+ *
8646
+ *
8647
+ * Input group addon can contain a plain text:
8648
+ * ```
8649
+ * <fdp-input-group-addon>$</fdp-input-group-addon>
8650
+ * ```
8651
+ * Icon:
8652
+ * ```
8653
+ * <fdp-input-group-addon><i class="sap-icon--employee"></i></fdp-input-group-addon>
8654
+ * ```
8655
+ * Button component:
8656
+ * ```
8657
+ * <fdp-input-group-addon><fdp-button label="Action"></fdp-button></fdp-input-group-addon>
8658
+ * ```
8438
8659
  *
8439
8660
  */
8440
8661
  class InputGroupAddonComponent {
@@ -8501,55 +8722,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
8501
8722
  }] } });
8502
8723
 
8503
8724
  /**
8504
- * Fundamental input group addon body component
8725
+ * Default options for platform input group
8505
8726
  */
8506
- class InputGroupAddonBodyComponent {
8727
+ class InputGroupConfig {
8507
8728
  /**
8508
- * indicates if addon contains a button
8729
+ * Create Provider factory function
8509
8730
  */
8510
- set hasButton(hasButton) {
8511
- if (hasButton) {
8512
- this._addClassNameToHostElement(CSS_CLASS_NAME.addonButton);
8513
- }
8514
- else {
8515
- this._removeClassNameFromHostElement(CSS_CLASS_NAME.addonButton);
8516
- }
8517
- }
8518
- /** @hidden */
8519
- constructor(_elementRef, _renderer, contentDensityObserver) {
8520
- this._elementRef = _elementRef;
8521
- this._renderer = _renderer;
8522
- this.contentDensityObserver = contentDensityObserver;
8523
- contentDensityObserver.subscribe();
8524
- }
8525
- /** @hidden */
8526
- ngOnInit() {
8527
- this._addClassNameToHostElement(CSS_CLASS_NAME.addon);
8528
- }
8529
- /** @hidden */
8530
- _addClassNameToHostElement(className) {
8531
- this._renderer.addClass(this._elementRef.nativeElement, className);
8731
+ static createProviderFactory(obj) {
8732
+ const useFactory = (platformConfig) => Object.assign(new InputGroupConfig(platformConfig), obj);
8733
+ return useFactory;
8532
8734
  }
8533
8735
  /** @hidden */
8534
- _removeClassNameFromHostElement(className) {
8535
- this._renderer.removeClass(this._elementRef.nativeElement, className);
8736
+ constructor(platformConfig) {
8737
+ this.contentDensity = platformConfig.contentDensity;
8536
8738
  }
8537
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupAddonBodyComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i5.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
8538
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: InputGroupAddonBodyComponent, isStandalone: true, selector: "fdp-input-group-addon-body", inputs: { hasButton: "hasButton" }, providers: [contentDensityObserverProviders()], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, dependencies: [{ kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8739
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupConfig, deps: [{ token: i1.PlatformConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
8740
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupConfig, providedIn: 'root' }); }
8539
8741
  }
8540
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupAddonBodyComponent, decorators: [{
8541
- type: Component,
8542
- args: [{
8543
- selector: 'fdp-input-group-addon-body',
8544
- template: '<ng-content></ng-content>',
8545
- changeDetection: ChangeDetectionStrategy.OnPush,
8546
- providers: [contentDensityObserverProviders()],
8547
- imports: [ContentDensityModule],
8548
- standalone: true
8549
- }]
8550
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i5.ContentDensityObserver }]; }, propDecorators: { hasButton: [{
8551
- type: Input
8552
- }] } });
8742
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupConfig, decorators: [{
8743
+ type: Injectable,
8744
+ args: [{ providedIn: 'root' }]
8745
+ }], ctorParameters: function () { return [{ type: i1.PlatformConfig }]; } });
8553
8746
 
8554
8747
  /**
8555
8748
  * fdp-input-group needs it's own input component to
@@ -8595,29 +8788,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
8595
8788
  type: Input
8596
8789
  }] } });
8597
8790
 
8598
- /**
8599
- * Default options for platform input group
8600
- */
8601
- class InputGroupConfig {
8602
- /**
8603
- * Create Provider factory function
8604
- */
8605
- static createProviderFactory(obj) {
8606
- const useFactory = (platformConfig) => Object.assign(new InputGroupConfig(platformConfig), obj);
8607
- return useFactory;
8608
- }
8609
- /** @hidden */
8610
- constructor(platformConfig) {
8611
- this.contentDensity = platformConfig.contentDensity;
8612
- }
8613
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupConfig, deps: [{ token: i1.PlatformConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
8614
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupConfig, providedIn: 'root' }); }
8615
- }
8616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InputGroupConfig, decorators: [{
8617
- type: Injectable,
8618
- args: [{ providedIn: 'root' }]
8619
- }], ctorParameters: function () { return [{ type: i1.PlatformConfig }]; } });
8620
-
8621
8791
  /**
8622
8792
  * Fundamental input group component
8623
8793
  *
@@ -8845,8 +9015,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
8845
9015
  args: [{ providedIn: 'root' }]
8846
9016
  }], ctorParameters: function () { return [{ type: i1.PlatformConfig }]; } });
8847
9017
 
8848
- const MULTICOMBOBOX_COMPONENT = new InjectionToken('MultiComboboxInterface');
8849
-
8850
9018
  const MAP_LIMIT = new InjectionToken('Map limit≥', { factory: () => 12 });
8851
9019
  class MultiComboboxSelectionChangeEvent {
8852
9020
  /**
@@ -9627,6 +9795,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
9627
9795
  args: [TemplateDirective]
9628
9796
  }] } });
9629
9797
 
9798
+ const MULTICOMBOBOX_COMPONENT = new InjectionToken('MultiComboboxInterface');
9799
+
9630
9800
  class MultiComboboxMobileComponent extends MobileModeBase {
9631
9801
  /** @hidden */
9632
9802
  constructor(elementRef, dialogService, multiComboboxComponent, mobileModes) {
@@ -9726,6 +9896,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
9726
9896
  args: ['dialogTemplate']
9727
9897
  }] } });
9728
9898
 
9899
+ class PlatformMultiComboboxMobileModule {
9900
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9901
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, imports: [MultiComboboxMobileComponent], exports: [MultiComboboxMobileComponent] }); }
9902
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, imports: [MultiComboboxMobileComponent] }); }
9903
+ }
9904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, decorators: [{
9905
+ type: NgModule,
9906
+ args: [{
9907
+ imports: [MultiComboboxMobileComponent],
9908
+ exports: [MultiComboboxMobileComponent]
9909
+ }]
9910
+ }] });
9911
+
9729
9912
  let deprecationWarningShown = false;
9730
9913
  /**
9731
9914
  * This component can work with both string primitives as well as with complex objects. In order
@@ -9992,7 +10175,7 @@ class MultiComboboxComponent extends BaseMultiCombobox {
9992
10175
  multi: true
9993
10176
  },
9994
10177
  contentDensityObserverProviders()
9995
- ], viewQueries: [{ propertyName: "mobileControlTemplate", first: true, predicate: ["mobileControlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_tokenizer", first: true, predicate: TokenizerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fdp-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fdp-multi-combobox__list-container\"\n (isOpenChange)=\"popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && onPrimaryButtonClick(false)\"\n (keydown)=\"navigateByTokens($event)\"\n >\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"true\"\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n class=\"fdp-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-required]=\"required\"\n class=\"fd-tokenizer__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel\"\n >\n <input\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"!mobile && onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-multi-combobox__list fd-list--multi-input\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width]=\"!mobile && minWidth + 'px'\"\n [style.max-width]=\"autoResize && maxWidth + 'px'\"\n [attr.aria-labelledby]=\"id + '-search'\"\n aria-multiselectable=\"true\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <label fd-list-item fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && onOptionClicked($event, i)\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fdp-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}.fdp-multi-combobox-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fdp-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fdp-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6$1.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6$1.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "component", type: CheckboxComponent$1, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10178
+ ], viewQueries: [{ propertyName: "mobileControlTemplate", first: true, predicate: ["mobileControlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_tokenizer", first: true, predicate: TokenizerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fdp-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fdp-multi-combobox__list-container\"\n (isOpenChange)=\"popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && onPrimaryButtonClick(false)\"\n (keydown)=\"navigateByTokens($event)\"\n >\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"true\"\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n class=\"fdp-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-required]=\"required\"\n class=\"fd-tokenizer__input\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel\"\n >\n <input\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"!mobile && onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-multi-combobox__list fd-list--multi-input\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width]=\"!mobile && minWidth + 'px'\"\n [style.max-width]=\"autoResize && maxWidth + 'px'\"\n [attr.aria-labelledby]=\"id + '-search'\"\n aria-multiselectable=\"true\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <label fd-list-item fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && onOptionClicked($event, i)\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fdp-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}.fdp-multi-combobox-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fdp-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fdp-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6$1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6$1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6$1.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6$1.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6$1.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "component", type: CheckboxComponent$1, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: MultiAnnouncerDirective, selector: "[fdMultiAnnouncer]", inputs: ["multiAnnouncerOptions"], exportAs: ["fdMultiAnnouncer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9996
10179
  }
9997
10180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MultiComboboxComponent, decorators: [{
9998
10181
  type: Component,
@@ -10025,8 +10208,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
10025
10208
  ListSecondaryDirective,
10026
10209
  SearchHighlightPipe,
10027
10210
  FdTranslatePipe,
10028
- ContentDensityModule
10029
- ], template: "<div class=\"fdp-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fdp-multi-combobox__list-container\"\n (isOpenChange)=\"popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && onPrimaryButtonClick(false)\"\n (keydown)=\"navigateByTokens($event)\"\n >\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"true\"\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n class=\"fdp-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-required]=\"required\"\n class=\"fd-tokenizer__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel\"\n >\n <input\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"!mobile && onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-multi-combobox__list fd-list--multi-input\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width]=\"!mobile && minWidth + 'px'\"\n [style.max-width]=\"autoResize && maxWidth + 'px'\"\n [attr.aria-labelledby]=\"id + '-search'\"\n aria-multiselectable=\"true\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <label fd-list-item fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && onOptionClicked($event, i)\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fdp-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}.fdp-multi-combobox-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fdp-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fdp-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}\n"] }]
10211
+ ContentDensityDirective,
10212
+ MultiAnnouncerDirective
10213
+ ], template: "<div class=\"fdp-multi-combobox\">\n <ng-container [ngTemplateOutlet]=\"controlTemplate\" *ngIf=\"mobile\"></ng-container>\n\n <fd-popover\n *ngIf=\"!mobile\"\n additionalBodyClass=\"fd-popover-custom-list fdp-multi-combobox__list-container\"\n (isOpenChange)=\"popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </ng-container>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</div>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && onPrimaryButtonClick(false)\"\n (keydown)=\"navigateByTokens($event)\"\n >\n <fd-tokenizer\n #tokenizer\n [compactCollapse]=\"true\"\n *ngIf=\"_selectedSuggestions\"\n [tokenizerFocusable]=\"false\"\n class=\"fdp-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token, $event)\"\n *ngFor=\"let token of _selectedSuggestions\"\n >\n {{ token.label }}\n </fd-token>\n\n <input\n #searchInputElement\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"!mobile && onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n [attr.aria-required]=\"required\"\n class=\"fd-tokenizer__input\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n />\n </fd-tokenizer>\n </fd-input-group>\n\n <fd-form-message\n *ngIf=\"mobile && isOpen ? false : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n class=\"fdp-multi-combobox-input-group-custom\"\n [state]=\"state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"disabled || readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled || readonly\"\n [attr.aria-readonly]=\"readonly\"\n [glyphAriaLabel]=\"ariaLabel\"\n >\n <input\n fdp-auto-complete\n (onComplete)=\"onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"!mobile && onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-multi-combobox__list fd-list--multi-input\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width]=\"!mobile && minWidth + 'px'\"\n [style.max-width]=\"autoResize && maxWidth + 'px'\"\n [attr.aria-labelledby]=\"id + '-search'\"\n aria-multiselectable=\"true\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <label fd-list-item fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && close()\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && onOptionClicked($event, i)\"\n (keyDown)=\"onItemKeyDownHandler($event, i)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"optionItem.selected && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(optionItem.selected && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-margin--tiny{margin:.5rem!important}.fd-margin--sm{margin:1rem!important}.fd-margin--md{margin:2rem!important}.fd-margin--lg{margin:3rem!important}.fd-margin--none{margin:0!important}.fd-margin-top--tiny{margin-top:.5rem!important}.fd-margin-top--sm{margin-top:1rem!important}.fd-margin-top--md{margin-top:2rem!important}.fd-margin-top--lg{margin-top:3rem!important}.fd-margin-top--none{margin-top:0!important}.fd-margin-end--tiny{margin-right:.5rem!important}.fd-margin-end--tiny[dir=rtl],[dir=rtl] .fd-margin-end--tiny{margin-left:.5rem!important;margin-right:0!important}.fd-margin-end--sm{margin-right:1rem!important}.fd-margin-end--sm[dir=rtl],[dir=rtl] .fd-margin-end--sm{margin-left:1rem!important;margin-right:0!important}.fd-margin-end--md{margin-right:2rem!important}.fd-margin-end--md[dir=rtl],[dir=rtl] .fd-margin-end--md{margin-left:2rem!important;margin-right:0!important}.fd-margin-end--lg{margin-right:3rem!important}.fd-margin-end--lg[dir=rtl],[dir=rtl] .fd-margin-end--lg{margin-left:3rem!important;margin-right:0!important}.fd-margin-end--none{margin-right:0}.fd-margin-end--none[dir=rtl],[dir=rtl] .fd-margin-end--none{margin-left:0!important}.fd-margin-bottom--tiny{margin-bottom:.5rem!important}.fd-margin-bottom--sm{margin-bottom:1rem!important}.fd-margin-bottom--md{margin-bottom:2rem!important}.fd-margin-bottom--lg{margin-bottom:3rem!important}.fd-margin-bottom--none{margin-bottom:0!important}.fd-margin-begin--tiny{margin-left:.5rem!important}.fd-margin-begin--tiny[dir=rtl],[dir=rtl] .fd-margin-begin--tiny{margin-left:0!important;margin-right:.5rem!important}.fd-margin-begin--sm{margin-left:1rem!important}.fd-margin-begin--sm[dir=rtl],[dir=rtl] .fd-margin-begin--sm{margin-left:0!important;margin-right:1rem!important}.fd-margin-begin--md{margin-left:2rem!important}.fd-margin-begin--md[dir=rtl],[dir=rtl] .fd-margin-begin--md{margin-left:0!important;margin-right:2rem!important}.fd-margin-begin--lg{margin-left:3rem!important}.fd-margin-begin--lg[dir=rtl],[dir=rtl] .fd-margin-begin--lg{margin-left:0!important;margin-right:3rem!important}.fd-margin-begin--none{margin-left:0}.fd-margin-begin--none[dir=rtl],[dir=rtl] .fd-margin-begin--none{margin-right:0!important}.fd-margin-top-bottom--tiny{margin-bottom:.5rem!important;margin-top:.5rem!important}.fd-margin-top-bottom--sm{margin-bottom:1rem!important;margin-top:1rem!important}.fd-margin-top-bottom--md{margin-bottom:2rem!important;margin-top:2rem!important}.fd-margin-top-bottom--lg{margin-bottom:3rem!important;margin-top:3rem!important}.fd-margin-begin-end--tiny{margin-left:.5rem!important;margin-right:.5rem!important}.fd-margin-begin-end--sm{margin-left:1rem!important;margin-right:1rem!important}.fd-margin-begin-end--md{margin-left:2rem!important;margin-right:2rem!important}.fd-margin-begin-end--lg{margin-left:3rem!important;margin-right:3rem!important}.fd-margin-responsive--sm{margin:0 0 1rem!important}.fd-margin-responsive--md{margin:1rem!important}.fd-margin-responsive--lg{margin:1rem 2rem!important}.fd-margin-responsive--xl{margin:1rem 3rem!important}.fd-margin-negative-begin-end--tiny{margin:0 -.5rem!important}.fd-margin-negative-begin-end--sm{margin:0 -1rem!important}.fd-margin-negative-begin-end--md{margin:0 -2rem!important}.fd-margin-negative-begin-end--lg{margin:0 -3rem!important}.fdp-multi-combobox-tokenizer-custom{width:calc(100% - 2.25rem)}.fdp-multi-combobox-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-combobox__list-container .fd-list .fd-list__item.fd-list__group-header{padding:0 1rem}.fdp-multi-combobox__list-container .fd-list .fd-list__item .fd-list__title{max-width:inherit}.fdp-multi-combobox__list-container .fd-list.fd-list--compact .fd-list__item.fd-list__group-header{padding:0 .5rem}\n"] }]
10030
10214
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.NgControl, decorators: [{
10031
10215
  type: Optional
10032
10216
  }, {
@@ -10091,19 +10275,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
10091
10275
  }]
10092
10276
  }] });
10093
10277
 
10094
- class PlatformMultiComboboxMobileModule {
10095
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10096
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, imports: [MultiComboboxMobileComponent], exports: [MultiComboboxMobileComponent] }); }
10097
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, imports: [MultiComboboxMobileComponent] }); }
10098
- }
10099
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiComboboxMobileModule, decorators: [{
10100
- type: NgModule,
10101
- args: [{
10102
- imports: [MultiComboboxMobileComponent],
10103
- exports: [MultiComboboxMobileComponent]
10104
- }]
10105
- }] });
10106
-
10107
10278
  class PlatformMultiInputMobileModule {
10108
10279
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiInputMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10109
10280
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiInputMobileModule, imports: [PlatformMultiInputMobileComponent], exports: [PlatformMultiInputMobileComponent] }); }
@@ -10699,101 +10870,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
10699
10870
  type: Output
10700
10871
  }] } });
10701
10872
 
10702
- /**
10703
- * This is a base step input directive to be used for increase/decrease buttons.
10704
- */
10705
- class StepInputActionButton {
10706
- constructor() {
10707
- /** @hidden */
10708
- this._destroyed = new Subject();
10709
- }
10710
- /** @hidden */
10711
- ngOnDestroy() {
10712
- this._destroyed.next();
10713
- this._destroyed.complete();
10714
- }
10715
- /** @hidden */
10716
- click() {
10717
- if (!this.canHandleAction()) {
10718
- return;
10719
- }
10720
- // Run action while button is pressed
10721
- timer(500)
10722
- .pipe(switchMap(() => interval(40)), takeUntil(fromEvent(window, 'mouseup', { capture: true, once: true })))
10723
- .pipe(takeUntil(this._destroyed))
10724
- .subscribe(() => this.runAction());
10725
- this.runAction();
10726
- }
10727
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputActionButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10728
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: StepInputActionButton, host: { listeners: { "mousedown": "click()" } }, ngImport: i0 }); }
10729
- }
10730
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputActionButton, decorators: [{
10731
- type: Directive
10732
- }], propDecorators: { click: [{
10733
- type: HostListener,
10734
- args: ['mousedown']
10735
- }] } });
10736
-
10737
- /**
10738
- * This Directive is used to be assigned to decrement button.
10739
- */
10740
- class StepInputDecrementDirective extends StepInputActionButton {
10741
- /** @hidden */
10742
- constructor(stepInput) {
10743
- super();
10744
- this.stepInput = stepInput;
10745
- }
10746
- /** @hidden */
10747
- canHandleAction() {
10748
- return !!this.stepInput.canChangeValue;
10749
- }
10750
- /** @hidden */
10751
- runAction() {
10752
- this.stepInput.decrease();
10753
- }
10754
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputDecrementDirective, deps: [{ token: StepInputComponent, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
10755
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: StepInputDecrementDirective, isStandalone: true, selector: "[fdpStepInputDecrement]", usesInheritance: true, ngImport: i0 }); }
10756
- }
10757
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputDecrementDirective, decorators: [{
10758
- type: Directive,
10759
- args: [{
10760
- selector: '[fdpStepInputDecrement]',
10761
- standalone: true
10762
- }]
10763
- }], ctorParameters: function () { return [{ type: StepInputComponent, decorators: [{
10764
- type: SkipSelf
10765
- }] }]; } });
10766
-
10767
- /**
10768
- * This Directive is used to be assigned to increment button.
10769
- */
10770
- class StepInputIncrementDirective extends StepInputActionButton {
10771
- /** @hidden */
10772
- constructor(stepInput) {
10773
- super();
10774
- this.stepInput = stepInput;
10775
- }
10776
- /** @hidden */
10777
- canHandleAction() {
10778
- return !!this.stepInput.canChangeValue;
10779
- }
10780
- /** @hidden */
10781
- runAction() {
10782
- this.stepInput.increase();
10783
- }
10784
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputIncrementDirective, deps: [{ token: StepInputComponent, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
10785
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: StepInputIncrementDirective, isStandalone: true, selector: "[fdpStepInputIncrement]", usesInheritance: true, ngImport: i0 }); }
10786
- }
10787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputIncrementDirective, decorators: [{
10788
- type: Directive,
10789
- args: [{
10790
- selector: '[fdpStepInputIncrement]',
10791
- standalone: true
10792
- }]
10793
- }], ctorParameters: function () { return [{ type: StepInputComponent, decorators: [{
10794
- type: SkipSelf
10795
- }] }]; } });
10796
-
10797
10873
  /**
10798
10874
  * This directive is intendant to be a bridge between input control and BaseStepInput Component.
10799
10875
  */
@@ -10917,6 +10993,101 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
10917
10993
  args: ['wheel', ['$event']]
10918
10994
  }] } });
10919
10995
 
10996
+ /**
10997
+ * This is a base step input directive to be used for increase/decrease buttons.
10998
+ */
10999
+ class StepInputActionButton {
11000
+ constructor() {
11001
+ /** @hidden */
11002
+ this._destroyed = new Subject();
11003
+ }
11004
+ /** @hidden */
11005
+ ngOnDestroy() {
11006
+ this._destroyed.next();
11007
+ this._destroyed.complete();
11008
+ }
11009
+ /** @hidden */
11010
+ click() {
11011
+ if (!this.canHandleAction()) {
11012
+ return;
11013
+ }
11014
+ // Run action while button is pressed
11015
+ timer(500)
11016
+ .pipe(switchMap(() => interval(40)), takeUntil(fromEvent(window, 'mouseup', { capture: true, once: true })))
11017
+ .pipe(takeUntil(this._destroyed))
11018
+ .subscribe(() => this.runAction());
11019
+ this.runAction();
11020
+ }
11021
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputActionButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11022
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: StepInputActionButton, host: { listeners: { "mousedown": "click()" } }, ngImport: i0 }); }
11023
+ }
11024
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputActionButton, decorators: [{
11025
+ type: Directive
11026
+ }], propDecorators: { click: [{
11027
+ type: HostListener,
11028
+ args: ['mousedown']
11029
+ }] } });
11030
+
11031
+ /**
11032
+ * This Directive is used to be assigned to decrement button.
11033
+ */
11034
+ class StepInputDecrementDirective extends StepInputActionButton {
11035
+ /** @hidden */
11036
+ constructor(stepInput) {
11037
+ super();
11038
+ this.stepInput = stepInput;
11039
+ }
11040
+ /** @hidden */
11041
+ canHandleAction() {
11042
+ return !!this.stepInput.canChangeValue;
11043
+ }
11044
+ /** @hidden */
11045
+ runAction() {
11046
+ this.stepInput.decrease();
11047
+ }
11048
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputDecrementDirective, deps: [{ token: StepInputComponent, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
11049
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: StepInputDecrementDirective, isStandalone: true, selector: "[fdpStepInputDecrement]", usesInheritance: true, ngImport: i0 }); }
11050
+ }
11051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputDecrementDirective, decorators: [{
11052
+ type: Directive,
11053
+ args: [{
11054
+ selector: '[fdpStepInputDecrement]',
11055
+ standalone: true
11056
+ }]
11057
+ }], ctorParameters: function () { return [{ type: StepInputComponent, decorators: [{
11058
+ type: SkipSelf
11059
+ }] }]; } });
11060
+
11061
+ /**
11062
+ * This Directive is used to be assigned to increment button.
11063
+ */
11064
+ class StepInputIncrementDirective extends StepInputActionButton {
11065
+ /** @hidden */
11066
+ constructor(stepInput) {
11067
+ super();
11068
+ this.stepInput = stepInput;
11069
+ }
11070
+ /** @hidden */
11071
+ canHandleAction() {
11072
+ return !!this.stepInput.canChangeValue;
11073
+ }
11074
+ /** @hidden */
11075
+ runAction() {
11076
+ this.stepInput.increase();
11077
+ }
11078
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputIncrementDirective, deps: [{ token: StepInputComponent, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
11079
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: StepInputIncrementDirective, isStandalone: true, selector: "[fdpStepInputIncrement]", usesInheritance: true, ngImport: i0 }); }
11080
+ }
11081
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: StepInputIncrementDirective, decorators: [{
11082
+ type: Directive,
11083
+ args: [{
11084
+ selector: '[fdpStepInputIncrement]',
11085
+ standalone: true
11086
+ }]
11087
+ }], ctorParameters: function () { return [{ type: StepInputComponent, decorators: [{
11088
+ type: SkipSelf
11089
+ }] }]; } });
11090
+
10920
11091
  /**
10921
11092
  * Fundamental number-step-input component
10922
11093
  *
@@ -11258,5 +11429,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
11258
11429
  * Generated bundle index. Do not edit.
11259
11430
  */
11260
11431
 
11261
- export { AutoCompleteDirective, BaseCombobox, BaseDynamicFormGeneratorControl, BaseMultiCombobox, BaseMultiInput, BaseSelect, COMBOBOX_COMPONENT, CSS_CLASS_NAME, CheckboxComponent, CheckboxGroupComponent, ComboboxComponent, ComboboxConfig, ComboboxMobileComponent, ComboboxSelectionChangeEvent, DEFAULT_COMPONENTS_LIST, DEFAULT_VALIDATION_ERRORS, DefaultGapLayout, DefaultHorizontalFieldLayout, DefaultHorizontalLabelLayout, DefaultVerticalFieldLayout, DefaultVerticalLabelLayout, DynamicFormControl, DynamicFormControlDirective, DynamicFormControlFieldDirective, DynamicFormControlGroup, DynamicFormGeneratorCheckboxComponent, DynamicFormGeneratorDatepickerComponent, DynamicFormGeneratorEditorComponent, DynamicFormGeneratorInputComponent, DynamicFormGeneratorMultiInputComponent, DynamicFormGeneratorObjectStatusComponent, DynamicFormGeneratorRadioComponent, DynamicFormGeneratorSelectComponent, DynamicFormGeneratorSwitchComponent, FDP_FORM_ERROR_DIRECTIVE, FDP_FORM_FIELD_HINT_LAYOUT_CONFIG, FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT, FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS, FDP_FORM_IGNORED_STATUSES, FORM_GENERATOR_CONFIG, FORM_GENERATOR_ITEM_CONFIG, FORM_GROUP_CHILD_FIELD_TOKEN, FdpFormGroupModule, FdpSelectionChangeEvent, Field, FieldGroup, FieldGroupRowValuePipe, FileUploaderInvalidChangeEvent, FileUploaderSelectionChangeEvent, FormFieldComponent, FormFieldControlExtrasComponent, FormFieldErrorDescriptionDirective, FormFieldErrorDirective, FormFieldErrorHeadingDirective, FormFieldGroupComponent, FormGeneratorComponent, FormGeneratorComponentsAccessorService, FormGeneratorFieldComponent, FormGeneratorService, FormGroupComponent, FormGroupHeaderComponent, GetHintOptionsPipe, INPUT_GROUP_CHILD_TOKEN, InputComponent, InputGroupAddonBodyComponent, InputGroupAddonComponent, InputGroupComponent, InputGroupConfig, InputGroupInputComponent, InputMessageGroupWithTemplate, MAP_LIMIT, MULTICOMBOBOX_COMPONENT, MULTIINPUT_COMPONENT, MultiComboboxComponent, MultiComboboxConfig, MultiComboboxMobileComponent, MultiComboboxSelectionChangeEvent, MultiInputConfig, MultiInputSelectionChangeEvent, NumberStepInputComponent, OptionComponent, PlatformAutoCompleteModule, PlatformCheckboxChange, PlatformCheckboxGroupModule, PlatformCheckboxModule, PlatformComboboxMobileModule, PlatformComboboxModule, PlatformDatePickerComponent, PlatformDatePickerModule, PlatformDatetimePickerComponent, PlatformDatetimePickerModule, PlatformFileUploaderComponent, PlatformFileUploaderModule, PlatformFormGeneratorModule, PlatformInputGroupModule, PlatformInputModule, PlatformMultiComboboxMobileModule, PlatformMultiComboboxModule, PlatformMultiInputComponent, PlatformMultiInputMobileComponent, PlatformMultiInputMobileModule, PlatformMultiInputModule, PlatformRadioGroupModule, PlatformSelectModule, PlatformStepInputModule, PlatformSwitchModule, PlatformTextAreaModule, PlatformTimePickerComponent, PlatformTimePickerModule, RadioButtonComponent, RadioGroupComponent, SelectComponent, SelectConfig, StepInputActionButton, StepInputAlign, StepInputChangeEvent, StepInputComponent, StepInputConfig, StepInputControlDirective, StepInputDecrementDirective, StepInputIncrementDirective, SwitchChangeEvent, SwitchComponent, SwitchConfig, TextAreaComponent, TextAreaConfig, addAndCutFloatingNumberDistortion, createMissingDateImplementationError$1 as createMissingDateImplementationError, defaultFormFieldHintOptions, defaultFormGeneratorConfig, defaultFormGeneratorConfigProvider, defaultFormGeneratorHintOptions, defaultFormGeneratorItemConfig, defaultFormGeneratorItemConfigProvider, dynamicFormFieldProvider, dynamicFormGroupChildProvider, formGroupProvider, getField, getFormField, getFormState, getNumberDecimalLength, inputGroupAddonChildProvider, inputGroupInputChildProvider, isFieldChild, isFieldGroupChild, isFieldGroupWrapperChild };
11432
+ export { AutoCompleteDirective, BaseCombobox, BaseDynamicFormGeneratorControl, BaseMultiCombobox, BaseMultiInput, BaseSelect, COMBOBOX_COMPONENT, CSS_CLASS_NAME, CheckboxComponent, CheckboxGroupComponent, ComboboxComponent, ComboboxConfig, ComboboxItemDirective, ComboboxItemGroupDirective, ComboboxMobileComponent, ComboboxSecondaryItemDirective, ComboboxSelectedItemDirective, ComboboxSelectionChangeEvent, DEFAULT_COMPONENTS_LIST, DEFAULT_VALIDATION_ERRORS, DefaultGapLayout, DefaultHorizontalFieldLayout, DefaultHorizontalLabelLayout, DefaultVerticalFieldLayout, DefaultVerticalLabelLayout, DynamicFormControl, DynamicFormControlDirective, DynamicFormControlFieldDirective, DynamicFormControlGroup, DynamicFormGeneratorCheckboxComponent, DynamicFormGeneratorDatepickerComponent, DynamicFormGeneratorEditorComponent, DynamicFormGeneratorInputComponent, DynamicFormGeneratorMultiInputComponent, DynamicFormGeneratorObjectStatusComponent, DynamicFormGeneratorRadioComponent, DynamicFormGeneratorSelectComponent, DynamicFormGeneratorSwitchComponent, FDP_COMBOBOX_ITEM_DEF, FDP_FORM_ERROR_DIRECTIVE, FDP_FORM_FIELD_HINT_LAYOUT_CONFIG, FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT, FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS, FDP_FORM_IGNORED_STATUSES, FORM_GENERATOR_CONFIG, FORM_GENERATOR_ITEM_CONFIG, FORM_GROUP_CHILD_FIELD_TOKEN, FdpComboboxItemDef, FdpFormGroupModule, FdpSelectionChangeEvent, Field, FieldGroup, FieldGroupRowValuePipe, FileUploaderInvalidChangeEvent, FileUploaderSelectionChangeEvent, FormFieldComponent, FormFieldControlExtrasComponent, FormFieldErrorDescriptionDirective, FormFieldErrorDirective, FormFieldErrorHeadingDirective, FormFieldGroupComponent, FormGeneratorComponent, FormGeneratorComponentsAccessorService, FormGeneratorFieldComponent, FormGeneratorService, FormGroupComponent, FormGroupHeaderComponent, GetHintOptionsPipe, INPUT_GROUP_CHILD_TOKEN, InputComponent, InputGroupAddonBodyComponent, InputGroupAddonComponent, InputGroupComponent, InputGroupConfig, InputGroupInputComponent, InputMessageGroupWithTemplate, MAP_LIMIT, MULTICOMBOBOX_COMPONENT, MULTIINPUT_COMPONENT, MultiComboboxComponent, MultiComboboxConfig, MultiComboboxMobileComponent, MultiComboboxSelectionChangeEvent, MultiInputConfig, MultiInputSelectionChangeEvent, NumberStepInputComponent, OptionComponent, PlatformAutoCompleteModule, PlatformCheckboxChange, PlatformCheckboxGroupModule, PlatformCheckboxModule, PlatformComboboxMobileModule, PlatformComboboxModule, PlatformDatePickerComponent, PlatformDatePickerModule, PlatformDatetimePickerComponent, PlatformDatetimePickerModule, PlatformFileUploaderComponent, PlatformFileUploaderModule, PlatformFormGeneratorModule, PlatformInputGroupModule, PlatformInputModule, PlatformMultiComboboxMobileModule, PlatformMultiComboboxModule, PlatformMultiInputComponent, PlatformMultiInputMobileComponent, PlatformMultiInputMobileModule, PlatformMultiInputModule, PlatformRadioGroupModule, PlatformSelectModule, PlatformStepInputModule, PlatformSwitchModule, PlatformTextAreaModule, PlatformTimePickerComponent, PlatformTimePickerModule, RadioButtonComponent, RadioGroupComponent, SelectComponent, SelectConfig, StepInputActionButton, StepInputAlign, StepInputChangeEvent, StepInputComponent, StepInputConfig, StepInputControlDirective, StepInputDecrementDirective, StepInputIncrementDirective, SwitchChangeEvent, SwitchComponent, SwitchConfig, TextAreaComponent, TextAreaConfig, addAndCutFloatingNumberDistortion, createMissingDateImplementationError$1 as createMissingDateImplementationError, defaultFormFieldHintOptions, defaultFormGeneratorConfig, defaultFormGeneratorConfigProvider, defaultFormGeneratorHintOptions, defaultFormGeneratorItemConfig, defaultFormGeneratorItemConfigProvider, dynamicFormFieldProvider, dynamicFormGroupChildProvider, formGroupProvider, getField, getFormField, getFormState, getNumberDecimalLength, inputGroupAddonChildProvider, inputGroupInputChildProvider, isFieldChild, isFieldGroupChild, isFieldGroupWrapperChild };
11262
11433
  //# sourceMappingURL=fundamental-ngx-platform-form.mjs.map