@clr/angular 16.5.2 → 16.5.4

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.
@@ -1171,6 +1171,9 @@ class ClrStepperPanel extends ClrAccordionPanel {
1171
1171
  // set panel status on form status change only after the form becomes invalid
1172
1172
  const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));
1173
1173
  this.subscriptions.push(this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {
1174
+ if (!this.formGroup.touched) {
1175
+ return;
1176
+ }
1174
1177
  if (status === 'VALID') {
1175
1178
  this.stepperService.setPanelValid(this.id);
1176
1179
  }
@@ -1187,9 +1190,7 @@ class ClrStepperPanel extends ClrAccordionPanel {
1187
1190
  this.subscriptions.push(this.stepperService.activeStep
1188
1191
  .pipe(filter(panelId => isPlatformBrowser(this.platformId) && panelId === this.id))
1189
1192
  .subscribe(() => {
1190
- //Adding timeout so that the status of the previous step is read by Voice Over on Safari,
1191
- //before focusing on the next stepper panel header
1192
- setTimeout(() => this.headerButton.nativeElement.focus(), 1500);
1193
+ this.headerButton.nativeElement.focus();
1193
1194
  }));
1194
1195
  }
1195
1196
  triggerAllFormControlValidationIfError(panel) {
@@ -13365,6 +13366,19 @@ var ClrDatagridSortOrder;
13365
13366
  ClrDatagridSortOrder[ClrDatagridSortOrder["DESC"] = -1] = "DESC";
13366
13367
  })(ClrDatagridSortOrder || (ClrDatagridSortOrder = {}));
13367
13368
 
13369
+ /*
13370
+ * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
13371
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
13372
+ * This software is released under MIT license.
13373
+ * The full license information can be found in LICENSE in the root directory of this project.
13374
+ */
13375
+ // @TODO The top two are not used now, which is probably a performance drag that was broken along the way.
13376
+ // There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.
13377
+ const NO_LAYOUT_CLASS = 'datagrid-no-layout';
13378
+ const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';
13379
+ const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';
13380
+ const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';
13381
+
13368
13382
  /*
13369
13383
  * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
13370
13384
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
@@ -13799,15 +13813,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
13799
13813
  * The full license information can be found in LICENSE in the root directory of this project.
13800
13814
  */
13801
13815
  class ClrDatagridColumn extends DatagridFilterRegistrar {
13802
- constructor(_sort, filters, vcr, detailService, changeDetectorRef) {
13816
+ constructor(el, _sort, filters, vcr, detailService, changeDetectorRef) {
13803
13817
  super(filters);
13818
+ this.el = el;
13804
13819
  this._sort = _sort;
13805
13820
  this.vcr = vcr;
13806
13821
  this.detailService = detailService;
13807
13822
  this.changeDetectorRef = changeDetectorRef;
13808
13823
  this.sortOrderChange = new EventEmitter();
13809
13824
  this.filterValueChange = new EventEmitter();
13810
- this.showSeparator = true;
13811
13825
  /**
13812
13826
  * A custom filter for this column that can be provided in the projected content
13813
13827
  */
@@ -13826,9 +13840,20 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13826
13840
  * Subscription to the sort service changes
13827
13841
  */
13828
13842
  this.subscriptions = [];
13843
+ this._showSeparator = true;
13829
13844
  this.subscriptions.push(this.listenForSortingChanges());
13830
13845
  this.subscriptions.push(this.listenForDetailPaneChanges());
13831
13846
  }
13847
+ get isHidden() {
13848
+ return this.el.nativeElement.classList.contains(HIDDEN_COLUMN_CLASS);
13849
+ }
13850
+ get showSeparator() {
13851
+ return this._showSeparator;
13852
+ }
13853
+ set showSeparator(value) {
13854
+ this._showSeparator = value;
13855
+ this.changeDetectorRef.markForCheck();
13856
+ }
13832
13857
  // TODO: We might want to make this an enum in the future
13833
13858
  get colType() {
13834
13859
  return this._colType;
@@ -14004,8 +14029,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
14004
14029
  return this.detailService.stateChange.subscribe(state => {
14005
14030
  if (this.showSeparator !== !state) {
14006
14031
  this.showSeparator = !state;
14007
- // Have to manually change because of OnPush
14008
- this.changeDetectorRef.markForCheck();
14009
14032
  }
14010
14033
  });
14011
14034
  }
@@ -14038,7 +14061,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
14038
14061
  }
14039
14062
  }
14040
14063
  }
