@koobiq/components 19.8.7 → 19.8.9
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/breadcrumbs/breadcrumbs.scss +16 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +1 -1
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +6 -4
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +6 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +99 -42
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +2 -0
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +26 -25
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +5 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +50 -19
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/overflow-items/overflow-items.d.ts +12 -3
- package/package.json +9 -9
- package/schematics/ng-add/index.js +2 -2
- package/toast/toast-container.component.d.ts +8 -19
- package/tree/tree-option.component.d.ts +2 -0
- package/tree/tree-selection.component.d.ts +9 -0
|
@@ -2,7 +2,7 @@ import { Platform, PlatformModule } from '@angular/cdk/platform';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, ElementRef, ChangeDetectorRef, Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
4
4
|
import { Subject, Subscription } from 'rxjs';
|
|
5
|
-
import {
|
|
5
|
+
import { debounceTime } from 'rxjs/operators';
|
|
6
6
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
7
7
|
|
|
8
8
|
class KbqDlComponent {
|
|
@@ -18,8 +18,9 @@ class KbqDlComponent {
|
|
|
18
18
|
this.platform = inject(Platform);
|
|
19
19
|
this.updateState = () => {
|
|
20
20
|
const domRect = this.elementRef.nativeElement.getClientRects()[0];
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
if (!domRect)
|
|
22
|
+
return;
|
|
23
|
+
this.vertical = domRect.width <= this.minWidth;
|
|
23
24
|
this.changeDetectorRef.markForCheck();
|
|
24
25
|
};
|
|
25
26
|
}
|
|
@@ -27,8 +28,9 @@ class KbqDlComponent {
|
|
|
27
28
|
if (this.vertical !== null || !this.platform.isBrowser) {
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
31
|
+
this.updateState();
|
|
30
32
|
this.resizeSubscription = this.resizeStream
|
|
31
|
-
.pipe(
|
|
33
|
+
.pipe(debounceTime(this.resizeDebounceInterval))
|
|
32
34
|
.subscribe(this.updateState);
|
|
33
35
|
}
|
|
34
36
|
ngOnDestroy() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-dl.mjs","sources":["../../../packages/components/dl/dl.component.ts","../../../packages/components/dl/dl.module.ts","../../../packages/components/dl/koobiq-components-dl.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime
|
|
1
|
+
{"version":3,"file":"koobiq-components-dl.mjs","sources":["../../../packages/components/dl/dl.component.ts","../../../packages/components/dl/dl.module.ts","../../../packages/components/dl/koobiq-components-dl.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'kbq-dl',\n template: '<ng-content />',\n styleUrls: ['dl.scss', 'dl-tokens.scss'],\n host: {\n class: 'kbq-dl',\n '[class.kbq-dl_vertical]': 'vertical',\n '[class.kbq-dl_wide]': 'wide',\n '(window:resize)': 'resizeStream.next($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqDlComponent implements AfterContentInit, OnDestroy {\n @Input() minWidth: number = 400;\n @Input() wide = false;\n @Input() vertical: boolean | null = null;\n\n readonly resizeStream = new Subject<Event>();\n private readonly resizeDebounceInterval: number = 100;\n\n private resizeSubscription = Subscription.EMPTY;\n\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly platform = inject(Platform);\n\n ngAfterContentInit(): void {\n if (this.vertical !== null || !this.platform.isBrowser) {\n return;\n }\n\n this.updateState();\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval))\n .subscribe(this.updateState);\n }\n\n ngOnDestroy() {\n this.resizeSubscription.unsubscribe();\n }\n\n private readonly updateState = (): void => {\n const domRect = this.elementRef.nativeElement.getClientRects()[0];\n\n if (!domRect) return;\n\n this.vertical = domRect.width <= this.minWidth;\n\n this.changeDetectorRef.markForCheck();\n };\n}\n\n@Component({\n selector: 'kbq-dt',\n template: '<ng-content />',\n host: {\n class: 'kbq-dt'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqDtComponent {}\n\n@Component({\n selector: 'kbq-dd',\n template: '<ng-content />',\n host: {\n class: 'kbq-dd'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqDdComponent {}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqDdComponent, KbqDlComponent, KbqDtComponent } from './dl.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqDlComponent,\n KbqDtComponent,\n KbqDdComponent\n ],\n exports: [\n KbqDlComponent,\n KbqDtComponent,\n KbqDdComponent\n ]\n})\nexport class KbqDlModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -80,10 +80,14 @@ class KbqLoaderOverlay {
|
|
|
80
80
|
}
|
|
81
81
|
ngOnInit() {
|
|
82
82
|
this.parent = this.elementRef.nativeElement.parentElement;
|
|
83
|
-
|
|
83
|
+
if (this.parent) {
|
|
84
|
+
this.renderer.addClass(this.parent, kbqLoaderOverlayParent);
|
|
85
|
+
}
|
|
84
86
|
}
|
|
85
87
|
ngOnDestroy() {
|
|
86
|
-
|
|
88
|
+
if (this.parent) {
|
|
89
|
+
this.renderer.removeClass(this.parent, kbqLoaderOverlayParent);
|
|
90
|
+
}
|
|
87
91
|
}
|
|
88
92
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqLoaderOverlay, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
93
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: KbqLoaderOverlay, isStandalone: true, selector: "kbq-loader-overlay", inputs: { text: "text", caption: "caption", size: "size", transparent: "transparent", card: ["card", "card", booleanAttribute] }, host: { properties: { "class": "loaderSizeClass", "class.kbq-loader-overlay_empty": "isEmpty", "class.kbq-loader-overlay_transparent": "transparent", "class.kbq-loader-overlay_filled": "!transparent", "class.kbq-loader-overlay_card": "card" }, classAttribute: "kbq-loader-overlay" }, queries: [{ propertyName: "externalIndicator", first: true, predicate: KbqLoaderOverlayIndicator, descendants: true }, { propertyName: "externalText", first: true, predicate: KbqLoaderOverlayText, descendants: true }, { propertyName: "externalCaption", first: true, predicate: KbqLoaderOverlayCaption, descendants: true }], ngImport: i0, template: "<div class=\"kbq-loader-overlay__container\">\n @if (isExternalIndicator) {\n <ng-content select=\"[kbq-loader-overlay-indicator]\" />\n } @else {\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"spinnerSize\" />\n }\n\n @if (isExternalText) {\n <ng-content select=\"[kbq-loader-overlay-text]\" />\n } @else {\n @if (text) {\n <div class=\"kbq-loader-overlay-text\">\n {{ text }}\n </div>\n }\n }\n\n @if (isExternalCaption) {\n <ng-content select=\"[kbq-loader-overlay-caption]\" />\n } @else {\n @if (caption) {\n <div class=\"kbq-loader-overlay-caption\">\n {{ caption }}\n </div>\n }\n }\n</div>\n", styles: [".kbq-loader-overlay_parent{position:relative}.kbq-loader-overlay-text,.kbq-loader-overlay-caption{max-width:90%;text-align:center}.kbq-loader-overlay{--padding-horizontal: var(--kbq-size-3xl);--loader-margin-bottom: var(--kbq-size-xxl);--content-gap-vertical: var(--kbq-size-l);position:absolute;display:flex;flex-direction:column;justify-content:center;align-items:center;inset:0;border-radius:inherit;z-index:10}.kbq-loader-overlay .kbq-loader-overlay__container{display:flex;flex-direction:column;justify-content:center;align-items:center;width:80%;max-width:80%}.kbq-loader-overlay{padding-left:var(--padding-horizontal);padding-right:var(--padding-horizontal)}.kbq-loader-overlay .kbq-progress-spinner:has(+.kbq-loader-overlay-text,+.kbq-loader-overlay-caption){margin-bottom:var(--loader-margin-bottom)}.kbq-loader-overlay .kbq-loader-overlay-text{margin-bottom:var(--content-gap-vertical)}.kbq-loader-overlay.kbq-loader-overlay_big{--padding-horizontal: var(--kbq-loader-overlay-size-big-overlay-padding-horizontal);--loader-margin-bottom: var(--kbq-loader-overlay-size-big-loader-margin-bottom);--content-gap-vertical: var(--kbq-loader-overlay-size-big-content-content-gap-vertical)}.kbq-loader-overlay.kbq-loader-overlay_normal{--padding-horizontal: var(--kbq-loader-overlay-size-normal-overlay-padding-horizontal);--loader-margin-bottom: var(--kbq-loader-overlay-size-normal-loader-margin-bottom);--content-gap-vertical: var(--kbq-loader-overlay-size-normal-content-content-gap-vertical)}.kbq-loader-overlay.kbq-loader-overlay_compact{--padding-horizontal: var(--kbq-loader-overlay-size-compact-overlay-padding-horizontal);--loader-margin-bottom: var(--kbq-loader-overlay-size-compact-loader-margin-bottom);--content-gap-vertical: var(--kbq-loader-overlay-size-compact-content-content-gap-vertical)}.kbq-loader-overlay_filled.kbq-loader-overlay{background:var(--kbq-loader-overlay-filled-overlay-background)}.kbq-loader-overlay_filled .kbq-loader-overlay-text{color:var(--kbq-loader-overlay-filled-text-color)}.kbq-loader-overlay_filled .kbq-loader-overlay-caption{color:var(--kbq-loader-overlay-filled-caption-color)}.kbq-loader-overlay_transparent.kbq-loader-overlay{background:var(--kbq-loader-overlay-transparent-overlay-background)}.kbq-loader-overlay_transparent .kbq-loader-overlay-text{color:var(--kbq-loader-overlay-transparent-text-color)}.kbq-loader-overlay_transparent .kbq-loader-overlay-caption{color:var(--kbq-loader-overlay-transparent-caption-color)}.kbq-loader-overlay_card.kbq-loader-overlay_filled,.kbq-loader-overlay_card.kbq-loader-overlay_transparent{background:color-mix(in srgb,var(--kbq-loader-overlay-card-overlay-background) calc(var(--kbq-opacity-overlay) * 100%),transparent)}.kbq-loader-overlay_big .kbq-loader-overlay-text{font-size:var(--kbq-typography-headline-font-size);font-style:var(--kbq-typography-headline-font-style);font-weight:var(--kbq-typography-headline-font-weight);line-height:var(--kbq-typography-headline-line-height);font-family:var(--kbq-typography-headline-font-family);text-transform:var(--kbq-typography-headline-text-transform);font-feature-settings:var(--kbq-typography-headline-font-feature-settings);letter-spacing:var(--kbq-typography-headline-letter-spacing)}.kbq-loader-overlay_big .kbq-loader-overlay-caption{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-loader-overlay_normal .kbq-loader-overlay-text{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-loader-overlay_normal .kbq-loader-overlay-caption,.kbq-loader-overlay_compact .kbq-loader-overlay-text{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-loader-overlay_compact .kbq-loader-overlay-caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n", "@charset \"UTF-8\";:where(.kbq-loader-overlay){--kbq-loader-overlay-size-big-overlay-padding-horizontal: var(--kbq-size-3xl);--kbq-loader-overlay-size-big-loader-margin-bottom: var(--kbq-size-xxl);--kbq-loader-overlay-size-big-content-content-gap-vertical: var(--kbq-size-l);--kbq-loader-overlay-size-normal-overlay-padding-horizontal: var(--kbq-size\\430-3xl);--kbq-loader-overlay-size-normal-loader-margin-bottom: var(--kbq-size-xxl);--kbq-loader-overlay-size-normal-content-content-gap-vertical: var(--kbq-size-xxs);--kbq-loader-overlay-size-compact-overlay-padding-horizontal: var(--kbq-size-3xl);--kbq-loader-overlay-size-compact-loader-margin-bottom: var(--kbq-size-s);--kbq-loader-overlay-size-compact-content-content-gap-vertical: var(--kbq-size-xxs);--kbq-loader-overlay-transparent-overlay-background: var(--kbq-background-overlay-inverse);--kbq-loader-overlay-transparent-text-color: var(--kbq-foreground-contrast);--kbq-loader-overlay-transparent-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-loader-overlay-filled-overlay-background: var(--kbq-background-bg);--kbq-loader-overlay-filled-text-color: var(--kbq-foreground-contrast);--kbq-loader-overlay-filled-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-loader-overlay-card-overlay-background: var(--kbq-background-card)}\n"], dependencies: [{ kind: "component", type: KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["id", "value", "mode", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-loader-overlay.mjs","sources":["../../../packages/components/loader-overlay/loader-overlay.component.ts","../../../packages/components/loader-overlay/loader-overlay.component.html","../../../packages/components/loader-overlay/loader-overlay.module.ts","../../../packages/components/loader-overlay/koobiq-components-loader-overlay.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqDefaultSizes } from '@koobiq/components/core';\nimport { KbqProgressSpinner } from '@koobiq/components/progress-spinner';\n\nconst kbqLoaderOverlayParent = 'kbq-loader-overlay_parent';\n\n@Directive({\n selector: '[kbq-loader-overlay-indicator]',\n host: {\n class: 'kbq-loader-overlay-indicator'\n }\n})\nexport class KbqLoaderOverlayIndicator {}\n\n@Directive({\n selector: '[kbq-loader-overlay-text]',\n host: {\n class: 'kbq-loader-overlay-text'\n }\n})\nexport class KbqLoaderOverlayText {}\n\n@Directive({\n selector: '[kbq-loader-overlay-caption]',\n host: {\n class: 'kbq-loader-overlay-caption'\n }\n})\nexport class KbqLoaderOverlayCaption {}\n\n@Component({\n selector: 'kbq-loader-overlay',\n imports: [KbqProgressSpinner],\n templateUrl: './loader-overlay.component.html',\n styleUrls: ['./loader-overlay.scss', 'loader-overlay-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-loader-overlay',\n '[class]': 'loaderSizeClass',\n '[class.kbq-loader-overlay_empty]': 'isEmpty',\n '[class.kbq-loader-overlay_transparent]': 'transparent',\n '[class.kbq-loader-overlay_filled]': '!transparent',\n '[class.kbq-loader-overlay_card]': 'card'\n }\n})\nexport class KbqLoaderOverlay implements OnInit, OnDestroy {\n @Input() text: string;\n\n @Input() caption: string;\n @Input() size: KbqDefaultSizes = 'big';\n @Input() transparent: boolean = true;\n /**\n * Uses a semi-transparent background to blend\n * with the underlying card or modal surface. When enabled, overrides `transparent`.\n */\n @Input({ transform: booleanAttribute }) card: boolean = false;\n\n private parent: HTMLElement | null = null;\n\n get isExternalIndicator(): boolean {\n return !!this.externalIndicator;\n }\n\n get isExternalText(): boolean {\n return !!this.externalText;\n }\n\n get isExternalCaption(): boolean {\n return !!this.externalCaption;\n }\n\n get isEmpty(): boolean {\n return !(!!this.text || this.isExternalText || !!this.caption || this.isExternalCaption);\n }\n\n get spinnerSize(): string {\n return this.size === 'compact' ? 'compact' : 'big';\n }\n\n /**\n * @docs-private\n */\n protected get loaderSizeClass(): string {\n return `kbq-loader-overlay_${this.size}`;\n }\n\n @ContentChild(KbqLoaderOverlayIndicator) externalIndicator: KbqLoaderOverlayIndicator | null;\n @ContentChild(KbqLoaderOverlayText) externalText: KbqLoaderOverlayText | null;\n @ContentChild(KbqLoaderOverlayCaption) externalCaption: KbqLoaderOverlayCaption | null;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.parent = this.elementRef.nativeElement.parentElement;\n\n this.renderer.addClass(this.parent, kbqLoaderOverlayParent);\n }\n\n ngOnDestroy(): void {\n this.renderer.removeClass(this.parent, kbqLoaderOverlayParent);\n }\n}\n","<div class=\"kbq-loader-overlay__container\">\n @if (isExternalIndicator) {\n <ng-content select=\"[kbq-loader-overlay-indicator]\" />\n } @else {\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"spinnerSize\" />\n }\n\n @if (isExternalText) {\n <ng-content select=\"[kbq-loader-overlay-text]\" />\n } @else {\n @if (text) {\n <div class=\"kbq-loader-overlay-text\">\n {{ text }}\n </div>\n }\n }\n\n @if (isExternalCaption) {\n <ng-content select=\"[kbq-loader-overlay-caption]\" />\n } @else {\n @if (caption) {\n <div class=\"kbq-loader-overlay-caption\">\n {{ caption }}\n </div>\n }\n }\n</div>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport {\n KbqLoaderOverlay,\n KbqLoaderOverlayCaption,\n KbqLoaderOverlayIndicator,\n KbqLoaderOverlayText\n} from './loader-overlay.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqProgressSpinnerModule,\n KbqLoaderOverlay,\n KbqLoaderOverlayIndicator,\n KbqLoaderOverlayText,\n KbqLoaderOverlayCaption\n ],\n exports: [\n KbqLoaderOverlay,\n KbqLoaderOverlayIndicator,\n KbqLoaderOverlayText,\n KbqLoaderOverlayCaption\n ]\n})\nexport class KbqLoaderOverlayModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-loader-overlay.mjs","sources":["../../../packages/components/loader-overlay/loader-overlay.component.ts","../../../packages/components/loader-overlay/loader-overlay.component.html","../../../packages/components/loader-overlay/loader-overlay.module.ts","../../../packages/components/loader-overlay/koobiq-components-loader-overlay.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqDefaultSizes } from '@koobiq/components/core';\nimport { KbqProgressSpinner } from '@koobiq/components/progress-spinner';\n\nconst kbqLoaderOverlayParent = 'kbq-loader-overlay_parent';\n\n@Directive({\n selector: '[kbq-loader-overlay-indicator]',\n host: {\n class: 'kbq-loader-overlay-indicator'\n }\n})\nexport class KbqLoaderOverlayIndicator {}\n\n@Directive({\n selector: '[kbq-loader-overlay-text]',\n host: {\n class: 'kbq-loader-overlay-text'\n }\n})\nexport class KbqLoaderOverlayText {}\n\n@Directive({\n selector: '[kbq-loader-overlay-caption]',\n host: {\n class: 'kbq-loader-overlay-caption'\n }\n})\nexport class KbqLoaderOverlayCaption {}\n\n@Component({\n selector: 'kbq-loader-overlay',\n imports: [KbqProgressSpinner],\n templateUrl: './loader-overlay.component.html',\n styleUrls: ['./loader-overlay.scss', 'loader-overlay-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-loader-overlay',\n '[class]': 'loaderSizeClass',\n '[class.kbq-loader-overlay_empty]': 'isEmpty',\n '[class.kbq-loader-overlay_transparent]': 'transparent',\n '[class.kbq-loader-overlay_filled]': '!transparent',\n '[class.kbq-loader-overlay_card]': 'card'\n }\n})\nexport class KbqLoaderOverlay implements OnInit, OnDestroy {\n @Input() text: string;\n\n @Input() caption: string;\n @Input() size: KbqDefaultSizes = 'big';\n @Input() transparent: boolean = true;\n /**\n * Uses a semi-transparent background to blend\n * with the underlying card or modal surface. When enabled, overrides `transparent`.\n */\n @Input({ transform: booleanAttribute }) card: boolean = false;\n\n private parent: HTMLElement | null = null;\n\n get isExternalIndicator(): boolean {\n return !!this.externalIndicator;\n }\n\n get isExternalText(): boolean {\n return !!this.externalText;\n }\n\n get isExternalCaption(): boolean {\n return !!this.externalCaption;\n }\n\n get isEmpty(): boolean {\n return !(!!this.text || this.isExternalText || !!this.caption || this.isExternalCaption);\n }\n\n get spinnerSize(): string {\n return this.size === 'compact' ? 'compact' : 'big';\n }\n\n /**\n * @docs-private\n */\n protected get loaderSizeClass(): string {\n return `kbq-loader-overlay_${this.size}`;\n }\n\n @ContentChild(KbqLoaderOverlayIndicator) externalIndicator: KbqLoaderOverlayIndicator | null;\n @ContentChild(KbqLoaderOverlayText) externalText: KbqLoaderOverlayText | null;\n @ContentChild(KbqLoaderOverlayCaption) externalCaption: KbqLoaderOverlayCaption | null;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.parent = this.elementRef.nativeElement.parentElement;\n\n if (this.parent) {\n this.renderer.addClass(this.parent, kbqLoaderOverlayParent);\n }\n }\n\n ngOnDestroy(): void {\n if (this.parent) {\n this.renderer.removeClass(this.parent, kbqLoaderOverlayParent);\n }\n }\n}\n","<div class=\"kbq-loader-overlay__container\">\n @if (isExternalIndicator) {\n <ng-content select=\"[kbq-loader-overlay-indicator]\" />\n } @else {\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"spinnerSize\" />\n }\n\n @if (isExternalText) {\n <ng-content select=\"[kbq-loader-overlay-text]\" />\n } @else {\n @if (text) {\n <div class=\"kbq-loader-overlay-text\">\n {{ text }}\n </div>\n }\n }\n\n @if (isExternalCaption) {\n <ng-content select=\"[kbq-loader-overlay-caption]\" />\n } @else {\n @if (caption) {\n <div class=\"kbq-loader-overlay-caption\">\n {{ caption }}\n </div>\n }\n }\n</div>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport {\n KbqLoaderOverlay,\n KbqLoaderOverlayCaption,\n KbqLoaderOverlayIndicator,\n KbqLoaderOverlayText\n} from './loader-overlay.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqProgressSpinnerModule,\n KbqLoaderOverlay,\n KbqLoaderOverlayIndicator,\n KbqLoaderOverlayText,\n KbqLoaderOverlayCaption\n ],\n exports: [\n KbqLoaderOverlay,\n KbqLoaderOverlayIndicator,\n KbqLoaderOverlayText,\n KbqLoaderOverlayCaption\n ]\n})\nexport class KbqLoaderOverlayModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,16 @@ import { Platform } from '@angular/cdk/platform';
|
|
|
5
5
|
import { DOCUMENT } from '@angular/common';
|
|
6
6
|
import { toSignal, outputToObservable, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
7
|
import { kbqInjectNativeElement, KBQ_WINDOW } from '@koobiq/components/core';
|
|
8
|
-
import { merge, switchMap,
|
|
8
|
+
import { merge, switchMap, fromEvent, EMPTY, debounceTime } from 'rxjs';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Overflow, in device pixels, from which an item is hidden. At a fractional `devicePixelRatio` (browser zoom, display
|
|
12
|
+
* scaling) the summed sizes drift from the layout by a fraction of a device pixel: computed margins, paddings and gaps
|
|
13
|
+
* are not snapped to the layout grid of 1/64 device pixel, and `DOMRect` is single-precision. A container sized by its
|
|
14
|
+
* content would read as overflown after every hidden item and lose them all. Half a device pixel absorbs the drift of 32
|
|
15
|
+
* such lengths, while a larger overflow can already cost the item a device pixel when it is painted.
|
|
16
|
+
*/
|
|
17
|
+
const MIN_OVERFLOW_IN_DEVICE_PIXELS = 0.5;
|
|
10
18
|
/**
|
|
11
19
|
* Manages the visibility of the element.
|
|
12
20
|
*
|
|
@@ -161,7 +169,8 @@ class KbqOverflowItems {
|
|
|
161
169
|
*/
|
|
162
170
|
this.additionalResizeObserverTargets = input(this.document.body);
|
|
163
171
|
/**
|
|
164
|
-
* Emits
|
|
172
|
+
* Emits the set of hidden items after every recalculation, also when it has not changed: a recalculation shows every
|
|
173
|
+
* item before it hides the overflown ones again, so a consumer that hides items itself re-applies that here.
|
|
165
174
|
*/
|
|
166
175
|
this.changes = output();
|
|
167
176
|
/**
|
|
@@ -182,30 +191,29 @@ class KbqOverflowItems {
|
|
|
182
191
|
* @default 'nowrap'
|
|
183
192
|
*/
|
|
184
193
|
this.wrap = input('nowrap');
|
|
194
|
+
/** The main axis of each orientation, as the `DOMRect` and `CSSStyleDeclaration` members to read. */
|
|
185
195
|
this.orientationConfig = {
|
|
186
196
|
horizontal: {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
},
|
|
197
|
+
size: 'width',
|
|
198
|
+
marginStart: 'marginLeft',
|
|
199
|
+
marginEnd: 'marginRight',
|
|
200
|
+
paddingStart: 'paddingLeft',
|
|
201
|
+
paddingEnd: 'paddingRight',
|
|
202
|
+
borderStart: 'borderLeftWidth',
|
|
203
|
+
borderEnd: 'borderRightWidth',
|
|
204
|
+
gap: 'columnGap',
|
|
196
205
|
isCrossAxisExceeded: ({ clientHeight, scrollHeight }) => scrollHeight > clientHeight,
|
|
197
206
|
flexDirection: 'row'
|
|
198
207
|
},
|
|
199
208
|
vertical: {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
},
|
|
209
|
+
size: 'height',
|
|
210
|
+
marginStart: 'marginTop',
|
|
211
|
+
marginEnd: 'marginBottom',
|
|
212
|
+
paddingStart: 'paddingTop',
|
|
213
|
+
paddingEnd: 'paddingBottom',
|
|
214
|
+
borderStart: 'borderTopWidth',
|
|
215
|
+
borderEnd: 'borderBottomWidth',
|
|
216
|
+
gap: 'rowGap',
|
|
209
217
|
isCrossAxisExceeded: ({ clientWidth, scrollWidth }) => scrollWidth > clientWidth,
|
|
210
218
|
flexDirection: 'column'
|
|
211
219
|
}
|
|
@@ -221,7 +229,17 @@ class KbqOverflowItems {
|
|
|
221
229
|
? merge(...targets.map((target) => this.resizeObserver.observe(target)))
|
|
222
230
|
: this.resizeObserver.observe(targets);
|
|
223
231
|
})));
|
|
224
|
-
|
|
232
|
+
// What the hidden set depends on besides the geometry.
|
|
233
|
+
const inputs = computed(() => [
|
|
234
|
+
this.items().map((item) => [item.order(), item.alwaysVisible()]),
|
|
235
|
+
this.result(),
|
|
236
|
+
this.reverseOverflowOrder(),
|
|
237
|
+
this.orientation(),
|
|
238
|
+
this.wrap()
|
|
239
|
+
]);
|
|
240
|
+
// A web font that loads lays the items out again without resizing a container of fixed size.
|
|
241
|
+
const fontsLoaded = this.document.fonts ? fromEvent(this.document.fonts, 'loadingdone') : EMPTY;
|
|
242
|
+
merge(toObservable(inputs), resizeObservers, fontsLoaded)
|
|
225
243
|
.pipe(debounceTime(this.debounceTime()), takeUntilDestroyed())
|
|
226
244
|
.subscribe(() => {
|
|
227
245
|
const hiddenItems = this.getHiddenItems(this.sortItemsByOrder(this.items()), this.reverseOverflowOrder(), this.result(), this.element, this.orientation());
|
|
@@ -244,13 +262,24 @@ class KbqOverflowItems {
|
|
|
244
262
|
getHiddenItems(items, reverseOverflowOrder, result, container, orientation) {
|
|
245
263
|
result?.hide();
|
|
246
264
|
items.forEach((item) => item.show());
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
265
|
+
const hideable = (reverseOverflowOrder ? items : [...items].reverse()).filter(({ alwaysVisible }) => !alwaysVisible());
|
|
266
|
+
const threshold = MIN_OVERFLOW_IN_DEVICE_PIXELS / (this.window.devicePixelRatio || 1);
|
|
267
|
+
let hiddenCount = 0;
|
|
268
|
+
if (this.wrap() !== 'wrap') {
|
|
269
|
+
// Hides in one go what the first measurement already shows to be too much, sparing the loop below a layout
|
|
270
|
+
// per item. With every item visible the items are at their smallest and the container at its largest, and
|
|
271
|
+
// the result is not counted yet, so this never hides more than the loop would.
|
|
272
|
+
const { overflow, sizes } = this.measure(container, orientation);
|
|
273
|
+
let excess = overflow;
|
|
274
|
+
while (hiddenCount < hideable.length && excess >= threshold) {
|
|
275
|
+
excess -= sizes.get(hideable[hiddenCount].element) ?? 0;
|
|
276
|
+
hideable[hiddenCount++].hide();
|
|
277
|
+
}
|
|
278
|
+
if (hiddenCount)
|
|
279
|
+
result?.show();
|
|
280
|
+
}
|
|
281
|
+
while (hiddenCount < hideable.length && this.hasOverflown(container, orientation, threshold)) {
|
|
282
|
+
hideable[hiddenCount++].hide();
|
|
254
283
|
result?.show();
|
|
255
284
|
}
|
|
256
285
|
return items.filter(({ hidden }) => hidden());
|
|
@@ -273,26 +302,54 @@ class KbqOverflowItems {
|
|
|
273
302
|
.pipe(takeUntilDestroyed())
|
|
274
303
|
.subscribe((wrap) => this.renderer.setStyle(this.element, 'flex-wrap', wrap));
|
|
275
304
|
}
|
|
276
|
-
hasOverflown(container,
|
|
305
|
+
hasOverflown(container, orientation, threshold) {
|
|
277
306
|
if (this.wrap() === 'wrap')
|
|
278
307
|
return this.orientationConfig[orientation].isCrossAxisExceeded(container);
|
|
279
|
-
|
|
280
|
-
const computedStyle = this.window.getComputedStyle(container);
|
|
281
|
-
const containerSizeWithoutPaddings = containerSize(container) - paddingStart(computedStyle) - paddingEnd(computedStyle);
|
|
282
|
-
const itemsSize = items.reduce((size, item) => size + (item.hidden() ? 0 : itemSize(item.element)), 0);
|
|
283
|
-
const resultSize = !result || result.hidden() ? 0 : itemSize(result.element);
|
|
284
|
-
return itemsSize + resultSize > containerSizeWithoutPaddings;
|
|
308
|
+
return this.measure(container, orientation).overflow >= threshold;
|
|
285
309
|
}
|
|
286
310
|
/**
|
|
287
|
-
*
|
|
311
|
+
* Measures how far the children of the container that take part in its layout exceed its content box along the
|
|
312
|
+
* main axis, and the space each of them takes, its margins and one gap included.
|
|
288
313
|
*/
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
314
|
+
measure(container, orientation) {
|
|
315
|
+
const axis = this.orientationConfig[orientation];
|
|
316
|
+
const style = this.window.getComputedStyle(container);
|
|
317
|
+
const size = container.getBoundingClientRect()[axis.size];
|
|
318
|
+
const edges = this.px(style[axis.borderStart]) +
|
|
319
|
+
this.px(style[axis.paddingStart]) +
|
|
320
|
+
this.px(style[axis.paddingEnd]) +
|
|
321
|
+
this.px(style[axis.borderEnd]);
|
|
322
|
+
// Rects are measured after transforms and CSS `zoom`, computed lengths before them.
|
|
323
|
+
const layoutSize = parseFloat(style[axis.size]);
|
|
324
|
+
const scale = layoutSize > 0 ? size / (layoutSize + (style.boxSizing === 'border-box' ? 0 : edges)) : 1;
|
|
325
|
+
const gap = this.px(style[axis.gap]) * scale;
|
|
326
|
+
const sizes = new Map();
|
|
327
|
+
// Gaps lie between the children, one fewer than there are.
|
|
328
|
+
let used = -gap;
|
|
329
|
+
for (const { element, style: childStyle } of this.getLaidOutChildren(container)) {
|
|
330
|
+
const margins = this.px(childStyle[axis.marginStart]) + this.px(childStyle[axis.marginEnd]);
|
|
331
|
+
const childSize = element.getBoundingClientRect()[axis.size] + margins * scale + gap;
|
|
332
|
+
sizes.set(element, childSize);
|
|
333
|
+
used += childSize;
|
|
294
334
|
}
|
|
295
|
-
return
|
|
335
|
+
return { overflow: used - (size - edges * scale), sizes };
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Children of the element that take part in its flex layout: neither `display: none` nor taken out of flow, as
|
|
339
|
+
* hidden items are, with the children of a `display: contents` child in its place.
|
|
340
|
+
*/
|
|
341
|
+
getLaidOutChildren(element) {
|
|
342
|
+
return Array.from(element.children).flatMap((child) => {
|
|
343
|
+
const style = this.window.getComputedStyle(child);
|
|
344
|
+
if (style.display === 'contents')
|
|
345
|
+
return this.getLaidOutChildren(child);
|
|
346
|
+
if (style.display === 'none' || style.position === 'absolute' || style.position === 'fixed')
|
|
347
|
+
return [];
|
|
348
|
+
return [{ element: child, style }];
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
px(value) {
|
|
352
|
+
return parseFloat(value) || 0;
|
|
296
353
|
}
|
|
297
354
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItems, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
298
355
|
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.21", type: KbqOverflowItems, isStandalone: true, selector: "[kbqOverflowItems]", inputs: { reverseOverflowOrder: { classPropertyName: "reverseOverflowOrder", publicName: "reverseOverflowOrder", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, additionalResizeObserverTargets: { classPropertyName: "additionalResizeObserverTargets", publicName: "additionalResizeObserverTargets", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changes: "changes" }, host: { classAttribute: "kbq-overflow-items" }, queries: [{ propertyName: "items", predicate: KbqOverflowItem, isSignal: true }, { propertyName: "result", first: true, predicate: KbqOverflowItemsResult, descendants: true, isSignal: true }], exportAs: ["kbqOverflowItems"], ngImport: i0 }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-overflow-items.mjs","sources":["../../../packages/components/overflow-items/overflow-items.ts","../../../packages/components/overflow-items/module.ts","../../../packages/components/overflow-items/koobiq-components-overflow-items.ts"],"sourcesContent":["import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n Directive,\n inject,\n input,\n numberAttribute,\n output,\n Renderer2,\n signal\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport {\n KBQ_WINDOW,\n KbqFlexDirection,\n KbqFlexWrap,\n kbqInjectNativeElement,\n KbqOrientation\n} from '@koobiq/components/core';\nimport { debounceTime, merge, skip, switchMap } from 'rxjs';\n\n/**\n * Manages the visibility of the element.\n *\n * @docs-private\n */\n@Directive({\n host: {\n '[attr.aria-hidden]': 'hidden()',\n // @TODO should be refactored (#DS-3834)\n '[class.kbq-overflow-item-hidden]': 'hidden()'\n }\n})\nexport class ElementVisibilityManager {\n private readonly renderer = inject(Renderer2);\n private readonly hiddenState = signal(false);\n\n /**\n * @docs-private\n */\n readonly element = kbqInjectNativeElement();\n\n /**\n * Whether the element is hidden.\n *\n * @docs-private\n */\n readonly hidden = computed(() => this.hiddenState());\n\n /**\n * Hides the element.\n *\n * @docs-private\n */\n hide(): void {\n this.renderer.setStyle(this.element, 'visibility', 'hidden');\n this.renderer.setStyle(this.element, 'position', 'absolute');\n this.hiddenState.set(true);\n }\n\n /**\n * Shows the element.\n *\n * @docs-private\n */\n show(): void {\n this.renderer.removeStyle(this.element, 'visibility');\n this.renderer.removeStyle(this.element, 'position');\n this.hiddenState.set(false);\n }\n}\n\n/**\n * Directive for displaying the result of hidden items by the `KbqOverflowItems` directive.\n */\n@Directive({\n selector: '[kbqOverflowItemsResult]',\n exportAs: 'kbqOverflowItemsResult',\n host: { class: 'kbq-overflow-items-result' }\n})\nexport class KbqOverflowItemsResult extends ElementVisibilityManager {}\n\n/**\n * Directive for the item that can be hidden by the `KbqOverflowItems` directive.\n */\n@Directive({\n selector: '[kbqOverflowItem]',\n exportAs: 'kbqOverflowItem',\n host: {\n class: 'kbq-overflow-item',\n '[class.kbq-overflow-item_always-visible]': 'alwaysVisible()'\n }\n})\nexport class KbqOverflowItem extends ElementVisibilityManager {\n /**\n * Unique identifier for the item.\n */\n readonly id = input.required({ alias: 'kbqOverflowItem' });\n /**\n * Defines the order in which the item is processed in the overflow container,\n * without changing its original position in the `QueryList`.\n */\n readonly order = input(null, { transform: numberAttribute });\n /**\n * Element with this attribute will be ignored when hiding and will always remain visible.\n * @default false\n */\n readonly alwaysVisible = input(false, { transform: booleanAttribute });\n\n /**\n * @docs-private\n */\n override hide(): void {\n if (this.alwaysVisible()) return;\n\n super.hide();\n }\n}\n\n/**\n * Directive for managing the visibility of items that overflow the container.\n */\n@Directive({\n selector: '[kbqOverflowItems]',\n exportAs: 'kbqOverflowItems',\n host: { class: 'kbq-overflow-items' }\n})\nexport class KbqOverflowItems {\n private readonly element = kbqInjectNativeElement();\n private readonly resizeObserver = inject(SharedResizeObserver);\n private readonly renderer = inject(Renderer2);\n private readonly document = inject(DOCUMENT);\n private readonly window = inject(KBQ_WINDOW);\n private readonly platform = inject(Platform);\n\n /**\n * `KbqOverflowItem` directive references.\n */\n private readonly items = contentChildren(KbqOverflowItem);\n\n /**\n * `KbqOverflowItemsResult` directive reference.\n */\n private readonly result = contentChild(KbqOverflowItemsResult);\n\n /**\n * Whether the overflow order should be reversed.\n *\n * @example\n * ```\n * [0, 1, hidden, hidden] ---> [hidden, hidden, 2, 3]\n * ```\n *\n * @default false\n */\n readonly reverseOverflowOrder = input(false, { transform: booleanAttribute });\n\n /**\n * Debounce time for recalculating items visibility.\n *\n * @default 0\n */\n readonly debounceTime = input(0, { transform: numberAttribute });\n\n /**\n * List of additional elements to observe for resize changes.\n *\n * @default document.body\n */\n readonly additionalResizeObserverTargets = input<Element | Element[]>(this.document.body);\n\n /**\n * Emits when the set of hidden items changes.\n */\n readonly changes = output<ReadonlySet<unknown>>();\n\n /**\n * Set of hidden item IDs.\n */\n readonly hiddenItemIDs = toSignal(outputToObservable(this.changes), {\n initialValue: new Set<unknown>([]) as ReadonlySet<unknown>\n });\n\n /**\n * Defines the orientation of the overflow items.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<KbqOrientation>('horizontal');\n\n /**\n * Defines the wrap of the overflow items.\n *\n * @default 'nowrap'\n */\n readonly wrap = input<KbqFlexWrap>('nowrap');\n\n private readonly orientationConfig: Record<\n KbqOrientation,\n {\n containerSize: (element: HTMLElement) => number;\n paddingStart: (computedStyle: CSSStyleDeclaration) => number;\n paddingEnd: (computedStyle: CSSStyleDeclaration) => number;\n itemSize: (element: HTMLElement) => number;\n isCrossAxisExceeded: (element: HTMLElement) => boolean;\n flexDirection: KbqFlexDirection;\n }\n > = {\n horizontal: {\n containerSize: (element) => element.getBoundingClientRect().width,\n paddingStart: ({ paddingLeft }) => parseFloat(paddingLeft) || 0,\n paddingEnd: ({ paddingRight }) => parseFloat(paddingRight) || 0,\n itemSize: (element) => {\n const { marginRight, marginLeft } = this.window.getComputedStyle(element);\n\n return (\n element.getBoundingClientRect().width +\n (parseFloat(marginLeft) || 0) +\n (parseFloat(marginRight) || 0)\n );\n },\n isCrossAxisExceeded: ({ clientHeight, scrollHeight }) => scrollHeight > clientHeight,\n flexDirection: 'row'\n },\n vertical: {\n containerSize: (element) => element.getBoundingClientRect().height,\n paddingStart: ({ paddingTop }) => parseFloat(paddingTop) || 0,\n paddingEnd: ({ paddingBottom }) => parseFloat(paddingBottom) || 0,\n itemSize: (element) => {\n const { marginTop, marginBottom } = this.window.getComputedStyle(element);\n\n return (\n element.getBoundingClientRect().height +\n (parseFloat(marginTop) || 0) +\n (parseFloat(marginBottom) || 0)\n );\n },\n isCrossAxisExceeded: ({ clientWidth, scrollWidth }) => scrollWidth > clientWidth,\n flexDirection: 'column'\n }\n } as const;\n\n constructor() {\n this.setStyles();\n this.setupObservers();\n }\n\n private setupObservers(): void {\n if (!this.platform.isBrowser) return;\n\n const resizeObservers = merge(\n this.resizeObserver.observe(this.element),\n toObservable(this.additionalResizeObserverTargets).pipe(\n switchMap((targets) => {\n return Array.isArray(targets)\n ? merge(...targets.map((target) => this.resizeObserver.observe(target)))\n : this.resizeObserver.observe(targets);\n })\n )\n );\n\n merge(\n toObservable(this.items),\n toObservable(this.reverseOverflowOrder).pipe(skip(1)),\n toObservable(this.orientation).pipe(skip(1)),\n resizeObservers\n )\n .pipe(debounceTime(this.debounceTime()), takeUntilDestroyed())\n .subscribe(() => {\n const hiddenItems = this.getHiddenItems(\n this.sortItemsByOrder(this.items()),\n this.reverseOverflowOrder(),\n this.result(),\n this.element,\n this.orientation()\n );\n const hiddenItemIDs = new Set(hiddenItems.map(({ id }) => id()));\n\n this.changes.emit(hiddenItemIDs);\n });\n }\n\n /**\n * Sort items by their `order` attribute.\n * If an item does not have an `order` defined, its index is used as a fallback.\n */\n private sortItemsByOrder(items: ReadonlyArray<KbqOverflowItem>): ReadonlyArray<KbqOverflowItem> {\n const itemsWithOrder = Array.from(items, (item, index) => ({ item, order: item.order() ?? index }));\n\n return itemsWithOrder.sort((a, b) => a.order - b.order).map(({ item }) => item);\n }\n\n /**\n * Manages the visibility of items based on the available space in the container and returns the hidden items.\n * Direction of hiding is determined by the `reverseOverflowOrder` attribute.\n */\n private getHiddenItems(\n items: ReadonlyArray<KbqOverflowItem>,\n reverseOverflowOrder: boolean,\n result: KbqOverflowItemsResult | undefined,\n container: HTMLElement,\n orientation: KbqOrientation\n ): ReadonlyArray<KbqOverflowItem> {\n result?.hide();\n items.forEach((item) => item.show());\n\n while (this.hasOverflown(container, items, result, orientation)) {\n const itemToHide = reverseOverflowOrder\n ? items.find(({ hidden, alwaysVisible }) => !hidden() && !alwaysVisible())\n : this.findLast(items, ({ hidden, alwaysVisible }) => !hidden() && !alwaysVisible());\n\n if (!itemToHide) break;\n\n itemToHide.hide();\n result?.show();\n }\n\n return items.filter(({ hidden }) => hidden());\n }\n\n /**\n * This method sets the necessary styles for the directive.\n */\n private setStyles(): void {\n this.renderer.setStyle(this.element, 'position', 'relative');\n this.renderer.setStyle(this.element, 'overflow', 'hidden');\n this.renderer.setStyle(this.element, 'display', 'flex');\n this.renderer.setStyle(this.element, 'flex-grow', '1');\n\n toObservable(this.orientation)\n .pipe(takeUntilDestroyed())\n .subscribe((orientation) => {\n const { flexDirection } = this.orientationConfig[orientation];\n\n this.renderer.setStyle(this.element, 'flex-direction', flexDirection);\n });\n\n toObservable(this.wrap)\n .pipe(takeUntilDestroyed())\n .subscribe((wrap) => this.renderer.setStyle(this.element, 'flex-wrap', wrap));\n }\n\n private hasOverflown(\n container: HTMLElement,\n items: ReadonlyArray<KbqOverflowItem>,\n result: KbqOverflowItemsResult | undefined,\n orientation: KbqOrientation\n ): boolean {\n if (this.wrap() === 'wrap') return this.orientationConfig[orientation].isCrossAxisExceeded(container);\n\n const { containerSize, paddingStart, paddingEnd, itemSize } = this.orientationConfig[orientation];\n const computedStyle = this.window.getComputedStyle(container);\n const containerSizeWithoutPaddings =\n containerSize(container) - paddingStart(computedStyle) - paddingEnd(computedStyle);\n const itemsSize = items.reduce((size, item) => size + (item.hidden() ? 0 : itemSize(item.element)), 0);\n const resultSize = !result || result.hidden() ? 0 : itemSize(result.element);\n\n return itemsSize + resultSize > containerSizeWithoutPaddings;\n }\n\n /**\n * @TODO Should be removed when `Array.prototype.findLast` is supported.\n */\n private findLast<T>(array: ReadonlyArray<T>, predicate: (item: T) => boolean): T | undefined {\n for (let i = array.length - 1; i >= 0; i--) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n\n return undefined;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqOverflowItem, KbqOverflowItems, KbqOverflowItemsResult } from './overflow-items';\n\nconst COMPONENTS = [\n KbqOverflowItems,\n KbqOverflowItem,\n KbqOverflowItemsResult\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqOverflowItemsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-overflow-items.mjs","sources":["../../../packages/components/overflow-items/overflow-items.ts","../../../packages/components/overflow-items/module.ts","../../../packages/components/overflow-items/koobiq-components-overflow-items.ts"],"sourcesContent":["import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n Directive,\n inject,\n input,\n numberAttribute,\n output,\n Renderer2,\n signal\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport {\n KBQ_WINDOW,\n KbqFlexDirection,\n KbqFlexWrap,\n kbqInjectNativeElement,\n KbqOrientation\n} from '@koobiq/components/core';\nimport { debounceTime, EMPTY, fromEvent, merge, switchMap } from 'rxjs';\n\n/**\n * Overflow, in device pixels, from which an item is hidden. At a fractional `devicePixelRatio` (browser zoom, display\n * scaling) the summed sizes drift from the layout by a fraction of a device pixel: computed margins, paddings and gaps\n * are not snapped to the layout grid of 1/64 device pixel, and `DOMRect` is single-precision. A container sized by its\n * content would read as overflown after every hidden item and lose them all. Half a device pixel absorbs the drift of 32\n * such lengths, while a larger overflow can already cost the item a device pixel when it is painted.\n */\nconst MIN_OVERFLOW_IN_DEVICE_PIXELS = 0.5;\n\n/**\n * Manages the visibility of the element.\n *\n * @docs-private\n */\n@Directive({\n host: {\n '[attr.aria-hidden]': 'hidden()',\n // @TODO should be refactored (#DS-3834)\n '[class.kbq-overflow-item-hidden]': 'hidden()'\n }\n})\nexport class ElementVisibilityManager {\n private readonly renderer = inject(Renderer2);\n private readonly hiddenState = signal(false);\n\n /**\n * @docs-private\n */\n readonly element = kbqInjectNativeElement();\n\n /**\n * Whether the element is hidden.\n *\n * @docs-private\n */\n readonly hidden = computed(() => this.hiddenState());\n\n /**\n * Hides the element.\n *\n * @docs-private\n */\n hide(): void {\n this.renderer.setStyle(this.element, 'visibility', 'hidden');\n this.renderer.setStyle(this.element, 'position', 'absolute');\n this.hiddenState.set(true);\n }\n\n /**\n * Shows the element.\n *\n * @docs-private\n */\n show(): void {\n this.renderer.removeStyle(this.element, 'visibility');\n this.renderer.removeStyle(this.element, 'position');\n this.hiddenState.set(false);\n }\n}\n\n/**\n * Directive for displaying the result of hidden items by the `KbqOverflowItems` directive.\n */\n@Directive({\n selector: '[kbqOverflowItemsResult]',\n exportAs: 'kbqOverflowItemsResult',\n host: { class: 'kbq-overflow-items-result' }\n})\nexport class KbqOverflowItemsResult extends ElementVisibilityManager {}\n\n/**\n * Directive for the item that can be hidden by the `KbqOverflowItems` directive.\n */\n@Directive({\n selector: '[kbqOverflowItem]',\n exportAs: 'kbqOverflowItem',\n host: {\n class: 'kbq-overflow-item',\n '[class.kbq-overflow-item_always-visible]': 'alwaysVisible()'\n }\n})\nexport class KbqOverflowItem extends ElementVisibilityManager {\n /**\n * Unique identifier for the item.\n */\n readonly id = input.required({ alias: 'kbqOverflowItem' });\n /**\n * Defines the order in which the item is processed in the overflow container,\n * without changing its original position in the `QueryList`.\n */\n readonly order = input(null, { transform: numberAttribute });\n /**\n * Element with this attribute will be ignored when hiding and will always remain visible.\n * @default false\n */\n readonly alwaysVisible = input(false, { transform: booleanAttribute });\n\n /**\n * @docs-private\n */\n override hide(): void {\n if (this.alwaysVisible()) return;\n\n super.hide();\n }\n}\n\n/**\n * Directive for managing the visibility of items that overflow the container.\n */\n@Directive({\n selector: '[kbqOverflowItems]',\n exportAs: 'kbqOverflowItems',\n host: { class: 'kbq-overflow-items' }\n})\nexport class KbqOverflowItems {\n private readonly element = kbqInjectNativeElement();\n private readonly resizeObserver = inject(SharedResizeObserver);\n private readonly renderer = inject(Renderer2);\n private readonly document = inject(DOCUMENT);\n private readonly window = inject(KBQ_WINDOW);\n private readonly platform = inject(Platform);\n\n /**\n * `KbqOverflowItem` directive references.\n */\n private readonly items = contentChildren(KbqOverflowItem);\n\n /**\n * `KbqOverflowItemsResult` directive reference.\n */\n private readonly result = contentChild(KbqOverflowItemsResult);\n\n /**\n * Whether the overflow order should be reversed.\n *\n * @example\n * ```\n * [0, 1, hidden, hidden] ---> [hidden, hidden, 2, 3]\n * ```\n *\n * @default false\n */\n readonly reverseOverflowOrder = input(false, { transform: booleanAttribute });\n\n /**\n * Debounce time for recalculating items visibility.\n *\n * @default 0\n */\n readonly debounceTime = input(0, { transform: numberAttribute });\n\n /**\n * List of additional elements to observe for resize changes.\n *\n * @default document.body\n */\n readonly additionalResizeObserverTargets = input<Element | Element[]>(this.document.body);\n\n /**\n * Emits the set of hidden items after every recalculation, also when it has not changed: a recalculation shows every\n * item before it hides the overflown ones again, so a consumer that hides items itself re-applies that here.\n */\n readonly changes = output<ReadonlySet<unknown>>();\n\n /**\n * Set of hidden item IDs.\n */\n readonly hiddenItemIDs = toSignal(outputToObservable(this.changes), {\n initialValue: new Set<unknown>([]) as ReadonlySet<unknown>\n });\n\n /**\n * Defines the orientation of the overflow items.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<KbqOrientation>('horizontal');\n\n /**\n * Defines the wrap of the overflow items.\n *\n * @default 'nowrap'\n */\n readonly wrap = input<KbqFlexWrap>('nowrap');\n\n /** The main axis of each orientation, as the `DOMRect` and `CSSStyleDeclaration` members to read. */\n private readonly orientationConfig: Record<\n KbqOrientation,\n {\n size: 'width' | 'height';\n marginStart: 'marginLeft' | 'marginTop';\n marginEnd: 'marginRight' | 'marginBottom';\n paddingStart: 'paddingLeft' | 'paddingTop';\n paddingEnd: 'paddingRight' | 'paddingBottom';\n borderStart: 'borderLeftWidth' | 'borderTopWidth';\n borderEnd: 'borderRightWidth' | 'borderBottomWidth';\n gap: 'columnGap' | 'rowGap';\n isCrossAxisExceeded: (element: HTMLElement) => boolean;\n flexDirection: KbqFlexDirection;\n }\n > = {\n horizontal: {\n size: 'width',\n marginStart: 'marginLeft',\n marginEnd: 'marginRight',\n paddingStart: 'paddingLeft',\n paddingEnd: 'paddingRight',\n borderStart: 'borderLeftWidth',\n borderEnd: 'borderRightWidth',\n gap: 'columnGap',\n isCrossAxisExceeded: ({ clientHeight, scrollHeight }) => scrollHeight > clientHeight,\n flexDirection: 'row'\n },\n vertical: {\n size: 'height',\n marginStart: 'marginTop',\n marginEnd: 'marginBottom',\n paddingStart: 'paddingTop',\n paddingEnd: 'paddingBottom',\n borderStart: 'borderTopWidth',\n borderEnd: 'borderBottomWidth',\n gap: 'rowGap',\n isCrossAxisExceeded: ({ clientWidth, scrollWidth }) => scrollWidth > clientWidth,\n flexDirection: 'column'\n }\n } as const;\n\n constructor() {\n this.setStyles();\n this.setupObservers();\n }\n\n private setupObservers(): void {\n if (!this.platform.isBrowser) return;\n\n const resizeObservers = merge(\n this.resizeObserver.observe(this.element),\n toObservable(this.additionalResizeObserverTargets).pipe(\n switchMap((targets) => {\n return Array.isArray(targets)\n ? merge(...targets.map((target) => this.resizeObserver.observe(target)))\n : this.resizeObserver.observe(targets);\n })\n )\n );\n\n // What the hidden set depends on besides the geometry.\n const inputs = computed(() => [\n this.items().map((item) => [item.order(), item.alwaysVisible()]),\n this.result(),\n this.reverseOverflowOrder(),\n this.orientation(),\n this.wrap()\n ]);\n\n // A web font that loads lays the items out again without resizing a container of fixed size.\n const fontsLoaded = this.document.fonts ? fromEvent(this.document.fonts, 'loadingdone') : EMPTY;\n\n merge(toObservable(inputs), resizeObservers, fontsLoaded)\n .pipe(debounceTime(this.debounceTime()), takeUntilDestroyed())\n .subscribe(() => {\n const hiddenItems = this.getHiddenItems(\n this.sortItemsByOrder(this.items()),\n this.reverseOverflowOrder(),\n this.result(),\n this.element,\n this.orientation()\n );\n const hiddenItemIDs = new Set(hiddenItems.map(({ id }) => id()));\n\n this.changes.emit(hiddenItemIDs);\n });\n }\n\n /**\n * Sort items by their `order` attribute.\n * If an item does not have an `order` defined, its index is used as a fallback.\n */\n private sortItemsByOrder(items: ReadonlyArray<KbqOverflowItem>): ReadonlyArray<KbqOverflowItem> {\n const itemsWithOrder = Array.from(items, (item, index) => ({ item, order: item.order() ?? index }));\n\n return itemsWithOrder.sort((a, b) => a.order - b.order).map(({ item }) => item);\n }\n\n /**\n * Manages the visibility of items based on the available space in the container and returns the hidden items.\n * Direction of hiding is determined by the `reverseOverflowOrder` attribute.\n */\n private getHiddenItems(\n items: ReadonlyArray<KbqOverflowItem>,\n reverseOverflowOrder: boolean,\n result: KbqOverflowItemsResult | undefined,\n container: HTMLElement,\n orientation: KbqOrientation\n ): ReadonlyArray<KbqOverflowItem> {\n result?.hide();\n items.forEach((item) => item.show());\n\n const hideable = (reverseOverflowOrder ? items : [...items].reverse()).filter(\n ({ alwaysVisible }) => !alwaysVisible()\n );\n const threshold = MIN_OVERFLOW_IN_DEVICE_PIXELS / (this.window.devicePixelRatio || 1);\n let hiddenCount = 0;\n\n if (this.wrap() !== 'wrap') {\n // Hides in one go what the first measurement already shows to be too much, sparing the loop below a layout\n // per item. With every item visible the items are at their smallest and the container at its largest, and\n // the result is not counted yet, so this never hides more than the loop would.\n const { overflow, sizes } = this.measure(container, orientation);\n let excess = overflow;\n\n while (hiddenCount < hideable.length && excess >= threshold) {\n excess -= sizes.get(hideable[hiddenCount].element) ?? 0;\n hideable[hiddenCount++].hide();\n }\n\n if (hiddenCount) result?.show();\n }\n\n while (hiddenCount < hideable.length && this.hasOverflown(container, orientation, threshold)) {\n hideable[hiddenCount++].hide();\n result?.show();\n }\n\n return items.filter(({ hidden }) => hidden());\n }\n\n /**\n * This method sets the necessary styles for the directive.\n */\n private setStyles(): void {\n this.renderer.setStyle(this.element, 'position', 'relative');\n this.renderer.setStyle(this.element, 'overflow', 'hidden');\n this.renderer.setStyle(this.element, 'display', 'flex');\n this.renderer.setStyle(this.element, 'flex-grow', '1');\n\n toObservable(this.orientation)\n .pipe(takeUntilDestroyed())\n .subscribe((orientation) => {\n const { flexDirection } = this.orientationConfig[orientation];\n\n this.renderer.setStyle(this.element, 'flex-direction', flexDirection);\n });\n\n toObservable(this.wrap)\n .pipe(takeUntilDestroyed())\n .subscribe((wrap) => this.renderer.setStyle(this.element, 'flex-wrap', wrap));\n }\n\n private hasOverflown(container: HTMLElement, orientation: KbqOrientation, threshold: number): boolean {\n if (this.wrap() === 'wrap') return this.orientationConfig[orientation].isCrossAxisExceeded(container);\n\n return this.measure(container, orientation).overflow >= threshold;\n }\n\n /**\n * Measures how far the children of the container that take part in its layout exceed its content box along the\n * main axis, and the space each of them takes, its margins and one gap included.\n */\n private measure(\n container: HTMLElement,\n orientation: KbqOrientation\n ): { overflow: number; sizes: ReadonlyMap<Element, number> } {\n const axis = this.orientationConfig[orientation];\n const style = this.window.getComputedStyle(container);\n const size = container.getBoundingClientRect()[axis.size];\n const edges =\n this.px(style[axis.borderStart]) +\n this.px(style[axis.paddingStart]) +\n this.px(style[axis.paddingEnd]) +\n this.px(style[axis.borderEnd]);\n // Rects are measured after transforms and CSS `zoom`, computed lengths before them.\n const layoutSize = parseFloat(style[axis.size]);\n const scale = layoutSize > 0 ? size / (layoutSize + (style.boxSizing === 'border-box' ? 0 : edges)) : 1;\n const gap = this.px(style[axis.gap]) * scale;\n const sizes = new Map<Element, number>();\n // Gaps lie between the children, one fewer than there are.\n let used = -gap;\n\n for (const { element, style: childStyle } of this.getLaidOutChildren(container)) {\n const margins = this.px(childStyle[axis.marginStart]) + this.px(childStyle[axis.marginEnd]);\n const childSize = element.getBoundingClientRect()[axis.size] + margins * scale + gap;\n\n sizes.set(element, childSize);\n used += childSize;\n }\n\n return { overflow: used - (size - edges * scale), sizes };\n }\n\n /**\n * Children of the element that take part in its flex layout: neither `display: none` nor taken out of flow, as\n * hidden items are, with the children of a `display: contents` child in its place.\n */\n private getLaidOutChildren(element: Element): Array<{ element: Element; style: CSSStyleDeclaration }> {\n return Array.from(element.children).flatMap((child) => {\n const style = this.window.getComputedStyle(child);\n\n if (style.display === 'contents') return this.getLaidOutChildren(child);\n\n if (style.display === 'none' || style.position === 'absolute' || style.position === 'fixed') return [];\n\n return [{ element: child, style }];\n });\n }\n\n private px(value: string): number {\n return parseFloat(value) || 0;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqOverflowItem, KbqOverflowItems, KbqOverflowItemsResult } from './overflow-items';\n\nconst COMPONENTS = [\n KbqOverflowItems,\n KbqOverflowItem,\n KbqOverflowItemsResult\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqOverflowItemsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,8 @@ class KbqSearchExpandable {
|
|
|
45
45
|
set disabled(value) {
|
|
46
46
|
this._disabled = value;
|
|
47
47
|
this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
|
|
48
|
+
// Only an input binding marks this OnPush view; `setDisabledState` and writes from code do not.
|
|
49
|
+
this.changeDetectorRef.markForCheck();
|
|
48
50
|
}
|
|
49
51
|
get tabIndex() {
|
|
50
52
|
return this.disabled ? -1 : this._tabIndex;
|