{"version":3,"file":"fundamental-ngx-core-combobox.mjs","sources":["../../../../libs/core/combobox/combobox-item.directive.ts","../../../../libs/core/combobox/combobox.interface.ts","../../../../libs/core/combobox/combobox-mobile/combobox-mobile.component.ts","../../../../libs/core/combobox/combobox-mobile/combobox-mobile.component.html","../../../../libs/core/combobox/list-group.pipe.ts","../../../../libs/core/combobox/tokens.ts","../../../../libs/core/combobox/combobox.component.ts","../../../../libs/core/combobox/combobox.component.html","../../../../libs/core/combobox/combobox.module.ts","../../../../libs/core/combobox/fundamental-ngx-core-combobox.ts"],"sourcesContent":["import { Directive, Input, TemplateRef, inject } from '@angular/core';\nimport { ComboboxItemDirectiveContext } from './combobox.interface';\n\n@Directive({\n    selector: '[fdComboboxItem]',\n    standalone: true\n})\nexport class ComboboxItemDirective<T = unknown> {\n    /**\n     * @hidden\n     * Used for type support.\n     */\n    @Input()\n    fdComboboxItemUse: T;\n\n    /** Template reference. */\n    templateRef = inject(TemplateRef<ComboboxItemDirectiveContext<T>>);\n\n    /** @hidden */\n    static ngTemplateContextGuard<T>(\n        dir: ComboboxItemDirective<T>,\n        ctx: ComboboxItemDirectiveContext<T>\n    ): ctx is ComboboxItemDirectiveContext<T> {\n        return true;\n    }\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const COMBOBOX_COMPONENT = new InjectionToken<string[]>('ComboboxInterface');\n\n/**\n * Combobox Interface to have typing and avoid circular dependency between\n * ComboboxComponent <==> ComboboxMobileComponent\n */\nexport interface ComboboxInterface extends MobileMode {\n    inputText: string;\n    openChange: EventEmitter<boolean>;\n    inShellbar: boolean;\n\n    getValue(): any;\n    dialogApprove(): void;\n    dialogDismiss(backup: string): void;\n}\n\nexport interface ComboboxItemDirectiveContext<T = unknown> {\n    $implicit: T;\n    inputText: string;\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    Inject,\n    isDevMode,\n    OnInit,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { observeOn } from 'rxjs/operators';\n\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\n\nimport {\n    DialogBodyComponent,\n    DialogCloseButtonComponent,\n    DialogComponent,\n    DialogFooterComponent,\n    DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { asyncScheduler } from 'rxjs';\nimport { COMBOBOX_COMPONENT, ComboboxInterface } from '../combobox.interface';\n\n@Component({\n    selector: 'fd-combobox-mobile',\n    templateUrl: './combobox-mobile.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        TemplateDirective,\n        BarMiddleDirective,\n        BarElementDirective,\n        ButtonBarComponent,\n        DialogHeaderComponent,\n        DialogCloseButtonComponent,\n        DialogComponent,\n        DialogBodyComponent,\n        DialogFooterComponent,\n        TitleComponent,\n        TitleComponent,\n        TemplateDirective,\n        NgTemplateOutlet,\n        InitialFocusDirective\n    ]\n})\nexport class ComboboxMobileComponent extends MobileModeBase<ComboboxInterface> implements OnInit {\n    /** @hidden */\n    @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden\n     * For internal usage\n     * Control element, which will be rendered inside dialog.\n     * List element, which will be rendered inside dialog.\n     */\n    childContent: { listTemplate: TemplateRef<any>; controlTemplate: TemplateRef<any> } | null = null;\n\n    /** @hidden */\n    private _selectedBackup: string;\n\n    /** @hidden */\n    constructor(@Inject(COMBOBOX_COMPONENT) comboboxComponent: ComboboxInterface) {\n        super(comboboxComponent, MobileModeControl.COMBOBOX);\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._listenOnMultiInputOpenChange();\n    }\n\n    /** @hidden */\n    handleDismiss(): void {\n        this.dialogRef.dismiss();\n        this._component.dialogDismiss(this._selectedBackup);\n    }\n\n    /** @hidden */\n    handleApprove(): void {\n        this.dialogRef.close();\n        this._component.dialogApprove();\n    }\n\n    /** @hidden */\n    private _toggleDialog(open: boolean): void {\n        if (open) {\n            this._selectedBackup = this._component.getValue();\n            if (!this._dialogService.hasOpenDialogs()) {\n                this._open();\n            }\n        }\n    }\n\n    /** @hidden */\n    private _listenOnMultiInputOpenChange(): void {\n        this._component.openChange\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((isOpen) => this._toggleDialog(isOpen));\n    }\n\n    /** @hidden */\n    private _open(): void {\n        this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n            mobile: true,\n            ...this.dialogConfig,\n            backdropClickCloseable: false,\n            container: this._elementRef.nativeElement,\n            disablePaddings: true\n        });\n\n        this._focusInputElementOnceOpened();\n\n        const refSub = this.dialogRef.afterClosed.subscribe({\n            error: (type) => {\n                if (type === 'escape') {\n                    this._component.dialogDismiss(this._selectedBackup);\n                    refSub.unsubscribe();\n                }\n            }\n        });\n    }\n\n    /** @hidden */\n    private _focusInputElementOnceOpened(): void {\n        this.dialogRef.afterLoaded\n            .pipe(\n                observeOn(asyncScheduler), // making the listener async\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                try {\n                    const input = this._elementRef.nativeElement.querySelector('fd-input-group input[role=\"combobox\"]');\n                    input.focus();\n                } catch (error) {\n                    if (isDevMode()) {\n                        console.error('Failed to focus combobox search input', error);\n                    }\n                }\n            });\n    }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n    <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n        <fd-dialog-header>\n            @if (mobileConfig.title) {\n                <h1 fd-title>{{ mobileConfig.title }}</h1>\n            }\n            @if (mobileConfig.hasCloseButton) {\n                <button title=\"Close\" fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n            }\n            <ng-template fdkTemplate=\"subheader\">\n                <div fd-bar-middle>\n                    <fd-bar-element [fullWidth]=\"true\">\n                        <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n                    </fd-bar-element>\n                </div>\n            </ng-template>\n        </fd-dialog-header>\n        <fd-dialog-body>\n            <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n        </fd-dialog-body>\n        <fd-dialog-footer>\n            @if (mobileConfig.approveButtonText) {\n                <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n                </fd-button-bar>\n            }\n            @if (mobileConfig.cancelButtonText) {\n                <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\">\n                </fd-button-bar>\n            }\n        </fd-dialog-footer>\n    </fd-dialog>\n</ng-template>\n","import { KeyValue } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\nexport type GroupFunction<T = any> = (items: T[]) => { [key: string]: T[] };\n\n@Pipe({\n    name: 'listGroupPipe',\n    standalone: true\n})\nexport class ListGroupPipe<T = any> implements PipeTransform {\n    /** Group items */\n    transform(items: any[], group: GroupFunction<T>): KeyValue<string, T[]>[] {\n        return Object.entries(group(items)).map(([key, value]) => ({ key, value }));\n    }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ComboboxInterface } from './combobox.interface';\n\nexport const FD_COMBOBOX_COMPONENT = new InjectionToken<ComboboxInterface>('FdComboboxComponent');\n","import {\n    BACKSPACE,\n    CONTROL,\n    DOWN_ARROW,\n    ENTER,\n    ESCAPE,\n    LEFT_ARROW,\n    RIGHT_ARROW,\n    SHIFT,\n    SPACE,\n    TAB,\n    UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n    forwardRef,\n    input\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription, fromEvent } from 'rxjs';\n\nimport {\n    AutoCompleteEvent,\n    DynamicComponentService,\n    FocusEscapeDirection,\n    FocusTrapService,\n    KeyUtil,\n    Nullable,\n    TruncatedTitleDirective\n} from '@fundamental-ngx/cdk/utils';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\n\nimport { Overlay, RepositionScrollStrategy } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormStates, SingleDropdownValueControl } from '@fundamental-ngx/cdk/forms';\nimport { AutoCompleteDirective, DisplayFnPipe, SearchHighlightPipe } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n    ContentDensityModule,\n    ContentDensityObserver,\n    contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport {\n    FD_LIST_MESSAGE_DIRECTIVE,\n    ListComponent,\n    ListItemComponent,\n    ListMessageDirective,\n    ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { PopoverBodyComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe, resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { ComboboxItem } from './combobox-item';\nimport { ComboboxItemDirective } from './combobox-item.directive';\nimport { ComboboxMobileComponent } from './combobox-mobile/combobox-mobile.component';\nimport { COMBOBOX_COMPONENT, ComboboxInterface, ComboboxItemDirectiveContext } from './combobox.interface';\nimport { GroupFunction, ListGroupPipe } from './list-group.pipe';\nimport { FD_COMBOBOX_COMPONENT } from './tokens';\n\nlet comboboxUniqueId = 0;\n\n/**\n * Allows users to filter through results and select a value.\n *\n * Supports Angular Forms.\n * ```html\n * <fd-combobox\n *      [(ngModel)]=\"searchTerm\"\n *      [dropdownValues]=\"dropdownValues\"\n *      placeholder=\"Type some text...\">\n * </fd-combobox>\n * ```\n */\n@Component({\n    selector: 'fd-combobox',\n    templateUrl: './combobox.component.html',\n    styleUrl: './combobox.component.scss',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ComboboxComponent),\n            multi: true\n        },\n        registerFormItemControl(ComboboxComponent),\n        MenuKeyboardService,\n        DynamicComponentService,\n        contentDensityObserverProviders(),\n        {\n            provide: FD_COMBOBOX_COMPONENT,\n            useExisting: ComboboxComponent\n        }\n    ],\n    host: {\n        '[class.fd-combobox-custom-class]': 'true',\n        '[class.fd-combobox-input]': 'true',\n        '[class.fd-combobox-custom-class--mobile]': 'mobile',\n        '[style.width]': 'width'\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgTemplateOutlet,\n        PopoverComponent,\n        PopoverControlComponent,\n        PopoverBodyComponent,\n        ListComponent,\n        ListItemComponent,\n        ListTitleDirective,\n        InputGroupComponent,\n        InputGroupInputDirective,\n        FormsModule,\n        AutoCompleteDirective,\n        ButtonComponent,\n        IconComponent,\n        ContentDensityModule,\n        DisplayFnPipe,\n        SearchHighlightPipe,\n        FdTranslatePipe,\n        ListGroupPipe,\n        TruncatedTitleDirective\n    ]\n})\nexport class ComboboxComponent<T = any>\n    implements\n        ComboboxInterface,\n        SingleDropdownValueControl,\n        ControlValueAccessor,\n        OnInit,\n        OnChanges,\n        AfterViewInit,\n        OnDestroy,\n        FormItemControl\n{\n    /** Id for the Combobox. */\n    @Input()\n    comboboxId = `fd-combobox-${comboboxUniqueId++}`;\n\n    /** Id attribute for input element inside Combobox component */\n    @Input()\n    inputId = '';\n\n    /** Aria-label for Combobox. */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /** Aria-Labelledby for element describing Combobox. */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /** If it is mandatory field */\n    @Input()\n    required = false;\n\n    /** Values to be filtered in the search input. */\n    @Input()\n    dropdownValues: T[] = [];\n\n    /** Filter function. Accepts an array of objects and a search term as arguments\n     * and returns a string. See search input examples for details. */\n    @Input()\n    filterFn = this._defaultFilter;\n\n    /** Whether the search input is disabled. **/\n    @Input()\n    disabled: boolean;\n\n    /** Placeholder of the search input. **/\n    @Input()\n    placeholder: string;\n\n    /**\n     * Whether the Combobox is a Search Field\n     */\n    @Input()\n    isSearch = false;\n\n    /** Icon to display in the right-side button. */\n    @Input()\n    glyph = 'navigation-down-arrow';\n\n    /** Glyph font family */\n    @Input()\n    glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /**\n     * Whether to show the clear search term button\n     */\n    @Input()\n    showClearButton = false;\n\n    /**\n     *  The trigger events that will open/close the options popover.\n     *  Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n     */\n    @Input()\n    triggers: string[] = [];\n\n    /** Whether the combobox should close, when a click is performed outside its boundaries. True by default */\n    @Input()\n    closeOnOutsideClick = true;\n\n    /**\n     * Whether the combobox should open, when any key is pressed in input (except Escape, Space, Enter). True by default\n     */\n    @Input()\n    openOnKeyboardEvent = true;\n\n    /**\n     *  The state of the form control - applies css classes.\n     *  Can be `success`, `error`, `warning`, `information` or blank for default.\n     */\n    @Input()\n    state?: FormStates;\n\n    /**\n     * The template with which to display the individual listed items.\n     * Use it by passing an ng-template with implicit content. See examples for more info.\n     */\n    @Input()\n    itemTemplate: TemplateRef<ComboboxItemDirectiveContext<T>>;\n\n    /**\n     * Function used to handle grouping of items.\n     */\n    @Input()\n    groupFn: Nullable<GroupFunction>;\n\n    /** Max height of the popover. Any overflowing elements will be accessible through scrolling. */\n    @Input()\n    maxHeight = '50vh';\n\n    /** Max width of the dropdown in pixels. Default is 640px (40rem). */\n    @Input()\n    dropDownMaxWidthPx = 640;\n\n    /**\n     * Whether the dropdown should have max width.\n     * Set to true if you want the dropdown to take the width of the control.\n     * Default is false */\n    @Input()\n    noDropDownMaxWidth = false;\n\n    /** Custom width of the control. */\n    @Input()\n    width: Nullable<string>;\n\n    /** Search function to execute when the Enter key is pressed on the main input. */\n    @Input()\n    searchFn: () => void;\n\n    /** Whether the matching string should be highlighted during filtration. */\n    @Input()\n    highlighting = true;\n\n    /** Whether the popover should close when a user selects a result. */\n    @Input()\n    closeOnSelect = true;\n\n    /** Whether the input field should be populated with the result picked by the user. */\n    @Input()\n    fillOnSelect = true;\n\n    /** Whether the autocomplete should be enabled; Enabled by default */\n    @Input()\n    autoComplete = true;\n\n    /**\n     * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n     * * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n     * * `equal` will apply a width to the body equivalent to the width of the control.\n     * * 'fit-content' will apply width needed to properly display items inside, independent of control.\n     */\n    @Input()\n    fillControlMode: PopoverFillMode = 'at-least';\n\n    /** Defines if combobox should behave same as dropdown. When it's enabled writing inside text input won't\n     * trigger onChange function, until it matches one of displayed dropdown values. Also communicating with combobox\n     * can be achieved only by objects with same type as dropdownValue */\n    @Input()\n    communicateByObject = false;\n\n    /** Display function. Accepts an object of the same type as the\n     * items passed to dropdownValues as argument, and outputs a string.\n     * An arrow function can be used to access the *this* keyword in the calling component.\n     * See search input examples for details. */\n    @Input()\n    displayFn = this._defaultDisplay;\n\n    /**\n     * Whether AddOn Button should be focusable\n     * @default false\n     */\n    @Input()\n    buttonFocusable = false;\n\n    /**\n     * Whether clear button should be focusable.\n     * @default true\n     */\n    @Input()\n    clearButtonFocusable = true;\n\n    /** Whether the combobox is readonly. */\n    @Input()\n    readOnly = false;\n\n    /** Whether the combobox should be built on mobile mode */\n    @Input()\n    mobile = false;\n\n    /** Multi Input Mobile Configuration, it's applied only, when mobile is enabled */\n    @Input()\n    mobileConfig: MobileModeConfig;\n\n    /** Whether to display the addon button. */\n    @Input()\n    showDropdownButton = true;\n\n    /**\n     * Whether to return results where the input matches the entire string. By default, only results that start\n     * with the input search term will be returned.\n     */\n    @Input()\n    includes = false;\n\n    /**\n     * The tooltip for the multi-input icon.\n     */\n    @Input()\n    title: string;\n\n    /** Whether list item options should be rendered as byline. */\n    @Input()\n    byline = false;\n\n    /**\n     * Action to perform when user shifts focus from the dropdown.\n     * - `close` will close the dropdown preserving previously selected value.\n     * - `closeAndSelect` will close the dropdown and select last focused dropdown item.\n     */\n    @Input()\n    tabOutStrategy: 'close' | 'closeAndSelect' = 'closeAndSelect';\n\n    /** Event emitted when an item is clicked. Use *$event* to retrieve it. */\n    @Output()\n    readonly itemClicked: EventEmitter<ComboboxItem> = new EventEmitter<ComboboxItem>();\n\n    /** Event emitted, when the combobox's popover body is opened or closed */\n    @Output()\n    readonly openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** Event emitted when the input text changes. */\n    @Output()\n    inputTextChange: EventEmitter<string> = new EventEmitter<string>();\n\n    /** @hidden */\n    @ViewChild(ListComponent)\n    listComponent: ListComponent;\n\n    /** @hidden */\n    @ViewChild('searchInputElement')\n    searchInputElement: ElementRef<HTMLInputElement>;\n\n    /** @hidden */\n    @ViewChild(PopoverComponent)\n    popoverComponent: PopoverComponent;\n\n    /** @hidden */\n    @ViewChild(InputGroupComponent)\n    inputGroup: InputGroupComponent;\n\n    /** @hidden */\n    @ContentChildren(FD_LIST_MESSAGE_DIRECTIVE)\n    listMessages: QueryList<ListMessageDirective>;\n\n    /** @hidden */\n    @ViewChild('controlTemplate')\n    controlTemplate: TemplateRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('listTemplate')\n    listTemplate: TemplateRef<HTMLElement>;\n\n    /** @hidden */\n    @ContentChild(ComboboxItemDirective)\n    private readonly _comboboxItemRenderer: ComboboxItemDirective;\n\n    /** When communicateByObject is true, specifies which property of the selected object\n     * should be used as the form control value. If not specified, the entire object is returned.\n     * Example: if dropdownValues = [{ displayedValue: 'Apple', code: 'A1' }] and valueProperty = 'code',\n     * the form control value will be 'A1' instead of the entire object.\n     * @default null\n     */\n    public readonly valueProperty = input<string | null>(null);\n\n    /** Whether the matching string should be highlighted after combobox value is selected. */\n    filterHighlight = true;\n\n    /** Keys, that won't trigger the popover's open state, when dispatched on search input */\n    readonly nonOpeningKeys: number[] = [\n        ESCAPE,\n        ENTER,\n        LEFT_ARROW,\n        RIGHT_ARROW,\n        DOWN_ARROW,\n        UP_ARROW,\n        CONTROL,\n        TAB,\n        SHIFT\n    ];\n\n    /** @hidden */\n    readonly _repositionScrollStrategy: RepositionScrollStrategy;\n\n    /** @hidden */\n    readonly _defaultFontFamily = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** Whether the combobox is opened. */\n    open = false;\n\n    /**\n     * Whether or not the input coup is in the shellbar. Only for internal use by combobox component\n     * @hidden\n     */\n    inShellbar = false;\n\n    /** @hidden */\n    displayedValues: any[] = [];\n\n    /** @hidden */\n    inputTextValue = '';\n\n    /** @hidden */\n    clearInputBtnFocused = false;\n\n    /** @hidden */\n    _itemMousedown = false;\n\n    /** @hidden */\n    protected readonly _clearButtonTitle = resolveTranslationSignal('coreCombobox.clearButtonTitle');\n\n    /** @hidden */\n    get _customRenderer(): Nullable<TemplateRef<ComboboxItemDirectiveContext<T>>> {\n        return this._comboboxItemRenderer?.templateRef || this.itemTemplate;\n    }\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    private _value: any;\n\n    /** @hidden */\n    constructor(\n        private readonly _overlay: Overlay,\n        private readonly _cdRef: ChangeDetectorRef,\n        private readonly _injector: Injector,\n        private readonly _viewContainerRef: ViewContainerRef,\n        private readonly _dynamicComponentService: DynamicComponentService,\n        private readonly _focusTrapService: FocusTrapService,\n        readonly _contentDensityObserver: ContentDensityObserver\n    ) {\n        this._repositionScrollStrategy = this._overlay.scrollStrategies.reposition({ autoClose: true });\n    }\n\n    /** @hidden */\n    onChange: (value: any) => void = () => {};\n\n    /** @hidden */\n    onTouched = (): void => {};\n\n    /** @hidden */\n    ngOnInit(): void {\n        if (this.readOnly) {\n            this.showDropdownButton = false;\n        }\n        this._refreshDisplayedValues();\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.dropdownValues && (changes.dropdownValues || changes.searchTerm)) {\n            this._refreshDisplayedValues();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._addShellbarClass();\n\n        if (this.mobile) {\n            this._setUpMobileMode();\n        }\n\n        this._setupValueSynchronization();\n    }\n\n    /** @hidden */\n    onInputKeydownHandler(event: KeyboardEvent | string): void {\n        if (this.readOnly) {\n            return;\n        }\n\n        if (typeof event === 'string') {\n            if (event === 'fromPaste') {\n                this.isOpenChangeHandle(true);\n            }\n        } else {\n            if (KeyUtil.isKeyCode(event, TAB) && this.open) {\n                this._close();\n                return;\n            }\n\n            if (KeyUtil.isKeyCode(event, ENTER)) {\n                if (this.searchFn) {\n                    this.searchFn();\n                }\n            } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n                if (event.altKey) {\n                    this._resetDisplayedValues();\n                    this.isOpenChangeHandle(true);\n                }\n                if (this.open && this.listComponent) {\n                    this.listComponent.setItemActive(0);\n                } else if (!this.open) {\n                    this._chooseOtherItem(1);\n                }\n                event.preventDefault();\n            } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n                this._chooseOtherItem(-1);\n                event.preventDefault();\n            } else if (\n                this.openOnKeyboardEvent &&\n                !event.ctrlKey &&\n                !event.altKey &&\n                !KeyUtil.isKeyCode(event, this.nonOpeningKeys)\n            ) {\n                this.isOpenChangeHandle(true);\n                if (this.isEmptyValue && KeyUtil.isKeyType(event, 'control') && !KeyUtil.isKeyCode(event, BACKSPACE)) {\n                    this.listComponent.setItemActive(0);\n                }\n            }\n        }\n    }\n\n    /** @hidden */\n    onItemKeyDownHandler(event: KeyboardEvent, value: any): void {\n        if (KeyUtil.isKeyCode(event, ENTER) || KeyUtil.isKeyCode(event, SPACE)) {\n            this._itemMousedown = true;\n            event.preventDefault();\n            this.onMenuClickHandler(value);\n        }\n    }\n\n    /** @hidden */\n    onItemFocused(value: any): void {\n        if (!this._itemMousedown && !this.mobile) {\n            this.onMenuClickHandler(value, false);\n        }\n        this._itemMousedown = false;\n    }\n\n    /** @hidden */\n    onMenuClickHandler(value: any, shouldClosePopover = true): void {\n        if (value || value === 0) {\n            const index: number = this.dropdownValues.findIndex((_value) => _value === value);\n            this._handleClickActions(value, shouldClosePopover);\n            this.filterHighlight = false;\n            this.itemClicked.emit({ item: value, index });\n        }\n    }\n\n    /** Handle dialog dismissing, closes popover and sets backup data. */\n    dialogDismiss(term: any): void {\n        this.inputText = this.displayFn(term);\n        this.setValue(term);\n        this.isOpenChangeHandle(false);\n    }\n\n    /** Handle dialog approval, closes popover and propagates data changes. */\n    dialogApprove(): void {\n        this._propagateChange();\n        this.isOpenChangeHandle(false);\n    }\n\n    /** If true value empty */\n    get isEmptyValue(): boolean {\n        return !this.inputText || this.inputText?.trim().length === 0;\n    }\n\n    /** Input text of the input. */\n    set inputText(value: string) {\n        this.inputTextValue = value;\n        if (!this.communicateByObject) {\n            this._value = value;\n        }\n        this.inputTextChange.emit(value);\n        if (!this.mobile) {\n            this._propagateChange();\n        }\n    }\n    get inputText(): string {\n        return this.inputTextValue;\n    }\n\n    /** Get the glyph value based on whether the combobox is used as a search field or not. */\n    get glyphValue(): string {\n        return this.isSearch ? 'search' : this.glyph;\n    }\n\n    /** @hidden */\n    _handleClearSearchTerm(): void {\n        this.inputTextValue = '';\n        this.inputTextChange.emit('');\n        this.displayedValues = this.dropdownValues || [];\n        this.searchInputElement.nativeElement.value = '';\n        this.searchInputElement.nativeElement.focus();\n        if (!this.mobile) {\n            this._propagateChange();\n        }\n        this._cdRef.detectChanges();\n    }\n\n    /** @hidden */\n    writeValue(value: any): void {\n        // If valueProperty is specified, we need to find the object with matching property value\n        let valueToDisplay = value;\n        const valueProp = this.valueProperty();\n        if (this.communicateByObject && valueProp && value !== null && value !== undefined) {\n            // Find the object in dropdownValues that matches the given property value\n            const matchingObject = this.dropdownValues?.find(\n                (item) => item != null && (item as any)[valueProp] === value\n            );\n            if (matchingObject) {\n                valueToDisplay = matchingObject;\n            }\n        }\n\n        this.inputTextValue = this.displayFn(valueToDisplay);\n        this.setValue(valueToDisplay);\n        this._cdRef.markForCheck();\n    }\n\n    /** @hidden */\n    registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    /** @hidden */\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /** Method passed to list component */\n    handleListFocusEscape(direction: FocusEscapeDirection): void {\n        if (direction === 'up') {\n            this.searchInputElement.nativeElement.focus();\n        }\n    }\n\n    /** @hidden */\n    handleSearchTermChange(): void {\n        this.displayedValues = this.filterFn(this.dropdownValues, this.inputText);\n        this.popoverComponent?.refreshPosition();\n    }\n\n    /** @hidden */\n    onPrimaryButtonClick(): void {\n        // Prevent primary button click behaviour on mobiles\n        if (this.mobile) {\n            return;\n        }\n\n        if (this.searchFn) {\n            this.searchFn();\n        }\n        this._resetDisplayedValues();\n        this.isOpenChangeHandle(!this.open);\n        this.searchInputElement.nativeElement.focus();\n        this.filterHighlight = false;\n        if (this.open) {\n            this.searchInputElement?.nativeElement.focus();\n        }\n    }\n\n    /** @hidden */\n    isOpenChangeHandle(isOpen: boolean): void {\n        /** Reset displayed values on every mobile open */\n        if (this.mobile && !this.open) {\n            this._resetDisplayedValues();\n        }\n        if (this.open !== isOpen) {\n            this.open = isOpen;\n            this.openChange.emit(isOpen);\n\n            /** Allow combobox up and down arrows to work properly when combobox is inside a dialog with a trapped focus */\n            if (this.open) {\n                this._focusTrapService.pauseCurrentFocusTrap();\n            } else {\n                this._focusTrapService.unpauseCurrentFocusTrap();\n            }\n        }\n\n        if (!this.open && !this.mobile) {\n            this.handleBlur();\n            this.searchInputElement.nativeElement.focus({ preventScroll: true });\n        }\n\n        this._cdRef.detectChanges();\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        this._cdRef.detectChanges();\n    }\n\n    /** Method that handles complete event from auto complete directive, setting the new value, and closing popover */\n    handleAutoComplete(event: AutoCompleteEvent): void {\n        if (this.inputText !== event.term) {\n            this.inputText = event.term;\n            this.handleSearchTermChange();\n        }\n        if (event.forceClose && this.inputText) {\n            this.isOpenChangeHandle(false);\n        }\n    }\n\n    /** @hidden */\n    handleBlur(): void {\n        if (!this.open) {\n            this.onTouched();\n            this.handleAutoComplete({\n                term: this.searchInputElement.nativeElement.value,\n                forceClose: false\n            });\n        }\n    }\n\n    /** @hidden */\n    clearInputBtnFocus(): void {\n        this.clearInputBtnFocused = true;\n    }\n\n    /** @hidden */\n    clearInputBtnBlur(): void {\n        this.clearInputBtnFocused = false;\n    }\n\n    /** Current select value */\n    getValue(): any {\n        return this._value;\n    }\n\n    /** @hidden */\n    _close(): void {\n        this.inputText = this._value ? this.inputText : '';\n        if (this.tabOutStrategy === 'closeAndSelect') {\n            const focusedItem = this.listComponent.getActiveItem();\n            if (focusedItem && !this.inputText) {\n                this._handleClickActions(focusedItem.value);\n                return;\n            }\n        }\n        this.isOpenChangeHandle(false);\n        this.searchInputElement.nativeElement.focus();\n    }\n\n    /** @hidden */\n    isSelected(term: any): boolean {\n        const termValue = this.communicateByObject ? term : this.displayFn(term);\n        return this.getValue() === termValue;\n    }\n\n    /** Method that picks other value moved from current one by offset, called only when combobox is closed */\n    private _chooseOtherItem(offset: number): void {\n        const activeValue: any = this._getOptionObjectByDisplayedValue(this.inputTextValue)[0];\n        const index: number = this.dropdownValues.findIndex((value) => value === activeValue);\n        if (this.dropdownValues[index + offset]) {\n            this.onMenuClickHandler(this.dropdownValues[index + offset]);\n        }\n    }\n\n    /** Method that reset filtering for displayed values. It overrides displayed values by all possible dropdown values */\n    private _resetDisplayedValues(): void {\n        this.displayedValues = this.dropdownValues || [];\n    }\n\n    /** @hidden */\n    private _addShellbarClass(): void {\n        if (this.inShellbar) {\n            this.searchInputElement.nativeElement.classList.add('fd-shellbar__input-group-input');\n            if (this.inputGroup) {\n                this.inputGroup.setInShellbar(true);\n            }\n        }\n    }\n\n    /** @hidden */\n    private _defaultDisplay(str: any): string {\n        return `${str}`;\n    }\n\n    /** @hidden */\n    private _defaultFilter(contentArray: any[], searchTerm: any): any[] {\n        this.filterHighlight = true;\n        if (typeof searchTerm === 'string') {\n            const searchLower = searchTerm.toLocaleLowerCase();\n            return contentArray.filter((item) => {\n                if (item) {\n                    const term = this.displayFn(item).toLocaleLowerCase();\n                    return this.includes ? term.includes(searchLower) : term.startsWith(searchLower);\n                }\n            });\n        } else if (typeof searchTerm === 'object') {\n            return contentArray.filter((item) => item === searchTerm);\n        }\n        return contentArray || [];\n    }\n\n    /** @hidden */\n    private _handleClickActions(term: any, shouldClosePopover = true): void {\n        if (this.closeOnSelect && shouldClosePopover) {\n            this.isOpenChangeHandle(false);\n        }\n        if (this.fillOnSelect) {\n            this.setValue(term);\n            this.inputText = this.displayFn(term);\n            this.searchInputElement.nativeElement.value = this.inputText;\n            this._cdRef.detectChanges();\n\n            if (this.mobile) {\n                this._propagateChange();\n            }\n        }\n        if (shouldClosePopover) {\n            this.handleSearchTermChange();\n        }\n    }\n\n    /** @hidden */\n    private _getOptionObjectByDisplayedValue(displayValue: string): any {\n        return this.dropdownValues.filter((value) => this.displayFn(value) === displayValue);\n    }\n\n    /** @hidden */\n    private _refreshDisplayedValues(): void {\n        if (this.inputText) {\n            this.displayedValues = this.filterFn(this.dropdownValues, this.inputText);\n        } else {\n            this.displayedValues = this.dropdownValues || [];\n        }\n    }\n\n    /** @hidden */\n    private _propagateChange(): void {\n        if (this.communicateByObject) {\n            const values = this._getOptionObjectByDisplayedValue(this.inputText);\n            // Do not set new value if theres multiple items that have same label.\n            if (values.length === 1 && this.displayFn(values[0]) !== this.displayFn(this.getValue())) {\n                this.setValue(values[0]);\n            } else if (values.length === 0) {\n                this.setValue(this.inputText);\n            }\n            const thisValue = this.getValue();\n            // If valueProperty is not specified and value is an object, emit the object\n            // If valueProperty is specified, the extracted value is already set by setValue\n            if (typeof thisValue === 'object' || this.valueProperty()) {\n                this.onChange(thisValue);\n            }\n        } else {\n            this.onChange(this.inputText);\n        }\n    }\n\n    /** @hidden */\n    private setValue(value: any): void {\n        if (this.communicateByObject) {\n            // If valueProperty is specified, extract that property from the selected object\n            const valueProp = this.valueProperty();\n            if (valueProp && typeof value === 'object' && value !== null) {\n                this._value = (value as any)[valueProp];\n            } else {\n                this._value = value;\n            }\n        } else {\n            this._value = this.displayFn(value);\n        }\n    }\n\n    /** @hidden */\n    private _setUpMobileMode(): void {\n        const injector = Injector.create({\n            providers: [{ provide: COMBOBOX_COMPONENT, useValue: this }],\n            parent: this._injector\n        });\n\n        this._dynamicComponentService.createDynamicComponent(\n            { listTemplate: this.listTemplate, controlTemplate: this.controlTemplate },\n            ComboboxMobileComponent,\n            {\n                containerRef: this._viewContainerRef\n            },\n            {\n                injector\n            }\n        );\n    }\n\n    /** @hidden */\n    private _setupValueSynchronization(): void {\n        if (!this.searchInputElement) {\n            return;\n        }\n\n        // Listen for focus events to detect programmatic changes\n        this._subscriptions.add(\n            fromEvent(this.searchInputElement.nativeElement, 'focus').subscribe(() => {\n                this._syncDomValueToModel();\n            })\n        );\n    }\n\n    /** @hidden */\n    private _syncDomValueToModel(): void {\n        if (!this.searchInputElement) {\n            return;\n        }\n\n        const domValue = this.searchInputElement.nativeElement.value;\n        if (domValue !== this.inputText) {\n            // Update the model and trigger change detection\n            this.inputText = domValue;\n            this.handleSearchTermChange();\n            this._cdRef.detectChanges();\n        }\n    }\n}\n","<ng-template [ngTemplateOutlet]=\"mobile ? mobileTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n    <fd-popover\n        additionalBodyClass=\"fd-popover-custom-list\"\n        [class.fd-combobox-full-width]=\"isSearch || showClearButton\"\n        [isOpen]=\"open && displayedValues && displayedValues.length > 0\"\n        (isOpenChange)=\"isOpenChangeHandle($event)\"\n        [fillControlMode]=\"fillControlMode\"\n        [scrollStrategy]=\"_repositionScrollStrategy\"\n        [focusTrapped]=\"true\"\n        [focusAutoCapture]=\"false\"\n        [triggers]=\"triggers\"\n        [disabled]=\"disabled || readOnly\"\n        [maxWidth]=\"!mobile && noDropDownMaxWidth ? null : dropDownMaxWidthPx\"\n        [style.width]=\"width && '100%'\"\n        [closeOnOutsideClick]=\"closeOnOutsideClick\"\n    >\n        <fd-popover-control>\n            <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n        </fd-popover-control>\n        <fd-popover-body [hidden]=\"!displayedValues.length\">\n            <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n            <ng-content></ng-content>\n        </fd-popover-body>\n    </fd-popover>\n</ng-template>\n<ng-template let-term=\"term\" #itemSource>\n    @if (!_customRenderer) {\n        <span\n            fd-list-title\n            fdTruncatedTitle\n            [innerHTML]=\"term | displayFnPipe: displayFn | highlight: inputText : highlighting && filterHighlight\"\n        >\n        </span>\n    } @else {\n        <ng-template\n            [ngTemplateOutlet]=\"_customRenderer\"\n            [ngTemplateOutletContext]=\"{ $implicit: term, inputText: inputText }\"\n        ></ng-template>\n    }\n</ng-template>\n<ng-template #mobileTemplate>\n    <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n</ng-template>\n<ng-template #controlTemplate>\n    <fd-input-group\n        [button]=\"showDropdownButton\"\n        [glyph]=\"showDropdownButton ? glyphValue : null\"\n        [glyphFont]=\"isSearch ? _defaultFontFamily : glyphFont\"\n        [state]=\"state\"\n        [buttonFocusable]=\"buttonFocusable\"\n        [disabled]=\"disabled\"\n        [readonly]=\"readOnly\"\n        [isControl]=\"true\"\n        [isExpanded]=\"!mobile && open && displayedValues.length > 0\"\n        [showFocus]=\"!clearInputBtnFocused\"\n        [glyphAriaLabel]=\"ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)()\"\n        [iconTitle]=\"title || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)()\"\n        (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n        (click)=\"mobile && isOpenChangeHandle(true)\"\n    >\n        <input\n            #searchInputElement\n            fdkAutoComplete\n            fd-input-group-input\n            type=\"text\"\n            role=\"combobox\"\n            autocomplete=\"off\"\n            [attr.aria-label]=\"ariaLabel\"\n            [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.aria-describedby]=\"comboboxId + '-list-results'\"\n            [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n            [attr.aria-haspopup]=\"autoComplete && !mobile\"\n            [attr.aria-expanded]=\"!mobile && open && displayedValues.length\"\n            [attr.aria-required]=\"required\"\n            [attr.tabindex]=\"readOnly || disabled ? -1 : null\"\n            [enable]=\"autoComplete && !mobile\"\n            [displayFn]=\"displayFn\"\n            [options]=\"dropdownValues\"\n            [inputText]=\"inputText\"\n            [disabled]=\"disabled\"\n            [readonly]=\"readOnly\"\n            [attr.aria-readonly]=\"readOnly\"\n            [placeholder]=\"placeholder\"\n            [id]=\"inputId\"\n            [(ngModel)]=\"inputText\"\n            (onComplete)=\"handleAutoComplete($event)\"\n            (keydown)=\"onInputKeydownHandler($event)\"\n            (paste)=\"onInputKeydownHandler('fromPaste')\"\n            (ngModelChange)=\"handleSearchTermChange()\"\n            (blur)=\"handleBlur()\"\n        />\n        @if ((isSearch || showClearButton) && inputText && inputText.length > 0) {\n            <span\n                class=\"fd-input-group__addon fd-input-group__addon--button\"\n                [class.fd-shellbar__input-group-addon]=\"inShellbar\"\n            >\n                <button\n                    fd-button\n                    class=\"fd-input-group__button\"\n                    type=\"button\"\n                    [fdType]=\"inShellbar ? 'standard' : 'transparent'\"\n                    [title]=\"_clearButtonTitle()\"\n                    [class.fd-shellbar__button]=\"inShellbar\"\n                    [attr.tabindex]=\"clearButtonFocusable ? 0 : -1\"\n                    (focus)=\"clearInputBtnFocus()\"\n                    (blur)=\"clearInputBtnBlur()\"\n                    (click)=\"_handleClearSearchTerm()\"\n                >\n                    <fd-icon glyph=\"decline\"></fd-icon>\n                </button>\n            </span>\n        }\n    </fd-input-group>\n    <div [id]=\"comboboxId + '-list-results'\" class=\"fd-combobox-count-list-results\">\n        {{ displayedValues.length || 0 }} result list items\n    </div>\n</ng-template>\n<ng-template #listTemplate>\n    @if (groupFn) {\n        <div\n            class=\"fd-combobox-custom-list\"\n            [style.maxHeight]=\"!mobile && maxHeight\"\n            (keydown.tab)=\"_close()\"\n            (keydown.shift.tab)=\"_close()\"\n        >\n            <ng-content></ng-content>\n            @for (group of displayedValues | listGroupPipe: groupFn; track group.key; let groupIndex = $index) {\n                <label class=\"fd-list__group-header\" [id]=\"comboboxId + '-group-header-' + groupIndex\">\n                    <span fd-list-title>{{ group.key }}</span>\n                </label>\n                <ul\n                    fd-list\n                    [dropdownMode]=\"true\"\n                    [id]=\"comboboxId + '-result-' + groupIndex\"\n                    role=\"listbox\"\n                    [attr.aria-labelledby]=\"comboboxId + '-group-header-' + groupIndex\"\n                    [hasMessage]=\"listMessages && listMessages.length > 0\"\n                    [byline]=\"byline\"\n                    [tabindex]=\"groupIndex === 0 ? 0 : -1\"\n                    (focusEscapeList)=\"handleListFocusEscape($event)\"\n                >\n                    @for (term of group.value; track $index; let index = $index) {\n                        <li\n                            fd-list-item\n                            ariaRole=\"option\"\n                            [attr.aria-placeholder]=\"group.key\"\n                            [attr.aria-setsize]=\"group.value.length\"\n                            [attr.aria-posinset]=\"index + 1\"\n                            class=\"fd-combobox-list-item\"\n                            [selected]=\"isSelected(term)\"\n                            [value]=\"term\"\n                            (keydown)=\"onItemKeyDownHandler($event, term)\"\n                            (mousedown)=\"_itemMousedown = true\"\n                            (click)=\"onMenuClickHandler(term)\"\n                            (focus)=\"onItemFocused(term)\"\n                        >\n                            <ng-template\n                                [ngTemplateOutlet]=\"itemSource\"\n                                [ngTemplateOutletContext]=\"{ term: term }\"\n                            ></ng-template>\n                        </li>\n                    }\n                </ul>\n            }\n        </div>\n    } @else {\n        <ul\n            fd-list\n            class=\"fd-combobox-custom-list\"\n            [dropdownMode]=\"true\"\n            [id]=\"comboboxId + '-result'\"\n            role=\"listbox\"\n            [attr.aria-labelledby]=\"comboboxId + '-search'\"\n            [style.maxHeight]=\"!mobile && maxHeight\"\n            [hasMessage]=\"listMessages && listMessages.length > 0\"\n            [byline]=\"byline\"\n            [tabindex]=\"0\"\n            (keydown.tab)=\"_close()\"\n            (keydown.shift.tab)=\"_close()\"\n            (focusEscapeList)=\"handleListFocusEscape($event)\"\n        >\n            <ng-content></ng-content>\n            @for (term of displayedValues; track $index) {\n                <li\n                    fd-list-item\n                    ariaRole=\"option\"\n                    [tabindex]=\"0\"\n                    class=\"fd-combobox-list-item\"\n                    [selected]=\"isSelected(term)\"\n                    (keydown)=\"onItemKeyDownHandler($event, term)\"\n                    (mousedown)=\"_itemMousedown = true\"\n                    (click)=\"onMenuClickHandler(term)\"\n                    [value]=\"term\"\n                    (focus)=\"onItemFocused(term)\"\n                >\n                    <ng-template\n                        [ngTemplateOutlet]=\"itemSource\"\n                        [ngTemplateOutletContext]=\"{ term: term }\"\n                    ></ng-template>\n                </li>\n            }\n        </ul>\n    }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ComboboxItemDirective } from './combobox-item.directive';\nimport { ComboboxComponent } from './combobox.component';\nimport { ListGroupPipe } from './list-group.pipe';\n\n/**\n * @deprecated\n * Use `ComboboxComponent` import instead.\n */\n@NgModule({\n    imports: [ComboboxComponent, ComboboxItemDirective, ListGroupPipe],\n    exports: [ComboboxComponent, ComboboxItemDirective, ListGroupPipe]\n})\nexport class ComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}