@koobiq/components 19.6.0 → 19.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-content.directive.d.ts +1 -0
- package/autocomplete/autocomplete-trigger.directive.d.ts +2 -1
- package/autocomplete/autocomplete.component.d.ts +7 -1
- package/breadcrumbs/breadcrumbs.scss +0 -4
- package/code-block/_code-block-theme.scss +1 -10
- package/code-block/code-block-highlight.d.ts +62 -7
- package/code-block/code-block-tokens.scss +5 -10
- package/code-block/code-block.d.ts +10 -1
- package/code-block/code-block.scss +8 -7
- package/core/forms/forms-tokens.scss +1 -1
- package/core/option/option.d.ts +10 -1
- package/core/styles/common/_groups-mixins.scss +2 -2
- package/core/styles/common/_groups.scss +6 -6
- package/core/validation/validation.d.ts +1 -1
- package/dropdown/dropdown-item.scss +9 -6
- package/dropdown/dropdown-tokens.scss +1 -1
- package/dropdown/dropdown-trigger.directive.d.ts +8 -1
- package/dropdown/dropdown.component.d.ts +6 -6
- package/dropdown/dropdown.scss +1 -1
- package/dropdown/dropdown.types.d.ts +19 -7
- package/fesm2022/koobiq-components-accordion.mjs +32 -29
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
- 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 +35 -23
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +13 -13
- package/fesm2022/koobiq-components-breadcrumbs.mjs +26 -26
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
- package/fesm2022/koobiq-components-button.mjs +19 -19
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +10 -10
- package/fesm2022/koobiq-components-clamped-text.mjs +13 -13
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +126 -51
- 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 +249 -232
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +37 -42
- 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 +69 -38
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +39 -39
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +85 -85
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +83 -81
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +343 -21
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +19 -17
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +22 -22
- package/fesm2022/koobiq-components-link.mjs +7 -7
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-markdown.mjs +10 -10
- package/fesm2022/koobiq-components-modal.mjs +34 -32
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +40 -40
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +82 -56
- 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 +16 -16
- package/fesm2022/koobiq-components-popover.mjs +18 -18
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +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 +7 -7
- package/fesm2022/koobiq-components-select.mjs +155 -68
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +28 -28
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +10 -10
- package/fesm2022/koobiq-components-split-button.mjs +7 -7
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-tabs.mjs +52 -52
- package/fesm2022/koobiq-components-tags.mjs +87 -65
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +7 -7
- package/fesm2022/koobiq-components-time-range.mjs +22 -22
- package/fesm2022/koobiq-components-timepicker.mjs +11 -26
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +62 -41
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +58 -39
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +7 -7
- package/fesm2022/koobiq-components-tooltip.mjs +17 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +17 -25
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +16 -10
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +75 -40
- 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/file-upload/multiple-file-upload.component.scss +6 -0
- package/file-upload/single-file-upload.component.scss +6 -0
- package/form-field/_form-field-theme.scss +19 -6
- package/form-field/fieldset-tokens.scss +1 -0
- package/form-field/fieldset.scss +1 -0
- package/form-field/form-field-tokens.scss +2 -0
- package/form-field/form-field.scss +19 -0
- package/form-field/password-toggle.scss +1 -1
- package/icon/icon-button.scss +5 -0
- package/icon/icon-item.scss +5 -0
- package/icon/icon-registry-providers.d.ts +34 -0
- package/icon/icon-registry.d.ts +50 -0
- package/icon/icon.component.d.ts +16 -3
- package/icon/icon.scss +7 -0
- package/icon/public-api.d.ts +2 -0
- package/inline-edit/inline-edit.d.ts +3 -1
- package/inline-edit/inline-edit.scss +1 -11
- package/link/_link-theme.scss +9 -2
- package/navbar/_navbar-theme.scss +0 -4
- package/navbar/navbar-brand.component.d.ts +3 -1
- package/navbar/navbar-item.component.d.ts +1 -0
- package/navbar/navbar.component.d.ts +1 -0
- package/package.json +4 -4
- package/popover/popover.scss +3 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +4 -4
- package/scrollbar/scrollbar-tokens.scss +1 -1
- package/select/select-option.directive.d.ts +9 -10
- package/select/select-tokens.scss +2 -2
- package/select/select.component.d.ts +51 -3
- package/tags/tag-list.component.d.ts +15 -11
- package/tags/tag.component.d.ts +5 -2
- package/timepicker/timepicker.directive.d.ts +1 -0
- package/timezone/timezone-option-tokens.scss +0 -10
- package/timezone/timezone-option.directive.d.ts +12 -9
- package/toast/toast.service.d.ts +5 -3
- package/tooltip/_tooltip-theme.scss +5 -1
- package/top-bar/top-bar.d.ts +0 -7
- package/top-bar/top-bar.scss +3 -9
- package/tree/tree-selection.component.d.ts +7 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Directionality } from '@angular/cdk/bidi';
|
|
2
2
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
3
3
|
import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, OverlayContainer } from '@angular/cdk/overlay';
|
|
4
|
-
import { CdkVirtualForOf } from '@angular/cdk/scrolling';
|
|
4
|
+
import { CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
5
5
|
import { AfterContentInit, ChangeDetectorRef, DestroyRef, DoCheck, ElementRef, EventEmitter, InjectionToken, NgZone, OnDestroy, OnInit, Provider, QueryList, Renderer2, TemplateRef } from '@angular/core';
|
|
6
6
|
import { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';
|
|
7
7
|
import { ActiveDescendantKeyManager } from '@koobiq/cdk/a11y';
|
|
8
|
-
import { CanUpdateErrorState, ErrorStateMatcher, KbqAbstractSelect, KbqComponentColors, KbqLocaleService, KbqOptgroup, KbqOption, KbqOptionBase, KbqOptionSelectionChange, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger } from '@koobiq/components/core';
|
|
8
|
+
import { CanUpdateErrorState, ErrorStateMatcher, KbqAbstractSelect, KbqComponentColors, KbqLocaleService, KbqOptgroup, KbqOption, KbqOptionBase, KbqOptionSelectionChange, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqVirtualOption } from '@koobiq/components/core';
|
|
9
9
|
import { KbqCleaner, KbqFormField, KbqFormFieldControl } from '@koobiq/components/form-field';
|
|
10
10
|
import { KbqTag } from '@koobiq/components/tags';
|
|
11
11
|
import { Observable, Subject } from 'rxjs';
|
|
@@ -156,6 +156,8 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
156
156
|
footer?: ElementRef;
|
|
157
157
|
/** Reference to the CDK virtual scroll directive for virtual scrolling support. */
|
|
158
158
|
cdkVirtualForOf?: CdkVirtualForOf<any>;
|
|
159
|
+
/** Reference to the CDK virtual scroll viewport for tracking scroll position in virtual mode. */
|
|
160
|
+
virtualScrollViewport?: CdkVirtualScrollViewport;
|
|
159
161
|
/** Query list of tags displayed in multiple selection mode. */
|
|
160
162
|
tags: QueryList<KbqTag>;
|
|
161
163
|
/** User-supplied override of the trigger element for custom rendering. */
|
|
@@ -176,6 +178,15 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
176
178
|
searchEmpty: KbqSelectSearchEmptyResult;
|
|
177
179
|
/** Template string for hidden items text. Supports {{ number }} placeholder. */
|
|
178
180
|
hiddenItemsText: string;
|
|
181
|
+
/** Determines whether preselected values are displayed. */
|
|
182
|
+
showPreselectedValues: boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Specifies the maximum number of trigger values allowed.
|
|
185
|
+
* This constant limits the size of the trigger values array to ensure performance
|
|
186
|
+
* and prevent excessive memory usage.
|
|
187
|
+
* A value of `0` indicates that there is no limit.
|
|
188
|
+
*/
|
|
189
|
+
triggerValuesLimit: number;
|
|
179
190
|
/** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */
|
|
180
191
|
panelClass: string | string[] | Set<string> | {
|
|
181
192
|
[key: string]: any;
|
|
@@ -221,6 +232,13 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
221
232
|
* @docs-private
|
|
222
233
|
*/
|
|
223
234
|
readonly valueChange: EventEmitter<any>;
|
|
235
|
+
/**
|
|
236
|
+
* Distance in pixels from the bottom of the options panel at which `scrolledToBottom` fires.
|
|
237
|
+
* Default `0` — emits only when the panel is fully scrolled to the bottom.
|
|
238
|
+
*/
|
|
239
|
+
scrolledToBottomOffset: number;
|
|
240
|
+
/** Emits when the options panel is scrolled to (or within `scrolledToBottomOffset` of) the bottom. */
|
|
241
|
+
readonly scrolledToBottom: EventEmitter<void>;
|
|
224
242
|
/**
|
|
225
243
|
* Whether the overlay should have a backdrop.
|
|
226
244
|
* When true, clicking the backdrop will close the select.
|
|
@@ -257,6 +275,20 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
257
275
|
*/
|
|
258
276
|
get compareWith(): (o1: any, o2: any) => boolean;
|
|
259
277
|
set compareWith(fn: (o1: any, o2: any) => boolean);
|
|
278
|
+
/**
|
|
279
|
+
* Factory used to construct a `KbqVirtualOption` for selected values whose
|
|
280
|
+
* `KbqOption` is not currently rendered (e.g. virtual scroll out of viewport,
|
|
281
|
+
* programmatically set initial value, `showPreselectedValues`).
|
|
282
|
+
*
|
|
283
|
+
* Required when option values are objects so the trigger (and tags in
|
|
284
|
+
* multiple mode) can render a human-readable label. Also lets consumers
|
|
285
|
+
* customise per-value `disabled` state or any future `KbqVirtualOption`
|
|
286
|
+
* fields without adding new `@Input`s.
|
|
287
|
+
*
|
|
288
|
+
* Defaults to `new KbqVirtualOption(value, this.disabled)`, which is correct
|
|
289
|
+
* for primitive values where `value` itself is the display label.
|
|
290
|
+
*/
|
|
291
|
+
virtualOptionFactory?: (value: any) => KbqVirtualOption;
|
|
260
292
|
/**
|
|
261
293
|
* Function for handling the Ctrl + A (select all) keyboard combination.
|
|
262
294
|
* By default, the internal handler selects all options.
|
|
@@ -332,6 +364,8 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
332
364
|
get multiSelection(): boolean;
|
|
333
365
|
/** Subscription to the close event of the overlay. */
|
|
334
366
|
private closeSubscription;
|
|
367
|
+
/** Subscription to the options panel scroll event used by `scrolledToBottom`. */
|
|
368
|
+
private scrollSubscription;
|
|
335
369
|
/** The scroll position of the overlay panel, calculated to center the selected option. */
|
|
336
370
|
private scrollTop;
|
|
337
371
|
/** Unique id for this input. Auto-incremented for each instance. */
|
|
@@ -498,6 +532,13 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
498
532
|
private getHeightOfOptionsContainer;
|
|
499
533
|
/** Updates the keyboard manager scroll size based on options container height. */
|
|
500
534
|
private updateScrollSize;
|
|
535
|
+
/**
|
|
536
|
+
* Subscribes to scroll events of the options panel and emits `scrolledToBottom`
|
|
537
|
+
* when the panel reaches `scrolledToBottomOffset` pixels from the bottom.
|
|
538
|
+
* Re-subscribes on every panel attach; auto-unsubscribes when the panel closes
|
|
539
|
+
* or the component is destroyed.
|
|
540
|
+
*/
|
|
541
|
+
private subscribeToScrolledToBottom;
|
|
501
542
|
/** Calculates the total width of all selected items in the matcher. */
|
|
502
543
|
private getTotalItemsWidthInMatcher;
|
|
503
544
|
/**
|
|
@@ -532,6 +573,12 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
532
573
|
* @returns Option that has the corresponding value.
|
|
533
574
|
*/
|
|
534
575
|
private selectValue;
|
|
576
|
+
/**
|
|
577
|
+
* Single entry point for building a `KbqVirtualOption` from a raw value.
|
|
578
|
+
* Uses the consumer-provided `virtualOptionFactory` when set, otherwise
|
|
579
|
+
* wraps the raw value with the select's current `disabled` state.
|
|
580
|
+
*/
|
|
581
|
+
private createVirtualOption;
|
|
535
582
|
/** Sets up a key manager to listen to keyboard events on the overlay panel. */
|
|
536
583
|
private initKeyManager;
|
|
537
584
|
/** Drops current option subscriptions and IDs and resets from scratch. */
|
|
@@ -570,8 +617,9 @@ export declare class KbqSelect extends KbqAbstractSelect implements AfterContent
|
|
|
570
617
|
/** Removes the dropdown class from the overlay container when select closes. */
|
|
571
618
|
private removeClassFromOverlayContainer;
|
|
572
619
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqSelect, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; host: true; }, { optional: true; self: true; }, null, { optional: true; }]>;
|
|
573
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; }; "multiline": { "alias": "multiline"; "required": false; }; "searchMinOptionsThreshold": { "alias": "searchMinOptionsThreshold"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "beforeOpened": "beforeOpened"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; }, ["footer", "cdkVirtualForOf", "customTrigger", "customMatcher", "customTagTemplateRef", "cleaner", "search", "searchEmpty", "options", "optionGroups"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "*", "kbq-select-footer,[kbq-select-footer]"], true, never>;
|
|
620
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "showPreselectedValues": { "alias": "showPreselectedValues"; "required": false; }; "triggerValuesLimit": { "alias": "triggerValuesLimit"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; }; "multiline": { "alias": "multiline"; "required": false; }; "searchMinOptionsThreshold": { "alias": "searchMinOptionsThreshold"; "required": false; }; "scrolledToBottomOffset": { "alias": "scrolledToBottomOffset"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "virtualOptionFactory": { "alias": "virtualOptionFactory"; "required": false; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "beforeOpened": "beforeOpened"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; "scrolledToBottom": "scrolledToBottom"; }, ["footer", "cdkVirtualForOf", "virtualScrollViewport", "customTrigger", "customMatcher", "customTagTemplateRef", "cleaner", "search", "searchEmpty", "options", "optionGroups"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "*", "kbq-select-footer,[kbq-select-footer]"], true, never>;
|
|
574
621
|
static ngAcceptInputType_multiline: unknown;
|
|
622
|
+
static ngAcceptInputType_scrolledToBottomOffset: unknown;
|
|
575
623
|
static ngAcceptInputType_multiple: unknown;
|
|
576
624
|
static ngAcceptInputType_panelMinWidth: unknown;
|
|
577
625
|
static ngAcceptInputType_tabIndex: unknown;
|
|
@@ -63,11 +63,17 @@ export declare class KbqTagList implements KbqFormFieldControl<any>, ControlValu
|
|
|
63
63
|
*/
|
|
64
64
|
get tagBlurChanges(): Observable<KbqTagEvent>;
|
|
65
65
|
/**
|
|
66
|
-
* Combined stream of all of the child tags'
|
|
66
|
+
* Combined stream of all of the child tags' destroyed events.
|
|
67
67
|
*
|
|
68
68
|
* @docs-private
|
|
69
69
|
*/
|
|
70
70
|
get tagRemoveChanges(): Observable<KbqTagEvent>;
|
|
71
|
+
/**
|
|
72
|
+
* Combined stream of all of the child tags' removal request events.
|
|
73
|
+
*
|
|
74
|
+
* @docs-private
|
|
75
|
+
*/
|
|
76
|
+
protected get tagBeforeRemoveChanges(): Observable<KbqTagEvent>;
|
|
71
77
|
/**
|
|
72
78
|
* Combined stream of all of the child tags' edit change events.
|
|
73
79
|
*
|
|
@@ -157,7 +163,8 @@ export declare class KbqTagList implements KbqFormFieldControl<any>, ControlValu
|
|
|
157
163
|
editable: boolean;
|
|
158
164
|
/**
|
|
159
165
|
* Whether to emit change events when tags are added/removed.
|
|
160
|
-
*
|
|
166
|
+
*
|
|
167
|
+
* @deprecated No longer needed. Will be removed in the next major release.
|
|
161
168
|
*/
|
|
162
169
|
emitOnTagChanges: boolean;
|
|
163
170
|
/** Whether the tags in the list are removable. */
|
|
@@ -227,20 +234,16 @@ export declare class KbqTagList implements KbqFormFieldControl<any>, ControlValu
|
|
|
227
234
|
errorState: boolean;
|
|
228
235
|
/** The tag input to add more tags */
|
|
229
236
|
private tagInput;
|
|
237
|
+
/** True when the next `tags.changes` emission is triggered by a UI action, not programmatic update. */
|
|
238
|
+
private pendingUIChange;
|
|
230
239
|
/**
|
|
231
240
|
* When a tag is destroyed, we store the index of the destroyed tag until the tags
|
|
232
241
|
* query list notifies about the update. This is necessary because we cannot determine an
|
|
233
242
|
* appropriate tag that should receive focus until the array of tags updated completely.
|
|
234
243
|
*/
|
|
235
244
|
private lastDestroyedTagIndex;
|
|
236
|
-
/**
|
|
237
|
-
private
|
|
238
|
-
/** Subscription to blur changes in the tags. */
|
|
239
|
-
private tagBlurSubscription;
|
|
240
|
-
/** Subscription to remove changes in tags. */
|
|
241
|
-
private tagRemoveSubscription;
|
|
242
|
-
/** Subscription to edit changes in tags. */
|
|
243
|
-
private tagEditSubscription;
|
|
245
|
+
/** Triggers unsubscription from all per-tags streams when tags are reset. */
|
|
246
|
+
private readonly tagsSubscriptions$;
|
|
244
247
|
constructor(elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef, defaultErrorStateMatcher: ErrorStateMatcher, dir: Directionality, parentForm: NgForm, parentFormGroup: FormGroupDirective, ngControl: NgControl);
|
|
245
248
|
ngDoCheck(): void;
|
|
246
249
|
ngAfterContentInit(): void;
|
|
@@ -252,6 +255,8 @@ export declare class KbqTagList implements KbqFormFieldControl<any>, ControlValu
|
|
|
252
255
|
onTouched: () => void;
|
|
253
256
|
/** @docs-private */
|
|
254
257
|
onChange: (value: any) => void;
|
|
258
|
+
/** Notifies that the next `tags.changes` emission is UI-initiated. */
|
|
259
|
+
notifyPendingTagChange(): void;
|
|
255
260
|
/**
|
|
256
261
|
* Associates an HTML input element with this tag list.
|
|
257
262
|
*
|
|
@@ -344,7 +349,6 @@ export declare class KbqTagList implements KbqFormFieldControl<any>, ControlValu
|
|
|
344
349
|
removeSelected(): void;
|
|
345
350
|
private propagateTagsChanges;
|
|
346
351
|
private resetTags;
|
|
347
|
-
private dropSubscriptions;
|
|
348
352
|
/** Listens to user-generated selection events on each tag. */
|
|
349
353
|
private listenToTagsFocus;
|
|
350
354
|
private listenToTagsRemoved;
|
package/tags/tag.component.d.ts
CHANGED
|
@@ -134,9 +134,12 @@ export declare class KbqTag extends KbqColorDirective implements IFocusableOptio
|
|
|
134
134
|
removeIcon: KbqTagRemove;
|
|
135
135
|
/** Emitted when the tag is selected or deselected. */
|
|
136
136
|
readonly selectionChange: EventEmitter<KbqTagSelectionChange>;
|
|
137
|
-
/** Emitted when the tag is destroyed. */
|
|
137
|
+
/** Emitted when the tag is destroyed and leaving the DOM. */
|
|
138
138
|
readonly destroyed: EventEmitter<KbqTagEvent>;
|
|
139
|
-
/**
|
|
139
|
+
/**
|
|
140
|
+
* Emitted when a tag is to be removed.
|
|
141
|
+
* Fires on programmatic and UI removal (click or keyboard).
|
|
142
|
+
*/
|
|
140
143
|
readonly removed: EventEmitter<KbqTagEvent>;
|
|
141
144
|
/** Whether the tag is selected. */
|
|
142
145
|
get selected(): boolean;
|
|
@@ -86,6 +86,7 @@ export declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, Control
|
|
|
86
86
|
/** @docs-private */
|
|
87
87
|
get errorState(): boolean;
|
|
88
88
|
set errorState(value: boolean);
|
|
89
|
+
private readonly useLegacyValidation;
|
|
89
90
|
private readonly uid;
|
|
90
91
|
private readonly validator;
|
|
91
92
|
private lastValueValid;
|
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
@use '../list/list-tokens';
|
|
2
1
|
@use '../core/option/option-tokens';
|
|
3
2
|
|
|
4
3
|
.kbq-timezone-select__panel {
|
|
5
|
-
--kbq-select-size-single-padding-left: var(--kbq-size-m);
|
|
6
|
-
--kbq-select-size-single-padding-right: var(--kbq-size-xxs);
|
|
7
|
-
--kbq-select-size-single-padding-vertical: var(--kbq-size-xs);
|
|
8
|
-
--kbq-select-size-single-content-gap: var(--kbq-size-xxs);
|
|
9
|
-
--kbq-select-size-multiple-padding-left: var(--kbq-size-xxs);
|
|
10
|
-
--kbq-select-size-multiple-padding-right: var(--kbq-size-xxs);
|
|
11
|
-
--kbq-select-size-multiple-content-gap: var(--kbq-size-xxs);
|
|
12
4
|
--kbq-timezone-option-size-padding: var(--kbq-size-xxs) 10px;
|
|
13
5
|
--kbq-timezone-option-size-column-gap: 16px;
|
|
14
6
|
--kbq-timezone-option-size-height: auto;
|
|
15
7
|
--kbq-timezone-option-size-max-height: 5em;
|
|
16
8
|
--kbq-timezone-option-size-optgroup-label-padding: 12px 12px 4px 12px;
|
|
17
9
|
/* THEME TOKENS */
|
|
18
|
-
--kbq-select-panel-dropdown-background: var(--kbq-background-card);
|
|
19
|
-
--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup);
|
|
20
10
|
--kbq-timezone-option-text: var(--kbq-foreground-contrast);
|
|
21
11
|
--kbq-timezone-option-caption: var(--kbq-foreground-contrast-secondary);
|
|
22
12
|
--kbq-timezone-option-optgroup-label: var(--kbq-foreground-contrast-secondary);
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { AfterViewInit,
|
|
1
|
+
import { AfterViewInit, OnDestroy } from '@angular/core';
|
|
2
2
|
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
3
|
-
import { KbqTimezoneOption } from './timezone-option.component';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare const TOOLTIP_VISIBLE_ROWS_COUNT = 3;
|
|
6
5
|
export declare class KbqTimezoneOptionTooltip extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {
|
|
7
|
-
private
|
|
8
|
-
private
|
|
9
|
-
private resizeObserver;
|
|
10
|
-
private
|
|
11
|
-
|
|
6
|
+
private readonly option;
|
|
7
|
+
private readonly changeDetectorRef;
|
|
8
|
+
private readonly resizeObserver;
|
|
9
|
+
private readonly contentObserver;
|
|
10
|
+
private readonly debounceInterval;
|
|
11
|
+
private resizeSubscription;
|
|
12
|
+
private contentObserverSubscription;
|
|
13
|
+
private focusMonitorSubscription;
|
|
14
|
+
constructor();
|
|
12
15
|
ngAfterViewInit(): void;
|
|
13
16
|
ngOnDestroy(): void;
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
handleElementEnter(): void;
|
|
18
|
+
handleElementLeave(): void;
|
|
16
19
|
private checkTooltipDisabled;
|
|
17
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTimezoneOptionTooltip, never>;
|
|
18
21
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTimezoneOptionTooltip, "kbq-timezone-option", never, {}, {}, never, never, true, never>;
|
package/toast/toast.service.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { KbqToastComponent } from './toast.component';
|
|
|
6
6
|
import { KbqToastConfig, KbqToastData } from './toast.type';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare const KBQ_TOAST_FACTORY: InjectionToken<typeof KbqToastComponent>;
|
|
9
|
+
/** Generic `T` is a type hint only; the runtime component comes from `KBQ_TOAST_FACTORY`. */
|
|
9
10
|
export declare class KbqToastService<T extends KbqToastComponent = KbqToastComponent> implements OnDestroy {
|
|
10
11
|
private overlay;
|
|
11
12
|
private injector;
|
|
@@ -20,10 +21,11 @@ export declare class KbqToastService<T extends KbqToastComponent = KbqToastCompo
|
|
|
20
21
|
readonly focused: BehaviorSubject<boolean>;
|
|
21
22
|
readonly animation: BehaviorSubject<AnimationEvent | null>;
|
|
22
23
|
timer: import("rxjs").Observable<number>;
|
|
23
|
-
private containerInstance
|
|
24
|
-
private overlayRef
|
|
25
|
-
private portal
|
|
24
|
+
private containerInstance?;
|
|
25
|
+
private overlayRef?;
|
|
26
|
+
private portal?;
|
|
26
27
|
private timerSubscription;
|
|
28
|
+
private currentPosition?;
|
|
27
29
|
private toastsDict;
|
|
28
30
|
private templatesDict;
|
|
29
31
|
constructor(overlay: Overlay, injector: Injector, overlayContainer: OverlayContainer, ngZone: NgZone, toastFactory: any, toastConfig: KbqToastConfig);
|
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
& .kbq-tooltip__inner {
|
|
5
5
|
color: var(--kbq-tooltip-#{$style-name}-text);
|
|
6
6
|
|
|
7
|
-
background-
|
|
7
|
+
background-image: linear-gradient(
|
|
8
|
+
var(--kbq-tooltip-#{$style-name}-background),
|
|
9
|
+
var(--kbq-tooltip-#{$style-name}-background)
|
|
10
|
+
);
|
|
11
|
+
background-color: var(--kbq-background-bg);
|
|
8
12
|
}
|
|
9
13
|
|
|
10
14
|
& .kbq-tooltip__arrow {
|
package/top-bar/top-bar.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { KbqOverflowItems } from '@koobiq/components/overflow-items';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
2
|
export declare class KbqTopBarSpacer {
|
|
4
3
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTopBarSpacer, never>;
|
|
@@ -12,12 +11,6 @@ export declare class KbqTopBarContainer {
|
|
|
12
11
|
* Conditionally applies a CSS class based on the value
|
|
13
12
|
*/
|
|
14
13
|
readonly placement: import("@angular/core").InputSignal<"start" | "end">;
|
|
15
|
-
/**
|
|
16
|
-
* Track if container has `KbqOverflowItems` directive assigned.
|
|
17
|
-
* Used to replace `gap` with `margin` so `KbqOverflowItems` will calculate correct width on resize.
|
|
18
|
-
* @docs-private
|
|
19
|
-
*/
|
|
20
|
-
protected readonly overflowItems: KbqOverflowItems | null;
|
|
21
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTopBarContainer, never>;
|
|
22
15
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTopBarContainer, "[kbqTopBarContainer]", never, { "placement": { "alias": "placement"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
16
|
}
|
package/top-bar/top-bar.scss
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
.kbq-top-bar-container {
|
|
48
|
-
&:has(
|
|
48
|
+
&:has(.kbq-overflow-items) {
|
|
49
49
|
gap: unset;
|
|
50
50
|
overflow: hidden;
|
|
51
51
|
// reduce height added by overflow-items' padding
|
|
@@ -53,10 +53,6 @@
|
|
|
53
53
|
margin-bottom: calc(-1 * var(--kbq-size-border-width));
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
.kbq-overflow-items {
|
|
57
|
-
@include _overflow-items-margins;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
56
|
&.kbq-top-bar-container__start {
|
|
61
57
|
display: flex;
|
|
62
58
|
gap: var(--kbq-top-bar-container-start-gap);
|
|
@@ -71,10 +67,8 @@
|
|
|
71
67
|
justify-content: end;
|
|
72
68
|
}
|
|
73
69
|
|
|
74
|
-
&.kbq-
|
|
75
|
-
|
|
76
|
-
justify-content: unset;
|
|
77
|
-
|
|
70
|
+
&.kbq-overflow-items,
|
|
71
|
+
> .kbq-overflow-items {
|
|
78
72
|
@include _overflow-items-margins;
|
|
79
73
|
}
|
|
80
74
|
}
|
|
@@ -69,6 +69,7 @@ export declare class KbqTreeSelection extends KbqTreeBase<any> implements Contro
|
|
|
69
69
|
readonly onSelectAll: EventEmitter<KbqTreeSelectAllEvent<KbqTreeOption>>;
|
|
70
70
|
readonly onCopy: EventEmitter<KbqTreeCopyEvent<KbqTreeOption>>;
|
|
71
71
|
private sortedNodes;
|
|
72
|
+
private lastSyncedDataNodes;
|
|
72
73
|
get autoSelect(): boolean;
|
|
73
74
|
set autoSelect(value: boolean);
|
|
74
75
|
private _autoSelect;
|
|
@@ -119,6 +120,12 @@ export declare class KbqTreeSelection extends KbqTreeBase<any> implements Contro
|
|
|
119
120
|
*/
|
|
120
121
|
setDisabledState(isDisabled: boolean): void;
|
|
121
122
|
setOptionsFromValues(values: any[]): void;
|
|
123
|
+
/**
|
|
124
|
+
* Rebinds orphan node references in selectionModel to current treeControl.dataNodes by value.
|
|
125
|
+
* Needed after dataSource.data is replaced — selectionModel holds references to old node
|
|
126
|
+
* objects, but options render with new ones, so toggle()/isSelected() break on identity.
|
|
127
|
+
*/
|
|
128
|
+
private syncSelectionModelToDataNodes;
|
|
122
129
|
getSelectedValues(): any[];
|
|
123
130
|
getItemHeight(): number;
|
|
124
131
|
setStateChildren(option: KbqTreeOption, state: boolean): void;
|