14041
- ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
14064
+ ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: i0.ElementRef }, { token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
14042
14065
  ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sortOrder: ["clrDgSortOrder", "sortOrder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: ClrPopoverHostDirective }], ngImport: i0, template: `
14043
14066
  <div class="datagrid-column-flex">
14044
14067
  <button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
@@ -14133,7 +14156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
14133
14156
  },
14134
14157
  changeDetection: ChangeDetectionStrategy.OnPush,
14135
14158
  }]
14136
- }], ctorParameters: function () { return [{ type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filterStringPlaceholder: [{
14159
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filterStringPlaceholder: [{
14137
14160
  type: Input,
14138
14161
  args: ['clrFilterStringPlaceholder']
14139
14162
  }], filterNumberMaxPlaceholder: [{
@@ -15734,19 +15757,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15734
15757
  type: Injectable
15735
15758
  }], ctorParameters: function () { return [{ type: FiltersProvider }, { type: Sort }, { type: Page }, { type: StateDebouncer }]; } });
15736
15759
 
15737
- /*
15738
- * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
15739
- * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
15740
- * This software is released under MIT license.
15741
- * The full license information can be found in LICENSE in the root directory of this project.
15742
- */
15743
- // @TODO The top two are not used now, which is probably a performance drag that was broken along the way.
15744
- // There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.
15745
- const NO_LAYOUT_CLASS = 'datagrid-no-layout';
15746
- const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';
15747
- const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';
15748
- const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';
15749
-
15750
15760
  /*
15751
15761
  * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
15752
15762
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
@@ -15847,7 +15857,7 @@ class DatagridRowRenderer {
15847
15857
  }
15848
15858
  }
15849
15859
  DatagridRowRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, deps: [{ token: ColumnsService }], target: i0.ɵɵFactoryTarget.Directive });
15850
- DatagridRowRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail", queries: [{ propertyName: "cells", predicate: DatagridCellRenderer }], ngImport: i0 });
15860
+ DatagridRowRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail", queries: [{ propertyName: "expandableRow", first: true, predicate: i0.forwardRef(function () { return DatagridRowRenderer; }), descendants: true }, { propertyName: "cells", predicate: DatagridCellRenderer }], ngImport: i0 });
15851
15861
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, decorators: [{
15852
15862
  type: Directive,
15853
15863
  args: [{
@@ -15856,6 +15866,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15856
15866
  }], ctorParameters: function () { return [{ type: ColumnsService }]; }, propDecorators: { cells: [{
15857
15867
  type: ContentChildren,
15858
15868
  args: [DatagridCellRenderer]
15869
+ }], expandableRow: [{
15870
+ type: ContentChild,
15871
+ args: [forwardRef(() => DatagridRowRenderer)]
15859
15872
  }] } });
15860
15873
 
15861
15874
  /*
@@ -15991,25 +16004,7 @@ class ClrDatagrid {
15991
16004
  this.rows.forEach(row => {
15992
16005
  this._displayedRows.insert(row._view);
15993
16006
  });
15994
- // Try to update only when there is something cached and its open.
15995
- if (this.detailService.state && this.detailService.isOpen) {
15996
- const row = this.items.canTrackBy()
15997
- ? this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state))
15998
- : undefined;
15999
- /**
16000
- * Reopen updated row or close it
16001
- */
16002
- if (row) {
16003
- this.detailService.open(row.item, row.detailButton.nativeElement);
16004
- // always keep open when virtual scroll is available otherwise close it
16005
- }
16006
- else if (!this.hasVirtualScroller) {
16007
- // Using setTimeout to make sure the inner cycles in rows are done
16008
- setTimeout(() => {
16009
- this.detailService.close();
16010
- });
16011
- }
16012
- }
16007
+ this.updateDetailState();
16013
16008
  // retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller
16014
16009
  if (this.hasVirtualScroller) {
16015
16010
  const active = this.keyNavigation.getActiveCell();
@@ -16027,6 +16022,7 @@ class ClrDatagrid {
16027
16022
  */
16028
16023
  ngAfterViewInit() {
16029
16024
  this.keyNavigation.initializeKeyGrid(this.el.nativeElement);
16025
+ this.updateDetailState();
16030
16026
  // TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
16031
16027
  this.refresh.emit(this.stateProvider.state);
16032
16028
  this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
@@ -16110,6 +16106,29 @@ class ClrDatagrid {
16110
16106
  resize() {
16111
16107
  this.organizer.resize();
16112
16108
  }
16109
+ /**
16110
+ * Checks the state of detail panel and if it's opened then
16111
+ * find the matching row and trigger the detail panel
16112
+ */
16113
+ updateDetailState() {
16114
+ // Try to update only when there is something cached and its open.
16115
+ if (this.detailService.state && this.detailService.isOpen) {
16116
+ const row = this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state));
16117
+ /**
16118
+ * Reopen updated row or close it
16119
+ */
16120
+ if (row) {
16121
+ this.detailService.open(row.item, row.detailButton.nativeElement);
16122
+ // always keep open when virtual scroll is available otherwise close it
16123
+ }
16124
+ else if (!this.hasVirtualScroller) {
16125
+ // Using setTimeout to make sure the inner cycles in rows are done
16126
+ setTimeout(() => {
16127
+ this.detailService.close();
16128
+ });
16129
+ }
16130
+ }
16131
+ }
16113
16132
  /**
16114
16133
  * Public method to re-trigger the computation of displayed items manually
16115
16134
  */
@@ -18034,7 +18053,8 @@ const domAdapterFactory = (platformId) => {
18034
18053
  // Fixes build error
18035
18054
  // @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)
18036
18055
  class DatagridMainRenderer {
18037
- constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone, keyNavigation) {
18056
+ constructor(datagrid, organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone, keyNavigation) {
18057
+ this.datagrid = datagrid;
18038
18058
  this.organizer = organizer;
18039
18059
  this.items = items;
18040
18060
  this.page = page;
@@ -18084,7 +18104,8 @@ class DatagridMainRenderer {
18084
18104
  this.tableSizeService.table = this.el;
18085
18105
  }
18086
18106
  ngAfterViewChecked() {
18087
- if (this.shouldStabilizeColumns) {
18107
+ const datagridIsVisible = this.checkAndUpdateVisibility();
18108
+ if (this.shouldStabilizeColumns && datagridIsVisible) {
18088
18109
  this.stabilizeColumns();
18089
18110
  }
18090
18111
  if (this.shouldComputeHeight()) {
@@ -18192,6 +18213,7 @@ class DatagridMainRenderer {
18192
18213
  this.rows.forEach(row => {
18193
18214
  if (row?.cells.length === this.columnsService.columns.length) {
18194
18215
  row.cells.get(columnIndex).setWidth(state);
18216
+ row.expandableRow?.cells.get(columnIndex)?.setWidth(state);
18195
18217
  }
18196
18218
  });
18197
18219
  break;
@@ -18200,8 +18222,10 @@ class DatagridMainRenderer {
18200
18222
  this.rows.forEach(row => {
18201
18223
  if (row.cells && row.cells.length) {
18202
18224
  row.cells.get(columnIndex).setHidden(state);
18225
+ row.expandableRow?.cells.get(columnIndex)?.setHidden(state);
18203
18226
  }
18204
18227
  });
18228
+ this.updateColumnSeparatorsVisibility();
18205
18229
  this.keyNavigation.resetKeyGrid();
18206
18230
  break;
18207
18231
  case DatagridColumnChanges.INITIALIZE:
@@ -18209,6 +18233,7 @@ class DatagridMainRenderer {
18209
18233
  this.headers.get(columnIndex).setHidden(state);
18210
18234
  this.rows.forEach(row => {
18211
18235
  row.setCellsState();
18236
+ row.expandableRow?.setCellsState();
18212
18237
  });
18213
18238
  }
18214
18239
  break;
@@ -18233,21 +18258,42 @@ class DatagridMainRenderer {
18233
18258
  this.columnsSizesStable = true;
18234
18259
  }
18235
18260
  }
18261
+ checkAndUpdateVisibility() {
18262
+ if (this.el.nativeElement.offsetParent) {
18263
+ // this.datagrid.datagrid.nativeElement.style.visibility = 'visible';
18264
+ return true;
18265
+ }
18266
+ else {
18267
+ // this.datagrid.datagrid.nativeElement.style.visibility = 'hidden';
18268
+ return false;
18269
+ }
18270
+ }
18271
+ updateColumnSeparatorsVisibility() {
18272
+ const visibleColumns = this.datagrid.columns.filter(column => !column.isHidden);
18273
+ visibleColumns.forEach((column, index) => {
18274
+ if (index === visibleColumns.length - 1) {
18275
+ column.showSeparator = false;
18276
+ }
18277
+ else if (!column.showSeparator) {
18278
+ column.showSeparator = true;
18279
+ }
18280
+ });
18281
+ }
18236
18282
  }
18237
- DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: DomAdapter }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }, { token: i0.NgZone }, { token: KeyNavigationGridController }], target: i0.ɵɵFactoryTarget.Directive });
18238
- DatagridMainRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridMainRenderer, selector: "clr-datagrid", providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }], queries: [{ propertyName: "headers", predicate: DatagridHeaderRenderer }, { propertyName: "rows", predicate: DatagridRowRenderer, descendants: true }], ngImport: i0 });
18283
+ DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: ClrDatagrid }, { token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: DomAdapter }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }, { token: i0.NgZone }, { token: KeyNavigationGridController }], target: i0.ɵɵFactoryTarget.Directive });
18284
+ DatagridMainRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridMainRenderer, selector: "clr-datagrid", providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }], queries: [{ propertyName: "headers", predicate: DatagridHeaderRenderer }, { propertyName: "rows", predicate: DatagridRowRenderer }], ngImport: i0 });
18239
18285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, decorators: [{
18240
18286
  type: Directive,
18241
18287
  args: [{
18242
18288
  selector: 'clr-datagrid',
18243
18289
  providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],
18244
18290
  }]
18245
- }], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: DomAdapter }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }, { type: i0.NgZone }, { type: KeyNavigationGridController }]; }, propDecorators: { headers: [{
18291
+ }], ctorParameters: function () { return [{ type: ClrDatagrid }, { type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: DomAdapter }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }, { type: i0.NgZone }, { type: KeyNavigationGridController }]; }, propDecorators: { headers: [{
18246
18292
  type: ContentChildren,
18247
18293
  args: [DatagridHeaderRenderer]
18248
18294
  }], rows: [{
18249
18295
  type: ContentChildren,
18250
- args: [DatagridRowRenderer, { descendants: true }]
18296
+ args: [DatagridRowRenderer]
18251
18297
  }] } });
