{"version":3,"file":"koobiq-components-list.mjs","sources":["../../../packages/components/list/list-selection.component.ts","../../../packages/components/list/list-option.html","../../../packages/components/list/list.component.ts","../../../packages/components/list/list-item.html","../../../packages/components/list/list.module.ts","../../../packages/components/list/koobiq-components-list.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    Attribute,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    inject,\n    Inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusKeyManager, IFocusableOption } from '@koobiq/cdk/a11y';\nimport {\n    DOWN_ARROW,\n    END,\n    ENTER,\n    hasModifierKey,\n    HOME,\n    isCopy,\n    isSelectAll,\n    isVerticalMovement,\n    LEFT_ARROW,\n    PAGE_DOWN,\n    PAGE_UP,\n    RIGHT_ARROW,\n    SPACE,\n    TAB,\n    UP_ARROW\n} from '@koobiq/cdk/keycodes';\nimport {\n    KBQ_OPTION_ACTION_PARENT,\n    KBQ_TITLE_TEXT_REF,\n    KbqActionContainer,\n    KbqOptgroup,\n    KbqOptionActionComponent,\n    KbqPseudoCheckbox,\n    KbqTitleTextRef,\n    MultipleMode\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { startWith, take } from 'rxjs/operators';\n\nexport interface KbqOptionEvent {\n    option: KbqListOption;\n}\nexport const KBQ_SELECTION_LIST_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => KbqListSelection),\n    multi: true\n};\n\nexport class KbqListSelectionChange {\n    constructor(\n        public source: KbqListSelection,\n        public option: KbqListOption\n    ) {}\n}\n\nexport class KbqListSelectAllEvent<T> {\n    constructor(\n        public source: KbqListSelection,\n        public options: T[]\n    ) {}\n}\n\n/**\n * Event class that occurs when copying an item from the KbqListSelection.\n * Used to pass data about the copied item and copy context.\n *\n * @param source - instance of KbqListSelection\n * @param option - instance of KbqListOption\n * @param event - original keyboard event (optional) that triggered the copy\n */\nexport class KbqListCopyEvent<T> {\n    constructor(\n        public source: KbqListSelection,\n        public option: T,\n        public event?: KeyboardEvent\n    ) {}\n}\n\n@Component({\n    selector: 'kbq-list-selection',\n    template: `\n        <ng-content />\n    `,\n    styleUrls: ['./list.scss', 'list-tokens.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqListSelection',\n    host: {\n        class: 'kbq-list-selection',\n        '[attr.tabindex]': 'tabIndex',\n        '[attr.disabled]': 'disabled || null',\n        '(keydown)': 'onKeyDown($event)',\n        '(focus)': 'focus()',\n        '(blur)': 'blur()',\n        '(window:resize)': 'updateScrollSize()'\n    },\n    providers: [KBQ_SELECTION_LIST_VALUE_ACCESSOR],\n    preserveWhitespaces: false\n})\nexport class KbqListSelection implements AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n    protected readonly focusMonitor = inject(FocusMonitor);\n\n    keyManager: FocusKeyManager<KbqListOption>;\n\n    @ContentChildren(forwardRef(() => KbqListOption), { descendants: true }) options: QueryList<KbqListOption>;\n\n    @Output() readonly onSelectAll = new EventEmitter<KbqListSelectAllEvent<KbqListOption>>();\n\n    @Output() readonly onCopy = new EventEmitter<KbqListCopyEvent<KbqListOption>>();\n\n    @Input()\n    get autoSelect(): boolean {\n        return this._autoSelect;\n    }\n\n    set autoSelect(value: boolean) {\n        this._autoSelect = coerceBooleanProperty(value);\n    }\n\n    private _autoSelect: boolean = true;\n\n    @Input()\n    get noUnselectLast(): boolean {\n        return this._noUnselectLast;\n    }\n\n    set noUnselectLast(value: boolean) {\n        this._noUnselectLast = coerceBooleanProperty(value);\n    }\n\n    private _noUnselectLast: boolean = true;\n\n    multipleMode: MultipleMode | null;\n\n    get multiple(): boolean {\n        return !!this.multipleMode;\n    }\n\n    @Input({ transform: booleanAttribute }) horizontal: boolean = false;\n\n    @Input()\n    get tabIndex(): any {\n        return this.disabled ? -1 : this._tabIndex;\n    }\n\n    set tabIndex(value: any) {\n        this.userTabIndex = value;\n        this._tabIndex = value;\n    }\n\n    private _tabIndex = 0;\n\n    @Input({ transform: booleanAttribute })\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        if (value !== this.disabled) {\n            this._disabled = value;\n        }\n    }\n\n    private _disabled: boolean = false;\n\n    /**\n     * Function used for comparing an option against the selected value when determining which\n     * options should appear as selected. The first argument is the value of an options. The second\n     * one is a value from the selected value. A boolean must be returned.\n     */\n    @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\n\n    userTabIndex: number | null = null;\n\n    get showCheckbox(): boolean {\n        return this.multipleMode === MultipleMode.CHECKBOX;\n    }\n\n    // Emits a change event whenever the selected state of an option changes.\n    @Output() readonly selectionChange: EventEmitter<KbqListSelectionChange> =\n        new EventEmitter<KbqListSelectionChange>();\n\n    selectionModel: SelectionModel<KbqListOption>;\n\n    get optionFocusChanges(): Observable<KbqOptionEvent> {\n        return merge(...this.options.map((option) => option.onFocus));\n    }\n\n    get optionBlurChanges(): Observable<KbqOptionEvent> {\n        return merge(...this.options.map((option) => option.onBlur));\n    }\n\n    _value: string[] | null;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    private optionFocusSubscription: Subscription | null;\n\n    private optionBlurSubscription: Subscription | null;\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private changeDetectorRef: ChangeDetectorRef,\n        @Attribute('multiple') multiple: MultipleMode,\n        @Optional() private clipboard: Clipboard\n    ) {\n        if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) {\n            this.multipleMode = multiple;\n        } else if (multiple !== null) {\n            this.multipleMode = MultipleMode.CHECKBOX;\n        }\n\n        if (this.multipleMode === MultipleMode.CHECKBOX) {\n            this.autoSelect = false;\n            this.noUnselectLast = false;\n        }\n\n        this.selectionModel = new SelectionModel<KbqListOption>(this.multiple);\n    }\n\n    ngAfterContentInit(): void {\n        this.keyManager = new FocusKeyManager<KbqListOption>(this.options)\n            .withTypeAhead()\n            .withVerticalOrientation(!this.horizontal)\n            .withHorizontalOrientation(this.horizontal ? 'ltr' : null);\n\n        this.keyManager.tabOut.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this._tabIndex = -1;\n\n            setTimeout(() => {\n                this._tabIndex = this.userTabIndex || 0;\n                this.changeDetectorRef.markForCheck();\n            });\n        });\n\n        if (this._value) {\n            this.setOptionsFromValues(this._value);\n        }\n\n        this.selectionModel.changed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n            for (const item of event.added) {\n                item.selected = true;\n            }\n\n            for (const item of event.removed) {\n                item.selected = false;\n            }\n        });\n\n        this.options.changes.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.resetOptions();\n\n            this.updateTabIndex();\n            this.initializeSelection();\n        });\n\n        this.updateScrollSize();\n    }\n\n    ngAfterViewInit(): void {\n        this.focusMonitor.monitor(this.elementRef, true);\n    }\n\n    ngOnDestroy(): void {\n        this.focusMonitor.stopMonitoring(this.elementRef);\n    }\n\n    focus(): void {\n        if (this.options.length === 0) {\n            return;\n        }\n\n        if (this.selectionModel.selected.length) {\n            this.options.find((option) => option.selected)?.focus();\n        } else {\n            this.keyManager.setFirstItemActive();\n        }\n    }\n\n    blur() {\n        if (!this.hasFocusedOption()) {\n            this.keyManager.setActiveItem(-1);\n        }\n\n        this.onTouched();\n        this.changeDetectorRef.markForCheck();\n    }\n\n    selectAll() {\n        this.options.forEach((option) => option.setSelected(true));\n\n        this.reportValueChange();\n    }\n\n    deselectAll() {\n        this.options.forEach((option) => option.setSelected(false));\n\n        this.reportValueChange();\n    }\n\n    updateScrollSize(): void {\n        if (this.horizontal || !this.options.first) {\n            return;\n        }\n\n        this.keyManager.withScrollSize(Math.floor(this.getHeight() / this.options.first.getHeight()));\n    }\n\n    setSelectedOptionsByClick(option: KbqListOption, shiftKey: boolean, ctrlKey: boolean): void {\n        if (shiftKey && this.multiple) {\n            this.selectActiveOptions();\n        } else if (ctrlKey) {\n            if (!this.canDeselectLast(option)) {\n                return;\n            }\n\n            this.selectionModel.toggle(option);\n        } else if (this.autoSelect) {\n            this.selectionModel.clear();\n            this.selectionModel.toggle(option);\n        } else {\n            this.selectionModel.toggle(option);\n        }\n\n        this.emitChangeEvent(option);\n        this.reportValueChange();\n    }\n\n    setSelectedOptionsByKey(option: KbqListOption, shiftKey: boolean, ctrlKey: boolean): void {\n        if (shiftKey && this.multiple) {\n            this.selectActiveOptions();\n        } else if (ctrlKey) {\n            if (!this.canDeselectLast(option)) {\n                return;\n            }\n        } else if (this.autoSelect) {\n            this.options.forEach((item) => item.setSelected(false));\n            option.setSelected(true);\n        }\n\n        if (shiftKey || ctrlKey || this.autoSelect) {\n            this.emitChangeEvent(option);\n            this.reportValueChange();\n        }\n    }\n\n    selectActiveOptions(): void {\n        const options = this.options.toArray();\n        let fromIndex = this.keyManager.previousActiveItemIndex;\n        let toIndex = (this.keyManager.previousActiveItemIndex = this.keyManager.activeItemIndex);\n        const selectedOptionState = options[fromIndex].selected;\n\n        if (toIndex === fromIndex) {\n            return;\n        }\n\n        if (fromIndex > toIndex) {\n            [fromIndex, toIndex] = [toIndex, fromIndex];\n        }\n\n        options\n            .slice(fromIndex, toIndex + 1)\n            .filter((item) => !item.disabled)\n            .forEach((renderedOption) => {\n                if (!selectedOptionState && this.noUnselectLast && this.selectionModel.selected.length === 1) {\n                    return;\n                }\n\n                renderedOption.setSelected(selectedOptionState);\n            });\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    writeValue(values: string[]): void {\n        this._value = values;\n\n        if (this.options) {\n            this.setOptionsFromValues(Array.isArray(values) ? values : [values]);\n        }\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    // Implemented as part of ControlValueAccessor.\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    // Implemented as a part of ControlValueAccessor.\n    setDisabledState(isDisabled: boolean): void {\n        if (this.options) {\n            this.options.forEach((option) => (option.disabled = isDisabled));\n        }\n    }\n\n    getSelectedOptionValues(): string[] {\n        return this.options.filter((option) => option.selected).map((option) => option.value);\n    }\n\n    // Toggles the selected state of the currently focused option.\n    toggleFocusedOption(): void {\n        const focusedIndex = this.keyManager.activeItemIndex;\n\n        if (focusedIndex != null && this.isValidIndex(focusedIndex)) {\n            const focusedOption: KbqListOption = this.options.toArray()[focusedIndex];\n\n            if (focusedOption && this.canDeselectLast(focusedOption)) {\n                focusedOption.toggle();\n\n                // Emit a change event because the focused option changed its state through user interaction.\n                this.emitChangeEvent(focusedOption);\n                this.reportValueChange();\n            }\n        }\n    }\n\n    canDeselectLast(listOption: KbqListOption): boolean {\n        return !(this.noUnselectLast && this.selectionModel.selected.length === 1 && listOption.selected);\n    }\n\n    /** @docs-private */\n    getHeight(): number {\n        const element = this.elementRef.nativeElement;\n\n        // For SSR compatibility\n        if (typeof element.getClientRects !== 'function') return 0;\n\n        return element.getClientRects()[0]?.height ?? 0;\n    }\n\n    // View to model callback that should be called if the list or its options lost focus.\n    onTouched: () => void = () => {};\n\n    // Removes an option from the selection list and updates the active item.\n    removeOptionFromList(option: KbqListOption) {\n        if (!option.hasFocus) {\n            return;\n        }\n\n        const optionIndex = this.getOptionIndex(option);\n\n        // Check whether the option is the last item\n        if (optionIndex === this.options.length - 1) {\n            this.keyManager.setPreviousItemActive();\n        } else {\n            this.keyManager.setNextItemActive();\n        }\n    }\n\n    /** Handles keydown events on the list. */\n    onKeyDown(event: KeyboardEvent): void {\n        const keyCode = event.keyCode;\n\n        if ([SPACE, ENTER, LEFT_ARROW, RIGHT_ARROW].includes(keyCode) || isVerticalMovement(event)) {\n            event.preventDefault();\n        }\n\n        if (this.multiple && isSelectAll(event)) {\n            this.selectAllOptions();\n            event.preventDefault();\n\n            return;\n        } else if (isCopy(event)) {\n            this.copyActiveOption(event);\n\n            return;\n        } else if ([SPACE, ENTER].includes(keyCode)) {\n            this.toggleFocusedOption();\n\n            return;\n        } else if (keyCode === TAB) {\n            this.keyManager.tabOut.next();\n\n            return;\n        } else if (keyCode === DOWN_ARROW) {\n            this.keyManager.setNextItemActive();\n        } else if (keyCode === UP_ARROW) {\n            this.keyManager.setPreviousItemActive();\n        } else if (keyCode === HOME) {\n            this.keyManager.setFirstItemActive();\n        } else if (keyCode === END) {\n            this.keyManager.setLastItemActive();\n        } else if (keyCode === PAGE_UP) {\n            this.keyManager.setPreviousPageItemActive();\n        } else if (keyCode === PAGE_DOWN) {\n            this.keyManager.setNextPageItemActive();\n        }\n\n        if (this.keyManager.activeItem && isVerticalMovement(event)) {\n            this.setSelectedOptionsByKey(\n                this.keyManager.activeItem as KbqListOption,\n                hasModifierKey(event, 'shiftKey'),\n                // ctrlKey is for Windows, metaKey is for MacOS\n                hasModifierKey(event, 'ctrlKey', 'metaKey')\n            );\n        }\n    }\n\n    // Reports a value change to the ControlValueAccessor\n    reportValueChange() {\n        if (this.options) {\n            const value = this.getSelectedOptionValues();\n\n            this.onChange(value);\n            this._value = value;\n        }\n    }\n\n    // Emits a change event if the selected state of an option changed.\n    emitChangeEvent(option: KbqListOption) {\n        this.selectionChange.emit(new KbqListSelectionChange(this, option));\n    }\n\n    private initializeSelection(): void {\n        // Defer setting the value in order to avoid the \"Expression\n        // has changed after it was checked\" errors from Angular.\n        Promise.resolve().then(() => {\n            if (this._value) {\n                this.setOptionsFromValues(Array.isArray(this._value) ? this._value : [this._value]);\n            }\n        });\n    }\n\n    protected updateTabIndex(): void {\n        // Check to see if we need to update our tab index\n        this._tabIndex = this.userTabIndex || (this.options.length === 0 ? -1 : 0);\n    }\n\n    private onCopyDefaultHandler(): void {\n        this.clipboard?.copy(this.keyManager.activeItem!.value);\n    }\n\n    private resetOptions() {\n        this.dropSubscriptions();\n        this.listenToOptionsFocus();\n    }\n\n    private dropSubscriptions() {\n        if (this.optionFocusSubscription) {\n            this.optionFocusSubscription.unsubscribe();\n            this.optionFocusSubscription = null;\n        }\n\n        if (this.optionBlurSubscription) {\n            this.optionBlurSubscription.unsubscribe();\n            this.optionBlurSubscription = null;\n        }\n    }\n\n    private listenToOptionsFocus(): void {\n        this.optionFocusSubscription = this.optionFocusChanges.subscribe((event) => {\n            const index: number = this.options.toArray().indexOf(event.option);\n\n            if (this.isValidIndex(index)) {\n                this.keyManager.updateActiveItem(index);\n            }\n        });\n\n        this.optionBlurSubscription = this.optionBlurChanges.subscribe(() => this.blur());\n    }\n\n    /** Checks whether any of the options is focused. */\n    private hasFocusedOption() {\n        return this.options.some((option) => option.hasFocus);\n    }\n\n    // Returns the option with the specified value.\n    private getOptionByValue(value: string): KbqListOption | undefined {\n        return this.options.find((option) => option.value === value);\n    }\n\n    // Sets the selected options based on the specified values.\n    private setOptionsFromValues(values: string[]) {\n        this.options.forEach((option) => option.setSelected(false));\n\n        values\n            .map((value) => this.getOptionByValue(value))\n            .filter(Boolean)\n            .forEach((option) => option!.setSelected(true));\n    }\n\n    /**\n     * Utility to ensure all indexes are valid.\n     * @param index The index to be checked.\n     * @returns True if the index is valid for our list of options.\n     */\n    private isValidIndex(index: number): boolean {\n        return index >= 0 && index < this.options.length;\n    }\n\n    // Returns the index of the specified list option.\n    private getOptionIndex(option: KbqListOption): number {\n        return this.options.toArray().indexOf(option);\n    }\n\n    // View to model callback that should be called whenever the selected options change.\n    private onChange: (value: any) => void = (_: any) => {};\n\n    private selectAllOptions() {\n        const optionsToSelect = this.options.filter((option) => !option.disabled);\n\n        optionsToSelect.forEach((option) => option.setSelected(true));\n\n        this.onSelectAll.emit(new KbqListSelectAllEvent(this, optionsToSelect));\n    }\n\n    private copyActiveOption(event: KeyboardEvent) {\n        if (!this.keyManager.activeItem) return;\n\n        const option = this.keyManager.activeItem;\n\n        option.preventBlur = true;\n\n        if (this.onCopy.observed) {\n            this.onCopy.emit(new KbqListCopyEvent(this, option, event));\n        } else {\n            this.onCopyDefaultHandler();\n\n            event.preventDefault();\n        }\n\n        option.preventBlur = false;\n    }\n}\n\n@Directive({\n    selector: '[kbq-list-option-caption]',\n    host: {\n        class: 'kbq-list-option-caption'\n    }\n})\nexport class KbqListOptionCaption {}\n\n/**\n * Component for list-options of selection-list. Each list-option can automatically\n * generate a checkbox and can put current item into the selectionModel of selection-list\n * if the current item is selected.\n */\n@Component({\n    selector: 'kbq-list-option',\n    imports: [\n        KbqPseudoCheckbox,\n        KbqActionContainer\n    ],\n    templateUrl: './list-option.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqListOption',\n    host: {\n        class: 'kbq-list-option',\n        '[class.kbq-selected]': 'selected',\n        '[class.kbq-list-option_multiple]': 'listSelection.multiple',\n        '[class.kbq-disabled]': 'disabled',\n        '[class.kbq-focused]': 'hasFocus',\n        '[class.kbq-action-button-focused]': 'actionButton?.active',\n        '[attr.tabindex]': 'tabIndex',\n        '[attr.disabled]': 'disabled || null',\n        '(focusin)': 'focus()',\n        '(blur)': 'blur()',\n        '(click)': 'handleClick($event)',\n        '(keydown)': 'onKeydown($event)'\n    },\n    preserveWhitespaces: false,\n    providers: [\n        { provide: KBQ_OPTION_ACTION_PARENT, useExisting: KbqListOption },\n        { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqListOption }\n    ]\n})\nexport class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTitleTextRef {\n    hasFocus: boolean = false;\n    preventBlur: boolean = false;\n\n    readonly onFocus = new Subject<KbqOptionEvent>();\n\n    readonly onBlur = new Subject<KbqOptionEvent>();\n\n    @ContentChild(KbqOptionActionComponent) actionButton: KbqOptionActionComponent;\n    @ContentChild(KbqTooltipTrigger) tooltipTrigger: KbqTooltipTrigger;\n    @ContentChild(KbqDropdownTrigger) dropdownTrigger: KbqDropdownTrigger;\n    @ContentChild(KbqPseudoCheckbox) pseudoCheckbox: KbqPseudoCheckbox;\n\n    @ViewChild('text', { static: false }) text: ElementRef;\n    @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n    // Whether the label should appear before or after the checkbox. Defaults to 'after'\n    @Input() checkboxPosition: 'before' | 'after';\n\n    /**\n     * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`\n     * in the first cycle.\n     */\n    private inputsInitialized = false;\n\n    @Input()\n    get value(): any {\n        return this._value;\n    }\n    set value(newValue: any) {\n        if (this.selected && newValue !== this.value && this.inputsInitialized) {\n            this.selected = false;\n        }\n\n        this._value = newValue;\n    }\n    private _value: any;\n\n    /** Whether list is disabled. */\n    @Input({ transform: booleanAttribute })\n    get disabled(): boolean {\n        const listSelectionDisabled = this.listSelection && this.listSelection.disabled;\n        const groupDisabled = this.group && this.group.disabled;\n\n        return listSelectionDisabled || groupDisabled || this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        if (value !== this._disabled) {\n            this._disabled = value;\n            this.changeDetector.markForCheck();\n        }\n    }\n\n    private _disabled = false;\n\n    @Input()\n    get showCheckbox() {\n        return this._showCheckbox !== undefined ? this._showCheckbox : this.listSelection.showCheckbox;\n    }\n\n    set showCheckbox(value: any) {\n        this._showCheckbox = coerceBooleanProperty(value);\n    }\n\n    private _showCheckbox: boolean;\n\n    @Input({ transform: booleanAttribute })\n    get selected(): boolean {\n        return this.listSelection.selectionModel?.isSelected(this) || false;\n    }\n\n    set selected(value: boolean) {\n        if (value !== this._selected) {\n            this.setSelected(value);\n        }\n    }\n\n    private _selected = false;\n\n    get tabIndex(): any {\n        return this.disabled ? null : -1;\n    }\n\n    get externalPseudoCheckbox(): boolean {\n        return !!this.pseudoCheckbox;\n    }\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private changeDetector: ChangeDetectorRef,\n        private ngZone: NgZone,\n        @Inject(forwardRef(() => KbqListSelection)) public listSelection: KbqListSelection,\n        @Optional() readonly group: KbqOptgroup\n    ) {}\n\n    ngOnInit() {\n        const list = this.listSelection;\n\n        if (list._value && list._value.some((value) => list.compareWith(value, this._value))) {\n            this.setSelected(true);\n        }\n\n        const wasSelected = this._selected;\n\n        // List options that are selected at initialization can't be reported properly to the form\n        // control. This is because it takes some time until the selection-list knows about all\n        // available options. Also it can happen that the ControlValueAccessor has an initial value\n        // that should be used instead. Deferring the value change report to the next tick ensures\n        // that the form control value is not being overwritten.\n        Promise.resolve().then(() => {\n            if (this._selected || wasSelected) {\n                this.selected = true;\n                this.changeDetector.markForCheck();\n            }\n        });\n\n        this.inputsInitialized = true;\n    }\n\n    ngOnDestroy(): void {\n        if (this.selected) {\n            // We have to delay this until the next tick in order\n            // to avoid changed after checked errors.\n            Promise.resolve().then(() => (this.selected = false));\n        }\n\n        this.listSelection.removeOptionFromList(this);\n    }\n\n    toggle(): void {\n        this.selected = !this.selected;\n    }\n\n    getLabel() {\n        return this.text ? this.text.nativeElement.textContent : '';\n    }\n\n    setSelected(selected: boolean) {\n        if (this._selected === selected || !this.listSelection.selectionModel) {\n            return;\n        }\n\n        this._selected = selected;\n\n        if (selected) {\n            this.listSelection.selectionModel.select(this);\n        } else {\n            this.listSelection.selectionModel.deselect(this);\n        }\n\n        this.changeDetector.markForCheck();\n    }\n\n    /** @docs-private */\n    getHeight(): number {\n        const element = this.elementRef.nativeElement;\n\n        // For SSR compatibility\n        if (typeof element.getClientRects !== 'function') return 0;\n\n        return element.getClientRects()[0]?.height ?? 0;\n    }\n\n    /** Handles click events on the list option. */\n    handleClick($event: MouseEvent): void {\n        if (this.disabled) {\n            return;\n        }\n\n        this.listSelection.setSelectedOptionsByClick(\n            this,\n            hasModifierKey($event, 'shiftKey'),\n            // ctrlKey is for Windows, metaKey is for MacOS\n            hasModifierKey($event, 'ctrlKey', 'metaKey')\n        );\n    }\n\n    onKeydown($event) {\n        if (!this.actionButton) {\n            return;\n        }\n\n        if ($event.keyCode === TAB && !$event.shiftKey && !this.actionButton.hasFocus) {\n            this.actionButton.focus();\n\n            $event.preventDefault();\n        }\n    }\n\n    focus() {\n        if (this.disabled || this.hasFocus || this.actionButton?.hasFocus) {\n            return;\n        }\n\n        this.elementRef.nativeElement.focus();\n\n        this.onFocus.next({ option: this });\n\n        Promise.resolve().then(() => {\n            this.hasFocus = true;\n\n            this.changeDetector.markForCheck();\n        });\n    }\n\n    blur(): void {\n        if (this.preventBlur) {\n            return;\n        }\n\n        // When animations are enabled, Angular may end up removing the option from the DOM a little\n        // earlier than usual, causing it to be blurred and throwing off the logic in the list\n        // that moves focus not the next item. To work around the issue, we defer marking the option\n        // as not focused until the next time the zone stabilizes.\n        this.ngZone.onStable\n            .asObservable()\n            .pipe(take(1))\n            .subscribe(() => {\n                this.ngZone.run(() => {\n                    this.hasFocus = false;\n\n                    if (this.actionButton?.hasFocus) {\n                        return;\n                    }\n\n                    this.onBlur.next({ option: this });\n                });\n            });\n    }\n\n    getHostElement(): HTMLElement {\n        return this.elementRef.nativeElement;\n    }\n}\n","@if (externalPseudoCheckbox) {\n    <ng-content select=\"kbq-pseudo-checkbox\" />\n} @else if (showCheckbox) {\n    <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"selected ? 'checked' : 'unchecked'\" />\n}\n\n<ng-content select=\"[kbq-icon]\" />\n\n<div #kbqTitleText #text class=\"kbq-list-text\">\n    <ng-content />\n    <ng-content select=\"[kbq-list-option-caption]\" />\n</div>\n\n@if (actionButton) {\n    <kbq-action-container>\n        <ng-content select=\"kbq-option-action\" />\n    </kbq-action-container>\n}\n","// todo пока не делаем, перенесено из материала, но у нас в доках таких простых списков нет.\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    ElementRef,\n    QueryList,\n    ViewEncapsulation\n} from '@angular/core';\nimport { KbqLine, KbqLineSetter } from '@koobiq/components/core';\n\n@Component({\n    selector: 'kbq-list',\n    template: '<ng-content />',\n    styleUrls: ['./list.scss', 'list-tokens.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'kbq-list' }\n})\nexport class KbqList {}\n\n@Component({\n    selector: 'kbq-list-item, a[kbq-list-item]',\n    host: {\n        class: 'kbq-list-item',\n        '(focus)': 'handleFocus()',\n        '(blur)': 'handleBlur()'\n    },\n    templateUrl: './list-item.html',\n    encapsulation: ViewEncapsulation.None,\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqListItem implements AfterContentInit {\n    @ContentChildren(KbqLine) lines: QueryList<KbqLine>;\n\n    constructor(private elementRef: ElementRef) {}\n\n    ngAfterContentInit() {\n        new KbqLineSetter(this.lines, this.elementRef);\n    }\n\n    handleFocus() {\n        this.elementRef.nativeElement.classList.add('kbq-focused');\n    }\n\n    handleBlur() {\n        this.elementRef.nativeElement.classList.remove('kbq-focused');\n    }\n\n    getHostElement(): HTMLElement {\n        return this.elementRef.nativeElement;\n    }\n}\n","<ng-content select=\"[kbq-list-icon], [mcListIcon]\" />\n\n<div class=\"kbq-list-text\">\n    <ng-content select=\"[kbq-line], [mcLine]\" />\n</div>\n\n<ng-content />\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { KbqActionContainer, KbqLine, KbqOptionModule, KbqPseudoCheckboxModule } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqListOption, KbqListOptionCaption, KbqListSelection } from './list-selection.component';\nimport { KbqList, KbqListItem } from './list.component';\n\n@NgModule({\n    imports: [\n        A11yModule,\n        KbqPseudoCheckboxModule,\n        KbqLine,\n        KbqOptionModule,\n        KbqActionContainer,\n        KbqIconModule,\n        KbqList,\n        KbqListSelection,\n        KbqListItem,\n        KbqListOption,\n        KbqListOptionCaption\n    ],\n    exports: [\n        KbqList,\n        KbqListSelection,\n        KbqListItem,\n        KbqListOption,\n        KbqListOptionCaption,\n        KbqOptionModule\n    ]\n})\nexport class KbqListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}