@koobiq/components 19.4.1 → 19.6.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/LICENSE +1 -1
- package/accordion/accordion-content.d.ts +1 -1
- package/accordion/accordion-content.directive.d.ts +22 -7
- package/accordion/accordion-header.directive.d.ts +2 -2
- package/accordion/accordion-item.d.ts +74 -3
- package/accordion/accordion-trigger.component.d.ts +15 -2
- package/accordion/accordion-trigger.directive.d.ts +13 -5
- package/accordion/accordion.component.d.ts +67 -6
- package/accordion/accordion.component.scss +9 -27
- package/accordion/public-api.d.ts +0 -2
- package/actions-panel/actions-panel-container.scss +6 -0
- package/actions-panel/actions-panel-tokens.scss +4 -1
- package/autocomplete/autocomplete.component.d.ts +6 -1
- package/autocomplete/autocomplete.module.d.ts +1 -1
- package/autocomplete/autocomplete.scss +14 -3
- package/badge/badge-tokens.scss +3 -3
- package/button/button-group.d.ts +45 -0
- package/button/button-group.scss +17 -0
- package/button/button.component.d.ts +3 -0
- package/button/button.module.d.ts +2 -1
- package/button/public-api.d.ts +1 -0
- package/button-toggle/button-toggle-tokens.scss +1 -1
- package/checkbox/checkbox.d.ts +5 -4
- package/checkbox/checkbox.scss +5 -5
- package/clamped-text/clamped-list.d.ts +41 -0
- package/clamped-text/clamped-text.d.ts +10 -6
- package/clamped-text/constants.d.ts +21 -1
- package/clamped-text/index.d.ts +1 -0
- package/clamped-text/module.d.ts +2 -1
- package/code-block/code-block-tokens.scss +35 -16
- package/code-block/code-block.d.ts +17 -5
- package/code-block/code-block.module.d.ts +1 -1
- package/code-block/code-block.scss +1 -0
- package/code-block/types.d.ts +9 -0
- package/core/common-behaviors/flex.d.ts +4 -0
- package/core/common-behaviors/index.d.ts +1 -0
- package/core/error/error-state-matcher.d.ts +10 -0
- package/core/form-field/form-field-ref.d.ts +3 -1
- package/core/forms/_forms.scss +10 -3
- package/core/locales/en-US.d.ts +2 -0
- package/core/locales/es-LA.d.ts +2 -0
- package/core/locales/locale-service.d.ts +10 -0
- package/core/locales/pt-BR.d.ts +2 -0
- package/core/locales/ru-RU.d.ts +2 -0
- package/core/locales/tk-TM.d.ts +2 -0
- package/core/locales/types.d.ts +2 -0
- package/core/option/_option-action-theme.scss +1 -0
- package/core/option/_option-theme.scss +4 -17
- package/core/option/action-container.scss +4 -6
- package/core/option/option.d.ts +5 -1
- package/core/option/option.scss +5 -0
- package/core/pop-up/pop-up-trigger.d.ts +11 -2
- package/core/select/common.d.ts +4 -4
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +2 -2
- package/core/styles/common/_groups-mixins.scss +79 -0
- package/core/styles/common/_groups.scss +4 -34
- package/core/styles/common/_overlay.scss +5 -1
- package/core/styles/common/_select.scss +4 -0
- package/core/styles/theming/scrollbar-tokens.scss +6 -6
- package/core/styles/visual/_layout.scss +0 -2
- package/core/utils/utils.d.ts +2 -0
- package/datepicker/datepicker-input.directive.d.ts +1 -0
- package/dropdown/dropdown-trigger.directive.d.ts +5 -0
- package/dropdown/dropdown.component.d.ts +2 -1
- package/ellipsis-center/ellipsis-center.directive.d.ts +0 -1
- package/fesm2022/koobiq-components-accordion.mjs +301 -237
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +12 -12
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-app-switcher.mjs +25 -25
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +39 -23
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +14 -14
- 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 +12 -12
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +146 -24
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -20
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +134 -47
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +54 -22
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +28 -28
- package/fesm2022/koobiq-components-core.mjs +313 -257
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +40 -64
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dropdown.mjs +48 -23
- 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 +8 -9
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +39 -39
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +118 -106
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +77 -65
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +32 -28
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +115 -65
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +28 -26
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +23 -17
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-loader-overlay.mjs +28 -19
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +54 -22
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +96 -63
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +34 -34
- package/fesm2022/koobiq-components-navbar.mjs +53 -46
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +16 -16
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +29 -17
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +52 -23
- 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 +14 -14
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +10 -10
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-scrollbar.mjs +12 -12
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +17 -8
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +342 -58
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +50 -41
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +62 -13
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +9 -9
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-tabs.mjs +54 -54
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +44 -47
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +10 -9
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +25 -25
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +10 -10
- package/fesm2022/koobiq-components-timezone.mjs +26 -26
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +8 -9
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +16 -16
- package/fesm2022/koobiq-components-toggle.mjs +12 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +95 -52
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +15 -15
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +15 -12
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +64 -52
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +28 -28
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/filter-bar/filter-search.d.ts +10 -1
- package/filter-bar/pipes/pipe-date.scss +5 -16
- package/form-field/form-field.d.ts +25 -1
- package/form-field/form-field.scss +26 -2
- package/icon/icon-button.component.d.ts +3 -0
- package/icon/icon-button.scss +4 -0
- package/inline-edit/inline-edit-tokens.scss +3 -3
- package/inline-edit/inline-edit.d.ts +31 -11
- package/inline-edit/inline-edit.scss +28 -30
- package/input/input-password.d.ts +1 -0
- package/input/input.d.ts +1 -0
- package/link/_link-theme.scss +18 -8
- package/link/link-tokens.scss +9 -6
- package/link/link.component.d.ts +9 -5
- package/loader-overlay/_loader-overlay-theme.scss +12 -0
- package/loader-overlay/loader-overlay-tokens.scss +1 -0
- package/loader-overlay/loader-overlay.component.d.ts +7 -1
- package/markdown/_markdown-theme.scss +3 -31
- package/markdown/markdown-tokens.scss +0 -11
- package/markdown/markdown.component.d.ts +12 -7
- package/markdown/markdown.scss +0 -11
- package/modal/modal-ref.class.d.ts +1 -0
- package/modal/modal.component.d.ts +14 -8
- package/modal/modal.scss +1 -0
- package/modal/modal.type.d.ts +5 -0
- package/navbar/navbar-item.component.d.ts +3 -1
- package/navbar/navbar.scss +3 -0
- package/overflow-items/overflow-items.d.ts +8 -2
- package/package.json +4 -5
- package/popover/popover.component.d.ts +15 -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/progress-spinner/progress-spinner.scss +1 -0
- package/schematics/ng-add/index.js +4 -6
- package/scrollbar/scrollbar-tokens.scss +7 -7
- package/search-expandable/search-expandable.d.ts +6 -2
- package/select/public-api.d.ts +1 -0
- package/select/select-common.d.ts +30 -0
- package/select/select.component.d.ts +193 -29
- package/select/select.module.d.ts +3 -2
- package/sidepanel/_sidepanel-theme.scss +1 -7
- package/sidepanel/sidepanel-config.d.ts +10 -2
- package/sidepanel/sidepanel.service.d.ts +0 -1
- package/skeleton/skeleton.d.ts +12 -3
- package/skeleton/skeleton.scss +22 -7
- package/split-button/_split-button-theme.scss +2 -1
- package/tabs/_tabs-common.scss +2 -1
- package/tags/tag-input.d.ts +4 -3
- package/tags/tag-list.component.d.ts +1 -0
- package/tags/tag-tokens.scss +4 -4
- package/textarea/textarea.component.d.ts +1 -0
- package/title/title.directive.d.ts +0 -1
- package/toggle/toggle.component.d.ts +4 -3
- package/tooltip/tooltip-tokens.scss +4 -4
- package/tooltip/tooltip.component.d.ts +22 -2
- package/top-bar/top-bar.scss +3 -0
- package/tree/_tree-theme.scss +0 -19
- package/tree/tree-option.component.d.ts +9 -3
- package/tree/tree-option.scss +9 -5
- package/tree/tree-selection.component.d.ts +2 -0
- package/tree-select/tree-select.component.d.ts +1 -0
- package/accordion/accordion-item.directive.d.ts +0 -72
- package/accordion/accordion-root.directive.d.ts +0 -64
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, input, booleanAttribute, Directive, inject, InjectionToken, DestroyRef, EventEmitter, output, afterNextRender, isDevMode, ElementRef, TemplateRef, numberAttribute, Input, Output, ContentChild, ContentChildren, ViewChildren, ViewChild, Optional, Host, Self, Inject, ViewEncapsulation, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@koobiq/components/progress-spinner';
|
|
4
|
+
import { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';
|
|
1
5
|
import { ContentObserver } from '@angular/cdk/observers';
|
|
2
6
|
import { SharedResizeObserver } from '@angular/cdk/observers/private';
|
|
3
|
-
import * as
|
|
4
|
-
import {
|
|
5
|
-
import * as i1 from '@koobiq/components/core';
|
|
6
|
-
import { KbqAbstractSelect, getKbqSelectDynamicMultipleError, getKbqSelectNonFunctionValueError, KbqVirtualOption, KbqComponentColors, KBQ_WINDOW, defaultOffsetY, isUndefined, getKbqSelectNonArrayValueError, KBQ_SELECT_SCROLL_STRATEGY, KBQ_LOCALE_SERVICE, kbqSelectAnimations, KbqSelectFooter, KbqSelectTrigger, KbqSelectMatcher, KbqSelectSearch, KbqOption, KbqOptgroup, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_POPUP, KbqOptionModule, KbqSelectSearchEmptyResult, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER } from '@koobiq/components/core';
|
|
7
|
+
import * as i1$1 from '@koobiq/components/core';
|
|
8
|
+
import { KbqAbstractSelect, getKbqSelectDynamicMultipleError, getKbqSelectNonFunctionValueError, KbqVirtualOption, KbqComponentColors, KBQ_VALIDATION, KBQ_WINDOW, defaultOffsetY, isUndefined, getKbqSelectNonArrayValueError, KBQ_SELECT_SCROLL_STRATEGY, KBQ_LOCALE_SERVICE, kbqSelectAnimations, KbqSelectFooter, KbqSelectTrigger, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqOption, KbqOptgroup, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_POPUP, KbqOptionModule, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER } from '@koobiq/components/core';
|
|
7
9
|
import { KbqTooltipTrigger, KbqToolTipModule } from '@koobiq/components/tooltip';
|
|
8
10
|
import { CdkMonitorFocus, A11yModule } from '@angular/cdk/a11y';
|
|
9
11
|
import * as i3 from '@angular/cdk/bidi';
|
|
@@ -27,6 +29,97 @@ import { SizeXxs } from '@koobiq/design-tokens';
|
|
|
27
29
|
import { Subject, defer, merge, Subscription, BehaviorSubject, fromEvent } from 'rxjs';
|
|
28
30
|
import { switchMap, take, filter, map, delay, debounceTime, distinctUntilChanged, startWith, takeUntil } from 'rxjs/operators';
|
|
29
31
|
|
|
32
|
+
class KbqSelectLoading {
|
|
33
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectLoading, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KbqSelectLoading, isStandalone: true, selector: "kbq-select-loading, [kbq-select-loading]", host: { classAttribute: "kbq-select-loading" }, exportAs: ["kbqSelectLoading"], ngImport: i0, template: `
|
|
35
|
+
<ng-content select="kbq-progress-spinner">
|
|
36
|
+
<div class="layout-row layout-margin-top-4xl layout-margin-bottom-4xl layout-align-center-center">
|
|
37
|
+
<kbq-progress-spinner [mode]="'indeterminate'" />
|
|
38
|
+
</div>
|
|
39
|
+
</ng-content>
|
|
40
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: KbqProgressSpinnerModule }, { kind: "component", type: i1.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["id", "value", "mode", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectLoading, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: 'kbq-select-loading, [kbq-select-loading]',
|
|
46
|
+
imports: [
|
|
47
|
+
KbqProgressSpinnerModule
|
|
48
|
+
],
|
|
49
|
+
template: `
|
|
50
|
+
<ng-content select="kbq-progress-spinner">
|
|
51
|
+
<div class="layout-row layout-margin-top-4xl layout-margin-bottom-4xl layout-align-center-center">
|
|
52
|
+
<kbq-progress-spinner [mode]="'indeterminate'" />
|
|
53
|
+
</div>
|
|
54
|
+
</ng-content>
|
|
55
|
+
`,
|
|
56
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
57
|
+
exportAs: 'kbqSelectLoading',
|
|
58
|
+
host: {
|
|
59
|
+
class: 'kbq-select-loading'
|
|
60
|
+
}
|
|
61
|
+
}]
|
|
62
|
+
}] });
|
|
63
|
+
/**
|
|
64
|
+
* This component renders the error for a Select component.
|
|
65
|
+
* The error message can be displayed in two visual variants: a default centered layout (when [paging] is falsy)
|
|
66
|
+
* or a variant with left‑aligned text suitable for pagination controls (when [paging] is truthy).
|
|
67
|
+
*/
|
|
68
|
+
class KbqSelectError {
|
|
69
|
+
constructor() {
|
|
70
|
+
/** Indicates whether styles for pagination controls should be used. */
|
|
71
|
+
this.paging = input(false, { transform: booleanAttribute });
|
|
72
|
+
}
|
|
73
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectError, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.20", type: KbqSelectError, isStandalone: true, selector: "kbq-select-error, [kbq-select-error]", inputs: { paging: { classPropertyName: "paging", publicName: "paging", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-select-error_default": "!paging()", "class.kbq-select-error_paging": "paging()" }, classAttribute: "kbq-select-error" }, exportAs: ["kbqSelectError"], ngImport: i0, template: `
|
|
75
|
+
<ng-content />
|
|
76
|
+
`, isInline: true, styles: [":host{display:flex;flex-direction:column}:host.kbq-select-error_default{align-items:center;justify-content:center;margin-bottom:var(--kbq-size-3xl);margin-top:var(--kbq-size-3xl)}:host.kbq-select-error_paging{justify-content:start}:host.kbq-select-error_paging ::ng-deep .kbq-select-error__text{padding-left:var(--kbq-size-l)}::ng-deep .kbq-select-error__text{margin-top:var(--kbq-size-xs);margin-bottom:var(--kbq-size-3xs);color:var(--kbq-foreground-error)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectError, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'kbq-select-error, [kbq-select-error]', template: `
|
|
81
|
+
<ng-content />
|
|
82
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'kbqSelectError', host: {
|
|
83
|
+
class: 'kbq-select-error',
|
|
84
|
+
'[class.kbq-select-error_default]': '!paging()',
|
|
85
|
+
'[class.kbq-select-error_paging]': 'paging()'
|
|
86
|
+
}, styles: [":host{display:flex;flex-direction:column}:host.kbq-select-error_default{align-items:center;justify-content:center;margin-bottom:var(--kbq-size-3xl);margin-top:var(--kbq-size-3xl)}:host.kbq-select-error_paging{justify-content:start}:host.kbq-select-error_paging ::ng-deep .kbq-select-error__text{padding-left:var(--kbq-size-l)}::ng-deep .kbq-select-error__text{margin-top:var(--kbq-size-xs);margin-bottom:var(--kbq-size-3xs);color:var(--kbq-foreground-error)}\n"] }]
|
|
87
|
+
}] });
|
|
88
|
+
/**
|
|
89
|
+
* Marks an element as the error text container for a *KbqSelect* component.
|
|
90
|
+
*/
|
|
91
|
+
class KbqSelectErrorText {
|
|
92
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectErrorText, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
93
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqSelectErrorText, isStandalone: true, selector: "[kbq-select-error-text]", host: { classAttribute: "kbq-select-error__text" }, exportAs: ["kbqSelectErrorText"], ngImport: i0 }); }
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectErrorText, decorators: [{
|
|
96
|
+
type: Directive,
|
|
97
|
+
args: [{
|
|
98
|
+
selector: '[kbq-select-error-text]',
|
|
99
|
+
exportAs: 'kbqSelectErrorText',
|
|
100
|
+
host: {
|
|
101
|
+
class: 'kbq-select-error__text'
|
|
102
|
+
}
|
|
103
|
+
}]
|
|
104
|
+
}] });
|
|
105
|
+
/**
|
|
106
|
+
* Component that represents the empty state of a select dropdown.
|
|
107
|
+
*/
|
|
108
|
+
class KbqSelectNoOptions {
|
|
109
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectNoOptions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: KbqSelectNoOptions, isStandalone: true, selector: "kbq-select-no-options, [kbq-select-no-options]", host: { classAttribute: "kbq-select-no-options" }, exportAs: ["kbqSelectNoOptions"], ngImport: i0, template: `
|
|
111
|
+
<ng-content />
|
|
112
|
+
`, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:var(--kbq-size-3xl);padding-top:var(--kbq-size-3xl);color:var(--kbq-foreground-contrast-secondary)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectNoOptions, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: 'kbq-select-no-options, [kbq-select-no-options]', template: `
|
|
117
|
+
<ng-content />
|
|
118
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'kbqSelectNoOptions', host: {
|
|
119
|
+
class: 'kbq-select-no-options'
|
|
120
|
+
}, styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:var(--kbq-size-3xl);padding-top:var(--kbq-size-3xl);color:var(--kbq-foreground-contrast-secondary)}\n"] }]
|
|
121
|
+
}] });
|
|
122
|
+
|
|
30
123
|
class KbqOptionTooltip extends KbqTooltipTrigger {
|
|
31
124
|
get textElement() {
|
|
32
125
|
return this.option.textElement.nativeElement;
|
|
@@ -73,10 +166,10 @@ class KbqOptionTooltip extends KbqTooltipTrigger {
|
|
|
73
166
|
this.disabled = true;
|
|
74
167
|
this.hide();
|
|
75
168
|
}
|
|
76
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
77
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
169
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqOptionTooltip, deps: [{ token: i1$1.KbqOption }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
170
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqOptionTooltip, isStandalone: true, selector: "kbq-option", host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()" } }, usesInheritance: true, ngImport: i0 }); }
|
|
78
171
|
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqOptionTooltip, decorators: [{
|
|
80
173
|
type: Directive,
|
|
81
174
|
args: [{
|
|
82
175
|
selector: 'kbq-option',
|
|
@@ -87,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
87
180
|
'(blur)': 'onBlur()'
|
|
88
181
|
}
|
|
89
182
|
}]
|
|
90
|
-
}], ctorParameters: () => [{ type: i1.KbqOption }] });
|
|
183
|
+
}], ctorParameters: () => [{ type: i1$1.KbqOption }] });
|
|
91
184
|
|
|
92
185
|
let nextUniqueId = 0;
|
|
93
186
|
/** Change event object that is emitted when the select value has changed. */
|
|
@@ -106,11 +199,15 @@ const kbqSelectOptionsProvider = (options) => {
|
|
|
106
199
|
useValue: options
|
|
107
200
|
};
|
|
108
201
|
};
|
|
202
|
+
/** Delay in milliseconds before displaying a result when there are no options. */
|
|
203
|
+
const delayBeforeDisplayingResultWithoutOptions = 101;
|
|
204
|
+
/** Minimum time in milliseconds to display the loading state. */
|
|
205
|
+
const minimumTimeToDisplayLoading = 300;
|
|
109
206
|
class KbqSelect extends KbqAbstractSelect {
|
|
110
207
|
/**
|
|
111
208
|
* Controls when the search functionality is displayed based on the number of available options.
|
|
112
209
|
*
|
|
113
|
-
* Automatically enables search hiding if value provided, even if `defaultOptions.
|
|
210
|
+
* Automatically enables search hiding if value provided, even if `defaultOptions.searchMinOptionsThreshold` is provided.
|
|
114
211
|
* @default undefined
|
|
115
212
|
*/
|
|
116
213
|
set searchMinOptionsThreshold(value) {
|
|
@@ -121,12 +218,20 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
121
218
|
get searchMinOptionsThreshold() {
|
|
122
219
|
return this._searchMinOptionsThreshold;
|
|
123
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Whether the overlay should have a backdrop.
|
|
223
|
+
* When true, clicking the backdrop will close the select.
|
|
224
|
+
*/
|
|
124
225
|
get hasBackdrop() {
|
|
125
226
|
return this._hasBackdrop;
|
|
126
227
|
}
|
|
127
228
|
set hasBackdrop(value) {
|
|
128
229
|
this._hasBackdrop = coerceBooleanProperty(value);
|
|
129
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Placeholder text to be shown when no value is selected.
|
|
233
|
+
* Displayed in the trigger when the select is closed and no value is selected.
|
|
234
|
+
*/
|
|
130
235
|
get placeholder() {
|
|
131
236
|
return this._placeholder;
|
|
132
237
|
}
|
|
@@ -134,6 +239,9 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
134
239
|
this._placeholder = value;
|
|
135
240
|
this.stateChanges.next();
|
|
136
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Whether the select is required. Affects validation and display of placeholder.
|
|
244
|
+
*/
|
|
137
245
|
get required() {
|
|
138
246
|
return this._required;
|
|
139
247
|
}
|
|
@@ -141,6 +249,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
141
249
|
this._required = coerceBooleanProperty(value);
|
|
142
250
|
this.stateChanges.next();
|
|
143
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Whether multiple options can be selected.
|
|
254
|
+
* Note: This cannot be changed dynamically after initialization.
|
|
255
|
+
*/
|
|
144
256
|
get multiple() {
|
|
145
257
|
return this._multiple;
|
|
146
258
|
}
|
|
@@ -151,9 +263,11 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
151
263
|
this._multiple = value;
|
|
152
264
|
}
|
|
153
265
|
/**
|
|
154
|
-
* Function to compare the option values with the selected values.
|
|
155
|
-
*
|
|
156
|
-
*
|
|
266
|
+
* Function to compare the option values with the selected values.
|
|
267
|
+
* The first argument is a value from an option.
|
|
268
|
+
* The second is a value from the selection.
|
|
269
|
+
* Should return true if the values match.
|
|
270
|
+
* Defaults to strict equality comparison.
|
|
157
271
|
*/
|
|
158
272
|
get compareWith() {
|
|
159
273
|
return this._compareWith;
|
|
@@ -169,7 +283,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
169
283
|
}
|
|
170
284
|
}
|
|
171
285
|
/**
|
|
172
|
-
* Function for handling the
|
|
286
|
+
* Function for handling the Ctrl + A (select all) keyboard combination.
|
|
287
|
+
* By default, the internal handler selects all options.
|
|
288
|
+
* @param event The keyboard event that triggered the handler.
|
|
289
|
+
* @param select Reference to this select component.
|
|
173
290
|
*/
|
|
174
291
|
get selectAllHandler() {
|
|
175
292
|
return this._selectAllHandler;
|
|
@@ -180,7 +297,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
180
297
|
}
|
|
181
298
|
this._selectAllHandler = fn;
|
|
182
299
|
}
|
|
183
|
-
/** Value of the select control. */
|
|
300
|
+
/** Value of the select control. Can be a single value or array of values for multiple selection. */
|
|
184
301
|
get value() {
|
|
185
302
|
return this._value;
|
|
186
303
|
}
|
|
@@ -190,6 +307,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
190
307
|
this._value = newValue;
|
|
191
308
|
}
|
|
192
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* Unique identifier for the select component.
|
|
312
|
+
* Auto-generates an ID if not provided.
|
|
313
|
+
*/
|
|
193
314
|
get id() {
|
|
194
315
|
return this._id;
|
|
195
316
|
}
|
|
@@ -197,12 +318,20 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
197
318
|
this._id = value || this.uid;
|
|
198
319
|
this.stateChanges.next();
|
|
199
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Sets the tabIndex of the select element.
|
|
323
|
+
* Automatically set to -1 when disabled.
|
|
324
|
+
*/
|
|
200
325
|
get tabIndex() {
|
|
201
326
|
return this.disabled ? -1 : this._tabIndex;
|
|
202
327
|
}
|
|
203
328
|
set tabIndex(value) {
|
|
204
329
|
this._tabIndex = value;
|
|
205
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* Whether the select is disabled.
|
|
333
|
+
* When disabled, the select cannot be opened and its value cannot be changed.
|
|
334
|
+
*/
|
|
206
335
|
get disabled() {
|
|
207
336
|
return this._disabled;
|
|
208
337
|
}
|
|
@@ -225,15 +354,19 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
225
354
|
set focused(value) {
|
|
226
355
|
this._focused = value;
|
|
227
356
|
}
|
|
357
|
+
/** Whether the search returned no results. */
|
|
228
358
|
get isEmptySearchResult() {
|
|
229
359
|
return this.search && this.options.filter((option) => option.selectable).length === 0 && !!this.search.value();
|
|
230
360
|
}
|
|
361
|
+
/** Whether the cleaner (clear button) should be shown. */
|
|
231
362
|
get canShowCleaner() {
|
|
232
363
|
return !this.disabled && this.cleaner && this.selectionModel.hasValue();
|
|
233
364
|
}
|
|
365
|
+
/** Returns the currently selected option(s). Single value or array for multiple selection. */
|
|
234
366
|
get selected() {
|
|
235
367
|
return this.multiSelection ? this.selectionModel.selected : this.selectionModel.selected[0];
|
|
236
368
|
}
|
|
369
|
+
/** Returns the display value for the trigger element. */
|
|
237
370
|
get triggerValue() {
|
|
238
371
|
if (this.empty)
|
|
239
372
|
return '';
|
|
@@ -242,6 +375,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
242
375
|
}
|
|
243
376
|
return this.selectionModel.selected[0].viewValue;
|
|
244
377
|
}
|
|
378
|
+
/** Returns all selected options in display order. */
|
|
245
379
|
get triggerValues() {
|
|
246
380
|
if (this.empty) {
|
|
247
381
|
return [];
|
|
@@ -252,12 +386,19 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
252
386
|
}
|
|
253
387
|
return selectedOptions;
|
|
254
388
|
}
|
|
389
|
+
/** Whether no option is currently selected. */
|
|
255
390
|
get empty() {
|
|
256
391
|
return !!this.selectionModel?.isEmpty();
|
|
257
392
|
}
|
|
393
|
+
/** Whether there are no options available. */
|
|
394
|
+
get noOptions() {
|
|
395
|
+
return this.options?.length === 0;
|
|
396
|
+
}
|
|
397
|
+
/** Returns the first selected option that is not disabled. */
|
|
258
398
|
get firstSelected() {
|
|
259
399
|
return this.selectionModel.selected.filter((option) => !option.disabled)[0] || null;
|
|
260
400
|
}
|
|
401
|
+
/** Whether the first selected option is filtered (not visible in the list). */
|
|
261
402
|
get firstFiltered() {
|
|
262
403
|
return !this.options.find((option) => option === this.firstSelected);
|
|
263
404
|
}
|
|
@@ -270,7 +411,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
270
411
|
? KbqComponentColors.Error
|
|
271
412
|
: KbqComponentColors.ContrastFade;
|
|
272
413
|
}
|
|
273
|
-
/** Whether multiple choice is enabled
|
|
414
|
+
/** Whether multiple choice is enabled. True if multiple or multiline mode is active. */
|
|
274
415
|
get multiSelection() {
|
|
275
416
|
return this.multiple || this.multiline;
|
|
276
417
|
}
|
|
@@ -289,6 +430,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
289
430
|
this.ngControl = ngControl;
|
|
290
431
|
this.scrollStrategyFactory = scrollStrategyFactory;
|
|
291
432
|
this.localeService = localeService;
|
|
433
|
+
this.useLegacyValidation = inject(KBQ_VALIDATION, { optional: true })?.useValidation ?? false;
|
|
292
434
|
/** @docs-private */
|
|
293
435
|
this.destroyRef = inject(DestroyRef);
|
|
294
436
|
this.isBrowser = inject(Platform).isBrowser;
|
|
@@ -305,10 +447,11 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
305
447
|
/** A name for this control that can be used by `kbq-form-field`. */
|
|
306
448
|
this.controlType = 'select';
|
|
307
449
|
this.hiddenItems = 0;
|
|
308
|
-
/** The cached font-size of the trigger element. */
|
|
450
|
+
/** The cached font-size of the trigger element in pixels. */
|
|
309
451
|
this.triggerFontSize = 0;
|
|
452
|
+
/** Previously selected options before the current selection was made. */
|
|
310
453
|
this.previousSelectionModelSelected = [];
|
|
311
|
-
/** The value of the select panel's transform-origin property. */
|
|
454
|
+
/** The value of the select panel's transform-origin property for animations. */
|
|
312
455
|
this.transformOrigin = 'top';
|
|
313
456
|
/** Emits when the panel element is finished transforming in. */
|
|
314
457
|
this.panelDoneAnimatingStream = new Subject();
|
|
@@ -316,7 +459,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
316
459
|
this.scrollStrategy = this.scrollStrategyFactory();
|
|
317
460
|
/**
|
|
318
461
|
* The y-offset of the overlay panel in relation to the trigger's top start corner.
|
|
319
|
-
* This must be adjusted to align the selected option text over the trigger text
|
|
462
|
+
* This must be adjusted to align the selected option text over the trigger text
|
|
320
463
|
* when the panel opens. Will change based on the y-position of the selected option.
|
|
321
464
|
*/
|
|
322
465
|
this.offsetY = defaultOffsetY;
|
|
@@ -342,10 +485,13 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
342
485
|
offsetY: -this.offsetY
|
|
343
486
|
}
|
|
344
487
|
];
|
|
488
|
+
/** Template string for hidden items text. Supports {{ number }} placeholder. */
|
|
345
489
|
this.hiddenItemsText = '+{{ number }}';
|
|
490
|
+
/** Classes to be passed to the overlay backdrop. */
|
|
346
491
|
this.backdropClass = 'cdk-overlay-transparent-backdrop';
|
|
347
492
|
/**
|
|
348
|
-
* Whether to use a multiline matcher or not. Default is false
|
|
493
|
+
* Whether to use a multiline matcher or not. Default is false.
|
|
494
|
+
* When true, allows multiple lines of text in the selected value display.
|
|
349
495
|
*/
|
|
350
496
|
this.multiline = false;
|
|
351
497
|
this._searchMinOptionsThreshold = this.resolveSearchMinOptionsThreshold(this.defaultOptions?.searchMinOptionsThreshold);
|
|
@@ -356,8 +502,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
356
502
|
}
|
|
357
503
|
return this._ngZone.onStable.asObservable().pipe(take(1), switchMap(() => this.optionSelectionChanges));
|
|
358
504
|
});
|
|
359
|
-
/** Event emitted when the select panel has been toggled. */
|
|
505
|
+
/** Event emitted when the select panel has been toggled. Emits true when opened, false when closed. */
|
|
360
506
|
this.openedChange = new EventEmitter();
|
|
507
|
+
/** Event emitted before the select panel starts opening. */
|
|
508
|
+
this.beforeOpened = output();
|
|
361
509
|
/** Event emitted when the select has been opened. */
|
|
362
510
|
this.openedStream = this.openedChange.pipe(filter((o) => o), map(() => { }));
|
|
363
511
|
/** Event emitted when the select has been closed. */
|
|
@@ -379,24 +527,33 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
379
527
|
*/
|
|
380
528
|
this.panelWidth = this.defaultOptions?.panelWidth || null;
|
|
381
529
|
/**
|
|
382
|
-
* Minimum width of the panel.
|
|
530
|
+
* Minimum width of the panel in pixels.
|
|
383
531
|
* If minWidth is larger than window width, it will be ignored.
|
|
384
532
|
*/
|
|
385
533
|
this.panelMinWidth = this.defaultOptions?.panelMinWidth ?? 200;
|
|
386
534
|
this._tabIndex = 0;
|
|
387
535
|
this._disabled = false;
|
|
536
|
+
/** Whether the select panel is currently open. */
|
|
388
537
|
this.panelOpen = false;
|
|
389
538
|
this._focused = false;
|
|
539
|
+
/** Subscription to the close event of the overlay. */
|
|
390
540
|
this.closeSubscription = Subscription.EMPTY;
|
|
391
541
|
/** The scroll position of the overlay panel, calculated to center the selected option. */
|
|
392
542
|
this.scrollTop = 0;
|
|
393
|
-
/** Unique id for this input. */
|
|
543
|
+
/** Unique id for this input. Auto-incremented for each instance. */
|
|
394
544
|
this.uid = `kbq-select-${nextUniqueId++}`;
|
|
545
|
+
/** Subject that emits when the component visibility changes. */
|
|
395
546
|
this.visibleChanges = new BehaviorSubject(false);
|
|
547
|
+
/** Flag indicating if the dropdown class has been added to the overlay container. */
|
|
548
|
+
this.classAddedToOverlayContainer = false;
|
|
396
549
|
/** `View -> model callback called when value changes` */
|
|
397
550
|
this.onChange = () => { };
|
|
398
551
|
/** `View -> model callback called when select has been touched` */
|
|
399
552
|
this.onTouched = () => { };
|
|
553
|
+
/**
|
|
554
|
+
* Calculates the number of hidden items in multiple selection mode.
|
|
555
|
+
* Updates the hiddenItems property and triggers change detection.
|
|
556
|
+
*/
|
|
400
557
|
this.calculateHiddenItems = () => {
|
|
401
558
|
if (!this.isBrowser ||
|
|
402
559
|
this.customTrigger ||
|
|
@@ -428,6 +585,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
428
585
|
}
|
|
429
586
|
this._changeDetectorRef.markForCheck();
|
|
430
587
|
};
|
|
588
|
+
/** Updates locale parameters from the locale service. */
|
|
431
589
|
this.updateLocaleParams = () => {
|
|
432
590
|
this.hiddenItemsText = this.localeService?.getParams('select').hiddenItemsText;
|
|
433
591
|
this._changeDetectorRef.markForCheck();
|
|
@@ -450,6 +608,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
450
608
|
}
|
|
451
609
|
});
|
|
452
610
|
}
|
|
611
|
+
/** Lifecycle hook called after component initialization. Initializes selection model and subscriptions. */
|
|
453
612
|
ngOnInit() {
|
|
454
613
|
this.selectionModel = new SelectionModel(this.multiSelection);
|
|
455
614
|
this.stateChanges.next();
|
|
@@ -480,12 +639,14 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
480
639
|
}
|
|
481
640
|
}, 0));
|
|
482
641
|
}
|
|
642
|
+
/** Lifecycle hook for change detection. Updates visibility and error state. */
|
|
483
643
|
ngDoCheck() {
|
|
484
644
|
this.visibleChanges.next(this.isVisible());
|
|
485
645
|
if (this.ngControl) {
|
|
486
646
|
this.updateErrorState();
|
|
487
647
|
}
|
|
488
648
|
}
|
|
649
|
+
/** Lifecycle hook after content initialization. Sets up key manager and option subscriptions. */
|
|
489
650
|
ngAfterContentInit() {
|
|
490
651
|
this.withVirtualScroll = !!this.cdkVirtualForOf;
|
|
491
652
|
this.initKeyManager();
|
|
@@ -501,10 +662,13 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
501
662
|
.pipe(takeUntilDestroyed(this.destroyRef), delay(0), filter(() => !this.keyManager.activeItem))
|
|
502
663
|
.subscribe(() => this.keyManager.updateActiveItem(0));
|
|
503
664
|
}
|
|
665
|
+
/** Lifecycle hook when component is destroyed. Cleans up subscriptions. */
|
|
504
666
|
ngOnDestroy() {
|
|
505
667
|
this.stateChanges.complete();
|
|
506
668
|
this.closeSubscription.unsubscribe();
|
|
669
|
+
clearTimeout(this.openPanelTimeout);
|
|
507
670
|
}
|
|
671
|
+
/** Updates the error state based on the error state matcher. */
|
|
508
672
|
updateErrorState() {
|
|
509
673
|
const oldState = this.errorState;
|
|
510
674
|
const parent = this.parentFormGroup || this.parentForm;
|
|
@@ -516,9 +680,19 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
516
680
|
this.stateChanges.next();
|
|
517
681
|
}
|
|
518
682
|
}
|
|
683
|
+
/**
|
|
684
|
+
* Formats the hidden items text with the number of hidden items.
|
|
685
|
+
* @param hiddenItemsText Template string with {{ number }} placeholder.
|
|
686
|
+
* @param hiddenItems Number of hidden items to display.
|
|
687
|
+
* @returns Formatted string with the number of hidden items.
|
|
688
|
+
*/
|
|
519
689
|
hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) {
|
|
520
690
|
return hiddenItemsText.replace('{{ number }}', hiddenItems.toString());
|
|
521
691
|
}
|
|
692
|
+
/**
|
|
693
|
+
* Clears the current selection.
|
|
694
|
+
* @param $event Mouse event to prevent default behavior.
|
|
695
|
+
*/
|
|
522
696
|
clearValue($event) {
|
|
523
697
|
// need to prevent opening
|
|
524
698
|
$event.stopPropagation();
|
|
@@ -529,6 +703,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
529
703
|
this.propagateChanges();
|
|
530
704
|
this.focus();
|
|
531
705
|
}
|
|
706
|
+
/** Resets the search component if present. */
|
|
532
707
|
resetSearch() {
|
|
533
708
|
if (!this.search) {
|
|
534
709
|
return;
|
|
@@ -550,11 +725,32 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
550
725
|
this.open();
|
|
551
726
|
}
|
|
552
727
|
}
|
|
553
|
-
/**
|
|
728
|
+
/**
|
|
729
|
+
* Triggers the opening of the panel component.
|
|
730
|
+
* If the component is disabled or the panel is already open, the call is ignored.
|
|
731
|
+
* Otherwise, the (beforeOpened) event is emitted.
|
|
732
|
+
* When no options are available, the panel is opened after a short delay;
|
|
733
|
+
* if options exist, it opens immediately.
|
|
734
|
+
*/
|
|
554
735
|
open() {
|
|
555
|
-
if (this.disabled ||
|
|
736
|
+
if (this.disabled || this.panelOpen)
|
|
556
737
|
return;
|
|
738
|
+
this.beforeOpened.emit();
|
|
739
|
+
if (this.noOptions) {
|
|
740
|
+
clearTimeout(this.openPanelTimeout);
|
|
741
|
+
this.openPanelTimeout = setTimeout(() => this.openPanel(), delayBeforeDisplayingResultWithoutOptions);
|
|
557
742
|
}
|
|
743
|
+
else {
|
|
744
|
+
this.openPanel();
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
/**
|
|
748
|
+
* Internal method to open the panel. Handles overlay positioning and sizing.
|
|
749
|
+
* Sets up the overlay dimensions based on trigger size and configured options.
|
|
750
|
+
*/
|
|
751
|
+
openPanel() {
|
|
752
|
+
if (!this.trigger)
|
|
753
|
+
return;
|
|
558
754
|
// add check for form-field bounding rectangles, since it adds extra padding around the trigger
|
|
559
755
|
this.triggerRect = (this.parentFormField?.getConnectedOverlayOrigin().nativeElement || this.trigger.nativeElement).getBoundingClientRect();
|
|
560
756
|
// Note: The computed font-size will be a string pixel value (e.g. "16px").
|
|
@@ -587,24 +783,20 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
587
783
|
if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {
|
|
588
784
|
this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;
|
|
589
785
|
}
|
|
590
|
-
|
|
591
|
-
if (overlayContainer.childNodes.length === 1) {
|
|
592
|
-
this._renderer.addClass(overlayContainer, 'cdk-overlay-container_dropdown');
|
|
593
|
-
}
|
|
786
|
+
this.addClassToOverlayContainer();
|
|
594
787
|
});
|
|
595
788
|
}
|
|
596
789
|
/** Closes the overlay panel and focuses the host element. */
|
|
597
790
|
close() {
|
|
598
|
-
if (!this.panelOpen)
|
|
791
|
+
if (!this.panelOpen)
|
|
599
792
|
return;
|
|
600
|
-
}
|
|
601
793
|
// the order of calls is important
|
|
602
794
|
this.resetSearch();
|
|
603
795
|
this.panelOpen = false;
|
|
604
796
|
this.keyManager.withHorizontalOrientation(this.isRtl() ? 'rtl' : 'ltr');
|
|
605
797
|
this._changeDetectorRef.markForCheck();
|
|
606
798
|
this.onTouched();
|
|
607
|
-
this.
|
|
799
|
+
this.removeClassFromOverlayContainer();
|
|
608
800
|
}
|
|
609
801
|
/**
|
|
610
802
|
* Sets the select's value. Part of the ControlValueAccessor interface
|
|
@@ -649,13 +841,21 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
649
841
|
this._changeDetectorRef.markForCheck();
|
|
650
842
|
this.stateChanges.next();
|
|
651
843
|
}
|
|
844
|
+
/**
|
|
845
|
+
* Checks if the current direction is RTL (right-to-left).
|
|
846
|
+
* @returns True if RTL mode is active, false otherwise.
|
|
847
|
+
*/
|
|
652
848
|
isRtl() {
|
|
653
849
|
return this._dir ? this._dir.value === 'rtl' : false;
|
|
654
850
|
}
|
|
851
|
+
/**
|
|
852
|
+
* Handles all keyboard events for the select.
|
|
853
|
+
* Delegates to appropriate handler based on panel state.
|
|
854
|
+
* @param event The keyboard event to handle.
|
|
855
|
+
*/
|
|
655
856
|
handleKeydown(event) {
|
|
656
|
-
if (this.disabled)
|
|
857
|
+
if (this.disabled)
|
|
657
858
|
return;
|
|
658
|
-
}
|
|
659
859
|
if (this.panelOpen) {
|
|
660
860
|
this.handleOpenKeydown(event);
|
|
661
861
|
}
|
|
@@ -663,6 +863,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
663
863
|
this.handleClosedKeydown(event);
|
|
664
864
|
}
|
|
665
865
|
}
|
|
866
|
+
/** Handles focus event on the select element. */
|
|
666
867
|
onFocus() {
|
|
667
868
|
if (!this.disabled) {
|
|
668
869
|
this._focused = true;
|
|
@@ -679,7 +880,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
679
880
|
this.onTouched();
|
|
680
881
|
this._changeDetectorRef.markForCheck();
|
|
681
882
|
this.stateChanges.next();
|
|
682
|
-
if (this.ngControl?.control) {
|
|
883
|
+
if (this.useLegacyValidation && this.ngControl?.control) {
|
|
683
884
|
const control = this.ngControl.control;
|
|
684
885
|
control.updateValueAndValidity({ emitEvent: false });
|
|
685
886
|
control.statusChanges.emit(control.status);
|
|
@@ -688,6 +889,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
688
889
|
}
|
|
689
890
|
/**
|
|
690
891
|
* Callback that is invoked when the overlay panel has been attached.
|
|
892
|
+
* Sets up position change subscription and closing actions.
|
|
691
893
|
*/
|
|
692
894
|
onAttached() {
|
|
693
895
|
this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {
|
|
@@ -699,7 +901,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
699
901
|
this.options.changes.pipe(delay(1)).subscribe(() => this.setOverlayPosition());
|
|
700
902
|
this.closeSubscription = this.closingActions().subscribe(() => this.close());
|
|
701
903
|
}
|
|
702
|
-
/** Returns the theme to be used on the panel. */
|
|
904
|
+
/** Returns the theme to be used on the panel based on parent form field color. */
|
|
703
905
|
getPanelTheme() {
|
|
704
906
|
return this.parentFormField ? `kbq-${this.parentFormField.color}` : '';
|
|
705
907
|
}
|
|
@@ -714,14 +916,27 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
714
916
|
onContainerClick() {
|
|
715
917
|
this.focus();
|
|
716
918
|
}
|
|
717
|
-
/**
|
|
919
|
+
/**
|
|
920
|
+
* Handles removal of a matched item in the trigger.
|
|
921
|
+
* @param option The option to remove from selection.
|
|
922
|
+
* @param $event The mouse event that triggered the removal.
|
|
923
|
+
*/
|
|
718
924
|
onRemoveMatcherItem(option, $event) {
|
|
719
925
|
$event.stopPropagation();
|
|
720
926
|
option.deselect();
|
|
721
927
|
}
|
|
928
|
+
/**
|
|
929
|
+
* Gets the height of a single option item.
|
|
930
|
+
* @returns The height in pixels of the first option, or 0 if no options exist.
|
|
931
|
+
*/
|
|
722
932
|
getItemHeight() {
|
|
723
933
|
return this.options.first ? this.options.first.getHeight() : 0;
|
|
724
934
|
}
|
|
935
|
+
/**
|
|
936
|
+
* Handles click events on the select.
|
|
937
|
+
* Closes the panel if click is inside the footer.
|
|
938
|
+
* @param $event The mouse event to handle.
|
|
939
|
+
*/
|
|
725
940
|
handleClick($event) {
|
|
726
941
|
if (this.footer?.nativeElement.contains($event.target)) {
|
|
727
942
|
this.close();
|
|
@@ -760,20 +975,29 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
760
975
|
}
|
|
761
976
|
/** @docs-private */
|
|
762
977
|
shouldShowSearch() {
|
|
763
|
-
return isUndefined(this.searchMinOptionsThreshold) ||
|
|
978
|
+
return (isUndefined(this.searchMinOptionsThreshold) ||
|
|
979
|
+
!!this.search.value() ||
|
|
980
|
+
this.options.length >= this.searchMinOptionsThreshold);
|
|
764
981
|
}
|
|
982
|
+
/** Checks if the component is currently visible in the viewport. */
|
|
765
983
|
isVisible() {
|
|
766
984
|
return this.elementRef.nativeElement.offsetTop < this.elementRef.nativeElement.offsetHeight;
|
|
767
985
|
}
|
|
986
|
+
/** Gets the current overlay position index in the container. */
|
|
768
987
|
currentOverlayPosition() {
|
|
769
988
|
const element = this.overlayDir.overlayRef.hostElement;
|
|
770
989
|
return Array.from(this.overlayContainer.getContainerElement().childNodes).findIndex((node) => {
|
|
771
990
|
return node.firstChild?.['id'] === element.firstChild?.['id'];
|
|
772
991
|
});
|
|
773
992
|
}
|
|
993
|
+
/** Gets the position index of modal overlay in the container. */
|
|
774
994
|
modalOverlayPosition() {
|
|
775
995
|
return Array.from(this.overlayContainer.getContainerElement().childNodes).findIndex((childNode) => childNode.classList.contains('kbq-modal-overlay'));
|
|
776
996
|
}
|
|
997
|
+
/**
|
|
998
|
+
* Creates an observable of actions that should close the select panel.
|
|
999
|
+
* Includes outside pointer events and overlay detachments.
|
|
1000
|
+
*/
|
|
777
1001
|
closingActions() {
|
|
778
1002
|
// used for calling toggle on select from outside of component
|
|
779
1003
|
const outsidePointerEvents = this.overlayDir
|
|
@@ -787,15 +1011,18 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
787
1011
|
}));
|
|
788
1012
|
return merge(outsidePointerEvents, this.overlayDir.overlayRef.detachments());
|
|
789
1013
|
}
|
|
1014
|
+
/** Gets the height of the options container element. */
|
|
790
1015
|
getHeightOfOptionsContainer() {
|
|
791
1016
|
return this.optionsContainer.nativeElement.getClientRects()[0]?.height;
|
|
792
1017
|
}
|
|
1018
|
+
/** Updates the keyboard manager scroll size based on options container height. */
|
|
793
1019
|
updateScrollSize() {
|
|
794
1020
|
if (!this.options.first) {
|
|
795
1021
|
return;
|
|
796
1022
|
}
|
|
797
1023
|
this.keyManager.withScrollSize(Math.floor(this.getHeightOfOptionsContainer() / this.options.first.getHeight()));
|
|
798
1024
|
}
|
|
1025
|
+
/** Calculates the total width of all selected items in the matcher. */
|
|
799
1026
|
getTotalItemsWidthInMatcher() {
|
|
800
1027
|
const triggerClone = this.buildTriggerClone();
|
|
801
1028
|
triggerClone.querySelector('.kbq-select__match-hidden-text')?.remove();
|
|
@@ -806,6 +1033,11 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
806
1033
|
triggerClone.remove();
|
|
807
1034
|
return totalItemsWidth;
|
|
808
1035
|
}
|
|
1036
|
+
/**
|
|
1037
|
+
* Calculates the width of a single item including margins.
|
|
1038
|
+
* @param element The DOM element to measure.
|
|
1039
|
+
* @returns Total width including margins and gap.
|
|
1040
|
+
*/
|
|
809
1041
|
getItemWidth(element) {
|
|
810
1042
|
const computedStyle = this.window.getComputedStyle(element);
|
|
811
1043
|
const width = parseInt(computedStyle.width);
|
|
@@ -827,7 +1059,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
827
1059
|
this.keyManager.onKeydown(event);
|
|
828
1060
|
}
|
|
829
1061
|
}
|
|
830
|
-
/** Handles keyboard events when the
|
|
1062
|
+
/** Handles keyboard events when the select is open. */
|
|
831
1063
|
handleOpenKeydown(event) {
|
|
832
1064
|
const keyCode = event.keyCode;
|
|
833
1065
|
const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
|
|
@@ -878,6 +1110,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
878
1110
|
}
|
|
879
1111
|
}
|
|
880
1112
|
}
|
|
1113
|
+
/**
|
|
1114
|
+
* Initializes the selection based on the current value.
|
|
1115
|
+
* Defers execution to avoid change detection errors.
|
|
1116
|
+
*/
|
|
881
1117
|
initializeSelection() {
|
|
882
1118
|
// Defer setting the value in order to avoid the "Expression
|
|
883
1119
|
// has changed after it was checked" errors from Angular.
|
|
@@ -886,8 +1122,9 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
886
1122
|
});
|
|
887
1123
|
}
|
|
888
1124
|
/**
|
|
889
|
-
* Sets the selected option based on a value.
|
|
890
|
-
* found with the designated value, the select trigger is cleared.
|
|
1125
|
+
* Sets the selected option based on a value.
|
|
1126
|
+
* If no option can be found with the designated value, the select trigger is cleared.
|
|
1127
|
+
* @param value The value to select. Can be a single value or array for multiple selection.
|
|
891
1128
|
*/
|
|
892
1129
|
setSelectionByValue(value) {
|
|
893
1130
|
this.previousSelectionModelSelected = this.selectionModel.selected;
|
|
@@ -910,6 +1147,11 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
910
1147
|
}
|
|
911
1148
|
this._changeDetectorRef.markForCheck();
|
|
912
1149
|
}
|
|
1150
|
+
/**
|
|
1151
|
+
* Finds the option that corresponds to the given value.
|
|
1152
|
+
* @param value The value to find.
|
|
1153
|
+
* @returns The matching option or undefined if not found.
|
|
1154
|
+
*/
|
|
913
1155
|
getCorrespondOption(value) {
|
|
914
1156
|
return [
|
|
915
1157
|
...this.options.toArray(),
|
|
@@ -1012,7 +1254,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
1012
1254
|
}
|
|
1013
1255
|
this.stateChanges.next();
|
|
1014
1256
|
}
|
|
1015
|
-
/** Sorts the selected values
|
|
1257
|
+
/** Sorts the selected values based on their order in the panel. */
|
|
1016
1258
|
sortValues() {
|
|
1017
1259
|
if (this.multiSelection) {
|
|
1018
1260
|
const options = this.options.toArray();
|
|
@@ -1074,6 +1316,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
1074
1316
|
}
|
|
1075
1317
|
});
|
|
1076
1318
|
}
|
|
1319
|
+
/**
|
|
1320
|
+
* Calculates the total width and count of visible items.
|
|
1321
|
+
* @returns Tuple of [totalVisibleItemsWidth, visibleItemsCount].
|
|
1322
|
+
*/
|
|
1077
1323
|
getTotalVisibleItems() {
|
|
1078
1324
|
const triggerClone = this.buildTriggerClone();
|
|
1079
1325
|
this._renderer.setStyle(triggerClone.querySelector('.kbq-select__match-hidden-text'), 'display', 'block');
|
|
@@ -1089,6 +1335,10 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
1089
1335
|
triggerClone.remove();
|
|
1090
1336
|
return [totalVisibleItemsWidth, visibleItemsCount];
|
|
1091
1337
|
}
|
|
1338
|
+
/**
|
|
1339
|
+
* Creates a hidden clone of the trigger element for width calculations.
|
|
1340
|
+
* @returns Clone of the trigger element positioned off-screen.
|
|
1341
|
+
*/
|
|
1092
1342
|
buildTriggerClone() {
|
|
1093
1343
|
const triggerClone = this.trigger.nativeElement.cloneNode(true);
|
|
1094
1344
|
this._renderer.setStyle(triggerClone, 'position', 'absolute');
|
|
@@ -1097,17 +1347,31 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
1097
1347
|
this._renderer.setStyle(triggerClone, 'left', '0');
|
|
1098
1348
|
return triggerClone;
|
|
1099
1349
|
}
|
|
1100
|
-
/**
|
|
1101
|
-
|
|
1350
|
+
/** Adds the dropdown class to the overlay container when first select opens. */
|
|
1351
|
+
addClassToOverlayContainer() {
|
|
1352
|
+
const overlayContainer = this.overlayContainer?.getContainerElement();
|
|
1353
|
+
if (overlayContainer.childNodes.length === 1) {
|
|
1354
|
+
this.classAddedToOverlayContainer = true;
|
|
1355
|
+
this._renderer.addClass(overlayContainer, 'cdk-overlay-container_dropdown');
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
/** Removes the dropdown class from the overlay container when select closes. */
|
|
1359
|
+
removeClassFromOverlayContainer() {
|
|
1360
|
+
if (this.classAddedToOverlayContainer) {
|
|
1361
|
+
this._renderer.removeClass(this.overlayContainer.getContainerElement(), 'cdk-overlay-container_dropdown');
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1$1.ErrorStateMatcher }, { token: i0.ElementRef }, { token: i2.OverlayContainer }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i5.KbqFormField, host: true, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: KBQ_SELECT_SCROLL_STRATEGY }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1365
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: KbqSelect, isStandalone: true, selector: "kbq-select", inputs: { hiddenItemsText: "hiddenItemsText", panelClass: "panelClass", backdropClass: "backdropClass", errorStateMatcher: "errorStateMatcher", sortComparator: "sortComparator", multiline: ["multiline", "multiline", booleanAttribute], searchMinOptionsThreshold: "searchMinOptionsThreshold", hasBackdrop: "hasBackdrop", placeholder: "placeholder", required: "required", multiple: ["multiple", "multiple", booleanAttribute], compareWith: "compareWith", selectAllHandler: "selectAllHandler", panelWidth: "panelWidth", panelMinWidth: ["panelMinWidth", "panelMinWidth", numberAttribute], value: "value", id: "id", tabIndex: ["tabIndex", "tabIndex", numberAttribute], disabled: ["disabled", "disabled", booleanAttribute], hiddenItemsTextFormatter: "hiddenItemsTextFormatter" }, outputs: { openedChange: "openedChange", beforeOpened: "beforeOpened", openedStream: "opened", closedStream: "closed", selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "click": "toggle()", "keydown": "handleKeydown($event)", "focus": "onFocus()", "blur": "onBlur()" }, properties: { "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null", "class.kbq-select_multiple": "multiple", "class.kbq-select_multiline": "multiline", "class.kbq-disabled": "disabled", "class.kbq-invalid": "errorState" }, classAttribute: "kbq-select" }, providers: [
|
|
1102
1366
|
{ provide: KbqFormFieldControl, useExisting: KbqSelect },
|
|
1103
1367
|
{ provide: KBQ_OPTION_PARENT_COMPONENT, useExisting: KbqSelect },
|
|
1104
1368
|
{ provide: KBQ_PARENT_POPUP, useExisting: KbqSelect }
|
|
1105
|
-
], queries: [{ propertyName: "footer", first: true, predicate: KbqSelectFooter, descendants: true, read: ElementRef }, { propertyName: "cdkVirtualForOf", first: true, predicate: CdkVirtualForOf, descendants: true }, { propertyName: "customTrigger", first: true, predicate: KbqSelectTrigger, descendants: true }, { propertyName: "customMatcher", first: true, predicate: KbqSelectMatcher, descendants: true }, { propertyName: "customTagTemplateRef", first: true, predicate: ["kbqSelectTagContent"], descendants: true, read: TemplateRef }, { propertyName: "cleaner", first: true, predicate: ["kbqSelectCleaner"], descendants: true, static: true }, { propertyName: "search", first: true, predicate: KbqSelectSearch, descendants: true }, { propertyName: "options", predicate: KbqOption, descendants: true }, { propertyName: "optionGroups", predicate: KbqOptgroup }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: KbqTag, descendants: true }], exportAs: ["kbqSelect"], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiline]=\"multiline\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n } @else {\n @if (!!customTrigger) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiSelection) {\n <div\n [class.kbq-select__match-list]=\"!multiline\"\n [class.kbq-select__multiline-match-list]=\"multiline\"\n >\n @if (!customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [color]=\"colorForState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveMatcherItem(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n }\n @if (customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customTagTemplateRef)\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n\n @if (!multiline) {\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n }\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n </div>\n }\n }\n\n @if (canShowCleaner) {\n <div\n class=\"kbq-select__cleaner\"\n (click)=\"clearValue($event)\"\n (keydown.enter)=\"clearValue($event)\"\n (keydown.space)=\"clearValue($event)\"\n >\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\" [color]=\"colorForState\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n class=\"kbq-select__panel {{ getPanelTheme() }}\"\n cdkMonitorSubtreeFocus\n [ngClass]=\"panelClass\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.transformOrigin]=\"transformOrigin\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (search && shouldShowSearch()) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-select__content\"\n [class.kbq-scrollbar]=\"!withVirtualScroll\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n >\n @if (isEmptySearchResult) {\n <div class=\"kbq-select__no-options-message\">\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n </div>\n }\n <ng-content />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-select-footer]\" />\n </div>\n</ng-template>\n", styles: [".kbq-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.kbq-select .kbq-select__trigger{display:flex;box-sizing:border-box;position:relative;cursor:pointer;min-height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline){height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline) .kbq-select__matcher{overflow:hidden;white-space:nowrap}.kbq-select .kbq-select__matcher{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-grow:1;align-items:center}.kbq-select .kbq-select__matcher>span{flex:1;overflow:hidden}.kbq-select .kbq-select__trigger.kbq-select__trigger_single .kbq-select__matcher,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple.kbq-select__trigger_empty .kbq-select__matcher{padding:var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-right) var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher{padding:var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-right) var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-container{display:flex}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);max-height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);gap:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__match-container{flex-direction:column}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__matcher{max-width:100%;padding:calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-right) calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__cleaner,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__arrow-wrapper{align-self:flex-start;align-items:center;height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-s));min-width:var(--kbq-form-field-size-addon-width)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__multiline-match-list{display:flex;flex-direction:row;flex-wrap:wrap;margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));gap:var(--kbq-size-xxs)}.kbq-select .kbq-select__match-container{width:100%;text-overflow:ellipsis;overflow:hidden}.kbq-select .kbq-select__match-container .kbq-select__match-hidden-text{flex:0 0 40px;align-self:center;padding-left:4px;padding-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));text-align:right}.kbq-select kbq-select-trigger,.kbq-select [kbq-select-trigger]{width:100%}.kbq-select .kbq-select__arrow-wrapper{display:flex;align-self:center;justify-content:center;min-width:var(--kbq-form-field-size-addon-width)}.kbq-form-field-appearance-fill .kbq-select .kbq-select__arrow-wrapper,.kbq-form-field-appearance-standard .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-50%)}.kbq-form-field-appearance-outline .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-25%)}.kbq-disabled.kbq-select .kbq-select__trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.kbq-select__panel{min-width:100%;overflow:hidden;border-radius:var(--kbq-select-panel-size-border-radius, var(--kbq-size-border-radius))}.kbq-select__panel .kbq-option{font-size:inherit}.kbq-select__panel .kbq-select__no-options-message{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--kbq-option-size-height, var(--kbq-size-3xl));cursor:default;outline:none;padding-left:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));padding-right:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));border:var(--kbq-option-size-border-width, var(--kbq-size-3xs)) solid transparent}.kbq-select__panel .kbq-select__search-container{padding:var(--kbq-size-xxs);border-bottom-width:1px;border-bottom-style:solid}.kbq-select__content{max-height:var(--kbq-select-panel-size-max-height, 256px);padding:var(--kbq-size-xxs);overflow:hidden auto}.kbq-select__panel .kbq-select__footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-select__content{box-sizing:initial}.kbq-select__content .kbq-option{position:relative}.kbq-select__content .kbq-option:before,.kbq-select__content .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-select__content .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-select__content .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport{min-height:var(--kbq-select-panel-size-max-height, 256px);max-height:var(--kbq-select-panel-size-max-height, 256px)}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{max-width:100%}.kbq-form-field-type-select:not(.kbq-disabled) .kbq-form-field-flex{cursor:pointer}.kbq-select{color:var(--kbq-foreground-contrast)}.kbq-select.kbq-control_has-validate-directive.ng-invalid,.kbq-select.kbq-invalid{color:var(--kbq-foreground-error)}.kbq-select.kbq-control_has-validate-directive.ng-invalid .kbq-select__placeholder,.kbq-select.kbq-invalid .kbq-select__placeholder{color:var(--kbq-form-field-states-error-placeholder)}.kbq-select.kbq-disabled{color:var(--kbq-states-foreground-disabled)}.kbq-select.kbq-disabled .kbq-select__placeholder{color:var(--kbq-form-field-states-disabled-placeholder)}.kbq-select__placeholder{text-overflow:ellipsis;color:var(--kbq-form-field-default-placeholder)}.kbq-select__panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}.kbq-select__panel .kbq-select__footer{border-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__search-container{border-bottom-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__no-options-message{color:var(--kbq-foreground-contrast-secondary)}.kbq-select,.kbq-select__panel{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)}\n", ".kbq-select,.kbq-tree-select,.kbq-select__panel{--kbq-select-size-single-padding-left: var(--kbq-form-field-size-infix-padding);--kbq-select-size-single-padding-right: var(--kbq-form-field-size-suffix-padding);--kbq-select-size-single-padding-vertical: var(--kbq-size-xs);--kbq-select-size-single-content-gap: var(--kbq-size-xxs);--kbq-select-size-multiple-padding-left: 0;--kbq-select-size-multiple-padding-right: 0;--kbq-select-size-multiple-padding-vertical: var(--kbq-size-xxs);--kbq-select-size-multiple-content-gap: var(--kbq-size-xxs);--kbq-select-panel-size-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-size-max-height: 256px;--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: KbqTag, selector: "kbq-tag, [kbq-tag], kbq-basic-tag, [kbq-basic-tag]", inputs: ["editable", "preventEditSubmit", "selected", "value", "selectable", "removable", "tabindex", "disabled"], outputs: ["editChange", "selectionChange", "destroyed", "removed"], exportAs: ["kbqTag"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i6.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], animations: [
|
|
1369
|
+
], queries: [{ propertyName: "footer", first: true, predicate: KbqSelectFooter, descendants: true, read: ElementRef }, { propertyName: "cdkVirtualForOf", first: true, predicate: CdkVirtualForOf, descendants: true }, { propertyName: "customTrigger", first: true, predicate: KbqSelectTrigger, descendants: true }, { propertyName: "customMatcher", first: true, predicate: KbqSelectMatcher, descendants: true }, { propertyName: "customTagTemplateRef", first: true, predicate: ["kbqSelectTagContent"], descendants: true, read: TemplateRef }, { propertyName: "cleaner", first: true, predicate: ["kbqSelectCleaner"], descendants: true, static: true }, { propertyName: "search", first: true, predicate: KbqSelectSearch, descendants: true }, { propertyName: "searchEmpty", first: true, predicate: KbqSelectSearchEmptyResult, descendants: true }, { propertyName: "options", predicate: KbqOption, descendants: true }, { propertyName: "optionGroups", predicate: KbqOptgroup }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: KbqTag, descendants: true }], exportAs: ["kbqSelect"], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiline]=\"multiline\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n } @else {\n @if (!!customTrigger) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiSelection) {\n <div\n [class.kbq-select__match-list]=\"!multiline\"\n [class.kbq-select__multiline-match-list]=\"multiline\"\n >\n @if (!customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [color]=\"colorForState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveMatcherItem(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n }\n @if (customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customTagTemplateRef)\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n\n @if (!multiline) {\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n }\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n </div>\n }\n }\n\n @if (canShowCleaner) {\n <div\n class=\"kbq-select__cleaner\"\n (click)=\"clearValue($event)\"\n (keydown.enter)=\"clearValue($event)\"\n (keydown.space)=\"clearValue($event)\"\n >\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\" [color]=\"colorForState\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n class=\"kbq-select__panel {{ getPanelTheme() }}\"\n cdkMonitorSubtreeFocus\n [ngClass]=\"panelClass\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.transformOrigin]=\"transformOrigin\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (search && shouldShowSearch()) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-select__content\"\n [class.kbq-scrollbar]=\"!withVirtualScroll\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n >\n @if (isEmptySearchResult) {\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n }\n <ng-content />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-select-footer]\" />\n </div>\n</ng-template>\n", styles: [".kbq-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.kbq-select .kbq-select__trigger{display:flex;box-sizing:border-box;position:relative;cursor:pointer;min-height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline){height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline) .kbq-select__matcher{overflow:hidden;white-space:nowrap}.kbq-select .kbq-select__matcher{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-grow:1;align-items:center}.kbq-select .kbq-select__matcher>span{flex:1;overflow:hidden}.kbq-select .kbq-select__trigger.kbq-select__trigger_single .kbq-select__matcher,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple.kbq-select__trigger_empty .kbq-select__matcher{padding:var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-right) var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher{padding:var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-right) var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-container{display:flex}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);max-height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);gap:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__match-container{flex-direction:column}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__matcher{max-width:100%;padding:calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-right) calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__cleaner,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__arrow-wrapper{align-self:flex-start;align-items:center;height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-s));min-width:var(--kbq-form-field-size-addon-width)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__multiline-match-list{display:flex;flex-direction:row;flex-wrap:wrap;margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));gap:var(--kbq-size-xxs)}.kbq-select .kbq-select__match-container{width:100%;text-overflow:ellipsis;overflow:hidden}.kbq-select .kbq-select__match-container .kbq-select__match-hidden-text{flex:0 0 40px;align-self:center;padding-left:4px;padding-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));text-align:right}.kbq-select kbq-select-trigger,.kbq-select [kbq-select-trigger]{width:100%}.kbq-select .kbq-select__arrow-wrapper{display:flex;align-self:center;justify-content:center;min-width:var(--kbq-form-field-size-addon-width)}.kbq-form-field-appearance-fill .kbq-select .kbq-select__arrow-wrapper,.kbq-form-field-appearance-standard .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-50%)}.kbq-form-field-appearance-outline .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-25%)}.kbq-disabled.kbq-select .kbq-select__trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.kbq-select__panel{min-width:100%;overflow:hidden;border-radius:var(--kbq-select-panel-size-border-radius, var(--kbq-size-border-radius))}.kbq-select__panel .kbq-option{font-size:inherit}.kbq-select__panel .kbq-select__no-options-message{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;position:relative;margin-bottom:var(--kbq-size-3xl);margin-top:var(--kbq-size-3xl);max-width:100%;height:var(--kbq-option-size-height, var(--kbq-size-3xl));cursor:default;outline:none;padding-left:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));padding-right:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));border:var(--kbq-option-size-border-width, var(--kbq-size-3xs)) solid transparent}.kbq-select__panel .kbq-select__search-container{padding:var(--kbq-size-xxs);border-bottom-width:1px;border-bottom-style:solid}.kbq-select__content{max-height:var(--kbq-select-panel-size-max-height, 256px);padding:var(--kbq-size-xxs);overflow:hidden auto}.kbq-select__panel .kbq-select__footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-select__content{box-sizing:initial}.kbq-select__content .kbq-option{position:relative}.kbq-select__content .kbq-option:before,.kbq-select__content .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-select__content .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-select__content .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport{min-height:var(--kbq-select-panel-size-max-height, 256px);max-height:var(--kbq-select-panel-size-max-height, 256px)}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{max-width:100%}.kbq-form-field-type-select:not(.kbq-disabled) .kbq-form-field-flex{cursor:pointer}.kbq-select{color:var(--kbq-foreground-contrast)}.kbq-select.kbq-control_has-validate-directive.ng-invalid,.kbq-select.kbq-invalid{color:var(--kbq-foreground-error)}.kbq-select.kbq-control_has-validate-directive.ng-invalid .kbq-select__placeholder,.kbq-select.kbq-invalid .kbq-select__placeholder{color:var(--kbq-form-field-states-error-placeholder)}.kbq-select.kbq-disabled{color:var(--kbq-states-foreground-disabled)}.kbq-select.kbq-disabled .kbq-select__placeholder{color:var(--kbq-form-field-states-disabled-placeholder)}.kbq-select__placeholder{text-overflow:ellipsis;color:var(--kbq-form-field-default-placeholder)}.kbq-select__panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}.kbq-select__panel .kbq-select__footer{border-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__search-container{border-bottom-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__no-options-message{color:var(--kbq-foreground-contrast-secondary)}.kbq-select,.kbq-select__panel{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)}\n", ".kbq-select,.kbq-tree-select,.kbq-select__panel{--kbq-select-size-single-padding-left: var(--kbq-form-field-size-infix-padding);--kbq-select-size-single-padding-right: var(--kbq-form-field-size-suffix-padding);--kbq-select-size-single-padding-vertical: var(--kbq-size-xs);--kbq-select-size-single-content-gap: var(--kbq-size-xxs);--kbq-select-size-multiple-padding-left: 0;--kbq-select-size-multiple-padding-right: 0;--kbq-select-size-multiple-padding-vertical: var(--kbq-size-xxs);--kbq-select-size-multiple-content-gap: var(--kbq-size-xxs);--kbq-select-panel-size-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-size-max-height: 256px;--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: KbqTag, selector: "kbq-tag, [kbq-tag], kbq-basic-tag, [kbq-basic-tag]", inputs: ["editable", "preventEditSubmit", "selected", "value", "selectable", "removable", "tabindex", "disabled"], outputs: ["editChange", "selectionChange", "destroyed", "removed"], exportAs: ["kbqTag"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i6.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], animations: [
|
|
1106
1370
|
kbqSelectAnimations.transformPanel,
|
|
1107
1371
|
kbqSelectAnimations.fadeInContent
|
|
1108
1372
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1109
1373
|
}
|
|
1110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelect, decorators: [{
|
|
1111
1375
|
type: Component,
|
|
1112
1376
|
args: [{ selector: 'kbq-select', imports: [
|
|
1113
1377
|
CdkOverlayOrigin,
|
|
@@ -1136,8 +1400,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1136
1400
|
{ provide: KbqFormFieldControl, useExisting: KbqSelect },
|
|
1137
1401
|
{ provide: KBQ_OPTION_PARENT_COMPONENT, useExisting: KbqSelect },
|
|
1138
1402
|
{ provide: KBQ_PARENT_POPUP, useExisting: KbqSelect }
|
|
1139
|
-
], template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiline]=\"multiline\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n } @else {\n @if (!!customTrigger) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiSelection) {\n <div\n [class.kbq-select__match-list]=\"!multiline\"\n [class.kbq-select__multiline-match-list]=\"multiline\"\n >\n @if (!customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [color]=\"colorForState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveMatcherItem(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n }\n @if (customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customTagTemplateRef)\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n\n @if (!multiline) {\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n }\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n </div>\n }\n }\n\n @if (canShowCleaner) {\n <div\n class=\"kbq-select__cleaner\"\n (click)=\"clearValue($event)\"\n (keydown.enter)=\"clearValue($event)\"\n (keydown.space)=\"clearValue($event)\"\n >\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\" [color]=\"colorForState\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n class=\"kbq-select__panel {{ getPanelTheme() }}\"\n cdkMonitorSubtreeFocus\n [ngClass]=\"panelClass\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.transformOrigin]=\"transformOrigin\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (search && shouldShowSearch()) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-select__content\"\n [class.kbq-scrollbar]=\"!withVirtualScroll\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n >\n @if (isEmptySearchResult) {\n <div class=\"kbq-select__no-options-message\">\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n </div>\n }\n <ng-content />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-select-footer]\" />\n </div>\n</ng-template>\n", styles: [".kbq-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.kbq-select .kbq-select__trigger{display:flex;box-sizing:border-box;position:relative;cursor:pointer;min-height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline){height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline) .kbq-select__matcher{overflow:hidden;white-space:nowrap}.kbq-select .kbq-select__matcher{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-grow:1;align-items:center}.kbq-select .kbq-select__matcher>span{flex:1;overflow:hidden}.kbq-select .kbq-select__trigger.kbq-select__trigger_single .kbq-select__matcher,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple.kbq-select__trigger_empty .kbq-select__matcher{padding:var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-right) var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher{padding:var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-right) var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-container{display:flex}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);max-height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);gap:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__match-container{flex-direction:column}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__matcher{max-width:100%;padding:calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-right) calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__cleaner,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__arrow-wrapper{align-self:flex-start;align-items:center;height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-s));min-width:var(--kbq-form-field-size-addon-width)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__multiline-match-list{display:flex;flex-direction:row;flex-wrap:wrap;margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));gap:var(--kbq-size-xxs)}.kbq-select .kbq-select__match-container{width:100%;text-overflow:ellipsis;overflow:hidden}.kbq-select .kbq-select__match-container .kbq-select__match-hidden-text{flex:0 0 40px;align-self:center;padding-left:4px;padding-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));text-align:right}.kbq-select kbq-select-trigger,.kbq-select [kbq-select-trigger]{width:100%}.kbq-select .kbq-select__arrow-wrapper{display:flex;align-self:center;justify-content:center;min-width:var(--kbq-form-field-size-addon-width)}.kbq-form-field-appearance-fill .kbq-select .kbq-select__arrow-wrapper,.kbq-form-field-appearance-standard .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-50%)}.kbq-form-field-appearance-outline .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-25%)}.kbq-disabled.kbq-select .kbq-select__trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.kbq-select__panel{min-width:100%;overflow:hidden;border-radius:var(--kbq-select-panel-size-border-radius, var(--kbq-size-border-radius))}.kbq-select__panel .kbq-option{font-size:inherit}.kbq-select__panel .kbq-select__no-options-message{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--kbq-option-size-height, var(--kbq-size-3xl));cursor:default;outline:none;padding-left:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));padding-right:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));border:var(--kbq-option-size-border-width, var(--kbq-size-3xs)) solid transparent}.kbq-select__panel .kbq-select__search-container{padding:var(--kbq-size-xxs);border-bottom-width:1px;border-bottom-style:solid}.kbq-select__content{max-height:var(--kbq-select-panel-size-max-height, 256px);padding:var(--kbq-size-xxs);overflow:hidden auto}.kbq-select__panel .kbq-select__footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-select__content{box-sizing:initial}.kbq-select__content .kbq-option{position:relative}.kbq-select__content .kbq-option:before,.kbq-select__content .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-select__content .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-select__content .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport{min-height:var(--kbq-select-panel-size-max-height, 256px);max-height:var(--kbq-select-panel-size-max-height, 256px)}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{max-width:100%}.kbq-form-field-type-select:not(.kbq-disabled) .kbq-form-field-flex{cursor:pointer}.kbq-select{color:var(--kbq-foreground-contrast)}.kbq-select.kbq-control_has-validate-directive.ng-invalid,.kbq-select.kbq-invalid{color:var(--kbq-foreground-error)}.kbq-select.kbq-control_has-validate-directive.ng-invalid .kbq-select__placeholder,.kbq-select.kbq-invalid .kbq-select__placeholder{color:var(--kbq-form-field-states-error-placeholder)}.kbq-select.kbq-disabled{color:var(--kbq-states-foreground-disabled)}.kbq-select.kbq-disabled .kbq-select__placeholder{color:var(--kbq-form-field-states-disabled-placeholder)}.kbq-select__placeholder{text-overflow:ellipsis;color:var(--kbq-form-field-default-placeholder)}.kbq-select__panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}.kbq-select__panel .kbq-select__footer{border-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__search-container{border-bottom-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__no-options-message{color:var(--kbq-foreground-contrast-secondary)}.kbq-select,.kbq-select__panel{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)}\n", ".kbq-select,.kbq-tree-select,.kbq-select__panel{--kbq-select-size-single-padding-left: var(--kbq-form-field-size-infix-padding);--kbq-select-size-single-padding-right: var(--kbq-form-field-size-suffix-padding);--kbq-select-size-single-padding-vertical: var(--kbq-size-xs);--kbq-select-size-single-content-gap: var(--kbq-size-xxs);--kbq-select-size-multiple-padding-left: 0;--kbq-select-size-multiple-padding-right: 0;--kbq-select-size-multiple-padding-vertical: var(--kbq-size-xxs);--kbq-select-size-multiple-content-gap: var(--kbq-size-xxs);--kbq-select-panel-size-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-size-max-height: 256px;--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"] }]
|
|
1140
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ErrorStateMatcher }, { type: i0.ElementRef }, { type: i2.OverlayContainer }, { type: i3.Directionality, decorators: [{
|
|
1403
|
+
], template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiline]=\"multiline\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n } @else {\n @if (!!customTrigger) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiSelection) {\n <div\n [class.kbq-select__match-list]=\"!multiline\"\n [class.kbq-select__multiline-match-list]=\"multiline\"\n >\n @if (!customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [color]=\"colorForState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveMatcherItem(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n }\n @if (customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customTagTemplateRef)\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n\n @if (!multiline) {\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n }\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n </div>\n }\n }\n\n @if (canShowCleaner) {\n <div\n class=\"kbq-select__cleaner\"\n (click)=\"clearValue($event)\"\n (keydown.enter)=\"clearValue($event)\"\n (keydown.space)=\"clearValue($event)\"\n >\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\" [color]=\"colorForState\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n class=\"kbq-select__panel {{ getPanelTheme() }}\"\n cdkMonitorSubtreeFocus\n [ngClass]=\"panelClass\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.transformOrigin]=\"transformOrigin\"\n (click)=\"handleClick($event)\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (search && shouldShowSearch()) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-select__content\"\n [class.kbq-scrollbar]=\"!withVirtualScroll\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n >\n @if (isEmptySearchResult) {\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n }\n <ng-content />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-select-footer]\" />\n </div>\n</ng-template>\n", styles: [".kbq-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.kbq-select .kbq-select__trigger{display:flex;box-sizing:border-box;position:relative;cursor:pointer;min-height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline){height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-border-width) * 2)}.kbq-select .kbq-select__trigger:not(.kbq-select__trigger_multiline) .kbq-select__matcher{overflow:hidden;white-space:nowrap}.kbq-select .kbq-select__matcher{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-grow:1;align-items:center}.kbq-select .kbq-select__matcher>span{flex:1;overflow:hidden}.kbq-select .kbq-select__trigger.kbq-select__trigger_single .kbq-select__matcher,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple.kbq-select__trigger_empty .kbq-select__matcher{padding:var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-right) var(--kbq-select-size-single-padding-vertical) var(--kbq-select-size-single-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher{padding:var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-right) var(--kbq-select-size-multiple-padding-vertical) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-container{display:flex}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple:not(.kbq-select__trigger_empty) .kbq-select__matcher .kbq-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);max-height:calc(var(--kbq-form-field-size-height) - var(--kbq-select-size-multiple-padding-vertical) * 2);gap:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__match-container{flex-direction:column}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__matcher{max-width:100%;padding:calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-right) calc(var(--kbq-select-size-multiple-padding-vertical) - var(--kbq-size-border-width)) var(--kbq-select-size-multiple-padding-left)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__cleaner,.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__arrow-wrapper{align-self:flex-start;align-items:center;height:calc(var(--kbq-form-field-size-height) - var(--kbq-size-s));min-width:var(--kbq-form-field-size-addon-width)}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiline:not(.kbq-select__trigger_empty) .kbq-select__multiline-match-list{display:flex;flex-direction:row;flex-wrap:wrap;margin-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));gap:var(--kbq-size-xxs)}.kbq-select .kbq-select__match-container{width:100%;text-overflow:ellipsis;overflow:hidden}.kbq-select .kbq-select__match-container .kbq-select__match-hidden-text{flex:0 0 40px;align-self:center;padding-left:4px;padding-right:var(--kbq-select-size-multiple-content-gap, var(--kbq-size-xxs));text-align:right}.kbq-select kbq-select-trigger,.kbq-select [kbq-select-trigger]{width:100%}.kbq-select .kbq-select__arrow-wrapper{display:flex;align-self:center;justify-content:center;min-width:var(--kbq-form-field-size-addon-width)}.kbq-form-field-appearance-fill .kbq-select .kbq-select__arrow-wrapper,.kbq-form-field-appearance-standard .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-50%)}.kbq-form-field-appearance-outline .kbq-select .kbq-select__arrow-wrapper{transform:translateY(-25%)}.kbq-disabled.kbq-select .kbq-select__trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.kbq-select__panel{min-width:100%;overflow:hidden;border-radius:var(--kbq-select-panel-size-border-radius, var(--kbq-size-border-radius))}.kbq-select__panel .kbq-option{font-size:inherit}.kbq-select__panel .kbq-select__no-options-message{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;position:relative;margin-bottom:var(--kbq-size-3xl);margin-top:var(--kbq-size-3xl);max-width:100%;height:var(--kbq-option-size-height, var(--kbq-size-3xl));cursor:default;outline:none;padding-left:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));padding-right:var(--kbq-option-size-horizontal-padding, var(--kbq-size-m));border:var(--kbq-option-size-border-width, var(--kbq-size-3xs)) solid transparent}.kbq-select__panel .kbq-select__search-container{padding:var(--kbq-size-xxs);border-bottom-width:1px;border-bottom-style:solid}.kbq-select__content{max-height:var(--kbq-select-panel-size-max-height, 256px);padding:var(--kbq-size-xxs);overflow:hidden auto}.kbq-select__panel .kbq-select__footer{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;box-sizing:border-box;min-height:40px;border-top-width:1px;border-top-style:solid;padding:var(--kbq-size-xxs) var(--kbq-size-l)}.kbq-select__content{box-sizing:initial}.kbq-select__content .kbq-option{position:relative}.kbq-select__content .kbq-option:before,.kbq-select__content .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-select__content .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-select__content .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport{min-height:var(--kbq-select-panel-size-max-height, 256px);max-height:var(--kbq-select-panel-size-max-height, 256px)}.kbq-select__content:not(:has(>.kbq-select__no-options-message)) .cdk-virtual-scroll-viewport.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{max-width:100%}.kbq-form-field-type-select:not(.kbq-disabled) .kbq-form-field-flex{cursor:pointer}.kbq-select{color:var(--kbq-foreground-contrast)}.kbq-select.kbq-control_has-validate-directive.ng-invalid,.kbq-select.kbq-invalid{color:var(--kbq-foreground-error)}.kbq-select.kbq-control_has-validate-directive.ng-invalid .kbq-select__placeholder,.kbq-select.kbq-invalid .kbq-select__placeholder{color:var(--kbq-form-field-states-error-placeholder)}.kbq-select.kbq-disabled{color:var(--kbq-states-foreground-disabled)}.kbq-select.kbq-disabled .kbq-select__placeholder{color:var(--kbq-form-field-states-disabled-placeholder)}.kbq-select__placeholder{text-overflow:ellipsis;color:var(--kbq-form-field-default-placeholder)}.kbq-select__panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}.kbq-select__panel .kbq-select__footer{border-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__search-container{border-bottom-color:var(--kbq-divider-color, var(--kbq-line-contrast-less))}.kbq-select__no-options-message{color:var(--kbq-foreground-contrast-secondary)}.kbq-select,.kbq-select__panel{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)}\n", ".kbq-select,.kbq-tree-select,.kbq-select__panel{--kbq-select-size-single-padding-left: var(--kbq-form-field-size-infix-padding);--kbq-select-size-single-padding-right: var(--kbq-form-field-size-suffix-padding);--kbq-select-size-single-padding-vertical: var(--kbq-size-xs);--kbq-select-size-single-content-gap: var(--kbq-size-xxs);--kbq-select-size-multiple-padding-left: 0;--kbq-select-size-multiple-padding-right: 0;--kbq-select-size-multiple-padding-vertical: var(--kbq-size-xxs);--kbq-select-size-multiple-content-gap: var(--kbq-size-xxs);--kbq-select-panel-size-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-size-max-height: 256px;--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"] }]
|
|
1404
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1$1.ErrorStateMatcher }, { type: i0.ElementRef }, { type: i2.OverlayContainer }, { type: i3.Directionality, decorators: [{
|
|
1141
1405
|
type: Optional
|
|
1142
1406
|
}] }, { type: i4.NgForm, decorators: [{
|
|
1143
1407
|
type: Optional
|
|
@@ -1154,7 +1418,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1154
1418
|
}] }, { type: undefined, decorators: [{
|
|
1155
1419
|
type: Inject,
|
|
1156
1420
|
args: [KBQ_SELECT_SCROLL_STRATEGY]
|
|
1157
|
-
}] }, { type: i1.KbqLocaleService, decorators: [{
|
|
1421
|
+
}] }, { type: i1$1.KbqLocaleService, decorators: [{
|
|
1158
1422
|
type: Optional
|
|
1159
1423
|
}, {
|
|
1160
1424
|
type: Inject,
|
|
@@ -1201,6 +1465,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1201
1465
|
}], search: [{
|
|
1202
1466
|
type: ContentChild,
|
|
1203
1467
|
args: [KbqSelectSearch, { static: false }]
|
|
1468
|
+
}], searchEmpty: [{
|
|
1469
|
+
type: ContentChild,
|
|
1470
|
+
args: [KbqSelectSearchEmptyResult, { static: false }]
|
|
1204
1471
|
}], hiddenItemsText: [{
|
|
1205
1472
|
type: Input
|
|
1206
1473
|
}], panelClass: [{
|
|
@@ -1261,8 +1528,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1261
1528
|
}] } });
|
|
1262
1529
|
|
|
1263
1530
|
class KbqSelectModule {
|
|
1264
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1265
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
1531
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1532
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectModule, imports: [OverlayModule,
|
|
1266
1533
|
KbqOptionModule,
|
|
1267
1534
|
KbqIconModule,
|
|
1268
1535
|
KbqTagsModule,
|
|
@@ -1276,7 +1543,11 @@ class KbqSelectModule {
|
|
|
1276
1543
|
NgTemplateOutlet,
|
|
1277
1544
|
A11yModule,
|
|
1278
1545
|
KbqSelect,
|
|
1279
|
-
KbqOptionTooltip
|
|
1546
|
+
KbqOptionTooltip,
|
|
1547
|
+
KbqSelectLoading,
|
|
1548
|
+
KbqSelectError,
|
|
1549
|
+
KbqSelectNoOptions,
|
|
1550
|
+
KbqSelectErrorText], exports: [KbqSelect,
|
|
1280
1551
|
KbqOptionTooltip,
|
|
1281
1552
|
KbqOptionModule,
|
|
1282
1553
|
KbqSelectSearch,
|
|
@@ -1284,17 +1555,22 @@ class KbqSelectModule {
|
|
|
1284
1555
|
KbqSelectMatcher,
|
|
1285
1556
|
KbqSelectTrigger,
|
|
1286
1557
|
KbqSelectSearchEmptyResult,
|
|
1287
|
-
|
|
1288
|
-
|
|
1558
|
+
KbqSelectLoading,
|
|
1559
|
+
KbqFormFieldModule,
|
|
1560
|
+
KbqSelectError,
|
|
1561
|
+
KbqSelectNoOptions,
|
|
1562
|
+
KbqSelectErrorText] }); }
|
|
1563
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectModule, providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [OverlayModule,
|
|
1289
1564
|
KbqOptionModule,
|
|
1290
1565
|
KbqIconModule,
|
|
1291
1566
|
KbqTagsModule,
|
|
1292
1567
|
KbqToolTipModule,
|
|
1293
1568
|
A11yModule,
|
|
1294
|
-
KbqSelect,
|
|
1569
|
+
KbqSelect,
|
|
1570
|
+
KbqSelectLoading, KbqOptionModule,
|
|
1295
1571
|
KbqFormFieldModule] }); }
|
|
1296
1572
|
}
|
|
1297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1573
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqSelectModule, decorators: [{
|
|
1298
1574
|
type: NgModule,
|
|
1299
1575
|
args: [{
|
|
1300
1576
|
imports: [
|
|
@@ -1312,7 +1588,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1312
1588
|
NgTemplateOutlet,
|
|
1313
1589
|
A11yModule,
|
|
1314
1590
|
KbqSelect,
|
|
1315
|
-
KbqOptionTooltip
|
|
1591
|
+
KbqOptionTooltip,
|
|
1592
|
+
KbqSelectLoading,
|
|
1593
|
+
KbqSelectError,
|
|
1594
|
+
KbqSelectNoOptions,
|
|
1595
|
+
KbqSelectErrorText
|
|
1316
1596
|
],
|
|
1317
1597
|
exports: [
|
|
1318
1598
|
KbqSelect,
|
|
@@ -1323,7 +1603,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1323
1603
|
KbqSelectMatcher,
|
|
1324
1604
|
KbqSelectTrigger,
|
|
1325
1605
|
KbqSelectSearchEmptyResult,
|
|
1326
|
-
|
|
1606
|
+
KbqSelectLoading,
|
|
1607
|
+
KbqFormFieldModule,
|
|
1608
|
+
KbqSelectError,
|
|
1609
|
+
KbqSelectNoOptions,
|
|
1610
|
+
KbqSelectErrorText
|
|
1327
1611
|
],
|
|
1328
1612
|
providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER]
|
|
1329
1613
|
}]
|
|
@@ -1333,5 +1617,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1333
1617
|
* Generated bundle index. Do not edit.
|
|
1334
1618
|
*/
|
|
1335
1619
|
|
|
1336
|
-
export { KBQ_SELECT_OPTIONS, KbqOptionTooltip, KbqSelect, KbqSelectChange, KbqSelectModule, kbqSelectOptionsProvider };
|
|
1620
|
+
export { KBQ_SELECT_OPTIONS, KbqOptionTooltip, KbqSelect, KbqSelectChange, KbqSelectError, KbqSelectErrorText, KbqSelectLoading, KbqSelectModule, KbqSelectNoOptions, delayBeforeDisplayingResultWithoutOptions, kbqSelectOptionsProvider, minimumTimeToDisplayLoading };
|
|
1337
1621
|
//# sourceMappingURL=koobiq-components-select.mjs.map
|