{"version":3,"file":"fundamental-ngx-platform-value-help-dialog.mjs","sources":["../../../../libs/platform/value-help-dialog/models/vhd-data.source.ts","../../../../libs/platform/value-help-dialog/models/vhd-strategy.enum.ts","../../../../libs/platform/value-help-dialog/models/vhd-type-condition.enum.ts","../../../../libs/platform/value-help-dialog/models/vhd-filter-rule.model.ts","../../../../libs/platform/value-help-dialog/models/vhd-tab-type.enum.ts","../../../../libs/platform/value-help-dialog/components/base-tab/vhd-base-tab.component.ts","../../../../libs/platform/value-help-dialog/constans/condition-display.function.ts","../../../../libs/platform/value-help-dialog/constans/variables.ts","../../../../libs/platform/value-help-dialog/directives/condition-count-message.directive.ts","../../../../libs/platform/value-help-dialog/components/define-tab/define-tab.component.ts","../../../../libs/platform/value-help-dialog/components/define-tab/define-tab.component.html","../../../../libs/platform/value-help-dialog/models/vhd-component.model.ts","../../../../libs/platform/value-help-dialog/components/select-tab/select-tab.component.ts","../../../../libs/platform/value-help-dialog/components/select-tab/select-tab.component.html","../../../../libs/platform/value-help-dialog/directives/value-help-filter-def.directive.ts","../../../../libs/platform/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.ts","../../../../libs/platform/value-help-dialog/directives/value-help-column-def.directive.ts","../../../../libs/platform/value-help-dialog/value-help-dialog/value-help-dialog.component.ts","../../../../libs/platform/value-help-dialog/value-help-dialog/value-help-dialog.component.html","../../../../libs/platform/value-help-dialog/value-help-dialog.module.ts","../../../../libs/platform/value-help-dialog/fundamental-ngx-platform-value-help-dialog.ts"],"sourcesContent":["import { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { BaseDataProvider, DataProvider, DataSource } from '@fundamental-ngx/platform/shared';\n\nexport class ValueHelpDialogDataSource<T> implements DataSource<T> {\n    /** @hidden */\n    protected _dataChanges: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n    /** @hidden */\n    protected _onDataRequested$ = new Subject<void>();\n    /** @hidden */\n    protected _onDataReceived$ = new Subject<void>();\n\n    /** @hidden */\n    protected _dataLoading = false;\n\n    /** @hidden */\n    get isDataLoading(): boolean {\n        return this._dataLoading;\n    }\n\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<T>) {}\n\n    /** @hidden */\n    match(predicate?: string | Map<string, string>): void {\n        this._onDataRequested$.next();\n        this._dataLoading = true;\n\n        let searchParam = new Map<string, any>();\n        if (typeof predicate === 'string') {\n            searchParam.set('query', predicate);\n        } else if (predicate instanceof Map) {\n            searchParam = predicate;\n        }\n\n        this.dataProvider\n            .fetch(searchParam)\n            .pipe(take(1))\n            .subscribe(\n                (result: T[]) => {\n                    this._onDataReceived$.next();\n                    this._dataLoading = false;\n                    this._dataChanges.next(result);\n                },\n                () => {\n                    this._onDataReceived$.next();\n                    this._dataLoading = false;\n                }\n            );\n    }\n\n    /** @hidden */\n    open(): Observable<T[]> {\n        return this._dataChanges.asObservable();\n    }\n\n    /** @hidden */\n    onDataRequested(): Observable<void> {\n        return this._onDataRequested$.asObservable();\n    }\n\n    /** @hidden */\n    onDataReceived(): Observable<void> {\n        return this._onDataReceived$.asObservable();\n    }\n\n    /** @hidden */\n    close(): void {}\n}\n\nexport class ArrayValueHelpDialogDataSource<T> extends ValueHelpDialogDataSource<T> {\n    /** @hidden */\n    constructor(data: T[]) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ObservableValueHelpDialogDataSource<T> extends ValueHelpDialogDataSource<T> {\n    /** @hidden */\n    constructor(data: Observable<T[]>) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class VhdDataProvider<R extends object> extends DataProvider<R> {\n    /** @hidden */\n    constructor(public values: R[]) {\n        super();\n    }\n\n    /** @hidden */\n    fetch(params: Map<string, string>): Observable<R[]> {\n        let data = this.values;\n        const arrayParams = Array.from(params);\n        const filterFn = (row: R): boolean => {\n            const rowEntries = Object.entries(row) as string[][];\n            return arrayParams.every(([key, value]) => {\n                if (key === '*') {\n                    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                    return rowEntries.some(([_rowEntryKey, rowEntryValue]) =>\n                        String(rowEntryValue).toLowerCase().includes(value.toLowerCase())\n                    );\n                } else {\n                    return String(row[key]).toLowerCase().includes(value.toLowerCase());\n                }\n            });\n        };\n        if (params.size) {\n            data = this.values.filter(filterFn);\n        }\n\n        return of(data);\n    }\n}\n","export enum VhdDefineIncludeStrategy {\n    contains = 'contains',\n    equalTo = 'equalTo',\n    between = 'between',\n    startsWith = 'startsWith',\n    endsWith = 'endsWith',\n    lessThan = 'lessThan',\n    lessThanEqual = 'lessThanEqual',\n    greaterThan = 'greaterThan',\n    greaterThanEqual = 'greaterThanEqual',\n    empty = 'empty'\n}\n\nexport enum VhdDefineExcludeStrategy {\n    not_equalTo = 'not_equalTo',\n    not_empty = 'not_empty'\n}\n","export enum VhdDefineType {\n    include = 'include',\n    exclude = 'exclude'\n}\n","import { VhdDefineExcludeStrategy, VhdDefineIncludeStrategy } from './vhd-strategy.enum';\nimport { VhdDefineType } from './vhd-type-condition.enum';\n\nexport interface VhdDefineEntityRule {\n    type: VhdDefineType;\n    key: string;\n    strategy: VhdDefineIncludeStrategy | VhdDefineExcludeStrategy;\n    value: string;\n    valueTo: string;\n}\n\nexport class BaseEntity implements VhdDefineEntityRule {\n    /** @hidden */\n    type: VhdDefineType;\n    /** @hidden */\n    key = '*';\n    /** @hidden */\n    label?: string;\n    /** @hidden */\n    strategy: VhdDefineIncludeStrategy | VhdDefineExcludeStrategy;\n    /** @hidden */\n    value = '';\n    /** @hidden */\n    valueTo = '';\n    /** @hidden */\n    valid: boolean;\n\n    /** @hidden */\n    constructor(strategy?: VhdDefineIncludeStrategy | VhdDefineExcludeStrategy, key?: string) {\n        if (key) {\n            this.key = key;\n        }\n        this.strategy = strategy || VhdDefineIncludeStrategy.equalTo;\n    }\n}\nexport class VhdIncludedEntity extends BaseEntity {\n    /** @hidden */\n    type: VhdDefineType = VhdDefineType.include;\n}\nexport class VhdExcludedEntity extends BaseEntity {\n    /** @hidden */\n    type: VhdDefineType = VhdDefineType.exclude;\n}\n","export enum VhdTab {\n    selectFromList,\n    defineConditions,\n    advancedSearch\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\n\nimport { VhdTab } from '../../models';\n\n@Component({\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VhdBaseTab {\n    /** Tab Title */\n    @Input()\n    uid: string;\n\n    /** Tab Title */\n    @Input()\n    tabTitle: string;\n\n    /** Mobile view */\n    @Input()\n    mobile = false;\n\n    /** @hidden */\n    get type(): VhdTab {\n        return VhdTab.defineConditions;\n    }\n\n    /** @hidden */\n    constructor(readonly _changeDetectorRef: ChangeDetectorRef) {}\n}\n","import {\n    VhdDefineExcludeStrategy,\n    VhdDefineIncludeStrategy,\n    VhdExcludedEntity,\n    VhdFilter,\n    VhdIncludedEntity\n} from '../models';\n\nexport const defaultConditionDisplayFn = (\n    item: VhdIncludedEntity | VhdExcludedEntity,\n    filters?: VhdFilter[]\n): string | null => {\n    const filter = (filters || []).find((f) => f.key === item.key);\n    let value = (() => {\n        switch (item.strategy) {\n            case VhdDefineIncludeStrategy.empty:\n            case VhdDefineExcludeStrategy.not_empty:\n                return null;\n            case VhdDefineIncludeStrategy.between:\n                return `${item.value}...${item.valueTo}`;\n            case VhdDefineIncludeStrategy.contains:\n                return `*${item.value}*`;\n            case VhdDefineIncludeStrategy.equalTo:\n                return `=${item.value}`;\n            case VhdDefineIncludeStrategy.startsWith:\n                return `${item.value}*`;\n            case VhdDefineIncludeStrategy.endsWith:\n                return `*${item.value}`;\n            case VhdDefineIncludeStrategy.greaterThan:\n                return `>${item.value}`;\n            case VhdDefineIncludeStrategy.greaterThanEqual:\n                return `>=${item.value}`;\n            case VhdDefineIncludeStrategy.lessThan:\n                return `<${item.value}`;\n            case VhdDefineIncludeStrategy.lessThanEqual:\n                return `<=${item.value}`;\n            case VhdDefineExcludeStrategy.not_equalTo:\n                return `!(=${item.value})`;\n        }\n    })();\n    if (value && item.type === 'exclude') {\n        value = `!(${value})`;\n    }\n    if (filter) {\n        return `${filter.label}: ${value}`;\n    }\n\n    return value;\n};\n","export const MAX_CHARACTER_HINT_COUNT = 7;\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { AbstractControl, FormControl, NG_VALIDATORS, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fdp-condition-count-message]',\n    providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }],\n    standalone: true\n})\nexport class ConditionCountMessageDirective {\n    /** Max characters allowed */\n    @Input()\n    set maxCharacters(value: number) {\n        this._maxCharacters = <number>coerceNumberProperty(value);\n    }\n    get maxCharacters(): number {\n        return this._maxCharacters;\n    }\n\n    /** @hidden */\n    private _maxCharacters = Number.MAX_SAFE_INTEGER;\n\n    /** @hidden */\n    private readonly validator: ValidatorFn;\n\n    /** @hidden */\n    constructor() {\n        this.validator = this.checkError();\n    }\n\n    /** @hidden */\n    validate(control: FormControl): ValidationErrors | null {\n        return this.validator(control);\n    }\n\n    /** @hidden */\n    private checkError(): ValidatorFn {\n        return (control: AbstractControl) => {\n            if (control.dirty && control.value && control.value.length > this.maxCharacters) {\n                return {\n                    maxCharacters: {\n                        actualLength: control.value.length,\n                        requiredLength: this.maxCharacters\n                    }\n                };\n            }\n            return null;\n        };\n    }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n    ViewEncapsulation\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n    FormControlComponent,\n    FormInputMessageGroupComponent,\n    FormLabelComponent,\n    FormMessageComponent\n} from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ListGroupHeaderDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MAX_CHARACTER_HINT_COUNT } from '../../constans';\nimport { ConditionCountMessageDirective } from '../../directives/condition-count-message.directive';\nimport {\n    BaseEntity,\n    VhdDefineExcludeStrategy,\n    VhdDefineIncludeStrategy,\n    VhdDefineType,\n    VhdExcludedEntity,\n    VhdIncludedEntity\n} from '../../models';\nimport { VhdBaseTab } from '../base-tab/vhd-base-tab.component';\n\nclass ExtendedBaseEntity extends BaseEntity {\n    id?: number;\n}\n\nclass ExtendedIncludedEntity extends VhdIncludedEntity {\n    id?: number;\n}\n\nclass ExtendedExcludedEntity extends VhdExcludedEntity {\n    id?: number;\n}\n\nlet titleUniqueId = 0;\n\n@Component({\n    selector: 'fdp-define-tab',\n    templateUrl: './define-tab.component.html',\n    styleUrl: './define-tab.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        TitleComponent,\n        LayoutGridComponent,\n        LayoutGridRowDirective,\n        LayoutGridColDirective,\n        FormLabelComponent,\n        SelectComponent,\n        FormsModule,\n        ListGroupHeaderDirective,\n        ListTitleDirective,\n        OptionComponent,\n        NgTemplateOutlet,\n        FormInputMessageGroupComponent,\n        FormControlComponent,\n        ConditionCountMessageDirective,\n        ButtonComponent,\n        FormMessageComponent,\n        FdTranslatePipe\n    ]\n})\nexport class DefineTabComponent extends VhdBaseTab implements OnChanges, AfterViewInit {\n    /** @hidden */\n    protected defaultId = `fd-title-id-${titleUniqueId++}`;\n    /** @hidden */\n    protected defaultSelectId = `fd-select-title-id-${titleUniqueId++}`;\n\n    /** title id for the table  */\n    @Input()\n    titleId: string = this.defaultId;\n\n    /** seelcted value id for the table  */\n    @Input()\n    selectedId: string = this.defaultSelectId;\n\n    /** @hidden */\n    @Input()\n    conditions: ExtendedBaseEntity[] = [];\n\n    /** @hidden */\n    @Input()\n    strategyLabels: { [key in keyof (typeof VhdDefineIncludeStrategy | typeof VhdDefineExcludeStrategy)]?: string } =\n        {};\n\n    /** @hidden */\n    @Output()\n    includeChange: EventEmitter<ExtendedIncludedEntity[]> = new EventEmitter<ExtendedIncludedEntity[]>();\n\n    /** @hidden */\n    @Output()\n    excludeChange: EventEmitter<ExtendedExcludedEntity[]> = new EventEmitter<ExtendedExcludedEntity[]>();\n\n    /** @hidden */\n    @Output()\n    conditionChange: EventEmitter<BaseEntity[]> = new EventEmitter<BaseEntity[]>();\n\n    /** @hidden */\n    _conditions: ExtendedBaseEntity[] = [];\n\n    /** @hidden */\n    _definePanelState = {\n        included: false,\n        excluded: false\n    };\n\n    /** @hidden */\n    _rules = {\n        maxCharactersHintCount: MAX_CHARACTER_HINT_COUNT\n    };\n    /** @hidden */\n    _strategyIncludeValues = VhdDefineIncludeStrategy;\n\n    /** @hidden */\n    _strategyExcludeValues = VhdDefineExcludeStrategy;\n\n    /** @hidden */\n    _defineTypes = VhdDefineType;\n\n    /** @hidden */\n    _includeStrategy: StategyItem[] = [];\n\n    /** @hidden */\n    _excludeStrategy: StategyItem[] = [];\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('conditions' in changes) {\n            this._conditions = (this.conditions as ExtendedIncludedEntity[]) || [];\n            this._initializeConditions();\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._refreshStrategies();\n    }\n\n    /** @hidden Track function for main data */\n    _trackByKeyAndType(\n        _index: number,\n        item: ExtendedIncludedEntity | ExtendedExcludedEntity\n    ): number | string | undefined {\n        if (item) {\n            return item.id + item.key + item.type;\n        }\n\n        return undefined;\n    }\n\n    /** @hidden */\n    _onSelectStrategy(): void {\n        this._filterChanged();\n    }\n\n    /** @hidden */\n    _filterChanged(): void {\n        this.conditionChange.emit(this._conditions);\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** @hidden */\n    addEmptyCondition(): void {\n        const item = new ExtendedBaseEntity();\n        item.value = '';\n        this._conditions.push(item);\n        this._filterChanged();\n    }\n\n    /** @hidden */\n    removeCondition(index: number): void {\n        this._conditions.splice(index, 1);\n        this._initializeConditions();\n        this._filterChanged();\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** @hidden */\n    _validateConditionValue(item: ExtendedIncludedEntity | ExtendedExcludedEntity, valid: boolean | boolean[]): void {\n        item.valid = Array.isArray(valid) ? valid.every(Boolean) : !!valid;\n        this._filterChanged();\n    }\n\n    /** @hidden */\n    private _refreshStrategies(): void {\n        this._includeStrategy = Object.keys(VhdDefineIncludeStrategy).map((key) => ({\n            key,\n            type: VhdDefineType.include\n        }));\n        this._excludeStrategy = Object.keys(VhdDefineExcludeStrategy).map((key) => ({\n            key,\n            type: VhdDefineType.exclude\n        }));\n    }\n\n    /** @hidden */\n    private _initializeConditions(): void {\n        if (this._conditions.length === 0) {\n            this.addEmptyCondition();\n        }\n    }\n}\n\ninterface StategyItem {\n    key: string;\n    type: VhdDefineType;\n}\n","<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n    {{ ('platformVHD.defineConditionTitle' | fdTranslate)() }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n    <fd-layout-grid class=\"condition-row\">\n        <div fdLayoutGridRow>\n            <div [fdLayoutGridCol]=\"4\">\n                <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n                    CONDITIONPANEL_OPERATOR_LABEL\n                </label>\n                <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n                    {{\n                        (\n                            'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n                            | fdTranslate: { value: item.strategy }\n                        )()\n                    }}</label\n                >\n                <fd-select\n                    class=\"vhd-condition-filters\"\n                    fdLayoutGridCol\n                    colGrow\n                    [class.fd-select-custom-class]=\"false\"\n                    #sttr\n                    [controlTemplate]=\"customSelectTemplate\"\n                    [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n                    [(ngModel)]=\"item.strategy\"\n                    (valueChange)=\"_filterChanged()\"\n                    role=\"combobox\"\n                    aria-roledescription=\"select\"\n                    aria-haspopup=\"listbox\"\n                    [inline]=\"false\"\n                    [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n                >\n                    @if (_includeStrategy.length) {\n                        <li fd-list-group-header>\n                            <span fd-list-title>{{\n                                ('platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate)()\n                            }}</span>\n                        </li>\n                        @for (strategy of _includeStrategy; track strategy) {\n                            <li fd-option [value]=\"strategy.key\">\n                                <ng-template\n                                    [ngTemplateOutlet]=\"conditionStrategyOption\"\n                                    [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n                                ></ng-template>\n                            </li>\n                        }\n                    }\n                    @if (_excludeStrategy.length) {\n                        <li fd-list-group-header>\n                            <span fd-list-title>{{\n                                ('platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate)()\n                            }}</span>\n                        </li>\n                        @for (strategy of _excludeStrategy; track strategy) {\n                            <li fd-option [value]=\"strategy.key\">\n                                <ng-template\n                                    [ngTemplateOutlet]=\"conditionStrategyOption\"\n                                    [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n                                ></ng-template>\n                            </li>\n                        }\n                    }\n                </fd-select>\n            </div>\n            @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n                <div fdLayoutGridCol colGrow>\n                    <div fdLayoutGridRow>\n                        @if (item.strategy === _strategyIncludeValues.between) {\n                            <div fdLayoutGridCol colGrow>\n                                <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n                                    <input\n                                        fd-form-control\n                                        fdp-condition-count-message\n                                        [maxCharacters]=\"_rules.maxCharactersHintCount\"\n                                        type=\"text\"\n                                        [placeholder]=\"('platformVHD.defineConditionFromPlaceholder' | fdTranslate)()\"\n                                        placeholder=\"from\"\n                                        required\n                                        [state]=\"fromModel.invalid ? 'error' : null\"\n                                        [name]=\"uid + '-' + type + '-from-' + item.id\"\n                                        (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n                                        #fromModel=\"ngModel\"\n                                        [(ngModel)]=\"item.value\"\n                                    />\n                                    <ng-template\n                                        [ngTemplateOutlet]=\"countError\"\n                                        [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n                                    ></ng-template>\n                                </fd-form-input-message-group>\n                            </div>\n                            <div fdLayoutGridCol colGrow>\n                                <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n                                    <input\n                                        fd-form-control\n                                        fdp-condition-count-message\n                                        [maxCharacters]=\"_rules.maxCharactersHintCount\"\n                                        type=\"text\"\n                                        [placeholder]=\"('platformVHD.defineConditionToPlaceholder' | fdTranslate)()\"\n                                        required\n                                        [state]=\"toModel.invalid ? 'error' : null\"\n                                        [name]=\"uid + '-' + type + '-to-' + item.id\"\n                                        (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n                                        #toModel=\"ngModel\"\n                                        [(ngModel)]=\"item.valueTo\"\n                                    />\n                                    <ng-template\n                                        [ngTemplateOutlet]=\"countError\"\n                                        [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n                                    ></ng-template>\n                                </fd-form-input-message-group>\n                            </div>\n                        } @else {\n                            <div fdLayoutGridCol colGrow>\n                                <fd-form-input-message-group>\n                                    <input\n                                        fd-form-control\n                                        fdp-condition-count-message\n                                        [maxCharacters]=\"_rules.maxCharactersHintCount\"\n                                        type=\"text\"\n                                        [placeholder]=\"('platformVHD.defineConditionValuePlaceholder' | fdTranslate)()\"\n                                        [state]=\"valueModel.invalid ? 'error' : null\"\n                                        [name]=\"uid + '-' + type + '-value-' + item.id\"\n                                        (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n                                        #valueModel=\"ngModel\"\n                                        [(ngModel)]=\"item.value\"\n                                    />\n                                    @if (valueModel.invalid) {\n                                        <ng-template\n                                            [ngTemplateOutlet]=\"countError\"\n                                            [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n                                        ></ng-template>\n                                    }\n                                </fd-form-input-message-group>\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n            <div class=\"action-col\" fdLayoutGridCol colGrow>\n                <button\n                    fd-button\n                    [ariaLabel]=\"('platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate)()\"\n                    fdType=\"transparent\"\n                    glyph=\"decline\"\n                    [title]=\"('platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate)()\"\n                    (click)=\"removeCondition(i)\"\n                ></button>\n            </div>\n        </div>\n    </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n    <div fdLayoutGridRow>\n        <div fdLayoutGridCol colGrow>&nbsp;</div>\n        <div fdLayoutGridCol class=\"action-col\">\n            <button\n                fd-button\n                [attr.aria-label]=\"('platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate)()\"\n                [label]=\"('platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate)()\"\n                [title]=\"('platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate)()\"\n                (click)=\"addEmptyCondition()\"\n            ></button>\n        </div>\n    </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n    @switch (strategy.key) {\n        @case ('contains') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate)() }}\n        }\n        @case ('equalTo') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate)() }}\n        }\n        @case ('between') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate)() }}\n        }\n        @case ('startsWith') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate)() }}\n        }\n        @case ('endsWith') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate)() }}\n        }\n        @case ('lessThan') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate)() }}\n        }\n        @case ('lessThanEqual') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate)() }}\n        }\n        @case ('greaterThan') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate)() }}\n        }\n        @case ('greaterThanEqual') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate)() }}\n        }\n        @case ('empty') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate)() }}\n        }\n        @case ('not_equalTo') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate)() }}\n        }\n        @case ('not_empty') {\n            {{ ('platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate)() }}\n        }\n    }\n</ng-template>\n<ng-template #countError let-count>\n    @if (count && count > 7) {\n        <fd-form-message type=\"error\">\n            {{ ('platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 })() }}\n        </fd-form-message>\n    }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n    {{ textValue }}\n</ng-template>\n","import { QueryList } from '@angular/core';\nimport { ValueHelpColumnDefDirective } from '../directives/value-help-column-def.directive';\n\nexport abstract class VhdComponent {\n    abstract columnDef: QueryList<ValueHelpColumnDefDirective>;\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { FocusableGridDirective, range } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { InfiniteScrollDirective } from '@fundamental-ngx/core/infinite-scroll';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport {\n    TableBodyDirective,\n    TableCellDirective,\n    TableComponent,\n    TableHeaderDirective,\n    TableRowDirective,\n    TableTextDirective\n} from '@fundamental-ngx/core/table';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { startWith } from 'rxjs';\nimport { ValueHelpColumnDefDirective } from '../../directives/value-help-column-def.directive';\nimport { VdhTableSelection, VhdFilter } from '../../models';\nimport { VhdComponent } from '../../models/vhd-component.model';\nimport { VhdBaseTab } from '../base-tab/vhd-base-tab.component';\n\nlet titleUniqueId = 0;\n\n@Component({\n    selector: 'fdp-select-tab',\n    templateUrl: './select-tab.component.html',\n    styleUrl: './select-tab.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        TitleComponent,\n        CdkScrollable,\n        ScrollbarDirective,\n        InfiniteScrollDirective,\n        FocusableGridDirective,\n        TableComponent,\n        FormLabelComponent,\n        TableHeaderDirective,\n        TableRowDirective,\n        TableCellDirective,\n        CheckboxComponent,\n        FormsModule,\n        TableBodyDirective,\n        TableTextDirective,\n        BarComponent,\n        BarMiddleDirective,\n        BarElementDirective,\n        ButtonComponent,\n        SkeletonComponent,\n        SlicePipe,\n        FdTranslatePipe,\n        NgTemplateOutlet\n    ]\n})\nexport class SelectTabComponent<T> extends VhdBaseTab implements OnChanges, AfterViewInit {\n    /** @hidden */\n    readonly loadingRange = range(3);\n    protected defaultTitleId = `fd-select-tab-title-id-${titleUniqueId++}`;\n    /** @hidden */\n    protected defaultCountId = `fd-select-tab-title-count-id-${titleUniqueId++}`;\n\n    /** Select tab title element ID */\n    @Input()\n    selectTabTitleId: string = this.defaultTitleId;\n\n    /** Select tab count element ID */\n    @Input()\n    selectTabCountId: string = this.defaultCountId;\n\n    /** Selected items */\n    @Input()\n    selected: T[] = [];\n\n    /** Loading state */\n    @Input()\n    loading = false;\n\n    /** Actual filters */\n    @Input()\n    filters: VhdFilter[] = [];\n\n    /** Close dialog immediately after select any row from search table. It'll be skipped if multi option is true */\n    @Input()\n    selection: VdhTableSelection = 'single';\n\n    /** Whether to allow users to select all table entries with one checkbox. */\n    @Input()\n    allowSelectAll = true;\n\n    /** Uniq field from data source */\n    @Input()\n    uniqueKey = 'id';\n\n    /** Items per page for pagination below search table */\n    @Input()\n    pageSize: number;\n\n    /** Count of default mobile header from search table */\n    @Input()\n    defaultMobileHeaders = 2;\n\n    /** Displayed data for search table */\n    @Input()\n    displayedData: T[] = [];\n\n    /** Event emitted when row was selected. */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() select = new EventEmitter<T[]>();\n\n    /** @hidden */\n    @ViewChild(InfiniteScrollDirective) infiniteScrollTable: InfiniteScrollDirective;\n\n    /** @hidden indeterminate flag for `select all` checkbox */\n    _selectedAll: boolean | null = false;\n\n    /** @hidden Shown items count in mobile view */\n    _shownFrom = 0;\n\n    /** @hidden Shown items count in mobile view */\n    _shownCount = 0;\n\n    /** @hidden Current page in desktop view */\n    _currentPage = 0;\n\n    /** @hidden Headers and body for search table */\n    _tableFilters: {\n        main: VhdFilter[];\n        secondary: VhdFilter[];\n    } = {\n        main: [],\n        secondary: []\n    };\n\n    /** @hidden */\n    _selectedMap: { [key: string]: boolean } = {};\n\n    /** Selection type getters */\n    get isSingleSelection(): boolean {\n        return this.selection === 'single';\n    }\n    /** Selection type getters */\n    get isOnceSelection(): boolean {\n        return this.selection === 'once';\n    }\n    /** Selection type getters */\n    get isMultiSelection(): boolean {\n        return this.selection === 'multi';\n    }\n\n    /** @hidden */\n    _columnDefMap = new Map<string, ValueHelpColumnDefDirective>();\n\n    /** @hidden */\n    private selectedItems: T[] = [];\n\n    /** @hidden */\n    private readonly _vhd = inject(VhdComponent, { optional: true });\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        Promise.resolve(true).then(() => this._checkScrollAndShowMore());\n\n        this._vhd?.columnDef.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._columnDefMap.clear();\n            this._vhd?.columnDef.forEach((item) => {\n                this._columnDefMap.set(item.column, item);\n            });\n        });\n    }\n\n    /** @hidden  */\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('filters' in changes) {\n            this._initializeFilters();\n        }\n        if ('displayedData' in changes) {\n            this._refreshDisplayedData();\n        }\n        if ('selected' in changes) {\n            this.selectedItems = this.selected || [];\n            this._refreshSelectedMap();\n            this._refreshTristate();\n        }\n    }\n\n    /** @hidden Track function for main data */\n    _trackByTableRowFn: (_index: number, item: T) => string | undefined = (_index: number, item: T) => {\n        if (item) {\n            return item[this.uniqueKey];\n        }\n\n        return undefined;\n    };\n\n    /** @hidden Track function for filters */\n    _trackByFilterFn(_index: number, item: VhdFilter): number | string | undefined {\n        return item && item.key ? item.key : undefined;\n    }\n\n    /** @hidden Show more elements */\n    _showMoreElements(): void {\n        if (this.pageSize && this._shownCount !== this.displayedData.length) {\n            this._shownCount += this.pageSize;\n            this._shownCount = Math.min(this._shownCount, this.displayedData.length);\n        } else {\n            this._shownCount = this.displayedData.length;\n        }\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** @hidden Refresh page in desktop view */\n    _updatePage(pageNumber = 1): void {\n        if (this.pageSize) {\n            this._currentPage = pageNumber;\n            this._shownFrom = (pageNumber - 1) * this.pageSize;\n            this._shownCount = Math.min(this._shownFrom + this.pageSize, this.displayedData.length);\n        } else {\n            this._shownCount = this.displayedData.length;\n        }\n    }\n\n    /** @hidden Method toggle selected state for all items  */\n    _toggleAllRows(): void {\n        if (this._selectedAll) {\n            this.selectedItems = [];\n        } else {\n            this.selectedItems = this.displayedData;\n        }\n        this.select.emit(this.selectedItems);\n        this._refreshSelectedMap();\n        this._refreshTristate();\n    }\n\n    /** @hidden Method toggle selected state for one items  */\n    _toggleSelectRow(item: T): void {\n        if (this.isMultiSelection) {\n            const isSelected = this._selectedMap[item[this.uniqueKey]];\n            if (isSelected) {\n                this.selectedItems = this.selectedItems.filter((s: T) => s[this.uniqueKey] !== item[this.uniqueKey]);\n            } else {\n                this.selectedItems.push(item);\n            }\n            this._selectedMap[item[this.uniqueKey]] = !this._selectedMap[item[this.uniqueKey]];\n        } else {\n            this._clearSelectedItems();\n            this.selectedItems = [item];\n        }\n        this.select.emit(this.selectedItems);\n        this._refreshTristate();\n    }\n\n    /** @hidden */\n    private _checkScrollAndShowMore(): void {\n        if (this.mobile) {\n            return;\n        }\n        if (\n            this.displayedData.length &&\n            this._shownCount !== this.displayedData.length &&\n            this.infiniteScrollTable?.shouldTriggerAction()\n        ) {\n            this._showMoreElements();\n            setTimeout(() => {\n                this._checkScrollAndShowMore();\n            }, 100);\n        }\n    }\n\n    /** @hidden */\n    private _resetShown(): void {\n        if (this.mobile) {\n            this._showMoreElements();\n        } else {\n            this._checkScrollAndShowMore();\n        }\n    }\n\n    /** @hidden Manually clear selected items */\n    private _clearSelectedItems(): void {\n        this._selectedMap = {};\n        this.selectedItems = [];\n    }\n\n    /** @hidden Refresh indeterminate attribute on `select all` checkbox */\n    private _refreshTristate(): void {\n        const selected = Object.values(this._selectedMap).filter(Boolean).length;\n        if (selected === 0) {\n            this._selectedAll = false;\n        } else if (selected === this.displayedData.length) {\n            this._selectedAll = true;\n        } else {\n            this._selectedAll = null;\n        }\n    }\n\n    /** @hidden Set up filters */\n    private _initializeFilters(): void {\n        if (this.mobile) {\n            let _mobileTableHeaders = this.filters.filter((f) => f.main).map((f) => f.key);\n            if (!_mobileTableHeaders.length) {\n                _mobileTableHeaders = this.filters.slice(0, this.defaultMobileHeaders).map((f) => f.key);\n            }\n            this._tableFilters = {\n                main: this.filters.filter((filter) => _mobileTableHeaders.some((key) => key === filter.key)),\n                secondary: this.filters.filter((filter) => !_mobileTableHeaders.some((key) => key === filter.key))\n            };\n        } else {\n            this._tableFilters = {\n                main: this.filters,\n                secondary: []\n            };\n        }\n    }\n\n    /** @hidden Refresh display data */\n    private _refreshDisplayedData(): void {\n        this._resetShown();\n        this._refreshTristate();\n    }\n\n    /** @hidden Refresh selected map for display data */\n    private _refreshSelectedMap(): void {\n        this._selectedMap = {};\n        for (const item of this.displayedData) {\n            this._selectedMap[item[this.uniqueKey]] = false;\n        }\n        for (const s of this.selectedItems) {\n            this._selectedMap[s[this.uniqueKey]] = true;\n        }\n    }\n}\n","<div class=\"table-header\">\n    <h5 fd-title role=\"heading\" aria-level=\"5\">\n        {{ ('platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length })() }}\n    </h5>\n</div>\n<div\n    class=\"fdp-value-help-dialog__table-holder table-content\"\n    fd-scrollbar\n    fdInfiniteScroll\n    (onScrollAction)=\"_showMoreElements()\"\n    [scrollPercent]=\"80\"\n    role=\"table\"\n>\n    <table\n        fd-table\n        [popIn]=\"mobile\"\n        [noBorderX]=\"mobile\"\n        [noBorderY]=\"false\"\n        [attr.aria-colcount]=\"_tableFilters.main.length\"\n        [attr.aria-rowcount]=\"displayedData.length\"\n        role=\"grid\"\n        aria-multiselectable=\"true\"\n        [attr.aria-labelledby]=\"selectTabTitleId + ' ' + selectTabCountId\"\n        [allCellsFocusable]=\"true\"\n    >\n        <label [id]=\"selectTabCountId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n            {{\n                (\n                    'platformVHD.selectTabCountHiddenA11yLabel'\n                    | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\n                )()\n            }}\n        </label>\n        <label [id]=\"selectTabTitleId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n            {{ ('platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length })() }}\n        </label>\n        <thead fd-table-header>\n            @if (displayedData.length && _tableFilters) {\n                <tr fd-table-row>\n                    <th fd-table-cell [fitContent]=\"mobile\">\n                        @if (isMultiSelection && allowSelectAll) {\n                            <fd-checkbox\n                                [name]=\"uid + '-row-all'\"\n                                [tristate]=\"true\"\n                                [tristateSelectable]=\"false\"\n                                [ngModel]=\"_selectedAll\"\n                                (ngModelChange)=\"_toggleAllRows()\"\n                            ></fd-checkbox>\n                        }\n                    </th>\n                    @for (\n                        filter of _tableFilters.main;\n                        track _trackByFilterFn(colindex, filter);\n                        let colindex = $index\n                    ) {\n                        <th fd-table-cell [attr.aria-colindex]=\"colindex\">\n                            {{ filter.label }}\n                        </th>\n                    }\n                </tr>\n            }\n        </thead>\n        <tbody fd-table-body>\n            @for (\n                row of displayedData | slice: _shownFrom : _shownCount;\n                track _trackByTableRowFn(i, row);\n                let i = $index\n            ) {\n                <tr\n                    fd-table-row\n                    [hoverable]=\"!mobile\"\n                    [main]=\"mobile\"\n                    [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n                    [activable]=\"!isMultiSelection\"\n                    (click)=\"!isMultiSelection && _toggleSelectRow(row)\"\n                >\n                    <td fd-table-cell [fitContent]=\"mobile\">\n                        @if (isMultiSelection) {\n                            <fd-checkbox\n                                [name]=\"uid + '-row-' + i\"\n                                [ngModel]=\"_selectedMap[row[uniqueKey]]\"\n                                (change)=\"_toggleSelectRow(row)\"\n                            ></fd-checkbox>\n                        }\n                    </td>\n                    @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\n                        <td fd-table-cell [attr.aria-rowindex]=\"rowIndex\">\n                            @if (_columnDefMap.get(filter.key); as columnDef) {\n                                <ng-template\n                                    [ngTemplateOutlet]=\"columnDef.templateRef\"\n                                    [ngTemplateOutletContext]=\"{\n                                        $implicit: row,\n                                        key: filter.key,\n                                        value: row[filter.key] || ''\n                                    }\"\n                                ></ng-template>\n                            } @else {\n                                {{ row[filter.key] || '' }}\n                            }\n                        </td>\n                    }\n                </tr>\n                @if (mobile && _tableFilters.secondary.length) {\n                    <tr fd-table-row [secondary]=\"true\" [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\">\n                        <td fd-table-cell></td>\n                        <td colspan=\"100%\" fd-table-cell [fitContent]=\"true\">\n                            @for (filter of _tableFilters.secondary; track filter) {\n                                <p fd-table-text>\n                                    <label>{{ filter.label }}:</label>\n                                    {{ row[filter.key] || '' }}\n                                </p>\n                            }\n                        </td>\n                    </tr>\n                }\n            }\n            @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\n                <tr fd-table-row>\n                    <td colspan=\"100%\">\n                        <div fd-bar barDesign=\"header-with-subheader\">\n                            <div fd-bar-middle>\n                                <fd-bar-element>\n                                    <button\n                                        fd-button\n                                        fdType=\"transparent\"\n                                        [label]=\"('platformVHD.selectTabMoreBtnLabel' | fdTranslate)()\"\n                                        (click)=\"_showMoreElements()\"\n                                    ></button>\n                                </fd-bar-element>\n                            </div>\n                        </div>\n                    </td>\n                </tr>\n            }\n            @if (!displayedData.length) {\n                @if (loading) {\n                    @for (_ of loadingRange; track $index) {\n                        <tr fd-table-row>\n                            @for (_ of loadingRange; track $index) {\n                                <td fd-table-cell>\n                                    <fd-skeleton\n                                        [style.margin]=\"'auto 0'\"\n                                        type=\"text\"\n                                        textLines=\"1\"\n                                        width=\"60%\"\n                                    ></fd-skeleton>\n                                </td>\n                            }\n                        </tr>\n                    }\n                } @else {\n                    <tr fd-table-row>\n                        <td fd-table-cell colspan=\"100%\">\n                            <div class=\"fdp-value-help-dialog__empty-message\">\n                                {{ ('platformVHD.searchTableEmptyMessage' | fdTranslate)() }}\n                            </div>\n                        </td>\n                    </tr>\n                }\n            }\n        </tbody>\n    </table>\n</div>\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { ValueHelpFilterDef, ValueHelpFilterDefContext } from '../models/vhd-filter.model';\n\n@Directive({\n    selector: '[fdpValueHelpFilterDef]',\n    standalone: true\n})\nexport class ValueHelpFilterDefDirective implements ValueHelpFilterDef {\n    /** Template reference */\n    readonly templateRef = inject<TemplateRef<ValueHelpFilterDefContext>>(TemplateRef);\n\n    /** @hidden */\n    static ngTemplateContextGuard(dir: ValueHelpFilterDefDirective, ctx: unknown): ctx is ValueHelpFilterDefContext {\n        return true;\n    }\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ValueHelpFilterDefDirective } from '../../directives/value-help-filter-def.directive';\nimport { VhdFilter } from '../../models/vhd-filter.model';\n\n@Component({\n    selector: 'fdp-value-help-dialog-filter',\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class VhdFilterComponent implements VhdFilter {\n    /** Uniq key for search and filtering */\n    @Input()\n    key: string;\n\n    /** Allow to control which of filters should show as main in mobile view.\n     * Apply for search table only */\n    @Input()\n    main = false;\n\n    /** Label for header in search table and search field */\n    @Input()\n    label: string;\n\n    /** Initial filter's value for search section in `select from list tab` only */\n    @Input()\n    value = '';\n\n    /** Allow to show filter in advanced search template */\n    @Input()\n    advanced = true;\n\n    /** Allow to use filter for including in `define conditions tab` */\n    @Input()\n    include = true;\n\n    /** Allow to use filter for excluding in `define conditions tab` */\n    @Input()\n    exclude = true;\n\n    /** @hidden */\n    @ContentChild(ValueHelpFilterDefDirective)\n    filterDef: Nullable<ValueHelpFilterDefDirective>;\n}\n","import { Directive, Input, TemplateRef, inject } from '@angular/core';\n\nexport interface ValueHelpColumnDefContext<T> {\n    $implicit: T;\n    key: string;\n    value: any;\n}\n\n@Directive({\n    selector: '[fdpValueHelpColumnDef]',\n    standalone: true\n})\nexport class ValueHelpColumnDefDirective<T = any> {\n    /** Type support. */\n    @Input('fdpValueHelpColumnDefAs')\n    as: T;\n\n    /** Column key to render custom template. */\n    @Input('fdpValueHelpColumnDefColumn')\n    column: string;\n    /** Template reference */\n    readonly templateRef = inject<TemplateRef<ValueHelpColumnDefContext<T>>>(TemplateRef);\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n    computed,\n    inject,\n    input\n} from '@angular/core';\nimport { Observable, Subject, Subscription, filter, isObservable, of, take, tap } from 'rxjs';\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { NgTemplateOutlet, SlicePipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { DisplayFnPipe, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n    BarComponent,\n    BarElementDirective,\n    BarLeftDirective,\n    BarRightDirective,\n    ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n    DialogBodyComponent,\n    DialogComponent,\n    DialogConfig,\n    DialogFooterComponent,\n    DialogHeaderComponent,\n    DialogRef,\n    DialogService\n} from '@fundamental-ngx/core/dialog';\nimport { FormControlComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ListIconDirective, ListLinkDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { HeadingLevel } from '@fundamental-ngx/core/shared';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TabItemDirective, TabLinkDirective, TabNavComponent, TabTagDirective } from '@fundamental-ngx/core/tabs';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { TokenComponent, TokenizerComponent, TokenizerInputDirective } from '@fundamental-ngx/core/token';\nimport { ToolbarComponent, ToolbarItemDirective, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { isDataSource } from '@fundamental-ngx/platform/shared';\nimport { DefineTabComponent } from '../components/define-tab/define-tab.component';\nimport { SelectTabComponent } from '../components/select-tab/select-tab.component';\nimport { VhdFilterComponent } from '../components/value-help-dialog-filter/value-help-dialog-filter.component';\nimport { defaultConditionDisplayFn } from '../constans/condition-display.function';\nimport { ValueHelpColumnDefDirective } from '../directives/value-help-column-def.directive';\nimport {\n    ArrayValueHelpDialogDataSource,\n    BaseEntity,\n    ObservableValueHelpDialogDataSource,\n    ValueHelpDialogDataSource,\n    VdhTableSelection,\n    VhdDefineExcludeStrategy,\n    VhdDefineIncludeStrategy,\n    VhdFilter,\n    VhdTab,\n    VhdValue,\n    VhdValueChangeEvent\n} from '../models';\nimport { VhdComponent } from '../models/vhd-component.model';\n\nlet vhdHeaderUniqueId = 0;\n\nexport type FdpValueHelpDialogDataSource<T> =\n    | ValueHelpDialogDataSource<T>\n    | ArrayValueHelpDialogDataSource<T>\n    | ObservableValueHelpDialogDataSource<T>;\n\nlet vhiUniqueId = 0;\n\n@Component({\n    selector: 'fdp-value-help-dialog',\n    templateUrl: './value-help-dialog.component.html',\n    styleUrl: './value-help-dialog.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: VhdComponent,\n            useExisting: PlatformValueHelpDialogComponent\n        }\n    ],\n    imports: [\n        DialogComponent,\n        DialogHeaderComponent,\n        TemplateDirective,\n        NgTemplateOutlet,\n        ScrollbarDirective,\n        DialogBodyComponent,\n        DialogFooterComponent,\n        TitleComponent,\n        TokenizerComponent,\n        TokenComponent,\n        ToolbarItemDirective,\n        FormControlComponent,\n        TokenizerInputDirective,\n        ButtonComponent,\n        FormsModule,\n        LayoutGridComponent,\n        LayoutGridRowDirective,\n        LayoutGridColDirective,\n        SearchFieldComponent,\n        ToolbarComponent,\n        ToolbarSpacerDirective,\n        BusyIndicatorComponent,\n        FormLabelComponent,\n        SkeletonComponent,\n        SelectTabComponent,\n        DefineTabComponent,\n        ListLinkDirective,\n        ListTitleDirective,\n        ListIconDirective,\n        TabNavComponent,\n        TabItemDirective,\n        TabLinkDirective,\n        TabTagDirective,\n        BarComponent,\n        BarLeftDirective,\n        BarElementDirective,\n        BarRightDirective,\n        ButtonBarComponent,\n        SlicePipe,\n        FdTranslatePipe,\n        DisplayFnPipe\n    ]\n})\nexport class PlatformValueHelpDialogComponent<T = any> extends VhdComponent implements OnChanges, OnDestroy {\n    /** Id of the popover */\n    @Input()\n    id: string = 'fdp-vhd-' + vhiUniqueId++;\n\n    /** Initial state of Value help dialog */\n    @Input()\n    value: VhdValue<T> = {\n        selected: [],\n        conditions: []\n    };\n\n    /** Dialog title */\n    @Input()\n    dialogTitle: string;\n\n    /** Select from list tab activation */\n    @Input()\n    initialTab = VhdTab.selectFromList;\n\n    /** Visible tabs */\n    @Input()\n    tabs: 'both' | 'select' | 'define' = 'both';\n\n    /** Initial expand state for advanced search panel */\n    @Input()\n    isOpenAdvanced = false;\n\n    /** Data source */\n    @Input()\n    set dataSource(value: FdpValueHelpDialogDataSource<any> | undefined) {\n        if (value) {\n            this._dataSource = this.toDataStream(value);\n        }\n    }\n    get dataSource(): FdpValueHelpDialogDataSource<any> | undefined {\n        return this._dataSource;\n    }\n\n    /** Dialog's custom config */\n    @Input()\n    dialogConfig: DialogConfig = {};\n\n    /** Unique key from the source field names. Required field. */\n    @Input()\n    uniqueKey: string;\n\n    /** Id attribute for dialog title */\n    @Input()\n    headerId = `fdp-vhd-header-id-${vhdHeaderUniqueId++}`;\n\n    /** Field name for default render from data.\n     * Required field if tokenizerFn is not exist. */\n    @Input()\n    tokenViewField: string;\n\n    /** Tokenizer function for custom token render, it has higher prio that `tokenViewField`.\n     * Required field if tokenViewField is not exist. */\n    @Input()\n    tokenizerFn: (item: T) => string;\n\n    /** Whether the value help dialog should be view in mobile mode */\n    @Input()\n    mobile = false;\n\n    /** It should be able if you use multiple selection */\n    @Input()\n    formatToken: (value: VhdValueChangeEvent<T>) => void;\n\n    /** Tokenizer function for condition's token render */\n    @Input()\n    conditionDisplayFn = defaultConditionDisplayFn;\n\n    /** Validator function. Called when user submits VHD dialog. */\n    @Input()\n    tokenValidator: ((value: VhdValueChangeEvent) => Observable<boolean> | boolean) | undefined;\n\n    /** Selection mode for search table */\n    @Input()\n    searchSelection: VdhTableSelection = 'multi';\n\n    /** Items per page for pagination below search table */\n    @Input()\n    searchTablePageSize = 20;\n\n    /** Count of default mobile header from search table */\n    @Input()\n    searchTableMobileHeaders = 2;\n\n    /** Max shown initial filters on open. Desktop only */\n    @Input()\n    maxShownInitialFilters = 4;\n\n    /** Loading state */\n    @Input()\n    loading: boolean | undefined;\n\n    /** Whether to allow users to select all table entries with one checkbox. */\n    @Input()\n    allowSelectAll = true;\n\n    /** Custom strategies labels\n     * Allowed keys: contains, equalTo, between, startsWith, endsWith, lessThan, lessThanEqual, greaterThan, greaterThanEqual, empty\n     */\n    @Input()\n    defineStrategyLabels: {\n        [key in keyof (typeof VhdDefineIncludeStrategy | typeof VhdDefineExcludeStrategy)]?: string;\n    } = {\n        contains: 'contains',\n        equalTo: 'equal to',\n        between: 'between',\n        startsWith: 'starts with',\n        endsWith: 'ends with',\n        lessThan: 'less than',\n        lessThanEqual: 'less than or equal to',\n        greaterThan: 'greater than',\n        greaterThanEqual: 'greater than or equal to',\n        empty: 'empty',\n        not_equalTo: 'not equal to',\n        not_empty: 'not empty'\n    };\n\n    /** Dialog outputs */\n    /** Event emitted when filters/tokens were changed. */\n    @Output()\n    valueChange = new EventEmitter<VhdValueChangeEvent<T>>();\n\n    /** Event emitted when data loading is started. */\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onDataRequested = new EventEmitter<void>();\n\n    /** Event emitted when data loading is finished. */\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onDataReceived = new EventEmitter<void>();\n\n    /** @hidden Fitlers for search table and defince conditions */\n    @ContentChildren(VhdFilterComponent)\n    filters: QueryList<VhdFilterComponent>;\n\n    /** Column definitions. */\n    @ContentChildren(ValueHelpColumnDefDirective)\n    columnDef: QueryList<ValueHelpColumnDefDirective>;\n\n    /** @hidden Internal container for dialog */\n    @ViewChild('container', { read: TemplateRef })\n    dialogContainer: TemplateRef<any>;\n\n    /**\n     * Heading level of the dialog title.\n     */\n    headingLevel = input<HeadingLevel>(5);\n\n    /** @hidden */\n    _headingLevel = computed(() =>\n        this.headingLevel() ? Number.parseInt(`${this.headingLevel()}`.replace(/\\D/g, ''), 10) : undefined\n    );\n\n    /** @hidden */\n    activeDialog?: DialogRef;\n\n    /** @hidden */\n    _tabTypes = VhdTab;\n\n    /** @hidden */\n    _hasAdvanced = true;\n\n    /** @hidden */\n    _displayedFilters: VhdFilter[] = [];\n\n    /** @hidden */\n    _displayedData: T[] = [];\n\n    /** @hidden */\n    _mainSearch = '';\n\n    /** @hidden */\n    selectedTab: VhdTab | null = null;\n\n    /** @hidden */\n    shownFilterCount = Infinity;\n\n    /** @hidden */\n    get loadingState(): boolean {\n        return this.loading ?? this._internalLoadingState;\n    }\n\n    /** @hidden\n     * To differentiate between first loading when skeletons be shown and subsequent loadings when busy indicator be shown\n     */\n    _firstLoadingDone = false;\n\n    /** handles rtl service\n     * @hidden */\n    protected readonly dir = computed<Direction>(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n    /** @hidden */\n    private _destroyed = inject(DestroyRef);\n\n    /** @hidden */\n    private _dataSource: FdpValueHelpDialogDataSource<any> | undefined;\n\n    /** @hidden for data source handling */\n    private _dsSubscription: Subscription | null;\n\n    /** @hidden Previous state */\n    private _prevState: VhdValue<T> = {\n        selected: [],\n        conditions: []\n    };\n    /** @hidden Current data for local manupulation */\n    private _currentValue: VhdValue<T> = {\n        selected: [],\n        conditions: []\n    };\n\n    /** @hidden */\n    private _internalLoadingState = false;\n\n    /** @hidden */\n    private readonly _onDestroy$ = new Subject<void>();\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef,\n        private readonly _changeDetectorRef: ChangeDetectorRef,\n        private readonly _dialogService: DialogService\n    ) {\n        super();\n        /** Default display function for define conditions */\n        if (!this.conditionDisplayFn || typeof this.conditionDisplayFn !== 'function') {\n            this.conditionDisplayFn = defaultConditionDisplayFn;\n        }\n    }\n\n    /** @hidden */\n    get isMobileAdvancedSearchActive(): boolean {\n        if (this.mobile) {\n            return this.isOpenAdvanced;\n        }\n        return false;\n    }\n\n    /** @hidden */\n    get hasSelectedTab(): boolean {\n        return this.selectedTab != null && this.selectedTab in VhdTab;\n    }\n\n    /** @hidden */\n    get showSelectionTab(): boolean {\n        return this.tabs !== 'define';\n    }\n\n    /** @hidden */\n    get showDefineTab(): boolean {\n        return this.tabs !== 'select';\n    }\n\n    /** @hidden */\n    get isSelectionTab(): boolean {\n        return this.selectedTab === VhdTab.selectFromList || this.selectedTab === VhdTab.advancedSearch;\n    }\n\n    /** @hidden */\n    get selectedItems(): T[] {\n        return this._currentValue.selected || [];\n    }\n\n    /** @hidden */\n    get conditionItems(): BaseEntity[] {\n        return this._currentValue.conditions || [];\n    }\n\n    /** @hidden */\n    get validConditions(): BaseEntity[] {\n        return this._getValidCondition(this.conditionItems);\n    }\n\n    /** @hidden */\n    get hasSelectedAndConditions(): boolean {\n        return Boolean(this.selectedItems.length + this.validConditions.length);\n    }\n\n    /** @hidden */\n    get isShowAllFilters(): boolean {\n        return this.filters.length > this.maxShownInitialFilters && this.shownFilterCount > this.maxShownInitialFilters;\n    }\n\n    /** @hidden */\n    get isOpen(): boolean {\n        return !!this.activeDialog;\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.isOpen) {\n            if ('dataSource' in changes) {\n                this._initializeDS();\n            }\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._resetState();\n        this._onDestroy$.next();\n    }\n\n    /** Open dialog */\n    open(): void {\n        if (!this.isValidOptions()) {\n            throw new Error('Please check required fields');\n        }\n        if (this.isOpen) {\n            return;\n        }\n        this._savePreviousState();\n        this._updateFilters();\n        this._initializeDS();\n        this._initializeTab();\n        if (!this.dialogConfig.ariaLabelledBy) {\n            this.dialogConfig.ariaLabelledBy = this.headerId;\n        }\n        this.activeDialog = this._dialogService.open(this.dialogContainer, {\n            backdropClickCloseable: false,\n            hasBackdrop: true,\n            verticalPadding: false,\n            escKeyCloseable: false,\n            dialogPanelClass: `fdp-value-help-dialog ${this.mobile ? 'fdp-value-help-dialog-mobile' : ''}`,\n            ...this.dialogConfig,\n\n            mobile: this.mobile,\n            maxWidth: this.mobile ? undefined : '92%',\n            width: this.mobile ? undefined : '1080px',\n            height: this.mobile ? undefined : '98%'\n        });\n        this._listenDialogEvents();\n    }\n\n    /**\n     * Toggle advanced search panel\n     */\n    toggleAdvancedSearch(state?: boolean): void {\n        if (typeof state !== 'undefined') {\n            this.isOpenAdvanced = state;\n        } else {\n            this.isOpenAdvanced = !this.isOpenAdvanced;\n        }\n\n        if (this.mobile) {\n            this.selectedTab = this.isOpenAdvanced ? VhdTab.advancedSearch : VhdTab.selectFromList;\n        }\n    }\n\n    /**\n     * Clear all selected items\n     */\n    clearSelectedAndConditionItems(): void {\n        this._currentValue.selected = [];\n        this._currentValue.conditions = [];\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** Search by only the search term. */\n    search(): void {\n        this.filter(true);\n    }\n\n    /**\n     * Search by all filled filters, including the search term.\n     */\n    filter(onlySearch = false): void {\n        const nonEmptyFilters = new Map();\n\n        if (!onlySearch) {\n            this._displayedFilters\n                .filter(({ value }) =>\n                    !!value && typeof value === 'string' ? value.trim().length : value !== undefined\n                )\n                .forEach((e) => nonEmptyFilters.set(e.key, e.value));\n        }\n\n        if (this._mainSearch.length) {\n            nonEmptyFilters.set('*', this._mainSearch);\n        }\n        this.dataSource?.match(nonEmptyFilters);\n    }\n\n    /**\n     * Apply search from advanced filters view, using when mobile view is active\n     */\n    searchAdvanced(): void {\n        this.filter();\n        this.selectedTab = VhdTab.selectFromList;\n        this.isOpenAdvanced = false;\n    }\n\n    /** Remove item from selected array */\n    removeSelected(index: number): void {\n        this._currentValue.selected = this.selectedItems.filter((_, i) => i !== index);\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /**\n     * Remove condition item\n     */\n    removeCondition(index: number): void {\n        this._currentValue.conditions = this.conditionItems.filter((_, i) => i !== index);\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /**\n     * Switch tab by type\n     */\n    switchTab(type: VhdTab | null = null): void {\n        this.selectedTab = type;\n    }\n\n    /**\n     * Close dialog with value;\n     */\n    success(): void {\n        if (!this.activeDialog) {\n            return;\n        }\n        const value: VhdValueChangeEvent = {\n            selected: this.selectedItems,\n            conditions: this.validConditions\n        };\n\n        this._internalLoadingState = true;\n        this._changeDetectorRef.detectChanges();\n        this._getValidatorFunction(value)\n            .pipe(\n                tap(() => {\n                    this._internalLoadingState = false;\n                    this._changeDetectorRef.detectChanges();\n                }),\n                filter((r) => r),\n                take(1),\n                takeUntilDestroyed(this._destroyed)\n            )\n            .subscribe(() => {\n                if (typeof this.formatToken === 'function') {\n                    this.formatToken(value);\n                }\n                this.activeDialog?.close(value);\n            });\n    }\n\n    /**\n     * Hide advanced search on mobile view and if it's opened\n     * Close dialog with null value;\n     */\n    dismiss(): void {\n        if (this.mobile && this.isOpenAdvanced) {\n            this.isOpenAdvanced = false;\n            this.switchTab(VhdTab.selectFromList);\n        } else {\n            this._currentValue = this._prevState;\n            if (this.activeDialog) {\n                this.activeDialog.close();\n            }\n        }\n    }\n\n    /** @hidden */\n    _trackBySelectedFn: (_index: number, item: T) => number | string = (_index: number, item: T) =>\n        item && item[this.uniqueKey];\n\n    /** @hidden */\n    _trackByFilterFn(_index: number, item: VhdFilter): number | string {\n        return item && item.key;\n    }\n\n    /** @hidden */\n    _trackByConditionFn(_index: number, item: BaseEntity): number | string | undefined {\n        return item ? item.value + item.valueTo + item.strategy + item.key : undefined;\n    }\n\n    /** @hidden */\n    onSelect($event: T[]): void {\n        this._currentValue.selected = $event;\n        this._changeDetectorRef.markForCheck();\n        if (this.searchSelection === 'once') {\n            this.success();\n        }\n    }\n\n    /** @hidden */\n    onConditionChange($event: BaseEntity[]): void {\n        this._currentValue.conditions = $event;\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** @hidden */\n    toggleShownFilters(): void {\n        this.shownFilterCount =\n            this.maxShownInitialFilters === this.shownFilterCount ? Infinity : this.maxShownInitialFilters;\n    }\n\n    /** @hidden */\n    private _initShownFilters(): void {\n        this.shownFilterCount = this.maxShownInitialFilters || Infinity;\n    }\n\n    /** @hidden */\n    private _getValidCondition(items: BaseEntity[] = []): BaseEntity[] {\n        return items.filter((item) => {\n            if (\n                item.strategy === VhdDefineIncludeStrategy.empty ||\n                item.strategy === VhdDefineExcludeStrategy.not_empty\n            ) {\n                return true;\n            }\n            if (item.strategy === VhdDefineIncludeStrategy.between) {\n                return Boolean(item.value.length && item.valueTo.length);\n            }\n            if (!item.valid) {\n                return false;\n            }\n            return Boolean(item.value.length);\n        });\n    }\n\n    /** @hidden */\n    private _initializeDS(ds: FdpValueHelpDialogDataSource<any> | undefined = this.dataSource): void {\n        this._resetSourceStream();\n\n        if (this.showSelectionTab) {\n            this._dsSubscription = new Subscription();\n\n            this._dsSubscription.add(\n                ds?.onDataRequested().subscribe(() => {\n                    this._internalLoadingState = true;\n                    this.onDataRequested.emit();\n                })\n            );\n\n            this._dsSubscription.add(\n                ds?.onDataReceived().subscribe(() => {\n                    this._internalLoadingState = false;\n                    this._firstLoadingDone = true;\n                    this.onDataReceived.emit();\n                })\n            );\n\n            const dsSub = this.openDataStream()\n                .pipe(takeUntilDestroyed(this._destroyed))\n                .subscribe((data) => {\n                    this._displayedData = data.slice();\n                    this._changeDetectorRef.markForCheck();\n                });\n\n            this._dsSubscription.add(dsSub);\n        }\n    }\n\n    /** @hidden Save previous state */\n    private _savePreviousState(): void {\n        const value = structuredClone(this.value);\n        this._currentValue = value;\n        this._prevState = value;\n    }\n\n    /** @hidden */\n    private _initializeTab(): void {\n        if (this.mobile) {\n            this.isOpenAdvanced = false;\n        }\n        if (this.showSelectionTab && this.showDefineTab) {\n            this.switchTab(this.mobile ? undefined : this.initialTab);\n        } else if (this.showSelectionTab) {\n            this.switchTab(VhdTab.selectFromList);\n        } else if (this.showDefineTab) {\n            this.switchTab(VhdTab.defineConditions);\n        }\n        this._initShownFilters();\n    }\n\n    /** @hidden */\n    private _listenDialogEvents(): void {\n        if (!this.activeDialog) {\n            return;\n        }\n        this.activeDialog.afterClosed.pipe(takeUntilDestroyed(this._destroyed)).subscribe((value) => {\n            if (value) {\n                this.value = value;\n                this.valueChange.emit(value);\n            }\n\n            this._resetState();\n        });\n        this.filters.changes.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n            this._updateFilters();\n        });\n    }\n\n    /** @hidden */\n    private _resetState(): void {\n        this._resetSourceStream();\n        this._mainSearch = '';\n        this.activeDialog = undefined;\n    }\n\n    /** @hidden */\n    private _updateFilters(): void {\n        this._displayedFilters = this.filters.map((e) => ({\n            ...e,\n            label: e.label || e.key\n        }));\n\n        this._hasAdvanced = this._displayedFilters.some((e: VhdFilter) => !!e.advanced);\n    }\n\n    /** @hidden */\n    private openDataStream(): Observable<T[]> {\n        if (this._dataSource) {\n            this._dataSource.match();\n\n            return this._dataSource.open();\n        }\n        throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n    }\n\n    /** @hidden */\n    private toDataStream(ds: FdpValueHelpDialogDataSource<T>): FdpValueHelpDialogDataSource<T> | undefined {\n        if (isDataSource(ds)) {\n            return ds as ValueHelpDialogDataSource<T>;\n        } else if (Array.isArray(ds)) {\n            return new ArrayValueHelpDialogDataSource<T>(ds);\n        } else if (isObservable(ds)) {\n            return new ObservableValueHelpDialogDataSource<T>(ds as Observable<T[]>);\n        }\n\n        return undefined;\n    }\n\n    /** @hidden */\n    private _resetSourceStream(): void {\n        if (isDataSource(this.dataSource)) {\n            this.dataSource.close();\n        }\n        if (this._dsSubscription) {\n            this._dsSubscription.unsubscribe();\n            this._dsSubscription = null;\n        }\n    }\n\n    /** @hidden */\n    private isValidOptions(): boolean {\n        if (this.showSelectionTab) {\n            return (\n                !!this.dataSource &&\n                typeof this.uniqueKey === 'string' &&\n                (typeof this.tokenViewField === 'string' || typeof this.tokenizerFn === 'function')\n            );\n        }\n        return true;\n    }\n\n    private _getValidatorFunction(value: VhdValueChangeEvent): Observable<boolean> {\n        const validator = typeof this.tokenValidator === 'function' ? this.tokenValidator(value) : of(true);\n\n        return isObservable(validator) ? validator : of(validator);\n    }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #container>\n    <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n        <fd-dialog-header [attr.dir]=\"dir()\">\n            <ng-template fdkTemplate=\"header\">\n                <ng-template [ngTemplateOutlet]=\"mobile ? mobileDialogTitle : desktopDialogTitle\"></ng-template>\n            </ng-template>\n        </fd-dialog-header>\n        <fd-dialog-body [attr.dir]=\"dir()\">\n            @if (!mobile) {\n                <ng-template [ngTemplateOutlet]=\"advancedSearchContent\"></ng-template>\n            }\n            <div fd-scrollbar class=\"fdp-value-help-dialog__content-holder\">\n                @if (mobile) {\n                    <ng-template [ngTemplateOutlet]=\"advancedSearchContent\"></ng-template>\n                }\n                @if (selectedTab === _tabTypes.selectFromList) {\n                    <ng-template [ngTemplateOutlet]=\"selectionContent\"></ng-template>\n                }\n                @if (selectedTab === _tabTypes.defineConditions) {\n                    <ng-template [ngTemplateOutlet]=\"defineConditionsContent\"></ng-template>\n                }\n            </div>\n        </fd-dialog-body>\n        <fd-dialog-footer [attr.dir]=\"dir()\">\n            <ng-template fdkTemplate=\"footer\">\n                @if (!isMobileAdvancedSearchActive) {\n                    <div\n                        class=\"fdp-value-help-dialog__row fdp-value-help-dialog__selection-row\"\n                        [attr.aria-label]=\"('platformVHD.selectedAndConditionLabel' | fdTranslate)()\"\n                    >\n                        <span\n                            role=\"heading\"\n                            [attr.aria-level]=\"_headingLevel()\"\n                            fd-title\n                            class=\"selected-and-condition-title\"\n                            [id]=\"id + '-selected-item'\"\n                        >\n                            @if (hasSelectedAndConditions) {\n                                {{ ('platformVHD.selectedAndConditionLabel' | fdTranslate)() }}\n                                ({{ selectedItems.length + validConditions.length }})\n                            } @else {\n                                {{ ('platformVHD.selectedEmptyLabel' | fdTranslate)() }}\n                            }\n                        </span>\n                        <div class=\"fdp-value-help-dialog__tokens-wrapper\">\n                            <div class=\"fdp-value-help-dialog__tokens\">\n                                <!-- Selected items -->\n                                <fd-tokenizer>\n                                    @for (\n                                        item of selectedItems;\n                                        track _trackBySelectedFn(selectedIndex, item);\n                                        let selectedIndex = $index\n                                    ) {\n                                        <fd-token\n                                            fd-toolbar-item\n                                            fdOverflowPriority=\"high\"\n                                            class=\"fdp-value-help-dialog__selection-token\"\n                                            (onCloseClick)=\"removeSelected(selectedIndex)\"\n                                            >{{\n                                                !!tokenizerFn\n                                                    ? (item | displayFnPipe: tokenizerFn)\n                                                    : item[tokenViewField]\n                                            }}\n                                        </fd-token>\n                                    }\n                                    @for (\n                                        item of validConditions;\n                                        track _trackByConditionFn(conditionIndex, item);\n                                        let conditionIndex = $index\n                                    ) {\n                                        <fd-token\n                                            fd-toolbar-item\n                                            fdOverflowPriority=\"high\"\n                                            class=\"fdp-value-help-dialog__selection-token\"\n                                            (onCloseClick)=\"removeCondition(conditionIndex)\"\n                                        >\n                                            <ng-template\n                                                [ngTemplateOutlet]=\"conditionValue\"\n                                                [ngTemplateOutletContext]=\"{ item: item }\"\n                                            ></ng-template>\n                                        </fd-token>\n                                    }\n                                    <input fd-form-control fd-tokenizer-input [disabled]=\"!hasSelectedAndConditions\" />\n                                </fd-tokenizer>\n                            </div>\n                            <button\n                                (click)=\"clearSelectedAndConditionItems()\"\n                                class=\"fdp-value-help-dialog__tokens-clear\"\n                                fd-button\n                                [disabled]=\"!hasSelectedAndConditions\"\n                                fdType=\"transparent\"\n                                [title]=\"('platformVHD.footerClearSelectedTitle' | fdTranslate)()\"\n                                glyph=\"decline\"\n                                [ariaLabel]=\"('platformVHD.footerClearSelectedAriaLabel' | fdTranslate)()\"\n                            ></button>\n                        </div>\n                    </div>\n                }\n                <div class=\"fdp-value-help-dialog__actions-row\">\n                    @if (mobile && isOpenAdvanced) {\n                        <button\n                            fd-button\n                            data-go-advanced\n                            [label]=\"('platformVHD.searchButtonLabel' | fdTranslate)()\"\n                            fdType=\"emphasized\"\n                            (click)=\"searchAdvanced()\"\n                        ></button>\n                    }\n                    @if (selectedTab !== _tabTypes.advancedSearch) {\n                        <button\n                            fd-button\n                            data-succes\n                            [disabled]=\"loadingState\"\n                            [label]=\"('platformVHD.successButtonLabel' | fdTranslate)()\"\n                            fdType=\"emphasized\"\n                            (click)=\"success()\"\n                        ></button>\n                    }\n                    <button\n                        fd-button\n                        data-dismiss-dialog\n                        [label]=\"('platformVHD.cancelButtonLabel' | fdTranslate)()\"\n                        fdType=\"transparent\"\n                        (click)=\"dismiss()\"\n                    ></button>\n                </div>\n            </ng-template>\n        </fd-dialog-footer>\n    </fd-dialog>\n</ng-template>\n<ng-template #advancedSearchContent>\n    @if (isSelectionTab) {\n        <form class=\"fdp-value-help-dialog__row fdp-value-help-dialog__advanced-search\" [id]=\"'advanced-search-' + id\">\n            @if (!mobile || (mobile && !isOpenAdvanced)) {\n                <fd-layout-grid>\n                    <div fdLayoutGridRow>\n                        <div [fdLayoutGridCol]=\"12\" [colMd]=\"12\" [colLg]=\"mobile ? 12 : 6\" [colXl]=\"mobile ? 12 : 6\">\n                            <fdp-search-field\n                                [placeholder]=\"('platformVHD.searchPlaceholder' | fdTranslate)()\"\n                                (searchSubmit)=\"search()\"\n                                (inputChange)=\"_mainSearch = $event.text\"\n                            ></fdp-search-field>\n                        </div>\n                        @if (_hasAdvanced) {\n                            <div\n                                [fdLayoutGridCol]=\"12\"\n                                [colMd]=\"12\"\n                                [colLg]=\"mobile ? 12 : 6\"\n                                [colXl]=\"mobile ? 12 : 6\"\n                                class=\"fdp-value-help-dialog__advanced-actions\"\n                            >\n                                <fd-toolbar [clearBorder]=\"true\">\n                                    <fd-toolbar-spacer></fd-toolbar-spacer>\n                                    @if (_hasAdvanced) {\n                                        <button\n                                            fd-toolbar-item\n                                            fd-button\n                                            fdType=\"transparent\"\n                                            [label]=\"\n                                                (\n                                                    (mobile\n                                                        ? 'platformVHD.searchAdvancedSearchLabel'\n                                                        : isOpenAdvanced\n                                                          ? 'platformVHD.searchHideAdvancedSearchLabel'\n                                                          : 'platformVHD.searchShowAdvancedSearchLabel'\n                                                    ) | fdTranslate\n                                                )()\n                                            \"\n                                            (click)=\"toggleAdvancedSearch()\"\n                                        ></button>\n                                    }\n                                    <button\n                                        fd-toolbar-item\n                                        type=\"submit\"\n                                        fd-button\n                                        fdType=\"emphasized\"\n                                        [label]=\"('platformVHD.searchButtonLabel' | fdTranslate)()\"\n                                        (click)=\"filter()\"\n                                    ></button>\n                                </fd-toolbar>\n                            </div>\n                        }\n                    </div>\n                </fd-layout-grid>\n            }\n            @if (isOpenAdvanced && _hasAdvanced) {\n                <div [id]=\"'advanced-search-content-' + id\" class=\"fdp-value-help-dialog__advanced-filters\">\n                    <fd-busy-indicator [loading]=\"loadingState && _firstLoadingDone\" [block]=\"true\">\n                        @if (_firstLoadingDone) {\n                            <fd-layout-grid\n                                [class.fdp-value-help-dialog__with-toggle-all]=\"filters.length > maxShownInitialFilters\"\n                            >\n                                <div fdLayoutGridRow>\n                                    @for (\n                                        filter of _displayedFilters | slice: 0 : shownFilterCount + 1;\n                                        track _trackByFilterFn($index, filter)\n                                    ) {\n                                        @if (filter.advanced) {\n                                            <div [fdLayoutGridCol]=\"12\" [colMd]=\"12\" [colLg]=\"6\" [colXl]=\"3\">\n                                                <label\n                                                    class=\"fd-form-group__header\"\n                                                    fd-form-label\n                                                    [for]=\"'input' + filter.key\"\n                                                    >{{ filter.label }}:</label\n                                                >\n                                                @if (filter.filterDef) {\n                                                    <ng-template\n                                                        [ngTemplateOutlet]=\"filter.filterDef.templateRef\"\n                                                        [ngTemplateOutletContext]=\"{ $implicit: filter }\"\n                                                    ></ng-template>\n                                                } @else {\n                                                    <input\n                                                        [(ngModel)]=\"filter.value\"\n                                                        fd-form-control\n                                                        type=\"text\"\n                                                        [name]=\"'search-by-' + filter.label\"\n                                                        [id]=\"'input' + filter.key\"\n                                                    />\n                                                }\n                                            </div>\n                                        }\n                                    }\n                                    @if (filters.length > maxShownInitialFilters) {\n                                        <div\n                                            colGrow\n                                            [fdLayoutGridCol]=\"12\"\n                                            [colMd]=\"12\"\n                                            [colLg]=\"6\"\n                                            [colXl]=\"3\"\n                                            class=\"fdp-value-help-dialog__toggle-filters\"\n                                        >\n                                            <button\n                                                fd-button\n                                                fdType=\"transparent\"\n                                                (click)=\"toggleShownFilters()\"\n                                                [label]=\"\n                                                    (\n                                                        (isShowAllFilters\n                                                            ? 'platformVHD.searchHideAllAdvancedSearchLabel'\n                                                            : 'platformVHD.searchShowAllAdvancedSearchLabel'\n                                                        ) | fdTranslate\n                                                    )()\n                                                \"\n                                            ></button>\n                                        </div>\n                                    }\n                                </div>\n                            </fd-layout-grid>\n                        } @else {\n                            <fd-skeleton width=\"100%\" height=\"100px\">\n                                <svg:rect x=\"0\" y=\"0\" rx=\"4\" width=\"15%\" height=\"8\" />\n                                <svg:rect x=\"0\" y=\"20\" rx=\"4\" width=\"25%\" height=\"16\" />\n                                <svg:rect x=\"35%\" y=\"0\" rx=\"4\" width=\"15%\" height=\"8\" />\n                                <svg:rect x=\"35%\" y=\"20\" rx=\"4\" width=\"25%\" height=\"16\" />\n                                <svg:rect x=\"0\" y=\"60\" rx=\"4\" width=\"15%\" height=\"8\" />\n                                <svg:rect x=\"0\" y=\"80\" rx=\"4\" width=\"25%\" height=\"16\" />\n                            </fd-skeleton>\n                        }\n                    </fd-busy-indicator>\n                </div>\n            }\n        </form>\n    }\n</ng-template>\n<ng-template #selectionContent>\n    <fd-busy-indicator\n        [loading]=\"loadingState && _firstLoadingDone\"\n        [block]=\"true\"\n        class=\"fdp-value-help-dialog__table-busy-indicator\"\n    >\n        <fdp-select-tab\n            [selected]=\"selectedItems\"\n            [loading]=\"loadingState && !_firstLoadingDone\"\n            [uid]=\"id\"\n            [displayedData]=\"_displayedData\"\n            [tabTitle]=\"('platformVHD.selectTabTitle' | fdTranslate)()\"\n            [mobile]=\"mobile\"\n            [selection]=\"searchSelection\"\n            [uniqueKey]=\"uniqueKey\"\n            [pageSize]=\"searchTablePageSize\"\n            [defaultMobileHeaders]=\"searchTableMobileHeaders\"\n            [filters]=\"_displayedFilters\"\n            [allowSelectAll]=\"allowSelectAll\"\n            (select)=\"onSelect($event)\"\n        ></fdp-select-tab>\n    </fd-busy-indicator>\n</ng-template>\n<ng-template #defineConditionsContent>\n    <div fd-scrollbar>\n        <fdp-define-tab\n            [strategyLabels]=\"defineStrategyLabels\"\n            [conditions]=\"conditionItems\"\n            [uid]=\"id\"\n            [tabTitle]=\"('platformVHD.defineTabTitle' | fdTranslate)()\"\n            [mobile]=\"mobile\"\n            (conditionChange)=\"onConditionChange($event)\"\n        ></fdp-define-tab>\n    </div>\n</ng-template>\n<ng-template #dialogTitleText>\n    <span role=\"heading\" [attr.aria-level]=\"_headingLevel()\" [attr.id]=\"headerId\" fd-title>{{ dialogTitle }}</span>\n</ng-template>\n<ng-template #tabLink let-title=\"title\" let-type=\"type\">\n    @if (selectedTab === type && showSelectionTab && showDefineTab) {\n        <button\n            fd-button\n            glyph=\"navigation-left-arrow\"\n            fdType=\"transparent\"\n            (click)=\"switchTab()\"\n            [title]=\"('platformVHD.selectMobileTabBackBtnTitle' | fdTranslate)()\"\n        ></button>\n        <span role=\"heading\" [attr.aria-level]=\"_headingLevel()\" fd-title>{{ title }}</span>\n    }\n    @if (selectedTab !== type) {\n        <a\n            fd-list-link\n            (click)=\"switchTab(type)\"\n            [title]=\"('platformVHD.selectMobileTabBtnOpenDialogLabel' | fdTranslate)()\"\n        >\n            <span fd-list-title>{{ title }}</span>\n            <i fd-list-icon glyph=\"navigation-right-arrow\"></i>\n        </a>\n    }\n</ng-template>\n<ng-template #advancedHeader>\n    <button fd-button glyph=\"navigation-left-arrow\" fdType=\"transparent\" (click)=\"toggleAdvancedSearch()\"></button>\n    <span role=\"heading\" [attr.aria-level]=\"_headingLevel()\" fd-title>{{\n        ('platformVHD.searchAdvancedSearchLabel' | fdTranslate)()\n    }}</span>\n</ng-template>\n<ng-template #desktopDialogTitle>\n    <ng-template [ngTemplateOutlet]=\"dialogTitleText\"></ng-template>\n    <ng-template [ngTemplateOutlet]=\"desktopTabs\"></ng-template>\n</ng-template>\n<ng-template #mobileDialogTitle>\n    <div class=\"fdp-value-help-dialog__mobile-title\">\n        @if (hasSelectedTab) {\n            <ng-template [ngTemplateOutlet]=\"selectedTabHeader\"></ng-template>\n        } @else {\n            <span role=\"heading\" [attr.aria-level]=\"_headingLevel()\" [attr.id]=\"headerId\" fd-title>{{\n                dialogTitle\n            }}</span>\n        }\n    </div>\n    <ng-template [ngTemplateOutlet]=\"mobileTabs\"></ng-template>\n</ng-template>\n<ng-template #desktopTabs>\n    @if (showSelectionTab && showDefineTab) {\n        <nav fd-tab-nav class=\"fdp-value-help-dialog__tabs\">\n            @if (showSelectionTab) {\n                <div fd-tab-item (click)=\"switchTab(_tabTypes.selectFromList)\">\n                    <a\n                        fd-tab-link\n                        [active]=\"selectedTab === _tabTypes.selectFromList\"\n                        [tabindex]=\"selectedTab === _tabTypes.selectFromList ? '0' : '-1'\"\n                        ><span fd-tab-tag>{{ ('platformVHD.selectTabTitle' | fdTranslate)() }}</span></a\n                    >\n                </div>\n            }\n            @if (showDefineTab) {\n                <div fd-tab-item (click)=\"switchTab(_tabTypes.defineConditions)\">\n                    <a\n                        fd-tab-link\n                        [active]=\"selectedTab === _tabTypes.defineConditions\"\n                        [tabindex]=\"selectedTab === _tabTypes.defineConditions ? '0' : '-1'\"\n                        ><span fd-tab-tag>{{ ('platformVHD.defineTabTitle' | fdTranslate)() }}</span></a\n                    >\n                </div>\n            }\n        </nav>\n    }\n</ng-template>\n<ng-template #mobileTabs>\n    @if (!hasSelectedTab && showSelectionTab && showDefineTab) {\n        <div>\n            @if (showSelectionTab) {\n                <div fd-bar [inPage]=\"true\">\n                    <div fd-bar-left>\n                        <fd-bar-element>\n                            {{ ('platformVHD.selectTabTitle' | fdTranslate)() }}\n                        </fd-bar-element>\n                    </div>\n                    <div fd-bar-right>\n                        <fd-bar-element>\n                            <fd-button-bar\n                                glyph=\"navigation-right-arrow\"\n                                (click)=\"switchTab(_tabTypes.selectFromList)\"\n                                [title]=\"\n                                    (\n                                        'platformVHD.selectMobileTabTitle'\n                                        | fdTranslate: { title: ('platformVHD.selectTabTitle' | fdTranslate)() }\n                                    )()\n                                \"\n                            ></fd-button-bar>\n                        </fd-bar-element>\n                    </div>\n                </div>\n            }\n            @if (showDefineTab) {\n                <div fd-bar [inPage]=\"true\">\n                    <div fd-bar-left>\n                        <fd-bar-element>\n                            {{ ('platformVHD.defineTabTitle' | fdTranslate)() }}\n                        </fd-bar-element>\n                    </div>\n                    <div fd-bar-right>\n                        <fd-bar-element>\n                            <fd-button-bar\n                                glyph=\"navigation-right-arrow\"\n                                [title]=\"\n                                    (\n                                        'platformVHD.selectMobileTabTitle'\n                                        | fdTranslate: { title: ('platformVHD.defineTabTitle' | fdTranslate)() }\n                                    )()\n                                \"\n                                (click)=\"switchTab(_tabTypes.defineConditions)\"\n                            >\n                            </fd-button-bar>\n                        </fd-bar-element>\n                    </div>\n                </div>\n            }\n        </div>\n    }\n</ng-template>\n<ng-template #selectedTabHeader>\n    @switch (selectedTab) {\n        @case (_tabTypes.selectFromList) {\n            <ng-template\n                [ngTemplateOutlet]=\"tabLink\"\n                [ngTemplateOutletContext]=\"{\n                    title: ('platformVHD.selectTabTitle' | fdTranslate)(),\n                    type: selectedTab\n                }\"\n            ></ng-template>\n        }\n        @case (_tabTypes.advancedSearch) {\n            <ng-template [ngTemplateOutlet]=\"advancedHeader\"></ng-template>\n        }\n        @case (_tabTypes.defineConditions) {\n            <ng-template\n                [ngTemplateOutlet]=\"tabLink\"\n                [ngTemplateOutletContext]=\"{\n                    title: ('platformVHD.defineTabTitle' | fdTranslate)(),\n                    type: selectedTab\n                }\"\n            ></ng-template>\n        }\n    }\n</ng-template>\n<ng-template #conditionValue let-item=\"item\">\n    @if (item.strategy !== 'empty' && item.strategy !== 'not_empty') {\n        <span>\n            {{ item | displayFnPipe: conditionDisplayFn : _displayedFilters }}\n        </span>\n    } @else {\n        @if (item.strategy === 'not_empty') {\n            !(<ng-template [ngTemplateOutlet]=\"emptyConditionText\"></ng-template>)\n        } @else {\n            &lt;{{ ('platformVHD.selectMobileConditionEmpty' | fdTranslate)() }}&gt;\n        }\n    }\n</ng-template>\n<ng-template #emptyConditionText>\n    &lt;{{ ('platformVHD.selectMobileConditionEmpty' | fdTranslate)() }}&gt;\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\nimport { VhdFilterComponent } from './components/value-help-dialog-filter/value-help-dialog-filter.component';\nimport { PlatformValueHelpDialogComponent } from './value-help-dialog/value-help-dialog.component';\n\nconst components = [PlatformValueHelpDialogComponent, VhdFilterComponent, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class PlatformValueHelpDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["titleUniqueId","take","i1","i2"],"mappings":"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"}