@koobiq/components 21.0.1 → 21.1.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/badge/_badge-theme.scss +31 -0
- package/breadcrumbs/breadcrumbs.scss +5 -1
- package/checkbox/_checkbox-theme.scss +0 -17
- package/checkbox/checkbox-tokens.scss +0 -4
- package/code-block/_code-block-theme.scss +7 -6
- package/code-block/code-block-tokens.scss +8 -4
- package/code-block/code-block.scss +54 -32
- package/content-panel/content-panel-header.scss +2 -3
- package/content-panel/content-panel.scss +3 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -8
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +63 -379
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +4 -4
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +300 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +151 -60
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +3 -3
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +3 -3
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +17 -8
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +115 -36
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +3 -3
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +90 -27
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +76 -17
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +1 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +3 -3
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +86 -25
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +4 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +86 -7
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +41 -19
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +49 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +49 -25
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +30 -11
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +28 -11
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +2 -2
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +71 -16
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +2 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +25 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +90 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +27 -7
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +4 -4
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +71 -27
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +0 -12
- package/file-upload/file-upload-tokens.scss +0 -1
- package/file-upload/file-upload.scss +0 -1
- package/filter-bar/_filter-bar-theme.scss +7 -8
- package/filter-bar/filter-bar.scss +0 -1
- package/filter-bar/pipes/base-pipe.scss +36 -2
- package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
- package/form-field/_fieldset-theme.scss +2 -7
- package/form-field/_form-field-theme.scss +9 -22
- package/form-field/_hint-theme.scss +20 -0
- package/form-field/fieldset-tokens.scss +0 -1
- package/form-field/fieldset.scss +0 -3
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.scss +9 -0
- package/form-field/hint-tokens.scss +3 -0
- package/modal/modal.scss +2 -0
- package/navbar/_navbar-item_vertical.scss +48 -2
- package/navbar/_navbar-theme.scss +11 -3
- package/navbar/navbar-item.scss +17 -0
- package/navbar/navbar-tokens.scss +3 -0
- package/package.json +4 -4
- package/popover/popover.scss +1 -1
- package/radio/_radio-theme.scss +0 -30
- package/radio/radio-tokens.scss +0 -2
- package/schematics/migrations/deprecated-icons/README.md +21 -5
- package/schematics/migrations/deprecated-icons/index.cjs +8 -22
- package/schematics/migrations/deprecated-icons/schema.json +1 -1
- package/schematics/migrations/icons-replacement/README.md +16 -2
- package/schematics/migrations/icons-replacement/index.cjs +18 -16
- package/schematics/migrations/icons-replacement/schema.json +12 -3
- package/schematics/migrations/new-icons-pack/README.md +37 -25
- package/schematics/migrations/new-icons-pack/index.cjs +22 -32
- package/schematics/migrations/new-icons-pack/replacement.json +2 -14
- package/schematics/migrations/new-icons-pack/schema.json +3 -3
- package/schematics/ng-add/index.cjs +4 -4
- package/schematics/utils/custom-data.cjs +64 -0
- package/schematics/utils/icon-migration.cjs +9 -3
- package/schematics/utils/messages.cjs +4 -0
- package/schematics/utils/package-config.cjs +19 -0
- package/select/select.scss +7 -0
- package/tabs/_tabs-common.scss +23 -0
- package/textarea/textarea-tokens.scss +4 -1
- package/toast/toast.component.scss +1 -0
- package/toggle/_toggle-theme.scss +0 -17
- package/tooltip/tooltip.scss +1 -1
- package/top-bar/top-bar-tokens.scss +1 -0
- package/top-bar/top-bar.scss +10 -0
- package/types/koobiq-components-accordion.d.ts +25 -0
- package/types/koobiq-components-button-toggle.d.ts +6 -0
- package/types/koobiq-components-checkbox.d.ts +30 -0
- package/types/koobiq-components-clamped-text.d.ts +16 -3
- package/types/koobiq-components-code-block.d.ts +17 -3
- package/types/koobiq-components-core.d.ts +226 -13
- package/types/koobiq-components-datepicker.d.ts +28 -1
- package/types/koobiq-components-divider.d.ts +28 -10
- package/types/koobiq-components-dropdown.d.ts +19 -0
- package/types/koobiq-components-filter-bar.d.ts +77 -4
- package/types/koobiq-components-flag.d.ts +18 -0
- package/types/koobiq-components-form-field.d.ts +87 -6
- package/types/koobiq-components-icon.d.ts +15 -0
- package/types/koobiq-components-inline-edit.d.ts +8 -1
- package/types/koobiq-components-input.d.ts +22 -3
- package/types/koobiq-components-list.d.ts +6 -0
- package/types/koobiq-components-modal.d.ts +7 -0
- package/types/koobiq-components-navbar.d.ts +71 -7
- package/types/koobiq-components-notification-center.d.ts +13 -0
- package/types/koobiq-components-overflow-items.d.ts +26 -2
- package/types/koobiq-components-popover.d.ts +38 -3
- package/types/koobiq-components-radio.d.ts +30 -0
- package/types/koobiq-components-search-expandable.d.ts +10 -0
- package/types/koobiq-components-select.d.ts +36 -4
- package/types/koobiq-components-sidepanel.d.ts +52 -1
- package/types/koobiq-components-splitter.d.ts +13 -4
- package/types/koobiq-components-tabs.d.ts +4 -0
- package/types/koobiq-components-tags.d.ts +6 -0
- package/types/koobiq-components-textarea.d.ts +9 -2
- package/types/koobiq-components-timepicker.d.ts +15 -0
- package/types/koobiq-components-toggle.d.ts +30 -0
- package/types/koobiq-components-tooltip.d.ts +55 -10
- package/types/koobiq-components-top-bar.d.ts +11 -3
- package/types/koobiq-components-tree-select.d.ts +12 -0
- package/types/koobiq-components-tree.d.ts +37 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, ElementRef, ChangeDetectorRef, Injector, signal, viewChild, computed, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, untracked,
|
|
2
|
+
import { InjectionToken, inject, ElementRef, ChangeDetectorRef, Injector, signal, viewChild, computed, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, untracked, isDevMode, TemplateRef, Injectable, Renderer2, input, Directive, booleanAttribute, effect, NgModule } from '@angular/core';
|
|
3
3
|
import { CdkTrapFocus, ConfigurableFocusTrapFactory, FocusTrapFactory, A11yModule } from '@angular/cdk/a11y';
|
|
4
4
|
import { BasePortalOutlet, CdkPortalOutlet, TemplatePortal, ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
5
5
|
import * as i1 from '@koobiq/components/core';
|
|
6
|
-
import { kbqAnimationsDisabled, kbqAfterAnimations, ESCAPE, isHtmlElement,
|
|
6
|
+
import { kbqAnimationsDisabled, kbqAfterAnimations, ESCAPE, isHtmlElement, KBQ_STATE_STORE, KbqStateSavingService, KbqLocaleOverridesDirective, KBQ_A11Y_LOCALE_CONFIGURATION, KbqOverflowShadowContainer } from '@koobiq/components/core';
|
|
7
7
|
import { Subject, merge } from 'rxjs';
|
|
8
8
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
9
|
import * as i2 from '@koobiq/components/button';
|
|
@@ -46,7 +46,7 @@ class KbqSidepanelConfig {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
/** @
|
|
49
|
+
/** @docs-private */
|
|
50
50
|
var KbqSidepanelAnimationState;
|
|
51
51
|
(function (KbqSidepanelAnimationState) {
|
|
52
52
|
KbqSidepanelAnimationState["Void"] = "void";
|
|
@@ -106,13 +106,13 @@ class KbqSidepanelContainerComponent extends BasePortalOutlet {
|
|
|
106
106
|
/**
|
|
107
107
|
* The state of the sidepanel: on screen, closing, or stacked under another one.
|
|
108
108
|
*
|
|
109
|
-
* @
|
|
109
|
+
* @docs-private
|
|
110
110
|
*/
|
|
111
111
|
this.animationState = signal(KbqSidepanelAnimationState.Void, ...(ngDevMode ? [{ debugName: "animationState" }] : /* istanbul ignore next */ []));
|
|
112
112
|
/**
|
|
113
113
|
* Reports each state transition starting and ending.
|
|
114
114
|
*
|
|
115
|
-
* @
|
|
115
|
+
* @docs-private
|
|
116
116
|
*/
|
|
117
117
|
this.animationStateChanged = new Subject();
|
|
118
118
|
/** Transition events held until the render that applies the state, in the order they happened. */
|
|
@@ -122,7 +122,7 @@ class KbqSidepanelContainerComponent extends BasePortalOutlet {
|
|
|
122
122
|
/**
|
|
123
123
|
* Transform of the panel in its current state.
|
|
124
124
|
*
|
|
125
|
-
* @
|
|
125
|
+
* @docs-private
|
|
126
126
|
*/
|
|
127
127
|
this.stateTransform = computed(() => {
|
|
128
128
|
const transforms = kbqSidepanelTransformAnimation[this.position];
|
|
@@ -144,7 +144,7 @@ class KbqSidepanelContainerComponent extends BasePortalOutlet {
|
|
|
144
144
|
/**
|
|
145
145
|
* Opacity of the panel in its current state.
|
|
146
146
|
*
|
|
147
|
-
* @
|
|
147
|
+
* @docs-private
|
|
148
148
|
*/
|
|
149
149
|
this.stateOpacity = computed(() => {
|
|
150
150
|
switch (this.animationState()) {
|
|
@@ -236,7 +236,7 @@ class KbqSidepanelContainerComponent extends BasePortalOutlet {
|
|
|
236
236
|
return;
|
|
237
237
|
this.setAnimationState(KbqSidepanelAnimationState.Hidden);
|
|
238
238
|
}
|
|
239
|
-
/** @
|
|
239
|
+
/** @docs-private */
|
|
240
240
|
setAnimationState(state) {
|
|
241
241
|
if (this.destroyed)
|
|
242
242
|
return;
|
|
@@ -447,184 +447,6 @@ class KbqSidepanelRef {
|
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
-
/**
|
|
451
|
-
* Button that will close the current sidepanel.
|
|
452
|
-
*/
|
|
453
|
-
class KbqSidepanelClose {
|
|
454
|
-
constructor() {
|
|
455
|
-
// `CdkPortalOutlet.attachTemplatePortal()` forwards the portal injector to the embedded view, so the
|
|
456
|
-
// ref is reachable from a `<ng-template>` sidepanel as well as from a component one.
|
|
457
|
-
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
458
|
-
this.elementRef = inject(ElementRef);
|
|
459
|
-
this.renderer = inject(Renderer2);
|
|
460
|
-
/** Value handed to `KbqSidepanelRef.close()`, under the hyphenated spelling of the selector. */
|
|
461
|
-
this.sidepanelResult = input(undefined, { ...(ngDevMode ? { debugName: "sidepanelResult" } : /* istanbul ignore next */ {}), alias: 'kbq-sidepanel-close' });
|
|
462
|
-
/** The same value, under the camel-case spelling. */
|
|
463
|
-
this.kbqSidepanelClose = input(...(ngDevMode ? [undefined, { debugName: "kbqSidepanelClose" }] : /* istanbul ignore next */ []));
|
|
464
|
-
afterNextRender(() => {
|
|
465
|
-
// A button with no type submits the form it sits in, so closing a sidepanel from inside a form would
|
|
466
|
-
// submit it too. A type the author set is left alone. The element carries its static attributes by
|
|
467
|
-
// the time a directive is constructed, so this needs no lifecycle hook.
|
|
468
|
-
if (!this.elementRef.nativeElement.hasAttribute('type')) {
|
|
469
|
-
this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');
|
|
470
|
-
}
|
|
471
|
-
});
|
|
472
|
-
}
|
|
473
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
474
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqSidepanelClose, isStandalone: true, selector: "button[kbq-sidepanel-close], button[kbqSidepanelClose]", inputs: { sidepanelResult: { classPropertyName: "sidepanelResult", publicName: "kbq-sidepanel-close", isSignal: true, isRequired: false, transformFunction: null }, kbqSidepanelClose: { classPropertyName: "kbqSidepanelClose", publicName: "kbqSidepanelClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "sidepanelRef.close(kbqSidepanelClose() ?? sidepanelResult())" }, classAttribute: "kbq-sidepanel-close" }, ngImport: i0 }); }
|
|
475
|
-
}
|
|
476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelClose, decorators: [{
|
|
477
|
-
type: Directive,
|
|
478
|
-
args: [{
|
|
479
|
-
selector: 'button[kbq-sidepanel-close], button[kbqSidepanelClose]',
|
|
480
|
-
host: {
|
|
481
|
-
class: 'kbq-sidepanel-close',
|
|
482
|
-
// The camel-case spelling wins when a template binds both, as it did before.
|
|
483
|
-
'(click)': 'sidepanelRef.close(kbqSidepanelClose() ?? sidepanelResult())'
|
|
484
|
-
}
|
|
485
|
-
}]
|
|
486
|
-
}], ctorParameters: () => [], propDecorators: { sidepanelResult: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbq-sidepanel-close", required: false }] }], kbqSidepanelClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqSidepanelClose", required: false }] }] } });
|
|
487
|
-
/**
|
|
488
|
-
* Header of a sidepanel.
|
|
489
|
-
*/
|
|
490
|
-
class KbqSidepanelHeader {
|
|
491
|
-
constructor() {
|
|
492
|
-
/** Accessible name for the icon-only close button. */
|
|
493
|
-
this.a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read('a11y', KBQ_A11Y_LOCALE_CONFIGURATION);
|
|
494
|
-
/** Add button for close sidepanel. Default false */
|
|
495
|
-
this.closeable = input(false, { ...(ngDevMode ? { debugName: "closeable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
496
|
-
/** Enables text truncation. Default true */
|
|
497
|
-
this.truncateText = input(true, { ...(ngDevMode ? { debugName: "truncateText" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
498
|
-
/** @docs-private */
|
|
499
|
-
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
500
|
-
/** Id of the title element, which is what names the sidepanel to assistive technology. */
|
|
501
|
-
this.titleId = `${this.sidepanelRef.id}-title`;
|
|
502
|
-
this.sidepanelRef.containerInstance.setAriaLabelledBy(this.titleId);
|
|
503
|
-
}
|
|
504
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
505
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqSidepanelHeader, isStandalone: true, selector: "kbq-sidepanel-header", inputs: { closeable: { classPropertyName: "closeable", publicName: "closeable", isSignal: true, isRequired: false, transformFunction: null }, truncateText: { classPropertyName: "truncateText", publicName: "truncateText", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-sidepanel-header_truncate-text": "truncateText()", "style.box-shadow": "sidepanelRef.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null" }, classAttribute: "kbq-sidepanel-header" }, hostDirectives: [{ directive: i1.KbqLocaleOverridesDirective, inputs: ["kbqLocaleOverrides", "localeOverrides"] }], ngImport: i0, template: `
|
|
506
|
-
<div class="kbq-sidepanel-title" kbq-title [attr.id]="titleId">
|
|
507
|
-
<ng-content />
|
|
508
|
-
</div>
|
|
509
|
-
|
|
510
|
-
@if (closeable()) {
|
|
511
|
-
<button
|
|
512
|
-
kbq-button
|
|
513
|
-
kbq-sidepanel-close
|
|
514
|
-
type="button"
|
|
515
|
-
[attr.aria-label]="a11yLocaleConfiguration().close"
|
|
516
|
-
[color]="'contrast'"
|
|
517
|
-
[kbqStyle]="'transparent'"
|
|
518
|
-
>
|
|
519
|
-
<i kbq-icon="kbq-xmark_16" [color]="'contrast'"></i>
|
|
520
|
-
</button>
|
|
521
|
-
}
|
|
522
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: KbqSidepanelClose, selector: "button[kbq-sidepanel-close], button[kbqSidepanelClose]", inputs: ["kbq-sidepanel-close", "kbqSidepanelClose"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["aria-hidden", "iconSize", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqTitleDirective, selector: "[kbq-title]", inputs: ["kbq-title", "ignoreTooltipPointerEvents"], exportAs: ["kbqTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
523
|
-
}
|
|
524
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelHeader, decorators: [{
|
|
525
|
-
type: Component,
|
|
526
|
-
args: [{
|
|
527
|
-
selector: 'kbq-sidepanel-header',
|
|
528
|
-
imports: [
|
|
529
|
-
KbqButtonModule,
|
|
530
|
-
KbqSidepanelClose,
|
|
531
|
-
KbqIconModule,
|
|
532
|
-
KbqTitleDirective
|
|
533
|
-
],
|
|
534
|
-
template: `
|
|
535
|
-
<div class="kbq-sidepanel-title" kbq-title [attr.id]="titleId">
|
|
536
|
-
<ng-content />
|
|
537
|
-
</div>
|
|
538
|
-
|
|
539
|
-
@if (closeable()) {
|
|
540
|
-
<button
|
|
541
|
-
kbq-button
|
|
542
|
-
kbq-sidepanel-close
|
|
543
|
-
type="button"
|
|
544
|
-
[attr.aria-label]="a11yLocaleConfiguration().close"
|
|
545
|
-
[color]="'contrast'"
|
|
546
|
-
[kbqStyle]="'transparent'"
|
|
547
|
-
>
|
|
548
|
-
<i kbq-icon="kbq-xmark_16" [color]="'contrast'"></i>
|
|
549
|
-
</button>
|
|
550
|
-
}
|
|
551
|
-
`,
|
|
552
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
553
|
-
host: {
|
|
554
|
-
class: 'kbq-sidepanel-header',
|
|
555
|
-
'[class.kbq-sidepanel-header_truncate-text]': 'truncateText()',
|
|
556
|
-
'[style.box-shadow]': 'sidepanelRef.bodyOverflow().top ? "var(--kbq-shadow-overflow-normal-bottom)" : null'
|
|
557
|
-
},
|
|
558
|
-
hostDirectives: [
|
|
559
|
-
{ directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }
|
|
560
|
-
]
|
|
561
|
-
}]
|
|
562
|
-
}], ctorParameters: () => [], propDecorators: { closeable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeable", required: false }] }], truncateText: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncateText", required: false }] }] } });
|
|
563
|
-
/**
|
|
564
|
-
* Scrollable content container of a sidepanel.
|
|
565
|
-
*/
|
|
566
|
-
class KbqSidepanelBody {
|
|
567
|
-
constructor() {
|
|
568
|
-
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
569
|
-
this.overflowContainer = inject(KbqOverflowShadowContainer);
|
|
570
|
-
this.scrollbarViewport = inject(KbqScrollbarViewport);
|
|
571
|
-
effect(() => this.sidepanelRef.bodyOverflow.set(this.overflowContainer.overflow()));
|
|
572
|
-
this.sidepanelRef
|
|
573
|
-
.afterOpened()
|
|
574
|
-
.pipe(takeUntilDestroyed())
|
|
575
|
-
.subscribe(() => this.scrollbarViewport.flashScrollIndicators());
|
|
576
|
-
}
|
|
577
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelBody, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
578
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqSidepanelBody, isStandalone: true, selector: "kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody", host: { classAttribute: "kbq-sidepanel-body" }, hostDirectives: [{ directive: i1.KbqOverflowShadowContainer }, { directive: i4.KbqScrollbarViewport }], ngImport: i0 }); }
|
|
579
|
-
}
|
|
580
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelBody, decorators: [{
|
|
581
|
-
type: Directive,
|
|
582
|
-
args: [{
|
|
583
|
-
selector: 'kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody',
|
|
584
|
-
host: {
|
|
585
|
-
class: 'kbq-sidepanel-body'
|
|
586
|
-
},
|
|
587
|
-
hostDirectives: [KbqOverflowShadowContainer, KbqScrollbarViewport]
|
|
588
|
-
}]
|
|
589
|
-
}], ctorParameters: () => [] });
|
|
590
|
-
/**
|
|
591
|
-
* Footer of a sidepanel.
|
|
592
|
-
*/
|
|
593
|
-
class KbqSidepanelFooter {
|
|
594
|
-
constructor() {
|
|
595
|
-
/** @docs-private */
|
|
596
|
-
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
597
|
-
}
|
|
598
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
599
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqSidepanelFooter, isStandalone: true, selector: "kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter", host: { properties: { "style.box-shadow": "sidepanelRef.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null" }, classAttribute: "kbq-sidepanel-footer" }, ngImport: i0 }); }
|
|
600
|
-
}
|
|
601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelFooter, decorators: [{
|
|
602
|
-
type: Directive,
|
|
603
|
-
args: [{
|
|
604
|
-
selector: 'kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter',
|
|
605
|
-
host: {
|
|
606
|
-
class: 'kbq-sidepanel-footer',
|
|
607
|
-
'[style.box-shadow]': 'sidepanelRef.bodyOverflow().bottom ? "var(--kbq-shadow-overflow-normal-top)" : null'
|
|
608
|
-
}
|
|
609
|
-
}]
|
|
610
|
-
}] });
|
|
611
|
-
/**
|
|
612
|
-
* Actions block of a sidepanel footer.
|
|
613
|
-
*/
|
|
614
|
-
class KbqSidepanelActions {
|
|
615
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
616
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqSidepanelActions, isStandalone: true, selector: "kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions", host: { classAttribute: "kbq-sidepanel-actions" }, ngImport: i0 }); }
|
|
617
|
-
}
|
|
618
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelActions, decorators: [{
|
|
619
|
-
type: Directive,
|
|
620
|
-
args: [{
|
|
621
|
-
selector: 'kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions',
|
|
622
|
-
host: {
|
|
623
|
-
class: 'kbq-sidepanel-actions'
|
|
624
|
-
}
|
|
625
|
-
}]
|
|
626
|
-
}] });
|
|
627
|
-
|
|
628
450
|
/** Injection token that can be used to specify default sidepanel options. */
|
|
629
451
|
const KBQ_SIDEPANEL_DEFAULT_OPTIONS = new InjectionToken('kbq-sidepanel-default-options');
|
|
630
452
|
/**
|
|
@@ -1064,6 +886,196 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImpo
|
|
|
1064
886
|
args: [{ providedIn: 'root' }]
|
|
1065
887
|
}] });
|
|
1066
888
|
|
|
889
|
+
/**
|
|
890
|
+
* Button that will close the current sidepanel.
|
|
891
|
+
*/
|
|
892
|
+
class KbqSidepanelClose {
|
|
893
|
+
/**
|
|
894
|
+
* Sidepanel the button closes: the one it is rendered in. A button rendered outside any sidepanel, such as
|
|
895
|
+
* an item of a dropdown opened from one, closes the sidepanel its template is declared in.
|
|
896
|
+
*/
|
|
897
|
+
get sidepanelRef() {
|
|
898
|
+
const container = this.elementRef.nativeElement.closest('.kbq-sidepanel-container');
|
|
899
|
+
const renderedIn = container && this.sidepanelService.openedSidepanels.find(({ id }) => id === container.id);
|
|
900
|
+
const sidepanelRef = renderedIn ?? this.declaredSidepanelRef;
|
|
901
|
+
if (!sidepanelRef) {
|
|
902
|
+
throw Error('kbqSidepanelClose: the button is neither rendered nor declared inside a sidepanel.');
|
|
903
|
+
}
|
|
904
|
+
return sidepanelRef;
|
|
905
|
+
}
|
|
906
|
+
constructor() {
|
|
907
|
+
this.declaredSidepanelRef = inject(KbqSidepanelRef, { optional: true });
|
|
908
|
+
this.sidepanelService = inject(KbqSidepanelService);
|
|
909
|
+
this.elementRef = inject(ElementRef);
|
|
910
|
+
this.renderer = inject(Renderer2);
|
|
911
|
+
/** Value handed to `KbqSidepanelRef.close()`, under the hyphenated spelling of the selector. */
|
|
912
|
+
this.sidepanelResult = input(undefined, { ...(ngDevMode ? { debugName: "sidepanelResult" } : /* istanbul ignore next */ {}), alias: 'kbq-sidepanel-close' });
|
|
913
|
+
/** The same value, under the camel-case spelling. */
|
|
914
|
+
this.kbqSidepanelClose = input(...(ngDevMode ? [undefined, { debugName: "kbqSidepanelClose" }] : /* istanbul ignore next */ []));
|
|
915
|
+
afterNextRender(() => {
|
|
916
|
+
// A button with no type submits the form it sits in, so closing a sidepanel from inside a form would
|
|
917
|
+
// submit it too. A type the author set is left alone. The element carries its static attributes by
|
|
918
|
+
// the time a directive is constructed, so this needs no lifecycle hook.
|
|
919
|
+
if (!this.elementRef.nativeElement.hasAttribute('type')) {
|
|
920
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'type', 'button');
|
|
921
|
+
}
|
|
922
|
+
});
|
|
923
|
+
}
|
|
924
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
925
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqSidepanelClose, isStandalone: true, selector: "button[kbq-sidepanel-close], button[kbqSidepanelClose]", inputs: { sidepanelResult: { classPropertyName: "sidepanelResult", publicName: "kbq-sidepanel-close", isSignal: true, isRequired: false, transformFunction: null }, kbqSidepanelClose: { classPropertyName: "kbqSidepanelClose", publicName: "kbqSidepanelClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "sidepanelRef.close(kbqSidepanelClose() ?? sidepanelResult())" }, classAttribute: "kbq-sidepanel-close" }, ngImport: i0 }); }
|
|
926
|
+
}
|
|
927
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelClose, decorators: [{
|
|
928
|
+
type: Directive,
|
|
929
|
+
args: [{
|
|
930
|
+
selector: 'button[kbq-sidepanel-close], button[kbqSidepanelClose]',
|
|
931
|
+
host: {
|
|
932
|
+
class: 'kbq-sidepanel-close',
|
|
933
|
+
// The camel-case spelling wins when a template binds both, as it did before.
|
|
934
|
+
'(click)': 'sidepanelRef.close(kbqSidepanelClose() ?? sidepanelResult())'
|
|
935
|
+
}
|
|
936
|
+
}]
|
|
937
|
+
}], ctorParameters: () => [], propDecorators: { sidepanelResult: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbq-sidepanel-close", required: false }] }], kbqSidepanelClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqSidepanelClose", required: false }] }] } });
|
|
938
|
+
/**
|
|
939
|
+
* Header of a sidepanel.
|
|
940
|
+
*/
|
|
941
|
+
class KbqSidepanelHeader {
|
|
942
|
+
constructor() {
|
|
943
|
+
/** Accessible name for the icon-only close button. */
|
|
944
|
+
this.a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read('a11y', KBQ_A11Y_LOCALE_CONFIGURATION);
|
|
945
|
+
/** Add button for close sidepanel. Default false */
|
|
946
|
+
this.closeable = input(false, { ...(ngDevMode ? { debugName: "closeable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
947
|
+
/** Enables text truncation. Default true */
|
|
948
|
+
this.truncateText = input(true, { ...(ngDevMode ? { debugName: "truncateText" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
949
|
+
/** @docs-private */
|
|
950
|
+
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
951
|
+
/** Id of the title element, which is what names the sidepanel to assistive technology. */
|
|
952
|
+
this.titleId = `${this.sidepanelRef.id}-title`;
|
|
953
|
+
this.sidepanelRef.containerInstance.setAriaLabelledBy(this.titleId);
|
|
954
|
+
}
|
|
955
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
956
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqSidepanelHeader, isStandalone: true, selector: "kbq-sidepanel-header", inputs: { closeable: { classPropertyName: "closeable", publicName: "closeable", isSignal: true, isRequired: false, transformFunction: null }, truncateText: { classPropertyName: "truncateText", publicName: "truncateText", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-sidepanel-header_truncate-text": "truncateText()", "style.box-shadow": "sidepanelRef.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null" }, classAttribute: "kbq-sidepanel-header" }, hostDirectives: [{ directive: i1.KbqLocaleOverridesDirective, inputs: ["kbqLocaleOverrides", "localeOverrides"] }], ngImport: i0, template: `
|
|
957
|
+
<div class="kbq-sidepanel-title" kbq-title [attr.id]="titleId">
|
|
958
|
+
<ng-content />
|
|
959
|
+
</div>
|
|
960
|
+
|
|
961
|
+
@if (closeable()) {
|
|
962
|
+
<button
|
|
963
|
+
kbq-button
|
|
964
|
+
kbq-sidepanel-close
|
|
965
|
+
type="button"
|
|
966
|
+
[attr.aria-label]="a11yLocaleConfiguration().close"
|
|
967
|
+
[color]="'contrast'"
|
|
968
|
+
[kbqStyle]="'transparent'"
|
|
969
|
+
>
|
|
970
|
+
<i kbq-icon="kbq-xmark_16" [color]="'contrast'"></i>
|
|
971
|
+
</button>
|
|
972
|
+
}
|
|
973
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: KbqSidepanelClose, selector: "button[kbq-sidepanel-close], button[kbqSidepanelClose]", inputs: ["kbq-sidepanel-close", "kbqSidepanelClose"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["aria-hidden", "iconSize", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqTitleDirective, selector: "[kbq-title]", inputs: ["kbq-title", "ignoreTooltipPointerEvents"], exportAs: ["kbqTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
974
|
+
}
|
|
975
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelHeader, decorators: [{
|
|
976
|
+
type: Component,
|
|
977
|
+
args: [{
|
|
978
|
+
selector: 'kbq-sidepanel-header',
|
|
979
|
+
imports: [
|
|
980
|
+
KbqButtonModule,
|
|
981
|
+
KbqSidepanelClose,
|
|
982
|
+
KbqIconModule,
|
|
983
|
+
KbqTitleDirective
|
|
984
|
+
],
|
|
985
|
+
template: `
|
|
986
|
+
<div class="kbq-sidepanel-title" kbq-title [attr.id]="titleId">
|
|
987
|
+
<ng-content />
|
|
988
|
+
</div>
|
|
989
|
+
|
|
990
|
+
@if (closeable()) {
|
|
991
|
+
<button
|
|
992
|
+
kbq-button
|
|
993
|
+
kbq-sidepanel-close
|
|
994
|
+
type="button"
|
|
995
|
+
[attr.aria-label]="a11yLocaleConfiguration().close"
|
|
996
|
+
[color]="'contrast'"
|
|
997
|
+
[kbqStyle]="'transparent'"
|
|
998
|
+
>
|
|
999
|
+
<i kbq-icon="kbq-xmark_16" [color]="'contrast'"></i>
|
|
1000
|
+
</button>
|
|
1001
|
+
}
|
|
1002
|
+
`,
|
|
1003
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1004
|
+
host: {
|
|
1005
|
+
class: 'kbq-sidepanel-header',
|
|
1006
|
+
'[class.kbq-sidepanel-header_truncate-text]': 'truncateText()',
|
|
1007
|
+
'[style.box-shadow]': 'sidepanelRef.bodyOverflow().top ? "var(--kbq-shadow-overflow-normal-bottom)" : null'
|
|
1008
|
+
},
|
|
1009
|
+
hostDirectives: [
|
|
1010
|
+
{ directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }
|
|
1011
|
+
]
|
|
1012
|
+
}]
|
|
1013
|
+
}], ctorParameters: () => [], propDecorators: { closeable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeable", required: false }] }], truncateText: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncateText", required: false }] }] } });
|
|
1014
|
+
/**
|
|
1015
|
+
* Scrollable content container of a sidepanel.
|
|
1016
|
+
*/
|
|
1017
|
+
class KbqSidepanelBody {
|
|
1018
|
+
constructor() {
|
|
1019
|
+
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
1020
|
+
this.overflowContainer = inject(KbqOverflowShadowContainer);
|
|
1021
|
+
this.scrollbarViewport = inject(KbqScrollbarViewport);
|
|
1022
|
+
effect(() => this.sidepanelRef.bodyOverflow.set(this.overflowContainer.overflow()));
|
|
1023
|
+
this.sidepanelRef
|
|
1024
|
+
.afterOpened()
|
|
1025
|
+
.pipe(takeUntilDestroyed())
|
|
1026
|
+
.subscribe(() => this.scrollbarViewport.flashScrollIndicators());
|
|
1027
|
+
}
|
|
1028
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelBody, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1029
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqSidepanelBody, isStandalone: true, selector: "kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody", host: { classAttribute: "kbq-sidepanel-body" }, hostDirectives: [{ directive: i1.KbqOverflowShadowContainer }, { directive: i4.KbqScrollbarViewport }], ngImport: i0 }); }
|
|
1030
|
+
}
|
|
1031
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelBody, decorators: [{
|
|
1032
|
+
type: Directive,
|
|
1033
|
+
args: [{
|
|
1034
|
+
selector: 'kbq-sidepanel-body, [kbq-sidepanel-body], kbqSidepanelBody',
|
|
1035
|
+
host: {
|
|
1036
|
+
class: 'kbq-sidepanel-body'
|
|
1037
|
+
},
|
|
1038
|
+
hostDirectives: [KbqOverflowShadowContainer, KbqScrollbarViewport]
|
|
1039
|
+
}]
|
|
1040
|
+
}], ctorParameters: () => [] });
|
|
1041
|
+
/**
|
|
1042
|
+
* Footer of a sidepanel.
|
|
1043
|
+
*/
|
|
1044
|
+
class KbqSidepanelFooter {
|
|
1045
|
+
constructor() {
|
|
1046
|
+
/** @docs-private */
|
|
1047
|
+
this.sidepanelRef = inject(KbqSidepanelRef);
|
|
1048
|
+
}
|
|
1049
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1050
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqSidepanelFooter, isStandalone: true, selector: "kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter", host: { properties: { "style.box-shadow": "sidepanelRef.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null" }, classAttribute: "kbq-sidepanel-footer" }, ngImport: i0 }); }
|
|
1051
|
+
}
|
|
1052
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelFooter, decorators: [{
|
|
1053
|
+
type: Directive,
|
|
1054
|
+
args: [{
|
|
1055
|
+
selector: 'kbq-sidepanel-footer, [kbq-sidepanel-footer], kbqSidepanelFooter',
|
|
1056
|
+
host: {
|
|
1057
|
+
class: 'kbq-sidepanel-footer',
|
|
1058
|
+
'[style.box-shadow]': 'sidepanelRef.bodyOverflow().bottom ? "var(--kbq-shadow-overflow-normal-top)" : null'
|
|
1059
|
+
}
|
|
1060
|
+
}]
|
|
1061
|
+
}] });
|
|
1062
|
+
/**
|
|
1063
|
+
* Actions block of a sidepanel footer.
|
|
1064
|
+
*/
|
|
1065
|
+
class KbqSidepanelActions {
|
|
1066
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1067
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqSidepanelActions, isStandalone: true, selector: "kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions", host: { classAttribute: "kbq-sidepanel-actions" }, ngImport: i0 }); }
|
|
1068
|
+
}
|
|
1069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelActions, decorators: [{
|
|
1070
|
+
type: Directive,
|
|
1071
|
+
args: [{
|
|
1072
|
+
selector: 'kbq-sidepanel-actions, [kbq-sidepanel-actions], kbqSidepanelActions',
|
|
1073
|
+
host: {
|
|
1074
|
+
class: 'kbq-sidepanel-actions'
|
|
1075
|
+
}
|
|
1076
|
+
}]
|
|
1077
|
+
}] });
|
|
1078
|
+
|
|
1067
1079
|
class KbqSidepanelModule {
|
|
1068
1080
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1069
1081
|
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqSidepanelModule, imports: [OverlayModule,
|