@clr/angular 13.9.1 → 13.10.1
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/clarity.api.md +12 -4
- package/data/datagrid/datagrid-filter.d.ts +11 -3
- package/data/tree-view/tree-node-link.d.ts +2 -1
- package/esm2020/data/datagrid/datagrid-filter.mjs +23 -7
- package/esm2020/data/stack-view/stack-header.mjs +7 -7
- package/esm2020/data/tree-view/tree-node-link.mjs +4 -1
- package/esm2020/data/tree-view/tree-node.mjs +12 -4
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -3
- package/esm2020/modal/modal-body.mjs +2 -2
- package/esm2020/popover/tooltip/tooltip-content.mjs +5 -3
- package/esm2020/utils/i18n/common-strings.default.mjs +3 -3
- package/fesm2015/clr-angular.mjs +53 -22
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +51 -22
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/popover/tooltip/tooltip-content.d.ts +3 -2
package/fesm2020/clr-angular.mjs
CHANGED
|
@@ -304,8 +304,8 @@ const commonStringsDefault = {
|
|
|
304
304
|
singleSelectionAriaLabel: 'Single selection header',
|
|
305
305
|
singleActionableAriaLabel: 'Single actionable header',
|
|
306
306
|
detailExpandableAriaLabel: 'Toggle more row content',
|
|
307
|
-
datagridFilterAriaLabel: '
|
|
308
|
-
datagridFilterDialogAriaLabel: '
|
|
307
|
+
datagridFilterAriaLabel: 'Toggle {COLUMN} filter',
|
|
308
|
+
datagridFilterDialogAriaLabel: 'Filter dialog',
|
|
309
309
|
columnSeparatorAriaLabel: 'Column resize handle',
|
|
310
310
|
columnSeparatorDescription: 'Use left or right key to resize the column',
|
|
311
311
|
// Alert
|
|
@@ -11977,11 +11977,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
11977
11977
|
* since it can be anything (not just a text input).
|
|
11978
11978
|
*/
|
|
11979
11979
|
class ClrDatagridFilter extends DatagridFilterRegistrar {
|
|
11980
|
-
constructor(_filters, commonStrings, smartToggleService, platformId) {
|
|
11980
|
+
constructor(_filters, commonStrings, smartToggleService, platformId, elementRef) {
|
|
11981
11981
|
super(_filters);
|
|
11982
11982
|
this.commonStrings = commonStrings;
|
|
11983
11983
|
this.smartToggleService = smartToggleService;
|
|
11984
11984
|
this.platformId = platformId;
|
|
11985
|
+
this.elementRef = elementRef;
|
|
11985
11986
|
this.subs = [];
|
|
11986
11987
|
this.ariaExpanded = false;
|
|
11987
11988
|
this.popoverId = uniqueIdFactory();
|
|
@@ -12023,18 +12024,33 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
|
|
|
12023
12024
|
get active() {
|
|
12024
12025
|
return !!this.filter && this.filter.isActive();
|
|
12025
12026
|
}
|
|
12027
|
+
ngOnChanges() {
|
|
12028
|
+
this.setToggleButtonAriaLabel();
|
|
12029
|
+
}
|
|
12026
12030
|
ngOnDestroy() {
|
|
12027
12031
|
super.ngOnDestroy();
|
|
12028
12032
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
12029
12033
|
}
|
|
12034
|
+
/**
|
|
12035
|
+
* This is not in a getter to prevent "expression has changed after it was checked" errors.
|
|
12036
|
+
* And it's more performant this way since it only runs on change.
|
|
12037
|
+
*/
|
|
12038
|
+
setToggleButtonAriaLabel() {
|
|
12039
|
+
const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');
|
|
12040
|
+
const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');
|
|
12041
|
+
const columnTitle = columnTitleElement?.textContent.trim().toLocaleLowerCase();
|
|
12042
|
+
this.toggleButtonAriaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {
|
|
12043
|
+
COLUMN: columnTitle || '',
|
|
12044
|
+
});
|
|
12045
|
+
}
|
|
12030
12046
|
}
|
|
12031
|
-
ClrDatagridFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridFilter, deps: [{ token: FiltersProvider }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
12032
|
-
ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
|
|
12047
|
+
ClrDatagridFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridFilter, deps: [{ token: FiltersProvider }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: PLATFORM_ID }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12048
|
+
ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
12033
12049
|
<button
|
|
12034
12050
|
class="datagrid-filter-toggle"
|
|
12035
12051
|
type="button"
|
|
12036
12052
|
#anchor
|
|
12037
|
-
[attr.aria-label]="
|
|
12053
|
+
[attr.aria-label]="toggleButtonAriaLabel"
|
|
12038
12054
|
[attr.aria-expanded]="ariaExpanded"
|
|
12039
12055
|
[attr.aria-controls]="popoverId"
|
|
12040
12056
|
clrPopoverAnchor
|
|
@@ -12077,7 +12093,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
12077
12093
|
class="datagrid-filter-toggle"
|
|
12078
12094
|
type="button"
|
|
12079
12095
|
#anchor
|
|
12080
|
-
[attr.aria-label]="
|
|
12096
|
+
[attr.aria-label]="toggleButtonAriaLabel"
|
|
12081
12097
|
[attr.aria-expanded]="ariaExpanded"
|
|
12082
12098
|
[attr.aria-controls]="popoverId"
|
|
12083
12099
|
clrPopoverAnchor
|
|
@@ -12113,7 +12129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
12113
12129
|
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
|
|
12114
12130
|
type: Inject,
|
|
12115
12131
|
args: [PLATFORM_ID]
|
|
12116
|
-
}] }]; }, propDecorators: { anchor: [{
|
|
12132
|
+
}] }, { type: i0.ElementRef }]; }, propDecorators: { anchor: [{
|
|
12117
12133
|
type: ViewChild,
|
|
12118
12134
|
args: ['anchor', { read: ElementRef }]
|
|
12119
12135
|
}], open: [{
|
|
@@ -18713,8 +18729,8 @@ class ClrStackHeader {
|
|
|
18713
18729
|
}
|
|
18714
18730
|
ClrStackHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackHeader, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
|
|
18715
18731
|
ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackHeader, selector: "clr-stack-header", ngImport: i0, template: `
|
|
18716
|
-
<
|
|
18717
|
-
<
|
|
18732
|
+
<div class="stack-header">
|
|
18733
|
+
<h4 class="stack-title"><ng-content></ng-content></h4>
|
|
18718
18734
|
|
|
18719
18735
|
<span class="stack-actions">
|
|
18720
18736
|
<ng-content select=".stack-action"></ng-content>
|
|
@@ -18729,15 +18745,15 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
18729
18745
|
</button>
|
|
18730
18746
|
<!-- End of undocumented experimental feature. -->
|
|
18731
18747
|
</span>
|
|
18732
|
-
</
|
|
18748
|
+
</div>
|
|
18733
18749
|
`, isInline: true, styles: [":host{display:block}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
18734
18750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackHeader, decorators: [{
|
|
18735
18751
|
type: Component,
|
|
18736
18752
|
args: [{
|
|
18737
18753
|
selector: 'clr-stack-header',
|
|
18738
18754
|
template: `
|
|
18739
|
-
<
|
|
18740
|
-
<
|
|
18755
|
+
<div class="stack-header">
|
|
18756
|
+
<h4 class="stack-title"><ng-content></ng-content></h4>
|
|
18741
18757
|
|
|
18742
18758
|
<span class="stack-actions">
|
|
18743
18759
|
<ng-content select=".stack-action"></ng-content>
|
|
@@ -18752,7 +18768,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
18752
18768
|
</button>
|
|
18753
18769
|
<!-- End of undocumented experimental feature. -->
|
|
18754
18770
|
</span>
|
|
18755
|
-
</
|
|
18771
|
+
</div>
|
|
18756
18772
|
`,
|
|
18757
18773
|
// Custom elements are inline by default
|
|
18758
18774
|
styles: [
|
|
@@ -19504,6 +19520,9 @@ class ClrTreeNodeLink {
|
|
|
19504
19520
|
constructor(el) {
|
|
19505
19521
|
this.el = el;
|
|
19506
19522
|
}
|
|
19523
|
+
get active() {
|
|
19524
|
+
return this.el.nativeElement.classList.contains('active');
|
|
19525
|
+
}
|
|
19507
19526
|
activate() {
|
|
19508
19527
|
if (this.el.nativeElement && this.el.nativeElement.click) {
|
|
19509
19528
|
this.el.nativeElement.click();
|
|
@@ -19595,7 +19614,15 @@ class ClrTreeNode {
|
|
|
19595
19614
|
this.skipEmitChange = false;
|
|
19596
19615
|
}
|
|
19597
19616
|
get ariaSelected() {
|
|
19598
|
-
|
|
19617
|
+
if (this.isSelectable()) {
|
|
19618
|
+
return this._model.selected.value === ClrSelectedState.SELECTED;
|
|
19619
|
+
}
|
|
19620
|
+
else if (this.treeNodeLink?.active) {
|
|
19621
|
+
return true;
|
|
19622
|
+
}
|
|
19623
|
+
else {
|
|
19624
|
+
return null;
|
|
19625
|
+
}
|
|
19599
19626
|
}
|
|
19600
19627
|
// I'm caving on this, for tree nodes I think we can tolerate having a two-way binding on the component
|
|
19601
19628
|
// rather than enforce the clrIfExpanded structural directive for dynamic cases. Mostly because for the smart
|
|
@@ -19755,7 +19782,7 @@ class ClrTreeNode {
|
|
|
19755
19782
|
}
|
|
19756
19783
|
}
|
|
19757
19784
|
ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: ForTypeAheadProvider, optional: true, self: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
19758
|
-
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. 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\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\">selected</span>\n <span *ngIf=\"!ariaSelected\">unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
|
|
19785
|
+
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. 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\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
|
|
19759
19786
|
trigger('toggleChildrenAnim', [
|
|
19760
19787
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
19761
19788
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -19774,7 +19801,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
19774
19801
|
]),
|
|
19775
19802
|
], host: {
|
|
19776
19803
|
'[class.clr-tree-node]': 'true',
|
|
19777
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. 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\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\">selected</span>\n <span *ngIf=\"!ariaSelected\">unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
|
|
19804
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. 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\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
|
|
19778
19805
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
19779
19806
|
type: Inject,
|
|
19780
19807
|
args: [PLATFORM_ID]
|
|
@@ -23262,7 +23289,7 @@ ClrVerticalNavGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", vers
|
|
|
23262
23289
|
ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: { groupLabel: ["clrVerticalNavGroupLabel", "groupLabel"], userExpandedInput: ["clrVerticalNavGroupExpanded", "userExpandedInput"] }, outputs: { expandedChange: "clrVerticalNavGroupExpandedChange" }, host: { properties: { "class.is-expanded": "this.expanded" }, classAttribute: "nav-group" }, providers: [IfExpandService, VerticalNavGroupService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. 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=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n", directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
|
|
23263
23290
|
trigger('clrExpand', [
|
|
23264
23291
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
23265
|
-
state(COLLAPSED_STATE, style({ height: 0,
|
|
23292
|
+
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
23266
23293
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
23267
23294
|
]),
|
|
23268
23295
|
] });
|
|
@@ -23271,7 +23298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
23271
23298
|
args: [{ selector: 'clr-vertical-nav-group', providers: [IfExpandService, VerticalNavGroupService], animations: [
|
|
23272
23299
|
trigger('clrExpand', [
|
|
23273
23300
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
23274
|
-
state(COLLAPSED_STATE, style({ height: 0,
|
|
23301
|
+
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
23275
23302
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
23276
23303
|
]),
|
|
23277
23304
|
], host: { class: 'nav-group' }, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. 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=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n" }]
|
|
@@ -23642,7 +23669,7 @@ class ClrModalBody {
|
|
|
23642
23669
|
}
|
|
23643
23670
|
addOrRemoveTabIndex() {
|
|
23644
23671
|
const modalBody = this.host.nativeElement.parentElement;
|
|
23645
|
-
if (modalBody.clientHeight < modalBody.scrollHeight) {
|
|
23672
|
+
if (modalBody && modalBody.clientHeight < modalBody.scrollHeight) {
|
|
23646
23673
|
this.addTabIndex();
|
|
23647
23674
|
}
|
|
23648
23675
|
else {
|
|
@@ -23954,8 +23981,6 @@ class ClrTooltipContent extends AbstractPopover {
|
|
|
23954
23981
|
constructor(injector, parentHost, tooltipIdService) {
|
|
23955
23982
|
super(injector, parentHost);
|
|
23956
23983
|
this.tooltipIdService = tooltipIdService;
|
|
23957
|
-
this._position = defaultPosition;
|
|
23958
|
-
this._size = defaultSize;
|
|
23959
23984
|
if (!parentHost) {
|
|
23960
23985
|
throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
|
|
23961
23986
|
}
|
|
@@ -24017,6 +24042,10 @@ class ClrTooltipContent extends AbstractPopover {
|
|
|
24017
24042
|
this._size = newSize;
|
|
24018
24043
|
this.updateCssClass({ oldClass: `tooltip-${oldSize}`, newClass: `tooltip-${newSize}` });
|
|
24019
24044
|
}
|
|
24045
|
+
ngOnInit() {
|
|
24046
|
+
this.size = this.size || defaultSize;
|
|
24047
|
+
this.position = this.position || defaultPosition;
|
|
24048
|
+
}
|
|
24020
24049
|
updateCssClass({ oldClass, newClass }) {
|
|
24021
24050
|
this.renderer.removeClass(this.el.nativeElement, oldClass);
|
|
24022
24051
|
this.renderer.addClass(this.el.nativeElement, newClass);
|