@koobiq/components 20.1.0 → 20.3.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/accordion/_accordion-theme.scss +6 -2
- package/accordion/accordion-tokens.scss +3 -0
- package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +10 -0
- package/accordion/accordion.scss +71 -0
- package/accordion/index.d.ts +264 -121
- package/actions-panel/index.d.ts +25 -13
- package/alert/_alert-theme.scss +14 -0
- package/alert/alert.component.scss +24 -13
- package/alert/index.d.ts +63 -29
- package/app-switcher/app-switcher-dropdown-app.scss +7 -5
- package/app-switcher/app-switcher-dropdown-site.scss +6 -4
- package/app-switcher/index.d.ts +41 -4
- package/app-switcher/kbq-app-switcher-list-item.scss +6 -8
- package/autocomplete/autocomplete.scss +2 -1
- package/autocomplete/index.d.ts +58 -37
- package/badge/index.d.ts +2 -3
- package/breadcrumbs/index.d.ts +1 -1
- package/button/index.d.ts +2 -2
- package/button-toggle/button-toggle-tokens.scss +2 -0
- package/button-toggle/button-toggle.scss +9 -0
- package/button-toggle/index.d.ts +5 -0
- package/checkbox/index.d.ts +33 -29
- package/clamped-text/index.d.ts +3 -2
- package/code-block/index.d.ts +24 -19
- package/content-panel/index.d.ts +1 -1
- package/core/index.d.ts +1217 -186
- package/core/option/_action-container-mixins.scss +28 -0
- package/core/option/_option-theme.scss +24 -0
- package/core/option/action.scss +7 -0
- package/core/styles/_core.scss +2 -0
- package/core/styles/_koobiq-theme.scss +2 -0
- package/core/styles/_tokens.scss +1 -0
- package/core/styles/common/_animation.scss +31 -24
- package/core/styles/common/_connected-overlay.scss +39 -0
- package/core/styles/common/_select.scss +19 -2
- package/core/styles/common/_tokens.scss +0 -9
- package/core/styles/theming/_index.scss +0 -1
- package/core/styles/theming/_theming.scss +34 -5
- package/datepicker/index.d.ts +46 -15
- package/dl/dl.scss +26 -0
- package/dl/index.d.ts +8 -1
- package/dropdown/_dropdown-theme.scss +28 -2
- package/dropdown/dropdown-item.scss +29 -0
- package/dropdown/dropdown-tokens.scss +2 -1
- package/dropdown/dropdown.scss +16 -1
- package/dropdown/index.d.ts +331 -17
- package/dynamic-translation/index.d.ts +1 -1
- package/fesm2022/koobiq-components-accordion.mjs +480 -317
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +57 -46
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +98 -58
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +233 -38
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +89 -52
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +18 -17
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +17 -12
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +25 -25
- package/fesm2022/koobiq-components-checkbox.mjs +69 -92
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +18 -13
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +56 -69
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +29 -29
- package/fesm2022/koobiq-components-core.mjs +2485 -735
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +168 -126
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-dl.mjs +23 -15
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +814 -136
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +74 -42
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +783 -199
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +7 -7
- package/fesm2022/koobiq-components-form-field.mjs +350 -162
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +52 -25
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +175 -28
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +41 -24
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +8 -8
- package/fesm2022/koobiq-components-list.mjs +657 -143
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-markdown.mjs +14 -11
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +59 -35
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +177 -67
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +40 -24
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +16 -17
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +31 -21
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +33 -14
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-search-expandable.mjs +49 -14
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +450 -146
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +14 -14
- package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
- package/fesm2022/koobiq-components-skeleton.mjs +10 -10
- package/fesm2022/koobiq-components-split-button.mjs +10 -17
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +17 -17
- package/fesm2022/koobiq-components-table.mjs +15 -13
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +80 -68
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +283 -122
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +13 -8
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +29 -24
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +61 -30
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +77 -42
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +51 -26
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +72 -64
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +219 -28
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-tree-select.mjs +222 -80
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +302 -81
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +27 -27
- package/file-upload/index.d.ts +25 -6
- package/file-upload/multiple-file-upload.component.scss +14 -0
- package/filter-bar/_filter-bar-theme.scss +0 -10
- package/filter-bar/filter-bar-tokens.scss +3 -0
- package/filter-bar/filters.scss +3 -2
- package/filter-bar/index.d.ts +281 -9
- package/filter-bar/pipes/base-pipe.scss +0 -11
- package/filter-bar/pipes/pipe-input.scss +10 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +0 -6
- package/filter-bar/pipes/pipe-multiselect.scss +0 -6
- package/filter-bar/pipes/pipe-tree-select.scss +0 -6
- package/form-field/_form-field-theme.scss +76 -20
- package/form-field/fieldset.scss +10 -0
- package/form-field/form-field-tokens.scss +15 -1
- package/form-field/form-field.scss +15 -19
- package/form-field/index.d.ts +147 -65
- package/icon/icon-button.scss +3 -1
- package/icon/index.d.ts +45 -7
- package/inline-edit/index.d.ts +57 -4
- package/inline-edit/inline-edit.scss +10 -0
- package/input/index.d.ts +17 -2
- package/list/_list-theme.scss +42 -10
- package/list/index.d.ts +326 -79
- package/list/list-tokens.scss +43 -8
- package/list/list.scss +186 -12
- package/markdown/index.d.ts +1 -1
- package/modal/index.d.ts +21 -4
- package/modal/modal-tokens.scss +1 -1
- package/navbar/_navbar-item_vertical.scss +7 -5
- package/navbar/index.d.ts +54 -5
- package/navbar/navbar-brand.scss +23 -7
- package/navbar/vertical-navbar.scss +6 -0
- package/notification-center/index.d.ts +2 -1
- package/notification-center/notification-item.scss +6 -0
- package/package.json +3 -6
- package/popover/index.d.ts +2 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/resizer/index.d.ts +12 -0
- package/schematics/collection.json +10 -0
- package/schematics/migrations/alert-signals/README.md +64 -0
- package/schematics/migrations/alert-signals/data.js +70 -0
- package/schematics/migrations/alert-signals/index.js +350 -0
- package/schematics/migrations/alert-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
- package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +29 -4
- package/schematics/migrations/deprecated-icons/data.js +7 -0
- package/schematics/migrations/deprecated-icons/index.js +62 -35
- package/schematics/migrations/filter-bar-signals/README.md +1 -1
- package/schematics/migrations/new-icons-pack/README.md +37 -2
- package/schematics/migrations/new-icons-pack/data.js +8 -0
- package/schematics/migrations/new-icons-pack/index.js +144 -53
- package/schematics/migrations.json +11 -1
- package/schematics/ng-add/index.js +3 -3
- package/schematics/utils/angular-parsing.js +41 -14
- package/schematics/utils/ast.js +31 -0
- package/schematics/utils/icon-migration.js +530 -0
- package/schematics/utils/typescript.js +44 -0
- package/scrollbar/index.d.ts +1 -1
- package/search-expandable/index.d.ts +3 -0
- package/select/index.d.ts +212 -40
- package/select/select-tokens.scss +0 -1
- package/select/select.scss +0 -2
- package/splitter/index.d.ts +1 -1
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +2 -1
- package/table/table.scss +8 -0
- package/tabs/_tabs-common.scss +60 -31
- package/tabs/_tabs-theme.scss +12 -0
- package/tabs/index.d.ts +2 -2
- package/tabs/tab-header.scss +14 -0
- package/tabs/tab-nav-bar.scss +4 -0
- package/tabs/tabs-tokens.scss +1 -0
- package/tags/index.d.ts +128 -29
- package/textarea/index.d.ts +5 -0
- package/time-range/index.d.ts +1 -1
- package/timepicker/index.d.ts +4 -0
- package/timezone/index.d.ts +10 -8
- package/toast/index.d.ts +26 -3
- package/toggle/index.d.ts +34 -14
- package/tooltip/index.d.ts +119 -7
- package/tree/_tree-theme.scss +25 -5
- package/tree/index.d.ts +71 -3
- package/tree/tree-option.scss +2 -8
- package/tree-select/_tree-select-theme.scss +22 -0
- package/tree-select/index.d.ts +127 -36
- package/accordion/accordion.component.scss +0 -50
- package/core/styles/_tokens.kbq.import.scss +0 -4
- package/core/styles/theming/_components-theming.scss +0 -1927
- package/filter-bar/pipes/pipe-select.scss +0 -5
- package/overflow-items/overflow-items.scss +0 -20
|
@@ -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 { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n contentChild,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostAttributeToken,\n inject,\n Input,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n output,\n QueryList,\n ViewChild,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n FocusKeyManager,\n hasModifierKey,\n HOME,\n IFocusableOption,\n isCopy,\n isSelectAll,\n isVerticalMovement,\n KBQ_OPTION_ACTION_PARENT,\n KBQ_TITLE_TEXT_REF,\n KbqActionContainer,\n KbqOptgroup,\n KbqOptionActionComponent,\n KbqPseudoCheckbox,\n KbqTitleTextRef,\n LEFT_ARROW,\n MultipleMode,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SPACE,\n TAB,\n toggleSelectAll,\n UP_ARROW\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 providers: [KBQ_SELECTION_LIST_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\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 exportAs: 'kbqListSelection',\n preserveWhitespaces: false\n})\nexport class KbqListSelection implements AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private clipboard = inject(Clipboard, { optional: true });\n protected readonly focusMonitor = inject(FocusMonitor);\n\n keyManager: FocusKeyManager<KbqListOption>;\n\n @ContentChildren(forwardRef(() => KbqListOption), { descendants: true }) options: QueryList<KbqListOption>;\n\n readonly onSelectAll = output<KbqListSelectAllEvent<KbqListOption>>();\n\n @Output() readonly onCopy = new EventEmitter<KbqListCopyEvent<KbqListOption>>();\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 /** When `true`, a repeated Ctrl/Cmd+A deselects all options. Off by default (Ctrl+A only selects). */\n readonly selectAllToggle = input(false, { transform: booleanAttribute });\n\n multipleMode: MultipleMode | null;\n\n get multiple(): boolean {\n return !!this.multipleMode;\n }\n\n readonly horizontal = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 readonly compareWith = input<(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 readonly selectionChange = output<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 private readonly platform = inject(Platform);\n\n private optionFocusSubscription: Subscription | null;\n\n private optionBlurSubscription: Subscription | null;\n\n constructor() {\n const multiple = inject(new HostAttributeToken('multiple'), { optional: true });\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 if (!this.platform.isBrowser) return;\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 return this.elementRef.nativeElement.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.selectAllHandler(event, this);\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 /**\n * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used,\n * which toggles the selection of all non-disabled options.\n */\n @Input()\n get selectAllHandler() {\n return this._selectAllHandler;\n }\n\n set selectAllHandler(fn: (event: KeyboardEvent, list: KbqListSelection) => void) {\n if (typeof fn !== 'function') {\n throw Error('`selectAllHandler` must be a function.');\n }\n\n this._selectAllHandler = fn;\n }\n\n private _selectAllHandler(event: KeyboardEvent, list: KbqListSelection): void {\n event.preventDefault();\n\n const options = list.options.toArray();\n\n toggleSelectAll<KbqListOption>(\n {\n items: options,\n isSelectable: (option) => !option.disabled,\n isSelected: (option) => option.selected,\n setSelected: (option, selected) => option.setSelected(selected)\n },\n { allowDeselect: list.selectAllToggle() }\n );\n\n list.reportValueChange();\n\n list.onSelectAll.emit(\n new KbqListSelectAllEvent(\n list,\n options.filter((option) => !option.disabled)\n )\n );\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 providers: [\n { provide: KBQ_OPTION_ACTION_PARENT, useExisting: KbqListOption },\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqListOption }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\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 exportAs: 'kbqListOption',\n preserveWhitespaces: false\n})\nexport class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTitleTextRef {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetector = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n listSelection = inject(KbqListSelection);\n readonly group = inject(KbqOptgroup, { optional: true });\n hasFocus: boolean = false;\n preventBlur: boolean = false;\n\n readonly onFocus = new Subject<KbqOptionEvent>();\n\n readonly onBlur = new Subject<KbqOptionEvent>();\n\n readonly actionButton = contentChild(KbqOptionActionComponent);\n\n // `KbqOptionActionComponent` reads these as directive instances through KBQ_OPTION_ACTION_PARENT,\n // so they must stay decorator queries. A signal `contentChild` would expose the query function\n // instead of the trigger, making `dropdownTrigger.dropdownClosed` undefined and throwing on `.pipe`\n // when an action button is rendered — see #DS-5079.\n @ContentChild(KbqTooltipTrigger) tooltipTrigger?: KbqTooltipTrigger;\n @ContentChild(KbqDropdownTrigger) dropdownTrigger?: KbqDropdownTrigger;\n readonly pseudoCheckbox = contentChild(KbqPseudoCheckbox);\n\n readonly text = viewChild.required<ElementRef>('text');\n @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n // Whether the label should appear before or after the checkbox. Defaults to 'after'\n readonly checkboxPosition = input<'before' | 'after'>(undefined!);\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 // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 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 const text = this.text();\n\n return text ? 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 return this.elementRef.nativeElement.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 const actionButton = this.actionButton();\n\n if (!actionButton) {\n return;\n }\n\n if ($event.keyCode === TAB && !$event.shiftKey && !actionButton.hasFocus) {\n 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 inject\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'kbq-list' }\n})\nexport class KbqList {}\n\n@Component({\n selector: 'kbq-list-item, a[kbq-list-item]',\n templateUrl: './list-item.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-list-item',\n '(focus)': 'handleFocus()',\n '(blur)': 'handleBlur()'\n },\n preserveWhitespaces: false\n})\nexport class KbqListItem implements AfterContentInit {\n private elementRef = inject(ElementRef);\n\n @ContentChildren(KbqLine) lines: QueryList<KbqLine>;\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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CDK_DRAG_HANDLE, CdkDrag, CdkDragDrop, CdkDragPreview, CdkDropList } from '@angular/cdk/drag-drop';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n contentChild,\n contentChildren,\n ContentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostAttributeToken,\n inject,\n Input,\n input,\n isDevMode,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n output,\n Provider,\n QueryList,\n signal,\n ViewChild,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n FocusKeyManager,\n getKbqSelectNonFunctionValueError,\n hasModifierKey,\n HOME,\n IFocusableOption,\n isCopy,\n isSelectAll,\n isVerticalMovement,\n KBQ_OPTION_ACTION_PARENT,\n KBQ_TITLE_TEXT_REF,\n KBQ_WINDOW,\n KbqActionContainer,\n kbqFocusOptionActionOnTab,\n KbqOptgroup,\n KbqOptionActionComponent,\n KbqPseudoCheckbox,\n KbqTitleTextRef,\n LEFT_ARROW,\n MultipleMode,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n runCompareWith,\n SPACE,\n TAB,\n toggleSelectAll,\n UP_ARROW\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { auditTime, startWith, switchMap, take } from 'rxjs/operators';\n\n/** How long consecutive `window.resize` ticks are collapsed before the scroll size is recalculated. */\nconst RESIZE_AUDIT_TIME = 100;\n\n/**\n * Marks the dragged option while the pointer is over no list that would take it. Styling reads it from the\n * body, which is what resolves the cursor once the options are out of hit testing.\n */\nconst DROP_FORBIDDEN_CLASS = 'kbq-list-option_drop-forbidden';\n\n/**\n * Put on the drag preview whichever shape it takes, so styling has one hook that survives the\n * `dragPreview` mode switch.\n */\nconst DRAG_PREVIEW_CLASS = 'kbq-list-drag-preview';\n\nexport interface KbqOptionEvent<T = any> {\n option: KbqListOption<T>;\n}\n\nexport const KBQ_SELECTION_LIST_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqListSelection),\n multi: true\n};\n\nexport class KbqListSelectionChange<T = any> {\n constructor(\n public source: KbqListSelection<T>,\n public option: KbqListOption<T>\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/**\n * Data attached to the underlying `CdkDrag` while a list option is being dragged. Kept unexported:\n * `dropped` already hands the option over, so nothing outside this file has to read `CdkDrag.data`.\n */\ntype KbqListOptionDragData = { option: KbqListOption };\n\n/**\n * How the floating copy of an option is rendered while it is dragged.\n *\n * `text` shows a compact plate with the option's own text and nothing else, `full` a clone of the\n * whole row.\n */\nexport type KbqListDragPreview = 'text' | 'full';\n\n/**\n * Whether a draggable option advertises with the cursor that the whole row can be picked up.\n *\n * `auto` leaves the row the cursor it would have anyway, `grab` turns the row into a visible handle.\n * A projected `cdkDragHandle` takes the grab over either way.\n */\nexport type KbqListDragCursor = 'auto' | 'grab';\n\n/** Event emitted when an option changes its position by dragging. */\nexport type KbqListSelectionDroppedEvent = Pick<CdkDragDrop<KbqListSelection>, 'previousIndex' | 'currentIndex'> & {\n /** Option that has been moved. */\n option: KbqListOption;\n /** List the option has been moved into. */\n container: KbqListSelection;\n /** List the option has been taken from. Equal to `container` when reordering within a single list. */\n previousContainer: KbqListSelection;\n /** Pointer event that ended the drag. */\n event: MouseEvent | TouchEvent;\n};\n\n@Component({\n selector: 'kbq-list-selection',\n template: `\n <ng-content />\n @if (dropIndicatorOffset() !== null) {\n <!-- Purely decorative: the drop target is a pointer affordance, not a status message. -->\n <div\n class=\"kbq-list-selection__drop-indicator\"\n aria-hidden=\"true\"\n [style.--kbq-list-drop-indicator-offset.px]=\"dropIndicatorOffset()\"\n ></div>\n }\n `,\n styleUrls: ['./list.scss', 'list-tokens.scss'],\n providers: [KBQ_SELECTION_LIST_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-list-selection',\n role: 'listbox',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-list-selection_horizontal]': 'horizontal()',\n '[class.kbq-list-selection_draggable]': 'draggable',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-orientation]': 'horizontal() ? \"horizontal\" : null',\n '[attr.aria-disabled]': 'disabled || null',\n '[attr.tabindex]': 'tabIndex',\n '(keydown)': 'onKeyDown($event)',\n '(focus)': 'focus()',\n '(blur)': 'blur()'\n },\n // `id` is exposed so that a consumer-set id survives `CdkDropList`'s own `[attr.id]` host binding\n // and can be used as a `connectedTo` reference.\n hostDirectives: [{ directive: CdkDropList, inputs: ['id'] }],\n exportAs: 'kbqListSelection',\n preserveWhitespaces: false\n})\nexport class KbqListSelection<T = any> implements AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private clipboard = inject(Clipboard, { optional: true });\n protected readonly focusMonitor = inject(FocusMonitor);\n\n keyManager: FocusKeyManager<KbqListOption<T>>;\n\n @ContentChildren(forwardRef(() => KbqListOption), { descendants: true }) options: QueryList<KbqListOption<T>>;\n\n readonly onSelectAll = output<KbqListSelectAllEvent<KbqListOption<T>>>();\n\n /**\n * Kept as a decorator `@Output()`/`EventEmitter` on purpose: `copyActiveOption` branches on\n * `onCopy.observed` to decide between the consumer handler and the built-in clipboard copy.\n * `output()` exposes no subscriber introspection, so migrating it would silently run both\n * paths for every existing `(onCopy)` consumer. Mirrors `KbqTreeSelection.onCopy`.\n */\n @Output() readonly onCopy = new EventEmitter<KbqListCopyEvent<KbqListOption<T>>>();\n\n /**\n * Whether clicking an option clears the rest of the selection.\n * Stays an accessor input: the constructor turns it off for `multiple=\"checkbox\"`, which a\n * signal `input()` cannot do (inputs are read-only from inside the component).\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 /**\n * Whether the last selected option can be deselected.\n * Stays an accessor input for the same reason as {@link autoSelect}.\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 /**\n * Whether options can be reordered by dragging them.\n * Reordering never mutates the data — handle the `dropped` event and move the item yourself.\n */\n @Input({ transform: booleanAttribute })\n get draggable(): boolean {\n return this._draggable && !this.disabled;\n }\n\n set draggable(value: boolean) {\n this._draggable = value;\n this.syncDraggableState();\n }\n\n private _draggable: boolean = false;\n\n /**\n * Lists that options of this list can be moved into. Accepts `KbqListSelection` instances or the\n * `id` of another list. `cdkDropListGroup` on a common ancestor connects lists automatically.\n */\n readonly connectedTo = input<KbqListSelection<T> | string | readonly (KbqListSelection<T> | string)[]>([]);\n\n /**\n * What the option's floating copy looks like while it is dragged. Defaults to `text`: a compact\n * plate carrying the option's label and caption, capped at a readable width. Use `full` to drag a\n * clone of the whole row, checkbox, icons and action button included.\n */\n readonly dragPreview = input<KbqListDragPreview>('text');\n\n /**\n * Whether a draggable option shows the grab cursor over the whole row. Defaults to `auto`, which\n * leaves the row the cursor it has anyway. Use `grab` where the whole row is meant to read as a\n * handle. An option carrying a projected `cdkDragHandle` ignores this — the handle keeps the grab.\n */\n readonly dragCursor = input<KbqListDragCursor>('auto');\n\n /** Emits when an option changes its position by dragging. */\n readonly dropped = output<KbqListSelectionDroppedEvent>();\n\n /** When `true`, a repeated Ctrl/Cmd+A deselects all options. Off by default (Ctrl+A only selects). */\n readonly selectAllToggle = input(false, { transform: booleanAttribute });\n\n multipleMode: MultipleMode | null;\n\n get multiple(): boolean {\n return !!this.multipleMode;\n }\n\n readonly horizontal = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /**\n * Tab index of the list.\n * Stays an accessor input: the getter is derived from {@link disabled} and the setter also\n * records the user-provided value, which the roving focus logic restores after `tabOut`.\n */\n @Input()\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this.userTabIndex = value;\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n /**\n * Whether the list is disabled.\n * Stays an accessor input: `setDisabledState` writes it from the `ControlValueAccessor`, which a\n * signal `input()` cannot do.\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 this.syncDraggableState();\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 * Bind a stable reference — a field or a bound method. An expression that builds a new function on\n * every change detection pass makes the list re-resolve every value against every option each pass.\n */\n readonly compareWith = input<(o1: T, o2: T) => boolean, (o1: T, o2: T) => boolean>((a1, a2) => a1 === a2, {\n // Mirrors `KbqSelect`, which throws from its setter: a comparator that is not callable would\n // otherwise surface as an empty selection and a warning per option.\n transform: (fn) => {\n if (typeof fn !== 'function') {\n throw getKbqSelectNonFunctionValueError();\n }\n\n return fn;\n }\n });\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 readonly selectionChange = output<KbqListSelectionChange<T>>();\n\n selectionModel: SelectionModel<KbqListOption<T>>;\n\n get optionFocusChanges(): Observable<KbqOptionEvent<T>> {\n return merge(...this.options.map((option) => option.onFocus));\n }\n\n get optionBlurChanges(): Observable<KbqOptionEvent<T>> {\n return merge(...this.options.map((option) => option.onBlur));\n }\n\n _value: T[] | null;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly platform = inject(Platform);\n private readonly ngZone = inject(NgZone);\n private readonly window = inject(KBQ_WINDOW);\n private readonly dropList = inject<CdkDropList<KbqListSelection>>(CdkDropList, { host: true });\n\n /**\n * Distance from the list's content box to the gap the dragged option would land in, or `null`\n * while no drag is hovering this list. Drives the insertion indicator.\n */\n protected readonly dropIndicatorOffset = signal<number | null>(null);\n\n /** Gap the indicator currently marks, used as `currentIndex` when the drag is dropped here. */\n private dropIndex: number | null = null;\n\n private pendingMoveSubscription: Subscription | null;\n\n private hasWarnedOnDragContainer = false;\n\n /** Whether a deferred {@link initializeSelection} pass is already queued for this microtask turn. */\n private pendingSelectionInit = false;\n\n /** Whether a form control has ever written to the list, i.e. whether {@link _value} speaks for a model. */\n private hasWrittenValue = false;\n\n constructor() {\n const multiple = inject(new HostAttributeToken('multiple'), { optional: true });\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<T>>(this.multiple);\n\n // A different comparator means a different set of options can match the model value. `compareWith`\n // is a signal input, so there is no setter to re-run matching from the way `KbqSelect` does.\n effect(() => {\n this.compareWith();\n this.initializeSelection();\n });\n\n this.setupDropListInitialProperties();\n }\n\n ngAfterContentInit(): void {\n this.keyManager = new FocusKeyManager<KbqListOption<T>>(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 // The initial value is applied by the `options.changes` subscription below, which starts with the\n // options already present. Applying it synchronously here instead would settle the selection after\n // the parent view was checked and raise NG0100.\n // Repairs each option's `_selected` mirror after the model changes on its own — single-selection\n // mode drops the previous winner whenever another option is selected. Deliberately not moved\n // earlier: writes that happen during input binding would flip a host binding mid-pass (NG0100).\n // `setSelected` consults the model too, so a write that lands before this is still recoverable.\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.listenToOptionsFocus();\n\n this.options.changes.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.updateTabIndex();\n this.initializeSelection();\n });\n\n if (!this.platform.isBrowser) return;\n\n this.warnOnUnsupportedDragContainer();\n this.updateScrollSize();\n\n // `updateScrollSize` only feeds the key manager's page size — nothing rendered depends on it,\n // so the listener stays outside the zone and never schedules change detection. `auditTime`\n // collapses a resize drag into one pair of forced layout reads per interval.\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.window, 'resize')\n .pipe(auditTime(RESIZE_AUDIT_TIME), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateScrollSize());\n });\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 /** Clears the active key-manager item (unless an option is still focused) and marks the list as touched. */\n blur(): void {\n if (!this.hasFocusedOption()) {\n this.keyManager.setActiveItem(-1);\n }\n\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n }\n\n /** Selects every non-disabled option and reports the new value to the `ControlValueAccessor`. */\n selectAll(): void {\n this.options.forEach((option) => option.setSelected(true));\n\n this.reportValueChange();\n }\n\n /** Deselects every option and reports the new value to the `ControlValueAccessor`. */\n deselectAll(): void {\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 const optionHeight = this.options.first.getHeight();\n\n // `getHeight()` is 0 whenever the option is not laid out (SSR, jsdom, `display: none`);\n // dividing by it would hand the key manager a `NaN` page size.\n if (!optionHeight) {\n return;\n }\n\n this.keyManager.withScrollSize(Math.floor(this.getHeight() / optionHeight));\n }\n\n setSelectedOptionsByClick(option: KbqListOption<T>, 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<T>, 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\n // `previousActiveItemIndex` stays -1 until the key manager has moved at least once, so a\n // shift + click before any keyboard navigation has no anchor to extend the range from.\n if (toIndex === fromIndex || !this.isValidIndex(fromIndex) || !this.isValidIndex(toIndex)) {\n return;\n }\n\n const selectedOptionState = options[fromIndex].selected;\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: T[] | T | null): void {\n this.hasWrittenValue = true;\n\n // A form control may push a bare value instead of an array; normalize it here so that\n // `_value` always matches its declared type and stays safe to iterate over.\n this._value = values == null ? null : Array.isArray(values) ? values : [values];\n\n if (this.options) {\n this.setOptionsFromValues(this._value ?? []);\n }\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: T[]) => 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 // `KbqListOption.disabled` reads the list through its getter, so disabling the list cascades\n // to every option without overwriting their own `disabled` inputs.\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n }\n\n /** Values of the currently selected options. */\n getSelectedOptionValues(): T[] {\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<T> = this.options.toArray()[focusedIndex];\n\n if (focusedOption && !focusedOption.disabled && 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 /** Whether `listOption` is allowed to be deselected, given {@link noUnselectLast}. */\n canDeselectLast(listOption: KbqListOption<T>): boolean {\n return !(this.noUnselectLast && this.selectionModel.selected.length === 1 && listOption.selected);\n }\n\n /**\n * Rendered height of the element, or 0 when it is not laid out (SSR, jsdom, `display: none`).\n * @docs-private\n */\n getHeight(): number {\n return this.elementRef.nativeElement.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<T>): void {\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.selectAllHandler(event, this);\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 (this.horizontal() ? keyCode === RIGHT_ARROW : keyCode === DOWN_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (this.horizontal() ? keyCode === LEFT_ARROW : 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 } else {\n // Everything the list does not navigate on itself goes to the key manager, which is what\n // drives type-ahead. Arrow keys never reach it — the branches above own them — so the\n // manager's own orientation config cannot double-handle them.\n this.keyManager.onKeydown(event);\n }\n\n if (this.keyManager.activeItem && this.isNavigationKey(event)) {\n this.setSelectedOptionsByKey(\n this.keyManager.activeItem,\n hasModifierKey(event, 'shiftKey'),\n // ctrlKey is for Windows, metaKey is for MacOS\n hasModifierKey(event, 'ctrlKey', 'metaKey')\n );\n }\n }\n\n /** Whether the key just handled moved the active option, taking the list orientation into account. */\n private isNavigationKey(event: KeyboardEvent): boolean {\n if (this.horizontal() && [LEFT_ARROW, RIGHT_ARROW].includes(event.keyCode)) {\n return true;\n }\n\n return isVerticalMovement(event);\n }\n\n // Reports a value change to the ControlValueAccessor\n reportValueChange(): void {\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<T>): void {\n this.selectionChange.emit(new KbqListSelectionChange<T>(this, option));\n }\n\n private initializeSelection(): void {\n // Several triggers land in the same turn — `options.changes`, the comparator effect, a form write.\n // They would all apply the identical value, so the first one queued does the work for all of them.\n if (this.pendingSelectionInit) {\n return;\n }\n\n this.pendingSelectionInit = true;\n\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 this.pendingSelectionInit = false;\n\n // `options` is a content query: the comparator effect can reach this before it has settled.\n // Once a form control has written, an empty value applies as an empty selection instead of\n // being skipped, so that swapping the comparator also clears what the previous one matched.\n // Without a control the list has no model to speak for, and `[selected]` options stand.\n if (this.options && (this._value || this.hasWrittenValue)) {\n this.setOptionsFromValues(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(String(this.keyManager.activeItem!.value));\n }\n\n /**\n * Re-points the focus/blur streams at the current options every time the query list changes.\n * `switchMap` tears down the previous `merge` for us, so no manual subscription bookkeeping.\n */\n private listenToOptionsFocus(): void {\n this.options.changes\n .pipe(\n startWith(null),\n switchMap(() => this.optionFocusChanges),\n takeUntilDestroyed(this.destroyRef)\n )\n .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.options.changes\n .pipe(\n startWith(null),\n switchMap(() => this.optionBlurChanges),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.blur());\n }\n\n /** Checks whether any of the options is focused. */\n private hasFocusedOption(): boolean {\n return this.options.some((option) => option.hasFocus);\n }\n\n // Returns the option with the specified value.\n private getOptionByValue(value: T): KbqListOption<T> | undefined {\n const compareWith = this.compareWith();\n\n // `null`/`undefined` are left to the comparator rather than rejected here: an option declared\n // without a `[value]` reports `undefined` back through the form control, and has to be able to\n // find itself again when that value is re-applied.\n return this.options.find((option) => runCompareWith(compareWith, option.value, value));\n }\n\n // Sets the selected options based on the specified values.\n private setOptionsFromValues(values: T[]): void {\n // Resolved up front and applied as a delta: `setSelected` early-returns on an unchanged state, so\n // re-applying the same value writes nothing to the `SelectionModel` and schedules no change\n // detection. Deselecting everything first would churn both on every call.\n const selection = new Set(values.map((value) => this.getOptionByValue(value)));\n\n this.options.forEach((option) => option.setSelected(selection.has(option)));\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<T>): number {\n return this.options.toArray().indexOf(option);\n }\n\n private setupDropListInitialProperties(): void {\n // Lets the `dropped` handler map a `CdkDropList` back to the list that owns it.\n this.dropList.data = this;\n // The drop position is shown by an insertion indicator instead of by opening a gap, so CDK must\n // not sort: the options stay put and the dragged one keeps its slot as a faded placeholder.\n // Both flags are re-read from the directive on every drag start, so assigning once is enough.\n this.dropList.sortingDisabled = true;\n // Without an anchor the placeholder follows the option into the connected list, leaving the\n // origin list with a hole instead of the faded row.\n this.dropList.hasAnchor = true;\n this.syncDraggableState();\n\n effect(() => {\n this.dropList.orientation = this.horizontal() ? 'horizontal' : 'vertical';\n // `CdkDropList` resolves its siblings on every drag start, so a late assignment is picked up.\n this.dropList.connectedTo = this.resolveConnectedDropLists();\n });\n\n // `enter()` is not gated on `sortingDisabled`, so the placeholder follows the option into\n // whichever list it is dragged over and pushes that list's options apart. Only the list the\n // drag started in may show it — there it is the faded row left behind. Toggled imperatively\n // because the placeholder is already in the DOM by the time this runs, and waiting for change\n // detection would let the shifted layout paint for a frame.\n this.dropList.entered.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ item }) => {\n item.getPlaceholderElement().classList.toggle(\n 'kbq-list-option_foreign-placeholder',\n item.dropContainer.data !== this\n );\n });\n\n this.dropList.dropped\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ previousIndex, previousContainer, container, item, event }) => {\n const { option }: KbqListOptionDragData = item.data;\n const target: KbqListSelection = container.data;\n // Sorting is disabled, so CDK reports the untouched starting index. The gap the indicator\n // marked is the real target; without one the pointer was either outside every list we know\n // or over the place the option already occupies, and both resolve to a move that changes\n // nothing.\n const currentIndex = target.dropIndex ?? previousIndex;\n\n this.clearDropIndicators(option);\n\n this.dropped.emit({\n option,\n previousIndex,\n currentIndex,\n previousContainer: previousContainer.data,\n container: target,\n event\n });\n\n this.followMovedOption(option, target);\n });\n }\n\n /**\n * `CdkDropList` numbers only the options it has rendered, so inside a virtual scroll the indices\n * `dropped` reports do not address the consumer's backing array and the move silently lands on the\n * wrong item. Warn instead of letting it pass unnoticed.\n */\n private warnOnUnsupportedDragContainer(): void {\n // Runs on every `draggable`/`disabled` change as well as on init, so it has to tolerate being\n // called before the content children exist and to stay quiet once it has had its say.\n if (this.hasWarnedOnDragContainer || !isDevMode() || !this.draggable || !this.platform.isBrowser) {\n return;\n }\n\n const insideVirtualScroll = !!this.elementRef.nativeElement.querySelector('cdk-virtual-scroll-viewport');\n\n if (insideVirtualScroll) {\n // eslint-disable-next-line no-console\n console.warn(\n 'KbqListSelection: `draggable` is not supported inside `cdk-virtual-scroll-viewport`. The ' +\n 'indices reported by `dropped` count only the rendered options.'\n );\n }\n\n this.hasWarnedOnDragContainer = insideVirtualScroll;\n }\n\n /** Keeps the underlying CDK directives in sync with the resolved `draggable` state. */\n private syncDraggableState(): void {\n this.dropList.disabled = !this.draggable;\n this.options?.forEach((option) => option.syncDraggableState());\n this.warnOnUnsupportedDragContainer();\n this.changeDetectorRef.markForCheck();\n }\n\n private normalizeConnectedTo(): readonly (KbqListSelection | string)[] {\n const connectedTo = this.connectedTo();\n\n return Array.isArray(connectedTo) ? connectedTo : [connectedTo as KbqListSelection | string];\n }\n\n private resolveConnectedLists(): KbqListSelection[] {\n return this.normalizeConnectedTo().filter((item): item is KbqListSelection => typeof item !== 'string');\n }\n\n private resolveConnectedDropLists(): (CdkDropList<KbqListSelection> | string)[] {\n return this.normalizeConnectedTo().map((item) => (typeof item === 'string' ? item : item.dropList));\n }\n\n /**\n * Tracks the dragged option and paints the insertion indicator in whichever list the pointer is\n * over. Lists connected by `id` alone cannot be resolved to an instance, so they never light up.\n *\n * @docs-private\n */\n onOptionDragMoved(option: KbqListOption, pointer: { x: number; y: number }): void {\n const lists: KbqListSelection[] = [this, ...this.resolveConnectedLists()];\n const hovered = lists.find((list) => list.containsPoint(pointer));\n\n for (const list of lists) {\n if (list !== hovered) {\n list.clearDropIndicator();\n }\n }\n\n hovered?.showDropIndicator(option, pointer);\n\n // Toggled on the element rather than through a signal: `moved` arrives outside the Angular zone,\n // and the cursor may not lag a frame behind the pointer.\n option.getHostElement().classList.toggle(DROP_FORBIDDEN_CLASS, !hovered);\n }\n\n /**\n * Drops the indicator in every list that could be showing one for this drag.\n *\n * @docs-private\n */\n clearDropIndicators(option: KbqListOption): void {\n const lists: KbqListSelection[] = [this, ...this.resolveConnectedLists(), option.listSelection];\n\n for (const list of lists) {\n list.clearDropIndicator();\n }\n\n option.getHostElement().classList.remove(DROP_FORBIDDEN_CLASS);\n }\n\n private clearDropIndicator(): void {\n this.dropIndex = null;\n this.dropIndicatorOffset.set(null);\n }\n\n private containsPoint({ x, y }: { x: number; y: number }): boolean {\n if (!this.draggable) {\n return false;\n }\n\n const { top, right, bottom, left } = this.elementRef.nativeElement.getBoundingClientRect();\n\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n /**\n * Resolves the gap the pointer sits in and positions the indicator on it. Geometry is read on every\n * move rather than cached at drag start: nothing in the list reflows while dragging, but CDK\n * auto-scrolls near the edges, which would silently invalidate a cache.\n */\n private showDropIndicator(dragged: KbqListOption, pointer: { x: number; y: number }): void {\n const horizontal = this.horizontal();\n // The dragged option is left out on purpose: CDK pulls its host element out of the flow, and\n // excluding it makes the resulting gap index directly usable as `currentIndex` — that is exactly\n // the index space `moveItemInArray` and `transferArrayItem` expect.\n const rects = this.options\n .filter((option) => option !== dragged)\n .map((option) => option.getHostElement().getBoundingClientRect());\n\n const startOf = (rect: DOMRect) => (horizontal ? rect.left : rect.top);\n const endOf = (rect: DOMRect) => (horizontal ? rect.right : rect.bottom);\n const midpointOf = (rect: DOMRect) => (startOf(rect) + endOf(rect)) / 2;\n\n const position = horizontal ? pointer.x : pointer.y;\n const index = rects.filter((rect) => position >= midpointOf(rect)).length;\n\n // The dragged option is not among `rects`, so the gaps above and below it collapse into the one\n // carrying its own index — the place it already occupies. Marking it would promise a move that\n // changes nothing, so the indicator stays hidden and the drop falls back to `previousIndex`.\n if (index === this.getOptionIndex(dragged)) {\n this.clearDropIndicator();\n\n return;\n }\n\n const container = this.elementRef.nativeElement.getBoundingClientRect();\n const scrolled = horizontal\n ? this.elementRef.nativeElement.scrollLeft\n : this.elementRef.nativeElement.scrollTop;\n\n // The gap sits before the first option, or right after the one that precedes it. An empty list\n // has no options to measure, so the indicator goes to the top of its content box.\n let boundary = startOf(container);\n\n if (rects.length) {\n boundary = index === 0 ? startOf(rects[0]) : endOf(rects[index - 1]);\n }\n\n this.dropIndex = index;\n this.dropIndicatorOffset.set(boundary - startOf(container) + scrolled);\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Points the key manager at the option's new place, but only once the consumer has actually applied\n * the move — the list never reorders its own content, so nothing happens if `dropped` is left\n * unhandled. `setActiveItem` also re-anchors `previousActiveItemIndex`, which `options.changes`\n * leaves behind on the slot the option came from and shift-range selection would extend from.\n */\n private followMovedOption(option: KbqListOption, container: KbqListSelection): void {\n const { value } = option;\n\n // Tracked on the list the move is awaited on, so that a move into a connected list does not\n // cancel one still pending here. A move that is never applied leaves its subscription pending,\n // so drop the previous one first.\n container.pendingMoveSubscription?.unsubscribe();\n\n container.pendingMoveSubscription = container.options.changes\n .pipe(take(1), takeUntilDestroyed(container.destroyRef))\n .subscribe(() => {\n const options = container.options.toArray();\n // Reordering within a list keeps the instance; moving between lists recreates it.\n const index = options.includes(option)\n ? options.indexOf(option)\n : options.findIndex((item) => runCompareWith(container.compareWith(), item.value, value));\n\n if (index !== -1) {\n container.keyManager.setActiveItem(index);\n }\n });\n }\n\n // View to model callback that should be called whenever the selected options change.\n private onChange: (value: T[]) => void = () => {};\n\n /**\n * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used,\n * which toggles the selection of all non-disabled options.\n */\n @Input()\n get selectAllHandler(): (event: KeyboardEvent, list: KbqListSelection<T>) => void {\n return this._selectAllHandler;\n }\n\n set selectAllHandler(fn: (event: KeyboardEvent, list: KbqListSelection<T>) => void) {\n if (typeof fn !== 'function') {\n throw Error('`selectAllHandler` must be a function.');\n }\n\n this._selectAllHandler = fn;\n }\n\n private _selectAllHandler(event: KeyboardEvent, list: KbqListSelection<T>): void {\n event.preventDefault();\n\n const options = list.options.toArray();\n\n toggleSelectAll<KbqListOption<T>>(\n {\n items: options,\n isSelectable: (option) => !option.disabled,\n isSelected: (option) => option.selected,\n setSelected: (option, selected) => option.setSelected(selected)\n },\n { allowDeselect: list.selectAllToggle() }\n );\n\n list.reportValueChange();\n\n list.onSelectAll.emit(\n new KbqListSelectAllEvent(\n list,\n options.filter((option) => !option.disabled)\n )\n );\n }\n\n private copyActiveOption(event: KeyboardEvent): void {\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/**\n * Marker directive for the secondary line of a `kbq-list-option`.\n *\n * Purely a styling hook: it adds the `kbq-list-option-caption` class the list theme keys its\n * muted caption typography and per-state colors off.\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 CdkDragPreview,\n KbqPseudoCheckbox,\n KbqActionContainer\n ],\n templateUrl: './list-option.html',\n providers: [\n { provide: KBQ_OPTION_ACTION_PARENT, useExisting: KbqListOption },\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqListOption }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-list-option',\n role: 'option',\n '[class.kbq-selected]': 'selected',\n '[class.kbq-list-option_multiple]': 'listSelection.multiple',\n '[class.kbq-list-option_draggable]': 'draggable',\n '[class.kbq-list-option_grab-cursor]': 'showsGrabCursor',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-focused]': 'hasFocus',\n '[class.kbq-action-button-focused]': 'actionButton()?.active',\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled || null',\n '[attr.tabindex]': 'tabIndex',\n '(focusin)': 'focus()',\n '(blur)': 'blur()',\n '(click)': 'handleClick($event)',\n '(keydown)': 'onKeydown($event)'\n },\n hostDirectives: [CdkDrag],\n exportAs: 'kbqListOption',\n preserveWhitespaces: false\n})\nexport class KbqListOption<T = any> implements OnDestroy, OnInit, IFocusableOption, KbqTitleTextRef {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetector = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private readonly drag = inject<CdkDrag<KbqListOptionDragData>>(CdkDrag, { host: true });\n private readonly destroyRef = inject(DestroyRef);\n listSelection: KbqListSelection<T> = inject(KbqListSelection);\n readonly group = inject(KbqOptgroup, { optional: true });\n hasFocus: boolean = false;\n preventBlur: boolean = false;\n\n readonly onFocus = new Subject<KbqOptionEvent<T>>();\n\n readonly onBlur = new Subject<KbqOptionEvent<T>>();\n\n readonly actionButton = contentChild(KbqOptionActionComponent);\n\n // `KbqOptionActionComponent` reads these as directive instances through KBQ_OPTION_ACTION_PARENT,\n // so they must stay decorator queries. A signal `contentChild` would expose the query function\n // instead of the trigger, making `dropdownTrigger.dropdownClosed` undefined and throwing on `.pipe`\n // when an action button is rendered — see #DS-5079.\n @ContentChild(KbqTooltipTrigger) tooltipTrigger?: KbqTooltipTrigger;\n @ContentChild(KbqDropdownTrigger) dropdownTrigger?: KbqDropdownTrigger;\n readonly pseudoCheckbox = contentChild(KbqPseudoCheckbox);\n\n /**\n * Drag handles the consumer has projected into the option. Nothing else reads them — `CdkDrag`\n * collects its own through DI — they only tell the option whether the whole row starts a drag.\n */\n private readonly dragHandles = contentChildren(CDK_DRAG_HANDLE, { descendants: true });\n\n readonly text = viewChild.required<ElementRef>('text');\n\n /**\n * Not a duplicate of {@link text}: this is the `KbqTitleTextRef` property that `title.directive.ts`\n * reads through `KBQ_TITLE_TEXT_REF`. The interface is a plain `ElementRef`, so it cannot become a\n * signal query without breaking that contract — same class of constraint as #DS-5079.\n */\n @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n // Whether the label should appear before or after the checkbox. Defaults to 'after'\n readonly checkboxPosition = input<'before' | 'after'>(undefined!);\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 /**\n * Value of the option, reported through the list's `ControlValueAccessor`.\n * Stays an accessor input: the setter drops the selection when the value is replaced.\n */\n @Input()\n get value(): T {\n return this._value;\n }\n set value(newValue: T) {\n // An equal-but-new object — an immutable refetch, a `@for` tracked by id — must not drop the\n // selection, so the incoming value is put to the model rather than to the value it replaces.\n // That keeps the comparator in its documented `(optionValue, modelValue)` order, which an\n // asymmetric comparator (options carry objects, the model carries ids) depends on.\n //\n // The reference check ahead of it is not just a fast path: it is what keeps an unchanged value\n // from being dropped when the comparator throws, since a swallowed throw also reads as \"no match\".\n const modelValues = this.listSelection._value;\n\n if (\n this.inputsInitialized &&\n this.selected &&\n newValue !== this._value &&\n modelValues != null &&\n !modelValues.some((modelValue) => runCompareWith(this.listSelection.compareWith(), newValue, modelValue))\n ) {\n this.selected = false;\n }\n\n this._value = newValue;\n }\n private _value: T;\n\n /**\n * Whether the option is disabled.\n * Stays an accessor input: the getter also reports the disabled state inherited from the list\n * and the option group, which a signal `input()` cannot express.\n */\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.syncDraggableState();\n }\n }\n\n private _disabled = false;\n\n /**\n * Whether the option can be reordered by dragging. Set it to `false` to pin a single option while\n * the rest of the list stays draggable. Unrelated to `disabled`: the option keeps taking focus and\n * selection.\n *\n * Stays an accessor input: the getter reports the resolved state, which the option can only narrow —\n * the list gates its whole drop list, so an option cannot opt back in on its own.\n */\n @Input({ transform: booleanAttribute })\n get draggable(): boolean {\n return this._draggable && this.listSelection.draggable && !this.disabled;\n }\n\n set draggable(value: boolean) {\n this._draggable = value;\n this.syncDraggableState();\n }\n\n private _draggable = true;\n\n /**\n * Whether the option renders a pseudo-checkbox.\n * Stays an accessor input: when unset the getter falls back to the list's own mode.\n */\n @Input()\n get showCheckbox(): boolean {\n return this._showCheckbox !== undefined ? this._showCheckbox : this.listSelection.showCheckbox;\n }\n\n set showCheckbox(value: BooleanInput) {\n this._showCheckbox = coerceBooleanProperty(value);\n }\n\n private _showCheckbox: boolean | undefined;\n\n /**\n * Whether the option is selected.\n * Stays an accessor input: the state lives in the list's `SelectionModel`, not on the option.\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(): number | null {\n return this.disabled ? null : -1;\n }\n\n protected get externalPseudoCheckbox(): boolean {\n return !!this.pseudoCheckbox();\n }\n\n /**\n * Whether the row itself advertises the grab. Gated on `draggable` so that a pinned option inside a\n * `dragCursor=\"grab\"` list does not promise a pick-up it would refuse. The handle case is left to\n * CSS, which already hands the grab over to a projected `cdkDragHandle`.\n */\n protected get showsGrabCursor(): boolean {\n return this.draggable && this.listSelection.dragCursor() === 'grab';\n }\n\n constructor() {\n this.syncDraggableState();\n\n // The only class that lands on the preview in both modes: the text one is a plate of our own,\n // the full one a clone of the option. Styling keys \"a drag is in progress\" off it.\n this.drag.previewClass = DRAG_PREVIEW_CLASS;\n\n // Without a projected handle the whole row starts the drag, so a touch has to lose to a scroll\n // gesture first. A handle is unambiguous and may start immediately. `CdkDrag` re-reads the delay\n // on every `beforeStarted`, so assigning it whenever the query settles is enough.\n effect(() => {\n this.drag.dragStartDelay = this.dragHandles().length ? 0 : { touch: 300, mouse: 0 };\n });\n\n // Assigned lazily: referencing `this` while the host directive is still being constructed\n // would capture a half-initialized option.\n // Nothing is cleared on `ended`: it fires *before* `dropped`, so tearing the indicator down\n // there would take the resolved target index with it and turn every drop into a no-op.\n this.drag.started.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.drag.data = { option: this };\n this.listSelection.clearDropIndicators(this);\n });\n\n // Sorting is disabled, so CDK gives no running feedback about where the option would land —\n // the owning list derives it from the pointer and paints the insertion indicator itself.\n this.drag.moved.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ pointerPosition }) => {\n this.listSelection.onOptionDragMoved(this, pointerPosition);\n });\n }\n\n /**\n * Keeps the underlying `CdkDrag` in sync with the resolved `draggable` state.\n *\n * @docs-private\n */\n syncDraggableState(): void {\n this.drag.disabled = !this.draggable;\n this.changeDetector.markForCheck();\n }\n\n ngOnInit(): void {\n // Resolving the model value is the list's job, not the option's. An option that matched itself\n // here answered a different question than `getOptionByValue` does — every match self-selected,\n // while the list picks the first — so a comparator that matches more than one option produced a\n // different selection depending on which path ran. The list re-resolves on `options.changes`.\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 /** Toggles the selected state of this option. */\n toggle(): void {\n this.selected = !this.selected;\n }\n\n getLabel(): string {\n const text = this.text();\n\n return text ? (text.nativeElement.textContent ?? '') : '';\n }\n\n /**\n * Splits the option's text into the two lines the `text` drag preview shows. The caption is\n * projected into the same container as the label, so the label is whatever that container holds\n * apart from the caption — subtracting one string from the other would be guesswork.\n *\n * Taken off a clone rather than by walking the container's children, the way `KbqDropdownItem`\n * drops icons out of its own label: `textContent` on an element skips the comment nodes Angular\n * leaves behind for its anchors, while reading one of those nodes directly would hand back the\n * anchor's name.\n *\n * Trimmed because `htmlWhitespaceSensitivity: 'ignore'` lets the indentation of the consumer's\n * template into the projected text.\n *\n * @docs-private\n */\n getDragPreviewText(): { label: string; caption: string } {\n const clone = (this.text().nativeElement as HTMLElement).cloneNode(true) as HTMLElement;\n const caption = clone.querySelector('.kbq-list-option-caption');\n\n caption?.remove();\n\n return { label: (clone.textContent ?? '').trim(), caption: (caption?.textContent ?? '').trim() };\n }\n\n /** Sets the selected state directly on the list's `SelectionModel`, bypassing the `selected` input setter. */\n setSelected(selected: boolean): void {\n const { selectionModel } = this.listSelection;\n\n if (!selectionModel) {\n return;\n }\n\n // The model is consulted alongside the mirror so that an option the model dropped behind the\n // mirror's back — single-selection mode does that whenever another option is selected — can still\n // be re-applied instead of being early-returned away.\n if (this._selected === selected && selectionModel.isSelected(this) === selected) {\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 /**\n * Rendered height of the element, or 0 when it is not laid out (SSR, jsdom, `display: none`).\n * @docs-private\n */\n getHeight(): number {\n return this.elementRef.nativeElement.getClientRects()?.[0]?.height ?? 0;\n }\n\n /** Handles click events on the list option. */\n protected 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 /** Handles keydown events on the list option. */\n protected onKeydown($event: KeyboardEvent): void {\n kbqFocusOptionActionOnTab($event, this.actionButton());\n }\n\n /** Moves DOM focus to this option, unless it is disabled or already focused. */\n focus(): void {\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 /** Marks this option as blurred once the zone stabilizes, unless {@link preventBlur} is set. */\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 /** The option's host DOM element. */\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 <!-- Decorative: assistive technology reads the selected state from the option's own aria-selected. -->\n <kbq-pseudo-checkbox aria-hidden=\"true\" [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\n@if (listSelection.dragPreview() === 'text') {\n <!--\n Registers with the host `CdkDrag` through `CDK_DRAG_PARENT`, not through a content query, which\n is why it can live in the option's own view. The template body is a single element and nothing\n else: CDK wraps the view in a plain div otherwise, and that wrapper — not this plate — would\n become the preview. The plate is decorative, it repeats text the listbox already exposes.\n -->\n <ng-template cdkDragPreview>\n <div class=\"kbq-list-drag-preview_text\" aria-hidden=\"true\">\n <!-- Read on render rather than cached on `started`: CDK builds the preview before it emits. -->\n @let text = getDragPreviewText();\n <div class=\"kbq-list-drag-preview__label\">{{ text.label }}</div>\n @if (text.caption) {\n <div class=\"kbq-list-drag-preview__caption\">{{ text.caption }}</div>\n }\n </div>\n </ng-template>\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n QueryList,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { KbqLine, KbqLineSetter } from '@koobiq/components/core';\n\n/**\n * A plain, non-selectable list container.\n *\n * Intentionally carries no ARIA role: it is used both as a semantic list (consumers add\n * `role=\"list\"` themselves, as `kbq-file-upload` does) and as a purely visual grouping.\n * For a selectable listbox use `kbq-list-selection` instead.\n */\n@Component({\n selector: 'kbq-list',\n template: '<ng-content />',\n styleUrls: ['./list.scss', 'list-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'kbq-list' }\n})\nexport class KbqList {}\n\n/** A single row of a `kbq-list`. Non-selectable — see `kbq-list-option` for the selectable variant. */\n@Component({\n selector: 'kbq-list-item, a[kbq-list-item]',\n templateUrl: './list-item.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-list-item',\n '(focus)': 'handleFocus()',\n '(blur)': 'handleBlur()'\n },\n preserveWhitespaces: false\n})\nexport class KbqListItem implements AfterContentInit {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @ContentChildren(KbqLine) lines: QueryList<KbqLine>;\n\n ngAfterContentInit(): void {\n new KbqLineSetter(this.lines, this.elementRef);\n }\n\n getHostElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n protected handleFocus(): void {\n this.elementRef.nativeElement.classList.add('kbq-focused');\n }\n\n protected handleBlur(): void {\n this.elementRef.nativeElement.classList.remove('kbq-focused');\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 { CdkDragHandle } from '@angular/cdk/drag-drop';\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 // Re-exported so that a drag handle can be projected into an option without the consumer\n // reaching into `@angular/cdk/drag-drop` — the list hides CDK everywhere else.\n CdkDragHandle,\n KbqPseudoCheckboxModule,\n KbqLine,\n KbqOptionModule,\n KbqActionContainer,\n KbqIconModule,\n KbqList,\n KbqListSelection,\n KbqListItem,\n KbqListOption,\n KbqListOptionCaption\n ],\n exports: [\n CdkDragHandle,\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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"}
|
|
@@ -6,10 +6,10 @@ import { PlatformModule } from '@angular/cdk/platform';
|
|
|
6
6
|
|
|
7
7
|
const kbqLoaderOverlayParent = 'kbq-loader-overlay_parent';
|
|
8
8
|
class KbqLoaderOverlayIndicator {
|
|
9
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
9
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.30", type: KbqLoaderOverlayIndicator, isStandalone: true, selector: "[kbq-loader-overlay-indicator]", host: { classAttribute: "kbq-loader-overlay-indicator" }, ngImport: i0 }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayIndicator, decorators: [{
|
|
13
13
|
type: Directive,
|
|
14
14
|
args: [{
|
|
15
15
|
selector: '[kbq-loader-overlay-indicator]',
|
|
@@ -19,10 +19,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
19
19
|
}]
|
|
20
20
|
}] });
|
|
21
21
|
class KbqLoaderOverlayText {
|
|
22
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
23
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
22
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayText, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.30", type: KbqLoaderOverlayText, isStandalone: true, selector: "[kbq-loader-overlay-text]", host: { classAttribute: "kbq-loader-overlay-text" }, ngImport: i0 }); }
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayText, decorators: [{
|
|
26
26
|
type: Directive,
|
|
27
27
|
args: [{
|
|
28
28
|
selector: '[kbq-loader-overlay-text]',
|
|
@@ -32,10 +32,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
32
32
|
}]
|
|
33
33
|
}] });
|
|
34
34
|
class KbqLoaderOverlayCaption {
|
|
35
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
36
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
35
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayCaption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.30", type: KbqLoaderOverlayCaption, isStandalone: true, selector: "[kbq-loader-overlay-caption]", host: { classAttribute: "kbq-loader-overlay-caption" }, ngImport: i0 }); }
|
|
37
37
|
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayCaption, decorators: [{
|
|
39
39
|
type: Directive,
|
|
40
40
|
args: [{
|
|
41
41
|
selector: '[kbq-loader-overlay-caption]',
|
|
@@ -85,10 +85,10 @@ class KbqLoaderOverlay {
|
|
|
85
85
|
ngOnDestroy() {
|
|
86
86
|
this.renderer.removeClass(this.parent, kbqLoaderOverlayParent);
|
|
87
87
|
}
|
|
88
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
89
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
88
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlay, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.30", type: KbqLoaderOverlay, isStandalone: true, selector: "kbq-loader-overlay", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, transparent: { classPropertyName: "transparent", publicName: "transparent", isSignal: true, isRequired: false, transformFunction: null }, card: { classPropertyName: "card", publicName: "card", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "loaderSizeClass", "class.kbq-loader-overlay_empty": "isEmpty", "class.kbq-loader-overlay_transparent": "transparent()", "class.kbq-loader-overlay_filled": "!transparent()", "class.kbq-loader-overlay_card": "card()" }, classAttribute: "kbq-loader-overlay" }, queries: [{ propertyName: "externalIndicator", first: true, predicate: KbqLoaderOverlayIndicator, descendants: true }, { propertyName: "externalText", first: true, predicate: KbqLoaderOverlayText, descendants: true }, { propertyName: "externalCaption", first: true, predicate: KbqLoaderOverlayCaption, descendants: true }], ngImport: i0, template: "<div class=\"kbq-loader-overlay__container\">\n @if (isExternalIndicator) {\n <ng-content select=\"[kbq-loader-overlay-indicator]\" />\n } @else {\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"spinnerSize\" />\n }\n\n @if (isExternalText) {\n <ng-content select=\"[kbq-loader-overlay-text]\" />\n } @else {\n @if (text) {\n <div class=\"kbq-loader-overlay-text\">\n {{ text }}\n </div>\n }\n }\n\n @if (isExternalCaption) {\n <ng-content select=\"[kbq-loader-overlay-caption]\" />\n } @else {\n @if (caption) {\n <div class=\"kbq-loader-overlay-caption\">\n {{ caption }}\n </div>\n }\n }\n</div>\n", styles: [".kbq-loader-overlay_parent{position:relative}.kbq-loader-overlay-text,.kbq-loader-overlay-caption{max-width:90%;text-align:center}.kbq-loader-overlay{--padding-horizontal: var(--kbq-size-3xl);--loader-margin-bottom: var(--kbq-size-xxl);--content-gap-vertical: var(--kbq-size-l);position:absolute;display:flex;flex-direction:column;justify-content:center;align-items:center;inset:0;border-radius:inherit;z-index:10}.kbq-loader-overlay .kbq-loader-overlay__container{display:flex;flex-direction:column;justify-content:center;align-items:center;width:80%;max-width:80%}.kbq-loader-overlay{padding-left:var(--padding-horizontal);padding-right:var(--padding-horizontal)}.kbq-loader-overlay .kbq-progress-spinner:has(+.kbq-loader-overlay-text,+.kbq-loader-overlay-caption){margin-bottom:var(--loader-margin-bottom)}.kbq-loader-overlay .kbq-loader-overlay-text{margin-bottom:var(--content-gap-vertical)}.kbq-loader-overlay.kbq-loader-overlay_big{--padding-horizontal: var(--kbq-loader-overlay-size-big-overlay-padding-horizontal);--loader-margin-bottom: var(--kbq-loader-overlay-size-big-loader-margin-bottom);--content-gap-vertical: var(--kbq-loader-overlay-size-big-content-content-gap-vertical)}.kbq-loader-overlay.kbq-loader-overlay_normal{--padding-horizontal: var(--kbq-loader-overlay-size-normal-overlay-padding-horizontal);--loader-margin-bottom: var(--kbq-loader-overlay-size-normal-loader-margin-bottom);--content-gap-vertical: var(--kbq-loader-overlay-size-normal-content-content-gap-vertical)}.kbq-loader-overlay.kbq-loader-overlay_compact{--padding-horizontal: var(--kbq-loader-overlay-size-compact-overlay-padding-horizontal);--loader-margin-bottom: var(--kbq-loader-overlay-size-compact-loader-margin-bottom);--content-gap-vertical: var(--kbq-loader-overlay-size-compact-content-content-gap-vertical)}.kbq-loader-overlay_filled.kbq-loader-overlay{background:var(--kbq-loader-overlay-filled-overlay-background)}.kbq-loader-overlay_filled .kbq-loader-overlay-text{color:var(--kbq-loader-overlay-filled-text-color)}.kbq-loader-overlay_filled .kbq-loader-overlay-caption{color:var(--kbq-loader-overlay-filled-caption-color)}.kbq-loader-overlay_transparent.kbq-loader-overlay{background:var(--kbq-loader-overlay-transparent-overlay-background)}.kbq-loader-overlay_transparent .kbq-loader-overlay-text{color:var(--kbq-loader-overlay-transparent-text-color)}.kbq-loader-overlay_transparent .kbq-loader-overlay-caption{color:var(--kbq-loader-overlay-transparent-caption-color)}.kbq-loader-overlay_card.kbq-loader-overlay_filled,.kbq-loader-overlay_card.kbq-loader-overlay_transparent{background:color-mix(in srgb,var(--kbq-loader-overlay-card-overlay-background) calc(var(--kbq-opacity-overlay) * 100%),transparent)}.kbq-loader-overlay_big .kbq-loader-overlay-text{font-size:var(--kbq-typography-headline-font-size);font-style:var(--kbq-typography-headline-font-style);font-weight:var(--kbq-typography-headline-font-weight);line-height:var(--kbq-typography-headline-line-height);font-family:var(--kbq-typography-headline-font-family);text-transform:var(--kbq-typography-headline-text-transform);font-feature-settings:var(--kbq-typography-headline-font-feature-settings);letter-spacing:var(--kbq-typography-headline-letter-spacing)}.kbq-loader-overlay_big .kbq-loader-overlay-caption{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-loader-overlay_normal .kbq-loader-overlay-text{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-loader-overlay_normal .kbq-loader-overlay-caption,.kbq-loader-overlay_compact .kbq-loader-overlay-text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-loader-overlay_compact .kbq-loader-overlay-caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n", ":where(.kbq-loader-overlay){--kbq-loader-overlay-size-big-overlay-padding-horizontal: var(--kbq-size-3xl);--kbq-loader-overlay-size-big-loader-margin-bottom: var(--kbq-size-xxl);--kbq-loader-overlay-size-big-content-content-gap-vertical: var(--kbq-size-l);--kbq-loader-overlay-size-normal-overlay-padding-horizontal: var(--kbq-size-3xl);--kbq-loader-overlay-size-normal-loader-margin-bottom: var(--kbq-size-xxl);--kbq-loader-overlay-size-normal-content-content-gap-vertical: var(--kbq-size-xxs);--kbq-loader-overlay-size-compact-overlay-padding-horizontal: var(--kbq-size-3xl);--kbq-loader-overlay-size-compact-loader-margin-bottom: var(--kbq-size-s);--kbq-loader-overlay-size-compact-content-content-gap-vertical: var(--kbq-size-xxs);--kbq-loader-overlay-transparent-overlay-background: var(--kbq-background-overlay-inverse);--kbq-loader-overlay-transparent-text-color: var(--kbq-foreground-contrast);--kbq-loader-overlay-transparent-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-loader-overlay-filled-overlay-background: var(--kbq-background-bg);--kbq-loader-overlay-filled-text-color: var(--kbq-foreground-contrast);--kbq-loader-overlay-filled-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-loader-overlay-card-overlay-background: var(--kbq-background-card)}\n"], dependencies: [{ kind: "component", type: KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["id", "value", "mode", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
90
90
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlay, decorators: [{
|
|
92
92
|
type: Component,
|
|
93
93
|
args: [{ selector: 'kbq-loader-overlay', imports: [KbqProgressSpinner], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
94
94
|
class: 'kbq-loader-overlay',
|
|
@@ -114,8 +114,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
114
114
|
}] } });
|
|
115
115
|
|
|
116
116
|
class KbqLoaderOverlayModule {
|
|
117
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
118
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
117
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
118
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayModule, imports: [A11yModule,
|
|
119
119
|
PlatformModule,
|
|
120
120
|
KbqProgressSpinnerModule,
|
|
121
121
|
KbqLoaderOverlay,
|
|
@@ -125,12 +125,12 @@ class KbqLoaderOverlayModule {
|
|
|
125
125
|
KbqLoaderOverlayIndicator,
|
|
126
126
|
KbqLoaderOverlayText,
|
|
127
127
|
KbqLoaderOverlayCaption] }); }
|
|
128
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
128
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayModule, imports: [A11yModule,
|
|
129
129
|
PlatformModule,
|
|
130
130
|
KbqProgressSpinnerModule,
|
|
131
131
|
KbqLoaderOverlay] }); }
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqLoaderOverlayModule, decorators: [{
|
|
134
134
|
type: NgModule,
|
|
135
135
|
args: [{
|
|
136
136
|
imports: [
|