@koobiq/components 20.1.0 → 20.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/_accordion-theme.scss +6 -2
- package/accordion/accordion-tokens.scss +3 -0
- package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +10 -0
- package/accordion/accordion.scss +71 -0
- package/accordion/index.d.ts +264 -121
- package/actions-panel/index.d.ts +25 -13
- package/alert/_alert-theme.scss +14 -0
- package/alert/alert.component.scss +24 -13
- package/alert/index.d.ts +63 -29
- package/app-switcher/app-switcher-dropdown-app.scss +7 -5
- package/app-switcher/app-switcher-dropdown-site.scss +6 -4
- package/app-switcher/index.d.ts +41 -4
- package/app-switcher/kbq-app-switcher-list-item.scss +6 -8
- package/autocomplete/autocomplete.scss +2 -1
- package/autocomplete/index.d.ts +58 -37
- package/badge/index.d.ts +2 -3
- package/breadcrumbs/index.d.ts +1 -1
- package/button/index.d.ts +2 -2
- package/button-toggle/button-toggle-tokens.scss +2 -0
- package/button-toggle/button-toggle.scss +9 -0
- package/button-toggle/index.d.ts +5 -0
- package/checkbox/index.d.ts +33 -29
- package/clamped-text/index.d.ts +3 -2
- package/code-block/index.d.ts +24 -19
- package/content-panel/index.d.ts +1 -1
- package/core/index.d.ts +1217 -186
- package/core/option/_action-container-mixins.scss +28 -0
- package/core/option/_option-theme.scss +24 -0
- package/core/option/action.scss +7 -0
- package/core/styles/_core.scss +2 -0
- package/core/styles/_koobiq-theme.scss +2 -0
- package/core/styles/_tokens.scss +1 -0
- package/core/styles/common/_animation.scss +31 -24
- package/core/styles/common/_connected-overlay.scss +39 -0
- package/core/styles/common/_select.scss +19 -2
- package/core/styles/common/_tokens.scss +0 -9
- package/core/styles/theming/_index.scss +0 -1
- package/core/styles/theming/_theming.scss +34 -5
- package/datepicker/index.d.ts +46 -15
- package/dl/dl.scss +26 -0
- package/dl/index.d.ts +8 -1
- package/dropdown/_dropdown-theme.scss +28 -2
- package/dropdown/dropdown-item.scss +29 -0
- package/dropdown/dropdown-tokens.scss +2 -1
- package/dropdown/dropdown.scss +16 -1
- package/dropdown/index.d.ts +331 -17
- package/dynamic-translation/index.d.ts +1 -1
- package/fesm2022/koobiq-components-accordion.mjs +480 -317
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +57 -46
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +98 -58
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +233 -38
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +89 -52
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +18 -17
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +17 -12
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +25 -25
- package/fesm2022/koobiq-components-checkbox.mjs +69 -92
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +18 -13
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +56 -69
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +29 -29
- package/fesm2022/koobiq-components-core.mjs +2485 -735
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +168 -126
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-dl.mjs +23 -15
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +814 -136
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +74 -42
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +783 -199
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +7 -7
- package/fesm2022/koobiq-components-form-field.mjs +350 -162
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +52 -25
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +175 -28
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +41 -24
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +8 -8
- package/fesm2022/koobiq-components-list.mjs +657 -143
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-markdown.mjs +14 -11
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +59 -35
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +177 -67
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +40 -24
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +16 -17
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +31 -21
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +33 -14
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-search-expandable.mjs +49 -14
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +450 -146
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +14 -14
- package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
- package/fesm2022/koobiq-components-skeleton.mjs +10 -10
- package/fesm2022/koobiq-components-split-button.mjs +10 -17
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +17 -17
- package/fesm2022/koobiq-components-table.mjs +15 -13
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +80 -68
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +283 -122
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +13 -8
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +29 -24
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +61 -30
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +77 -42
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +51 -26
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +72 -64
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +219 -28
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-tree-select.mjs +222 -80
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +302 -81
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +27 -27
- package/file-upload/index.d.ts +25 -6
- package/file-upload/multiple-file-upload.component.scss +14 -0
- package/filter-bar/_filter-bar-theme.scss +0 -10
- package/filter-bar/filter-bar-tokens.scss +3 -0
- package/filter-bar/filters.scss +3 -2
- package/filter-bar/index.d.ts +281 -9
- package/filter-bar/pipes/base-pipe.scss +0 -11
- package/filter-bar/pipes/pipe-input.scss +10 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +0 -6
- package/filter-bar/pipes/pipe-multiselect.scss +0 -6
- package/filter-bar/pipes/pipe-tree-select.scss +0 -6
- package/form-field/_form-field-theme.scss +76 -20
- package/form-field/fieldset.scss +10 -0
- package/form-field/form-field-tokens.scss +15 -1
- package/form-field/form-field.scss +15 -19
- package/form-field/index.d.ts +147 -65
- package/icon/icon-button.scss +3 -1
- package/icon/index.d.ts +45 -7
- package/inline-edit/index.d.ts +57 -4
- package/inline-edit/inline-edit.scss +10 -0
- package/input/index.d.ts +17 -2
- package/list/_list-theme.scss +42 -10
- package/list/index.d.ts +326 -79
- package/list/list-tokens.scss +43 -8
- package/list/list.scss +186 -12
- package/markdown/index.d.ts +1 -1
- package/modal/index.d.ts +21 -4
- package/modal/modal-tokens.scss +1 -1
- package/navbar/_navbar-item_vertical.scss +7 -5
- package/navbar/index.d.ts +54 -5
- package/navbar/navbar-brand.scss +23 -7
- package/navbar/vertical-navbar.scss +6 -0
- package/notification-center/index.d.ts +2 -1
- package/notification-center/notification-item.scss +6 -0
- package/package.json +3 -6
- package/popover/index.d.ts +2 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/resizer/index.d.ts +12 -0
- package/schematics/collection.json +10 -0
- package/schematics/migrations/alert-signals/README.md +64 -0
- package/schematics/migrations/alert-signals/data.js +70 -0
- package/schematics/migrations/alert-signals/index.js +350 -0
- package/schematics/migrations/alert-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
- package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +29 -4
- package/schematics/migrations/deprecated-icons/data.js +7 -0
- package/schematics/migrations/deprecated-icons/index.js +62 -35
- package/schematics/migrations/filter-bar-signals/README.md +1 -1
- package/schematics/migrations/new-icons-pack/README.md +37 -2
- package/schematics/migrations/new-icons-pack/data.js +8 -0
- package/schematics/migrations/new-icons-pack/index.js +144 -53
- package/schematics/migrations.json +11 -1
- package/schematics/ng-add/index.js +3 -3
- package/schematics/utils/angular-parsing.js +41 -14
- package/schematics/utils/ast.js +31 -0
- package/schematics/utils/icon-migration.js +530 -0
- package/schematics/utils/typescript.js +44 -0
- package/scrollbar/index.d.ts +1 -1
- package/search-expandable/index.d.ts +3 -0
- package/select/index.d.ts +212 -40
- package/select/select-tokens.scss +0 -1
- package/select/select.scss +0 -2
- package/splitter/index.d.ts +1 -1
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +2 -1
- package/table/table.scss +8 -0
- package/tabs/_tabs-common.scss +60 -31
- package/tabs/_tabs-theme.scss +12 -0
- package/tabs/index.d.ts +2 -2
- package/tabs/tab-header.scss +14 -0
- package/tabs/tab-nav-bar.scss +4 -0
- package/tabs/tabs-tokens.scss +1 -0
- package/tags/index.d.ts +128 -29
- package/textarea/index.d.ts +5 -0
- package/time-range/index.d.ts +1 -1
- package/timepicker/index.d.ts +4 -0
- package/timezone/index.d.ts +10 -8
- package/toast/index.d.ts +26 -3
- package/toggle/index.d.ts +34 -14
- package/tooltip/index.d.ts +119 -7
- package/tree/_tree-theme.scss +25 -5
- package/tree/index.d.ts +71 -3
- package/tree/tree-option.scss +2 -8
- package/tree-select/_tree-select-theme.scss +22 -0
- package/tree-select/index.d.ts +127 -36
- package/accordion/accordion.component.scss +0 -50
- package/core/styles/_tokens.kbq.import.scss +0 -4
- package/core/styles/theming/_components-theming.scss +0 -1927
- package/filter-bar/pipes/pipe-select.scss +0 -5
- package/overflow-items/overflow-items.scss +0 -20
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { InjectionToken, inject, SecurityContext, Injectable, ElementRef, ChangeDetectorRef, DestroyRef, input, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, effect, booleanAttribute, NgModule } from '@angular/core';
|
|
3
|
+
import { InjectionToken, inject, SecurityContext, Injectable, ElementRef, ChangeDetectorRef, DestroyRef, input, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, computed, signal, effect, booleanAttribute, NgModule } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
5
|
-
import { KbqColorDirective
|
|
5
|
+
import { KbqColorDirective } from '@koobiq/components/core';
|
|
6
6
|
import { of, throwError, ReplaySubject, EMPTY } from 'rxjs';
|
|
7
7
|
import { map, catchError, share, finalize, switchMap } from 'rxjs/operators';
|
|
8
8
|
import { DOCUMENT } from '@angular/common';
|
|
9
9
|
import { HttpClient } from '@angular/common/http';
|
|
10
10
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Injection token used by `KbqIcon` to look up its `KbqIconErrorStateContext`.
|
|
14
|
+
* @docs-private
|
|
15
|
+
*/
|
|
16
|
+
const KBQ_ICON_ERROR_STATE_CONTEXT = new InjectionToken('KbqIconErrorStateContext');
|
|
17
|
+
/**
|
|
18
|
+
* Utility provider for `KBQ_ICON_ERROR_STATE_CONTEXT`, built from a factory that resolves the current host's `KbqIconErrorStateContext`.
|
|
19
|
+
* @docs-private
|
|
20
|
+
*/
|
|
21
|
+
const kbqIconErrorStateContextFactoryProvider = (factory) => ({
|
|
22
|
+
provide: KBQ_ICON_ERROR_STATE_CONTEXT,
|
|
23
|
+
useFactory: factory
|
|
24
|
+
});
|
|
25
|
+
|
|
12
26
|
const KBQ_ICONS_CONFIG = new InjectionToken('KBQ_ICONS_CONFIG');
|
|
13
27
|
/**
|
|
14
28
|
* Multi-valued injection token for icon resolver functions.
|
|
@@ -268,10 +282,10 @@ class KbqIconRegistry {
|
|
|
268
282
|
this.inProgressUrlFetches.set(urlStr, fetch);
|
|
269
283
|
return fetch;
|
|
270
284
|
}
|
|
271
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
272
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
285
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
286
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconRegistry, providedIn: 'root' }); }
|
|
273
287
|
}
|
|
274
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconRegistry, decorators: [{
|
|
275
289
|
type: Injectable,
|
|
276
290
|
args: [{ providedIn: 'root' }]
|
|
277
291
|
}], ctorParameters: () => [] });
|
|
@@ -280,7 +294,11 @@ class KbqIcon extends KbqColorDirective {
|
|
|
280
294
|
constructor() {
|
|
281
295
|
super(...arguments);
|
|
282
296
|
this.elementRef = inject(ElementRef);
|
|
283
|
-
|
|
297
|
+
/**
|
|
298
|
+
* Host providing error state for `autoColor`, when the icon sits inside one (e.g. a form field).
|
|
299
|
+
* @docs-private
|
|
300
|
+
*/
|
|
301
|
+
this.errorStateContext = inject(KBQ_ICON_ERROR_STATE_CONTEXT, { optional: true });
|
|
284
302
|
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
285
303
|
this.registry = inject(KbqIconRegistry, { optional: true });
|
|
286
304
|
this.destroyRef = inject(DestroyRef);
|
|
@@ -298,7 +316,7 @@ class KbqIcon extends KbqColorDirective {
|
|
|
298
316
|
/** @docs-private */
|
|
299
317
|
this.svgIconName = new ReplaySubject(1);
|
|
300
318
|
this.updateState = () => {
|
|
301
|
-
this.hasError = this.
|
|
319
|
+
this.hasError = !!this.errorStateContext?.errorState;
|
|
302
320
|
this.changeDetectorRef.markForCheck();
|
|
303
321
|
};
|
|
304
322
|
}
|
|
@@ -321,7 +339,7 @@ class KbqIcon extends KbqColorDirective {
|
|
|
321
339
|
}
|
|
322
340
|
ngAfterContentInit() {
|
|
323
341
|
if (this.autoColor) {
|
|
324
|
-
this.
|
|
342
|
+
this.errorStateContext?.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateState);
|
|
325
343
|
this.updateState();
|
|
326
344
|
}
|
|
327
345
|
this.updateMaxHeight();
|
|
@@ -363,10 +381,10 @@ class KbqIcon extends KbqColorDirective {
|
|
|
363
381
|
const baseName = iconName?.includes(':') ? iconName.split(':')[1] : iconName;
|
|
364
382
|
return parseInt(baseName?.split('_').pop() ?? '');
|
|
365
383
|
}
|
|
366
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
367
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
384
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIcon, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
385
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.30", type: KbqIcon, isStandalone: true, selector: "[kbq-icon]", inputs: { small: { classPropertyName: "small", publicName: "small", isSignal: true, isRequired: false, transformFunction: null }, autoColor: { classPropertyName: "autoColor", publicName: "autoColor", isSignal: false, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "kbq-icon", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "class": "svgIcon ? null : iconName", "class.kbq-error": "color === \"error\" || hasError" }, classAttribute: "kbq kbq-icon" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-icon>svg{fill:currentColor;vertical-align:middle}.kbq-icon-rotate_90{transform:rotate(90deg)}.kbq-icon-rotate_180{transform:rotate(180deg)}.kbq-icon-rotate_270{transform:rotate(270deg)}.kbq-icon-flip-h{transform:scaleY(-1)}.kbq-icon-flip-v{transform:scaleX(-1)}.kbq-icon-flip-vh{transform:scale(-1)}.kbq-icon{color:var(--kbq-icon-contrast-color)}.kbq-icon.kbq-theme{color:var(--kbq-icon-theme-color)}.kbq-icon.kbq-contrast{color:var(--kbq-icon-contrast-color)}.kbq-icon.kbq-contrast-fade{color:var(--kbq-icon-fade-contrast-color)}.kbq-icon.kbq-error{color:var(--kbq-icon-error-color)}.kbq-icon.kbq-warning{color:var(--kbq-icon-warning-color)}.kbq-icon.kbq-success{color:var(--kbq-icon-success-color)}\n", ".kbq-icon{--kbq-icon-theme-color: var(--kbq-icon-theme);--kbq-icon-contrast-color: var(--kbq-icon-contrast);--kbq-icon-fade-contrast-color: var(--kbq-icon-contrast-fade);--kbq-icon-error-color: var(--kbq-icon-error);--kbq-icon-success-color: var(--kbq-icon-success);--kbq-icon-warning-color: var(--kbq-icon-warning)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
368
386
|
}
|
|
369
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIcon, decorators: [{
|
|
370
388
|
type: Component,
|
|
371
389
|
args: [{ selector: '[kbq-icon]', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
372
390
|
class: 'kbq kbq-icon',
|
|
@@ -402,7 +420,14 @@ class KbqIconButton extends KbqIcon {
|
|
|
402
420
|
constructor() {
|
|
403
421
|
super();
|
|
404
422
|
this.focusMonitor = inject(FocusMonitor);
|
|
423
|
+
/** Size of the icon button. */
|
|
424
|
+
this.size = input('normal', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
425
|
+
/**
|
|
426
|
+
* @deprecated Use `size` input instead. Will be removed in the next major release (#DS-5338).
|
|
427
|
+
*/
|
|
405
428
|
this.small = input(false, ...(ngDevMode ? [{ debugName: "small" }] : []));
|
|
429
|
+
/** @docs-private */
|
|
430
|
+
this.isCompact = computed(() => this.size() === 'compact' || this.small(), ...(ngDevMode ? [{ debugName: "isCompact" }] : []));
|
|
406
431
|
this._tabindex = 0;
|
|
407
432
|
/** @docs-private */
|
|
408
433
|
this.disabledSignal = signal(false, ...(ngDevMode ? [{ debugName: "disabledSignal" }] : []));
|
|
@@ -423,19 +448,21 @@ class KbqIconButton extends KbqIcon {
|
|
|
423
448
|
stopFocusMonitor() {
|
|
424
449
|
this.focusMonitor.stopMonitoring(this.getHostElement());
|
|
425
450
|
}
|
|
426
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
427
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
451
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
452
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.30", type: KbqIconButton, isStandalone: true, selector: "[kbq-icon-button]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, small: { classPropertyName: "small", publicName: "small", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "kbq-icon-button", isSignal: false, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute } }, host: { properties: { "attr.tabindex": "tabindex", "attr.disabled": "disabled || null", "class.kbq-disabled": "disabled", "class.kbq-icon-button_compact": "isCompact()", "class.kbq-icon-button_small": "isCompact()" }, classAttribute: "kbq kbq-icon-button" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-icon-button:not(.kbq-disabled){cursor:pointer}.kbq-icon-button{padding:var(--kbq-icon-button-size-normal-vertical-padding) var(--kbq-icon-button-size-normal-horizontal-padding)}.kbq-icon-button.kbq-icon-button_small,.kbq-icon-button.kbq-icon-button_compact{padding:var(--kbq-icon-button-size-small-vertical-padding) var(--kbq-icon-button-size-small-horizontal-padding)}.kbq-icon-button.kbq-disabled{pointer-events:none}.kbq-icon-button>svg{fill:currentColor;vertical-align:middle}button.kbq-icon-button{border:none;background-color:unset}.kbq-icon-button:focus{outline:none}.kbq-icon-button.kbq-theme{color:var(--kbq-icon-button-theme-default)}.kbq-icon-button.kbq-theme:hover,.kbq-icon-button.kbq-theme.kbq-hovered{color:var(--kbq-icon-button-theme-states-hover)}.kbq-icon-button.kbq-theme:active,.kbq-icon-button.kbq-theme.kbq-active{color:var(--kbq-icon-button-theme-states-active)}.kbq-icon-button.kbq-theme.kbq-disabled{color:var(--kbq-icon-button-theme-states-disabled)}.kbq-icon-button.kbq-contrast{color:var(--kbq-icon-button-contrast-default)}.kbq-icon-button.kbq-contrast:hover,.kbq-icon-button.kbq-contrast.kbq-hovered{color:var(--kbq-icon-button-contrast-states-hover)}.kbq-icon-button.kbq-contrast:active,.kbq-icon-button.kbq-contrast.kbq-active{color:var(--kbq-icon-button-contrast-states-active)}.kbq-icon-button.kbq-contrast.kbq-disabled{color:var(--kbq-icon-button-contrast-states-disabled)}.kbq-icon-button.kbq-contrast-fade{color:var(--kbq-icon-button-fade-contrast-default)}.kbq-icon-button.kbq-contrast-fade:hover,.kbq-icon-button.kbq-contrast-fade.kbq-hovered{color:var(--kbq-icon-button-fade-contrast-states-hover)}.kbq-icon-button.kbq-contrast-fade:active,.kbq-icon-button.kbq-contrast-fade.kbq-active{color:var(--kbq-icon-button-fade-contrast-states-active)}.kbq-icon-button.kbq-contrast-fade.kbq-disabled{color:var(--kbq-icon-button-fade-contrast-states-disabled)}.kbq-icon-button.kbq-error{color:var(--kbq-icon-button-error-default)}.kbq-icon-button.kbq-error:hover,.kbq-icon-button.kbq-error.kbq-hovered{color:var(--kbq-icon-button-error-states-hover)}.kbq-icon-button.kbq-error:active,.kbq-icon-button.kbq-error.kbq-active{color:var(--kbq-icon-button-error-states-active)}.kbq-icon-button.kbq-error.kbq-disabled{color:var(--kbq-icon-button-error-states-disabled)}.kbq-icon-button.kbq-success{color:var(--kbq-icon-button-success-default)}.kbq-icon-button.kbq-success:hover,.kbq-icon-button.kbq-success.kbq-hovered{color:var(--kbq-icon-button-success-states-hover)}.kbq-icon-button.kbq-success:active,.kbq-icon-button.kbq-success.kbq-active{color:var(--kbq-icon-button-success-states-active)}.kbq-icon-button.kbq-success.kbq-disabled{color:var(--kbq-icon-button-success-states-disabled)}.kbq-icon-button.kbq-warning{color:var(--kbq-icon-button-warning-default)}.kbq-icon-button.kbq-warning:hover,.kbq-icon-button.kbq-warning.kbq-hovered{color:var(--kbq-icon-button-warning-states-hover)}.kbq-icon-button.kbq-warning:active,.kbq-icon-button.kbq-warning.kbq-active{color:var(--kbq-icon-button-warning-states-active)}.kbq-icon-button.kbq-warning.kbq-disabled{color:var(--kbq-icon-button-warning-states-disabled)}.kbq-icon-button.cdk-keyboard-focused{box-shadow:inset 0 0 0 1px var(--kbq-states-line-focus-theme),0 0 0 1px var(--kbq-states-line-focus-theme)}.kbq-icon-button.cdk-keyboard-focused.kbq-error{box-shadow:inset 0 0 0 1px var(--kbq-states-line-focus-error),0 0 0 1px var(--kbq-states-line-focus-error)}\n", ".kbq-icon-button{--kbq-icon-button-size-horizontal-padding: var(--kbq-size-s);--kbq-icon-button-size-left-icon-padding: var(--kbq-size-xs);--kbq-icon-button-size-normal-horizontal-padding: 0;--kbq-icon-button-size-normal-vertical-padding: 0;--kbq-icon-button-size-small-horizontal-padding: var(--kbq-size-xxs);--kbq-icon-button-size-small-vertical-padding: var(--kbq-size-xxs);--kbq-icon-button-theme-default: var(--kbq-icon-theme);--kbq-icon-button-theme-states-hover: var(--kbq-states-icon-theme-hover);--kbq-icon-button-theme-states-active: var(--kbq-states-icon-theme-active);--kbq-icon-button-theme-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-contrast-default: var(--kbq-icon-contrast);--kbq-icon-button-contrast-states-hover: var(--kbq-states-icon-contrast-hover);--kbq-icon-button-contrast-states-active: var(--kbq-states-icon-contrast-active);--kbq-icon-button-contrast-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-fade-contrast-default: var(--kbq-icon-contrast-fade);--kbq-icon-button-fade-contrast-states-hover: var(--kbq-states-icon-contrast-fade-hover);--kbq-icon-button-fade-contrast-states-active: var(--kbq-states-icon-contrast-fade-active);--kbq-icon-button-fade-contrast-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-error-default: var(--kbq-icon-error);--kbq-icon-button-error-states-hover: var(--kbq-states-icon-error-hover);--kbq-icon-button-error-states-active: var(--kbq-states-icon-error-active);--kbq-icon-button-error-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-success-default: var(--kbq-icon-success);--kbq-icon-button-success-states-hover: var(--kbq-states-icon-success-hover);--kbq-icon-button-success-states-active: var(--kbq-states-icon-success-active);--kbq-icon-button-success-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-warning-default: var(--kbq-icon-warning);--kbq-icon-button-warning-states-hover: var(--kbq-states-icon-warning-hover);--kbq-icon-button-warning-states-active: var(--kbq-states-icon-warning-active);--kbq-icon-button-warning-states-disabled: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
428
453
|
}
|
|
429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconButton, decorators: [{
|
|
430
455
|
type: Component,
|
|
431
456
|
args: [{ selector: `[kbq-icon-button]`, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
432
457
|
class: 'kbq kbq-icon-button',
|
|
433
458
|
'[attr.tabindex]': 'tabindex',
|
|
434
459
|
'[attr.disabled]': 'disabled || null',
|
|
435
460
|
'[class.kbq-disabled]': 'disabled',
|
|
436
|
-
'[class.kbq-icon-
|
|
437
|
-
|
|
438
|
-
|
|
461
|
+
'[class.kbq-icon-button_compact]': 'isCompact()',
|
|
462
|
+
// @deprcated Will be removed in the next major release (#DS-5338)
|
|
463
|
+
'[class.kbq-icon-button_small]': 'isCompact()'
|
|
464
|
+
}, styles: [".kbq-icon-button:not(.kbq-disabled){cursor:pointer}.kbq-icon-button{padding:var(--kbq-icon-button-size-normal-vertical-padding) var(--kbq-icon-button-size-normal-horizontal-padding)}.kbq-icon-button.kbq-icon-button_small,.kbq-icon-button.kbq-icon-button_compact{padding:var(--kbq-icon-button-size-small-vertical-padding) var(--kbq-icon-button-size-small-horizontal-padding)}.kbq-icon-button.kbq-disabled{pointer-events:none}.kbq-icon-button>svg{fill:currentColor;vertical-align:middle}button.kbq-icon-button{border:none;background-color:unset}.kbq-icon-button:focus{outline:none}.kbq-icon-button.kbq-theme{color:var(--kbq-icon-button-theme-default)}.kbq-icon-button.kbq-theme:hover,.kbq-icon-button.kbq-theme.kbq-hovered{color:var(--kbq-icon-button-theme-states-hover)}.kbq-icon-button.kbq-theme:active,.kbq-icon-button.kbq-theme.kbq-active{color:var(--kbq-icon-button-theme-states-active)}.kbq-icon-button.kbq-theme.kbq-disabled{color:var(--kbq-icon-button-theme-states-disabled)}.kbq-icon-button.kbq-contrast{color:var(--kbq-icon-button-contrast-default)}.kbq-icon-button.kbq-contrast:hover,.kbq-icon-button.kbq-contrast.kbq-hovered{color:var(--kbq-icon-button-contrast-states-hover)}.kbq-icon-button.kbq-contrast:active,.kbq-icon-button.kbq-contrast.kbq-active{color:var(--kbq-icon-button-contrast-states-active)}.kbq-icon-button.kbq-contrast.kbq-disabled{color:var(--kbq-icon-button-contrast-states-disabled)}.kbq-icon-button.kbq-contrast-fade{color:var(--kbq-icon-button-fade-contrast-default)}.kbq-icon-button.kbq-contrast-fade:hover,.kbq-icon-button.kbq-contrast-fade.kbq-hovered{color:var(--kbq-icon-button-fade-contrast-states-hover)}.kbq-icon-button.kbq-contrast-fade:active,.kbq-icon-button.kbq-contrast-fade.kbq-active{color:var(--kbq-icon-button-fade-contrast-states-active)}.kbq-icon-button.kbq-contrast-fade.kbq-disabled{color:var(--kbq-icon-button-fade-contrast-states-disabled)}.kbq-icon-button.kbq-error{color:var(--kbq-icon-button-error-default)}.kbq-icon-button.kbq-error:hover,.kbq-icon-button.kbq-error.kbq-hovered{color:var(--kbq-icon-button-error-states-hover)}.kbq-icon-button.kbq-error:active,.kbq-icon-button.kbq-error.kbq-active{color:var(--kbq-icon-button-error-states-active)}.kbq-icon-button.kbq-error.kbq-disabled{color:var(--kbq-icon-button-error-states-disabled)}.kbq-icon-button.kbq-success{color:var(--kbq-icon-button-success-default)}.kbq-icon-button.kbq-success:hover,.kbq-icon-button.kbq-success.kbq-hovered{color:var(--kbq-icon-button-success-states-hover)}.kbq-icon-button.kbq-success:active,.kbq-icon-button.kbq-success.kbq-active{color:var(--kbq-icon-button-success-states-active)}.kbq-icon-button.kbq-success.kbq-disabled{color:var(--kbq-icon-button-success-states-disabled)}.kbq-icon-button.kbq-warning{color:var(--kbq-icon-button-warning-default)}.kbq-icon-button.kbq-warning:hover,.kbq-icon-button.kbq-warning.kbq-hovered{color:var(--kbq-icon-button-warning-states-hover)}.kbq-icon-button.kbq-warning:active,.kbq-icon-button.kbq-warning.kbq-active{color:var(--kbq-icon-button-warning-states-active)}.kbq-icon-button.kbq-warning.kbq-disabled{color:var(--kbq-icon-button-warning-states-disabled)}.kbq-icon-button.cdk-keyboard-focused{box-shadow:inset 0 0 0 1px var(--kbq-states-line-focus-theme),0 0 0 1px var(--kbq-states-line-focus-theme)}.kbq-icon-button.cdk-keyboard-focused.kbq-error{box-shadow:inset 0 0 0 1px var(--kbq-states-line-focus-error),0 0 0 1px var(--kbq-states-line-focus-error)}\n", ".kbq-icon-button{--kbq-icon-button-size-horizontal-padding: var(--kbq-size-s);--kbq-icon-button-size-left-icon-padding: var(--kbq-size-xs);--kbq-icon-button-size-normal-horizontal-padding: 0;--kbq-icon-button-size-normal-vertical-padding: 0;--kbq-icon-button-size-small-horizontal-padding: var(--kbq-size-xxs);--kbq-icon-button-size-small-vertical-padding: var(--kbq-size-xxs);--kbq-icon-button-theme-default: var(--kbq-icon-theme);--kbq-icon-button-theme-states-hover: var(--kbq-states-icon-theme-hover);--kbq-icon-button-theme-states-active: var(--kbq-states-icon-theme-active);--kbq-icon-button-theme-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-contrast-default: var(--kbq-icon-contrast);--kbq-icon-button-contrast-states-hover: var(--kbq-states-icon-contrast-hover);--kbq-icon-button-contrast-states-active: var(--kbq-states-icon-contrast-active);--kbq-icon-button-contrast-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-fade-contrast-default: var(--kbq-icon-contrast-fade);--kbq-icon-button-fade-contrast-states-hover: var(--kbq-states-icon-contrast-fade-hover);--kbq-icon-button-fade-contrast-states-active: var(--kbq-states-icon-contrast-fade-active);--kbq-icon-button-fade-contrast-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-error-default: var(--kbq-icon-error);--kbq-icon-button-error-states-hover: var(--kbq-states-icon-error-hover);--kbq-icon-button-error-states-active: var(--kbq-states-icon-error-active);--kbq-icon-button-error-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-success-default: var(--kbq-icon-success);--kbq-icon-button-success-states-hover: var(--kbq-states-icon-success-hover);--kbq-icon-button-success-states-active: var(--kbq-states-icon-success-active);--kbq-icon-button-success-states-disabled: var(--kbq-states-icon-disabled);--kbq-icon-button-warning-default: var(--kbq-icon-warning);--kbq-icon-button-warning-states-hover: var(--kbq-states-icon-warning-hover);--kbq-icon-button-warning-states-active: var(--kbq-states-icon-warning-active);--kbq-icon-button-warning-states-disabled: var(--kbq-states-icon-disabled)}\n"] }]
|
|
465
|
+
}], ctorParameters: () => [], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], small: [{ type: i0.Input, args: [{ isSignal: true, alias: "small", required: false }] }], iconName: [{
|
|
439
466
|
type: Input,
|
|
440
467
|
args: [{ alias: 'kbq-icon-button' }]
|
|
441
468
|
}], tabindex: [{
|
|
@@ -452,10 +479,10 @@ class KbqIconItem extends KbqIcon {
|
|
|
452
479
|
this.fade = input(false, ...(ngDevMode ? [{ debugName: "fade" }] : []));
|
|
453
480
|
this.big = input(false, ...(ngDevMode ? [{ debugName: "big" }] : []));
|
|
454
481
|
}
|
|
455
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
456
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
482
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
483
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.30", type: KbqIconItem, isStandalone: true, selector: "[kbq-icon-item]", inputs: { iconName: { classPropertyName: "iconName", publicName: "kbq-icon-item", isSignal: false, isRequired: false, transformFunction: null }, fade: { classPropertyName: "fade", publicName: "fade", isSignal: true, isRequired: false, transformFunction: null }, big: { classPropertyName: "big", publicName: "big", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-icon-item_normal": "!big()", "class.kbq-icon-item_big": "big()", "class.kbq-icon-item_fade-off": "!fade()", "class.kbq-icon-item_fade-on": "fade()" }, classAttribute: "kbq kbq-icon-item kbq-icon-item_filled" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-icon-item{box-sizing:border-box;border-radius:50%}.kbq-icon-item.kbq-icon-item_normal{padding:var(--kbq-icon-item-size-normal-vertical-padding) var(--kbq-icon-item-size-normal-horizontal-padding)}.kbq-icon-item.kbq-icon-item_big{padding:var(--kbq-icon-item-size-big-vertical-padding) var(--kbq-icon-item-size-big-horizontal-padding)}.kbq-icon-item>svg{fill:currentColor;vertical-align:middle}.kbq-icon-item.kbq-icon-item_filled{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-theme{color:var(--kbq-icon-item-filled-fade-off-theme-color);background:var(--kbq-icon-item-filled-fade-off-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-contrast{color:var(--kbq-icon-item-filled-fade-off-contrast-color);background:var(--kbq-icon-item-filled-fade-off-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-error{color:var(--kbq-icon-item-filled-fade-off-error-color);background:var(--kbq-icon-item-filled-fade-off-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-warning{color:var(--kbq-icon-item-filled-fade-off-warning-color);background:var(--kbq-icon-item-filled-fade-off-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-success{color:var(--kbq-icon-item-filled-fade-off-success-color);background:var(--kbq-icon-item-filled-fade-off-success-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-theme{color:var(--kbq-icon-item-filled-fade-on-theme-color);background:var(--kbq-icon-item-filled-fade-on-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-contrast{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-error{color:var(--kbq-icon-item-filled-fade-on-error-color);background:var(--kbq-icon-item-filled-fade-on-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-warning{color:var(--kbq-icon-item-filled-fade-on-warning-color);background:var(--kbq-icon-item-filled-fade-on-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-success{color:var(--kbq-icon-item-filled-fade-on-success-color);background:var(--kbq-icon-item-filled-fade-on-success-background)}\n", ".kbq-icon-item{--kbq-icon-item-size-normal-horizontal-padding: var(--kbq-size-s);--kbq-icon-item-size-normal-vertical-padding: var(--kbq-size-s);--kbq-icon-item-size-big-horizontal-padding: var(--kbq-size-l);--kbq-icon-item-size-big-vertical-padding: var(--kbq-size-l);--kbq-icon-item-filled-fade-off-theme-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-theme-background: var(--kbq-background-theme);--kbq-icon-item-filled-fade-off-contrast-color: var(--kbq-icon-on-contrast);--kbq-icon-item-filled-fade-off-contrast-background: var(--kbq-background-contrast);--kbq-icon-item-filled-fade-off-error-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-error-background: var(--kbq-background-error);--kbq-icon-item-filled-fade-off-warning-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-off-warning-background: var(--kbq-background-warning);--kbq-icon-item-filled-fade-off-success-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-success-background: var(--kbq-background-success);--kbq-icon-item-filled-fade-on-theme-color: var(--kbq-icon-theme);--kbq-icon-item-filled-fade-on-theme-background: var(--kbq-background-theme-fade);--kbq-icon-item-filled-fade-on-contrast-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-on-contrast-background: var(--kbq-background-contrast-fade);--kbq-icon-item-filled-fade-on-error-color: var(--kbq-icon-error);--kbq-icon-item-filled-fade-on-error-background: var(--kbq-background-error-fade);--kbq-icon-item-filled-fade-on-warning-color: var(--kbq-icon-warning);--kbq-icon-item-filled-fade-on-warning-background: var(--kbq-background-warning-fade);--kbq-icon-item-filled-fade-on-success-color: var(--kbq-icon-success);--kbq-icon-item-filled-fade-on-success-background: var(--kbq-background-success-fade)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
457
484
|
}
|
|
458
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconItem, decorators: [{
|
|
459
486
|
type: Component,
|
|
460
487
|
args: [{ selector: `[kbq-icon-item]`, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
461
488
|
class: 'kbq kbq-icon-item kbq-icon-item_filled',
|
|
@@ -475,15 +502,15 @@ const COMPONENTS = [
|
|
|
475
502
|
KbqIconItem
|
|
476
503
|
];
|
|
477
504
|
class KbqIconModule {
|
|
478
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
479
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
505
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
506
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.30", ngImport: i0, type: KbqIconModule, imports: [KbqIcon,
|
|
480
507
|
KbqIconButton,
|
|
481
508
|
KbqIconItem], exports: [KbqIcon,
|
|
482
509
|
KbqIconButton,
|
|
483
510
|
KbqIconItem] }); }
|
|
484
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
511
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconModule }); }
|
|
485
512
|
}
|
|
486
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqIconModule, decorators: [{
|
|
487
514
|
type: NgModule,
|
|
488
515
|
args: [{
|
|
489
516
|
imports: COMPONENTS,
|
|
@@ -495,5 +522,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
495
522
|
* Generated bundle index. Do not edit.
|
|
496
523
|
*/
|
|
497
524
|
|
|
498
|
-
export { KBQ_ICONS_CONFIG, KBQ_ICON_RESOLVER, KbqIcon, KbqIconButton, KbqIconItem, KbqIconModule, KbqIconRegistry, kbqIconsDictProvider, kbqIconsProvider, kbqIconsResolverProvider };
|
|
525
|
+
export { KBQ_ICONS_CONFIG, KBQ_ICON_ERROR_STATE_CONTEXT, KBQ_ICON_RESOLVER, KbqIcon, KbqIconButton, KbqIconItem, KbqIconModule, KbqIconRegistry, kbqIconErrorStateContextFactoryProvider, kbqIconsDictProvider, kbqIconsProvider, kbqIconsResolverProvider };
|
|
499
526
|
//# sourceMappingURL=koobiq-components-icon.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-icon.mjs","sources":["../../../packages/components/icon/icon-registry-providers.ts","../../../packages/components/icon/icon-registry.ts","../../../packages/components/icon/icon.component.ts","../../../packages/components/icon/icon-button.component.ts","../../../packages/components/icon/icon-item.component.ts","../../../packages/components/icon/icon.module.ts","../../../packages/components/icon/koobiq-components-icon.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport interface KbqIconsConfig {\n /** URL to the SVG sprite file. Must be served as a static asset. */\n spriteUrl: string;\n /** Optional namespace to register the sprite under. */\n namespace?: string;\n}\n\nexport const KBQ_ICONS_CONFIG = new InjectionToken<KbqIconsConfig[]>('KBQ_ICONS_CONFIG');\n\n/**\n * A function that resolves an icon name to either an inline SVG string or a URL string.\n * Return `null` to indicate this resolver does not handle the given name.\n */\nexport type KbqIconResolver = (name: string) => string | null;\n\n/**\n * Multi-valued injection token for icon resolver functions.\n * Resolvers are tried in registration order; the first non-null result wins.\n */\nexport const KBQ_ICON_RESOLVER = new InjectionToken<KbqIconResolver[]>('KBQ_ICON_RESOLVER');\n\n/** Configures the icon registry to load icons from one or more SVG sprite assets. */\nexport function kbqIconsProvider(...sprites: KbqIconsConfig[]): Provider {\n return { provide: KBQ_ICONS_CONFIG, useValue: sprites };\n}\n\n/**\n * Registers a resolver function that maps icon names to SVG strings or URLs.\n * Multiple resolvers can be registered; they are tried in registration order.\n */\nexport function kbqIconsResolverProvider(resolver: KbqIconResolver): Provider {\n return { provide: KBQ_ICON_RESOLVER, useValue: resolver, multi: true };\n}\n\n/**\n * Registers a name→SVG/URL dictionary as an icon resolver.\n * Values starting with `<` are treated as inline SVG (no HTTP request).\n * All other values are treated as URLs and fetched at runtime.\n *\n * @example\n * kbqIconsDictProvider({ 'chevron-down-s_16': '<svg>...</svg>' })\n */\nexport function kbqIconsDictProvider(dict: Record<string, string>): Provider {\n return kbqIconsResolverProvider((name) => dict[name] ?? null);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share } from 'rxjs/operators';\nimport { KBQ_ICON_RESOLVER, KBQ_ICONS_CONFIG } from './icon-registry-providers';\n\nexport interface KbqIconOptions {\n viewBox?: string;\n withCredentials?: boolean;\n}\n\ninterface KbqSvgIconConfig {\n svgText: SafeHtml | null;\n url: SafeResourceUrl | null;\n options: KbqIconOptions | undefined;\n /** Cached parsed element (for literal icons or already-fetched URLs). */\n svgElement: SVGElement | null;\n}\n\nfunction iconKey(namespace: string, name: string): string {\n return namespace ? `${namespace}:${name}` : name;\n}\n\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqIconRegistry {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly httpClient = inject(HttpClient, { optional: true });\n private readonly iconsConfig = inject(KBQ_ICONS_CONFIG, { optional: true });\n private readonly resolvers = inject(KBQ_ICON_RESOLVER, { optional: true }) ?? [];\n\n /** Individual icon configs, keyed by \"namespace:name\". */\n private readonly iconConfigs = new Map<string, KbqSvgIconConfig>();\n\n /** Icon-set configs per namespace. */\n private readonly iconSetConfigs = new Map<string, KbqSvgIconConfig[]>();\n\n /** In-progress URL fetches to dedupe concurrent requests. */\n private readonly inProgressUrlFetches = new Map<string, Observable<string>>();\n\n /** Cached parsed SVG sets, keyed by URL string. */\n private readonly cachedIconSets = new Map<string, SVGElement>();\n\n constructor() {\n this.registerIconSet();\n }\n\n /** Registers an SVG icon by URL in the default namespace. */\n addSvgIcon(name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconInNamespace('', name, url, options);\n }\n\n /** Registers an SVG icon from an inline HTML string in the default namespace. */\n addSvgIconLiteral(name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n this.addSvgIconLiteralInNamespace('', name, literal, options);\n }\n\n /** Registers an SVG icon by URL under the given namespace. */\n addSvgIconInNamespace(namespace: string, name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.cacheIcon(namespace, name, { url, svgText: null, options, svgElement: null });\n }\n\n /** Registers an SVG icon from an inline HTML string under the given namespace. */\n addSvgIconLiteralInNamespace(namespace: string, name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitized) {\n throw Error(`KbqIconRegistry: literal for icon \"${iconKey(namespace, name)}\" sanitized to empty string.`);\n }\n\n this.cacheIcon(namespace, name, {\n url: null,\n svgText: this.sanitizer.bypassSecurityTrustHtml(sanitized),\n options,\n svgElement: null\n });\n }\n\n /** Registers an SVG sprite file in the default namespace. Icons are looked up by their `symbol id`. */\n addSvgIconSet(url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconSetInNamespace('', url, options);\n }\n\n /** Registers an SVG sprite file under the given namespace. Duplicate URLs are silently ignored. */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url) ?? '';\n const sets = this.iconSetConfigs.get(namespace) ?? [];\n const alreadyRegistered = sets.some(\n (set) => this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, set.url!) === urlStr\n );\n\n if (alreadyRegistered) return;\n\n const config: KbqSvgIconConfig = { url, svgText: null, options, svgElement: null };\n\n sets.push(config);\n this.iconSetConfigs.set(namespace, sets);\n }\n\n /**\n * Emits a cloned SVGElement for the given name.\n * Accepts \"namespace:name\" syntax.\n */\n getNamedSvgIcon(name: string, namespace = ''): Observable<SVGElement> {\n let resolvedNs = namespace;\n let resolvedName = name;\n\n if (resolvedName.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, resolvedName) ?? '';\n\n return of(this.svgElementFromText(sanitized));\n }\n\n const colonIndex = name.indexOf(':');\n\n if (colonIndex !== -1) {\n resolvedNs = name.slice(0, colonIndex);\n resolvedName = name.slice(colonIndex + 1);\n }\n\n const key = iconKey(resolvedNs, resolvedName);\n\n const iconConfig = this.iconConfigs.get(key);\n\n if (iconConfig) {\n return this.loadIcon(iconConfig, resolvedName);\n }\n\n for (const resolver of this.resolvers) {\n const result = resolver(resolvedName);\n\n if (result == null) continue;\n\n const config: KbqSvgIconConfig = {\n url: null,\n svgText: null,\n svgElement: null,\n options: undefined\n };\n\n if (result.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, result) ?? '';\n\n config.svgText = this.sanitizer.bypassSecurityTrustHtml(sanitized);\n } else {\n config.url = this.sanitizer.bypassSecurityTrustResourceUrl(result);\n }\n\n this.iconConfigs.set(key, config);\n\n return this.loadIcon(config, resolvedName);\n }\n\n const sets = this.iconSetConfigs.get(resolvedNs);\n\n if (sets?.length) {\n return this.loadIconFromSets(resolvedName, sets);\n }\n\n return throwError(() => Error(`KbqIconRegistry: no icon registered for \"${key}\".`));\n }\n\n private cacheIcon(namespace: string, name: string, config: KbqSvgIconConfig): this {\n this.iconConfigs.set(iconKey(namespace, name), config);\n\n return this;\n }\n\n private loadIcon(config: KbqSvgIconConfig, name: string): Observable<SVGElement> {\n if (config.svgElement) {\n return of(cloneSvg(config.svgElement));\n }\n\n if (config.svgText) {\n const svg = this.svgElementFromText(config.svgText as string, config.options);\n\n config.svgElement = svg;\n\n return of(cloneSvg(svg));\n }\n\n if (config.url) {\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n\n return cloneSvg(svg);\n })\n );\n }\n\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" has neither URL nor literal.`));\n }\n\n private registerIconSet(): void {\n if (!this.iconsConfig) return;\n\n for (const config of this.iconsConfig) {\n const url = this.sanitizer.bypassSecurityTrustResourceUrl(config.spriteUrl);\n\n if (config.namespace) {\n this.addSvgIconSetInNamespace(config.namespace, url);\n } else {\n this.addSvgIconSet(url);\n }\n }\n }\n\n private loadIconFromSets(name: string, sets: KbqSvgIconConfig[]): Observable<SVGElement> {\n const sources = sets\n .slice()\n .reverse()\n .map((set) => this.loadIconSet(set));\n\n const tryNext = (index: number): Observable<SVGElement> => {\n if (index >= sources.length) {\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" not found in any registered icon set.`));\n }\n\n return sources[index].pipe(\n map((setElement) => {\n const icon = this.extractIconFromSet(name, setElement);\n\n if (!icon) {\n throw Error(`KbqIconRegistry: icon \"${name}\" not found in set.`);\n }\n\n return icon;\n }),\n catchError(() => tryNext(index + 1))\n );\n };\n\n return tryNext(0);\n }\n\n private loadIconSet(config: KbqSvgIconConfig): Observable<SVGElement> {\n if (config.svgElement) {\n return of(config.svgElement);\n }\n\n if (!config.url) {\n return throwError(() => Error('KbqIconRegistry: icon set has no URL.'));\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, config.url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: icon set URL failed sanitization.'));\n }\n\n if (this.cachedIconSets.has(urlStr)) {\n config.svgElement = this.cachedIconSets.get(urlStr)!;\n\n return of(config.svgElement);\n }\n\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n this.cachedIconSets.set(urlStr, svg);\n\n return svg;\n })\n );\n }\n\n private extractIconFromSet(name: string, setElement: SVGElement): SVGElement | null {\n const symbol = setElement.querySelector(`#${name}`);\n\n if (!symbol) return null;\n\n const svg = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n const viewBox = symbol.getAttribute('viewBox') || setElement.getAttribute('viewBox') || '0 0 24 24';\n\n svg.setAttribute('viewBox', viewBox);\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n for (const child of Array.from(symbol.childNodes)) {\n svg.appendChild(child.cloneNode(true));\n }\n\n return svg;\n }\n\n private svgElementFromText(text: string, options?: KbqIconOptions): SVGElement {\n const div = this.document.createElement('div');\n\n div.innerHTML = text;\n\n const svg = div.querySelector('svg') as SVGElement | null;\n\n if (!svg) {\n throw Error('KbqIconRegistry: could not find <svg> element in icon markup.');\n }\n\n if (options?.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n return svg;\n }\n\n private fetchUrl(url: SafeResourceUrl, withCredentials = false): Observable<string> {\n if (!this.httpClient) {\n throw Error(\n 'KbqIconRegistry: HttpClient is required for loading icons from URLs. ' +\n 'Provide it via provideHttpClient() or HttpClientModule.'\n );\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: URL failed security sanitization.'));\n }\n\n const inProgress = this.inProgressUrlFetches.get(urlStr);\n\n if (inProgress) return inProgress;\n\n const fetch = this.httpClient.get(urlStr, { responseType: 'text', withCredentials }).pipe(\n share(),\n finalize(() => this.inProgressUrlFetches.delete(urlStr))\n );\n\n this.inProgressUrlFetches.set(urlStr, fetch);\n\n return fetch;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { EMPTY, ReplaySubject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { KbqIconRegistry } from './icon-registry';\n\n@Component({\n selector: '[kbq-icon]',\n template: '<ng-content />',\n styleUrls: ['icon.scss', 'icon-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq kbq-icon',\n '[class]': 'svgIcon ? null : iconName',\n '[class.kbq-error]': 'color === \"error\" || hasError'\n }\n})\nexport class KbqIcon extends KbqColorDirective implements AfterContentInit, OnChanges {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly formField = inject(KBQ_FORM_FIELD_REF, { optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly registry = inject(KbqIconRegistry, { optional: true });\n protected readonly destroyRef = inject(DestroyRef);\n\n readonly small = input(false);\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() autoColor = false;\n\n hasError: boolean = false;\n\n /** Name of an icon within a @koobiq/icons. Accepts \"namespace:name\" syntax. */\n // TODO: Skipped for migration because:\n // Subclass KbqIconButton overrides this input with `@Input({ alias: 'kbq-icon-button' })`\n // using a plain string, which is incompatible with InputSignal<string>.\n // Migrate KbqIconButton.iconName together as a follow-up.\n @Input({ alias: 'kbq-icon' }) iconName: string;\n\n protected name = 'KbqIcon';\n\n /**\n * True when icon is being rendered as inline SVG.\n * @docs-private\n */\n protected svgIcon = false;\n\n /** @docs-private */\n protected readonly svgIconName = new ReplaySubject<string | undefined>(1);\n\n getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n updateMaxHeight() {\n if (this.name !== 'KbqIcon') {\n return;\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n this.getHostElement().style.maxHeight = `${size}px`;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.iconName) {\n this.svgIconName.next(changes['iconName'].currentValue);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.autoColor) {\n this.formField?.control()?.stateChanges.subscribe(this.updateState);\n this.updateState();\n }\n\n this.updateMaxHeight();\n\n this.svgIconName\n .pipe(\n switchMap((name) => {\n if (!this.registry || !name) {\n this.svgIcon = false;\n\n return EMPTY;\n }\n\n return this.registry.getNamedSvgIcon(name);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: (svg) => {\n this.svgIcon = true;\n const host = this.getHostElement();\n\n // Remove any previously injected SVG.\n const existing = host.querySelector('svg');\n\n if (existing) {\n host.removeChild(existing);\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n svg.setAttribute('width', `${size}`);\n svg.setAttribute('height', `${size}`);\n }\n\n host.insertBefore(svg, host.firstChild);\n this.changeDetectorRef.markForCheck();\n },\n error: () => {\n // Icon not registered — fall through to font-class path.\n this.svgIcon = false;\n this.updateMaxHeight();\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private updateState = () => {\n this.hasError = this.formField?.control?.errorState;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private parseIconSize(): number {\n const iconName = this.iconName;\n const baseName = iconName?.includes(':') ? iconName.split(':')[1] : iconName;\n\n return parseInt(baseName?.split('_').pop() ?? '');\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n Input,\n input,\n OnDestroy,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-button]`,\n template: '<ng-content />',\n styleUrls: ['icon-button.scss', 'icon-button-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq kbq-icon-button',\n\n '[attr.tabindex]': 'tabindex',\n '[attr.disabled]': 'disabled || null',\n\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-icon-button_small]': 'small()'\n }\n})\nexport class KbqIconButton extends KbqIcon implements AfterViewInit, OnDestroy {\n protected readonly focusMonitor = inject(FocusMonitor);\n\n readonly small = input(false);\n\n /** Name of an icon within a @koobiq/icons. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ alias: 'kbq-icon-button' }) iconName: string;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabindex() {\n return this.disabled ? null : this._tabindex;\n }\n\n set tabindex(value: any) {\n this._tabindex = value;\n }\n\n private _tabindex = 0;\n\n // @todo 20 In the next major release this feature will be replaced on the input signal.\n /** Whether the button is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this.disabledSignal.set(value);\n }\n\n // @todo 20 In the next major release this line will be deleted.\n private _disabled: boolean;\n\n /** @docs-private */\n readonly disabledSignal = signal(false);\n\n override name = 'KbqIconButton';\n\n constructor() {\n super();\n\n // @todo 20 In the next major release this line will be deleted.\n toObservable(this.disabledSignal).subscribe((value) => (this._disabled = value));\n\n effect(() => (this.disabledSignal() ? this.stopFocusMonitor() : this.runFocusMonitor()));\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n }\n\n private runFocusMonitor() {\n this.focusMonitor.monitor(this.getHostElement(), true);\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.getHostElement());\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, input } from '@angular/core';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-item]`,\n template: '<ng-content />',\n styleUrls: ['icon-item.scss', 'icon-item-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq kbq-icon-item kbq-icon-item_filled',\n '[class.kbq-icon-item_normal]': '!big()',\n '[class.kbq-icon-item_big]': 'big()',\n '[class.kbq-icon-item_fade-off]': '!fade()',\n '[class.kbq-icon-item_fade-on]': 'fade()'\n }\n})\nexport class KbqIconItem extends KbqIcon {\n override name = 'KbqIconItem';\n\n /** Name of an icon within a @koobiq/icons. */\n // Kept as @Input() to stay compatible with KbqIcon.iconName (also @Input()).\n // Migrate together with the rest of the KbqIcon hierarchy in a follow-up.\n @Input({ alias: 'kbq-icon-item' }) override iconName: string;\n\n readonly fade = input<boolean>(false);\n readonly big = input<boolean>(false);\n}\n","import { NgModule } from '@angular/core';\nimport { KbqIconButton } from './icon-button.component';\nimport { KbqIconItem } from './icon-item.component';\nimport { KbqIcon } from './icon.component';\n\nconst COMPONENTS = [\n KbqIcon,\n KbqIconButton,\n KbqIconItem\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqIconModule {}\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-icon.mjs","sources":["../../../packages/components/icon/icon-error-state-context.ts","../../../packages/components/icon/icon-registry-providers.ts","../../../packages/components/icon/icon-registry.ts","../../../packages/components/icon/icon.component.ts","../../../packages/components/icon/icon-button.component.ts","../../../packages/components/icon/icon-item.component.ts","../../../packages/components/icon/icon.module.ts","../../../packages/components/icon/koobiq-components-icon.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport type { Observable } from 'rxjs';\n\n/**\n * Narrow contract that lets `KbqIcon` react to a host's error state (e.g. `autoColor`) without\n * depending on the host's concrete class.\n * @docs-private\n */\nexport interface KbqIconErrorStateContext {\n /** Whether the host is currently in an error state. */\n readonly errorState: boolean;\n /** Emits whenever the host's state changes, prompting `KbqIcon` to re-check `errorState`. */\n readonly stateChanges: Observable<void>;\n}\n\n/**\n * Injection token used by `KbqIcon` to look up its `KbqIconErrorStateContext`.\n * @docs-private\n */\nexport const KBQ_ICON_ERROR_STATE_CONTEXT = new InjectionToken<KbqIconErrorStateContext>('KbqIconErrorStateContext');\n\n/**\n * Utility provider for `KBQ_ICON_ERROR_STATE_CONTEXT`, built from a factory that resolves the current host's `KbqIconErrorStateContext`.\n * @docs-private\n */\nexport const kbqIconErrorStateContextFactoryProvider = (factory: () => KbqIconErrorStateContext): Provider => ({\n provide: KBQ_ICON_ERROR_STATE_CONTEXT,\n useFactory: factory\n});\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport interface KbqIconsConfig {\n /** URL to the SVG sprite file. Must be served as a static asset. */\n spriteUrl: string;\n /** Optional namespace to register the sprite under. */\n namespace?: string;\n}\n\nexport const KBQ_ICONS_CONFIG = new InjectionToken<KbqIconsConfig[]>('KBQ_ICONS_CONFIG');\n\n/**\n * A function that resolves an icon name to either an inline SVG string or a URL string.\n * Return `null` to indicate this resolver does not handle the given name.\n */\nexport type KbqIconResolver = (name: string) => string | null;\n\n/**\n * Multi-valued injection token for icon resolver functions.\n * Resolvers are tried in registration order; the first non-null result wins.\n */\nexport const KBQ_ICON_RESOLVER = new InjectionToken<KbqIconResolver[]>('KBQ_ICON_RESOLVER');\n\n/** Configures the icon registry to load icons from one or more SVG sprite assets. */\nexport function kbqIconsProvider(...sprites: KbqIconsConfig[]): Provider {\n return { provide: KBQ_ICONS_CONFIG, useValue: sprites };\n}\n\n/**\n * Registers a resolver function that maps icon names to SVG strings or URLs.\n * Multiple resolvers can be registered; they are tried in registration order.\n */\nexport function kbqIconsResolverProvider(resolver: KbqIconResolver): Provider {\n return { provide: KBQ_ICON_RESOLVER, useValue: resolver, multi: true };\n}\n\n/**\n * Registers a name→SVG/URL dictionary as an icon resolver.\n * Values starting with `<` are treated as inline SVG (no HTTP request).\n * All other values are treated as URLs and fetched at runtime.\n *\n * @example\n * kbqIconsDictProvider({ 'chevron-down-s_16': '<svg>...</svg>' })\n */\nexport function kbqIconsDictProvider(dict: Record<string, string>): Provider {\n return kbqIconsResolverProvider((name) => dict[name] ?? null);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share } from 'rxjs/operators';\nimport { KBQ_ICON_RESOLVER, KBQ_ICONS_CONFIG } from './icon-registry-providers';\n\nexport interface KbqIconOptions {\n viewBox?: string;\n withCredentials?: boolean;\n}\n\ninterface KbqSvgIconConfig {\n svgText: SafeHtml | null;\n url: SafeResourceUrl | null;\n options: KbqIconOptions | undefined;\n /** Cached parsed element (for literal icons or already-fetched URLs). */\n svgElement: SVGElement | null;\n}\n\nfunction iconKey(namespace: string, name: string): string {\n return namespace ? `${namespace}:${name}` : name;\n}\n\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqIconRegistry {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly httpClient = inject(HttpClient, { optional: true });\n private readonly iconsConfig = inject(KBQ_ICONS_CONFIG, { optional: true });\n private readonly resolvers = inject(KBQ_ICON_RESOLVER, { optional: true }) ?? [];\n\n /** Individual icon configs, keyed by \"namespace:name\". */\n private readonly iconConfigs = new Map<string, KbqSvgIconConfig>();\n\n /** Icon-set configs per namespace. */\n private readonly iconSetConfigs = new Map<string, KbqSvgIconConfig[]>();\n\n /** In-progress URL fetches to dedupe concurrent requests. */\n private readonly inProgressUrlFetches = new Map<string, Observable<string>>();\n\n /** Cached parsed SVG sets, keyed by URL string. */\n private readonly cachedIconSets = new Map<string, SVGElement>();\n\n constructor() {\n this.registerIconSet();\n }\n\n /** Registers an SVG icon by URL in the default namespace. */\n addSvgIcon(name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconInNamespace('', name, url, options);\n }\n\n /** Registers an SVG icon from an inline HTML string in the default namespace. */\n addSvgIconLiteral(name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n this.addSvgIconLiteralInNamespace('', name, literal, options);\n }\n\n /** Registers an SVG icon by URL under the given namespace. */\n addSvgIconInNamespace(namespace: string, name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.cacheIcon(namespace, name, { url, svgText: null, options, svgElement: null });\n }\n\n /** Registers an SVG icon from an inline HTML string under the given namespace. */\n addSvgIconLiteralInNamespace(namespace: string, name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitized) {\n throw Error(`KbqIconRegistry: literal for icon \"${iconKey(namespace, name)}\" sanitized to empty string.`);\n }\n\n this.cacheIcon(namespace, name, {\n url: null,\n svgText: this.sanitizer.bypassSecurityTrustHtml(sanitized),\n options,\n svgElement: null\n });\n }\n\n /** Registers an SVG sprite file in the default namespace. Icons are looked up by their `symbol id`. */\n addSvgIconSet(url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconSetInNamespace('', url, options);\n }\n\n /** Registers an SVG sprite file under the given namespace. Duplicate URLs are silently ignored. */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url) ?? '';\n const sets = this.iconSetConfigs.get(namespace) ?? [];\n const alreadyRegistered = sets.some(\n (set) => this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, set.url!) === urlStr\n );\n\n if (alreadyRegistered) return;\n\n const config: KbqSvgIconConfig = { url, svgText: null, options, svgElement: null };\n\n sets.push(config);\n this.iconSetConfigs.set(namespace, sets);\n }\n\n /**\n * Emits a cloned SVGElement for the given name.\n * Accepts \"namespace:name\" syntax.\n */\n getNamedSvgIcon(name: string, namespace = ''): Observable<SVGElement> {\n let resolvedNs = namespace;\n let resolvedName = name;\n\n if (resolvedName.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, resolvedName) ?? '';\n\n return of(this.svgElementFromText(sanitized));\n }\n\n const colonIndex = name.indexOf(':');\n\n if (colonIndex !== -1) {\n resolvedNs = name.slice(0, colonIndex);\n resolvedName = name.slice(colonIndex + 1);\n }\n\n const key = iconKey(resolvedNs, resolvedName);\n\n const iconConfig = this.iconConfigs.get(key);\n\n if (iconConfig) {\n return this.loadIcon(iconConfig, resolvedName);\n }\n\n for (const resolver of this.resolvers) {\n const result = resolver(resolvedName);\n\n if (result == null) continue;\n\n const config: KbqSvgIconConfig = {\n url: null,\n svgText: null,\n svgElement: null,\n options: undefined\n };\n\n if (result.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, result) ?? '';\n\n config.svgText = this.sanitizer.bypassSecurityTrustHtml(sanitized);\n } else {\n config.url = this.sanitizer.bypassSecurityTrustResourceUrl(result);\n }\n\n this.iconConfigs.set(key, config);\n\n return this.loadIcon(config, resolvedName);\n }\n\n const sets = this.iconSetConfigs.get(resolvedNs);\n\n if (sets?.length) {\n return this.loadIconFromSets(resolvedName, sets);\n }\n\n return throwError(() => Error(`KbqIconRegistry: no icon registered for \"${key}\".`));\n }\n\n private cacheIcon(namespace: string, name: string, config: KbqSvgIconConfig): this {\n this.iconConfigs.set(iconKey(namespace, name), config);\n\n return this;\n }\n\n private loadIcon(config: KbqSvgIconConfig, name: string): Observable<SVGElement> {\n if (config.svgElement) {\n return of(cloneSvg(config.svgElement));\n }\n\n if (config.svgText) {\n const svg = this.svgElementFromText(config.svgText as string, config.options);\n\n config.svgElement = svg;\n\n return of(cloneSvg(svg));\n }\n\n if (config.url) {\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n\n return cloneSvg(svg);\n })\n );\n }\n\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" has neither URL nor literal.`));\n }\n\n private registerIconSet(): void {\n if (!this.iconsConfig) return;\n\n for (const config of this.iconsConfig) {\n const url = this.sanitizer.bypassSecurityTrustResourceUrl(config.spriteUrl);\n\n if (config.namespace) {\n this.addSvgIconSetInNamespace(config.namespace, url);\n } else {\n this.addSvgIconSet(url);\n }\n }\n }\n\n private loadIconFromSets(name: string, sets: KbqSvgIconConfig[]): Observable<SVGElement> {\n const sources = sets\n .slice()\n .reverse()\n .map((set) => this.loadIconSet(set));\n\n const tryNext = (index: number): Observable<SVGElement> => {\n if (index >= sources.length) {\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" not found in any registered icon set.`));\n }\n\n return sources[index].pipe(\n map((setElement) => {\n const icon = this.extractIconFromSet(name, setElement);\n\n if (!icon) {\n throw Error(`KbqIconRegistry: icon \"${name}\" not found in set.`);\n }\n\n return icon;\n }),\n catchError(() => tryNext(index + 1))\n );\n };\n\n return tryNext(0);\n }\n\n private loadIconSet(config: KbqSvgIconConfig): Observable<SVGElement> {\n if (config.svgElement) {\n return of(config.svgElement);\n }\n\n if (!config.url) {\n return throwError(() => Error('KbqIconRegistry: icon set has no URL.'));\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, config.url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: icon set URL failed sanitization.'));\n }\n\n if (this.cachedIconSets.has(urlStr)) {\n config.svgElement = this.cachedIconSets.get(urlStr)!;\n\n return of(config.svgElement);\n }\n\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n this.cachedIconSets.set(urlStr, svg);\n\n return svg;\n })\n );\n }\n\n private extractIconFromSet(name: string, setElement: SVGElement): SVGElement | null {\n const symbol = setElement.querySelector(`#${name}`);\n\n if (!symbol) return null;\n\n const svg = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n const viewBox = symbol.getAttribute('viewBox') || setElement.getAttribute('viewBox') || '0 0 24 24';\n\n svg.setAttribute('viewBox', viewBox);\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n for (const child of Array.from(symbol.childNodes)) {\n svg.appendChild(child.cloneNode(true));\n }\n\n return svg;\n }\n\n private svgElementFromText(text: string, options?: KbqIconOptions): SVGElement {\n const div = this.document.createElement('div');\n\n div.innerHTML = text;\n\n const svg = div.querySelector('svg') as SVGElement | null;\n\n if (!svg) {\n throw Error('KbqIconRegistry: could not find <svg> element in icon markup.');\n }\n\n if (options?.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n return svg;\n }\n\n private fetchUrl(url: SafeResourceUrl, withCredentials = false): Observable<string> {\n if (!this.httpClient) {\n throw Error(\n 'KbqIconRegistry: HttpClient is required for loading icons from URLs. ' +\n 'Provide it via provideHttpClient() or HttpClientModule.'\n );\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: URL failed security sanitization.'));\n }\n\n const inProgress = this.inProgressUrlFetches.get(urlStr);\n\n if (inProgress) return inProgress;\n\n const fetch = this.httpClient.get(urlStr, { responseType: 'text', withCredentials }).pipe(\n share(),\n finalize(() => this.inProgressUrlFetches.delete(urlStr))\n );\n\n this.inProgressUrlFetches.set(urlStr, fetch);\n\n return fetch;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqColorDirective } from '@koobiq/components/core';\nimport { EMPTY, ReplaySubject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { KBQ_ICON_ERROR_STATE_CONTEXT } from './icon-error-state-context';\nimport { KbqIconRegistry } from './icon-registry';\n\n@Component({\n selector: '[kbq-icon]',\n template: '<ng-content />',\n styleUrls: ['icon.scss', 'icon-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq kbq-icon',\n '[class]': 'svgIcon ? null : iconName',\n '[class.kbq-error]': 'color === \"error\" || hasError'\n }\n})\nexport class KbqIcon extends KbqColorDirective implements AfterContentInit, OnChanges {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Host providing error state for `autoColor`, when the icon sits inside one (e.g. a form field).\n * @docs-private\n */\n protected readonly errorStateContext = inject(KBQ_ICON_ERROR_STATE_CONTEXT, { optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly registry = inject(KbqIconRegistry, { optional: true });\n protected readonly destroyRef = inject(DestroyRef);\n\n readonly small = input(false);\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() autoColor = false;\n\n hasError: boolean = false;\n\n /** Name of an icon within a @koobiq/icons. Accepts \"namespace:name\" syntax. */\n // TODO: Skipped for migration because:\n // Subclass KbqIconButton overrides this input with `@Input({ alias: 'kbq-icon-button' })`\n // using a plain string, which is incompatible with InputSignal<string>.\n // Migrate KbqIconButton.iconName together as a follow-up.\n @Input({ alias: 'kbq-icon' }) iconName: string;\n\n protected name = 'KbqIcon';\n\n /**\n * True when icon is being rendered as inline SVG.\n * @docs-private\n */\n protected svgIcon = false;\n\n /** @docs-private */\n protected readonly svgIconName = new ReplaySubject<string | undefined>(1);\n\n getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n updateMaxHeight() {\n if (this.name !== 'KbqIcon') {\n return;\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n this.getHostElement().style.maxHeight = `${size}px`;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.iconName) {\n this.svgIconName.next(changes['iconName'].currentValue);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.autoColor) {\n this.errorStateContext?.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateState);\n this.updateState();\n }\n\n this.updateMaxHeight();\n\n this.svgIconName\n .pipe(\n switchMap((name) => {\n if (!this.registry || !name) {\n this.svgIcon = false;\n\n return EMPTY;\n }\n\n return this.registry.getNamedSvgIcon(name);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: (svg) => {\n this.svgIcon = true;\n const host = this.getHostElement();\n\n // Remove any previously injected SVG.\n const existing = host.querySelector('svg');\n\n if (existing) {\n host.removeChild(existing);\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n svg.setAttribute('width', `${size}`);\n svg.setAttribute('height', `${size}`);\n }\n\n host.insertBefore(svg, host.firstChild);\n this.changeDetectorRef.markForCheck();\n },\n error: () => {\n // Icon not registered — fall through to font-class path.\n this.svgIcon = false;\n this.updateMaxHeight();\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private updateState = () => {\n this.hasError = !!this.errorStateContext?.errorState;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private parseIconSize(): number {\n const iconName = this.iconName;\n const baseName = iconName?.includes(':') ? iconName.split(':')[1] : iconName;\n\n return parseInt(baseName?.split('_').pop() ?? '');\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Input,\n input,\n OnDestroy,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { KbqIcon } from './icon.component';\n\n/**\n * Size options for `KbqIconButton`.\n * - `compact`: 16px icon with padding, 24×24px container.\n * - `normal`: 24px icon, no padding.\n */\nexport type KbqIconButtonSize = 'compact' | 'normal';\n\n@Component({\n selector: `[kbq-icon-button]`,\n template: '<ng-content />',\n styleUrls: ['icon-button.scss', 'icon-button-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq kbq-icon-button',\n\n '[attr.tabindex]': 'tabindex',\n '[attr.disabled]': 'disabled || null',\n\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-icon-button_compact]': 'isCompact()',\n // @deprcated Will be removed in the next major release (#DS-5338)\n '[class.kbq-icon-button_small]': 'isCompact()'\n }\n})\nexport class KbqIconButton extends KbqIcon implements AfterViewInit, OnDestroy {\n protected readonly focusMonitor = inject(FocusMonitor);\n /** Size of the icon button. */\n readonly size = input<KbqIconButtonSize>('normal');\n /**\n * @deprecated Use `size` input instead. Will be removed in the next major release (#DS-5338).\n */\n readonly small = input(false);\n\n /** @docs-private */\n protected readonly isCompact = computed(() => this.size() === 'compact' || this.small());\n\n /** Name of an icon within a @koobiq/icons. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ alias: 'kbq-icon-button' }) iconName: string;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabindex() {\n return this.disabled ? null : this._tabindex;\n }\n\n set tabindex(value: any) {\n this._tabindex = value;\n }\n\n private _tabindex = 0;\n\n // @todo 20 In the next major release this feature will be replaced on the input signal.\n /** Whether the button is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this.disabledSignal.set(value);\n }\n\n // @todo 20 In the next major release this line will be deleted.\n private _disabled: boolean;\n\n /** @docs-private */\n readonly disabledSignal = signal(false);\n\n override name = 'KbqIconButton';\n\n constructor() {\n super();\n\n // @todo 20 In the next major release this line will be deleted.\n toObservable(this.disabledSignal).subscribe((value) => (this._disabled = value));\n\n effect(() => (this.disabledSignal() ? this.stopFocusMonitor() : this.runFocusMonitor()));\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n }\n\n private runFocusMonitor() {\n this.focusMonitor.monitor(this.getHostElement(), true);\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.getHostElement());\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, input } from '@angular/core';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-item]`,\n template: '<ng-content />',\n styleUrls: ['icon-item.scss', 'icon-item-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq kbq-icon-item kbq-icon-item_filled',\n '[class.kbq-icon-item_normal]': '!big()',\n '[class.kbq-icon-item_big]': 'big()',\n '[class.kbq-icon-item_fade-off]': '!fade()',\n '[class.kbq-icon-item_fade-on]': 'fade()'\n }\n})\nexport class KbqIconItem extends KbqIcon {\n override name = 'KbqIconItem';\n\n /** Name of an icon within a @koobiq/icons. */\n // Kept as @Input() to stay compatible with KbqIcon.iconName (also @Input()).\n // Migrate together with the rest of the KbqIcon hierarchy in a follow-up.\n @Input({ alias: 'kbq-icon-item' }) override iconName: string;\n\n readonly fade = input<boolean>(false);\n readonly big = input<boolean>(false);\n}\n","import { NgModule } from '@angular/core';\nimport { KbqIconButton } from './icon-button.component';\nimport { KbqIconItem } from './icon-item.component';\nimport { KbqIcon } from './icon.component';\n\nconst COMPONENTS = [\n KbqIcon,\n KbqIconButton,\n KbqIconItem\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|