@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.
@@ -1175,6 +1175,9 @@ class ClrStepperPanel extends ClrAccordionPanel {
1175
1175
  // set panel status on form status change only after the form becomes invalid
1176
1176
  const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));
1177
1177
  this.subscriptions.push(this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {
1178
+ if (!this.formGroup.touched) {
1179
+ return;
1180
+ }
1178
1181
  if (status === 'VALID') {
1179
1182
  this.stepperService.setPanelValid(this.id);
1180
1183
  }
@@ -1191,9 +1194,7 @@ class ClrStepperPanel extends ClrAccordionPanel {
1191
1194
  this.subscriptions.push(this.stepperService.activeStep
1192
1195
  .pipe(filter(panelId => isPlatformBrowser(this.platformId) && panelId === this.id))
1193
1196
  .subscribe(() => {
1194
- //Adding timeout so that the status of the previous step is read by Voice Over on Safari,
1195
- //before focusing on the next stepper panel header
1196
- setTimeout(() => this.headerButton.nativeElement.focus(), 1500);
1197
+ this.headerButton.nativeElement.focus();
1197
1198
  }));
1198
1199
  }
1199
1200
  triggerAllFormControlValidationIfError(panel) {
@@ -13466,6 +13467,19 @@ var ClrDatagridSortOrder;
13466
13467
  ClrDatagridSortOrder[ClrDatagridSortOrder["DESC"] = -1] = "DESC";
13467
13468
  })(ClrDatagridSortOrder || (ClrDatagridSortOrder = {}));
13468
13469
 
13470
+ /*
13471
+ * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
13472
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
13473
+ * This software is released under MIT license.
13474
+ * The full license information can be found in LICENSE in the root directory of this project.
13475
+ */
13476
+ // @TODO The top two are not used now, which is probably a performance drag that was broken along the way.
13477
+ // There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.
13478
+ const NO_LAYOUT_CLASS = 'datagrid-no-layout';
13479
+ const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';
13480
+ const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';
13481
+ const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';
13482
+
13469
13483
  /*
13470
13484
  * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
13471
13485
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
@@ -13904,15 +13918,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
13904
13918
  * The full license information can be found in LICENSE in the root directory of this project.
13905
13919
  */
13906
13920
  class ClrDatagridColumn extends DatagridFilterRegistrar {
13907
- constructor(_sort, filters, vcr, detailService, changeDetectorRef) {
13921
+ constructor(el, _sort, filters, vcr, detailService, changeDetectorRef) {
13908
13922
  super(filters);
13923
+ this.el = el;
13909
13924
  this._sort = _sort;
13910
13925
  this.vcr = vcr;
13911
13926
  this.detailService = detailService;
13912
13927
  this.changeDetectorRef = changeDetectorRef;
13913
13928
  this.sortOrderChange = new EventEmitter();
13914
13929
  this.filterValueChange = new EventEmitter();
13915
- this.showSeparator = true;
13916
13930
  /**
13917
13931
  * A custom filter for this column that can be provided in the projected content
13918
13932
  */
@@ -13931,9 +13945,20 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13931
13945
  * Subscription to the sort service changes
13932
13946
  */
13933
13947
  this.subscriptions = [];
13948
+ this._showSeparator = true;
13934
13949
  this.subscriptions.push(this.listenForSortingChanges());
13935
13950
  this.subscriptions.push(this.listenForDetailPaneChanges());
13936
13951
  }
13952
+ get isHidden() {
13953
+ return this.el.nativeElement.classList.contains(HIDDEN_COLUMN_CLASS);
13954
+ }
13955
+ get showSeparator() {
13956
+ return this._showSeparator;
13957
+ }
13958
+ set showSeparator(value) {
13959
+ this._showSeparator = value;
13960
+ this.changeDetectorRef.markForCheck();
13961
+ }
13937
13962
  // TODO: We might want to make this an enum in the future
13938
13963
  get colType() {
13939
13964
  return this._colType;
@@ -14109,8 +14134,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
14109
14134
  return this.detailService.stateChange.subscribe(state => {
14110
14135
  if (this.showSeparator !== !state) {
14111
14136
  this.showSeparator = !state;
14112
- // Have to manually change because of OnPush
14113
- this.changeDetectorRef.markForCheck();
14114
14137
  }
14115
14138
  });
14116
14139
  }
@@ -14143,7 +14166,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
14143
14166
  }
14144
14167
  }
14145
14168
  }