18252
18298
 
18253
18299
  /*
@@ -19769,18 +19815,21 @@ function trimAndLowerCase(value) {
19769
19815
  * The full license information can be found in LICENSE in the root directory of this project.
19770
19816
  */
19771
19817
  class ClrTree {
19772
- constructor(featuresService, focusManagerService, { nativeElement }, renderer, ngZone) {
19818
+ constructor(featuresService, focusManagerService, renderer, el, ngZone) {
19773
19819
  this.featuresService = featuresService;
19774
19820
  this.focusManagerService = focusManagerService;
19821
+ this.renderer = renderer;
19822
+ this.el = el;
19775
19823
  this.subscriptions = [];
19776
- const subscription = ngZone.runOutsideAngular(() => fromEvent(nativeElement, 'focusin').subscribe((event) => {
19777
- if (event.target === nativeElement) {
19824
+ this._isMultiSelectable = false;
19825
+ const subscription = ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusin').subscribe((event) => {
19826
+ if (event.target === el.nativeElement) {
19778
19827
  // After discussing with the team, I've made it so that when the tree receives focus, the first visible node will be focused.
19779
19828
  // This will prevent from the page scrolling abruptly to the first selected node if it exist in a deeply nested tree.
19780
19829
  this.focusManagerService.focusFirstVisibleNode();
19781
19830
  // when the first child gets focus,
19782
19831
  // tree should no longer have tabindex of 0.
19783
- renderer.removeAttribute(nativeElement, 'tabindex');
19832
+ renderer.removeAttribute(el.nativeElement, 'tabindex');
19784
19833
  }
19785
19834
  }));
19786
19835
  this.subscriptions.push(subscription);
@@ -19789,17 +19838,28 @@ class ClrTree {
19789
19838
  this.featuresService.eager = !value;
19790
19839
  }
19791
19840
  get isMultiSelectable() {
19792
- return this.featuresService.selectable && this.rootNodes.length > 0;
19841
+ return this._isMultiSelectable;
19793
19842
  }
19794
19843
  ngAfterContentInit() {
19795
19844
  this.setRootNodes();
19796
19845
  this.subscriptions.push(this.rootNodes.changes.subscribe(() => {
19846
+ this.setMultiSelectable();
19797
19847
  this.setRootNodes();
19798
19848
  }));
19799
19849
  }
19800
19850
  ngOnDestroy() {
19801
19851
  this.subscriptions.forEach(sub => sub.unsubscribe());
19802
19852
  }
19853
+ setMultiSelectable() {
19854
+ if (this.featuresService.selectable && this.rootNodes.length > 0) {
19855
+ this._isMultiSelectable = true;
19856
+ this.renderer.setAttribute(this.el.nativeElement, 'aria-multiselectable', 'true');
19857
+ }
19858
+ else {
19859
+ this._isMultiSelectable = false;
19860
+ this.renderer.removeAttribute(this.el.nativeElement, 'aria-multiselectable');
19861
+ }
19862
+ }
19803
19863
  setRootNodes() {
19804
19864
  // if node has no parent, it's a root node
19805
19865
  // for recursive tree, this.rootNodes registers also nested children
@@ -19807,8 +19867,8 @@ class ClrTree {
19807
19867
  this.focusManagerService.rootNodeModels = this.rootNodes.map(node => node._model).filter(node => !node.parent);
19808
19868
  }
19809
19869
  }
19810
- ClrTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTree, deps: [{ token: TreeFeaturesService }, { token: TreeFocusManagerService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
19811
- ClrTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTree, selector: "clr-tree", inputs: { lazy: ["clrLazy", "lazy"] }, host: { attributes: { "tabindex": "0" }, properties: { "attr.role": "\"tree\"", "attr.aria-multiselectable": "isMultiSelectable" } }, providers: [TREE_FEATURES_PROVIDER, TreeFocusManagerService], queries: [{ propertyName: "rootNodes", predicate: ClrTreeNode }], ngImport: i0, template: `
19870
+ ClrTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTree, deps: [{ token: TreeFeaturesService }, { token: TreeFocusManagerService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
19871
+ ClrTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTree, selector: "clr-tree", inputs: { lazy: ["clrLazy", "lazy"] }, host: { attributes: { "tabindex": "0" }, properties: { "attr.role": "\"tree\"" } }, providers: [TREE_FEATURES_PROVIDER, TreeFocusManagerService], queries: [{ propertyName: "rootNodes", predicate: ClrTreeNode }], ngImport: i0, template: `
19812
19872
  <ng-content></ng-content>
19813
19873
  <clr-recursive-children
19814
19874
  *ngIf="featuresService.recursion"
@@ -19830,10 +19890,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
19830
19890
  host: {
19831
19891
  tabindex: '0',
19832
19892
  '[attr.role]': '"tree"',
19833
- '[attr.aria-multiselectable]': 'isMultiSelectable',
19834
19893
  },
19835
19894
  }]
19836
- }], ctorParameters: function () { return [{ type: TreeFeaturesService }, { type: TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { rootNodes: [{
19895
+ }], ctorParameters: function () { return [{ type: TreeFeaturesService }, { type: TreeFocusManagerService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rootNodes: [{
19837
19896
  type: ContentChildren,
19838
19897
  args: [ClrTreeNode]
19839
19898
  }], lazy: [{
@@ -23343,9 +23402,10 @@ class ClrModalConfigurationService {
23343
23402
  }
23344
23403
  }
23345
23404
  ClrModalConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23346
- ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService });
23405
+ ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, providedIn: 'root' });
23347
23406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, decorators: [{
23348
- type: Injectable
23407
+ type: Injectable,
23408
+ args: [{ providedIn: 'root' }]
23349
23409
  }] });
23350
23410
 
23351
23411
  /*
@@ -23584,14 +23644,13 @@ class ClrModalModule {
23584
23644
  }
23585
23645
  ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23586
23646
  ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule], exports: [ClrModal, ClrModalBody, ClrIconModule] });
23587
- ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, providers: [ClrModalConfigurationService], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
23647
+ ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
23588
23648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, decorators: [{
23589
23649
  type: NgModule,
23590
23650
  args: [{
23591
23651
  imports: [CommonModule, CdkTrapFocusModule, ClrIconModule],
23592
23652
  declarations: [CLR_MODAL_DIRECTIVES],
23593
23653
  exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],
23594
- providers: [ClrModalConfigurationService],
23595
23654
  }]
23596
23655
  }], ctorParameters: function () { return []; } });
23597
23656
 
@@ -27875,5 +27934,5 @@ const CLR_MENU_POSITIONS = [
27875
27934
  * Generated bundle index. Do not edit.
27876
27935
  */
27877
27936
 
27878
- export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
27937
+ export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
27879
27938
  //# sourceMappingURL=clr-angular.mjs.map