{"version":3,"file":"koobiq-components-filter-bar.mjs","sources":["../../../packages/components/filter-bar/pipes/base-pipe.ts","../../../packages/components/filter-bar/pipes/pipe-state.ts","../../../packages/components/filter-bar/pipes/pipe-button.ts","../../../packages/components/filter-bar/pipes/pipe-title.ts","../../../packages/components/filter-bar/pipes/pipe-date.ts","../../../packages/components/filter-bar/pipes/pipe-date.html","../../../packages/components/filter-bar/pipes/pipe-datetime.ts","../../../packages/components/filter-bar/pipes/pipe-datetime.html","../../../packages/components/filter-bar/pipes/pipe-multi-select.ts","../../../packages/components/filter-bar/pipes/pipe-multi-select.html","../../../packages/components/filter-bar/pipes/pipe-multi-tree-select.ts","../../../packages/components/filter-bar/pipes/pipe-multi-tree-select.html","../../../packages/components/filter-bar/pipes/pipe-readonly.ts","../../../packages/components/filter-bar/pipes/pipe-select.ts","../../../packages/components/filter-bar/pipes/pipe-select.html","../../../packages/components/filter-bar/pipes/pipe-text.ts","../../../packages/components/filter-bar/pipes/pipe-text.html","../../../packages/components/filter-bar/pipes/pipe-tree-select.ts","../../../packages/components/filter-bar/pipes/pipe-tree-select.html","../../../packages/components/filter-bar/filter-bar.types.ts","../../../packages/components/filter-bar/filter-reset.ts","../../../packages/components/filter-bar/filter-bar-button.ts","../../../packages/components/filter-bar/filters.ts","../../../packages/components/filter-bar/filters.html","../../../packages/components/filter-bar/filter-bar.ts","../../../packages/components/filter-bar/filter-refresher.ts","../../../packages/components/filter-bar/filter-search.ts","../../../packages/components/filter-bar/pipe-add.ts","../../../packages/components/filter-bar/pipe.directive.ts","../../../packages/components/filter-bar/filter-bar.module.ts","../../../packages/components/filter-bar/koobiq-components-filter-bar.ts"],"sourcesContent":["import {\n    afterNextRender,\n    AfterViewInit,\n    ChangeDetectorRef,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    inject,\n    InjectionToken,\n    TemplateRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isMac } from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { delay, filter } from 'rxjs/operators';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqPipeData, KbqPipeTemplate, KbqPipeType } from '../filter-bar.types';\n\n/** Injection Token for providing configuration of filter-bar */\nexport const KBQ_PIPE_DATA = new InjectionToken('KBQ_PIPE_DATA');\n\n/** function to get unique identifier of an element */\nexport function getId(item: KbqPipeTemplate): KbqPipeType | string | number {\n    return item?.id ?? item?.name;\n}\n\n@Directive({\n    host: {\n        class: 'kbq-pipe',\n        '[class]': '\"kbq-pipe__\" + data.type',\n        '[class.kbq-pipe_empty]': 'isEmpty',\n        '[class.kbq-pipe_cleanable]': 'data.cleanable',\n        '[class.kbq-pipe_removable]': 'data.removable',\n        '[class.kbq-pipe_disabled]': 'data.disabled'\n    }\n})\nexport abstract class KbqBasePipe<V> implements AfterViewInit {\n    /** changes of state */\n    readonly stateChanges = new Subject<void>();\n    /** pipe data. Provided from subclass */\n    readonly data = inject<KbqPipeData<V>>(KBQ_PIPE_DATA);\n\n    /** KbqFilterBar instance\n     * @docs-private */\n    protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n    /** @docs-private */\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n    /** @docs-private */\n    protected readonly destroyRef = inject(DestroyRef);\n\n    /** values to select from the pipe template */\n    protected values;\n    /** TemplateRef for selecting an option */\n    protected valueTemplate?: TemplateRef<any> | string;\n\n    /**\n     * Whether the current platform is a Mac.\n     *\n     * @docs-private\n     */\n    isMac = false;\n\n    /** Data for the pipe.\n     *  @docs-private */\n    $implicit: unknown;\n\n    /** Whether the current pipe is empty. Used for apply style modifier */\n    get isEmpty(): boolean {\n        return this.data.value === null || this.data.value === undefined;\n    }\n\n    /** Whether the current pipe is removable or cleanable. Used for apply style modifier */\n    get showRemoveButton(): boolean {\n        return this.data.removable || (this.data.cleanable && !this.isEmpty);\n    }\n\n    /** localized data\n     * @docs-private */\n    get localeData() {\n        return this.filterBar?.configuration;\n    }\n\n    constructor() {\n        this.$implicit = this;\n\n        this.stateChanges.subscribe(() => {\n            this.changeDetectorRef.markForCheck();\n        });\n\n        this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n\n        afterNextRender(() => {\n            this.isMac = isMac();\n        });\n    }\n\n    ngAfterViewInit(): void {\n        if (this.data.openOnAdd) {\n            delete this.data.openOnAdd;\n\n            this.open();\n        }\n\n        this.filterBar?.openPipe.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)).subscribe((id) => {\n            if (getId(this.data) === id) {\n                this.open();\n            }\n        });\n\n        if (this.data.openOnReset) {\n            this.filterBar?.onResetFilter.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n                this.open();\n            });\n        }\n    }\n\n    /** templateRef checker utility */\n    isTemplateRef(value: unknown): boolean {\n        return value instanceof TemplateRef;\n    }\n\n    /** updates values for selection and value template */\n    updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n        const template = templates?.find((template) => getId(template) === getId(this.data));\n\n        if (template?.values) {\n            this.values = template.values;\n            this.valueTemplate = template.valueTemplate;\n        }\n    };\n\n    /** removes pipe from filter-bar and triggers changes */\n    onRemove() {\n        this.filterBar?.removePipe(this.data);\n\n        this.stateChanges.next();\n    }\n\n    /** clears the pipe and triggers changes */\n    onClear() {\n        this.data.value = null;\n\n        this.stateChanges.next();\n\n        this.filterBar?.onClearPipe.next(this.data);\n        this.filterBar?.onChangePipe.next(this.data);\n    }\n\n    /** @docs-private */\n    abstract open(): void;\n}\n\n@Directive({\n    selector: '[kbqPipeMinWidth]',\n    host: {\n        '[style.min-width]': 'minWidth'\n    }\n})\nexport class KbqPipeMinWidth {\n    /** KbqFilterBar instance */\n    protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n\n    /** @docs-private */\n    protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n    /** @docs-private */\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    /** @docs-private */\n    protected minWidth: string;\n    /** maximal symbols for apply fit-content to min-width */\n    maxSymbolsForFitContent: number = 20;\n\n    /** current length of text */\n    get textLength(): number {\n        return this.elementRef.nativeElement.innerText?.length || 0;\n    }\n\n    constructor() {\n        this.filterBar?.changes.pipe(delay(0)).subscribe(this.update);\n\n        afterNextRender({ read: this.update });\n    }\n\n    update = () => {\n        this.minWidth = this.textLength < this.maxSymbolsForFitContent ? 'fit-content' : 'unset';\n        this.changeDetectorRef.markForCheck();\n    };\n}\n","import { DestroyRef, Directive, inject, Input, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\n\n@Directive({\n    selector: '[kbqPipeState]'\n})\nexport class KbqPipeState<T> implements OnInit {\n    /** @docs-private */\n    private readonly destroyRef = inject(DestroyRef);\n    /** @docs-private */\n    private readonly button = inject(KbqButton);\n    /** @docs-private */\n    private readonly pipe = inject(KbqBasePipe);\n    /** KbqFilterBar instance\n     * @docs-private */\n    private readonly filterBar = inject(KbqFilterBar);\n\n    /** calculates and updates styles of button from pipe state */\n    @Input({ alias: 'kbqPipeState' })\n    get state(): T | null {\n        return this._state;\n    }\n\n    set state(pipe: T | null) {\n        this._state = pipe;\n\n        this.updateState();\n    }\n\n    private _state: T | null = null;\n\n    ngOnInit(): void {\n        this.filterBar.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateState);\n    }\n\n    private updateState = () => {\n        this.button.kbqStyle = KbqButtonStyles.Outline;\n        this.button.color = KbqComponentColors.ContrastFade;\n\n        if (!this.pipe.isEmpty) {\n            this.button.kbqStyle = KbqButtonStyles.Filled;\n            this.button.color = KbqComponentColors.ContrastFade;\n        }\n    };\n}\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    inject,\n    Input,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge } from 'rxjs';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeState } from './pipe-state';\n\n@Component({\n    selector: 'kbq-pipe-button',\n    imports: [\n        KbqIconModule,\n        KbqButtonModule,\n        KbqPipeState,\n        KbqTooltipTrigger\n    ],\n    template: `\n        <button\n            kbqTooltip=\"{{ pipe.data.cleanable ? localeData.clearButtonTooltip : localeData.removeButtonTooltip }}\"\n            class=\"kbq-pipe__remove-button\"\n            kbq-button\n            [disabled]=\"pipe.data.disabled\"\n            [kbqPipeState]=\"pipe.data\"\n            [kbqTooltipDisabled]=\"pipe.data.disabled\"\n            (click)=\"pipe.data.cleanable ? pipe.onClear() : pipe.onRemove()\"\n        >\n            <i kbq-icon=\"kbq-xmark-s_16\" [color]=\"pipe.data.disabled ? 'empty' : 'contrast'\"></i>\n        </button>\n    `,\n    styleUrl: 'pipe-button.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-pipe-button'\n    }\n})\nexport class KbqPipeButton {\n    /** KbqPipe instance */\n    protected readonly pipe = inject(KbqBasePipe);\n    /** KbqFilterBar instance */\n    protected readonly filterBar = inject(KbqFilterBar);\n    /** @docs-private */\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    /** enables/disables read-only state */\n    @Input({ transform: booleanAttribute }) readonly: boolean = false;\n\n    /** localized data\n     * @docs-private */\n    get localeData() {\n        return this.filterBar?.configuration.pipe;\n    }\n\n    constructor() {\n        merge(this.pipe.stateChanges, this.filterBar.changes)\n            .pipe(takeUntilDestroyed())\n            .subscribe(() => this.changeDetectorRef.markForCheck());\n    }\n}\n","import {\n    afterNextRender,\n    AfterViewInit,\n    ContentChild,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    QueryList,\n    TemplateRef\n} from '@angular/core';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Observable, Subject, Subscription, throttleTime } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n// todo DS-3672\n@Directive({\n    selector: '[kbqPipeTitle]',\n    exportAs: 'kbqPipeTitle',\n    host: {\n        '(mouseenter)': 'handleElementEnter()',\n        '(mouseleave)': 'hideTooltip()',\n        '(window:resize)': 'resizeStream.next($event)'\n    }\n})\nexport class KbqPipeTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n    private componentInstance = inject<KbqTitleTextRef>(KBQ_TITLE_TEXT_REF, { optional: true, host: true });\n\n    get isOverflown(): boolean {\n        return this.childContainer.some(({ nativeElement }) => {\n            return (\n                this.parent?.offsetWidth < nativeElement.scrollWidth ||\n                this.parent?.offsetHeight < nativeElement.scrollHeight\n            );\n        });\n    }\n\n    @Input({ alias: 'kbqPipeTitle' }) viewValue: TemplateRef<any>;\n\n    get parent(): HTMLElement {\n        return this.parentContainer?.nativeElement || this.parentContainer;\n    }\n\n    get child(): HTMLElement {\n        return this.childContainer.first.nativeElement || this.childContainer;\n    }\n\n    readonly resizeStream = new Subject<Event>();\n\n    private readonly debounceInterval: number = 100;\n\n    private resizeSubscription = Subscription.EMPTY;\n    private mutationSubscription = Subscription.EMPTY;\n    private focusMonitorSubscription = Subscription.EMPTY;\n\n    @ContentChildren('kbqTitleText', { descendants: true })\n    private childContainer: QueryList<ElementRef>;\n\n    @ContentChild('kbqTitleContainer')\n    private parentContainer: ElementRef;\n\n    constructor() {\n        super();\n\n        afterNextRender(() => {\n            this.listenToMutationObserver();\n        });\n    }\n\n    ngAfterViewInit() {\n        this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef;\n        this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef;\n        this.content = this.viewValue;\n\n        this.resizeSubscription = this.resizeStream\n            .pipe(debounceTime(this.debounceInterval))\n            .subscribe(() => (this.disabled = !this.isOverflown));\n\n        this.focusMonitorSubscription = this.focusMonitor\n            .monitor(this.elementRef)\n            .subscribe((origin) => (origin === 'keyboard' ? this.handleElementEnter() : this.hideTooltip()));\n    }\n\n    ngOnDestroy() {\n        super.ngOnDestroy();\n\n        this.resizeSubscription.unsubscribe();\n        this.mutationSubscription.unsubscribe();\n        this.focusMonitorSubscription.unsubscribe();\n        this.focusMonitor.stopMonitoring(this.elementRef);\n    }\n\n    handleElementEnter() {\n        this.disabled = !this.isOverflown;\n    }\n\n    hideTooltip() {\n        this.disabled = true;\n    }\n\n    private listenToMutationObserver(): void {\n        this.mutationSubscription = this.createMutationObserver()\n            .pipe(throttleTime(this.debounceInterval))\n            .subscribe(() => {\n                this.disabled = !this.isOverflown;\n                this.content = this.viewValue;\n            });\n    }\n\n    private createMutationObserver(): Observable<MutationRecord[]> {\n        return new Observable((observer) => {\n            const mutationObserver = new MutationObserver((mutations) => observer.next(mutations));\n\n            mutationObserver.observe(this.parent, {\n                characterData: true,\n                attributes: false,\n                childList: true,\n                subtree: true\n            });\n\n            return () => mutationObserver.disconnect();\n        });\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    viewChild,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n    DateAdapter,\n    DateFormatter,\n    KbqComponentColors,\n    kbqDisableLegacyValidationDirectiveProvider,\n    KbqFormattersModule,\n    PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqListModule, KbqListSelection } from '@koobiq/components/list';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { filter } from 'rxjs/operators';\nimport { KbqDateTimeValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-date',\n    imports: [\n        ReactiveFormsModule,\n        KbqFormFieldModule,\n        KbqIconModule,\n        KbqInputModule,\n        KbqDividerModule,\n        KbqPopoverModule,\n        KbqButtonModule,\n        KbqListModule,\n        KbqDatepickerModule,\n        KbqTimepickerModule,\n        KbqPipeState,\n        KbqFormattersModule,\n        KbqPipeButton,\n        KbqTitleModule,\n        KbqPipeTitleDirective,\n        FormsModule\n    ],\n    templateUrl: 'pipe-date.html',\n    styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        kbqDisableLegacyValidationDirectiveProvider(),\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {\n    private readonly adapter = inject(DateAdapter);\n    private readonly formatter = inject(DateFormatter);\n\n    /** @docs-private */\n    protected readonly placements = PopUpPlacements;\n    /** @docs-private */\n    protected readonly styles = KbqButtonStyles;\n    /** @docs-private */\n    protected readonly colors = KbqComponentColors;\n\n    /** Whether the current state is list of periods. When false will displayed control for set custom period */\n    protected isListMode = true;\n\n    /** @docs-private */\n    protected formGroup: FormGroup;\n\n    /** @docs-private */\n    protected showStartCalendar: boolean = false;\n    /** @docs-private */\n    protected showEndCalendar: boolean = false;\n\n    /** formatted value for period */\n    get formattedValue(): string {\n        if (this.start && this.end) {\n            return this.formatter.rangeShortDate(this.start, this.end);\n        }\n\n        return this.data.value?.name ?? '';\n    }\n\n    /** Whether the current pipe is disabled. */\n    get disabled(): boolean {\n        return (\n            !this.adapter.isDateInstance(this.formGroup.controls.start.value) ||\n            !this.adapter.isDateInstance(this.formGroup.controls.end.value) ||\n            this.formGroup.controls.start.invalid\n        );\n    }\n\n    /** parsed start */\n    get start(): D {\n        return this.adapter.parse(this.data.value?.start, '');\n    }\n\n    /** default object for start */\n    get defaultStart(): D {\n        if (this.data.value?.start) {\n            return this.adapter.today().plus(this.data.value?.start);\n        }\n\n        return this.adapter.today();\n    }\n\n    /** parsed end */\n    get end(): D {\n        return this.adapter.parse(this.data.value?.end, '');\n    }\n\n    /** default object for end */\n    get defaultEnd(): D {\n        if (this.data.value?.start) {\n            return this.adapter.today();\n        }\n\n        return this.adapter.today().plus({ days: 1 });\n    }\n\n    /** Whether the current pipe is empty. */\n    override get isEmpty(): boolean {\n        if (this.data.value === null) return true;\n\n        if (this.data.value?.name) return false;\n\n        return !this.adapter.isDateInstance(this.start) || !this.adapter.isDateInstance(this.end);\n    }\n\n    /** @docs-private */\n    @ViewChild('popover') popover: KbqPopoverTrigger;\n    /** @docs-private */\n    listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n    /** @docs-private */\n    returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.popover.visibleChange\n            .pipe(\n                filter((visible) => !visible),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n    }\n\n    /** keydown handler\n     * @docs-private */\n    onKeydown($event: KeyboardEvent) {\n        if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n            this.onApplyPeriod();\n        }\n\n        if ($event.keyCode === ENTER) {\n            $event.preventDefault();\n        }\n    }\n\n    onApplyPeriod() {\n        this.data.value = {\n            start: this.formGroup.controls.start.value.toISO(),\n            end: this.formGroup.controls.end.value.toISO()\n        };\n        this.stateChanges.next();\n\n        this.filterBar?.onChangePipe.next(this.data);\n\n        this.popover.hide();\n    }\n\n    onSelect(item: KbqDateTimeValue) {\n        this.data.value = item;\n        this.stateChanges.next();\n\n        this.filterBar?.onChangePipe.next(this.data);\n\n        this.popover.hide();\n    }\n\n    showPeriod() {\n        this.isListMode = false;\n        this.showStartCalendar = false;\n        this.showEndCalendar = false;\n\n        this.initFormGroup();\n\n        setTimeout(() => {\n            this.popover.updatePosition(true);\n            this.returnButton().focus();\n        });\n    }\n\n    showList() {\n        this.isListMode = true;\n\n        setTimeout(() => this.listSelection().focus());\n        this.popover.updatePosition(true);\n    }\n\n    /** opens popover */\n    override open() {\n        this.popover.show();\n    }\n\n    onSelectStartDate(value: D) {\n        this.formGroup.controls.start.setValue(value);\n    }\n\n    onSelectEndDate(value: D) {\n        this.formGroup.controls.end.setValue(value);\n    }\n\n    onFocusStartInput() {\n        this.showStartCalendar = true;\n        this.showEndCalendar = false;\n\n        this.popover.updatePosition(true);\n    }\n\n    onFocusEndInput() {\n        this.showEndCalendar = true;\n        this.showStartCalendar = false;\n    }\n\n    hideCalendars() {\n        this.showStartCalendar = false;\n        this.showEndCalendar = false;\n    }\n\n    private initFormGroup() {\n        this.formGroup = new FormGroup({\n            start: new FormControl(this.start || this.defaultStart),\n            end: new FormControl(this.end || this.defaultEnd)\n        });\n    }\n}\n","<button\n    #popover=\"kbqPopover\"\n    kbq-button\n    kbqPopover\n    [disabled]=\"data.disabled\"\n    [kbqPipeState]=\"data\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [kbqPopoverArrow]=\"false\"\n    [kbqPopoverSize]=\"'custom'\"\n    [kbqPopoverClass]=\"'kbq-pipe-date__popover'\"\n    [kbqPopoverContent]=\"content\"\n    [kbqPopoverOffset]=\"4\"\n    [defaultPaddings]=\"false\"\n    [kbqPopoverPlacement]=\"placements.BottomLeft\"\n    [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n    (kbqPopoverVisibleChange)=\"isListMode = true\"\n>\n    <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n    <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!formattedValue\">\n        {{ formattedValue }}\n    </span>\n</button>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #content>\n    @if (isListMode) {\n        <div class=\"kbq-date-list\">\n            <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n                <kbq-list-option (click)=\"showPeriod()\" (keydown.enter)=\"showPeriod()\">\n                    {{ localeData.datePipe?.customPeriod }}\n                    <!-- prevents [kbq-icon] from matching icon slot in kbq-list-option, keeping chevron after label text -->\n                    <ng-container>\n                        <i kbq-icon=\"kbq-chevron-right_16\" color=\"contrast-fade\"></i>\n                    </ng-container>\n                </kbq-list-option>\n\n                @for (item of values; track item) {\n                    <kbq-list-option [value]=\"item.name\" (click)=\"onSelect(item)\" (keydown.enter)=\"onSelect(item)\">\n                        {{ item.name }}\n                    </kbq-list-option>\n                }\n            </kbq-list-selection>\n        </div>\n    } @else {\n        <div class=\"kbq-date-period kbq-datepicker__content\" (keydown)=\"onKeydown($event)\">\n            <div class=\"kbq-date-period__header\">\n                <button\n                    #returnButton\n                    kbq-button\n                    [color]=\"colors.Theme\"\n                    [kbqStyle]=\"styles.Transparent\"\n                    (click)=\"showList()\"\n                >\n                    <i kbq-icon=\"kbq-chevron-left_16\"></i>\n                    {{ localeData.datePipe.backToPeriodSelection }}\n                </button>\n            </div>\n\n            <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n                <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n                <kbq-form-field class=\"kbq-date-period__date kbq-form__control\" [class.kbq-focused]=\"showStartCalendar\">\n                    <input\n                        formControlName=\"start\"\n                        [kbqCalendar]=\"startDateCalendar\"\n                        [max]=\"formGroup.controls.end.value\"\n                        (focusin)=\"onFocusStartInput()\"\n                        (keydown.tab)=\"hideCalendars()\"\n                    />\n                    <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n                </kbq-form-field>\n\n                <kbq-calendar\n                    #startDateCalendar\n                    [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n                    (selectedChange)=\"onSelectStartDate($event)\"\n                />\n\n                <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n                <kbq-form-field class=\"kbq-date-period__date kbq-form__control\" [class.kbq-focused]=\"showEndCalendar\">\n                    <input\n                        formControlName=\"end\"\n                        [kbqCalendar]=\"endDateCalendar\"\n                        (focusin)=\"onFocusEndInput()\"\n                        (keydown.tab)=\"hideCalendars()\"\n                    />\n                    <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n                </kbq-form-field>\n\n                @if (formGroup.controls.start.invalid) {\n                    <kbq-hint class=\"kbq-date-period__hint\" [color]=\"'error'\">\n                        {{ localeData.datePipe.customPeriodErrorHint }}\n                    </kbq-hint>\n                }\n\n                <kbq-calendar\n                    #endDateCalendar\n                    [class.kbq-calendar_hidden]=\"!showEndCalendar\"\n                    (selectedChange)=\"onSelectEndDate($event)\"\n                />\n            </form>\n\n            <div class=\"kbq-date-period__footer\">\n                <button\n                    kbq-button\n                    [color]=\"'theme'\"\n                    [disabled]=\"disabled\"\n                    [kbqStyle]=\"'transparent'\"\n                    (click)=\"onApplyPeriod()\"\n                >\n                    <span>{{ localeData.pipe.applyButton }}</span>\n                    &nbsp;\n                    <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n                </button>\n            </div>\n        </div>\n    }\n</ng-template>\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ formattedValue }}</div>\n</ng-template>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    viewChild,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n    DateAdapter,\n    DateFormatter,\n    KbqComponentColors,\n    kbqDisableLegacyValidationDirectiveProvider,\n    KbqFormattersModule,\n    PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqListModule, KbqListSelection } from '@koobiq/components/list';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { filter } from 'rxjs/operators';\nimport { KbqDateTimeValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-datetime',\n    imports: [\n        ReactiveFormsModule,\n        KbqFormFieldModule,\n        KbqIconModule,\n        KbqInputModule,\n        KbqDividerModule,\n        KbqPopoverModule,\n        KbqButtonModule,\n        KbqListModule,\n        KbqDatepickerModule,\n        KbqTimepickerModule,\n        KbqPipeState,\n        KbqFormattersModule,\n        KbqPipeButton,\n        KbqTitleModule,\n        KbqPipeTitleDirective,\n        FormsModule\n    ],\n    templateUrl: 'pipe-datetime.html',\n    styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        kbqDisableLegacyValidationDirectiveProvider(),\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {\n    private readonly adapter = inject(DateAdapter);\n    private readonly formatter = inject(DateFormatter);\n\n    /** @docs-private */\n    protected readonly placements = PopUpPlacements;\n    /** @docs-private */\n    protected readonly styles = KbqButtonStyles;\n    /** @docs-private */\n    protected readonly colors = KbqComponentColors;\n\n    /** Whether the current state is list of periods. When false will displayed control for set custom period */\n    protected isListMode = true;\n\n    /** @docs-private */\n    protected formGroup: FormGroup;\n\n    /** @docs-private */\n    protected showStartCalendar: boolean = false;\n    /** @docs-private */\n    protected showEndCalendar: boolean = false;\n\n    /** formatted value for period */\n    get formattedValue(): string {\n        if (this.start && this.end) {\n            return this.formatter.rangeShortDateTime(this.start, this.end);\n        }\n\n        return this.data.value?.name ?? '';\n    }\n\n    /** Whether the current pipe is disabled. */\n    get disabled(): boolean {\n        return (\n            !this.adapter.isDateInstance(this.formGroup.controls.start.value) ||\n            !this.adapter.isDateInstance(this.formGroup.controls.end.value) ||\n            this.formGroup.controls.start.invalid\n        );\n    }\n\n    /** parsed start */\n    get start(): D {\n        return this.adapter.parse(this.data.value?.start, '');\n    }\n\n    /** default object for start */\n    get defaultStart(): D {\n        if (this.data.value?.start) {\n            return this.adapter.today().plus(this.data.value?.start);\n        }\n\n        return this.adapter.today().startOf('day');\n    }\n\n    /** parsed end */\n    get end(): D {\n        return this.adapter.parse(this.data.value?.end, '');\n    }\n\n    /** default object for end */\n    get defaultEnd(): D {\n        if (this.data.value?.start) {\n            return this.adapter.today();\n        }\n\n        return this.adapter.today().endOf('day');\n    }\n\n    /** Whether the current pipe is empty. */\n    override get isEmpty(): boolean {\n        if (this.data.value === null) return true;\n\n        if (this.data.value?.name) return false;\n\n        return !this.adapter.isDateInstance(this.start) || !this.adapter.isDateInstance(this.end);\n    }\n\n    /** @docs-private */\n    @ViewChild('popover') popover: KbqPopoverTrigger;\n    /** @docs-private */\n    listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n    /** @docs-private */\n    returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.popover.visibleChange\n            .pipe(\n                filter((visible) => !visible),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n    }\n\n    /** keydown handler\n     * @docs-private */\n    onKeydown($event: KeyboardEvent) {\n        if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n            this.onApplyPeriod();\n        }\n\n        if ($event.keyCode === ENTER) {\n            $event.preventDefault();\n        }\n    }\n\n    /** @docs-private */\n    onApplyPeriod() {\n        this.data.value = {\n            start: this.formGroup.controls.start.value.toISO(),\n            end: this.formGroup.controls.end.value.toISO()\n        };\n        this.stateChanges.next();\n\n        this.filterBar?.onChangePipe.next(this.data);\n\n        this.popover.hide();\n    }\n\n    onSelect(item: KbqDateTimeValue) {\n        this.data.value = item;\n        this.stateChanges.next();\n\n        this.filterBar?.onChangePipe.next(this.data);\n\n        this.popover.hide();\n    }\n\n    showPeriod() {\n        this.isListMode = false;\n        this.showStartCalendar = false;\n        this.showEndCalendar = false;\n\n        this.initFormGroup();\n\n        setTimeout(() => {\n            this.popover.updatePosition(true);\n            this.returnButton().focus();\n        });\n    }\n\n    showList() {\n        this.isListMode = true;\n\n        setTimeout(() => this.listSelection().focus());\n        this.popover.updatePosition(true);\n    }\n\n    /** opens popover */\n    override open() {\n        this.popover.show();\n    }\n\n    onSelectStartDate(value: D) {\n        this.formGroup.controls.start.setValue(value);\n    }\n\n    onSelectEndDate(value: D) {\n        this.formGroup.controls.end.setValue(value);\n    }\n\n    onFocusStartInput() {\n        this.showStartCalendar = true;\n        this.showEndCalendar = false;\n\n        this.popover.updatePosition(true);\n    }\n\n    onFocusEndInput() {\n        this.showEndCalendar = true;\n        this.showStartCalendar = false;\n    }\n\n    hideCalendars() {\n        this.showStartCalendar = false;\n        this.showEndCalendar = false;\n    }\n\n    private initFormGroup() {\n        this.formGroup = new FormGroup({\n            start: new FormControl(this.start || this.defaultStart),\n            end: new FormControl(this.end || this.defaultEnd)\n        });\n    }\n}\n","<button\n    #popover=\"kbqPopover\"\n    kbq-button\n    kbqPopover\n    [disabled]=\"data.disabled\"\n    [kbqPipeState]=\"data\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [kbqPopoverArrow]=\"false\"\n    [kbqPopoverSize]=\"'custom'\"\n    [kbqPopoverClass]=\"'kbq-pipe-date__popover'\"\n    [kbqPopoverContent]=\"content\"\n    [kbqPopoverOffset]=\"4\"\n    [defaultPaddings]=\"false\"\n    [kbqPopoverPlacement]=\"placements.BottomLeft\"\n    [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n    (kbqPopoverVisibleChange)=\"isListMode = true\"\n>\n    <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n    <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!formattedValue\">\n        {{ formattedValue }}\n    </span>\n</button>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #content>\n    @if (isListMode) {\n        <div class=\"kbq-date-list\">\n            <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n                <kbq-list-option (click)=\"showPeriod()\" (keydown.enter)=\"showPeriod()\">\n                    {{ localeData.datePipe?.customPeriod }}\n                    <!-- prevents [kbq-icon] from matching icon slot in kbq-list-option, keeping chevron after label text -->\n                    <ng-container>\n                        <i kbq-icon=\"kbq-chevron-right_16\" color=\"contrast-fade\"></i>\n                    </ng-container>\n                </kbq-list-option>\n\n                @for (item of values; track item) {\n                    <kbq-list-option [value]=\"item.name\" (click)=\"onSelect(item)\" (keydown.enter)=\"onSelect(item)\">\n                        {{ item.name }}\n                    </kbq-list-option>\n                }\n            </kbq-list-selection>\n        </div>\n    } @else {\n        <div class=\"kbq-date-period kbq-datepicker__content\" (keydown)=\"onKeydown($event)\">\n            <div class=\"kbq-date-period__header\">\n                <button\n                    #returnButton\n                    kbq-button\n                    [color]=\"colors.Theme\"\n                    [kbqStyle]=\"styles.Transparent\"\n                    (click)=\"showList()\"\n                >\n                    <i kbq-icon=\"kbq-chevron-left_16\"></i>\n                    {{ localeData.datePipe.backToPeriodSelection }}\n                </button>\n            </div>\n\n            <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n                <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n                <div class=\"kbq-form__row_with-time kbq-form__control\">\n                    <kbq-form-field class=\"kbq-date-period__date\" [class.kbq-focused]=\"showStartCalendar\">\n                        <input\n                            formControlName=\"start\"\n                            [kbqCalendar]=\"startDateCalendar\"\n                            [max]=\"formGroup.controls.end.value\"\n                            (focusin)=\"onFocusStartInput()\"\n                            (keydown.tab)=\"hideCalendars()\"\n                        />\n                        <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n                    </kbq-form-field>\n\n                    <kbq-form-field class=\"kbq-date-period__time\">\n                        <i kbq-icon=\"kbq-clock_16\" kbqPrefix></i>\n                        <input formControlName=\"start\" kbqTimepicker (focusin)=\"hideCalendars()\" />\n                    </kbq-form-field>\n                </div>\n\n                <kbq-calendar\n                    #startDateCalendar\n                    [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n                    (selectedChange)=\"onSelectStartDate($event)\"\n                />\n\n                <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n                <div class=\"kbq-form__row_with-time kbq-form__control\">\n                    <kbq-form-field class=\"kbq-date-period__date\" [class.kbq-focused]=\"showEndCalendar\">\n                        <input\n                            formControlName=\"end\"\n                            [kbqCalendar]=\"endDateCalendar\"\n                            (focusin)=\"onFocusEndInput()\"\n                            (keydown.tab)=\"hideCalendars()\"\n                        />\n                        <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n                    </kbq-form-field>\n\n                    <kbq-form-field class=\"kbq-date-period__time\">\n                        <i kbq-icon=\"kbq-clock_16\" kbqPrefix></i>\n                        <input formControlName=\"end\" kbqTimepicker (focusin)=\"hideCalendars()\" />\n                    </kbq-form-field>\n                </div>\n\n                @if (formGroup.controls.start.invalid) {\n                    <kbq-hint class=\"kbq-date-period__hint\" [color]=\"'error'\">\n                        {{ localeData.datePipe.customPeriodErrorHint }}\n                    </kbq-hint>\n                }\n\n                <kbq-calendar\n                    #endDateCalendar\n                    [class.kbq-calendar_hidden]=\"!showEndCalendar\"\n                    (selectedChange)=\"onSelectEndDate($event)\"\n                />\n            </form>\n\n            <div class=\"kbq-date-period__footer\">\n                <button\n                    kbq-button\n                    [color]=\"'theme'\"\n                    [disabled]=\"disabled\"\n                    [kbqStyle]=\"'transparent'\"\n                    (click)=\"onApplyPeriod()\"\n                >\n                    <span>{{ localeData.pipe.applyButton }}</span>\n                    &nbsp;\n                    <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n                </button>\n            </div>\n        </div>\n    }\n</ng-template>\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ formattedValue }}</div>\n</ng-template>\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    OnInit,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOption, KbqPseudoCheckboxModule, KbqPseudoCheckboxState } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { KbqSelectValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-multi-select',\n    imports: [\n        FormsModule,\n        KbqButtonModule,\n        KbqDividerModule,\n        KbqSelectModule,\n        NgClass,\n        KbqPipeState,\n        KbqBadgeModule,\n        KbqPipeButton,\n        KbqTitleModule,\n        KbqPipeTitleDirective,\n        NgTemplateOutlet,\n        KbqFormFieldModule,\n        KbqIconModule,\n        KbqInputModule,\n        ReactiveFormsModule,\n        AsyncPipe,\n        KbqPseudoCheckboxModule\n    ],\n    templateUrl: 'pipe-multi-select.html',\n    styleUrls: ['base-pipe.scss', 'pipe-multiselect.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements AfterViewInit, OnInit {\n    /** control for search options */\n    searchControl: UntypedFormControl = new UntypedFormControl();\n    /** filtered by search options */\n    filteredOptions: Observable<any[]>;\n\n    /** @docs-private */\n    @ViewChild(KbqSelect) select: KbqSelect;\n\n    /** @docs-private */\n    @ViewChildren(KbqOption) options: QueryList<KbqOption>;\n\n    /** selected value */\n    get selected() {\n        if (this.selectedAllEqualsSelectedNothing) {\n            return this.internalSelected;\n        }\n\n        return this.data.value;\n    }\n\n    /** Whether the current pipe is empty. */\n    get isEmpty(): boolean {\n        return (\n            super.isEmpty ||\n            (Array.isArray(this.data.value) && !this.data.value.length) ||\n            (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected)\n        );\n    }\n\n    /** state for checkbox 'select all'. */\n    get checkboxState(): KbqPseudoCheckboxState {\n        if (!this.options) return 'unchecked';\n\n        if (this.select.selectionModel.selected.length === this.values.length) {\n            return 'checked';\n        } else if (!this.select.selectionModel.selected.length) {\n            return 'unchecked';\n        }\n\n        return 'indeterminate';\n    }\n\n    /** true if all visible options selected */\n    get allVisibleOptionsSelected(): boolean {\n        return this.visibleOptions?.every((option) => option.selected);\n    }\n\n    /** true if all options selected */\n    get allOptionsSelected(): boolean {\n        return this.select?.triggerValues.length === this.values?.length;\n    }\n\n    get selectedAllEqualsSelectedNothing(): boolean {\n        return this.data.selectedAllEqualsSelectedNothing ?? this.filterBar!.selectedAllEqualsSelectedNothing;\n    }\n\n    private get visibleOptions(): KbqOption[] {\n        return this.options?.filter((option) => option.selectable);\n    }\n\n    private selectionAllInProgress = false;\n    private internalSelected: KbqSelectValue[] | null;\n\n    /** @docs-private */\n    ngOnInit(): void {\n        this.updateInternalSelected();\n\n        this.filteredOptions = merge(this.filterBar!.internalTemplatesChanges, this.searchControl.valueChanges).pipe(\n            map(this.getFilteredOptions),\n            takeUntilDestroyed(this.destroyRef)\n        );\n    }\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.select.closedStream\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n    }\n\n    /** @docs-private */\n    onSelect(item: KbqSelectValue[]) {\n        if (this.selectionAllInProgress) return;\n\n        if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n            this.data.value = [];\n        } else {\n            this.data.value = item;\n        }\n\n        this.emitChangePipeEvent();\n\n        this.stateChanges.next();\n    }\n\n    /** @docs-private */\n    onClear() {\n        this.data.value = [];\n\n        this.updateInternalSelected();\n\n        this.filterBar?.onClearPipe.emit(this.data);\n        this.filterBar?.onChangePipe.emit(this.data);\n        this.stateChanges.next();\n    }\n\n    /** @docs-private */\n    toggleSelectionAllByEnterKey() {\n        if (this.data.selectAll && this.select.keyManager.activeItemIndex === 0) {\n            this.toggleSelectionAll();\n        }\n    }\n\n    /** @docs-private */\n    toggleSelectionAll(emitEvent: boolean = true) {\n        this.selectionAllInProgress = true;\n\n        if (this.allVisibleOptionsSelected) {\n            this.visibleOptions.forEach((option) => option.deselect());\n        } else {\n            this.visibleOptions.forEach((option) => option.select());\n        }\n\n        this.selectionAllInProgress = false;\n\n        if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n            this.data.value = [];\n        } else {\n            this.data.value = [...this.select.value];\n        }\n\n        if (emitEvent) {\n            this.emitChangePipeEvent();\n        }\n\n        this.stateChanges.next();\n    }\n\n    /** Comparator of selected options */\n    compareByValue = (o1: any, o2: any): boolean => o1?.id === o2?.id;\n\n    /** handler for select all options in select */\n    selectAllHandler = (event: KeyboardEvent) => {\n        event.preventDefault();\n\n        this.toggleSelectionAll();\n    };\n\n    /** @docs-private */\n    onClose() {\n        if (this.allOptionsSelected) {\n            this.updateInternalSelected();\n        }\n    }\n\n    /** opens select */\n    override open() {\n        this.select.open();\n    }\n\n    private updateInternalSelected() {\n        if (this.selectedAllEqualsSelectedNothing) {\n            this.internalSelected = this.data.value?.slice() || [];\n        }\n    }\n\n    private emitChangePipeEvent() {\n        if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n            this.filterBar?.onChangePipe.emit({ ...this.data, value: [] });\n        } else {\n            this.filterBar?.onChangePipe.emit(this.data);\n        }\n    }\n\n    private getFilteredOptions = (): KbqSelectValue[] => {\n        return this.searchControl.value\n            ? this.values.filter((item) => item.name.toLowerCase().includes(this.searchControl.value.toLowerCase()))\n            : this.values;\n    };\n}\n","<kbq-select\n    #select=\"kbqSelect\"\n    multiple\n    [compareWith]=\"compareByValue\"\n    [disabled]=\"data.disabled\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n    [selectAllHandler]=\"selectAllHandler\"\n    [tabIndex]=\"-1\"\n    [value]=\"selected\"\n    (closed)=\"onClose()\"\n    (selectionChange)=\"onSelect($event.value)\"\n>\n    <button\n        kbq-button\n        kbq-select-matcher\n        [disabled]=\"data.disabled\"\n        [kbqPipeState]=\"data\"\n        [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    >\n        <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n        @if (select.triggerValues.length === 1) {\n            <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n                {{ select.triggerValue }}\n            </span>\n        } @else if (\n            select.triggerValues.length > 1 &&\n            (!selectedAllEqualsSelectedNothing || (selectedAllEqualsSelectedNothing && !allOptionsSelected))\n        ) {\n            <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n                {{ select.triggerValues.length }}\n            </kbq-badge>\n        }\n    </button>\n    @if (data.search) {\n        <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n            <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n            <input\n                placeholder=\"{{ localeData.search.placeholder }}\"\n                autocomplete=\"off\"\n                kbqInput\n                type=\"text\"\n                [formControl]=\"searchControl\"\n                (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n            />\n            <kbq-cleaner />\n        </kbq-form-field>\n    }\n\n    <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n    @if (data.selectAll && !select.isEmptySearchResult) {\n        <kbq-option\n            [class.kbq-selected]=\"allVisibleOptionsSelected\"\n            [selectable]=\"false\"\n            (click)=\"toggleSelectionAll()\"\n            (keydown.enter)=\"toggleSelectionAll()\"\n        >\n            <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n            {{ localeData.pipe.selectAll }}\n        </kbq-option>\n    }\n\n    @for (item of filteredOptions | async; track item) {\n        <kbq-option [value]=\"item\">\n            @if (isTemplateRef(valueTemplate)) {\n                <ng-container\n                    [ngTemplateOutlet]=\"$any(valueTemplate)\"\n                    [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n                />\n            } @else {\n                {{ item.name }}\n            }\n        </kbq-option>\n    }\n</kbq-select>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { NgClass, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqHighlightModule, KbqPseudoCheckboxModule, KbqPseudoCheckboxState } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n    FlatTreeControl,\n    KbqTreeFlatDataSource,\n    KbqTreeFlattener,\n    KbqTreeModule,\n    kbqTreeSelectAllValue,\n    KbqTreeSelection\n} from '@koobiq/components/tree';\nimport { KbqTreeSelect, KbqTreeSelectModule } from '@koobiq/components/tree-select';\nimport { Observable } from 'rxjs';\nimport { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';\nimport { getId, KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-multi-tree-select',\n    imports: [\n        KbqButtonModule,\n        KbqDividerModule,\n        NgClass,\n        KbqPipeState,\n        KbqPipeButton,\n        KbqTitleModule,\n        KbqPipeTitleDirective,\n        KbqPipeMinWidth,\n        KbqFormFieldModule,\n        KbqIconModule,\n        KbqInputModule,\n        ReactiveFormsModule,\n        KbqHighlightModule,\n        KbqTreeModule,\n        KbqTreeSelectModule,\n        NgIf,\n        FormsModule,\n        KbqBadgeModule,\n        KbqPseudoCheckboxModule\n    ],\n    templateUrl: 'pipe-multi-tree-select.html',\n    styleUrls: ['base-pipe.scss', 'pipe-multi-tree-select.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements OnInit, AfterViewInit {\n    /** control for search options */\n    searchControl: UntypedFormControl = new UntypedFormControl();\n    /** filtered by search options */\n    filteredOptions: Observable<any[]>;\n\n    treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;\n    treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n    dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n    template: any;\n\n    /** @docs-private */\n    @ViewChild(KbqTreeSelect) select: KbqTreeSelect;\n\n    /** @docs-private */\n    @ViewChild(KbqTreeSelection) tree: KbqTreeSelection;\n\n    /** selected value */\n    get selected() {\n        if (this.selectedAllEqualsSelectedNothing) {\n            return this.internalSelected;\n        }\n\n        return this.data.value;\n    }\n\n    /** Whether the current pipe is empty. */\n    get isEmpty(): boolean {\n        return (\n            super.isEmpty ||\n            (Array.isArray(this.data.value) && !this.data.value.length) ||\n            (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected)\n        );\n    }\n\n    get selectAllCheckboxState(): KbqPseudoCheckboxState {\n        if (!this.select) return 'unchecked';\n\n        if (this.allOptionsSelected) {\n            return 'checked';\n        } else if (this.select.selected.length > 0) {\n            return 'indeterminate';\n        }\n\n        return 'unchecked';\n    }\n\n    get numberOfSelectedLeaves(): number {\n        return this.select.selected.filter(({ value }) => value !== kbqTreeSelectAllValue).length;\n    }\n\n    /** true if all options selected */\n    get allOptionsSelected(): boolean {\n        const dataNodesLength = this.treeControl?.dataNodes?.length;\n        const dataNodesForSelect = this.data.selectAll ? dataNodesLength - 1 : dataNodesLength;\n\n        return this.select?.triggerValues?.length === dataNodesForSelect;\n    }\n\n    get selectedAllEqualsSelectedNothing(): boolean {\n        return this.data.selectedAllEqualsSelectedNothing ?? this.filterBar!.selectedAllEqualsSelectedNothing;\n    }\n\n    /** true if all visible options selected */\n    get allVisibleOptionsSelected(): boolean {\n        return this.tree.renderedOptions\n            .filter((option) => option.value !== kbqTreeSelectAllValue)\n            .every((option) => option.selected);\n    }\n\n    private internalSelected: KbqSelectValue[] | null;\n\n    constructor() {\n        super();\n\n        this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n\n        this.treeControl = new FlatTreeControl<KbqTreeSelectFlatNode>(\n            this.getLevel,\n            this.isExpandable,\n            this.getValue,\n            this.getViewValue\n        );\n\n        this.dataSource = new KbqTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n        this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n    }\n\n    ngOnInit(): void {\n        this.updateInternalSelected();\n\n        this.searchControl.valueChanges.subscribe((value) => this.treeControl.filterNodes(value));\n    }\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.select.closedStream\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n    }\n\n    isNodeHasChild(_: number, nodeData) {\n        return nodeData.expandable;\n    }\n\n    isNodeSelectAll(_: number, nodeData) {\n        return nodeData.value === kbqTreeSelectAllValue;\n    }\n\n    onSelect({ value: option }) {\n        if (!option) return;\n\n        if (this.tree.treeControl.isExpandable(option.data)) {\n            this.tree.setStateChildren(option, !option.selected);\n        }\n\n        this.toggleParents(option.data.parent);\n\n        setTimeout(() => {\n            if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n                this.data.value = [];\n            } else {\n                this.data.value = this.select.selectedValues;\n            }\n\n            this.emitChangePipeEvent();\n\n            this.stateChanges.next();\n        });\n    }\n\n    searchKeydownHandler() {\n        if (this.data.selectAll && this.tree.keyManager.activeItemIndex === 0) {\n            this.toggleSelectAllNode();\n        }\n    }\n\n    toggleSelectAllNode(emitEvent: boolean = true) {\n        if (this.select.search?.ngControl.value) {\n            const renderedOptions = this.tree.renderedOptions.filter(({ value }) => value !== kbqTreeSelectAllValue);\n\n            if (this.allVisibleOptionsSelected) {\n                renderedOptions.forEach((option) => option.setSelected(false));\n            } else {\n                renderedOptions.forEach((option) => option.setSelected(true));\n            }\n        } else {\n            if (this.allOptionsSelected) {\n                this.tree.selectionModel.clear();\n            } else {\n                const [, ...dataNodesForSelect] = this.treeControl.dataNodes;\n\n                // @todo DS-3827\n                this.tree.selectionModel.select(...(dataNodesForSelect as any));\n            }\n        }\n\n        setTimeout(() => {\n            if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n                this.data.value = [];\n            } else {\n                this.data.value = [...this.select.selectedValues];\n            }\n\n            if (emitEvent) {\n                this.emitChangePipeEvent();\n            }\n\n            this.stateChanges.next();\n        });\n    }\n\n    /** updates values for selection and value template */\n    override updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n        const template = templates?.find((template) => getId(template) === getId(this.data));\n\n        if (template?.values) {\n            this.values = template.values;\n            this.valueTemplate = template.valueTemplate;\n\n            const values = [...(template.values as KbqTreeSelectNode[])];\n\n            if (this.data.selectAll) {\n                values.unshift({\n                    name: this.localeData.pipe.selectAll,\n                    value: kbqTreeSelectAllValue,\n                    children: null\n                });\n            }\n\n            this.dataSource.data = values;\n        }\n    };\n\n    /** opens select */\n    override open() {\n        setTimeout(() => this.select.open());\n    }\n\n    override onClear() {\n        super.onClear();\n\n        this.updateInternalSelected();\n    }\n\n    /** @docs-private */\n    onOpen() {\n        this.treeControl.expandAll();\n    }\n\n    /** @docs-private */\n    onClose() {\n        if (this.allOptionsSelected) {\n            this.updateInternalSelected();\n        }\n    }\n\n    /** handler for select all options in select */\n    selectAllHandler = (event: KeyboardEvent) => {\n        event.preventDefault();\n\n        this.toggleSelectAllNode();\n    };\n\n    private updateInternalSelected() {\n        if (this.selectedAllEqualsSelectedNothing) {\n            this.internalSelected = this.data.value?.slice() || [];\n        }\n    }\n\n    private emitChangePipeEvent() {\n        if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n            this.filterBar?.onChangePipe.emit({ ...this.data, value: [] });\n        } else {\n            this.filterBar?.onChangePipe.emit(this.data);\n        }\n    }\n\n    private toggleParents(parent) {\n        if (!parent) {\n            return;\n        }\n\n        const descendants = this.treeControl.getDescendants(parent);\n        const isParentSelected = this.select.selectionModel.selected.includes(parent);\n\n        if (!isParentSelected && descendants.every((d: any) => this.select.selectionModel.selected.includes(d))) {\n            this.select.selectionModel.select(parent);\n            this.toggleParents(parent.parent);\n        } else if (isParentSelected) {\n            this.select.selectionModel.deselect(parent);\n            this.toggleParents(parent.parent);\n        }\n    }\n\n    private transformer = (node: KbqTreeSelectNode, level: number, parent: any) => {\n        const flatNode = new KbqTreeSelectFlatNode();\n\n        flatNode.name = node.name;\n        flatNode.value = node.value;\n        flatNode.parent = parent;\n        flatNode.level = level;\n        flatNode.expandable = !!node.children;\n\n        return flatNode;\n    };\n\n    private getLevel = (node: KbqTreeSelectFlatNode) => {\n        return node.level;\n    };\n\n    private isExpandable = (node: KbqTreeSelectFlatNode) => {\n        return node.expandable;\n    };\n\n    private getChildren = (node: KbqTreeSelectNode): KbqTreeSelectNode[] | null => {\n        return node.children;\n    };\n\n    private getValue = (node: KbqTreeSelectFlatNode): unknown => {\n        return node.value;\n    };\n\n    private getViewValue = (node: KbqTreeSelectFlatNode): string => {\n        return `${node.name}`;\n    };\n}\n","<kbq-tree-select\n    #select\n    [autoSelect]=\"false\"\n    [disabled]=\"data.disabled\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [multiple]=\"true\"\n    [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    [ngModel]=\"selected\"\n    [panelClass]=\"'kbq-pipe-multi-tree-select__panel'\"\n    [selectAllHandler]=\"selectAllHandler\"\n    [tabIndex]=\"-1\"\n    (closed)=\"onClose()\"\n    (opened)=\"onOpen()\"\n    (selectionChange)=\"onSelect($event)\"\n>\n    <!-- eslint-disable-next-line @angular-eslint/template/prefer-control-flow -->\n    <kbq-form-field *ngIf=\"data.search\" kbqFormFieldWithoutBorders kbqSelectSearch>\n        <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n        <input\n            placeholder=\"{{ localeData.search.placeholder }}\"\n            autocomplete=\"off\"\n            kbqInput\n            type=\"text\"\n            [formControl]=\"searchControl\"\n            (keydown.enter)=\"searchKeydownHandler()\"\n        />\n        <kbq-cleaner />\n    </kbq-form-field>\n\n    <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n    <kbq-cleaner #kbqSelectCleaner />\n\n    <button\n        kbq-button\n        kbq-select-matcher\n        [disabled]=\"data.disabled\"\n        [kbqPipeState]=\"data\"\n        [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    >\n        <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n\n        @if (select.selected?.length === 1) {\n            <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n                {{ select.selected[0].name }}\n            </span>\n        } @else if (\n            select.selected?.length > 1 &&\n            (!selectedAllEqualsSelectedNothing || (selectedAllEqualsSelectedNothing && !allOptionsSelected))\n        ) {\n            <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n                {{ numberOfSelectedLeaves }}\n            </kbq-badge>\n        }\n    </button>\n\n    <kbq-tree-selection [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n        <kbq-tree-option\n            *kbqTreeNodeDef=\"let node; when: isNodeSelectAll\"\n            kbqTreeNodePadding\n            [class.kbq-selected]=\"allOptionsSelected\"\n            [selectable]=\"false\"\n            (click)=\"toggleSelectAllNode()\"\n        >\n            <kbq-pseudo-checkbox [state]=\"selectAllCheckboxState\" />\n            <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n        </kbq-tree-option>\n\n        <kbq-tree-option *kbqTreeNodeDef=\"let node\" kbqTreeNodePadding [checkboxThirdState]=\"true\">\n            <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n        </kbq-tree-option>\n\n        <kbq-tree-option\n            *kbqTreeNodeDef=\"let node; when: isNodeHasChild\"\n            kbqTreeNodePadding\n            [checkboxThirdState]=\"true\"\n        >\n            <kbq-tree-node-toggle [node]=\"node\" />\n            <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n        </kbq-tree-option>\n    </kbq-tree-selection>\n</kbq-tree-select>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-readonly',\n    imports: [\n        KbqButtonModule,\n        KbqTitleModule,\n        KbqPipeState,\n        KbqPipeTitleDirective,\n        KbqPipeMinWidth,\n        KbqPipeButton\n    ],\n    template: `\n        <button kbq-button [disabled]=\"data.disabled\" [kbqPipeState]=\"data\" [kbqPipeTitle]=\"pipeTooltip\">\n            <span #kbqTitleText class=\"kbq-pipe__name\" kbqPipeMinWidth>{{ data.name }}</span>\n            <span #kbqTitleText class=\"kbq-pipe__value\" kbqPipeMinWidth [class.kbq-pipe__value_empty]=\"!data.value\">\n                {{ data.value }}\n            </span>\n        </button>\n\n        @if (showRemoveButton) {\n            <kbq-pipe-button />\n        }\n\n        <ng-template #pipeTooltip>\n            <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n            <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ data.value }}</div>\n        </ng-template>\n    `,\n    styleUrls: ['base-pipe.scss', 'pipe-readonly.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeReadonlyComponent extends KbqBasePipe<string | null> {\n    open(): void {}\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { merge, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { KbqSelectValue } from '../filter-bar.types';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-select',\n    imports: [\n        KbqButtonModule,\n        KbqDividerModule,\n        KbqSelectModule,\n        NgClass,\n        KbqPipeState,\n        KbqPipeButton,\n        KbqTitleModule,\n        KbqPipeTitleDirective,\n        KbqPipeMinWidth,\n        NgTemplateOutlet,\n        KbqFormFieldModule,\n        KbqIcon,\n        KbqInputModule,\n        ReactiveFormsModule,\n        AsyncPipe\n    ],\n    templateUrl: 'pipe-select.html',\n    styleUrls: ['base-pipe.scss', 'pipe-select.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements AfterViewInit, OnInit {\n    /** control for search options */\n    searchControl: UntypedFormControl = new UntypedFormControl();\n    /** filtered by search options */\n    filteredOptions: Observable<any[]>;\n\n    /** @docs-private */\n    @ViewChild(KbqSelect) select: KbqSelect;\n\n    /** selected value */\n    get selected() {\n        return this.data.value;\n    }\n\n    /** Whether the current pipe is empty. */\n    get isEmpty(): boolean {\n        return !this.data.value;\n    }\n\n    /** @docs-private */\n    ngOnInit(): void {\n        this.filteredOptions = merge(\n            of(this.values),\n            this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n        );\n    }\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.select.closedStream\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n    }\n\n    onSelect(item: KbqSelectValue) {\n        this.data.value = item;\n        this.filterBar?.onChangePipe.emit(this.data);\n        this.stateChanges.next();\n    }\n\n    /** Comparator of selected options */\n    compareByValue = (o1: any, o2: any): boolean => o1 && o2 && o1.id === o2.id;\n\n    /** opens select */\n    override open() {\n        this.select.open();\n    }\n\n    private getFilteredOptions(value: string): KbqSelectValue[] {\n        return value\n            ? this.values.filter((item) => item.name.toLowerCase().includes(value.toLowerCase()))\n            : this.values;\n    }\n}\n","<kbq-select\n    #select\n    [compareWith]=\"compareByValue\"\n    [disabled]=\"data.disabled\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    [panelClass]=\"'kbq-pipe-select__panel'\"\n    [tabIndex]=\"-1\"\n    [value]=\"selected\"\n    (selectionChange)=\"onSelect($event.value)\"\n>\n    <button\n        kbq-button\n        kbq-select-matcher\n        [disabled]=\"data.disabled\"\n        [kbqPipeState]=\"data\"\n        [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    >\n        <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n        <span\n            #kbqTitleText\n            kbqPipeMinWidth\n            class=\"kbq-pipe__value\"\n            [class.kbq-pipe__value_empty]=\"!select.triggerValue\"\n        >\n            {{ select.triggerValue }}\n        </span>\n    </button>\n\n    @if (data.search) {\n        <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n            <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n            <input\n                placeholder=\"{{ localeData.search.placeholder }}\"\n                kbqInput\n                type=\"text\"\n                [formControl]=\"searchControl\"\n            />\n            <kbq-cleaner />\n        </kbq-form-field>\n    }\n\n    <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n    @for (item of filteredOptions | async; track item) {\n        <kbq-option [value]=\"item\">\n            @if (isTemplateRef(valueTemplate)) {\n                <ng-container\n                    [ngTemplateOutlet]=\"$any(valueTemplate)\"\n                    [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n                />\n            } @else {\n                {{ item.name }}\n            }\n        </kbq-option>\n    }\n</kbq-select>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { PopUpPlacements } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTextareaModule } from '@koobiq/components/textarea';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-text',\n    imports: [\n        KbqButtonModule,\n        KbqFormFieldModule,\n        KbqPopoverModule,\n        KbqInputModule,\n        KbqDividerModule,\n        FormsModule,\n        KbqTextareaModule,\n        NgClass,\n        KbqPipeButton,\n        ReactiveFormsModule,\n        KbqTitleModule,\n        KbqPipeState,\n        KbqPipeTitleDirective,\n        KbqPipeMinWidth\n    ],\n    templateUrl: 'pipe-text.html',\n    styleUrls: ['base-pipe.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeTextComponent extends KbqBasePipe<string | null> implements AfterViewInit, OnInit {\n    readonly placements = PopUpPlacements;\n\n    /** @docs-private */\n    @ViewChild(KbqPopoverTrigger) popover: KbqPopoverTrigger;\n\n    /** Whether the current pipe is disabled. */\n    get disabled(): boolean {\n        return !this.control.value;\n    }\n\n    /** textarea control */\n    control = new FormControl<typeof this.data.value>('');\n\n    ngOnInit(): void {\n        this.control.setValue(this.data.value);\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.popover.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible) => {\n            this.stateChanges.next();\n\n            if (!visible) {\n                this.filterBar?.onClosePipe.next(this.data);\n            }\n        });\n    }\n\n    onApply() {\n        this.data.value = this.control.value;\n        this.stateChanges.next();\n\n        this.control.markAsPristine();\n        this.popover.hide();\n\n        this.filterBar?.onChangePipe.next(this.data);\n    }\n\n    /** @docs-private */\n    onKeydown($event: KeyboardEvent) {\n        if (!this.disabled && ($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n            this.onApply();\n        }\n    }\n\n    /** clears the pipe and triggers changes */\n    override onClear() {\n        super.onClear();\n\n        this.control.reset();\n    }\n\n    /** opens popover */\n    override open() {\n        this.popover.show();\n    }\n}\n","<button\n    kbq-button\n    kbqPopover\n    [disabled]=\"data.disabled\"\n    [kbqPipeState]=\"data\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [kbqPopoverArrow]=\"false\"\n    [kbqPopoverSize]=\"'custom'\"\n    [kbqPopoverClass]=\"'kbq-pipe__popover'\"\n    [kbqPopoverContent]=\"content\"\n    [kbqPopoverFooter]=\"footer\"\n    [kbqPopoverOffset]=\"4\"\n    [defaultPaddings]=\"false\"\n    [kbqPopoverPlacement]=\"placements.BottomLeft\"\n    [ngClass]=\"{ 'kbq-active': popover?.isOpen }\"\n>\n    <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n    <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!data.value\">\n        {{ data.value }}\n    </span>\n</button>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #content>\n    <kbq-form-field (keydown)=\"onKeydown($event)\">\n        <textarea kbqTextarea rows=\"1\" [formControl]=\"control\" [freeRowsHeight]=\"0\" [maxRows]=\"5\"></textarea>\n    </kbq-form-field>\n</ng-template>\n\n<ng-template #footer>\n    <button kbq-button [color]=\"'theme'\" [disabled]=\"disabled\" [kbqStyle]=\"'transparent'\" (click)=\"onApply()\">\n        <span>{{ localeData.pipe.applyButton }}</span>\n        &nbsp;\n        <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n    </button>\n</ng-template>\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ data.value }}</div>\n</ng-template>\n","import { NgClass, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqHighlightModule } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n    FlatTreeControl,\n    KbqTreeFlatDataSource,\n    KbqTreeFlattener,\n    KbqTreeModule,\n    KbqTreeOption\n} from '@koobiq/components/tree';\nimport { KbqTreeSelect, KbqTreeSelectModule } from '@koobiq/components/tree-select';\nimport { Observable } from 'rxjs';\nimport { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';\nimport { getId, KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n    selector: 'kbq-pipe-tree-select',\n    imports: [\n        KbqButtonModule,\n        KbqDividerModule,\n        NgClass,\n        KbqPipeState,\n        KbqPipeButton,\n        KbqTitleModule,\n        KbqPipeTitleDirective,\n        KbqPipeMinWidth,\n        KbqFormFieldModule,\n        KbqIconModule,\n        KbqInputModule,\n        ReactiveFormsModule,\n        KbqHighlightModule,\n        KbqTreeModule,\n        KbqTreeSelectModule,\n        NgIf,\n        FormsModule\n    ],\n    templateUrl: 'pipe-tree-select.html',\n    styleUrls: ['base-pipe.scss', 'pipe-tree-select.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: KbqBasePipe,\n            useExisting: this\n        }\n    ]\n})\nexport class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit, AfterViewInit {\n    /** control for search options */\n    searchControl: UntypedFormControl = new UntypedFormControl();\n    /** filtered by search options */\n    filteredOptions: Observable<any[]>;\n\n    treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;\n    treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n    dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n    template: any;\n\n    /** @docs-private */\n    @ViewChild(KbqTreeSelect) select: KbqTreeSelect;\n\n    /** selected value */\n    get selected() {\n        return this.data.value;\n    }\n\n    /** Whether the current pipe is empty. */\n    get isEmpty(): boolean {\n        return !this.data.value;\n    }\n\n    constructor() {\n        super();\n\n        this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n\n        this.treeControl = new FlatTreeControl<KbqTreeSelectFlatNode>(\n            this.getLevel,\n            this.isExpandable,\n            this.getValue,\n            this.getViewValue\n        );\n\n        this.dataSource = new KbqTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n        this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n    }\n\n    ngOnInit(): void {\n        this.searchControl.valueChanges.subscribe((value) => this.treeControl.filterNodes(value));\n    }\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n        this.select.closedStream\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n    }\n\n    hasChild(_: number, nodeData) {\n        return nodeData.expandable;\n    }\n\n    onSelect(item: KbqTreeOption) {\n        this.data.value = item.value;\n        this.filterBar?.onChangePipe.emit(this.data);\n        this.select.close();\n        setTimeout(() => this.select.focus());\n        this.stateChanges.next();\n    }\n\n    /** updates values for selection and value template */\n    override updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n        const template = templates?.find((template) => getId(template) === getId(this.data));\n\n        if (template?.values) {\n            this.values = template.values;\n            this.valueTemplate = template.valueTemplate;\n\n            this.dataSource.data = template.values as KbqTreeSelectNode[];\n        }\n    };\n\n    /** opens select */\n    override open() {\n        setTimeout(() => this.select.open());\n    }\n\n    onOpen() {\n        this.treeControl.expandAll();\n    }\n\n    private transformer = (node: KbqTreeSelectNode, level: number, parent: any) => {\n        const flatNode = new KbqTreeSelectFlatNode();\n\n        flatNode.name = node.name;\n        flatNode.value = node.value;\n        flatNode.parent = parent;\n        flatNode.level = level;\n        flatNode.expandable = !!node.children;\n\n        return flatNode;\n    };\n\n    private getLevel = (node: KbqTreeSelectFlatNode) => {\n        return node.level;\n    };\n\n    private isExpandable = (node: KbqTreeSelectFlatNode) => {\n        return node.expandable;\n    };\n\n    private getChildren = (node: KbqTreeSelectNode): KbqTreeSelectNode[] | null => {\n        return node.children;\n    };\n\n    private getValue = (node: KbqTreeSelectFlatNode): unknown => {\n        return node.value;\n    };\n\n    private getViewValue = (node: KbqTreeSelectFlatNode): string => {\n        return `${node.name}`;\n    };\n}\n","<kbq-tree-select\n    #select\n    [autoSelect]=\"false\"\n    [disabled]=\"data.disabled\"\n    [kbqPipeTitle]=\"pipeTooltip\"\n    [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    [ngModel]=\"selected\"\n    [panelClass]=\"'kbq-pipe-tree-select__panel'\"\n    [tabIndex]=\"-1\"\n    (opened)=\"onOpen()\"\n    (selectionChange)=\"onSelect($event.value)\"\n>\n    <!-- eslint-disable-next-line @angular-eslint/template/prefer-control-flow -->\n    <kbq-form-field *ngIf=\"data.search\" kbqFormFieldWithoutBorders kbqSelectSearch>\n        <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n        <input\n            placeholder=\"{{ localeData.search.placeholder }}\"\n            autocomplete=\"off\"\n            kbqInput\n            type=\"text\"\n            [formControl]=\"searchControl\"\n        />\n        <kbq-cleaner />\n    </kbq-form-field>\n\n    <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n    <kbq-cleaner #kbqSelectCleaner />\n\n    <button\n        kbq-button\n        kbq-select-matcher\n        [disabled]=\"data.disabled\"\n        [kbqPipeState]=\"data\"\n        [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n    >\n        <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n        <span\n            #kbqTitleText\n            kbqPipeMinWidth\n            class=\"kbq-pipe__value\"\n            [class.kbq-pipe__value_empty]=\"!select.triggerValue\"\n        >\n            {{ select.triggerValue }}\n        </span>\n    </button>\n\n    <kbq-tree-selection [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n        <kbq-tree-option *kbqTreeNodeDef=\"let node\" kbqTreeNodePadding>\n            <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n        </kbq-tree-option>\n\n        <kbq-tree-option *kbqTreeNodeDef=\"let node; when: hasChild\" kbqTreeNodePadding [selectable]=\"false\">\n            <kbq-tree-node-toggle [node]=\"node\" />\n            <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n        </kbq-tree-option>\n    </kbq-tree-selection>\n</kbq-tree-select>\n\n@if (showRemoveButton) {\n    <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n    <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n    <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { InjectionToken, Provider, TemplateRef } from '@angular/core';\nimport { ruRULocaleData } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqPipeDateComponent } from './pipes/pipe-date';\nimport { KbqPipeDatetimeComponent } from './pipes/pipe-datetime';\nimport { KbqPipeMultiSelectComponent } from './pipes/pipe-multi-select';\nimport { KbqPipeMultiTreeSelectComponent } from './pipes/pipe-multi-tree-select';\nimport { KbqPipeReadonlyComponent } from './pipes/pipe-readonly';\nimport { KbqPipeSelectComponent } from './pipes/pipe-select';\nimport { KbqPipeTextComponent } from './pipes/pipe-text';\nimport { KbqPipeTreeSelectComponent } from './pipes/pipe-tree-select';\n\n/**default configuration of filter-bar */\nexport const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION = ruRULocaleData.filterBar;\n\n/** Injection Token for providing configuration of filter-bar */\nexport const KBQ_FILTER_BAR_CONFIGURATION = new InjectionToken('KbqFilterBarConfiguration');\n\n/** Injection Token for providing pipes in filter-bar */\nexport const KBQ_FILTER_BAR_PIPES = new InjectionToken<any>('kbq-filter-bar-pipes');\n\n/** Utility provider for `KBQ_FILTER_BAR_PIPES`. */\nexport const kbqFilterBarPipesProvider = (): Provider => {\n    return {\n        provide: KBQ_FILTER_BAR_PIPES,\n        useValue: new Map<string, unknown>(defaultFilterBarPipes)\n    };\n};\n\n/** list of pipe types available out of the box */\nexport enum KbqPipeTypes {\n    ReadOnly = 'readonly',\n    Text = 'text',\n    Select = 'select',\n    TreeSelect = 'tree-select',\n    MultiSelect = 'multiselect',\n    MultiTreeSelect = 'multi-tree-select',\n    Date = 'date',\n    Datetime = 'datetime'\n}\n\nexport type KbqPipeType = `${KbqPipeTypes}` | string;\n\n/** list of pipes available out of the box. */\nexport const defaultFilterBarPipes: [string, unknown][] = [\n    [KbqPipeTypes.ReadOnly, KbqPipeReadonlyComponent],\n    [KbqPipeTypes.Text, KbqPipeTextComponent],\n    [KbqPipeTypes.Select, KbqPipeSelectComponent],\n    [KbqPipeTypes.TreeSelect, KbqPipeTreeSelectComponent],\n    [KbqPipeTypes.MultiSelect, KbqPipeMultiSelectComponent],\n    [KbqPipeTypes.MultiTreeSelect, KbqPipeMultiTreeSelectComponent],\n    [KbqPipeTypes.Date, KbqPipeDateComponent],\n    [KbqPipeTypes.Datetime, KbqPipeDatetimeComponent]\n];\n\nexport interface KbqDateTimeValue {\n    name?: string;\n    start?: string;\n    end?: string;\n}\n\nexport interface KbqSelectValue {\n    name: string;\n    value: unknown;\n}\n\nexport interface KbqFilter {\n    name: string;\n\n    pipes: KbqPipe[];\n\n    readonly: boolean;\n    disabled: boolean;\n    changed: boolean;\n    // this is business logic state (like a flag)\n    saved: boolean;\n}\n\nexport interface KbqPipe {\n    name: string;\n    id?: string | number;\n    type: KbqPipeType;\n    value: unknown | null;\n\n    search?: boolean;\n    selectAll?: boolean;\n\n    openOnAdd?: boolean;\n    openOnReset?: boolean;\n\n    /**\n     * This is special logic that unselect all items when all selected because \"all selected = nothing selected\".\n     * Default is true\n     * */\n    selectedAllEqualsSelectedNothing?: boolean;\n\n    /** @deprecated use cleanable = false and removable = false instead */\n    required?: boolean;\n    cleanable: boolean;\n    removable: boolean;\n    disabled: boolean;\n}\n\nexport interface KbqPipeData<V> extends KbqPipe {\n    value: V | null;\n}\n\nexport interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {\n    values?: unknown[];\n    valueTemplate?: TemplateRef<any> | string;\n}\n\nexport interface KbqSaveFilterError {\n    text?: string;\n    nameAlreadyExists?: boolean;\n}\n\n/** saving statuses for KbqSaveFilterEvent */\nexport enum KbqSaveFilterStatuses {\n    OnlyChanges = 'onlyChanges',\n    NewName = 'newName',\n    NewFilter = 'newFilter'\n}\n\nexport interface KbqSaveFilterEvent {\n    filter: KbqFilter;\n    filterBar: KbqFilterBar;\n    status?: KbqSaveFilterStatuses;\n}\n\n/** Flattened node */\nexport class KbqTreeSelectFlatNode {\n    name: string;\n    value: unknown;\n    level: number;\n    expandable: boolean;\n    parent?: KbqTreeSelectFlatNode;\n}\n\nexport interface KbqTreeSelectNode {\n    children: KbqTreeSelectNode[] | null;\n    name: string;\n    value: unknown;\n}\n\n/**\n * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.\n * The return value is the list of extends `KbqTreeSelectNode`.\n */\nexport function kbqBuildTree<T extends KbqTreeSelectNode>(value: any, level: number): T[] {\n    const data: T[] = [];\n\n    for (const [k, v] of Object.entries(value)) {\n        data.push({\n            name: k.toString(),\n            value: v,\n            children: typeof v === 'object' && v && !v['value'] ? kbqBuildTree(v, level + 1) : null\n        } as T);\n    }\n\n    return data;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilter } from './filter-bar.types';\n\n@Component({\n    selector: 'kbq-filter-reset',\n    imports: [KbqButtonModule],\n    template: `\n        <button kbq-button [color]=\"'theme'\" [kbqStyle]=\"'transparent'\" (click)=\"resetFilter()\">\n            <ng-content>{{ localeData }}</ng-content>\n        </button>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-filter-reset'\n    }\n})\nexport class KbqFilterReset {\n    /** KbqFilterBar instance */\n    private readonly filterBar = inject(KbqFilterBar);\n\n    /** Event that is generated whenever the user reset a filter. */\n    @Output() readonly onResetFilter = new EventEmitter<KbqFilter | null>();\n\n    /** localized data\n     * @docs-private */\n    get localeData() {\n        return this.filterBar.configuration.reset.buttonName;\n    }\n\n    protected resetFilter() {\n        this.onResetFilter.emit(this.filterBar.filter!);\n\n        this.filterBar.changes.next();\n        this.filterBar.onResetFilter.next(true);\n    }\n}\n","import { Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilters } from './filters';\n\n@Directive({\n    selector: '[kbqFilterBarButton]',\n    host: {\n        '(click)': 'saveFocusedElement()',\n        '(keydown)': 'saveFocusedElement()'\n    }\n})\nexport class KbqFilterBarButton {\n    private readonly button = inject(KbqButton);\n    /** KbqFilterBar instance */\n    private readonly filterBar = inject(KbqFilterBar);\n    /** KbqFilters instance */\n    protected readonly filters = inject(KbqFilters);\n\n    constructor() {\n        this.filterBar.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n            this.button.kbqStyle = KbqButtonStyles.Outline;\n            this.button.color = KbqComponentColors.ContrastFade;\n\n            if (this.filterBar.filter?.changed || this.filterBar.filter?.saved) {\n                this.button.kbqStyle = 'changed-filter';\n                this.button.color = KbqComponentColors.Empty;\n            }\n        });\n    }\n\n    /** @docs-private */\n    saveFocusedElement() {\n        this.filters.saveFocusedElement(this.button);\n    }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { KbqAlertModule } from '@koobiq/components/alert';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors, KbqFormsModule, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { KbqFilter, KbqSaveFilterError, KbqSaveFilterEvent, KbqSaveFilterStatuses } from './filter-bar.types';\n\n@Component({\n    selector: 'kbq-filters',\n    imports: [\n        ReactiveFormsModule,\n        KbqButtonModule,\n        KbqDropdownModule,\n        KbqDividerModule,\n        KbqIcon,\n        KbqTitleModule,\n        KbqFormFieldModule,\n        KbqInputModule,\n        NgClass,\n        KbqFilterBarButton,\n        AsyncPipe,\n        KbqTooltipTrigger,\n        KbqPopoverModule,\n        FormsModule,\n        KbqFormsModule,\n        KbqAlertModule\n    ],\n    templateUrl: 'filters.html',\n    styleUrls: ['filters.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqFilters',\n    host: {\n        class: 'kbq-filters'\n    }\n})\nexport class KbqFilters implements OnInit {\n    /** @docs-private */\n    protected readonly elementRef = inject(ElementRef);\n    /** @docs-private */\n    protected readonly destroyRef = inject(DestroyRef);\n    /** @docs-private */\n    protected readonly focusMonitor = inject(FocusMonitor);\n    /** @docs-private */\n    protected readonly placements = PopUpPlacements;\n    /** @docs-private */\n    protected readonly styles = KbqButtonStyles;\n    /** @docs-private */\n    protected readonly colors = KbqComponentColors;\n\n    /** KbqFilterBar instance */\n    protected readonly filterBar = inject(KbqFilterBar);\n\n    /** @docs-private */\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    /** @docs-private */\n    @ViewChild('mainButton') protected mainButton: KbqButton;\n    /** @docs-private */\n    @ViewChild('saveNewFilterButton') protected saveNewFilterButton: KbqButton;\n    /** @docs-private */\n    @ViewChild('filterActionsButton') protected filterActionsButton: KbqButton;\n\n    /** @docs-private */\n    @ViewChild(KbqPopoverTrigger) protected popover: KbqPopoverTrigger;\n    /** @docs-private */\n    @ViewChild(KbqDropdownTrigger) protected dropdown: KbqDropdownTrigger;\n    /** @docs-private */\n    @ViewChild('filterActionsButton') protected filterActionsDropdown: KbqDropdownTrigger;\n\n    @ViewChild('search') private search: ElementRef;\n    @ViewChild('newFilterName') private newFilterName: ElementRef;\n    @ViewChild('saveFilterButton') private saveFilterButton: KbqButton;\n\n    /** control for search filter */\n    searchControl: UntypedFormControl = new UntypedFormControl();\n    /** filtered by search filters */\n    filteredOptions: Observable<KbqFilter[]>;\n\n    /** @docs-private */\n    popoverSize = PopUpSizes.Medium;\n    /** @docs-private */\n    popoverOffset: number = 4;\n\n    /** new filter name for saving */\n    filterName: FormControl<string | null>;\n\n    /** true if saving a new filter, false if saving changes in filter */\n    saveNewFilter: boolean;\n\n    showFilterSavingError: boolean = false;\n    filterSavingErrorText: string;\n\n    isSaving: boolean = false;\n\n    @Input() filters: KbqFilter[];\n\n    /** Event that is generated whenever the user selects a filter. */\n    @Output() readonly onSelectFilter = new EventEmitter<KbqFilter>();\n    /** Event that is generated whenever the user save a filter. */\n    @Output() readonly onSave = new EventEmitter<KbqSaveFilterEvent>();\n    /** Event that is generated whenever the user change a filter. */\n    @Output() readonly onChangeFilter = new EventEmitter<KbqSaveFilterEvent>();\n    /** Event that is generated whenever the user saves a filter as new.\n     * @deprecated use onSave with status = newFilter. */\n    @Output() readonly onSaveAsNew = new EventEmitter<KbqSaveFilterEvent>();\n    /** Event that is generated whenever the user remove a filter. */\n    @Output() readonly onRemoveFilter = new EventEmitter<KbqFilter>();\n    /** Event that is generated whenever the user reset a filter changes. */\n    @Output() readonly onResetFilterChanges = new EventEmitter<KbqFilter | null>();\n\n    /** header of popover. Depends on the mode */\n    get popoverHeader(): string {\n        return this.saveNewFilter ? this.localeData.saveAsNew : this.localeData.saveChanges;\n    }\n\n    /** Component state. true if opened dropdown or popup */\n    get opened(): boolean {\n        return this.popover?.isOpen || this.dropdown?.opened;\n    }\n\n    /** Component state. true if opened dropdown or popup of filterActions */\n    get filterActionsOpened(): boolean {\n        return this.popover?.isOpen || this.filterActionsDropdown?.opened;\n    }\n\n    /** Selected filter */\n    get filter(): KbqFilter | null {\n        return this.filterBar.filter;\n    }\n\n    /** Component state. True if 'filters' input contains no elements. */\n    get isEmpty(): boolean {\n        return this.filters.length === 0;\n    }\n\n    /** localized data\n     * @docs-private */\n    get localeData() {\n        return this.filterBar.configuration.filters;\n    }\n\n    /** Current focus origin state.\n     * @docs-private */\n    get focusOrigin(): FocusOrigin {\n        return this._focusOrigin;\n    }\n\n    private _focusOrigin: FocusOrigin = null;\n\n    private focusedElementBeforeOpen: KbqButton | null;\n\n    constructor() {\n        this.filterBar.changes.subscribe(() => this.changeDetectorRef.markForCheck());\n    }\n\n    ngOnInit(): void {\n        this.filteredOptions = merge(\n            of(this.filters),\n            this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n        );\n\n        this.focusMonitor\n            .monitor(this.elementRef, true)\n            .pipe(\n                filter((origin) => !!origin),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((origin) => (this._focusOrigin = origin));\n    }\n\n    /** @docs-private */\n    focusedElementBeforeIs(button: KbqButton): boolean {\n        return this.focusedElementBeforeOpen === button;\n    }\n\n    selectFilter(filter: KbqFilter) {\n        this.filterBar.internalFilterChanges.next(structuredClone(filter));\n\n        this.onSelectFilter.next(filter);\n    }\n\n    saveChanges() {\n        if (!this.filterBar.filter) return;\n\n        this.filterBar.filter.saved = true;\n        this.filterBar.filter.changed = false;\n\n        this.filterBar.internalFilterChanges.next(this.filterBar.filter);\n\n        this.onSave.emit({\n            filter: this.filterBar.filter,\n            filterBar: this.filterBar,\n            status: KbqSaveFilterStatuses.OnlyChanges\n        });\n    }\n\n    saveAsNew(event?: Event) {\n        if (this.filterName.invalid) return;\n\n        const name = this.filterName.value || '';\n\n        // @todo default filter\n        const filter = structuredClone<KbqFilter>(this.filter as KbqFilter) || { pipes: [] };\n\n        filter.name = name;\n        filter.saved = true;\n        filter.changed = false;\n\n        this.isSaving = true;\n        this.popover.preventClose = true;\n        this.filterName.disable();\n\n        if (this.saveNewFilter) {\n            this.onSaveAsNew.emit({ filter, filterBar: this.filterBar });\n            this.onSave.emit({ filter, filterBar: this.filterBar, status: KbqSaveFilterStatuses.NewFilter });\n        } else {\n            this.onSave.emit({ filter, filterBar: this.filterBar, status: KbqSaveFilterStatuses.NewName });\n        }\n\n        event?.preventDefault();\n    }\n\n    showError(error?: KbqSaveFilterError) {\n        if (error?.nameAlreadyExists) {\n            this.filterName.setErrors({ filterNameAlreadyExist: true });\n        }\n\n        this.showFilterSavingError = true;\n\n        this.filterSavingErrorText = error?.text ?? this.filterBar.configuration.filters.errorHint;\n    }\n\n    restoreFocus() {\n        if (this.focusedElementBeforeOpen && !this.focusedElementBeforeOpen.disabled) {\n            this.focusMonitor.focusVia(this.focusedElementBeforeOpen.elementRef, this.focusOrigin);\n            this.focusedElementBeforeOpen = null;\n        }\n    }\n\n    preparePopover() {\n        this.filterName = new FormControl<string>(this.filter?.name || '', Validators.required);\n\n        this.filterName.valueChanges.pipe(distinctUntilChanged()).subscribe(() => (this.showFilterSavingError = false));\n\n        this.popover.show();\n\n        merge(...this.popover.defaultClosingActions())\n            .pipe(\n                filter(() => !this.isSaving),\n                takeUntilDestroyed(this.popover.instanceDestroyRef)\n            )\n            .subscribe(() => this.closePopover(false));\n\n        this.popover.visibleChange\n            .pipe(\n                filter((state) => !state),\n                takeUntilDestroyed(this.popover.instanceDestroyRef)\n            )\n            .subscribe(this.closePopover);\n\n        setTimeout(() => {\n            this.newFilterName.nativeElement.focus();\n            this.filterName.setErrors(null);\n        });\n    }\n\n    openSaveAsNewFilterPopover() {\n        this.saveNewFilter = true;\n\n        this.preparePopover();\n    }\n\n    openChangeFilterNamePopover() {\n        this.saveNewFilter = false;\n\n        this.preparePopover();\n    }\n\n    /** @docs-private */\n    saveFocusedElement(button?: KbqButton) {\n        this.focusedElementBeforeOpen = button || null;\n    }\n\n    closePopover = (restoreFocus: boolean = true) => {\n        this.popover.hide();\n\n        if (restoreFocus) this.restoreFocus();\n\n        setTimeout(() => this.changeDetectorRef.detectChanges());\n\n        this.showFilterSavingError = false;\n    };\n\n    /** @docs-private */\n    stopEventPropagation(event: Event) {\n        event.stopPropagation();\n    }\n\n    /** @docs-private */\n    searchKeydownHandler(event: KeyboardEvent) {\n        if (event.key === 'Escape') {\n            this.closePopover();\n        } else {\n            this.stopEventPropagation(event);\n        }\n    }\n\n    /** @docs-private */\n    onDropdownOpen() {\n        this.searchControl.setValue(null);\n        setTimeout(() => this.search.nativeElement.focus());\n    }\n\n    resetFilterChanges() {\n        this.filterBar.resetFilterChangedState();\n\n        this.onResetFilterChanges.emit(this.filter!);\n    }\n\n    removeFilter() {\n        this.onRemoveFilter.next(this.filter!);\n\n        setTimeout(() => this.focusMonitor.focusVia(this.mainButton.elementRef, this.focusOrigin), 0);\n    }\n\n    /** Hide the popup and restore focus.\n     * Use this method in the onSave, onSaveAsNew, or onChangeFilter events after the data has been successfully saved. */\n    filterSavedSuccessfully() {\n        this.isSaving = false;\n        this.popover.preventClose = false;\n\n        this.popover.hide();\n        setTimeout(() => this.restoreFocus(), 0);\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    /** Shows an error. Use this method in the onSave, onSaveAsNew, or onChangeFilter events if saving data failed. */\n    filterSavedUnsuccessfully(error?: KbqSaveFilterError) {\n        this.isSaving = false;\n        this.popover.preventClose = false;\n\n        this.showError(error);\n        this.filterName.enable();\n        setTimeout(() => this.saveFilterButton.focus());\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private getFilteredOptions(value): KbqFilter[] {\n        const searchFilter = value && value.new ? value.value : value;\n\n        return searchFilter\n            ? this.filters.filter((filter) => filter.name.toLowerCase().includes(searchFilter.toLowerCase()))\n            : this.filters;\n    }\n}\n","<button\n    #mainButton\n    kbq-button\n    kbq-title\n    kbqFilterBarButton\n    kbqPopover\n    [kbqDropdownTriggerFor]=\"savedFilters\"\n    [kbqPopoverArrow]=\"false\"\n    [kbqPopoverOffset]=\"popoverOffset\"\n    [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n    [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n    [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n    [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n    [kbqPopoverPlacement]=\"placements.BottomLeft\"\n    [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n    [kbqPopoverSize]=\"popoverSize\"\n    [kbqTrigger]=\"'manual'\"\n    [disabled]=\"isSaving\"\n    [class.kbq-active]=\"focusedElementBeforeIs(mainButton) && opened\"\n    (dropdownClosed)=\"searchControl.setValue('')\"\n    (dropdownOpened)=\"onDropdownOpen()\"\n>\n    <span #kbqTitleText class=\"kbq-filters__filter-name\">\n        @if (filter?.name) {\n            {{ filter!.name }}\n        } @else {\n            <ng-content>\n                <i kbq-icon=\"kbq-list_16\"></i>\n                {{ localeData.defaultName }}\n            </ng-content>\n        }\n    </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n    <button\n        #saveNewFilterButton\n        kbqTooltip=\"{{ localeData.saveNewFilterTooltip }}\"\n        kbq-button\n        kbqFilterBarButton\n        class=\"kbq-button_action\"\n        [class.kbq-active]=\"focusedElementBeforeIs(saveNewFilterButton) && opened\"\n        [color]=\"colors.Empty\"\n        [disabled]=\"isSaving\"\n        (click)=\"openSaveAsNewFilterPopover()\"\n    >\n        <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n    </button>\n}\n\n@if (filterBar.isSaved) {\n    <button\n        #filterActionsButton\n        kbq-button\n        kbqFilterBarButton\n        class=\"kbq-button_action\"\n        [color]=\"colors.Empty\"\n        [kbqDropdownTriggerFor]=\"filterActions\"\n        [disabled]=\"isSaving\"\n        [class.kbq-active]=\"focusedElementBeforeIs(filterActionsButton) && filterActionsOpened\"\n        [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n    >\n        <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n    </button>\n\n    <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n    <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n    <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n        <kbq-form-field kbqFormFieldWithoutBorders>\n            <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n            <input\n                #search\n                placeholder=\"{{ localeData.searchPlaceholder }}\"\n                autocomplete=\"off\"\n                kbqInput\n                [formControl]=\"searchControl\"\n                (click)=\"stopEventPropagation($event)\"\n                (keydown)=\"searchKeydownHandler($event)\"\n            />\n            <kbq-cleaner />\n        </kbq-form-field>\n\n        <kbq-divider />\n\n        @for (filter of filteredOptions | async; track filter) {\n            <button\n                kbq-dropdown-item\n                kbq-title\n                [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n                (click)=\"selectFilter(filter)\"\n            >\n                {{ filter.name }}\n            </button>\n        } @empty {\n            <button kbq-dropdown-item [disabled]=\"true\">\n                {{ localeData.searchEmptyResult }}\n            </button>\n        }\n\n        <kbq-divider />\n    </div>\n\n    <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n        <i kbq-icon=\"kbq-plus_16\"></i>\n        {{ localeData.saveAsNewFilter }}\n    </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n    @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n        <button\n            kbq-dropdown-item\n            [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n            (click)=\"saveChanges()\"\n        >\n            <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n            {{ localeData.saveChanges }}\n            @if (filterBar.isSavedAndChanged) {\n                <i kbq-icon=\"kbq-circle-xs_16\" class=\"kbq-icon-button kbq-warning layout-margin-left-xs\"></i>\n            }\n        </button>\n    }\n    <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n        <i kbq-icon=\"kbq-plus_16\"></i>\n        {{ localeData.saveAsNew }}\n    </button>\n\n    @if (!filterBar.isReadOnly) {\n        <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n            <i kbq-icon=\"kbq-pencil_16\"></i>\n            {{ localeData.change }}\n        </button>\n    }\n\n    @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n        <kbq-divider />\n    }\n\n    @if (filterBar.isSavedAndChanged) {\n        <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n            <i kbq-icon=\"kbq-circle-xmark_16\"></i>\n            {{ localeData.resetChanges }}\n        </button>\n    }\n    @if (!filterBar.isReadOnly) {\n        <button kbq-dropdown-item (click)=\"removeFilter()\">\n            <i kbq-icon=\"kbq-trash_16\"></i>\n            {{ localeData.remove }}\n        </button>\n    }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n    @if (showFilterSavingError) {\n        <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n            {{ filterSavingErrorText }}\n        </kbq-alert>\n    }\n    <div class=\"kbq-form-vertical\">\n        <div class=\"kbq-form__row\">\n            <label class=\"kbq-form__label\">{{ localeData.name }}</label>\n\n            <kbq-form-field class=\"kbq-form__control\">\n                <input\n                    #newFilterName\n                    kbqInput\n                    type=\"text\"\n                    [formControl]=\"filterName\"\n                    (keydown.enter)=\"saveAsNew($event)\"\n                />\n\n                @if (filterName.hasError('filterNameAlreadyExist')) {\n                    <kbq-error>{{ localeData.error }}</kbq-error>\n                }\n            </kbq-form-field>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n    <button\n        #saveFilterButton\n        kbq-button\n        class=\"layout-margin-right-l\"\n        [class.kbq-progress]=\"isSaving\"\n        [disabled]=\"isSaving\"\n        [color]=\"'contrast'\"\n        [kbqStyle]=\"'filled'\"\n        (click)=\"saveAsNew()\"\n    >\n        {{ localeData.saveButton }}\n    </button>\n    <button\n        kbq-button\n        [color]=\"'contrast-fade'\"\n        [kbqStyle]=\"'filled'\"\n        [disabled]=\"isSaving\"\n        (click)=\"closePopover(true)\"\n    >\n        {{ localeData.cancelButton }}\n    </button>\n</ng-template>\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport {\n    KBQ_FILTER_BAR_CONFIGURATION,\n    KBQ_FILTER_BAR_DEFAULT_CONFIGURATION,\n    KbqFilter,\n    KbqPipe,\n    KbqPipeTemplate\n} from './filter-bar.types';\nimport { KbqFilterReset } from './filter-reset';\nimport { KbqFilters } from './filters';\n\n@Component({\n    selector: 'kbq-filter-bar, [kbq-filter-bar]',\n    imports: [KbqDividerModule],\n    template: `\n        <div class=\"kbq-filter-bar__left\">\n            <ng-content select=\"kbq-filters\" />\n\n            <ng-content />\n\n            <ng-content select=\"kbq-pipe-add\" />\n\n            <ng-content select=\"kbq-filter-reset\" />\n        </div>\n\n        <div class=\"kbq-filter-bar__right\">\n            <ng-content select=\"kbq-filter-search, [kbq-filter-search], kbq-search-expandable\" />\n\n            <ng-content select=\"kbq-filter-refresher, [kbq-filter-refresher]\" />\n        </div>\n    `,\n    styleUrls: ['filter-bar.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-filter-bar'\n    }\n})\nexport class KbqFilterBar {\n    /** @docs-private */\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n    /** @docs-private */\n    protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n    readonly externalConfiguration = inject(KBQ_FILTER_BAR_CONFIGURATION, { optional: true });\n\n    configuration;\n\n    /** @docs-private */\n    @ContentChild(KbqFilters) filters: KbqFilters;\n    /** @docs-private */\n    @ContentChild(KbqFilterReset) filterReset: KbqFilterReset;\n\n    /**\n     * This is special logic that unselect all items when all selected because \"all selected = nothing selected\".\n     * Default is true\n     * */\n    @Input({ transform: booleanAttribute }) selectedAllEqualsSelectedNothing: boolean = true;\n\n    /** Filter that is currently selected */\n    @Input()\n    get filter(): KbqFilter | null {\n        return this._filter;\n    }\n\n    set filter(value: KbqFilter | null) {\n        if (this._filter === value) return;\n\n        this._filter = value;\n\n        this.changes.next();\n    }\n\n    private _filter: KbqFilter | null;\n\n    /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */\n    @Input()\n    get pipeTemplates(): KbqPipeTemplate[] {\n        return this._templates;\n    }\n\n    set pipeTemplates(value: KbqPipeTemplate[]) {\n        this._templates = value;\n\n        this.internalTemplatesChanges.next(this._templates);\n    }\n\n    private _templates: KbqPipeTemplate[] = [];\n    /**\n     * Event that emits whenever the raw value of the filter changes. This is here primarily\n     * to facilitate the two-way binding for the `filter` input.\n     * @docs-private\n     */\n    @Output() readonly filterChange = new EventEmitter<KbqFilter | null>();\n    /** Event that emits whenever the value of the pipe changes. */\n    @Output() readonly onChangePipe = new EventEmitter<KbqPipe>();\n    /** Event that emits whenever the pipe deleted. */\n    @Output() readonly onRemovePipe = new EventEmitter<KbqPipe>();\n    /** Event that emits whenever the pipe cleared. */\n    @Output() readonly onClearPipe = new EventEmitter<KbqPipe>();\n    /** Event that emits whenever the select or multiselect pipe closed. */\n    @Output() readonly onClosePipe = new EventEmitter<KbqPipe>();\n\n    /** Whether the current filter is saved and changed */\n    get isSavedAndChanged(): boolean {\n        return this.isSaved && this.isChanged;\n    }\n\n    /** Whether the current filter is saved */\n    get isSaved(): boolean {\n        return !!this.filter?.saved;\n    }\n\n    /** Whether the current filter is changed */\n    get isChanged(): boolean {\n        return !!this.filter?.changed;\n    }\n\n    /** Whether the current filter is readonly */\n    get isReadOnly(): boolean {\n        return !!this.filter?.readonly;\n    }\n\n    /** Whether the current filter is disabled */\n    get isDisabled(): boolean {\n        return !!this.filter?.disabled;\n    }\n\n    private savedFilter: KbqFilter | null = null;\n\n    /** Event that emits whenever the filter is reset. */\n    readonly onResetFilter = new BehaviorSubject<boolean>(false);\n    /** all changes */\n    readonly changes = new BehaviorSubject<void>(undefined);\n    /** internal filter changes */\n    readonly internalFilterChanges = new BehaviorSubject<KbqFilter | null>(null);\n    /** internal changes in templates */\n    readonly internalTemplatesChanges = new BehaviorSubject<KbqPipeTemplate[] | null>(null);\n    /** this subject need for opens pipe after adding\n     * @docs-private */\n    readonly openPipe = new BehaviorSubject<string | number | null>(null);\n\n    constructor() {\n        this.internalFilterChanges.pipe(takeUntilDestroyed()).subscribe((filter) => {\n            this._filter = filter;\n\n            this.filterChange.emit(this.filter);\n        });\n\n        this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n        if (!this.localeService) {\n            this.initDefaultParams();\n        }\n\n        merge(this.onChangePipe, this.onRemovePipe)\n            .pipe(takeUntilDestroyed())\n            .subscribe(() => {\n                if (this.filter) {\n                    this.filter.changed = true;\n                    this.filterChange.emit(this.filter);\n                }\n            });\n\n        merge(this.filterChange, this.onChangePipe, this.onRemovePipe, this.internalFilterChanges)\n            .pipe(takeUntilDestroyed())\n            .subscribe(() => {\n                this.changes.next();\n                this.changeDetectorRef.markForCheck();\n            });\n    }\n\n    /** Remove pipe from current filter and emit event */\n    removePipe(pipe: KbqPipe) {\n        this.filter?.pipes.splice(this.filter?.pipes.indexOf(pipe), 1);\n\n        this.onRemovePipe.next(pipe);\n        this.changes.next();\n    }\n\n    /** Save current state of filter */\n    saveFilterState(filter?: KbqFilter) {\n        this.savedFilter = structuredClone(filter ?? this.filter);\n    }\n\n    /** Restore previously saved filter state */\n    restoreFilterState(filter?: KbqFilter) {\n        this.filter = structuredClone(filter ?? this.savedFilter);\n    }\n\n    /** Set the filter state \"changed\" to false */\n    resetFilterChangedState() {\n        this.filter!.changed = false;\n    }\n\n    private updateLocaleParams = () => {\n        this.configuration = this.externalConfiguration || this.localeService?.getParams('filterBar');\n\n        this.changeDetectorRef.markForCheck();\n    };\n\n    private initDefaultParams() {\n        this.configuration = KBQ_FILTER_BAR_DEFAULT_CONFIGURATION;\n    }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\n\n@Component({\n    selector: 'kbq-filter-refresher, [kbq-filter-refresher]',\n    imports: [\n        KbqButtonModule,\n        KbqIconModule\n    ],\n    template: `\n        <button kbq-button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n            <i kbq-icon=\"kbq-arrow-rotate-right_16\"></i>\n        </button>\n        <button kbq-button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n            <i kbq-icon=\"kbq-chevron-down_16\"></i>\n        </button>\n    `,\n    styleUrls: ['filter-refresher.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-filter-refresher'\n    }\n})\nexport class KbqFilterBarRefresher {}\n","import {\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    EventEmitter,\n    inject,\n    input,\n    numberAttribute,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\n\nexport const defaultOnSearchTimeout = 0;\n\n/** @deprecated Will be removed in next major release. Use `kbq-search-expandable` instead. */\n@Component({\n    selector: 'kbq-filter-search, [kbq-filter-search]',\n    imports: [\n        KbqDividerModule,\n        KbqButtonModule,\n        KbqToolTipModule,\n        KbqIconModule,\n        KbqFormFieldModule,\n        KbqInputModule,\n        ReactiveFormsModule\n    ],\n    template: `\n        <button\n            kbq-button\n            [kbqTooltip]=\"resolvedTooltip\"\n            [class.kbq-filter_hidden]=\"isSearchActive\"\n            [color]=\"'contrast'\"\n            [kbqStyle]=\"'transparent'\"\n            (click)=\"openSearch()\"\n        >\n            <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n        </button>\n\n        <kbq-form-field [class.kbq-filter_hidden]=\"!isSearchActive\">\n            <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n            <input\n                autocomplete=\"off\"\n                kbqInput\n                [placeholder]=\"resolvedPlaceholder\"\n                [formControl]=\"searchControl\"\n                (blur)=\"onBlur()\"\n                (keydown.escape)=\"onEscape()\"\n                (keydown.enter)=\"onEnter()\"\n            />\n\n            <kbq-cleaner (click)=\"onClear()\" />\n        </kbq-form-field>\n    `,\n    styleUrl: 'filter-search.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-filter-search'\n    }\n})\nexport class KbqFilterBarSearch implements AfterViewInit {\n    /** KbqFilterBar instance */\n    private readonly filterBar = inject(KbqFilterBar);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly destroyRef = inject(DestroyRef);\n\n    @ViewChild(KbqInput) private input: KbqInput;\n    @ViewChild(KbqButton) private button: KbqButton;\n    @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n    /** control for search */\n    searchControl: UntypedFormControl = new UntypedFormControl();\n\n    /** Whether the search active */\n    isSearchActive: boolean = false;\n\n    /** localized data\n     * @docs-private */\n    get localeData() {\n        return this.filterBar.configuration.search;\n    }\n\n    /**\n    /** Timeout in milliseconds for emit event. The default value is taken from defaultOnSearchTimeout\n     * @default 0\n     */\n    readonly onSearchTimeout = input(defaultOnSearchTimeout, { transform: numberAttribute });\n\n    /** Emit event by enter or not. Default is false */\n    readonly emitValueByEnter = input(false, { transform: booleanAttribute });\n\n    /** Value of the field after initialization */\n    readonly initialValue = input();\n\n    /** Custom tooltip text. When set, overrides localeData.tooltip */\n    readonly customTooltip = input<string>('', { alias: 'tooltip' });\n\n    /** Custom placeholder text. When set, overrides localeData.placeholder */\n    readonly customPlaceholder = input<string>('', { alias: 'placeholder' });\n\n    /** @docs-private */\n    get resolvedTooltip(): string {\n        return this.customTooltip() || this.localeData.tooltip;\n    }\n\n    /** @docs-private */\n    get resolvedPlaceholder(): string {\n        return this.customPlaceholder() || this.localeData.placeholder;\n    }\n\n    /** event that is generated whenever a user performs a search. */\n    @Output() readonly onSearch = new EventEmitter<string>();\n\n    ngAfterViewInit(): void {\n        this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onReset);\n\n        if (this.initialValue()) {\n            this.searchControl.setValue(this.initialValue(), { emitEvent: false });\n        }\n\n        this.searchControl.valueChanges\n            .pipe(\n                distinctUntilChanged(),\n                filter(() => !this.emitValueByEnter()),\n                debounceTime(this.onSearchTimeout()),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(this.onSearch);\n    }\n\n    openSearch(): void {\n        this.isSearchActive = true;\n\n        setTimeout(() => this.input.focus());\n    }\n\n    /** @docs-private */\n    onBlur(): void {\n        if (this.searchControl.value) return;\n\n        this.onEscape();\n    }\n\n    /** @docs-private */\n    onEscape(): void {\n        this.isSearchActive = false;\n\n        this.button.focusViaKeyboard();\n\n        this.tooltip.hide();\n    }\n\n    /** @docs-private */\n    onEnter(): void {\n        if (this.emitValueByEnter()) {\n            this.onSearch.emit(this.searchControl.value);\n        }\n    }\n\n    /** @docs-private */\n    onClear() {\n        this.isSearchActive = false;\n\n        setTimeout(() => {\n            this.button.focus();\n\n            this.tooltip.hide();\n        });\n    }\n\n    /** @docs-private */\n    onReset = () => {\n        this.changeDetectorRef.markForCheck();\n    };\n}\n","import { NgClass } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOption, KbqOptionModule } from '@koobiq/components/core';\nimport { KbqDropdownModule } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilter, KbqPipe, KbqPipeTemplate } from './filter-bar.types';\nimport { getId } from './pipes/base-pipe';\n\n@Component({\n    selector: 'kbq-pipe-add',\n    imports: [\n        KbqDropdownModule,\n        KbqToolTipModule,\n        KbqButtonModule,\n        KbqIcon,\n        KbqOptionModule,\n        KbqSelectModule,\n        NgClass\n    ],\n    template: `\n        <kbq-select #select [tabIndex]=\"-1\" [multiple]=\"true\" [value]=\"addedPipes\" [compareWith]=\"compareWith\">\n            <button\n                kbqTooltip=\"{{ filterBar.configuration.add.tooltip }}\"\n                kbq-button\n                kbq-select-matcher\n                [color]=\"'contrast-fade'\"\n                [kbqStyle]=\"'outline'\"\n                [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n            >\n                <i kbq-icon=\"kbq-plus_16\"></i>\n            </button>\n\n            @for (template of filterBar.pipeTemplates; track template) {\n                <kbq-option\n                    #option\n                    [userSelect]=\"true\"\n                    [value]=\"template\"\n                    [showCheckbox]=\"false\"\n                    (click)=\"addPipeFromTemplate(option)\"\n                >\n                    {{ template.name }}\n                </kbq-option>\n            }\n        </kbq-select>\n    `,\n    styleUrl: 'pipe-add.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-pipe-add'\n    }\n})\nexport class KbqPipeAdd {\n    /** KbqFilterBar instance */\n    protected readonly filterBar = inject(KbqFilterBar);\n\n    /** @docs-private */\n    @ViewChild(KbqSelect) select: KbqSelect;\n\n    /** Event that is generated after add pipe. */\n    @Output() readonly onAddPipe = new EventEmitter<KbqPipeTemplate>();\n\n    /** template of filter */\n    @Input() filterTemplate: KbqFilter = {\n        name: '',\n        pipes: [],\n\n        readonly: false,\n        disabled: false,\n        changed: false,\n        saved: false\n    };\n\n    /** already added pipes. Used to open an already added pipe. */\n    addedPipes: (string | number)[] = [];\n\n    constructor() {\n        this.filterBar.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n            if (this.filterBar?.filter) {\n                this.addedPipes = this.filterBar.filter.pipes.map((pipe: KbqPipe) => getId(pipe));\n            }\n        });\n    }\n\n    addPipeFromTemplate(option: KbqOption) {\n        if (option.selected) {\n            this.filterBar.openPipe.next(getId(option.value));\n        } else {\n            option.select();\n\n            if (!this.filterBar.filter) {\n                this.filterBar.filter = structuredClone(this.filterTemplate);\n            }\n\n            this.filterBar.filter.changed = true;\n            this.filterBar.filter.pipes.push(\n                Object.assign({}, option.value, { values: undefined, valueTemplate: undefined, openOnAdd: true })\n            );\n\n            this.onAddPipe.next(option.value);\n            this.filterBar.filterChange.emit(this.filterBar.filter);\n        }\n\n        this.select.close();\n    }\n\n    /**\n     * Function to compare the option values with the selected values. The first argument\n     * is a value from an option. The second is a value from the selection. A boolean\n     * should be returned.\n     */\n    compareWith(o1: KbqPipe, o2: string): boolean {\n        return getId(o1) === o2;\n    }\n}\n","import { AfterContentInit, Directive, inject, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { KBQ_FILTER_BAR_PIPES, KbqPipe } from './filter-bar.types';\nimport { KBQ_PIPE_DATA } from './pipes/base-pipe';\n\n@Directive({\n    selector: '[kbqPipe]'\n})\nexport class KbqPipeDirective<T extends KbqPipe> implements AfterContentInit {\n    private injector = inject(Injector);\n    private pipes = inject(KBQ_FILTER_BAR_PIPES);\n    private viewContainerRef = inject(ViewContainerRef);\n\n    @Input({ alias: 'kbqPipe' }) pipe: T;\n\n    ngAfterContentInit(): void {\n        const component = this.pipes.get(this.pipe.type);\n\n        if (!component) {\n            throw new Error(`Can't find component for this type: ${this.pipe.type}`);\n        }\n\n        this.viewContainerRef.createComponent(component, { injector: this.getInjector(this.pipe) });\n    }\n\n    private getInjector(pipe: T): Injector {\n        return Injector.create({\n            providers: [{ provide: KBQ_PIPE_DATA, useValue: pipe }],\n            parent: this.injector\n        });\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { kbqFilterBarPipesProvider } from './filter-bar.types';\nimport { KbqFilterBarRefresher } from './filter-refresher';\nimport { KbqFilterReset } from './filter-reset';\nimport { KbqFilterBarSearch } from './filter-search';\nimport { KbqFilters } from './filters';\nimport { KbqPipeAdd } from './pipe-add';\nimport { KbqPipeDirective } from './pipe.directive';\nimport { KbqPipeButton } from './pipes/pipe-button';\nimport { KbqPipeState } from './pipes/pipe-state';\nimport { KbqPipeTitleDirective } from './pipes/pipe-title';\n\nconst COMPONENTS = [\n    KbqFilterBar,\n    KbqFilters,\n    KbqFilterBarRefresher,\n    KbqFilterBarButton,\n    KbqFilterReset,\n    KbqPipeAdd,\n    KbqPipeDirective,\n    KbqPipeButton,\n    KbqFilterBarSearch,\n    KbqPipeTitleDirective,\n    KbqPipeState\n];\n\n@NgModule({\n    imports: COMPONENTS,\n    exports: COMPONENTS,\n    providers: [kbqFilterBarPipesProvider()]\n})\nexport class KbqFilterBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i6","this","i8","i4","i7","i5","i3","distinctUntilChanged","debounceTime"],"mappings":"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"}