14146
- 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 });
14169
+ 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 });
14147
14170
  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: `
14148
14171
  <div class="datagrid-column-flex">
14149
14172
  <button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
@@ -14238,7 +14261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
14238
14261
  },
14239
14262
  changeDetection: ChangeDetectionStrategy.OnPush,
14240
14263
  }]
14241
- }], ctorParameters: function () { return [{ type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filterStringPlaceholder: [{
14264
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filterStringPlaceholder: [{
14242
14265
  type: Input,
14243
14266
  args: ['clrFilterStringPlaceholder']
14244
14267
  }], filterNumberMaxPlaceholder: [{
@@ -15844,19 +15867,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15844
15867
  type: Injectable
15845
15868
  }], ctorParameters: function () { return [{ type: FiltersProvider }, { type: Sort }, { type: Page }, { type: StateDebouncer }]; } });
15846
15869
 
15847
- /*
15848
- * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
15849
- * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
15850
- * This software is released under MIT license.
15851
- * The full license information can be found in LICENSE in the root directory of this project.
15852
- */
15853
- // @TODO The top two are not used now, which is probably a performance drag that was broken along the way.
15854
- // There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.
15855
- const NO_LAYOUT_CLASS = 'datagrid-no-layout';
15856
- const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';
15857
- const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';
15858
- const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';
15859
-
15860
15870
  /*
15861
15871
  * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
15862
15872
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
@@ -15957,7 +15967,7 @@ class DatagridRowRenderer {
15957
15967
  }
15958
15968
  }
15959
15969
  DatagridRowRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, deps: [{ token: ColumnsService }], target: i0.ɵɵFactoryTarget.Directive });
15960
- 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 });
15970
+ 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 });
15961
15971
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, decorators: [{
15962
15972
  type: Directive,
15963
15973
  args: [{
@@ -15966,6 +15976,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15966
15976
  }], ctorParameters: function () { return [{ type: ColumnsService }]; }, propDecorators: { cells: [{
15967
15977
  type: ContentChildren,
15968
15978
  args: [DatagridCellRenderer]
15979
+ }], expandableRow: [{
15980
+ type: ContentChild,
15981
+ args: [forwardRef(() => DatagridRowRenderer)]
15969
15982
  }] } });
15970
15983
 
15971
15984
  /*
@@ -16101,25 +16114,7 @@ class ClrDatagrid {
16101
16114
  this.rows.forEach(row => {
16102
16115
  this._displayedRows.insert(row._view);
16103
16116
  });
16104
- // Try to update only when there is something cached and its open.
16105
- if (this.detailService.state && this.detailService.isOpen) {
16106
- const row = this.items.canTrackBy()
16107
- ? this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state))
16108
- : undefined;
16109
- /**
16110
- * Reopen updated row or close it
16111
- */
16112
- if (row) {
16113
- this.detailService.open(row.item, row.detailButton.nativeElement);
16114
- // always keep open when virtual scroll is available otherwise close it
16115
- }
16116
- else if (!this.hasVirtualScroller) {
16117
- // Using setTimeout to make sure the inner cycles in rows are done
16118
- setTimeout(() => {
16119
- this.detailService.close();
16120
- });
16121
- }
16122
- }
16117
+ this.updateDetailState();
16123
16118
  // retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller
16124
16119
  if (this.hasVirtualScroller) {
16125
16120
  const active = this.keyNavigation.getActiveCell();
@@ -16137,6 +16132,7 @@ class ClrDatagrid {
16137
16132
  */
16138
16133
  ngAfterViewInit() {
16139
16134
  this.keyNavigation.initializeKeyGrid(this.el.nativeElement);
16135
+ this.updateDetailState();
16140
16136
  // TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
16141
16137
  this.refresh.emit(this.stateProvider.state);
16142
16138
  this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
@@ -16220,6 +16216,29 @@ class ClrDatagrid {
16220
16216
  resize() {
16221
16217
  this.organizer.resize();
16222
16218
  }
16219
+ /**
16220
+ * Checks the state of detail panel and if it's opened then
16221
+ * find the matching row and trigger the detail panel
16222
+ */
16223
+ updateDetailState() {
16224
+ // Try to update only when there is something cached and its open.
16225
+ if (this.detailService.state && this.detailService.isOpen) {
16226
+ const row = this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state));
16227
+ /**
16228
+ * Reopen updated row or close it
16229
+ */
16230
+ if (row) {
16231
+ this.detailService.open(row.item, row.detailButton.nativeElement);
16232
+ // always keep open when virtual scroll is available otherwise close it
16233
+ }
16234
+ else if (!this.hasVirtualScroller) {
16235
+ // Using setTimeout to make sure the inner cycles in rows are done
16236
+ setTimeout(() => {
16237
+ this.detailService.close();
16238
+ });
16239
+ }
16240
+ }
16241
+ }
16223
16242
  /**
16224
16243
  * Public method to re-trigger the computation of displayed items manually
16225
16244
  */
@@ -18163,7 +18182,8 @@ const domAdapterFactory = (platformId) => {
18163
18182
  // Fixes build error
18164
18183
  // @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)
18165
18184
  class DatagridMainRenderer {
18166
- constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone, keyNavigation) {
18185
+ constructor(datagrid, organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone, keyNavigation) {
18186
+ this.datagrid = datagrid;
18167
18187
  this.organizer = organizer;
18168
18188
  this.items = items;
18169
18189
  this.page = page;
@@ -18213,7 +18233,8 @@ class DatagridMainRenderer {
18213
18233
  this.tableSizeService.table = this.el;
18214
18234
  }
18215
18235
  ngAfterViewChecked() {
18216
- if (this.shouldStabilizeColumns) {
18236
+ const datagridIsVisible = this.checkAndUpdateVisibility();
18237
+ if (this.shouldStabilizeColumns && datagridIsVisible) {
18217
18238
  this.stabilizeColumns();
18218
18239
  }
18219
18240
  if (this.shouldComputeHeight()) {
@@ -18316,25 +18337,32 @@ class DatagridMainRenderer {
18316
18337
  case DatagridColumnChanges.WIDTH:
18317
18338
  this.headers.get(columnIndex).setWidth(state);
18318
18339
  this.rows.forEach(row => {
18340
+ var _a, _b;
18319
18341
  if ((row === null || row === void 0 ? void 0 : row.cells.length) === this.columnsService.columns.length) {
18320
18342
  row.cells.get(columnIndex).setWidth(state);
18343
+ (_b = (_a = row.expandableRow) === null || _a === void 0 ? void 0 : _a.cells.get(columnIndex)) === null || _b === void 0 ? void 0 : _b.setWidth(state);
18321
18344
  }
18322
18345
  });
18323
18346
  break;
18324
18347
  case DatagridColumnChanges.HIDDEN:
18325
18348
  this.headers.get(columnIndex).setHidden(state);
18326
18349
  this.rows.forEach(row => {
18350
+ var _a, _b;
18327
18351
  if (row.cells && row.cells.length) {
18328
18352
  row.cells.get(columnIndex).setHidden(state);
18353
+ (_b = (_a = row.expandableRow) === null || _a === void 0 ? void 0 : _a.cells.get(columnIndex)) === null || _b === void 0 ? void 0 : _b.setHidden(state);
18329
18354
  }
18330
18355
  });
18356
+ this.updateColumnSeparatorsVisibility();
18331
18357
  this.keyNavigation.resetKeyGrid();
18332
18358
  break;
18333
18359
  case DatagridColumnChanges.INITIALIZE:
18334
18360
  if (state.hideable && state.hidden) {
18335
18361
  this.headers.get(columnIndex).setHidden(state);
18336
18362
  this.rows.forEach(row => {
18363
+ var _a;
18337
18364
  row.setCellsState();
18365
+ (_a = row.expandableRow) === null || _a === void 0 ? void 0 : _a.setCellsState();
18338
18366
  });
18339
18367
  }
18340
18368
  break;
@@ -18359,21 +18387,42 @@ class DatagridMainRenderer {
18359
18387
  this.columnsSizesStable = true;
18360
18388
  }
18361
18389
  }
18390
+ checkAndUpdateVisibility() {
18391
+ if (this.el.nativeElement.offsetParent) {
18392
+ // this.datagrid.datagrid.nativeElement.style.visibility = 'visible';
18393
+ return true;
18394
+ }
18395
+ else {
18396
+ // this.datagrid.datagrid.nativeElement.style.visibility = 'hidden';
18397
+ return false;
18398
+ }
18399
+ }
18400
+ updateColumnSeparatorsVisibility() {
18401
+ const visibleColumns = this.datagrid.columns.filter(column => !column.isHidden);
18402
+ visibleColumns.forEach((column, index) => {
18403
+ if (index === visibleColumns.length - 1) {
18404
+ column.showSeparator = false;
18405
+ }
18406
+ else if (!column.showSeparator) {
18407
+ column.showSeparator = true;
18408
+ }
18409
+ });
18410
+ }
18362
18411
  }
18363
- 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 });
18364
- 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 });
18412
+ 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 });
18413
+ 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 });
18365
18414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, decorators: [{
18366
18415
  type: Directive,
18367
18416
  args: [{
18368
18417
  selector: 'clr-datagrid',
18369
18418
  providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],
18370
18419
  }]
18371
- }], 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: [{
18420
+ }], 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: [{
18372
18421
  type: ContentChildren,
18373
18422
  args: [DatagridHeaderRenderer]
18374
18423
  }], rows: [{
18375
18424
  type: ContentChildren,
18376
- args: [DatagridRowRenderer, { descendants: true }]
18425
+ args: [DatagridRowRenderer]
18377
18426
  }] } });
18378
18427
 
18379
18428
  /*
@@ -19904,18 +19953,21 @@ function trimAndLowerCase(value) {
19904
19953
  * The full license information can be found in LICENSE in the root directory of this project.
19905
19954
  */
19906
19955
  class ClrTree {
19907
- constructor(featuresService, focusManagerService, { nativeElement }, renderer, ngZone) {
19956
+ constructor(featuresService, focusManagerService, renderer, el, ngZone) {
19908
19957
  this.featuresService = featuresService;
19909
19958
  this.focusManagerService = focusManagerService;
19959
+ this.renderer = renderer;
19960
+ this.el = el;
19910
19961
  this.subscriptions = [];
19911
- const subscription = ngZone.runOutsideAngular(() => fromEvent(nativeElement, 'focusin').subscribe((event) => {
19912
- if (event.target === nativeElement) {
19962
+ this._isMultiSelectable = false;
19963
+ const subscription = ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusin').subscribe((event) => {
19964
+ if (event.target === el.nativeElement) {
19913
19965
  // After discussing with the team, I've made it so that when the tree receives focus, the first visible node will be focused.
19914
19966
  // This will prevent from the page scrolling abruptly to the first selected node if it exist in a deeply nested tree.
19915
19967
  this.focusManagerService.focusFirstVisibleNode();
19916
19968
  // when the first child gets focus,
19917
19969
  // tree should no longer have tabindex of 0.
19918
- renderer.removeAttribute(nativeElement, 'tabindex');
19970
+ renderer.removeAttribute(el.nativeElement, 'tabindex');
19919
19971
  }
19920
19972
  }));
19921
19973
  this.subscriptions.push(subscription);
@@ -19924,17 +19976,28 @@ class ClrTree {
19924
19976
  this.featuresService.eager = !value;
19925
19977
  }
19926
19978
  get isMultiSelectable() {
19927
- return this.featuresService.selectable && this.rootNodes.length > 0;
19979
+ return this._isMultiSelectable;
19928
19980
  }
19929
19981
  ngAfterContentInit() {
19930
19982
  this.setRootNodes();
19931
19983
  this.subscriptions.push(this.rootNodes.changes.subscribe(() => {
19984
+ this.setMultiSelectable();
19932
19985
  this.setRootNodes();
19933
19986
  }));
19934
19987
  }
19935
19988
  ngOnDestroy() {
19936
19989
  this.subscriptions.forEach(sub => sub.unsubscribe());
19937
19990
  }
19991
+ setMultiSelectable() {
19992
+ if (this.featuresService.selectable && this.rootNodes.length > 0) {
19993
+ this._isMultiSelectable = true;
19994
+ this.renderer.setAttribute(this.el.nativeElement, 'aria-multiselectable', 'true');
19995
+ }
19996
+ else {
19997
+ this._isMultiSelectable = false;
19998
+ this.renderer.removeAttribute(this.el.nativeElement, 'aria-multiselectable');
19999
+ }
20000
+ }
19938
20001
  setRootNodes() {
19939
20002
  // if node has no parent, it's a root node
19940
20003
  // for recursive tree, this.rootNodes registers also nested children
@@ -19942,8 +20005,8 @@ class ClrTree {
19942
20005
  this.focusManagerService.rootNodeModels = this.rootNodes.map(node => node._model).filter(node => !node.parent);
19943
20006
  }
19944
20007
  }
19945
- 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 });
19946
- 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: `
20008
+ 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 });
20009
+ 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: `
19947
20010
  <ng-content></ng-content>
19948
20011
  <clr-recursive-children
19949
20012
  *ngIf="featuresService.recursion"
@@ -19965,10 +20028,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
19965
20028
  host: {
19966
20029
  tabindex: '0',
19967
20030
  '[attr.role]': '"tree"',
19968
- '[attr.aria-multiselectable]': 'isMultiSelectable',
19969
20031
  },
19970
20032
  }]
19971
- }], ctorParameters: function () { return [{ type: TreeFeaturesService }, { type: TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { rootNodes: [{
20033
+ }], ctorParameters: function () { return [{ type: TreeFeaturesService }, { type: TreeFocusManagerService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rootNodes: [{
19972
20034
  type: ContentChildren,
19973
20035
  args: [ClrTreeNode]
19974
20036
  }], lazy: [{
@@ -23511,9 +23573,10 @@ class ClrModalConfigurationService {
23511
23573
  }
23512
23574
  }
23513
23575
  ClrModalConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23514
- ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService });
23576
+ ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, providedIn: 'root' });
23515
23577
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, decorators: [{
23516
- type: Injectable
23578
+ type: Injectable,
23579
+ args: [{ providedIn: 'root' }]
23517
23580
  }] });
23518
23581
 
23519
23582
  /*
@@ -23752,14 +23815,13 @@ class ClrModalModule {
23752
23815
  }
23753
23816
  ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23754
23817
  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] });
23755
- ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, providers: [ClrModalConfigurationService], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
23818
+ ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
23756
23819
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, decorators: [{
23757
23820
  type: NgModule,
23758
23821
  args: [{
23759
23822
  imports: [CommonModule, CdkTrapFocusModule, ClrIconModule],
23760
23823
  declarations: [CLR_MODAL_DIRECTIVES],
23761
23824
  exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],
23762
- providers: [ClrModalConfigurationService],
23763
23825
  }]
23764
23826
  }], ctorParameters: function () { return []; } });
23765
23827
 
@@ -28012,5 +28074,5 @@ const CLR_MENU_POSITIONS = [
28012
28074
  * Generated bundle index. Do not edit.
28013
28075
  */
28014
28076
 
28015
- 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 };
28077
+ 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 };
28016
28078
  //# sourceMappingURL=clr-angular.mjs.map