@porscheinformatik/clr-addons 21.1.3 → 21.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/fesm2022/porscheinformatik-clr-addons-charts.mjs +25 -15
- package/fesm2022/porscheinformatik-clr-addons-charts.mjs.map +1 -1
- package/fesm2022/porscheinformatik-clr-addons.mjs +369 -52
- package/fesm2022/porscheinformatik-clr-addons.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/clr-addons-phs.css +102 -26
- package/styles/clr-addons-phs.css.map +1 -1
- package/styles/clr-addons-phs.min.css +1 -1
- package/styles/clr-addons-phs.min.css.map +1 -1
- package/types/porscheinformatik-clr-addons-charts.d.ts +3 -1
- package/types/porscheinformatik-clr-addons.d.ts +69 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, NgModule, Injectable, EventEmitter, Output, Input, Directive, ViewChild, ContentChildren, TemplateRef, ViewChildren, HostBinding, ElementRef, Renderer2, forwardRef, DOCUMENT, Inject, ContentChild, Optional, input, ChangeDetectionStrategy, signal, computed, SkipSelf, inject, model, contentChild, linkedSignal, DestroyRef, contentChildren, effect, viewChild, ViewContainerRef,
|
|
2
|
+
import { Component, NgModule, Injectable, EventEmitter, Output, Input, Directive, ViewChild, ContentChildren, TemplateRef, ViewChildren, HostBinding, ElementRef, Renderer2, forwardRef, DOCUMENT, Inject, ContentChild, Optional, input, ChangeDetectionStrategy, signal, computed, SkipSelf, inject, model, contentChild, linkedSignal, DestroyRef, contentChildren, effect, NgZone, viewChild, ViewContainerRef, afterRenderEffect, InjectionToken, isSignal, HostListener, LOCALE_ID, Self, Host, output, ChangeDetectorRef, Injector, untracked, runInInjectionContext } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, NgComponentOutlet, NgTemplateOutlet, getLocaleDateFormat, FormatWidth, NgOptimizedImage, NgClass } from '@angular/common';
|
|
5
5
|
import * as i2 from '@clr/angular/icon';
|
|
@@ -19,14 +19,14 @@ import * as i3$1 from '@clr/angular/popover/dropdown';
|
|
|
19
19
|
import * as i2$3 from '@clr/angular/popover/common';
|
|
20
20
|
import * as i2$4 from '@clr/angular/emphasis/alert';
|
|
21
21
|
import { takeUntilDestroyed, toObservable, outputFromObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
22
|
-
import * as
|
|
22
|
+
import * as i2$5 from '@clr/angular/progress/spinner';
|
|
23
23
|
import * as i4 from '@clr/angular/forms/checkbox';
|
|
24
24
|
import * as i3$2 from '@clr/angular/forms/input';
|
|
25
|
-
import * as i1$
|
|
25
|
+
import * as i1$3 from '@angular/common/http';
|
|
26
26
|
import { CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
|
|
27
27
|
import * as i4$1 from '@clr/angular/forms/datepicker';
|
|
28
28
|
import { CdkCopyToClipboard } from '@angular/cdk/clipboard';
|
|
29
|
-
import * as i1$
|
|
29
|
+
import * as i1$4 from '@clr/angular/popover/tooltip';
|
|
30
30
|
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
31
31
|
|
|
32
32
|
/*
|
|
@@ -729,11 +729,14 @@ class ClrDropdownOverflowDirective {
|
|
|
729
729
|
set clrMarginBottom(value) {
|
|
730
730
|
this.marginBottomPx = this.convertToPixels(value);
|
|
731
731
|
}
|
|
732
|
-
constructor(elRef) {
|
|
732
|
+
constructor(elRef, ngZone) {
|
|
733
733
|
this.elRef = elRef;
|
|
734
|
+
this.ngZone = ngZone;
|
|
734
735
|
this.defaultItemMinHeightRem = 1.5;
|
|
735
736
|
this.alreadyChecked = false;
|
|
736
737
|
this.marginBottomPx = 2;
|
|
738
|
+
this.deferredCheckPending = false;
|
|
739
|
+
this.requestAnimationFrameRetry = 0;
|
|
737
740
|
}
|
|
738
741
|
ngAfterViewChecked() {
|
|
739
742
|
// first trigger manually because the subscription lower only triggers after first change
|
|
@@ -758,13 +761,32 @@ class ClrDropdownOverflowDirective {
|
|
|
758
761
|
applyDropdownOverflowStyles() {
|
|
759
762
|
// the vertical position of our element in the current window
|
|
760
763
|
const rect = this.elRef.nativeElement.getBoundingClientRect();
|
|
761
|
-
|
|
762
|
-
|
|
764
|
+
// If the element is at position 0,0 it may not yet be positioned by the popover/CDK overlay system.
|
|
765
|
+
// Note: @clr/angular v18+ switched from Renderer2 (synchronous) to CDK Overlay (async rAF),
|
|
766
|
+
// so positioning is no longer guaranteed to be complete by the time ngAfterViewChecked runs.
|
|
767
|
+
// Defer the check to allow async positioning (e.g. CDK Overlay) to complete.
|
|
768
|
+
if (rect.x === 0 &&
|
|
769
|
+
rect.y === 0 &&
|
|
770
|
+
!this.alreadyChecked &&
|
|
771
|
+
!this.deferredCheckPending &&
|
|
772
|
+
this.requestAnimationFrameRetry < 10) {
|
|
773
|
+
this.deferredCheckPending = true;
|
|
774
|
+
this.requestAnimationFrameRetry++;
|
|
775
|
+
this.ngZone.runOutsideAngular(() => {
|
|
776
|
+
requestAnimationFrame(() => {
|
|
777
|
+
this.deferredCheckPending = false;
|
|
778
|
+
this.ngZone.run(() => this.applyDropdownOverflowStyles());
|
|
779
|
+
});
|
|
780
|
+
});
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
if (!this.alreadyChecked) {
|
|
763
784
|
const itemMinHeightPx = this.getItemMinHeight(this.clrDropdownMenuItemMinHeight);
|
|
764
785
|
// see https://stackoverflow.com/questions/22754315/for-loop-for-htmlcollection-elements
|
|
765
786
|
for (const item of this.getAllChildDropdownMenuItems()) {
|
|
766
787
|
item.style.minHeight = itemMinHeightPx + 'px';
|
|
767
788
|
}
|
|
789
|
+
const y = this.elRef.nativeElement.getBoundingClientRect().y;
|
|
768
790
|
const height = window.innerHeight - y;
|
|
769
791
|
const maxHeight = this.getMenuMaxHeight(this.clrDropdownMenuMaxHeight, height - this.marginBottomPx);
|
|
770
792
|
this.elRef.nativeElement.style.maxHeight = maxHeight + 'px';
|
|
@@ -779,6 +801,7 @@ class ClrDropdownOverflowDirective {
|
|
|
779
801
|
this.elRef.nativeElement.style.maxHeight = null;
|
|
780
802
|
this.elRef.nativeElement.style.overflowY = null;
|
|
781
803
|
this.alreadyChecked = false;
|
|
804
|
+
this.requestAnimationFrameRetry = 0;
|
|
782
805
|
}
|
|
783
806
|
getAllChildDropdownMenuItems() {
|
|
784
807
|
return this.elRef.nativeElement.getElementsByClassName('dropdown-item');
|
|
@@ -818,7 +841,7 @@ class ClrDropdownOverflowDirective {
|
|
|
818
841
|
const pxPerVhUnit = window.innerHeight / 100;
|
|
819
842
|
return vh * pxPerVhUnit;
|
|
820
843
|
}
|
|
821
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrDropdownOverflowDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
844
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrDropdownOverflowDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
822
845
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: ClrDropdownOverflowDirective, isStandalone: false, selector: "clr-dropdown-menu", inputs: { clrDropdownMenuMaxHeight: "clrDropdownMenuMaxHeight", clrDropdownMenuItemMinHeight: "clrDropdownMenuItemMinHeight", clrMarginBottom: "clrMarginBottom" }, queries: [{ propertyName: "nestedDropdownChildren", predicate: ClrDropdown, descendants: true }], ngImport: i0 }); }
|
|
823
846
|
}
|
|
824
847
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrDropdownOverflowDirective, decorators: [{
|
|
@@ -827,7 +850,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
827
850
|
selector: 'clr-dropdown-menu',
|
|
828
851
|
standalone: false,
|
|
829
852
|
}]
|
|
830
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clrDropdownMenuMaxHeight: [{
|
|
853
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { clrDropdownMenuMaxHeight: [{
|
|
831
854
|
type: Input
|
|
832
855
|
}], clrDropdownMenuItemMinHeight: [{
|
|
833
856
|
type: Input
|
|
@@ -3825,7 +3848,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
3825
3848
|
}], propDecorators: { parent: [{ type: i0.Input, args: [{ isSignal: true, alias: "parent", required: false }] }], children: [{ type: i0.Input, args: [{ isSignal: true, alias: "children", required: false }] }] } });
|
|
3826
3849
|
|
|
3827
3850
|
/*
|
|
3828
|
-
* Copyright (c) 2018-
|
|
3851
|
+
* Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.
|
|
3829
3852
|
* This software is released under MIT license.
|
|
3830
3853
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3831
3854
|
*/
|
|
@@ -3841,8 +3864,8 @@ class ClrTreetableRowCheckbox {
|
|
|
3841
3864
|
: ClrTreetableSelectedState.SELECTED);
|
|
3842
3865
|
}
|
|
3843
3866
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableRowCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3844
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.18", type: ClrTreetableRowCheckbox, isStandalone: false, selector: "clr-tt-row-checkbox", inputs: { clrTtSelectionState: { classPropertyName: "clrTtSelectionState", publicName: "clrTtSelectionState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clrTtSelectionState: "clrTtSelectionStateChange" }, ngImport: i0, template: `
|
|
3845
|
-
<div class="clr-checkbox-wrapper
|
|
3867
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.18", type: ClrTreetableRowCheckbox, isStandalone: false, selector: "clr-tt-row-checkbox", inputs: { clrTtSelectionState: { classPropertyName: "clrTtSelectionState", publicName: "clrTtSelectionState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clrTtSelectionState: "clrTtSelectionStateChange" }, host: { attributes: { "role": "gridcell" }, properties: { "class.treetable-row-selection": "true", "class.treetable-cell": "true" } }, ngImport: i0, template: `
|
|
3868
|
+
<div class="clr-checkbox-wrapper">
|
|
3846
3869
|
<input
|
|
3847
3870
|
type="checkbox"
|
|
3848
3871
|
data-testId="clrTtRowCheckbox"
|
|
@@ -3856,7 +3879,7 @@ class ClrTreetableRowCheckbox {
|
|
|
3856
3879
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableRowCheckbox, decorators: [{
|
|
3857
3880
|
type: Component,
|
|
3858
3881
|
args: [{ selector: 'clr-tt-row-checkbox', template: `
|
|
3859
|
-
<div class="clr-checkbox-wrapper
|
|
3882
|
+
<div class="clr-checkbox-wrapper">
|
|
3860
3883
|
<input
|
|
3861
3884
|
type="checkbox"
|
|
3862
3885
|
data-testId="clrTtRowCheckbox"
|
|
@@ -3865,7 +3888,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
3865
3888
|
(change)="toggle()"
|
|
3866
3889
|
/>
|
|
3867
3890
|
</div>
|
|
3868
|
-
`,
|
|
3891
|
+
`, host: {
|
|
3892
|
+
'[class.treetable-row-selection]': 'true',
|
|
3893
|
+
'[class.treetable-cell]': 'true',
|
|
3894
|
+
role: 'gridcell',
|
|
3895
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [".treetable-children-container{opacity:0;will-change:height,opacity}.treetable-children-container.expanded{opacity:1}.treetable-children-container.collapsed{height:0;opacity:0;overflow:hidden}.treetable-children-container.animate{transition:height .4s ease,opacity .4s ease}\n"] }]
|
|
3869
3896
|
}], propDecorators: { clrTtSelectionState: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtSelectionState", required: false }] }, { type: i0.Output, args: ["clrTtSelectionStateChange"] }] } });
|
|
3870
3897
|
|
|
3871
3898
|
/*
|
|
@@ -4507,8 +4534,8 @@ class TreetableColumnStateService {
|
|
|
4507
4534
|
this.columns = computed(() => Object.values(this._columnState()).sort((a, b) => a.columnIndex - b.columnIndex), ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
4508
4535
|
this.visibleColumns = computed(() => this.columns().filter(column => !column.hidden), ...(ngDevMode ? [{ debugName: "visibleColumns" }] : /* istanbul ignore next */ []));
|
|
4509
4536
|
this.hideableColumns = computed(() => this.columns().filter(column => column.hideable), ...(ngDevMode ? [{ debugName: "hideableColumns" }] : /* istanbul ignore next */ []));
|
|
4510
|
-
this.hasHideableColumns = computed(() => this.hideableColumns()
|
|
4511
|
-
this._changeWidthAction$ = this._changeWidth$.pipe(tap(({ id, width }) => this.update(id, { width })), share());
|
|
4537
|
+
this.hasHideableColumns = computed(() => this.hideableColumns().length > 0, ...(ngDevMode ? [{ debugName: "hasHideableColumns" }] : /* istanbul ignore next */ []));
|
|
4538
|
+
this._changeWidthAction$ = this._changeWidth$.pipe(filter$1(({ id, width }) => this.getColumn(id)?.width != width), tap(({ id, width }) => this.update(id, { width })), share());
|
|
4512
4539
|
this._changeHideableAction$ = this._changeHideable$.pipe(tap(patch => {
|
|
4513
4540
|
const current = this.getColumn(patch.id);
|
|
4514
4541
|
if (current.hideable && !patch.hideable) {
|
|
@@ -4621,6 +4648,19 @@ class TreetableColumnStateService {
|
|
|
4621
4648
|
getColumnState(id) {
|
|
4622
4649
|
return toObservable(this._columnState).pipe(map$1(columns => columns[id]), distinctUntilChanged());
|
|
4623
4650
|
}
|
|
4651
|
+
getColumnChangesById(id) {
|
|
4652
|
+
const hiddenChanges$ = merge(this._changeHiddenAction$.pipe(filter$1(change => change.id === id)), this._changeHiddenForAllAction$, this._resetHiddenAction$).pipe(map$1(() => ({
|
|
4653
|
+
id,
|
|
4654
|
+
type: TreetableColumnUpdate.HIDDEN,
|
|
4655
|
+
hidden: this.getColumn(id)?.hidden ?? false,
|
|
4656
|
+
})));
|
|
4657
|
+
const widthChanges$ = this._changeWidthAction$.pipe(filter$1(change => change.id === id), map$1((change) => ({
|
|
4658
|
+
id,
|
|
4659
|
+
type: TreetableColumnUpdate.WIDTH,
|
|
4660
|
+
width: change.width,
|
|
4661
|
+
})));
|
|
4662
|
+
return merge(widthChanges$, hiddenChanges$);
|
|
4663
|
+
}
|
|
4624
4664
|
getColumn(id) {
|
|
4625
4665
|
return this._columnState()[id];
|
|
4626
4666
|
}
|
|
@@ -4652,10 +4692,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
4652
4692
|
* This software is released under MIT license.
|
|
4653
4693
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
4654
4694
|
*/
|
|
4695
|
+
let treetableId = 0;
|
|
4655
4696
|
class ClrTreetable {
|
|
4656
4697
|
constructor() {
|
|
4698
|
+
this.treetableId = `clr-treetable-${++treetableId}`;
|
|
4699
|
+
this.selectAllId = `clr-tt-select-all${treetableId}`;
|
|
4657
4700
|
this._dataStateService = inject((TreetableDataStateService));
|
|
4658
4701
|
this._recursionService = inject((ClrTreetableRecursionService));
|
|
4702
|
+
this._commonStringsService = inject(ClrCommonStringsService);
|
|
4703
|
+
this.commonStrings = this._commonStringsService.keys;
|
|
4659
4704
|
this.clrClickableRows = input(true, ...(ngDevMode ? [{ debugName: "clrClickableRows" }] : /* istanbul ignore next */ []));
|
|
4660
4705
|
this.clrHideHeader = input(false, ...(ngDevMode ? [{ debugName: "clrHideHeader" }] : /* istanbul ignore next */ []));
|
|
4661
4706
|
this.clrTtLoading = input(false, ...(ngDevMode ? [{ debugName: "clrTtLoading" }] : /* istanbul ignore next */ []));
|
|
@@ -4692,7 +4737,7 @@ class ClrTreetable {
|
|
|
4692
4737
|
TreetableColumnStateService,
|
|
4693
4738
|
SortStateService,
|
|
4694
4739
|
FilterStateService,
|
|
4695
|
-
], queries: [{ propertyName: "_ttRows", predicate: ClrTreetableRow, descendants: true, isSignal: true }, { propertyName: "_actionOverflow", predicate: ClrTreetableActionOverflow, descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n~ Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.\n~ This software is released under MIT license.\n~ The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<div class=\"treetable\">\n <div class=\"treetable-grid\" role=\"grid\">\n <div class=\"treetable-header\" role=\"rowgroup\" [class.hide-header]=\"clrHideHeader()\">\n @if (showSelection() && !empty()) {\n <div class=\"
|
|
4740
|
+
], queries: [{ propertyName: "_ttRows", predicate: ClrTreetableRow, descendants: true, isSignal: true }, { propertyName: "_actionOverflow", predicate: ClrTreetableActionOverflow, descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n~ Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.\n~ This software is released under MIT license.\n~ The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<div class=\"treetable\">\n <div class=\"treetable-grid\" role=\"grid\">\n <div class=\"treetable-header\" role=\"rowgroup\" [class.hide-header]=\"clrHideHeader()\">\n @if (showSelection() && !empty()) {\n <div class=\"treetable-row-selection treetable-column\" role=\"columnheader\">\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n data-testId=\"clrTtSelectAll\"\n [id]=\"selectAllId\"\n [checked]=\"areAllRowsSelected()\"\n (change)=\"toggleSelectAll()\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a treetable is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{ commonStrings.selectAll }}</span>\n </label>\n </div>\n </div>\n } @if (hasActionOverflow()) {\n <div class=\"treetable-row-actions treetable-column\"> </div>\n }\n <div class=\"treetable-row-scrollable\">\n <ng-content select=\"clr-tt-column\" />\n </div>\n </div>\n\n <div class=\"treetable-body\">\n @if (isRecursionMode()) {\n <clr-tt-recursive-rows [children]=\"displayedNodes()\" />\n } @else {\n <ng-content select=\"clr-tt-row\" />\n } @if (empty() && !clrTtLoading()) {\n <ng-content select=\"clr-tt-placeholder\" />\n }\n </div>\n </div>\n\n <ng-content select=\"clr-tt-footer\"></ng-content>\n\n @if (clrTtLoading()) {\n <div class=\"treetable-spinner\">\n <clr-spinner clrMedium />\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: i2$5.ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrTreetableRecursiveRows, selector: "clr-tt-recursive-rows", inputs: ["parent", "children"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4696
4741
|
}
|
|
4697
4742
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetable, decorators: [{
|
|
4698
4743
|
type: Component,
|
|
@@ -4702,7 +4747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
4702
4747
|
TreetableColumnStateService,
|
|
4703
4748
|
SortStateService,
|
|
4704
4749
|
FilterStateService,
|
|
4705
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!--\n~ Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.\n~ This software is released under MIT license.\n~ The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<div class=\"treetable\">\n <div class=\"treetable-grid\" role=\"grid\">\n <div class=\"treetable-header\" role=\"rowgroup\" [class.hide-header]=\"clrHideHeader()\">\n @if (showSelection() && !empty()) {\n <div class=\"
|
|
4750
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!--\n~ Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.\n~ This software is released under MIT license.\n~ The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<div class=\"treetable\">\n <div class=\"treetable-grid\" role=\"grid\">\n <div class=\"treetable-header\" role=\"rowgroup\" [class.hide-header]=\"clrHideHeader()\">\n @if (showSelection() && !empty()) {\n <div class=\"treetable-row-selection treetable-column\" role=\"columnheader\">\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n data-testId=\"clrTtSelectAll\"\n [id]=\"selectAllId\"\n [checked]=\"areAllRowsSelected()\"\n (change)=\"toggleSelectAll()\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a treetable is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{ commonStrings.selectAll }}</span>\n </label>\n </div>\n </div>\n } @if (hasActionOverflow()) {\n <div class=\"treetable-row-actions treetable-column\"> </div>\n }\n <div class=\"treetable-row-scrollable\">\n <ng-content select=\"clr-tt-column\" />\n </div>\n </div>\n\n <div class=\"treetable-body\">\n @if (isRecursionMode()) {\n <clr-tt-recursive-rows [children]=\"displayedNodes()\" />\n } @else {\n <ng-content select=\"clr-tt-row\" />\n } @if (empty() && !clrTtLoading()) {\n <ng-content select=\"clr-tt-placeholder\" />\n }\n </div>\n </div>\n\n <ng-content select=\"clr-tt-footer\"></ng-content>\n\n @if (clrTtLoading()) {\n <div class=\"treetable-spinner\">\n <clr-spinner clrMedium />\n </div>\n }\n</div>\n" }]
|
|
4706
4751
|
}], ctorParameters: () => [], propDecorators: { clrClickableRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrClickableRows", required: false }] }], clrHideHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrHideHeader", required: false }] }], clrTtLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtLoading", required: false }] }], clrTtSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtSelected", required: false }] }], clrTtAutoParentSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtAutoParentSelection", required: false }] }], clrTtSelectedChange: [{ type: i0.Output, args: ["clrTtSelectedChange"] }], clrTtRefresh: [{ type: i0.Output, args: ["clrTtRefresh"] }], _ttRows: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ClrTreetableRow), { ...{ descendants: true }, isSignal: true }] }], _actionOverflow: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ClrTreetableActionOverflow), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
4707
4752
|
|
|
4708
4753
|
/*
|
|
@@ -4717,6 +4762,230 @@ var ClrTreetableSortOrder;
|
|
|
4717
4762
|
ClrTreetableSortOrder[ClrTreetableSortOrder["DESC"] = -1] = "DESC";
|
|
4718
4763
|
})(ClrTreetableSortOrder || (ClrTreetableSortOrder = {}));
|
|
4719
4764
|
|
|
4765
|
+
/**
|
|
4766
|
+
* The default CSS column class.
|
|
4767
|
+
*/
|
|
4768
|
+
const DEFAULT_COLUMN_CSS_CLASS = 'clr-col';
|
|
4769
|
+
/**
|
|
4770
|
+
* The CSS class to use to hide a column and its related cells in the treetable.
|
|
4771
|
+
*/
|
|
4772
|
+
const HIDDEN_COLUMN_CSS_CLASS = 'treetable-hidden-column';
|
|
4773
|
+
/**
|
|
4774
|
+
* The minimum width of column headers and cells in the treetable.
|
|
4775
|
+
*/
|
|
4776
|
+
const MIN_COLUMN_WIDTH = 48;
|
|
4777
|
+
/**
|
|
4778
|
+
* The resize width of column headers and cells per keybinds.
|
|
4779
|
+
*/
|
|
4780
|
+
const KEYBOARD_RESIZE_LENGTH = 12;
|
|
4781
|
+
|
|
4782
|
+
class ClrTreetableColumnSeparator {
|
|
4783
|
+
constructor() {
|
|
4784
|
+
this.columnId = input.required(...(ngDevMode ? [{ debugName: "columnId" }] : /* istanbul ignore next */ []));
|
|
4785
|
+
this._columnState = inject(TreetableColumnStateService);
|
|
4786
|
+
this._commonStringsService = inject(ClrCommonStringsService);
|
|
4787
|
+
this._renderer = inject(Renderer2);
|
|
4788
|
+
this._ngZone = inject(NgZone);
|
|
4789
|
+
this._el = inject((ElementRef));
|
|
4790
|
+
this._resizeTracker = viewChild.required('resizeTracker');
|
|
4791
|
+
this._columnHandle = viewChild.required('columnHandle');
|
|
4792
|
+
this.commonStrings = this._commonStringsService.keys;
|
|
4793
|
+
this._minContentWidth = MIN_COLUMN_WIDTH;
|
|
4794
|
+
this._widthBeforeResize = 0;
|
|
4795
|
+
this._resizedBy = 0;
|
|
4796
|
+
this._isWithinMaxResizeRange = true;
|
|
4797
|
+
this._resizeStartedOnKeyDown = false;
|
|
4798
|
+
this._unlisteners = [];
|
|
4799
|
+
}
|
|
4800
|
+
ngAfterViewInit() {
|
|
4801
|
+
const handleEl = this._columnHandle().nativeElement;
|
|
4802
|
+
this._ngZone.runOutsideAngular(() => {
|
|
4803
|
+
this._unlisteners.push(this._renderer.listen(handleEl, 'pointerdown', (e) => this._onPointerDown(e)), this._renderer.listen(handleEl, 'keydown', (e) => {
|
|
4804
|
+
this._showTrackerOnFirstKeyDown(e);
|
|
4805
|
+
this._moveTrackerOnKeyDown(e);
|
|
4806
|
+
}), this._renderer.listen(handleEl, 'keyup', (e) => this._hideTrackerOnKeyUp(e)));
|
|
4807
|
+
});
|
|
4808
|
+
}
|
|
4809
|
+
ngOnDestroy() {
|
|
4810
|
+
this._unlisteners.forEach(fn => fn());
|
|
4811
|
+
}
|
|
4812
|
+
// --- Pointer-based drag ---
|
|
4813
|
+
_onPointerDown(event) {
|
|
4814
|
+
event.preventDefault();
|
|
4815
|
+
const handleEl = this._columnHandle().nativeElement;
|
|
4816
|
+
handleEl.setPointerCapture(event.pointerId);
|
|
4817
|
+
this._startResize();
|
|
4818
|
+
this._showTracker();
|
|
4819
|
+
const dragUnlisteners = [];
|
|
4820
|
+
const onMove = (e) => {
|
|
4821
|
+
this._calculateResize(e.clientX - event.clientX);
|
|
4822
|
+
this._moveTracker();
|
|
4823
|
+
};
|
|
4824
|
+
const onUp = () => {
|
|
4825
|
+
handleEl.releasePointerCapture(event.pointerId);
|
|
4826
|
+
this._hideTracker();
|
|
4827
|
+
this._endResize();
|
|
4828
|
+
dragUnlisteners.forEach(unlisten => unlisten());
|
|
4829
|
+
};
|
|
4830
|
+
dragUnlisteners.push(this._renderer.listen(handleEl, 'pointermove', onMove), this._renderer.listen(handleEl, 'pointerup', onUp), this._renderer.listen(handleEl, 'pointercancel', onUp));
|
|
4831
|
+
}
|
|
4832
|
+
// --- Keyboard-based resize ---
|
|
4833
|
+
_showTrackerOnFirstKeyDown(event) {
|
|
4834
|
+
if (!this._resizeStartedOnKeyDown && this._isArrowHorizontal(event)) {
|
|
4835
|
+
this._resizeStartedOnKeyDown = true;
|
|
4836
|
+
this._startResize();
|
|
4837
|
+
this._showTracker();
|
|
4838
|
+
}
|
|
4839
|
+
}
|
|
4840
|
+
_moveTrackerOnKeyDown(event) {
|
|
4841
|
+
if (event.key === 'ArrowLeft') {
|
|
4842
|
+
event.stopPropagation();
|
|
4843
|
+
this._calculateResize(this._resizedBy - KEYBOARD_RESIZE_LENGTH);
|
|
4844
|
+
this._moveTracker();
|
|
4845
|
+
}
|
|
4846
|
+
else if (event.key === 'ArrowRight') {
|
|
4847
|
+
event.stopPropagation();
|
|
4848
|
+
this._calculateResize(this._resizedBy + KEYBOARD_RESIZE_LENGTH);
|
|
4849
|
+
this._moveTracker();
|
|
4850
|
+
}
|
|
4851
|
+
}
|
|
4852
|
+
_hideTrackerOnKeyUp(event) {
|
|
4853
|
+
if (this._resizeStartedOnKeyDown && this._isArrowHorizontal(event)) {
|
|
4854
|
+
this._resizeStartedOnKeyDown = false;
|
|
4855
|
+
this._hideTracker();
|
|
4856
|
+
this._endResize();
|
|
4857
|
+
this._columnHandle().nativeElement.focus();
|
|
4858
|
+
}
|
|
4859
|
+
}
|
|
4860
|
+
// --- Resize calculation ---
|
|
4861
|
+
_startResize() {
|
|
4862
|
+
this._resizedBy = 0;
|
|
4863
|
+
this._isWithinMaxResizeRange = true;
|
|
4864
|
+
const columnEl = this._getColumnElement();
|
|
4865
|
+
this._widthBeforeResize = columnEl ? Math.round(columnEl.getBoundingClientRect().width) : 0;
|
|
4866
|
+
this._minContentWidth = this.measureMinContentWidth(columnEl);
|
|
4867
|
+
}
|
|
4868
|
+
_calculateResize(movedBy) {
|
|
4869
|
+
const maxShrink = this._widthBeforeResize - this._minContentWidth;
|
|
4870
|
+
if (movedBy < -maxShrink) {
|
|
4871
|
+
this._resizedBy = -maxShrink;
|
|
4872
|
+
this._isWithinMaxResizeRange = false;
|
|
4873
|
+
}
|
|
4874
|
+
else {
|
|
4875
|
+
this._resizedBy = movedBy;
|
|
4876
|
+
this._isWithinMaxResizeRange = true;
|
|
4877
|
+
}
|
|
4878
|
+
}
|
|
4879
|
+
_endResize() {
|
|
4880
|
+
const newWidth = Math.max(this._widthBeforeResize + this._resizedBy, this._minContentWidth);
|
|
4881
|
+
if (newWidth != this._widthBeforeResize) {
|
|
4882
|
+
this._ngZone.run(() => {
|
|
4883
|
+
this._columnState.changeWidth(this.columnId(), newWidth);
|
|
4884
|
+
});
|
|
4885
|
+
}
|
|
4886
|
+
}
|
|
4887
|
+
// --- Tracker visual ---
|
|
4888
|
+
_showTracker() {
|
|
4889
|
+
const trackerEl = this._resizeTracker().nativeElement;
|
|
4890
|
+
const tableHeight = this._getTableHeight();
|
|
4891
|
+
this._renderer.setStyle(trackerEl, 'height', tableHeight);
|
|
4892
|
+
this._renderer.setStyle(trackerEl, 'display', 'block');
|
|
4893
|
+
}
|
|
4894
|
+
_moveTracker() {
|
|
4895
|
+
const trackerEl = this._resizeTracker().nativeElement;
|
|
4896
|
+
this._renderer.setStyle(trackerEl, 'transform', `translateX(${this._resizedBy}px)`);
|
|
4897
|
+
if (this._isWithinMaxResizeRange) {
|
|
4898
|
+
this._renderer.removeClass(trackerEl, 'exceeded-max');
|
|
4899
|
+
}
|
|
4900
|
+
else {
|
|
4901
|
+
this._renderer.addClass(trackerEl, 'exceeded-max');
|
|
4902
|
+
}
|
|
4903
|
+
}
|
|
4904
|
+
_hideTracker() {
|
|
4905
|
+
const trackerEl = this._resizeTracker().nativeElement;
|
|
4906
|
+
this._renderer.setStyle(trackerEl, 'display', 'none');
|
|
4907
|
+
this._renderer.setStyle(trackerEl, 'transform', 'translateX(0px)');
|
|
4908
|
+
}
|
|
4909
|
+
// --- DOM helpers ---
|
|
4910
|
+
_getColumnElement() {
|
|
4911
|
+
return this._el.nativeElement.closest('.treetable-column');
|
|
4912
|
+
}
|
|
4913
|
+
_getTableHeight() {
|
|
4914
|
+
const grid = this._el.nativeElement.closest('.treetable-grid');
|
|
4915
|
+
return grid ? `${grid.clientHeight}px` : '100%';
|
|
4916
|
+
}
|
|
4917
|
+
_isArrowHorizontal(event) {
|
|
4918
|
+
return event.key === 'ArrowLeft' || event.key === 'ArrowRight';
|
|
4919
|
+
}
|
|
4920
|
+
/**
|
|
4921
|
+
* Measures the intrinsic `min-content` width (incl. padding & border, rounded
|
|
4922
|
+
* to whole pixels) of the given column by temporarily forcing `width: min-content`
|
|
4923
|
+
* directly on the element, then restoring the previous inline value.
|
|
4924
|
+
*
|
|
4925
|
+
* `.treetable-column` already declares `min-width: min-content`; forcing the
|
|
4926
|
+
* `width` collapses it so `getBoundingClientRect()` reports the min-content box.
|
|
4927
|
+
*
|
|
4928
|
+
* Falls back to (and is floored at) the MIN_COLUMN_WIDTH constant.
|
|
4929
|
+
*/
|
|
4930
|
+
measureMinContentWidth(columnEl) {
|
|
4931
|
+
if (!columnEl) {
|
|
4932
|
+
return MIN_COLUMN_WIDTH;
|
|
4933
|
+
}
|
|
4934
|
+
const prevWidth = columnEl.style.width;
|
|
4935
|
+
const prevMaxWidth = columnEl.style.maxWidth;
|
|
4936
|
+
this._renderer.setStyle(columnEl, 'width', 'min-content');
|
|
4937
|
+
this._renderer.setStyle(columnEl, 'max-width', 'min-content');
|
|
4938
|
+
const measuredWidth = Math.round(columnEl.getBoundingClientRect().width);
|
|
4939
|
+
if (prevWidth || prevMaxWidth) {
|
|
4940
|
+
this._renderer.setStyle(columnEl, 'width', prevWidth);
|
|
4941
|
+
this._renderer.setStyle(columnEl, 'max-width', prevMaxWidth);
|
|
4942
|
+
}
|
|
4943
|
+
else {
|
|
4944
|
+
this._renderer.removeStyle(columnEl, 'width');
|
|
4945
|
+
this._renderer.removeStyle(columnEl, 'max-width');
|
|
4946
|
+
}
|
|
4947
|
+
return Number.isFinite(measuredWidth) && measuredWidth > 0
|
|
4948
|
+
? Math.max(measuredWidth, MIN_COLUMN_WIDTH)
|
|
4949
|
+
: MIN_COLUMN_WIDTH;
|
|
4950
|
+
}
|
|
4951
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableColumnSeparator, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4952
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.18", type: ClrTreetableColumnSeparator, isStandalone: false, selector: "clr-tt-column-separator", inputs: { columnId: { classPropertyName: "columnId", publicName: "columnId", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.treetable-column-separator": "true" } }, viewQueries: [{ propertyName: "_resizeTracker", first: true, predicate: ["resizeTracker"], descendants: true, isSignal: true }, { propertyName: "_columnHandle", first: true, predicate: ["columnHandle"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
4953
|
+
<button
|
|
4954
|
+
type="button"
|
|
4955
|
+
class="treetable-column-handle"
|
|
4956
|
+
[aria-label]="commonStrings.columnSeparatorAriaLabel"
|
|
4957
|
+
#columnHandle
|
|
4958
|
+
></button>
|
|
4959
|
+
<span class="clr-sr-only">
|
|
4960
|
+
{{ commonStrings.columnSeparatorDescription }}
|
|
4961
|
+
</span>
|
|
4962
|
+
<div class="treetable-column-resize-tracker" #resizeTracker></div>
|
|
4963
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4964
|
+
}
|
|
4965
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableColumnSeparator, decorators: [{
|
|
4966
|
+
type: Component,
|
|
4967
|
+
args: [{
|
|
4968
|
+
selector: 'clr-tt-column-separator',
|
|
4969
|
+
template: `
|
|
4970
|
+
<button
|
|
4971
|
+
type="button"
|
|
4972
|
+
class="treetable-column-handle"
|
|
4973
|
+
[aria-label]="commonStrings.columnSeparatorAriaLabel"
|
|
4974
|
+
#columnHandle
|
|
4975
|
+
></button>
|
|
4976
|
+
<span class="clr-sr-only">
|
|
4977
|
+
{{ commonStrings.columnSeparatorDescription }}
|
|
4978
|
+
</span>
|
|
4979
|
+
<div class="treetable-column-resize-tracker" #resizeTracker></div>
|
|
4980
|
+
`,
|
|
4981
|
+
host: {
|
|
4982
|
+
'[class.treetable-column-separator]': 'true',
|
|
4983
|
+
},
|
|
4984
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4985
|
+
standalone: false,
|
|
4986
|
+
}]
|
|
4987
|
+
}], propDecorators: { columnId: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnId", required: true }] }], _resizeTracker: [{ type: i0.ViewChild, args: ['resizeTracker', { isSignal: true }] }], _columnHandle: [{ type: i0.ViewChild, args: ['columnHandle', { isSignal: true }] }] } });
|
|
4988
|
+
|
|
4720
4989
|
/*
|
|
4721
4990
|
* Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.
|
|
4722
4991
|
* This software is released under MIT license.
|
|
@@ -4746,6 +5015,8 @@ class ClrTreetableColumn {
|
|
|
4746
5015
|
}, ...(ngDevMode ? [{ debugName: "_internalSortOrder" }] : /* istanbul ignore next */ []));
|
|
4747
5016
|
this.clrTtSortOrder = input(ClrTreetableSortOrder.UNSORTED, ...(ngDevMode ? [{ debugName: "clrTtSortOrder" }] : /* istanbul ignore next */ []));
|
|
4748
5017
|
this.clrTtSortOrderChange = outputFromObservable(toObservable(this._internalSortOrder));
|
|
5018
|
+
this.clrTtColumnSize = input(null, ...(ngDevMode ? [{ debugName: "clrTtColumnSize" }] : /* istanbul ignore next */ []));
|
|
5019
|
+
this.clrTtColumnResize = outputFromObservable(this._columnState.getColumnChangesById(this.columnId).pipe(filter$1(data => data.type === TreetableColumnUpdate.WIDTH), map$1(data => data.width)));
|
|
4749
5020
|
this.isSortable = computed(() => !!this.clrTtSortBy(), ...(ngDevMode ? [{ debugName: "isSortable" }] : /* istanbul ignore next */ []));
|
|
4750
5021
|
this.sortDirection = computed(() => {
|
|
4751
5022
|
const order = this._internalSortOrder();
|
|
@@ -4800,6 +5071,12 @@ class ClrTreetableColumn {
|
|
|
4800
5071
|
break;
|
|
4801
5072
|
}
|
|
4802
5073
|
});
|
|
5074
|
+
effect(() => {
|
|
5075
|
+
const size = this.clrTtColumnSize();
|
|
5076
|
+
if (size) {
|
|
5077
|
+
this._columnState.changeWidth(this.columnId, size);
|
|
5078
|
+
}
|
|
5079
|
+
});
|
|
4803
5080
|
}
|
|
4804
5081
|
sort(reverse) {
|
|
4805
5082
|
const comparator = this.clrTtSortBy();
|
|
@@ -4809,7 +5086,7 @@ class ClrTreetableColumn {
|
|
|
4809
5086
|
this._sort.toggle(comparator, reverse);
|
|
4810
5087
|
}
|
|
4811
5088
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableColumn, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4812
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrTreetableColumn, isStandalone: false, selector: "clr-tt-column", inputs: { clrTtSortBy: { classPropertyName: "clrTtSortBy", publicName: "clrTtSortBy", isSignal: true, isRequired: false, transformFunction: null }, clrTtSortOrder: { classPropertyName: "clrTtSortOrder", publicName: "clrTtSortOrder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clrTtSortOrderChange: "clrTtSortOrderChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.treetable-column": "true", "attr.aria-sort": "ariaSort()" } }, providers: [ClrPopoverService], viewQueries: [{ propertyName: "_columnTitleRef", first: true, predicate: ["columnTitle"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
|
|
5089
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrTreetableColumn, isStandalone: false, selector: "clr-tt-column", inputs: { clrTtSortBy: { classPropertyName: "clrTtSortBy", publicName: "clrTtSortBy", isSignal: true, isRequired: false, transformFunction: null }, clrTtSortOrder: { classPropertyName: "clrTtSortOrder", publicName: "clrTtSortOrder", isSignal: true, isRequired: false, transformFunction: null }, clrTtColumnSize: { classPropertyName: "clrTtColumnSize", publicName: "clrTtColumnSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clrTtSortOrderChange: "clrTtSortOrderChange", clrTtColumnResize: "clrTtColumnResize" }, host: { attributes: { "role": "columnheader" }, properties: { "class.treetable-column": "true", "attr.aria-sort": "ariaSort()" } }, providers: [ClrPopoverService], viewQueries: [{ propertyName: "_columnTitleRef", first: true, predicate: ["columnTitle"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
|
|
4813
5090
|
@if (isSortable()) {
|
|
4814
5091
|
<button type="button" class="treetable-column-title" data-testId="clrTtSortButton" (click)="sort()">
|
|
4815
5092
|
<ng-container *ngTemplateOutlet="columnTitle" />
|
|
@@ -4831,10 +5108,12 @@ class ClrTreetableColumn {
|
|
|
4831
5108
|
|
|
4832
5109
|
<ng-content select="clr-tt-filter, clr-tt-string-filter" />
|
|
4833
5110
|
|
|
5111
|
+
<clr-tt-column-separator [columnId]="columnId" />
|
|
5112
|
+
|
|
4834
5113
|
<ng-template #columnTitle>
|
|
4835
5114
|
<ng-content />
|
|
4836
5115
|
</ng-template>
|
|
4837
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5116
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrTreetableColumnSeparator, selector: "clr-tt-column-separator", inputs: ["columnId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4838
5117
|
}
|
|
4839
5118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableColumn, decorators: [{
|
|
4840
5119
|
type: Component,
|
|
@@ -4863,6 +5142,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
4863
5142
|
|
|
4864
5143
|
<ng-content select="clr-tt-filter, clr-tt-string-filter" />
|
|
4865
5144
|
|
|
5145
|
+
<clr-tt-column-separator [columnId]="columnId" />
|
|
5146
|
+
|
|
4866
5147
|
<ng-template #columnTitle>
|
|
4867
5148
|
<ng-content />
|
|
4868
5149
|
</ng-template>
|
|
@@ -4875,7 +5156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
4875
5156
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4876
5157
|
standalone: false,
|
|
4877
5158
|
}]
|
|
4878
|
-
}], ctorParameters: () => [], propDecorators: { _columnTitleRef: [{ type: i0.ViewChild, args: ['columnTitle', { ...{ read: TemplateRef }, isSignal: true }] }], clrTtSortBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtSortBy", required: false }] }], clrTtSortOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtSortOrder", required: false }] }], clrTtSortOrderChange: [{ type: i0.Output, args: ["clrTtSortOrderChange"] }] } });
|
|
5159
|
+
}], ctorParameters: () => [], propDecorators: { _columnTitleRef: [{ type: i0.ViewChild, args: ['columnTitle', { ...{ read: TemplateRef }, isSignal: true }] }], clrTtSortBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtSortBy", required: false }] }], clrTtSortOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtSortOrder", required: false }] }], clrTtSortOrderChange: [{ type: i0.Output, args: ["clrTtSortOrderChange"] }], clrTtColumnSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtColumnSize", required: false }] }], clrTtColumnResize: [{ type: i0.Output, args: ["clrTtColumnResize"] }] } });
|
|
4879
5160
|
|
|
4880
5161
|
let id = 0;
|
|
4881
5162
|
class ClrTreetableColumnManagerMenuComponent {
|
|
@@ -5170,7 +5451,7 @@ class ClrTreetableHideableColumn {
|
|
|
5170
5451
|
this._columnState = inject(TreetableColumnStateService);
|
|
5171
5452
|
this._column = inject(ClrTreetableColumn);
|
|
5172
5453
|
this.clrTtHideableColumn = input('', ...(ngDevMode ? [{ debugName: "clrTtHideableColumn" }] : /* istanbul ignore next */ []));
|
|
5173
|
-
this.clrTtHiddenChange =
|
|
5454
|
+
this.clrTtHiddenChange = outputFromObservable(this._columnState.getColumnChangesById(this._column.columnId).pipe(filter$1(data => data.type === TreetableColumnUpdate.HIDDEN), map$1(data => data.hidden)));
|
|
5174
5455
|
this.resolvedHidden = computed(() => {
|
|
5175
5456
|
const value = this.clrTtHideableColumn();
|
|
5176
5457
|
if (typeof value === 'string') {
|
|
@@ -5319,13 +5600,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
5319
5600
|
}], propDecorators: { clrTtFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "clrTtFilter", required: true }] }] } });
|
|
5320
5601
|
|
|
5321
5602
|
/*
|
|
5322
|
-
* Copyright (c) 2018-
|
|
5603
|
+
* Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.
|
|
5323
5604
|
* This software is released under MIT license.
|
|
5324
5605
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5325
5606
|
*/
|
|
5326
5607
|
class ClrTreetableCell {
|
|
5327
5608
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableCell, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5328
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.18", type: ClrTreetableCell, isStandalone: false, selector: "clr-tt-cell", host: { attributes: { "role": "
|
|
5609
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.18", type: ClrTreetableCell, isStandalone: false, selector: "clr-tt-cell", host: { attributes: { "role": "gridcell" }, properties: { "class.treetable-cell": "true" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5329
5610
|
}
|
|
5330
5611
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrTreetableCell, decorators: [{
|
|
5331
5612
|
type: Component,
|
|
@@ -5334,7 +5615,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
5334
5615
|
template: '<ng-content></ng-content>',
|
|
5335
5616
|
host: {
|
|
5336
5617
|
'[class.treetable-cell]': 'true',
|
|
5337
|
-
role: '
|
|
5618
|
+
role: 'gridcell',
|
|
5338
5619
|
},
|
|
5339
5620
|
standalone: false,
|
|
5340
5621
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -5371,11 +5652,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
5371
5652
|
}]
|
|
5372
5653
|
}] });
|
|
5373
5654
|
|
|
5374
|
-
/**
|
|
5375
|
-
* The CSS class to use to hide a column and its related cells in the treetable.
|
|
5376
|
-
*/
|
|
5377
|
-
const HIDDEN_COLUMN_CSS_CLASS = 'treetable-hidden-column';
|
|
5378
|
-
|
|
5379
5655
|
/*
|
|
5380
5656
|
* Copyright (c) 2018-2026 Porsche Informatik. All Rights Reserved.
|
|
5381
5657
|
* This software is released under MIT license.
|
|
@@ -5383,14 +5659,14 @@ const HIDDEN_COLUMN_CSS_CLASS = 'treetable-hidden-column';
|
|
|
5383
5659
|
*/
|
|
5384
5660
|
class TreetableHeaderRenderer {
|
|
5385
5661
|
constructor() {
|
|
5386
|
-
this.elementRef = inject(ElementRef);
|
|
5662
|
+
this.elementRef = inject((ElementRef));
|
|
5387
5663
|
this.renderer = inject(Renderer2);
|
|
5388
5664
|
}
|
|
5389
5665
|
/**
|
|
5390
5666
|
* Returns the client width of the header cell.
|
|
5391
5667
|
*/
|
|
5392
5668
|
getWidth() {
|
|
5393
|
-
return this.elementRef.nativeElement.
|
|
5669
|
+
return this.elementRef.nativeElement.getBoundingClientRect().width;
|
|
5394
5670
|
}
|
|
5395
5671
|
hide() {
|
|
5396
5672
|
this.renderer.addClass(this.elementRef.nativeElement, HIDDEN_COLUMN_CSS_CLASS);
|
|
@@ -5407,14 +5683,20 @@ class TreetableHeaderRenderer {
|
|
|
5407
5683
|
getColumnClasses() {
|
|
5408
5684
|
const classes = [];
|
|
5409
5685
|
this.elementRef.nativeElement.classList.forEach((className) => {
|
|
5410
|
-
if (className.
|
|
5686
|
+
if (className.includes(DEFAULT_COLUMN_CSS_CLASS)) {
|
|
5411
5687
|
classes.push(className);
|
|
5412
5688
|
}
|
|
5413
5689
|
});
|
|
5414
5690
|
return classes;
|
|
5415
5691
|
}
|
|
5416
5692
|
setDefaultColumnClass() {
|
|
5417
|
-
this.renderer.addClass(this.elementRef.nativeElement,
|
|
5693
|
+
this.renderer.addClass(this.elementRef.nativeElement, DEFAULT_COLUMN_CSS_CLASS);
|
|
5694
|
+
}
|
|
5695
|
+
setWidth(width) {
|
|
5696
|
+
const el = this.elementRef.nativeElement;
|
|
5697
|
+
this.renderer.setStyle(el, 'width', `${width}px`);
|
|
5698
|
+
this.renderer.setStyle(el, 'max-width', `${width}px`);
|
|
5699
|
+
this.renderer.setStyle(el, 'flex', '0 0 auto');
|
|
5418
5700
|
}
|
|
5419
5701
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TreetableHeaderRenderer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5420
5702
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: TreetableHeaderRenderer, isStandalone: false, selector: "clr-tt-column", ngImport: i0 }); }
|
|
@@ -5434,7 +5716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
5434
5716
|
*/
|
|
5435
5717
|
class TreetableCellRenderer {
|
|
5436
5718
|
constructor() {
|
|
5437
|
-
this.elementRef = inject(ElementRef);
|
|
5719
|
+
this.elementRef = inject((ElementRef));
|
|
5438
5720
|
this.renderer = inject(Renderer2);
|
|
5439
5721
|
}
|
|
5440
5722
|
setColumnClasses(columnClasses) {
|
|
@@ -5454,6 +5736,12 @@ class TreetableCellRenderer {
|
|
|
5454
5736
|
setMaxWidth(maxWidth) {
|
|
5455
5737
|
this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', maxWidth + 'px');
|
|
5456
5738
|
}
|
|
5739
|
+
setWidth(width) {
|
|
5740
|
+
const el = this.elementRef.nativeElement;
|
|
5741
|
+
this.renderer.setStyle(el, 'width', `${width}px`);
|
|
5742
|
+
this.renderer.setStyle(el, 'max-width', `${width}px`);
|
|
5743
|
+
this.renderer.setStyle(el, 'flex', '0 0 auto');
|
|
5744
|
+
}
|
|
5457
5745
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: TreetableCellRenderer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5458
5746
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: TreetableCellRenderer, isStandalone: false, selector: "clr-tt-cell", ngImport: i0 }); }
|
|
5459
5747
|
}
|
|
@@ -5498,12 +5786,13 @@ class TreetableMainRenderer {
|
|
|
5498
5786
|
this.columns = contentChildren(ClrTreetableColumn, ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
5499
5787
|
this.rules = [
|
|
5500
5788
|
this.createClassesRule(),
|
|
5501
|
-
this.
|
|
5789
|
+
this.createColumnResizeWidthRule(),
|
|
5790
|
+
this.createColumnCellWidthRule(),
|
|
5502
5791
|
this.createDisplayRule(),
|
|
5503
5792
|
];
|
|
5504
5793
|
fromEvent(window, 'resize')
|
|
5505
5794
|
.pipe(debounceTime(200), takeUntilDestroyed())
|
|
5506
|
-
.subscribe(() => this.renderRuleByKey('
|
|
5795
|
+
.subscribe(() => this.renderRuleByKey('column-cell-width', this.headers(), this.rows()));
|
|
5507
5796
|
afterRenderEffect(() => {
|
|
5508
5797
|
const headers = this.headers();
|
|
5509
5798
|
const rows = this.rows();
|
|
@@ -5516,13 +5805,13 @@ class TreetableMainRenderer {
|
|
|
5516
5805
|
const rows = this.rows();
|
|
5517
5806
|
switch (event) {
|
|
5518
5807
|
case TreetableColumnUpdate.HIDDEN:
|
|
5519
|
-
this.renderRulesByKeys(['display', '
|
|
5808
|
+
this.renderRulesByKeys(['display', 'column-cell-width'], headers, rows);
|
|
5520
5809
|
break;
|
|
5521
5810
|
case TreetableColumnUpdate.RESET_HIDDEN:
|
|
5522
5811
|
this.renderAllRules(headers, rows); // resetHidden etc.
|
|
5523
5812
|
break;
|
|
5524
5813
|
case TreetableColumnUpdate.WIDTH:
|
|
5525
|
-
this.
|
|
5814
|
+
this.renderRulesByKeys(['column-cell-width', 'column-resize-width'], headers, rows);
|
|
5526
5815
|
break;
|
|
5527
5816
|
default:
|
|
5528
5817
|
this.renderAllRules(headers, rows);
|
|
@@ -5613,14 +5902,11 @@ class TreetableMainRenderer {
|
|
|
5613
5902
|
},
|
|
5614
5903
|
};
|
|
5615
5904
|
}
|
|
5616
|
-
|
|
5905
|
+
createColumnCellWidthRule() {
|
|
5617
5906
|
return {
|
|
5618
|
-
key: '
|
|
5907
|
+
key: 'column-cell-width',
|
|
5619
5908
|
layoutPhase: 'stable',
|
|
5620
5909
|
prepareData: ctx => {
|
|
5621
|
-
if (!ctx.isFirstVisible || !ctx.header) {
|
|
5622
|
-
return null;
|
|
5623
|
-
}
|
|
5624
5910
|
return { width: ctx.header.getWidth() };
|
|
5625
5911
|
},
|
|
5626
5912
|
applyCell: (cell, data) => {
|
|
@@ -5628,6 +5914,24 @@ class TreetableMainRenderer {
|
|
|
5628
5914
|
},
|
|
5629
5915
|
};
|
|
5630
5916
|
}
|
|
5917
|
+
createColumnResizeWidthRule() {
|
|
5918
|
+
return {
|
|
5919
|
+
key: 'column-resize-width',
|
|
5920
|
+
layoutPhase: 'unstable',
|
|
5921
|
+
prepareData: ctx => {
|
|
5922
|
+
if (!ctx.state?.width) {
|
|
5923
|
+
return null;
|
|
5924
|
+
}
|
|
5925
|
+
return { width: ctx.state.width };
|
|
5926
|
+
},
|
|
5927
|
+
applyHeader: (header, data) => {
|
|
5928
|
+
header.setWidth(data.width);
|
|
5929
|
+
},
|
|
5930
|
+
applyCell: (cell, data) => {
|
|
5931
|
+
cell.setWidth(data.width);
|
|
5932
|
+
},
|
|
5933
|
+
};
|
|
5934
|
+
}
|
|
5631
5935
|
createDisplayRule() {
|
|
5632
5936
|
return {
|
|
5633
5937
|
key: 'display',
|
|
@@ -5858,7 +6162,8 @@ class ClrTreetableModule {
|
|
|
5858
6162
|
ClrTreetableFilter,
|
|
5859
6163
|
ClrTreetableStringFilter, ClrTreetableRecursiveRows,
|
|
5860
6164
|
ClrTreetableRowCheckbox,
|
|
5861
|
-
ClrTreetableColumnManagerMenuComponent
|
|
6165
|
+
ClrTreetableColumnManagerMenuComponent,
|
|
6166
|
+
ClrTreetableColumnSeparator], imports: [CommonModule, ClarityModule, ReactiveFormsModule, FormsModule, CdkTrapFocusModule], exports: [ClrTreetable,
|
|
5862
6167
|
ClrTreetableRow,
|
|
5863
6168
|
ClrTreetableCell,
|
|
5864
6169
|
ClrTreetableColumn,
|
|
@@ -5884,6 +6189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
5884
6189
|
ClrTreetableRecursiveRows,
|
|
5885
6190
|
ClrTreetableRowCheckbox,
|
|
5886
6191
|
ClrTreetableColumnManagerMenuComponent,
|
|
6192
|
+
ClrTreetableColumnSeparator,
|
|
5887
6193
|
],
|
|
5888
6194
|
exports: [CLR_TREETABLE_DIRECTIVES],
|
|
5889
6195
|
}]
|
|
@@ -5941,6 +6247,8 @@ class ClrViewEditSection {
|
|
|
5941
6247
|
this._isCollapsed = false;
|
|
5942
6248
|
this._titleTextStyle = 'subsection';
|
|
5943
6249
|
this._titleTextFontWeight = 'medium';
|
|
6250
|
+
this._showBadge = false;
|
|
6251
|
+
this._badgeClass = 'label label-primary';
|
|
5944
6252
|
this._isCollapsedChange = new EventEmitter();
|
|
5945
6253
|
this._editModeChanged = new EventEmitter(false);
|
|
5946
6254
|
this._submitted = new EventEmitter(false);
|
|
@@ -5983,7 +6291,7 @@ class ClrViewEditSection {
|
|
|
5983
6291
|
}
|
|
5984
6292
|
}
|
|
5985
6293
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrViewEditSection, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5986
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrViewEditSection, isStandalone: false, selector: "clr-view-edit-section", inputs: { _title: ["clrTitle", "_title"], _saveText: ["clrSaveText", "_saveText"], _preventSave: ["clrPreventModeChangeOnSave", "_preventSave"], _cancelText: ["clrCancelText", "_cancelText"], _editable: ["clrEditable", "_editable"], _editIcon: ["clrEditIcon", "_editIcon"], _isCollapsible: ["clrIsCollapsible", "_isCollapsible"], _isCollapsed: ["clrIsCollapsed", "_isCollapsed"], _titleTextStyle: ["clrTitleTextStyle", "_titleTextStyle"], _titleTextFontWeight: ["clrTitleTextFontWeight", "_titleTextFontWeight"], viewRef: ["clrViewRef", "viewRef"], editRef: ["clrEditRef", "editRef"], editMode: ["clrEditMode", "editMode"] }, outputs: { _isCollapsedChange: "clrIsCollapsedChange", _editModeChanged: "clrEditModeChange", _submitted: "clrSectionSubmitted", _cancelled: "clrSectionEditCancelled" }, ngImport: i0, template: "<div class=\"card view-edit-section\" (keyup.escape)=\"onCancel()\">\n <div class=\"card-block\">\n <div class=\"card-title\" [attr.cds-text]=\"_titleTextStyle + ' ' + _titleTextFontWeight\">\n @if (_isCollapsible && !editMode) {\n <span\n class=\"ces-title-trigger\"\n (click)=\"onCollapseExpand()\"\n (keydown.enter)=\"onCollapseExpand()\"\n (keydown.space)=\"onCollapseExpand(); $event.preventDefault()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"!_isCollapsed\"\n >\n
|
|
6294
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrViewEditSection, isStandalone: false, selector: "clr-view-edit-section", inputs: { _title: ["clrTitle", "_title"], _saveText: ["clrSaveText", "_saveText"], _preventSave: ["clrPreventModeChangeOnSave", "_preventSave"], _cancelText: ["clrCancelText", "_cancelText"], _editable: ["clrEditable", "_editable"], _editIcon: ["clrEditIcon", "_editIcon"], _isCollapsible: ["clrIsCollapsible", "_isCollapsible"], _isCollapsed: ["clrIsCollapsed", "_isCollapsed"], _titleTextStyle: ["clrTitleTextStyle", "_titleTextStyle"], _titleTextFontWeight: ["clrTitleTextFontWeight", "_titleTextFontWeight"], _showBadge: ["clrShowBadge", "_showBadge"], _badgeContent: ["clrBadgeContent", "_badgeContent"], _badgeClass: ["clrBadgeClass", "_badgeClass"], viewRef: ["clrViewRef", "viewRef"], editRef: ["clrEditRef", "editRef"], editMode: ["clrEditMode", "editMode"] }, outputs: { _isCollapsedChange: "clrIsCollapsedChange", _editModeChanged: "clrEditModeChange", _submitted: "clrSectionSubmitted", _cancelled: "clrSectionEditCancelled" }, ngImport: i0, template: "<div class=\"card view-edit-section\" (keyup.escape)=\"onCancel()\">\n <div class=\"card-block\">\n <div class=\"card-title\" [attr.cds-text]=\"_titleTextStyle + ' ' + _titleTextFontWeight\">\n <ng-template #titleContainer>\n {{ _title }} @if (_showBadge) { @if (_badgeContent) {\n <span class=\"ves-badge\" [ngClass]=\"_badgeClass\">{{ _badgeContent }}</span>\n }\n <ng-content select=\"[badge]\"></ng-content>\n }\n </ng-template>\n @if (_isCollapsible && !editMode) {\n <span\n class=\"ces-title-trigger\"\n (click)=\"onCollapseExpand()\"\n (keydown.enter)=\"onCollapseExpand()\"\n (keydown.space)=\"onCollapseExpand(); $event.preventDefault()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"!_isCollapsed\"\n >\n <ng-template [ngTemplateOutlet]=\"titleContainer\"></ng-template>\n </span>\n <button type=\"button\" (click)=\"onCollapseExpand()\" class=\"btn btn-icon btn-link ces-caret-btn\">\n <cds-icon shape=\"angle\" size=\"20\" class=\"ces-caret-icon\" [@rotateIcon]=\"_isCollapsed\"></cds-icon>\n </button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleContainer\"></ng-template>\n }\n <div class=\"ves-actions\">\n @if (_editable && !editMode && actionBlock.children.length == 0) {\n <button type=\"button\" (click)=\"onEdit()\" class=\"btn btn-icon btn-link ves-action\">\n <cds-icon class=\"ves-edit-icon\" [shape]=\"_editIcon\" size=\"20\"></cds-icon>\n </button>\n }\n <div #actionBlock>\n <ng-content select=\"[action-block]\"></ng-content>\n </div>\n </div>\n </div>\n @if (!(_isCollapsed && _isCollapsible)) {\n <div class=\"card-text\" [@collapseExpandAnimation]=\"initialized\">\n @if (!editMode) {\n <ng-template [ngTemplateOutlet]=\"viewRef\"></ng-template>\n } @if (editMode) {\n <ng-template [ngTemplateOutlet]=\"editRef\"></ng-template>\n } @if (editMode) {\n <form clrForm (ngSubmit)=\"onSubmit()\" class=\"button-bar\">\n <button class=\"btn btn-primary ves-save\" type=\"submit\">{{ _saveText }}</button>\n <button class=\"btn ves-cancel\" (click)=\"onCancel()\" type=\"button\">{{ _cancelText }}</button>\n </form>\n }\n </div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], animations: [
|
|
5987
6295
|
trigger('collapseExpandAnimation', [
|
|
5988
6296
|
transition(':enter', [
|
|
5989
6297
|
style({ opacity: 0, height: 0, overflow: 'hidden' }),
|
|
@@ -6021,7 +6329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
6021
6329
|
transition('true => false', animate('300ms ease-out')),
|
|
6022
6330
|
transition('false => true', animate('300ms ease-in')),
|
|
6023
6331
|
]),
|
|
6024
|
-
], standalone: false, template: "<div class=\"card view-edit-section\" (keyup.escape)=\"onCancel()\">\n <div class=\"card-block\">\n <div class=\"card-title\" [attr.cds-text]=\"_titleTextStyle + ' ' + _titleTextFontWeight\">\n @if (_isCollapsible && !editMode) {\n <span\n class=\"ces-title-trigger\"\n (click)=\"onCollapseExpand()\"\n (keydown.enter)=\"onCollapseExpand()\"\n (keydown.space)=\"onCollapseExpand(); $event.preventDefault()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"!_isCollapsed\"\n >\n
|
|
6332
|
+
], standalone: false, template: "<div class=\"card view-edit-section\" (keyup.escape)=\"onCancel()\">\n <div class=\"card-block\">\n <div class=\"card-title\" [attr.cds-text]=\"_titleTextStyle + ' ' + _titleTextFontWeight\">\n <ng-template #titleContainer>\n {{ _title }} @if (_showBadge) { @if (_badgeContent) {\n <span class=\"ves-badge\" [ngClass]=\"_badgeClass\">{{ _badgeContent }}</span>\n }\n <ng-content select=\"[badge]\"></ng-content>\n }\n </ng-template>\n @if (_isCollapsible && !editMode) {\n <span\n class=\"ces-title-trigger\"\n (click)=\"onCollapseExpand()\"\n (keydown.enter)=\"onCollapseExpand()\"\n (keydown.space)=\"onCollapseExpand(); $event.preventDefault()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"!_isCollapsed\"\n >\n <ng-template [ngTemplateOutlet]=\"titleContainer\"></ng-template>\n </span>\n <button type=\"button\" (click)=\"onCollapseExpand()\" class=\"btn btn-icon btn-link ces-caret-btn\">\n <cds-icon shape=\"angle\" size=\"20\" class=\"ces-caret-icon\" [@rotateIcon]=\"_isCollapsed\"></cds-icon>\n </button>\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleContainer\"></ng-template>\n }\n <div class=\"ves-actions\">\n @if (_editable && !editMode && actionBlock.children.length == 0) {\n <button type=\"button\" (click)=\"onEdit()\" class=\"btn btn-icon btn-link ves-action\">\n <cds-icon class=\"ves-edit-icon\" [shape]=\"_editIcon\" size=\"20\"></cds-icon>\n </button>\n }\n <div #actionBlock>\n <ng-content select=\"[action-block]\"></ng-content>\n </div>\n </div>\n </div>\n @if (!(_isCollapsed && _isCollapsible)) {\n <div class=\"card-text\" [@collapseExpandAnimation]=\"initialized\">\n @if (!editMode) {\n <ng-template [ngTemplateOutlet]=\"viewRef\"></ng-template>\n } @if (editMode) {\n <ng-template [ngTemplateOutlet]=\"editRef\"></ng-template>\n } @if (editMode) {\n <form clrForm (ngSubmit)=\"onSubmit()\" class=\"button-bar\">\n <button class=\"btn btn-primary ves-save\" type=\"submit\">{{ _saveText }}</button>\n <button class=\"btn ves-cancel\" (click)=\"onCancel()\" type=\"button\">{{ _cancelText }}</button>\n </form>\n }\n </div>\n }\n </div>\n</div>\n" }]
|
|
6025
6333
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { _title: [{
|
|
6026
6334
|
type: Input,
|
|
6027
6335
|
args: ['clrTitle']
|
|
@@ -6052,6 +6360,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
6052
6360
|
}], _titleTextFontWeight: [{
|
|
6053
6361
|
type: Input,
|
|
6054
6362
|
args: ['clrTitleTextFontWeight']
|
|
6363
|
+
}], _showBadge: [{
|
|
6364
|
+
type: Input,
|
|
6365
|
+
args: ['clrShowBadge']
|
|
6366
|
+
}], _badgeContent: [{
|
|
6367
|
+
type: Input,
|
|
6368
|
+
args: ['clrBadgeContent']
|
|
6369
|
+
}], _badgeClass: [{
|
|
6370
|
+
type: Input,
|
|
6371
|
+
args: ['clrBadgeClass']
|
|
6055
6372
|
}], viewRef: [{
|
|
6056
6373
|
type: Input,
|
|
6057
6374
|
args: ['clrViewRef']
|
|
@@ -6403,7 +6720,7 @@ class ClrHistoryHttpImplService {
|
|
|
6403
6720
|
}
|
|
6404
6721
|
return url;
|
|
6405
6722
|
}
|
|
6406
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrHistoryHttpImplService, deps: [{ token: HISTORY_NOTIFICATION_URL_PROVIDER }, { token: i1$
|
|
6723
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrHistoryHttpImplService, deps: [{ token: HISTORY_NOTIFICATION_URL_PROVIDER }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6407
6724
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrHistoryHttpImplService }); }
|
|
6408
6725
|
}
|
|
6409
6726
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrHistoryHttpImplService, decorators: [{
|
|
@@ -6411,7 +6728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
6411
6728
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
6412
6729
|
type: Inject,
|
|
6413
6730
|
args: [HISTORY_NOTIFICATION_URL_PROVIDER]
|
|
6414
|
-
}] }, { type: i1$
|
|
6731
|
+
}] }, { type: i1$3.HttpClient }] });
|
|
6415
6732
|
|
|
6416
6733
|
/*
|
|
6417
6734
|
* Copyright (c) 2018-2025 Porsche Informatik. All Rights Reserved.
|
|
@@ -16868,7 +17185,7 @@ class ClrCopyToClipboard {
|
|
|
16868
17185
|
});
|
|
16869
17186
|
}
|
|
16870
17187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrCopyToClipboard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16871
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.18", type: ClrCopyToClipboard, isStandalone: true, selector: "clr-copy-to-clipboard", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, tooltipText: { classPropertyName: "tooltipText", publicName: "tooltipText", isSignal: true, isRequired: false, transformFunction: null }, hiddenUntilHovered: { classPropertyName: "hiddenUntilHovered", publicName: "hiddenUntilHovered", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.hidden-until-hovered": "hiddenUntilHovered()", "class.parent-hovered": "parentHovered" } }, ngImport: i0, template: "<clr-tooltip>\n <cds-icon\n clrTooltipTrigger\n class=\"copy-to-clipboard-icon\"\n [cdkCopyToClipboard]=\"trimmedValue()\"\n (cdkCopyToClipboardCopied)=\"onCopied($event)\"\n [shape]=\"showCopiedIcon ? 'success-standard' : 'copy-to-clipboard'\"\n [ngClass]=\"{ 'attribute-was-copied-color': showCopiedIcon }\"\n (click)=\"$event.stopPropagation()\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.preventDefault()\"\n ></cds-icon>\n <clr-tooltip-content\n class=\"clr-tooltip-fit-content\"\n [clrSize]=\"tooltipSize\"\n [clrPosition]=\"tooltipPosition\"\n *clrIfOpen\n >{{ tooltipText() }}</clr-tooltip-content\n >\n</clr-tooltip>\n", styles: [":host,.tooltip{display:flex;align-items:center}.copy-to-clipboard-icon{cursor:pointer;color:var(--cds-alias-status-disabled-tint)!important}.copy-to-clipboard-icon:hover{color:var(--cds-alias-typography-link-color)!important}.attribute-was-copied-color{color:var(--cds-alias-status-success)!important}:host(.hidden-until-hovered){visibility:hidden;opacity:0;transition:opacity .15s ease,visibility .15s ease}:host(.hidden-until-hovered.parent-hovered),:host(.hidden-until-hovered:focus-within){visibility:visible;opacity:1}.copy-to-clipboard-parent{display:flex;flex-direction:row;align-items:center;gap:.25rem}\n"], dependencies: [{ kind: "directive", type: CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "ngmodule", type: ClrTooltipModule }, { kind: "component", type: i1$
|
|
17188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.18", type: ClrCopyToClipboard, isStandalone: true, selector: "clr-copy-to-clipboard", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, tooltipText: { classPropertyName: "tooltipText", publicName: "tooltipText", isSignal: true, isRequired: false, transformFunction: null }, hiddenUntilHovered: { classPropertyName: "hiddenUntilHovered", publicName: "hiddenUntilHovered", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.hidden-until-hovered": "hiddenUntilHovered()", "class.parent-hovered": "parentHovered" } }, ngImport: i0, template: "<clr-tooltip>\n <cds-icon\n clrTooltipTrigger\n class=\"copy-to-clipboard-icon\"\n [cdkCopyToClipboard]=\"trimmedValue()\"\n (cdkCopyToClipboardCopied)=\"onCopied($event)\"\n [shape]=\"showCopiedIcon ? 'success-standard' : 'copy-to-clipboard'\"\n [ngClass]=\"{ 'attribute-was-copied-color': showCopiedIcon }\"\n (click)=\"$event.stopPropagation()\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.preventDefault()\"\n ></cds-icon>\n <clr-tooltip-content\n class=\"clr-tooltip-fit-content\"\n [clrSize]=\"tooltipSize\"\n [clrPosition]=\"tooltipPosition\"\n *clrIfOpen\n >{{ tooltipText() }}</clr-tooltip-content\n >\n</clr-tooltip>\n", styles: [":host,.tooltip{display:flex;align-items:center}.copy-to-clipboard-icon{cursor:pointer;color:var(--cds-alias-status-disabled-tint)!important}.copy-to-clipboard-icon:hover{color:var(--cds-alias-typography-link-color)!important}.attribute-was-copied-color{color:var(--cds-alias-status-success)!important}:host(.hidden-until-hovered){visibility:hidden;opacity:0;transition:opacity .15s ease,visibility .15s ease}:host(.hidden-until-hovered.parent-hovered),:host(.hidden-until-hovered:focus-within){visibility:visible;opacity:1}.copy-to-clipboard-parent{display:flex;flex-direction:row;align-items:center;gap:.25rem}\n"], dependencies: [{ kind: "directive", type: CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "ngmodule", type: ClrTooltipModule }, { kind: "component", type: i1$4.ClrTooltip, selector: "clr-tooltip" }, { kind: "directive", type: i1$4.ClrTooltipTrigger, selector: "[clrTooltipTrigger]" }, { kind: "component", type: i1$4.ClrTooltipContent, selector: "clr-tooltip-content", inputs: ["id", "clrPosition", "clrSize"] }, { kind: "directive", type: i2$3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16872
17189
|
}
|
|
16873
17190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrCopyToClipboard, decorators: [{
|
|
16874
17191
|
type: Component,
|
|
@@ -17124,7 +17441,7 @@ class ClrSummaryItemValue {
|
|
|
17124
17441
|
return false;
|
|
17125
17442
|
}
|
|
17126
17443
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrSummaryItemValue, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrSummaryItemValue, isStandalone: true, selector: "clr-summary-item-value", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { properties: { "class.has-icon": "this.hasIcon", "class.has-text": "this.hasText", "class.hidden": "this.isHidden" } }, providers: [provideAnimations()], viewQueries: [{ propertyName: "projectedContent", first: true, predicate: ["projectedContent"], descendants: true }, { propertyName: "valueElement", first: true, predicate: ["valueElement"], descendants: true }], ngImport: i0, template: "@if (icon() !== undefined && icon() !== null && icon() !== '') { @if (href()) { @if (tooltip()) {\n<clr-tooltip>\n <a clrTooltipTrigger class=\"value-icon-link\" [href]=\"href()\" [attr.target]=\"target() ?? null\" (click)=\"handleClick()\">\n <cds-icon [shape]=\"icon()\" class=\"value-icon value-link\"></cds-icon>\n </a>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ tooltip() }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<a class=\"value-icon-link\" [href]=\"href()\" [attr.target]=\"target() ?? null\" (click)=\"handleClick()\">\n <cds-icon [shape]=\"icon()\" class=\"value-icon value-link\"></cds-icon>\n</a>\n} } @else if (hasClickHandler) { @if (tooltip()) {\n<clr-tooltip>\n <cds-icon\n clrTooltipTrigger\n [shape]=\"icon()\"\n class=\"value-icon value-link\"\n tabindex=\"0\"\n (click)=\"handleClick()\"\n (keydown.enter)=\"handleClick()\"\n ></cds-icon>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ tooltip() }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<cds-icon\n [shape]=\"icon()\"\n class=\"value-icon value-link\"\n tabindex=\"0\"\n (click)=\"handleClick()\"\n (keydown.enter)=\"handleClick()\"\n></cds-icon>\n} } @else { @if (tooltip()) {\n<clr-tooltip>\n <cds-icon clrTooltipTrigger [shape]=\"icon()\" class=\"value-icon value-icon-neutral\"></cds-icon>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ tooltip() }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<cds-icon [shape]=\"icon()\" class=\"value-icon value-icon-neutral\"></cds-icon>\n} } } @else if (value() !== undefined && value() !== null && value() !== '') { @if (href()) { @if (effectiveTooltip) {\n<clr-tooltip>\n <a\n #valueElement\n class=\"value value-link\"\n clrTooltipTrigger\n [href]=\"href()\"\n [attr.target]=\"target() ?? null\"\n (click)=\"handleClick()\"\n >\n {{ value() }}\n </a>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ effectiveTooltip }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<a #valueElement class=\"value value-link\" [href]=\"href()\" [attr.target]=\"target() ?? null\" (click)=\"handleClick()\">\n {{ value() }}\n</a>\n} } @else if (hasClickHandler) {\n<clr-tooltip>\n <span\n #valueElement\n class=\"value value-link\"\n clrTooltipTrigger\n (click)=\"handleClick()\"\n (keydown.enter)=\"handleClick()\"\n >\n {{ value() }}\n </span>\n @if (effectiveTooltip) {\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ effectiveTooltip }}</clr-tooltip-content\n >\n }\n</clr-tooltip>\n} @else if(effectiveTooltip) {\n<clr-tooltip>\n <span #valueElement class=\"value\" clrTooltipTrigger>{{ value() }}</span>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ effectiveTooltip }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<span #valueElement class=\"value\">{{ value() }}</span>\n} } @else {\n<span class=\"projected-wrapper\" #projectedContent>\n <ng-content></ng-content>\n</span>\n}\n", styles: [":host{display:inline-flex;flex-direction:row;align-items:center;gap:.25rem;flex:0 1 auto;max-width:100%;min-width:0;overflow:visible}:host.hidden{display:none}:host(.has-icon){flex:0 0 auto;width:auto}.value,.value-link,.projected-wrapper,clr-tooltip [clrTooltipTrigger]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}cds-icon{flex-shrink:0}.value-icon-link{display:inline-flex;align-items:center;text-decoration:none;cursor:pointer}.value-icon-link cds-icon{color:var(--cds-alias-typography-link-color)}.value-icon-link:hover cds-icon,.value-icon-link:focus cds-icon{color:var(--cds-alias-typography-link-color-hover)}.value-icon-link:visited cds-icon{color:var(--cds-alias-typography-link-color-visited)}.value-icon{height:20px;width:20px}.value-icon-neutral{color:var(--cds-alias-status-neutral)}.value-link,.edit-link{color:var(--cds-alias-typography-link-color);text-decoration:underline;cursor:pointer}.value-link:visited,.edit-link:visited{color:var(--cds-alias-typography-link-color-visited)}.value-link:hover,.value-link:focus,.edit-link:hover,.edit-link:focus{color:var(--cds-alias-typography-link-color-hover);text-decoration:underline}.value{display:inline-block}clr-tooltip{display:inline-flex;flex:1 1 auto;min-width:0;overflow:visible}clr-tooltip [clrTooltipTrigger]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep clr-tooltip-content{overflow-wrap:break-word;word-wrap:break-word;hyphens:auto}::ng-deep .tooltip-content{overflow-wrap:break-word;word-wrap:break-word;hyphens:auto}:host(.error){color:var(--cds-alias-status-danger)}:host(.error) cds-icon{color:var(--cds-alias-status-danger)!important}:host(.error) .value{color:var(--cds-alias-status-danger)}:host(.warning){color:var(--cds-alias-status-warning)}:host(.warning) cds-icon{color:var(--cds-alias-status-warning)!important}:host(.warning) .value{color:var(--cds-alias-status-warning)}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: ClarityModule }, { kind: "component", type: i2.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i2$3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "component", type: i1$
|
|
17444
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrSummaryItemValue, isStandalone: true, selector: "clr-summary-item-value", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { properties: { "class.has-icon": "this.hasIcon", "class.has-text": "this.hasText", "class.hidden": "this.isHidden" } }, providers: [provideAnimations()], viewQueries: [{ propertyName: "projectedContent", first: true, predicate: ["projectedContent"], descendants: true }, { propertyName: "valueElement", first: true, predicate: ["valueElement"], descendants: true }], ngImport: i0, template: "@if (icon() !== undefined && icon() !== null && icon() !== '') { @if (href()) { @if (tooltip()) {\n<clr-tooltip>\n <a clrTooltipTrigger class=\"value-icon-link\" [href]=\"href()\" [attr.target]=\"target() ?? null\" (click)=\"handleClick()\">\n <cds-icon [shape]=\"icon()\" class=\"value-icon value-link\"></cds-icon>\n </a>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ tooltip() }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<a class=\"value-icon-link\" [href]=\"href()\" [attr.target]=\"target() ?? null\" (click)=\"handleClick()\">\n <cds-icon [shape]=\"icon()\" class=\"value-icon value-link\"></cds-icon>\n</a>\n} } @else if (hasClickHandler) { @if (tooltip()) {\n<clr-tooltip>\n <cds-icon\n clrTooltipTrigger\n [shape]=\"icon()\"\n class=\"value-icon value-link\"\n tabindex=\"0\"\n (click)=\"handleClick()\"\n (keydown.enter)=\"handleClick()\"\n ></cds-icon>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ tooltip() }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<cds-icon\n [shape]=\"icon()\"\n class=\"value-icon value-link\"\n tabindex=\"0\"\n (click)=\"handleClick()\"\n (keydown.enter)=\"handleClick()\"\n></cds-icon>\n} } @else { @if (tooltip()) {\n<clr-tooltip>\n <cds-icon clrTooltipTrigger [shape]=\"icon()\" class=\"value-icon value-icon-neutral\"></cds-icon>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ tooltip() }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<cds-icon [shape]=\"icon()\" class=\"value-icon value-icon-neutral\"></cds-icon>\n} } } @else if (value() !== undefined && value() !== null && value() !== '') { @if (href()) { @if (effectiveTooltip) {\n<clr-tooltip>\n <a\n #valueElement\n class=\"value value-link\"\n clrTooltipTrigger\n [href]=\"href()\"\n [attr.target]=\"target() ?? null\"\n (click)=\"handleClick()\"\n >\n {{ value() }}\n </a>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ effectiveTooltip }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<a #valueElement class=\"value value-link\" [href]=\"href()\" [attr.target]=\"target() ?? null\" (click)=\"handleClick()\">\n {{ value() }}\n</a>\n} } @else if (hasClickHandler) {\n<clr-tooltip>\n <span\n #valueElement\n class=\"value value-link\"\n clrTooltipTrigger\n (click)=\"handleClick()\"\n (keydown.enter)=\"handleClick()\"\n >\n {{ value() }}\n </span>\n @if (effectiveTooltip) {\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ effectiveTooltip }}</clr-tooltip-content\n >\n }\n</clr-tooltip>\n} @else if(effectiveTooltip) {\n<clr-tooltip>\n <span #valueElement class=\"value\" clrTooltipTrigger>{{ value() }}</span>\n <clr-tooltip-content [clrSize]=\"tooltipSize\" [clrPosition]=\"tooltipPosition\" *clrIfOpen>\n {{ effectiveTooltip }}</clr-tooltip-content\n >\n</clr-tooltip>\n} @else {\n<span #valueElement class=\"value\">{{ value() }}</span>\n} } @else {\n<span class=\"projected-wrapper\" #projectedContent>\n <ng-content></ng-content>\n</span>\n}\n", styles: [":host{display:inline-flex;flex-direction:row;align-items:center;gap:.25rem;flex:0 1 auto;max-width:100%;min-width:0;overflow:visible}:host.hidden{display:none}:host(.has-icon){flex:0 0 auto;width:auto}.value,.value-link,.projected-wrapper,clr-tooltip [clrTooltipTrigger]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}cds-icon{flex-shrink:0}.value-icon-link{display:inline-flex;align-items:center;text-decoration:none;cursor:pointer}.value-icon-link cds-icon{color:var(--cds-alias-typography-link-color)}.value-icon-link:hover cds-icon,.value-icon-link:focus cds-icon{color:var(--cds-alias-typography-link-color-hover)}.value-icon-link:visited cds-icon{color:var(--cds-alias-typography-link-color-visited)}.value-icon{height:20px;width:20px}.value-icon-neutral{color:var(--cds-alias-status-neutral)}.value-link,.edit-link{color:var(--cds-alias-typography-link-color);text-decoration:underline;cursor:pointer}.value-link:visited,.edit-link:visited{color:var(--cds-alias-typography-link-color-visited)}.value-link:hover,.value-link:focus,.edit-link:hover,.edit-link:focus{color:var(--cds-alias-typography-link-color-hover);text-decoration:underline}.value{display:inline-block}clr-tooltip{display:inline-flex;flex:1 1 auto;min-width:0;overflow:visible}clr-tooltip [clrTooltipTrigger]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep clr-tooltip-content{overflow-wrap:break-word;word-wrap:break-word;hyphens:auto}::ng-deep .tooltip-content{overflow-wrap:break-word;word-wrap:break-word;hyphens:auto}:host(.error){color:var(--cds-alias-status-danger)}:host(.error) cds-icon{color:var(--cds-alias-status-danger)!important}:host(.error) .value{color:var(--cds-alias-status-danger)}:host(.warning){color:var(--cds-alias-status-warning)}:host(.warning) cds-icon{color:var(--cds-alias-status-warning)!important}:host(.warning) .value{color:var(--cds-alias-status-warning)}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: ClarityModule }, { kind: "component", type: i2.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i2$3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "component", type: i1$4.ClrTooltip, selector: "clr-tooltip" }, { kind: "directive", type: i1$4.ClrTooltipTrigger, selector: "[clrTooltipTrigger]" }, { kind: "component", type: i1$4.ClrTooltipContent, selector: "clr-tooltip-content", inputs: ["id", "clrPosition", "clrSize"] }] }); }
|
|
17128
17445
|
}
|
|
17129
17446
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrSummaryItemValue, decorators: [{
|
|
17130
17447
|
type: Component,
|
|
@@ -17750,7 +18067,7 @@ class ClrSummaryArea {
|
|
|
17750
18067
|
}
|
|
17751
18068
|
}
|
|
17752
18069
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrSummaryArea, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17753
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrSummaryArea, isStandalone: true, selector: "clr-summary-area", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, localStorageKey: { classPropertyName: "localStorageKey", publicName: "localStorageKey", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, warning: { classPropertyName: "warning", publicName: "warning", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "items", predicate: ClrSummaryItem, descendants: true }], viewQueries: [{ propertyName: "panelsRef", first: true, predicate: ["panelsRef"], descendants: true, static: true }], ngImport: i0, template: "<div\n #panelsRef\n class=\"summary-area-panels\"\n [class.is-active]=\"!isCollapsed()\"\n [class.loading-active]=\"hasLoading\"\n [style.height]=\"panelHeight\"\n>\n <div\n class=\"summary-area-panel summary-area-panel--state\"\n [class.is-active]=\"!isCollapsed() && (hasLoading || hasError || hasWarning)\"\n [class.is-error]=\"hasError\"\n [class.is-warning]=\"hasWarning\"\n [style.--rows]=\"currentRows()\"\n [attr.aria-hidden]=\"isCollapsed() || !(hasLoading || hasError || hasWarning) ? 'true' : 'false'\"\n [attr.inert]=\"isCollapsed() || !(hasLoading || hasError || hasWarning) ? '' : null\"\n >\n <div class=\"summary-area-panel__body\">\n <div\n class=\"summary-area-loading\"\n [class.is-visible]=\"loadingVisible\"\n [attr.aria-hidden]=\"!hasLoading\"\n [style.height]=\"loadingPanelHeight\"\n >\n <clr-spinner [clrMedium]=\"true\"></clr-spinner>\n <span class=\"loading-text\">{{ loadingText }}</span>\n </div>\n @if (hasError) {\n <div class=\"summary-area-alert\">\n <clr-alert [clrAlertLightweight]=\"true\" [clrAlertType]=\"'danger'\">\n <clr-alert-item>\n @if (errorLinkText && errorClick) {\n <span class=\"alert-text\">{{ errorText }}</span>\n <span class=\"alert-action\" (click)=\"errorClick()\" (keydown.enter)=\"errorClick()\">{{ errorLinkText }}</span>\n } @else if (errorClick) {\n <span class=\"alert-action\" (click)=\"errorClick()\" (keydown.enter)=\"errorClick()\">{{ errorText }}</span>\n } @else {\n <span class=\"alert-text\">{{ errorText }}</span>\n }\n </clr-alert-item>\n </clr-alert>\n </div>\n } @else if (hasWarning) {\n <div class=\"summary-area-alert\">\n <clr-alert [clrAlertLightweight]=\"true\" [clrAlertType]=\"'warning'\">\n <clr-alert-item>\n @if (warningLinkText && warningClick) {\n <span class=\"alert-text\">{{ warningText }}</span>\n <span class=\"alert-action\" (click)=\"warningClick()\" (keydown.enter)=\"warningClick()\">\n {{ warningLinkText }}\n </span>\n } @else if (warningClick) {\n <span class=\"alert-action\" (click)=\"warningClick()\" (keydown.enter)=\"warningClick()\"\n >{{ warningText }}</span\n >\n } @else {\n <span class=\"alert-text\">{{ warningText }}</span>\n }\n </clr-alert-item>\n </clr-alert>\n </div>\n }\n </div>\n </div>\n\n <div\n class=\"summary-area-panel summary-area-panel--grid\"\n [class.is-active]=\"!isCollapsed() && !hasError && !hasWarning && !hasLoading\"\n [attr.aria-hidden]=\"isCollapsed() || hasError || hasWarning || hasLoading ? 'true' : 'false'\"\n [attr.inert]=\"isCollapsed() || hasError || hasWarning || hasLoading ? '' : null\"\n >\n <div class=\"summary-area-panel__body\">\n <div class=\"summary-area-container\">\n <div class=\"summary-grid\" [style.--columns]=\"currentColumns\" [style.--rows]=\"currentRows()\">\n @for (item of visibleItems; track item) {\n <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".summary-area-container,.summary-area-alert{margin:0 24px 9px;max-width:100%;overflow-x:auto}.summary-grid{display:grid;grid-template-columns:repeat(var(--columns),minmax(0,320px));grid-template-rows:repeat(var(--rows),auto);grid-auto-flow:column;max-width:100%;column-gap:36px;row-gap:6px;padding:3px 0}.summary-item{max-width:320px;min-width:0;height:20px;overflow:visible;display:flex;flex-direction:column}clr-alert-item{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap}clr-alert-item .alert-text{flex:none;width:auto;white-space:nowrap;align-self:flex-start}clr-alert-item .alert-action{white-space:nowrap}.alert-action{color:var(--cds-alias-typography-link-color)!important;cursor:pointer}.alert-action:visited{color:var(--cds-alias-typography-link-color-visited)}.alert-action:hover,.alert-action:focus{color:var(--cds-alias-typography-link-color-hover)}clr-alert ::ng-deep>.alert-lightweight{padding-left:0;padding-right:0}.summary-area-panels{position:relative;height:0;opacity:0;transform-origin:top center;pointer-events:none;visibility:hidden;overflow:hidden;margin:0 0 9px;transition:height .3s cubic-bezier(.4,0,.2,1),opacity .4s ease-in-out,visibility .4s ease-in-out}.summary-area-panels.is-active{opacity:1;pointer-events:auto;visibility:visible;overflow:visible;transition:height .3s cubic-bezier(.4,0,.2,1),opacity .4s ease-in-out,visibility .4s ease-in-out}.summary-area-panels.loading-active{display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity .4s ease-in-out}.summary-area-panel{transform-origin:top center;opacity:0;pointer-events:none;transition:opacity .4s ease-in-out;position:absolute;top:0;left:0;right:0}.summary-area-panel__body{will-change:opacity}.summary-area-panel.is-active{opacity:1;pointer-events:auto;position:relative;transition:opacity .4s ease-in-out}.summary-area-panel.is-active .summary-area-panel__body{overflow:visible}.summary-area-loading{display:flex;align-items:center;justify-content:center;gap:.75rem;margin:0 24px;padding:3px 0;opacity:0;transition:opacity 0s ease-in-out}.summary-area-loading.is-visible{opacity:1;transition:opacity .4s ease-in-out}.summary-area-loading .loading-text{color:var(--cds-alias-typography-color-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ClarityModule }, { kind: "component", type: i2$4.ClrAlert, selector: "clr-alert", inputs: ["clrAlertSizeSmall", "clrAlertClosable", "clrAlertAppLevel", "clrCloseButtonAriaLabel", "clrAlertLightweight", "clrAlertType", "clrAlertIcon", "clrAlertClosed"], outputs: ["clrAlertClosedChange"] }, { kind: "component", type: i2$4.ClrAlertItem, selector: "clr-alert-item" }, { kind: "directive", type: i2$4.ClrAlertText, selector: ".alert-text" }, { kind: "component", type:
|
|
18070
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ClrSummaryArea, isStandalone: true, selector: "clr-summary-area", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, localStorageKey: { classPropertyName: "localStorageKey", publicName: "localStorageKey", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, warning: { classPropertyName: "warning", publicName: "warning", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "items", predicate: ClrSummaryItem, descendants: true }], viewQueries: [{ propertyName: "panelsRef", first: true, predicate: ["panelsRef"], descendants: true, static: true }], ngImport: i0, template: "<div\n #panelsRef\n class=\"summary-area-panels\"\n [class.is-active]=\"!isCollapsed()\"\n [class.loading-active]=\"hasLoading\"\n [style.height]=\"panelHeight\"\n>\n <div\n class=\"summary-area-panel summary-area-panel--state\"\n [class.is-active]=\"!isCollapsed() && (hasLoading || hasError || hasWarning)\"\n [class.is-error]=\"hasError\"\n [class.is-warning]=\"hasWarning\"\n [style.--rows]=\"currentRows()\"\n [attr.aria-hidden]=\"isCollapsed() || !(hasLoading || hasError || hasWarning) ? 'true' : 'false'\"\n [attr.inert]=\"isCollapsed() || !(hasLoading || hasError || hasWarning) ? '' : null\"\n >\n <div class=\"summary-area-panel__body\">\n <div\n class=\"summary-area-loading\"\n [class.is-visible]=\"loadingVisible\"\n [attr.aria-hidden]=\"!hasLoading\"\n [style.height]=\"loadingPanelHeight\"\n >\n <clr-spinner [clrMedium]=\"true\"></clr-spinner>\n <span class=\"loading-text\">{{ loadingText }}</span>\n </div>\n @if (hasError) {\n <div class=\"summary-area-alert\">\n <clr-alert [clrAlertLightweight]=\"true\" [clrAlertType]=\"'danger'\">\n <clr-alert-item>\n @if (errorLinkText && errorClick) {\n <span class=\"alert-text\">{{ errorText }}</span>\n <span class=\"alert-action\" (click)=\"errorClick()\" (keydown.enter)=\"errorClick()\">{{ errorLinkText }}</span>\n } @else if (errorClick) {\n <span class=\"alert-action\" (click)=\"errorClick()\" (keydown.enter)=\"errorClick()\">{{ errorText }}</span>\n } @else {\n <span class=\"alert-text\">{{ errorText }}</span>\n }\n </clr-alert-item>\n </clr-alert>\n </div>\n } @else if (hasWarning) {\n <div class=\"summary-area-alert\">\n <clr-alert [clrAlertLightweight]=\"true\" [clrAlertType]=\"'warning'\">\n <clr-alert-item>\n @if (warningLinkText && warningClick) {\n <span class=\"alert-text\">{{ warningText }}</span>\n <span class=\"alert-action\" (click)=\"warningClick()\" (keydown.enter)=\"warningClick()\">\n {{ warningLinkText }}\n </span>\n } @else if (warningClick) {\n <span class=\"alert-action\" (click)=\"warningClick()\" (keydown.enter)=\"warningClick()\"\n >{{ warningText }}</span\n >\n } @else {\n <span class=\"alert-text\">{{ warningText }}</span>\n }\n </clr-alert-item>\n </clr-alert>\n </div>\n }\n </div>\n </div>\n\n <div\n class=\"summary-area-panel summary-area-panel--grid\"\n [class.is-active]=\"!isCollapsed() && !hasError && !hasWarning && !hasLoading\"\n [attr.aria-hidden]=\"isCollapsed() || hasError || hasWarning || hasLoading ? 'true' : 'false'\"\n [attr.inert]=\"isCollapsed() || hasError || hasWarning || hasLoading ? '' : null\"\n >\n <div class=\"summary-area-panel__body\">\n <div class=\"summary-area-container\">\n <div class=\"summary-grid\" [style.--columns]=\"currentColumns\" [style.--rows]=\"currentRows()\">\n @for (item of visibleItems; track item) {\n <ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".summary-area-container,.summary-area-alert{margin:0 24px 9px;max-width:100%;overflow-x:auto}.summary-grid{display:grid;grid-template-columns:repeat(var(--columns),minmax(0,320px));grid-template-rows:repeat(var(--rows),auto);grid-auto-flow:column;max-width:100%;column-gap:36px;row-gap:6px;padding:3px 0}.summary-item{max-width:320px;min-width:0;height:20px;overflow:visible;display:flex;flex-direction:column}clr-alert-item{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap}clr-alert-item .alert-text{flex:none;width:auto;white-space:nowrap;align-self:flex-start}clr-alert-item .alert-action{white-space:nowrap}.alert-action{color:var(--cds-alias-typography-link-color)!important;cursor:pointer}.alert-action:visited{color:var(--cds-alias-typography-link-color-visited)}.alert-action:hover,.alert-action:focus{color:var(--cds-alias-typography-link-color-hover)}clr-alert ::ng-deep>.alert-lightweight{padding-left:0;padding-right:0}.summary-area-panels{position:relative;height:0;opacity:0;transform-origin:top center;pointer-events:none;visibility:hidden;overflow:hidden;margin:0 0 9px;transition:height .3s cubic-bezier(.4,0,.2,1),opacity .4s ease-in-out,visibility .4s ease-in-out}.summary-area-panels.is-active{opacity:1;pointer-events:auto;visibility:visible;overflow:visible;transition:height .3s cubic-bezier(.4,0,.2,1),opacity .4s ease-in-out,visibility .4s ease-in-out}.summary-area-panels.loading-active{display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity .4s ease-in-out}.summary-area-panel{transform-origin:top center;opacity:0;pointer-events:none;transition:opacity .4s ease-in-out;position:absolute;top:0;left:0;right:0}.summary-area-panel__body{will-change:opacity}.summary-area-panel.is-active{opacity:1;pointer-events:auto;position:relative;transition:opacity .4s ease-in-out}.summary-area-panel.is-active .summary-area-panel__body{overflow:visible}.summary-area-loading{display:flex;align-items:center;justify-content:center;gap:.75rem;margin:0 24px;padding:3px 0;opacity:0;transition:opacity 0s ease-in-out}.summary-area-loading.is-visible{opacity:1;transition:opacity .4s ease-in-out}.summary-area-loading .loading-text{color:var(--cds-alias-typography-color-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ClarityModule }, { kind: "component", type: i2$4.ClrAlert, selector: "clr-alert", inputs: ["clrAlertSizeSmall", "clrAlertClosable", "clrAlertAppLevel", "clrCloseButtonAriaLabel", "clrAlertLightweight", "clrAlertType", "clrAlertIcon", "clrAlertClosed"], outputs: ["clrAlertClosedChange"] }, { kind: "component", type: i2$4.ClrAlertItem, selector: "clr-alert-item" }, { kind: "directive", type: i2$4.ClrAlertText, selector: ".alert-text" }, { kind: "component", type: i2$5.ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }] }); }
|
|
17754
18071
|
}
|
|
17755
18072
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ClrSummaryArea, decorators: [{
|
|
17756
18073
|
type: Component,
|