@koobiq/components 19.3.0 → 19.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete-trigger.directive.d.ts +5 -0
- package/core/animation/animation.d.ts +3 -1
- package/core/highlight/highlight.pipe.d.ts +2 -0
- package/core/option/action.d.ts +5 -6
- package/fesm2022/koobiq-components-autocomplete.mjs +8 -1
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +45 -26
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +4 -4
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +8 -8
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +3 -12
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +11 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +49 -22
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +1 -0
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +146 -41
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +23 -9
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +8 -0
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/form-field/_form-field-theme.scss +2 -2
- package/form-field/form-field-control.d.ts +2 -0
- package/form-field/form-field.scss +0 -1
- package/icon/icon-button.scss +5 -4
- package/inline-edit/inline-edit-tokens.scss +1 -1
- package/list/list-selection.component.d.ts +1 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +2 -2
- package/search-expandable/search-expandable.d.ts +19 -4
- package/sidepanel/_sidepanel-theme.scss +10 -0
- package/sidepanel/sidepanel-animations.d.ts +7 -1
- package/sidepanel/sidepanel-container.component.d.ts +12 -2
- package/sidepanel/sidepanel-directives.d.ts +8 -0
- package/sidepanel/sidepanel-ref.d.ts +12 -0
- package/sidepanel/sidepanel-tokens.scss +5 -3
- package/sidepanel/sidepanel.scss +78 -18
- package/sidepanel/sidepanel.service.d.ts +2 -0
- package/tags/tag-list.component.d.ts +7 -1
- package/tags/tag.component.d.ts +2 -0
- package/tooltip/tooltip.component.d.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 // Check to see if we need to update our tab index\n this.updateTabIndex();\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 protected updateTabIndex(): void {\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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"}
|
|
1
|
+
{"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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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
|
-
import { AsyncPipe } from '@angular/common';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
3
|
import { InjectionToken, inject, DestroyRef, ChangeDetectorRef, ElementRef, EventEmitter, numberAttribute, booleanAttribute, Output, Input, ViewChild, ViewChildren, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
5
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
5
|
import * as i5 from '@angular/forms';
|
|
7
|
-
import { FormsModule,
|
|
6
|
+
import { NgControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
8
7
|
import * as i1 from '@koobiq/components/button';
|
|
9
8
|
import { KbqButtonModule, KbqButton } from '@koobiq/components/button';
|
|
10
9
|
import { ruRULocaleData, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';
|
|
@@ -33,12 +32,27 @@ class KbqSearchExpandable {
|
|
|
33
32
|
set placeholder(value) {
|
|
34
33
|
this._placeholder = value;
|
|
35
34
|
}
|
|
35
|
+
get disabled() {
|
|
36
|
+
return this._disabled;
|
|
37
|
+
}
|
|
38
|
+
set disabled(value) {
|
|
39
|
+
this._disabled = value;
|
|
40
|
+
this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
|
|
41
|
+
}
|
|
42
|
+
get tabIndex() {
|
|
43
|
+
return this.disabled ? -1 : this._tabIndex;
|
|
44
|
+
}
|
|
45
|
+
set tabIndex(value) {
|
|
46
|
+
this._tabIndex = value;
|
|
47
|
+
}
|
|
36
48
|
/** localized data
|
|
37
49
|
* @docs-private */
|
|
38
50
|
get localeData() {
|
|
39
51
|
return this.configuration;
|
|
40
52
|
}
|
|
41
53
|
constructor() {
|
|
54
|
+
/** @docs-private */
|
|
55
|
+
this.ngControl = inject(NgControl, { optional: true, self: true });
|
|
42
56
|
/** @docs-private */
|
|
43
57
|
this.focusMonitor = inject(FocusMonitor);
|
|
44
58
|
/** @docs-private */
|
|
@@ -59,6 +73,8 @@ class KbqSearchExpandable {
|
|
|
59
73
|
/** Timeout in milliseconds for emit event. The default value is taken from defaultEmitValueTimeout */
|
|
60
74
|
this.emitValueTimeout = defaultEmitValueTimeout;
|
|
61
75
|
this._placeholder = this.localeData?.placeholder;
|
|
76
|
+
this._disabled = false;
|
|
77
|
+
this._tabIndex = 0;
|
|
62
78
|
/** Event emitted when the search has been toggled. */
|
|
63
79
|
this.isOpenedChange = new EventEmitter();
|
|
64
80
|
this.lastEmittedValue = defaultValue;
|
|
@@ -74,10 +90,11 @@ class KbqSearchExpandable {
|
|
|
74
90
|
this.lastEmittedValue = value;
|
|
75
91
|
}
|
|
76
92
|
};
|
|
77
|
-
this.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
if (!this.ngControl) {
|
|
94
|
+
throw Error(`kbq-search-expandable must be used with the [formControl], [formControlName] or [(ngModel)].`);
|
|
95
|
+
}
|
|
96
|
+
this.ngControl.valueAccessor = this;
|
|
97
|
+
this.ngControl.valueChanges?.pipe(takeUntilDestroyed()).subscribe((value) => this.value.next(value));
|
|
81
98
|
this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);
|
|
82
99
|
if (!this.localeService) {
|
|
83
100
|
this.initDefaultParams();
|
|
@@ -87,6 +104,7 @@ class KbqSearchExpandable {
|
|
|
87
104
|
.subscribe(this.emitValue);
|
|
88
105
|
}
|
|
89
106
|
ngAfterViewInit() {
|
|
107
|
+
this.runFocusMonitor();
|
|
90
108
|
this.button.changes
|
|
91
109
|
.pipe(filter((queryList) => queryList.length), map((queryList) => queryList.first), takeUntilDestroyed(this.destroyRef))
|
|
92
110
|
.subscribe((button) => {
|
|
@@ -98,6 +116,9 @@ class KbqSearchExpandable {
|
|
|
98
116
|
.pipe(filter((queryList) => queryList.length), map((queryList) => queryList.first), takeUntilDestroyed(this.destroyRef))
|
|
99
117
|
.subscribe((input) => input.focus());
|
|
100
118
|
}
|
|
119
|
+
ngOnDestroy() {
|
|
120
|
+
this.stopFocusMonitor();
|
|
121
|
+
}
|
|
101
122
|
/** Implemented as part of ControlValueAccessor. */
|
|
102
123
|
registerOnChange(fn) {
|
|
103
124
|
this.onChange = fn;
|
|
@@ -110,7 +131,13 @@ class KbqSearchExpandable {
|
|
|
110
131
|
writeValue(value) {
|
|
111
132
|
this.value.next(value || defaultValue);
|
|
112
133
|
}
|
|
134
|
+
/** Implemented as part of ControlValueAccessor. */
|
|
135
|
+
setDisabledState(isDisabled) {
|
|
136
|
+
this.disabled = isDisabled;
|
|
137
|
+
}
|
|
113
138
|
toggle() {
|
|
139
|
+
if (this.disabled)
|
|
140
|
+
return;
|
|
114
141
|
this.isOpened = !this.isOpened;
|
|
115
142
|
if (!this.isOpened) {
|
|
116
143
|
this.value.next(defaultValue);
|
|
@@ -124,14 +151,14 @@ class KbqSearchExpandable {
|
|
|
124
151
|
initDefaultParams() {
|
|
125
152
|
this.configuration = KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION;
|
|
126
153
|
}
|
|
154
|
+
runFocusMonitor() {
|
|
155
|
+
this.focusMonitor.monitor(this.nativeElement, true).subscribe((origin) => (this.lastFocusOrigin = origin));
|
|
156
|
+
}
|
|
157
|
+
stopFocusMonitor() {
|
|
158
|
+
this.focusMonitor.stopMonitoring(this.nativeElement);
|
|
159
|
+
}
|
|
127
160
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqSearchExpandable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: KbqSearchExpandable, isStandalone: true, selector: "kbq-search-expandable", inputs: { isOpened: ["isOpened", "isOpened", booleanAttribute], isEmitValueByEnterEnabled: "isEmitValueByEnterEnabled", emitValueTimeout: ["emitValueTimeout", "emitValueTimeout", numberAttribute], placeholder: "placeholder" }, outputs: { isOpenedChange: "isOpenedChange" }, host: { properties: { "class.kbq-search-expandable_opened": "isOpened" }, classAttribute: "kbq-search-expandable" },
|
|
129
|
-
{
|
|
130
|
-
provide: NG_VALUE_ACCESSOR,
|
|
131
|
-
useExisting: KbqSearchExpandable,
|
|
132
|
-
multi: true
|
|
133
|
-
}
|
|
134
|
-
], viewQueries: [{ propertyName: "tooltip", first: true, predicate: KbqTooltipTrigger, descendants: true }, { propertyName: "input", predicate: KbqInput, descendants: true }, { propertyName: "button", predicate: KbqButton, descendants: true }], ngImport: i0, template: "@if (!isOpened) {\n <button\n kbqTooltip=\"{{ localeData.tooltip }}\"\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-circle-xmark_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n", styles: [".kbq-search-expandable{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;min-width:0;min-height:0}.kbq-search-expandable__search .kbq-icon-button.kbq-suffix{display:flex;align-items:center;justify-content:center;border-radius:var(--kbq-size-xxs);height:var(--kbq-size-xxl)}\n"], dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "component", type: i2.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["small", "kbq-icon-button", "tabindex", "disabled"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i3.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "component", type: i4.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i4.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i4.KbqSuffix, selector: "[kbqSuffix]" }, { kind: "directive", type: i4.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i4.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: KbqToolTipModule }, { kind: "directive", type: i6.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "ngmodule", type: KbqFormFieldModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
161
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: KbqSearchExpandable, isStandalone: true, selector: "kbq-search-expandable", inputs: { isOpened: ["isOpened", "isOpened", booleanAttribute], isEmitValueByEnterEnabled: "isEmitValueByEnterEnabled", emitValueTimeout: ["emitValueTimeout", "emitValueTimeout", numberAttribute], placeholder: "placeholder", disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute] }, outputs: { isOpenedChange: "isOpenedChange" }, host: { properties: { "class.kbq-search-expandable_opened": "isOpened" }, classAttribute: "kbq-search-expandable" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: KbqTooltipTrigger, descendants: true }, { propertyName: "input", predicate: KbqInput, descendants: true }, { propertyName: "button", predicate: KbqButton, descendants: true }], ngImport: i0, template: "@if (!isOpened) {\n <button\n kbqTooltip=\"{{ localeData.tooltip }}\"\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"$any(ngControl?.control)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i\n kbqSuffix\n kbq-icon-button=\"kbq-circle-xmark_16\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n (keyup.enter)=\"toggle()\"\n ></i>\n </kbq-form-field>\n}\n", styles: [".kbq-search-expandable{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;min-width:0;min-height:0}.kbq-search-expandable__search .kbq-icon-button.kbq-suffix{display:flex;align-items:center;justify-content:center;border-radius:var(--kbq-size-xxs);height:var(--kbq-size-xxl)}\n"], dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "component", type: i2.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["small", "kbq-icon-button", "tabindex", "disabled"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i3.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "component", type: i4.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i4.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i4.KbqSuffix, selector: "[kbqSuffix]" }, { kind: "directive", type: i4.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i4.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: KbqToolTipModule }, { kind: "directive", type: i6.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
135
162
|
}
|
|
136
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqSearchExpandable, decorators: [{
|
|
137
164
|
type: Component,
|
|
@@ -140,19 +167,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
140
167
|
KbqIconModule,
|
|
141
168
|
KbqInputModule,
|
|
142
169
|
FormsModule,
|
|
143
|
-
AsyncPipe,
|
|
144
170
|
KbqToolTipModule,
|
|
145
|
-
KbqFormFieldModule
|
|
171
|
+
KbqFormFieldModule,
|
|
172
|
+
ReactiveFormsModule
|
|
146
173
|
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
147
174
|
class: 'kbq-search-expandable',
|
|
148
175
|
'[class.kbq-search-expandable_opened]': 'isOpened'
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
provide: NG_VALUE_ACCESSOR,
|
|
152
|
-
useExisting: KbqSearchExpandable,
|
|
153
|
-
multi: true
|
|
154
|
-
}
|
|
155
|
-
], template: "@if (!isOpened) {\n <button\n kbqTooltip=\"{{ localeData.tooltip }}\"\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-circle-xmark_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n", styles: [".kbq-search-expandable{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;min-width:0;min-height:0}.kbq-search-expandable__search .kbq-icon-button.kbq-suffix{display:flex;align-items:center;justify-content:center;border-radius:var(--kbq-size-xxs);height:var(--kbq-size-xxl)}\n"] }]
|
|
176
|
+
}, template: "@if (!isOpened) {\n <button\n kbqTooltip=\"{{ localeData.tooltip }}\"\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"$any(ngControl?.control)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i\n kbqSuffix\n kbq-icon-button=\"kbq-circle-xmark_16\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n (keyup.enter)=\"toggle()\"\n ></i>\n </kbq-form-field>\n}\n", styles: [".kbq-search-expandable{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;min-width:0;min-height:0}.kbq-search-expandable__search .kbq-icon-button.kbq-suffix{display:flex;align-items:center;justify-content:center;border-radius:var(--kbq-size-xxs);height:var(--kbq-size-xxl)}\n"] }]
|
|
156
177
|
}], ctorParameters: () => [], propDecorators: { input: [{
|
|
157
178
|
type: ViewChildren,
|
|
158
179
|
args: [KbqInput]
|
|
@@ -172,6 +193,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
172
193
|
args: [{ transform: numberAttribute }]
|
|
173
194
|
}], placeholder: [{
|
|
174
195
|
type: Input
|
|
196
|
+
}], disabled: [{
|
|
197
|
+
type: Input,
|
|
198
|
+
args: [{ transform: booleanAttribute }]
|
|
199
|
+
}], tabIndex: [{
|
|
200
|
+
type: Input,
|
|
201
|
+
args: [{ transform: numberAttribute }]
|
|
175
202
|
}], isOpenedChange: [{
|
|
176
203
|
type: Output
|
|
177
204
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-search-expandable.mjs","sources":["../../../packages/components/search-expandable/search-expandable.ts","../../../packages/components/search-expandable/search-expandable.html","../../../packages/components/search-expandable/search-expandable.module.ts","../../../packages/components/search-expandable/koobiq-components-search-expandable.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KBQ_LOCALE_SERVICE, ruRULocaleData } from '@koobiq/components/core';\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 { BehaviorSubject, debounceTime, distinctUntilChanged, filter } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** default configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION = ruRULocaleData.searchExpandable;\n\n/** Injection Token for providing configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_CONFIGURATION = new InjectionToken('KbqSearchExpandableConfiguration');\n\nexport const defaultValue = '';\nexport const defaultEmitValueTimeout = 200;\n\n@Component({\n selector: 'kbq-search-expandable',\n imports: [\n KbqButtonModule,\n KbqIconModule,\n KbqInputModule,\n FormsModule,\n AsyncPipe,\n KbqToolTipModule,\n KbqFormFieldModule\n ],\n templateUrl: './search-expandable.html',\n styleUrls: ['./search-expandable.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-search-expandable',\n '[class.kbq-search-expandable_opened]': 'isOpened'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqSearchExpandable,\n multi: true\n }\n ]\n})\nexport class KbqSearchExpandable implements ControlValueAccessor, AfterViewInit {\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly externalConfiguration = inject(KBQ_SEARCH_EXPANDABLE_CONFIGURATION, { optional: true });\n\n @ViewChildren(KbqInput) private input: QueryList<KbqInput>;\n @ViewChildren(KbqButton) private button: QueryList<KbqButton>;\n @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n configuration;\n\n /** Current value in input. */\n value = new BehaviorSubject(defaultValue);\n\n protected lastFocusOrigin: 'touch' | 'mouse' | 'keyboard' | 'program' | null;\n\n /** state of component. */\n @Input({ transform: booleanAttribute }) isOpened = false;\n /** Emit event by enter or not. Default is false */\n @Input() isEmitValueByEnterEnabled = false;\n /** Timeout in milliseconds for emit event. The default value is taken from defaultEmitValueTimeout */\n @Input({ transform: numberAttribute }) emitValueTimeout = defaultEmitValueTimeout;\n\n /** Placeholder for input when expanded */\n @Input()\n get placeholder(): string {\n return this._placeholder ?? this.localeData?.placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n private _placeholder = this.localeData?.placeholder;\n\n /** Event emitted when the search has been toggled. */\n @Output() readonly isOpenedChange = new EventEmitter<boolean>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n private lastEmittedValue = defaultValue;\n\n constructor() {\n this.focusMonitor\n .monitor(this.nativeElement, true)\n .pipe(takeUntilDestroyed())\n .subscribe((origin) => (this.lastFocusOrigin = origin));\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n this.value\n .pipe(\n distinctUntilChanged(),\n filter(() => !this.isEmitValueByEnterEnabled),\n debounceTime(this.emitValueTimeout),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(this.emitValue);\n }\n\n ngAfterViewInit(): void {\n this.button.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((button: KbqButton) => {\n this.tooltip.disabled = true;\n\n this.focusMonitor.focusVia(button.elementRef.nativeElement, this.lastFocusOrigin);\n\n this.tooltip.disabled = false;\n });\n\n this.input.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((input: KbqInput) => input.focus());\n }\n\n /** @docs-private */\n onChange: (value: string) => void;\n\n /** @docs-private */\n onTouch: () => void = () => {};\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: string): void {\n this.value.next(value || defaultValue);\n }\n\n toggle(): void {\n this.isOpened = !this.isOpened;\n\n if (!this.isOpened) {\n this.value.next(defaultValue);\n\n if (this.isEmitValueByEnterEnabled) {\n this.emitValue(defaultValue, true);\n }\n }\n\n this.tooltip?.hide();\n\n this.isOpenedChange.emit(this.isOpened);\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('searchExpandable');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION;\n }\n\n private emitValue = (value: string, forced = false): void => {\n if (value !== this.lastEmittedValue || forced) {\n this.onChange(value);\n this.lastEmittedValue = value;\n }\n };\n}\n","@if (!isOpened) {\n <button\n kbqTooltip=\"{{ localeData.tooltip }}\"\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-circle-xmark_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSearchExpandable } from './search-expandable';\n\n@NgModule({\n imports: [\n KbqSearchExpandable\n ],\n exports: [KbqSearchExpandable]\n})\nexport class KbqSearchExpandableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-search-expandable.mjs","sources":["../../../packages/components/search-expandable/search-expandable.ts","../../../packages/components/search-expandable/search-expandable.html","../../../packages/components/search-expandable/search-expandable.module.ts","../../../packages/components/search-expandable/koobiq-components-search-expandable.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KBQ_LOCALE_SERVICE, ruRULocaleData } from '@koobiq/components/core';\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 { BehaviorSubject, debounceTime, distinctUntilChanged, filter } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** default configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION = ruRULocaleData.searchExpandable;\n\n/** Injection Token for providing configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_CONFIGURATION = new InjectionToken('KbqSearchExpandableConfiguration');\n\nexport const defaultValue = '';\nexport const defaultEmitValueTimeout = 200;\n\n@Component({\n selector: 'kbq-search-expandable',\n imports: [\n KbqButtonModule,\n KbqIconModule,\n KbqInputModule,\n FormsModule,\n KbqToolTipModule,\n KbqFormFieldModule,\n ReactiveFormsModule\n ],\n templateUrl: './search-expandable.html',\n styleUrls: ['./search-expandable.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-search-expandable',\n '[class.kbq-search-expandable_opened]': 'isOpened'\n }\n})\nexport class KbqSearchExpandable implements ControlValueAccessor, AfterViewInit, OnDestroy {\n /** @docs-private */\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly externalConfiguration = inject(KBQ_SEARCH_EXPANDABLE_CONFIGURATION, { optional: true });\n\n @ViewChildren(KbqInput) private input: QueryList<KbqInput>;\n @ViewChildren(KbqButton) private button: QueryList<KbqButton>;\n @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n configuration;\n\n /** Current value in input. */\n value = new BehaviorSubject(defaultValue);\n\n protected lastFocusOrigin: 'touch' | 'mouse' | 'keyboard' | 'program' | null;\n\n /** state of component. */\n @Input({ transform: booleanAttribute }) isOpened = false;\n /** Emit event by enter or not. Default is false */\n @Input() isEmitValueByEnterEnabled = false;\n /** Timeout in milliseconds for emit event. The default value is taken from defaultEmitValueTimeout */\n @Input({ transform: numberAttribute }) emitValueTimeout = defaultEmitValueTimeout;\n\n /** Placeholder for input when expanded */\n @Input()\n get placeholder(): string {\n return this._placeholder ?? this.localeData?.placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n private _placeholder = this.localeData?.placeholder;\n\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n\n this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();\n }\n\n private _disabled: boolean = false;\n\n @Input({ transform: numberAttribute })\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n /** Event emitted when the search has been toggled. */\n @Output() readonly isOpenedChange = new EventEmitter<boolean>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n private lastEmittedValue = defaultValue;\n\n constructor() {\n if (!this.ngControl) {\n throw Error(`kbq-search-expandable must be used with the [formControl], [formControlName] or [(ngModel)].`);\n }\n\n this.ngControl.valueAccessor = this;\n\n this.ngControl.valueChanges?.pipe(takeUntilDestroyed()).subscribe((value) => this.value.next(value));\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n this.value\n .pipe(\n distinctUntilChanged(),\n filter(() => !this.isEmitValueByEnterEnabled),\n debounceTime(this.emitValueTimeout),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(this.emitValue);\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n\n this.button.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((button: KbqButton) => {\n this.tooltip.disabled = true;\n\n this.focusMonitor.focusVia(button.elementRef.nativeElement, this.lastFocusOrigin);\n\n this.tooltip.disabled = false;\n });\n\n this.input.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((input: KbqInput) => input.focus());\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n }\n\n /** @docs-private */\n onChange: (value: string) => void;\n\n /** @docs-private */\n onTouch: () => void = () => {};\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: string): void {\n this.value.next(value || defaultValue);\n }\n\n /** Implemented as part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(): void {\n if (this.disabled) return;\n\n this.isOpened = !this.isOpened;\n\n if (!this.isOpened) {\n this.value.next(defaultValue);\n\n if (this.isEmitValueByEnterEnabled) {\n this.emitValue(defaultValue, true);\n }\n }\n\n this.tooltip?.hide();\n\n this.isOpenedChange.emit(this.isOpened);\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('searchExpandable');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION;\n }\n\n private emitValue = (value: string, forced = false): void => {\n if (value !== this.lastEmittedValue || forced) {\n this.onChange(value);\n this.lastEmittedValue = value;\n }\n };\n\n private runFocusMonitor() {\n this.focusMonitor.monitor(this.nativeElement, true).subscribe((origin) => (this.lastFocusOrigin = origin));\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n}\n","@if (!isOpened) {\n <button\n kbqTooltip=\"{{ localeData.tooltip }}\"\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"$any(ngControl?.control)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i\n kbqSuffix\n kbq-icon-button=\"kbq-circle-xmark_16\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n (keyup.enter)=\"toggle()\"\n ></i>\n </kbq-form-field>\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSearchExpandable } from './search-expandable';\n\n@NgModule({\n imports: [\n KbqSearchExpandable\n ],\n exports: [KbqSearchExpandable]\n})\nexport class KbqSearchExpandableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -958,6 +958,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
958
958
|
this.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
959
959
|
if (this.panelOpen && this.panel) {
|
|
960
960
|
this.scrollActiveOptionIntoView();
|
|
961
|
+
this.search?.focus();
|
|
961
962
|
}
|
|
962
963
|
else if (!this.panelOpen && !this.multiSelection && this.keyManager.activeItem) {
|
|
963
964
|
this.keyManager.activeItem.selectViaInteraction();
|