@koobiq/components 20.3.1 → 20.3.3
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.scss +4 -1
- package/accordion/index.d.ts +36 -12
- package/alert/index.d.ts +8 -0
- package/breadcrumbs/index.d.ts +2 -0
- package/button-toggle/button-toggle-tokens.scss +14 -0
- package/button-toggle/button-toggle.scss +75 -3
- package/core/index.d.ts +33 -1
- package/core/styles/common/_select.scss +102 -4
- package/core/styles/typography/_typography.scss +8 -0
- package/ellipsis-center/index.d.ts +35 -2
- package/fesm2022/koobiq-components-accordion.mjs +143 -44
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +17 -1
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +3 -2
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +2 -2
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +8 -3
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +10 -5
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +47 -5
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +2 -2
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +77 -22
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +7 -7
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +76 -41
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +3 -3
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +6 -2
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +48 -7
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +38 -12
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +5 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +4 -1
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +117 -16
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +5 -1
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +25 -6
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +7 -1
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +388 -74
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +15 -3
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +29 -4
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +2 -2
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +14 -4
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/file-upload.scss +11 -0
- package/file-upload/index.d.ts +1 -1
- package/file-upload/multiple-file-upload.component.scss +15 -3
- package/file-upload/single-file-upload.component.scss +10 -2
- package/filter-bar/filter-bar-tokens.scss +2 -1
- package/filter-bar/index.d.ts +25 -4
- package/filter-bar/pipes/base-pipe.scss +13 -6
- package/filter-bar/pipes/pipe-input.scss +3 -1
- package/link/_link-theme.scss +50 -15
- package/markdown/index.d.ts +2 -0
- package/modal/index.d.ts +16 -7
- package/navbar/_navbar-item_horizontal.scss +5 -0
- package/navbar/index.d.ts +15 -1
- package/navbar/navbar-brand.scss +12 -5
- package/notification-center/notification-item.scss +4 -1
- package/package.json +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/migrations/alert-signals/index.js +4 -1
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +3 -34
- package/schematics/migrations/empty-state-size-attr/index.js +3 -34
- package/schematics/migrations/filter-bar-signals/index.js +4 -1
- package/schematics/migrations/loader-overlay-size-attr/index.js +3 -34
- package/schematics/migrations/v20-upgrade/index.js +4 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/utils/angular-parsing.js +11 -12
- package/schematics/utils/package-config.js +5 -4
- package/schematics/utils/typescript.js +24 -0
- package/select/_select-theme.scss +9 -1
- package/select/index.d.ts +19 -2
- package/select/select.scss +13 -0
- package/sidebar/index.d.ts +1 -0
- package/sidepanel/index.d.ts +9 -0
- package/tabs/index.d.ts +1 -0
- package/time-range/index.d.ts +140 -5
- package/time-range/time-range.scss +16 -1
- package/title/index.d.ts +10 -2
- package/tooltip/index.d.ts +13 -1
- package/tree/index.d.ts +1 -0
package/accordion/accordion.scss
CHANGED
|
@@ -45,13 +45,16 @@
|
|
|
45
45
|
overflow: hidden;
|
|
46
46
|
|
|
47
47
|
& > .kbq-accordion-content__body {
|
|
48
|
+
// Nested contents must not inherit this host's pinned height.
|
|
49
|
+
--kbq-accordion-content-height: initial;
|
|
50
|
+
|
|
48
51
|
margin: unset;
|
|
49
52
|
padding: var(--kbq-accordion-size-item-content-padding);
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
&[data-state='open'] {
|
|
53
56
|
transition: height 300ms ease-out;
|
|
54
|
-
height: var(--kbq-accordion-content-height);
|
|
57
|
+
height: var(--kbq-accordion-content-height, auto);
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
&[data-state='closed'] {
|
package/accordion/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, AfterViewInit, OnDestroy, ChangeDetectorRef, AfterContentInit, ElementRef, Signal } from '@angular/core';
|
|
2
|
+
import { InjectionToken, AfterViewInit, OnDestroy, OnInit, ChangeDetectorRef, AfterContentInit, ElementRef, Signal, DoCheck } from '@angular/core';
|
|
3
3
|
import { FocusMonitor, FocusKeyManager } from '@angular/cdk/a11y';
|
|
4
4
|
import { Directionality } from '@angular/cdk/bidi';
|
|
5
5
|
import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
|
|
@@ -86,6 +86,7 @@ declare class KbqAccordionTriggerDirective {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
declare class KbqAccordionTrigger implements AfterViewInit, OnDestroy {
|
|
89
|
+
private readonly platform;
|
|
89
90
|
/** @docs-private */
|
|
90
91
|
protected readonly nativeElement: HTMLElement;
|
|
91
92
|
/** @docs-private */
|
|
@@ -108,7 +109,7 @@ declare class KbqAccordionTrigger implements AfterViewInit, OnDestroy {
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
type KbqAccordionItemState = 'open' | 'closed';
|
|
111
|
-
declare class KbqAccordionItem implements OnDestroy {
|
|
112
|
+
declare class KbqAccordionItem implements OnInit, OnDestroy {
|
|
112
113
|
/**
|
|
113
114
|
* The accordion this item belongs to — always the nearest one, because it is injected.
|
|
114
115
|
* The accordion reads it back to tell its own items apart from a nested accordion's.
|
|
@@ -131,10 +132,14 @@ declare class KbqAccordionItem implements OnDestroy {
|
|
|
131
132
|
get dataState(): KbqAccordionItemState;
|
|
132
133
|
/** The layout orientation inherited from the parent accordion. @docs-private */
|
|
133
134
|
get orientation(): KbqAccordionOrientation;
|
|
134
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Whether the AccordionItem is expanded. When the accordion initializes, its controlled `value`, the saved
|
|
137
|
+
* state and `defaultValue` take precedence over it.
|
|
138
|
+
*/
|
|
135
139
|
get expanded(): boolean;
|
|
136
140
|
set expanded(expanded: boolean);
|
|
137
141
|
private _expanded;
|
|
142
|
+
private initialized;
|
|
138
143
|
/**
|
|
139
144
|
* The item's own `value` input. Must stay `public`: a `protected` input cannot be bound from a
|
|
140
145
|
* consumer template (TS2445 under full AOT template type-checking).
|
|
@@ -162,6 +167,7 @@ declare class KbqAccordionItem implements OnDestroy {
|
|
|
162
167
|
/** Subscription to openAll/closeAll events. */
|
|
163
168
|
private openCloseAllSubscription;
|
|
164
169
|
constructor();
|
|
170
|
+
ngOnInit(): void;
|
|
165
171
|
ngOnDestroy(): void;
|
|
166
172
|
/** Moves focus to the item's trigger. */
|
|
167
173
|
focus(): void;
|
|
@@ -177,6 +183,8 @@ declare class KbqAccordionItem implements OnDestroy {
|
|
|
177
183
|
disableAnimation(): void;
|
|
178
184
|
/** Restores the open/close animation of the item's content and chevron. @docs-private */
|
|
179
185
|
enableAnimation(): void;
|
|
186
|
+
/** Emits the expanded state and propagates it to the siblings, the content and the saved state. */
|
|
187
|
+
private reportExpanded;
|
|
180
188
|
private subscribeToOpenCloseAllActions;
|
|
181
189
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAccordionItem, never>;
|
|
182
190
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqAccordionItem, "kbq-accordion-item, [kbq-accordion-item]", never, { "expanded": { "alias": "expanded"; "required": false; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "closed": "closed"; "opened": "opened"; "expandedChange": "expandedChange"; }, ["trigger", "triggerComponent", "content"], never, true, never>;
|
|
@@ -279,6 +287,11 @@ declare class KbqAccordion implements OnDestroy, AfterViewInit, AfterContentInit
|
|
|
279
287
|
private readonly defaultValueArray;
|
|
280
288
|
private _id;
|
|
281
289
|
private state;
|
|
290
|
+
/**
|
|
291
|
+
* Whether the saved state has been read. An item reports a static `[expanded]` from its own `ngOnInit`,
|
|
292
|
+
* which runs before `ngAfterContentInit`, and writing then would replace the saved state before it is read.
|
|
293
|
+
*/
|
|
294
|
+
private stateRestored;
|
|
282
295
|
constructor();
|
|
283
296
|
ngAfterContentInit(): void;
|
|
284
297
|
ngAfterViewInit(): void;
|
|
@@ -312,8 +325,10 @@ declare class KbqAccordion implements OnDestroy, AfterViewInit, AfterContentInit
|
|
|
312
325
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqAccordion, "kbq-accordion, [kbq-accordion]", never, { "useStateSaving": { "alias": "useStateSaving"; "required": false; "isSignal": true; }; "stateSavingKey": { "alias": "stateSavingKey"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, ["allItems"], ["*"], true, never>;
|
|
313
326
|
}
|
|
314
327
|
|
|
315
|
-
declare class KbqAccordionContentDirective implements AfterViewInit {
|
|
328
|
+
declare class KbqAccordionContentDirective implements OnInit, DoCheck, AfterViewInit {
|
|
316
329
|
private readonly renderer;
|
|
330
|
+
private readonly platform;
|
|
331
|
+
private readonly injector;
|
|
317
332
|
/** @docs-private */
|
|
318
333
|
protected readonly nativeElement: HTMLElement;
|
|
319
334
|
/** @docs-private */
|
|
@@ -325,23 +340,32 @@ declare class KbqAccordionContentDirective implements AfterViewInit {
|
|
|
325
340
|
/** @docs-private */
|
|
326
341
|
protected readonly hidden: _angular_core.WritableSignal<boolean>;
|
|
327
342
|
private savedTransition;
|
|
328
|
-
|
|
329
|
-
/** Whether the first browser render has happened, i.e. whether the content can be measured. */
|
|
343
|
+
/** Whether the first browser render has happened; until then a toggle only sets the initial state. */
|
|
330
344
|
private rendered;
|
|
331
345
|
constructor();
|
|
346
|
+
ngOnInit(): void;
|
|
347
|
+
ngDoCheck(): void;
|
|
332
348
|
ngAfterViewInit(): void;
|
|
333
349
|
toggle(): void;
|
|
350
|
+
/** @docs-private */
|
|
351
|
+
protected onTransitionEnd(event: TransitionEvent): void;
|
|
334
352
|
disableAnimation(): void;
|
|
335
353
|
enableAnimation(): void;
|
|
336
354
|
/**
|
|
337
|
-
*
|
|
338
|
-
*
|
|
355
|
+
* Pins the height the transition runs between: the natural height of the content when expanding,
|
|
356
|
+
* the current one when collapsing. The pin is released once the transition ends, so expanded
|
|
357
|
+
* content keeps `height: auto` and follows its own size — its container can be laid out later
|
|
358
|
+
* (a content panel, an overlay) or resized, and nested items can toggle.
|
|
339
359
|
*
|
|
340
|
-
* `scrollHeight`
|
|
341
|
-
* and collapsed to `height: 0` while closed, so its box reports `0`, whereas `scrollHeight`
|
|
342
|
-
* still reports the height of the content it clips.
|
|
360
|
+
* `scrollHeight` reports the natural height even while the `overflow: hidden` host is collapsed.
|
|
343
361
|
*/
|
|
344
|
-
private
|
|
362
|
+
private pinHeight;
|
|
363
|
+
/** Checks the pin once `data-state` has flipped. */
|
|
364
|
+
private settleHeight;
|
|
365
|
+
/** Whether a height transition runs on the host; `undefined` without the Web Animations API. */
|
|
366
|
+
private isHeightTransitionRunning;
|
|
367
|
+
private setHeight;
|
|
368
|
+
private releaseHeight;
|
|
345
369
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAccordionContentDirective, never>;
|
|
346
370
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqAccordionContentDirective, "[kbqAccordionContent]", ["kbqAccordionContent"], {}, {}, never, never, true, never>;
|
|
347
371
|
}
|
package/alert/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ declare class KbqAlertControl {
|
|
|
42
42
|
* technology announces it — see the component guide.
|
|
43
43
|
*/
|
|
44
44
|
declare class KbqAlert {
|
|
45
|
+
private readonly elementRef;
|
|
45
46
|
/** @docs-private */
|
|
46
47
|
protected readonly iconItem: _angular_core.Signal<KbqIconItem | undefined>;
|
|
47
48
|
/** @docs-private */
|
|
@@ -74,7 +75,14 @@ declare class KbqAlert {
|
|
|
74
75
|
protected readonly projectedIcon: _angular_core.Signal<KbqIcon | undefined>;
|
|
75
76
|
/** Last color this component auto-assigned to the icon; lets us correct color on change without ignoring consumer's color. */
|
|
76
77
|
private lastAutoColor;
|
|
78
|
+
/** Guards the dev-mode double-icon warning so it fires once per instance. */
|
|
79
|
+
private multipleIconsWarned;
|
|
77
80
|
constructor();
|
|
81
|
+
/**
|
|
82
|
+
* The icon slot projects `[kbq-icon]` and `[kbq-icon-item]` alike, and the two register under separate DI
|
|
83
|
+
* tokens, so projecting both renders two icons side by side while only the `KbqIcon` is auto-tinted.
|
|
84
|
+
*/
|
|
85
|
+
private warnOnMultipleProjectedIcons;
|
|
78
86
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAlert, never>;
|
|
79
87
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqAlert, "kbq-alert", ["kbqAlert"], { "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "alertStyle": { "alias": "alertStyle"; "required": false; "isSignal": true; }; "alertColor": { "alias": "alertColor"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, ["iconItem", "icon", "button", "title", "control", "closeButton"], ["[kbq-icon-item],[kbq-icon]", "[kbq-alert-title]", "*", "[kbq-alert-control]", "[kbq-alert-close-button]"], true, never>;
|
|
80
88
|
}
|
package/breadcrumbs/index.d.ts
CHANGED
|
@@ -133,9 +133,11 @@ declare class KbqBreadcrumbsSeparator {
|
|
|
133
133
|
* Directive to style and configure buttons used as breadcrumb items.
|
|
134
134
|
* - Inherits focus management behavior from `RdxRovingFocusItemDirective`.
|
|
135
135
|
* - Optionally injects `KbqButton` to customize its style for breadcrumb usage.
|
|
136
|
+
* - Sets `type="button"` on a `<button>` host, so a breadcrumb never submits a surrounding form.
|
|
136
137
|
*/
|
|
137
138
|
declare class KbqBreadcrumbButton implements OnInit {
|
|
138
139
|
private readonly button;
|
|
140
|
+
protected readonly element: HTMLElement;
|
|
139
141
|
ngOnInit(): void;
|
|
140
142
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqBreadcrumbButton, never>;
|
|
141
143
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqBreadcrumbButton, "[kbq-button][kbqBreadcrumb]", never, {}, {}, never, never, true, [{ directive: typeof RdxRovingFocusItemDirective; inputs: { "focusable": "focusable"; }; outputs: {}; }]>;
|
|
@@ -11,6 +11,20 @@
|
|
|
11
11
|
--kbq-button-toggle-size-item-padding-vertical: var(--kbq-size-3xs);
|
|
12
12
|
--kbq-button-toggle-size-item-content-gap-horizontal: var(--kbq-size-xxs);
|
|
13
13
|
--kbq-button-toggle-size-item-focus-outline-width: var(--kbq-size-3xs);
|
|
14
|
+
// How far an item's hit area reaches past the pill it paints. Measured from the inner button's
|
|
15
|
+
// border box, one item border inside the item's own — hence the border-width term in each. `-gap` is
|
|
16
|
+
// the half of the inter-item gap an item claims; the other two cover the group's padding. The
|
|
17
|
+
// pseudo-element they offset is in button-toggle.scss, next to the note on the two other places
|
|
18
|
+
// this repo extends a hit area the same way.
|
|
19
|
+
--kbq-button-toggle-size-item-hit-area-gap: calc(
|
|
20
|
+
var(--kbq-size-border-width) + var(--kbq-button-toggle-size-container-content-gap-horizontal) / 2
|
|
21
|
+
);
|
|
22
|
+
--kbq-button-toggle-size-item-hit-area-horizontal: calc(
|
|
23
|
+
var(--kbq-size-border-width) + var(--kbq-button-toggle-size-container-padding-horizontal)
|
|
24
|
+
);
|
|
25
|
+
--kbq-button-toggle-size-item-hit-area-vertical: calc(
|
|
26
|
+
var(--kbq-size-border-width) + var(--kbq-button-toggle-size-container-padding-vertical)
|
|
27
|
+
);
|
|
14
28
|
/* THEME TOKENS */
|
|
15
29
|
--kbq-button-toggle-container-background: var(--kbq-background-contrast-fade);
|
|
16
30
|
--kbq-button-toggle-item-default-background: var(--kbq-background-transparent);
|
|
@@ -17,17 +17,31 @@
|
|
|
17
17
|
|
|
18
18
|
.kbq-button-toggle {
|
|
19
19
|
display: flex;
|
|
20
|
-
overflow: hidden;
|
|
21
20
|
justify-content: flex-start;
|
|
22
21
|
align-items: center;
|
|
23
22
|
|
|
23
|
+
// Must not clip: the button's hit area below reaches outside this box. Not `overflow: clip` with
|
|
24
|
+
// an `overflow-clip-margin` — Chromium rejects math functions there, so the margin cannot follow
|
|
25
|
+
// the tokens the offsets come from and computes to `0px`, clipping the hit area away.
|
|
26
|
+
|
|
27
|
+
// What the item stops containing, and why nothing here takes it back: a toggle projects its
|
|
28
|
+
// content into the button's own `.kbq-button-text`, which keeps the `overflow: hidden` of
|
|
29
|
+
// `kbq-truncate-line()`, so content still cannot spill sideways past the button's content box.
|
|
30
|
+
// Content *taller* than the fixed item height no longer is — and cannot be re-clipped from
|
|
31
|
+
// inside the button, since the only boxes there with a definite height are the button itself,
|
|
32
|
+
// whose `::before` this exists for, and the label box, which would clip its own descenders.
|
|
33
|
+
overflow: visible;
|
|
34
|
+
|
|
35
|
+
// What that clip used to give for free: a flex item's automatic minimum size is zero only while
|
|
36
|
+
// its `overflow` is non-`visible`, and that is what lets the label truncate.
|
|
37
|
+
min-width: 0;
|
|
38
|
+
|
|
24
39
|
// Content-box on purpose, and load-bearing. `--kbq-button-toggle-size-item-height` is 22px,
|
|
25
40
|
// not the 24px of the design's `--kbq-size-xxl`: DS-3136 subtracted the border it added here
|
|
26
41
|
// from the token rather than from the rendered box, so the item only reaches its designed
|
|
27
42
|
// 24px while the border sits outside the declared height. A global `border-box` reset in a
|
|
28
43
|
// consuming application would pull the border back inside and leave the item 2px short —
|
|
29
|
-
// and the inner button, which is sized from the same token, would
|
|
30
|
-
// content box and be clipped by `overflow: hidden` above.
|
|
44
|
+
// and the inner button, which is sized from the same token, would then spill past it.
|
|
31
45
|
box-sizing: content-box;
|
|
32
46
|
|
|
33
47
|
height: var(--kbq-button-toggle-size-item-height);
|
|
@@ -57,6 +71,21 @@
|
|
|
57
71
|
button-toggle-size-item-focus-outline-width]
|
|
58
72
|
);
|
|
59
73
|
|
|
74
|
+
// Hit area over the gutters the group's `gap` and `padding` leave around the pill this button
|
|
75
|
+
// paints, so the highlight does not drop out between segments. On the button, not the item
|
|
76
|
+
// host, so pointer events resolve to it and the gutter is clickable too. `::before` because
|
|
77
|
+
// `::after` is the `.kbq-progress` shimmer. Offsets are per orientation, below.
|
|
78
|
+
|
|
79
|
+
// The third place this repo extends a hit area with a transparent pseudo-element, after
|
|
80
|
+
// `.kbq-navbar-item`'s `:before` (DS-2558) and `select.item-active-area()`. Neither is
|
|
81
|
+
// reusable here: the mixin claims a fixed strip on one side of a plain vertical list, with
|
|
82
|
+
// no gap to tile between two neighbours, no group padding at the ends, and no orientation
|
|
83
|
+
// to swap the axes for.
|
|
84
|
+
&:before {
|
|
85
|
+
content: '';
|
|
86
|
+
position: absolute;
|
|
87
|
+
}
|
|
88
|
+
|
|
60
89
|
& .kbq-button-wrapper {
|
|
61
90
|
width: 100%;
|
|
62
91
|
}
|
|
@@ -81,6 +110,16 @@
|
|
|
81
110
|
}
|
|
82
111
|
}
|
|
83
112
|
|
|
113
|
+
// Hit-area offsets, one orientation each — the vertical block below is this one with the axes
|
|
114
|
+
// swapped. The gap is split at its midline so two neighbours tile it rather than overlap, which would
|
|
115
|
+
// hand the whole gutter to whichever paints last; the outermost sides have no neighbour to share with
|
|
116
|
+
// and take the group's padding instead, leaving no point inside the group unclaimed.
|
|
117
|
+
|
|
118
|
+
// `:first-of-type`/`:last-of-type`, not `:first-child`/`:last-child`: the group is a bare directive
|
|
119
|
+
// with no template, so a consumer's own element — a divider, a leading icon — is rendered as a real
|
|
120
|
+
// child among the toggles and would take the positional match away from the toggle that actually sits
|
|
121
|
+
// at the edge, putting the dead zone back. The class only ever lands on a `kbq-button-toggle` element,
|
|
122
|
+
// so matching by type reads the toggles alone.
|
|
84
123
|
&:not(.kbq-button-toggle_vertical) {
|
|
85
124
|
.kbq-button-toggle {
|
|
86
125
|
> .kbq-button,
|
|
@@ -88,6 +127,39 @@
|
|
|
88
127
|
max-width: 100%;
|
|
89
128
|
|
|
90
129
|
height: var(--kbq-button-toggle-size-item-height);
|
|
130
|
+
|
|
131
|
+
&:before {
|
|
132
|
+
inset-block: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-vertical));
|
|
133
|
+
inset-inline: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-gap));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
&:first-of-type > :is(.kbq-button, .kbq-button-icon):before {
|
|
138
|
+
inset-inline-start: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-horizontal));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
&:last-of-type > :is(.kbq-button, .kbq-button-icon):before {
|
|
142
|
+
inset-inline-end: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-horizontal));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
&.kbq-button-toggle_vertical {
|
|
148
|
+
.kbq-button-toggle {
|
|
149
|
+
> .kbq-button,
|
|
150
|
+
> .kbq-button-icon {
|
|
151
|
+
&:before {
|
|
152
|
+
inset-inline: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-horizontal));
|
|
153
|
+
inset-block: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-gap));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
&:first-of-type > :is(.kbq-button, .kbq-button-icon):before {
|
|
158
|
+
inset-block-start: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-vertical));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
&:last-of-type > :is(.kbq-button, .kbq-button-icon):before {
|
|
162
|
+
inset-block-end: calc(-1 * var(--kbq-button-toggle-size-item-hit-area-vertical));
|
|
91
163
|
}
|
|
92
164
|
}
|
|
93
165
|
}
|
package/core/index.d.ts
CHANGED
|
@@ -830,6 +830,11 @@ type KbqTimeRangeLocaleConfig = {
|
|
|
830
830
|
apply: string;
|
|
831
831
|
cancel: string;
|
|
832
832
|
rangeLabel: string;
|
|
833
|
+
/**
|
|
834
|
+
* Reported when both ends of the range leave `minDate`/`maxDate`. Supports the `{{ value }}` placeholder.
|
|
835
|
+
* Optional, so a configuration written before it existed still compiles and gets the default wording.
|
|
836
|
+
*/
|
|
837
|
+
outOfBoundsError?: string;
|
|
833
838
|
allTime: string;
|
|
834
839
|
currentQuarter: string;
|
|
835
840
|
currentYear: string;
|
|
@@ -1032,6 +1037,7 @@ declare const enUSLocaleData: {
|
|
|
1032
1037
|
apply: string;
|
|
1033
1038
|
cancel: string;
|
|
1034
1039
|
rangeLabel: string;
|
|
1040
|
+
outOfBoundsError: string;
|
|
1035
1041
|
allTime: string;
|
|
1036
1042
|
currentQuarter: string;
|
|
1037
1043
|
currentYear: string;
|
|
@@ -1234,6 +1240,7 @@ declare const esLALocaleData: {
|
|
|
1234
1240
|
apply: string;
|
|
1235
1241
|
cancel: string;
|
|
1236
1242
|
rangeLabel: string;
|
|
1243
|
+
outOfBoundsError: string;
|
|
1237
1244
|
allTime: string;
|
|
1238
1245
|
currentQuarter: string;
|
|
1239
1246
|
currentYear: string;
|
|
@@ -1436,6 +1443,7 @@ declare const ptBRLocaleData: {
|
|
|
1436
1443
|
apply: string;
|
|
1437
1444
|
cancel: string;
|
|
1438
1445
|
rangeLabel: string;
|
|
1446
|
+
outOfBoundsError: string;
|
|
1439
1447
|
allTime: string;
|
|
1440
1448
|
currentQuarter: string;
|
|
1441
1449
|
currentYear: string;
|
|
@@ -1639,6 +1647,7 @@ declare const ruRULocaleData: {
|
|
|
1639
1647
|
apply: string;
|
|
1640
1648
|
cancel: string;
|
|
1641
1649
|
rangeLabel: string;
|
|
1650
|
+
outOfBoundsError: string;
|
|
1642
1651
|
allTime: string;
|
|
1643
1652
|
currentQuarter: string;
|
|
1644
1653
|
currentYear: string;
|
|
@@ -1842,6 +1851,7 @@ declare const tkTMLocaleData: {
|
|
|
1842
1851
|
apply: string;
|
|
1843
1852
|
cancel: string;
|
|
1844
1853
|
rangeLabel: string;
|
|
1854
|
+
outOfBoundsError: string;
|
|
1845
1855
|
allTime: string;
|
|
1846
1856
|
currentQuarter: string;
|
|
1847
1857
|
currentYear: string;
|
|
@@ -2277,6 +2287,7 @@ declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
2277
2287
|
apply: string;
|
|
2278
2288
|
cancel: string;
|
|
2279
2289
|
rangeLabel: string;
|
|
2290
|
+
outOfBoundsError: string;
|
|
2280
2291
|
allTime: string;
|
|
2281
2292
|
currentQuarter: string;
|
|
2282
2293
|
currentYear: string;
|
|
@@ -2516,6 +2527,7 @@ declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
2516
2527
|
apply: string;
|
|
2517
2528
|
cancel: string;
|
|
2518
2529
|
rangeLabel: string;
|
|
2530
|
+
outOfBoundsError: string;
|
|
2519
2531
|
allTime: string;
|
|
2520
2532
|
currentQuarter: string;
|
|
2521
2533
|
currentYear: string;
|
|
@@ -2751,6 +2763,7 @@ declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
2751
2763
|
apply: string;
|
|
2752
2764
|
cancel: string;
|
|
2753
2765
|
rangeLabel: string;
|
|
2766
|
+
outOfBoundsError: string;
|
|
2754
2767
|
allTime: string;
|
|
2755
2768
|
currentQuarter: string;
|
|
2756
2769
|
currentYear: string;
|
|
@@ -2992,6 +3005,7 @@ declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
2992
3005
|
apply: string;
|
|
2993
3006
|
cancel: string;
|
|
2994
3007
|
rangeLabel: string;
|
|
3008
|
+
outOfBoundsError: string;
|
|
2995
3009
|
allTime: string;
|
|
2996
3010
|
currentQuarter: string;
|
|
2997
3011
|
currentYear: string;
|
|
@@ -3229,6 +3243,7 @@ declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
3229
3243
|
apply: string;
|
|
3230
3244
|
cancel: string;
|
|
3231
3245
|
rangeLabel: string;
|
|
3246
|
+
outOfBoundsError: string;
|
|
3232
3247
|
allTime: string;
|
|
3233
3248
|
currentQuarter: string;
|
|
3234
3249
|
currentYear: string;
|
|
@@ -4911,6 +4926,15 @@ declare const kbqInjectNativeElement: <T extends Element = HTMLElement>() => T;
|
|
|
4911
4926
|
* revealing it would shift the list out from under it.
|
|
4912
4927
|
*/
|
|
4913
4928
|
declare const kbqFocusAndReveal: (element: HTMLElement, skipReveal?: boolean) => void;
|
|
4929
|
+
/**
|
|
4930
|
+
* Rendered height of an element, or `0` when it has no box.
|
|
4931
|
+
*
|
|
4932
|
+
* `getClientRects()` returns an empty list for elements that are not laid out and is missing entirely
|
|
4933
|
+
* from the server DOM, so both the method and the first rect are read defensively rather than going
|
|
4934
|
+
* through `getBoundingClientRect()`, whose zeroes are indistinguishable from a genuinely collapsed
|
|
4935
|
+
* element.
|
|
4936
|
+
*/
|
|
4937
|
+
declare const kbqGetElementHeight: (element: Element) => number;
|
|
4914
4938
|
|
|
4915
4939
|
declare function isBoolean(value: unknown): value is boolean;
|
|
4916
4940
|
/** Whether the value is undefined. */
|
|
@@ -5396,6 +5420,14 @@ declare class KbqSelectFooter {
|
|
|
5396
5420
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqSelectFooter, never>;
|
|
5397
5421
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqSelectFooter, "kbq-select-footer, [kbq-select-footer]", never, {}, {}, never, never, true, never>;
|
|
5398
5422
|
}
|
|
5423
|
+
/**
|
|
5424
|
+
* Action inside a `kbq-select-footer`, drawn as a row of the drop-down menu rather than as a form
|
|
5425
|
+
* button. Apply it to a native `button` or `a` so activation and semantics stay native.
|
|
5426
|
+
*/
|
|
5427
|
+
declare class KbqSelectFooterItem {
|
|
5428
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<KbqSelectFooterItem, never>;
|
|
5429
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqSelectFooterItem, "[kbq-select-footer-item]", never, {}, {}, never, never, true, never>;
|
|
5430
|
+
}
|
|
5399
5431
|
declare class KbqSelectSearch implements AfterContentInit, OnDestroy {
|
|
5400
5432
|
protected formField: KbqFormFieldRef;
|
|
5401
5433
|
readonly changes: EventEmitter<string>;
|
|
@@ -5821,5 +5853,5 @@ declare const validationTooltipHideDelay = 3000;
|
|
|
5821
5853
|
|
|
5822
5854
|
declare const VERSION: Version;
|
|
5823
5855
|
|
|
5824
|
-
export { A, ALT, APOSTROPHE, ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AT_SIGN, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, ActiveDescendantKeyManager, B, BACKSLASH, BACKSPACE, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, BaseLocaleAwareFormatterPipe, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, DateAdapter, DateFormatter, DurationLongFormatterImpurePipe, DurationLongFormatterPipe, DurationShortFormatterImpurePipe, DurationShortFormatterPipe, DurationShortestFormatterImpurePipe, DurationShortestFormatterPipe, E, EIGHT, END, ENTER, EQUALS, ESCAPE, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, ErrorStateMatcher, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, FileValidators, FocusKeyManager, G, H, HOME, I, INSERT, J, K, KBQ_A11Y_LOCALE_CONFIGURATION, KBQ_CHECKABLE_CLICK_ACTION, KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR, KBQ_CONNECTED_OVERLAY_ABOVE_CLASS, KBQ_CONNECTED_OVERLAY_BELOW_CLASS, KBQ_CONNECTED_OVERLAY_ORIGIN, KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DATE_TIMEZONE, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_OVERFLOW_SHADOW_SOURCE, KBQ_PANEL_DEFAULT_MIN_WIDTH, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SHADOW_DOM_OVERLAY_HOST, KBQ_SIBLING_POPUP, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_WINDOW, KbqAbsoluteLongDatePipe, KbqAbsoluteLongDateTimePipe, KbqAbsoluteShortDatePipe, KbqAbsoluteShortDateTimePipe, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqAutoHideScrollStrategy, KbqCheckable, KbqColorDirective, KbqComponentColors, KbqDataSizePipe, KbqDateTimezoneService, KbqDecimalPipe, KbqDefaultThemes, KbqDurationLongPipe, KbqDurationShortPipe, KbqDurationShortestPipe, KbqErrorStateTracker, KbqFieldSizingContent, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightBackgroundPipe, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqOverflowShadowBottom, KbqOverflowShadowContainer, KbqOverflowShadowTop, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqRangeLongDatePipe, KbqRangeLongDateTimePipe, KbqRangeMiddleDateTimePipe, KbqRangeShortDatePipe, KbqRangeShortDateTimePipe, KbqReadStateDirective, KbqRectangleItem, KbqRelativeLongDatePipe, KbqRelativeLongDateTimePipe, KbqRelativeShortDatePipe, KbqRelativeShortDateTimePipe, KbqRoundDecimalPipe, KbqSelectAllEvent, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqShadowDomOverlayContainer, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, L, LAST_MEDIA, LEFT_ARROW, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, ListKeyManager, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, MockNgZone, MultipleMode, N, NINE, NUMBER_FORMAT_REGEXP, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PRINT_SCREEN, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, Q, QUESTION_MARK, R, RIGHT_ARROW, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, S, SCROLL_LOCK, SELECT_PANEL_VIEWPORT_PADDING, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, ShowRequiredOnSubmitErrorStateMatcher, T, TAB, THREE, TILDE, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, TWO, ThemePalette, ThemeService, TransitionCheckState, U, UP_ARROW, V, VERSION, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, createFakeEvent, createKeyboardEvent, createMouseEvent, createSearchPredicate, createTouchEvent, defaultOffsetY, dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, dispatchTouchEvent, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, findSearchMatchRanges, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, getSafeTriangleVertices, getSelectAllState, hasModifierKey, isBoolean, isControl, isCopy, isDigit, isElement, isFunctionKey, isHorizontalMovement, isHtmlElement, isHtmlElementOrNull, isInput, isLeftBracket, isLetterKey, isMac, isNull, isNumberKey, isNumpadKey, isPointInRect, isPointInTriangle, isRightBracket, isSelectAll, isUndefined, isVerticalMovement, isWithin, kbqA11yLocaleConfigurationProvider, kbqAutoHideScrollStrategyFactory, kbqDateTimezoneProvider, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqFocusAndReveal, kbqFocusOptionActionOnTab, kbqGetPanelWidthOrigin, kbqHighlightBackgroundMark, kbqHighlightMark, kbqInjectA11yLocaleConfiguration, kbqInjectAutofilled, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqResolvePanelMaxHeightToken, kbqResolvePanelWidth, kbqResolveTimezoneOffset, kbqRevealSelection, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, kbqSetSelectionRange, kbqShadowDomOverlayProvider, kbqSiblingPopupProvider, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, normalizeSearchValue, numberByParts, patchElementFocus, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, runCompareWith, selectEvents, shouldSelectSearchText, tkTMFormattersData, tkTMLocaleData, toggleSelectAll, tokenizeSearchQuery, typeInElement, validationTooltipHideDelay, validationTooltipShowDelay, wrappedErrorMessage };
|
|
5856
|
+
export { A, ALT, APOSTROPHE, ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AT_SIGN, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, ActiveDescendantKeyManager, B, BACKSLASH, BACKSPACE, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, BaseLocaleAwareFormatterPipe, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, DateAdapter, DateFormatter, DurationLongFormatterImpurePipe, DurationLongFormatterPipe, DurationShortFormatterImpurePipe, DurationShortFormatterPipe, DurationShortestFormatterImpurePipe, DurationShortestFormatterPipe, E, EIGHT, END, ENTER, EQUALS, ESCAPE, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, ErrorStateMatcher, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, FileValidators, FocusKeyManager, G, H, HOME, I, INSERT, J, K, KBQ_A11Y_LOCALE_CONFIGURATION, KBQ_CHECKABLE_CLICK_ACTION, KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR, KBQ_CONNECTED_OVERLAY_ABOVE_CLASS, KBQ_CONNECTED_OVERLAY_BELOW_CLASS, KBQ_CONNECTED_OVERLAY_ORIGIN, KBQ_CONNECTED_OVERLAY_OVERLAP_CLASS, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DATE_TIMEZONE, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_OVERFLOW_SHADOW_SOURCE, KBQ_PANEL_DEFAULT_MIN_WIDTH, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SHADOW_DOM_OVERLAY_HOST, KBQ_SIBLING_POPUP, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_WINDOW, KbqAbsoluteLongDatePipe, KbqAbsoluteLongDateTimePipe, KbqAbsoluteShortDatePipe, KbqAbsoluteShortDateTimePipe, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqAutoHideScrollStrategy, KbqCheckable, KbqColorDirective, KbqComponentColors, KbqDataSizePipe, KbqDateTimezoneService, KbqDecimalPipe, KbqDefaultThemes, KbqDurationLongPipe, KbqDurationShortPipe, KbqDurationShortestPipe, KbqErrorStateTracker, KbqFieldSizingContent, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightBackgroundPipe, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqOverflowShadowBottom, KbqOverflowShadowContainer, KbqOverflowShadowTop, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqRangeLongDatePipe, KbqRangeLongDateTimePipe, KbqRangeMiddleDateTimePipe, KbqRangeShortDatePipe, KbqRangeShortDateTimePipe, KbqReadStateDirective, KbqRectangleItem, KbqRelativeLongDatePipe, KbqRelativeLongDateTimePipe, KbqRelativeShortDatePipe, KbqRelativeShortDateTimePipe, KbqRoundDecimalPipe, KbqSelectAllEvent, KbqSelectFooter, KbqSelectFooterItem, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqShadowDomOverlayContainer, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, L, LAST_MEDIA, LEFT_ARROW, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, ListKeyManager, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, MockNgZone, MultipleMode, N, NINE, NUMBER_FORMAT_REGEXP, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PRINT_SCREEN, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, Q, QUESTION_MARK, R, RIGHT_ARROW, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, S, SCROLL_LOCK, SELECT_PANEL_VIEWPORT_PADDING, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, ShowRequiredOnSubmitErrorStateMatcher, T, TAB, THREE, TILDE, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, TWO, ThemePalette, ThemeService, TransitionCheckState, U, UP_ARROW, V, VERSION, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, createFakeEvent, createKeyboardEvent, createMouseEvent, createSearchPredicate, createTouchEvent, defaultOffsetY, dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, dispatchTouchEvent, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, findSearchMatchRanges, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, getSafeTriangleVertices, getSelectAllState, hasModifierKey, isBoolean, isControl, isCopy, isDigit, isElement, isFunctionKey, isHorizontalMovement, isHtmlElement, isHtmlElementOrNull, isInput, isLeftBracket, isLetterKey, isMac, isNull, isNumberKey, isNumpadKey, isPointInRect, isPointInTriangle, isRightBracket, isSelectAll, isUndefined, isVerticalMovement, isWithin, kbqA11yLocaleConfigurationProvider, kbqAutoHideScrollStrategyFactory, kbqDateTimezoneProvider, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqFocusAndReveal, kbqFocusOptionActionOnTab, kbqGetElementHeight, kbqGetPanelWidthOrigin, kbqHighlightBackgroundMark, kbqHighlightMark, kbqInjectA11yLocaleConfiguration, kbqInjectAutofilled, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqResolvePanelMaxHeightToken, kbqResolvePanelWidth, kbqResolveTimezoneOffset, kbqRevealSelection, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, kbqSetSelectionRange, kbqShadowDomOverlayProvider, kbqSiblingPopupProvider, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, normalizeSearchValue, numberByParts, patchElementFocus, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, runCompareWith, selectEvents, shouldSelectSearchText, tkTMFormattersData, tkTMLocaleData, toggleSelectAll, tokenizeSearchQuery, typeInElement, validationTooltipHideDelay, validationTooltipShowDelay, wrappedErrorMessage };
|
|
5825
5857
|
export type { CanColor, CanColorCtor, CanDisable, CanDisableCtor, CanUpdateErrorState, CanUpdateErrorStateCtor, HasTabIndex, HasTabIndexCtor, Highlightable, IFocusableOption, KbqA11yLocaleConfiguration, KbqActionsPanelLocaleConfiguration, KbqAutoHideScrollStrategyConfig, KbqAutoHideScrollStrategyHooks, KbqBaseFileUploadLocaleConfig, KbqCheckableClickAction, KbqCheckableClickResult, KbqCheckedState, KbqClampedTextLocaleConfig, KbqCodeBlockLocaleConfiguration, KbqConnectedOverlayOriginProvider, KbqDateFormats, KbqDefaultSizes, KbqEnumValues, KbqFileTypeSpecifier, KbqFileUploadLocaleConfig, KbqFlexDirection, KbqFlexWrap, KbqFormFieldRef, KbqMeasurementSystemType, KbqMultipleFileUploadLocaleConfig, KbqNumberFormatOptions, KbqNumberInputLocaleConfig, KbqNumberRoundingLocaleConfig, KbqNumericPipe, KbqOptionActionParent, KbqOptionParentComponent, KbqOrientation, KbqOverflowShadowSource, KbqOverflowShadowState, KbqPanelMaxHeight, KbqPanelMaxWidth, KbqPanelMinWidth, KbqPanelWidth, KbqPanelWidthOrigin, KbqParentPopup, KbqPoint, KbqPopUpPlacementValues, KbqPopUpSizeValues, KbqPseudoCheckboxState, KbqResolvedPanelWidth, KbqSelectAllAdapter, KbqSelectLocaleConfiguration, KbqShadowDomOverlayHost, KbqSiblingPopup, KbqSizeUnitsConfig, KbqStickToWindowPlacementValues, KbqTheme, KbqTimeRangeLocaleConfig, KbqTimezoneLike, KbqTitleTextRef, KbqToggleSelectAllOptions, KbqTriangle, KbqUnitSystem, KeyboardNavigationHandler, ListKeyManagerModifierKey, ListKeyManagerOption };
|
|
@@ -19,7 +19,10 @@
|
|
|
19
19
|
|
|
20
20
|
min-height: calc(var(--kbq-form-field-size-height) - calc(var(--kbq-size-border-width) * 2));
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
// An empty multiline trigger has no tags to grow for, so it keeps the single-line height:
|
|
23
|
+
// otherwise the placeholder's padding makes it 2px taller than the first row of tags.
|
|
24
|
+
&:not(.kbq-select__trigger_multiline),
|
|
25
|
+
&.kbq-select__trigger_empty {
|
|
23
26
|
height: calc(var(--kbq-form-field-size-height) - calc(var(--kbq-size-border-width) * 2));
|
|
24
27
|
|
|
25
28
|
& .kbq-select__matcher {
|
|
@@ -234,6 +237,9 @@
|
|
|
234
237
|
overflow: hidden auto;
|
|
235
238
|
}
|
|
236
239
|
|
|
240
|
+
// The tokens are left undeclared: the value lives in the fallback, so one override reaches every panel
|
|
241
|
+
// that extends this placeholder — the dropdown and the autocomplete included. Declaring them in
|
|
242
|
+
// `select-tokens.scss` would scope them to `.kbq-select__panel` and put those two out of reach.
|
|
237
243
|
%kbq-select-footer {
|
|
238
244
|
@include vendor-prefixes.user-select(none);
|
|
239
245
|
|
|
@@ -241,14 +247,61 @@
|
|
|
241
247
|
align-items: center;
|
|
242
248
|
box-sizing: border-box;
|
|
243
249
|
|
|
244
|
-
min-height:
|
|
250
|
+
min-height: var(--kbq-select-footer-size-min-height, var(--kbq-size-4xl));
|
|
245
251
|
|
|
246
|
-
border-top-width:
|
|
252
|
+
border-top-width: var(--kbq-select-footer-size-border-width, var(--kbq-size-border-width));
|
|
247
253
|
border-top-style: solid;
|
|
248
254
|
|
|
249
|
-
padding: var(--kbq-size-
|
|
255
|
+
padding: var(--kbq-select-footer-size-padding-vertical, var(--kbq-size-xxs))
|
|
256
|
+
var(--kbq-select-footer-size-padding-horizontal, var(--kbq-size-l));
|
|
250
257
|
}
|
|
251
258
|
|
|
259
|
+
// The footer's action is drawn as a row of the drop-down menu rather than as a form button: full
|
|
260
|
+
// panel width, the option's own box and hover fill, so it reads as the last entry of the list
|
|
261
|
+
// instead of a control parked underneath it.
|
|
262
|
+
%kbq-select-footer-item {
|
|
263
|
+
@include vendor-prefixes.user-select(none);
|
|
264
|
+
|
|
265
|
+
// A native `button`/`a` flashes on tap without this; `kbq-list-item-base()`, which the option rows
|
|
266
|
+
// above use, is not included because the row zeroes the vertical padding that mixin sets.
|
|
267
|
+
-webkit-tap-highlight-color: transparent;
|
|
268
|
+
|
|
269
|
+
display: flex;
|
|
270
|
+
flex-direction: row;
|
|
271
|
+
align-items: center;
|
|
272
|
+
box-sizing: border-box;
|
|
273
|
+
outline: none;
|
|
274
|
+
|
|
275
|
+
// `flex-grow` rather than `width: 100%`: alone in the footer it fills the content box just the same,
|
|
276
|
+
// but it shares the row instead of squeezing a caption or a second action out of it. The basis stays
|
|
277
|
+
// `auto` — `flex: 1` would expand to a `0%` basis and hand two actions the same width whatever they
|
|
278
|
+
// say.
|
|
279
|
+
flex: 1 1 auto;
|
|
280
|
+
min-height: var(--kbq-select-footer-item-size-height, var(--kbq-size-3xl));
|
|
281
|
+
gap: var(--kbq-size-s);
|
|
282
|
+
|
|
283
|
+
// Transparent border, as on an option, so the row keeps the same content inset — and so the focus
|
|
284
|
+
// ring below can recolour it without shifting anything.
|
|
285
|
+
border: var(--kbq-size-3xs) solid transparent;
|
|
286
|
+
border-radius: var(--kbq-select-footer-item-size-border-radius, var(--kbq-size-xxs));
|
|
287
|
+
|
|
288
|
+
padding: 0 kbq-difference-series-css-variables([size-m, size-3xs]);
|
|
289
|
+
|
|
290
|
+
background: transparent;
|
|
291
|
+
cursor: pointer;
|
|
292
|
+
|
|
293
|
+
text-align: left;
|
|
294
|
+
text-decoration: none;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// Extends an item's hit area past the box it paints, with a transparent pseudo-element on the element
|
|
298
|
+
// that owns the click handler — a pseudo-element is hit-tested as part of that element, so hover and
|
|
299
|
+
// click both reach the gutter with no TS and no `z-index`. This one claims a fixed strip either side of
|
|
300
|
+
// a plain vertical list. The same technique, sized differently, is hand-rolled where the geometry does
|
|
301
|
+
// not fit: `.kbq-navbar-item`'s `:before` cancels the item's own margin (DS-2558), and
|
|
302
|
+
// `--kbq-button-toggle-size-item-hit-area-*` tiles a group's `gap` between two neighbours and hands the
|
|
303
|
+
// group's padding to the outermost items, per orientation (DS-4164). Any clipping ancestor eats all of
|
|
304
|
+
// them — see the note on `.kbq-button-toggle`'s `overflow`.
|
|
252
305
|
@mixin item-active-area($outline) {
|
|
253
306
|
position: relative;
|
|
254
307
|
|
|
@@ -268,3 +321,48 @@
|
|
|
268
321
|
left: calc(100% + $outline); // outline size
|
|
269
322
|
}
|
|
270
323
|
}
|
|
324
|
+
|
|
325
|
+
// A mixin of its own: the row's structure is only extended under `.kbq-select__panel`, and emitting its
|
|
326
|
+
// colours anywhere else would paint a half-styled control.
|
|
327
|
+
@mixin kbq-select-footer-item-theme() {
|
|
328
|
+
.kbq-select__footer-item {
|
|
329
|
+
color: var(--kbq-foreground-contrast);
|
|
330
|
+
|
|
331
|
+
// The row is reachable with TAB, so it needs a focus indicator of its own; `outline: none` in
|
|
332
|
+
// the structural rule would otherwise leave it with none at all. Recolouring the 2px layout
|
|
333
|
+
// border is the whole ring — adding an outline on top of it would render 3px, half again as
|
|
334
|
+
// thick as every other focused control (a button pairs a 1px border with a 1px outline).
|
|
335
|
+
&:focus-visible {
|
|
336
|
+
border-color: var(--kbq-states-line-focus-theme);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// `:disabled` alone would miss an `a`, which the directive also supports and which cannot carry
|
|
340
|
+
// the attribute — those are marked with `.kbq-disabled`, as `.kbq-option` and `.kbq-dropdown-item` are.
|
|
341
|
+
&:hover:not(:disabled, .kbq-disabled) {
|
|
342
|
+
background: var(--kbq-states-background-transparent-hover);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
&:active:not(:disabled, .kbq-disabled) {
|
|
346
|
+
background: var(--kbq-states-background-transparent-active);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
&:disabled,
|
|
350
|
+
&.kbq-disabled {
|
|
351
|
+
color: var(--kbq-states-foreground-disabled);
|
|
352
|
+
cursor: default;
|
|
353
|
+
|
|
354
|
+
// A native `button` ignores the pointer once it carries `disabled`, but an `a` cannot carry the
|
|
355
|
+
// attribute, so the class has to do it — otherwise a greyed-out link still navigates on a click
|
|
356
|
+
// and closes the panel on the way. Same pair `kbq-link` uses for its own disabled state.
|
|
357
|
+
pointer-events: none;
|
|
358
|
+
|
|
359
|
+
// `.kbq-icon` is coloured from an absolute token rather than `currentColor`, so a projected
|
|
360
|
+
// icon would stay at full contrast beside a greyed label. Only the ones left at the default
|
|
361
|
+
// colour: `.kbq-empty` is what `KbqColorDirective` leaves behind when the consumer set none,
|
|
362
|
+
// and an icon button carries its own disabled state.
|
|
363
|
+
& .kbq-icon.kbq-empty:not(.kbq-icon-button, .kbq-icon-item) {
|
|
364
|
+
color: var(--kbq-states-foreground-disabled);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
@@ -239,6 +239,10 @@
|
|
|
239
239
|
@include kbq-typography-level-to-styles-css-variables(typography, mono-normal-strong);
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
+
.kbq-mono-normal-medium {
|
|
243
|
+
@include kbq-typography-level-to-styles-css-variables(typography, mono-normal-medium);
|
|
244
|
+
}
|
|
245
|
+
|
|
242
246
|
.kbq-mono-compact {
|
|
243
247
|
@include kbq-typography-level-to-styles-css-variables(typography, mono-compact);
|
|
244
248
|
}
|
|
@@ -247,6 +251,10 @@
|
|
|
247
251
|
@include kbq-typography-level-to-styles-css-variables(typography, mono-compact-strong);
|
|
248
252
|
}
|
|
249
253
|
|
|
254
|
+
.kbq-mono-codeblock {
|
|
255
|
+
@include kbq-typography-level-to-styles-css-variables(typography, mono-codeblock);
|
|
256
|
+
}
|
|
257
|
+
|
|
250
258
|
.kbq-tabular-big {
|
|
251
259
|
@include kbq-typography-level-to-styles-css-variables(typography, tabular-big);
|
|
252
260
|
}
|