@microsoft/windows-admin-center-sdk 4.123.0 → 4.167.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
  21. package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
  22. package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
  23. package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
  24. package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
  25. package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
  26. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
  27. package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
  28. package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
  29. package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
  30. package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
  31. package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
  32. package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
  33. package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
  34. package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
  35. package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
  36. package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
  37. package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
  38. package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
  39. package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
  40. package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
  41. package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
  42. package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
  43. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  44. package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
  45. package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
  46. package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
  47. package/angular/esm2020/src/generated/strings.mjs +1 -1
  48. package/angular/esm2020/src/service/navigation.service.mjs +3 -8
  49. package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
  50. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +126 -72
  51. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  52. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +115 -70
  53. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  54. package/angular/package.json +1 -1
  55. package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
  56. package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
  57. package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
  58. package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
  59. package/angular/src/directives/svg/svg.directive.d.ts +1 -2
  60. package/angular/src/generated/strings.d.ts +12 -0
  61. package/core/azure/azure-constants.d.ts +2 -2
  62. package/core/azure/azure-constants.d.ts.map +1 -1
  63. package/core/azure/azure-constants.js +10 -3
  64. package/core/azure/azure-constants.js.map +1 -1
  65. package/core/data/gateway-url-translator.d.ts +1 -0
  66. package/core/data/gateway-url-translator.d.ts.map +1 -1
  67. package/core/data/gateway-url-translator.js +21 -6
  68. package/core/data/gateway-url-translator.js.map +1 -1
  69. package/core/data/node-connection.d.ts.map +1 -1
  70. package/core/data/node-connection.js +0 -2
  71. package/core/data/node-connection.js.map +1 -1
  72. package/core/generated/powershell-scripts.d.ts.map +1 -1
  73. package/core/generated/powershell-scripts.js +1 -1
  74. package/core/generated/powershell-scripts.js.map +1 -1
  75. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +30 -8
  76. package/{microsoft-windows-admin-center-sdk-4.123.0.tgz → microsoft-windows-admin-center-sdk-4.167.0.tgz} +0 -0
  77. package/package.json +9 -7
  78. package/styles/css/main-v2.css +1 -1
  79. package/tools/code-formatter/.eslintrc.base.json +1 -0
  80. package/tools/code-formatter/lint.d.ts.map +1 -1
  81. package/tools/code-formatter/lint.js +7 -1
  82. package/tools/code-formatter/lint.js.map +1 -1
  83. package/tools/code-formatter/utilities.d.ts +7 -0
  84. package/tools/code-formatter/utilities.d.ts.map +1 -0
  85. package/tools/code-formatter/utilities.js +79 -0
  86. package/tools/code-formatter/utilities.js.map +1 -0
  87. package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
  88. package/tools/gulp-update-notes-resource/index.js +4 -4
  89. package/tools/gulp-update-notes-resource/index.js.map +1 -1
  90. package/tools/module-template/.eslintrc.json +3 -0
  91. package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
  92. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
  93. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
  94. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +16 -0
  95. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
  96. package/tools/wac-cli/src/angular15/main.d.ts +19 -3
  97. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  98. package/tools/wac-cli/src/angular15/main.js +41 -7
  99. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  100. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
  101. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
  102. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +49 -0
  103. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
@@ -137,7 +137,7 @@ class SmeRouterLinkDirective {
137
137
  this.updateIsActive();
138
138
  }
139
139
  ngOnDestroy() {
140
- this.subscriptions.forEach(sub => sub.unsubscribe());
140
+ this.subscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
141
141
  }
142
142
  /**
143
143
  * Updates the isActive state and fires appropriate events if that state has changed.
@@ -6305,7 +6305,6 @@ class DropdownComponent {
6305
6305
  ngAfterViewInit() {
6306
6306
  // load the context menu code here so as to allow all child views to be completely initialized
6307
6307
  if (!this.isContextMenu) {
6308
- this.renderer.setAttribute(this.toggleElement.nativeElement, 'aria-haspopup', 'true');
6309
6308
  this.unsubscribeToggleClick = this.renderer.listen(this.toggleElement.nativeElement, 'click', (event) => this.onToggleClick(event));
6310
6309
  }
6311
6310
  else {
@@ -6373,7 +6372,6 @@ class DropdownComponent {
6373
6372
  if (this.isOpen) {
6374
6373
  // close if opened
6375
6374
  this.dropdownService.close(this);
6376
- this.renderer.setAttribute(this.toggleElement.nativeElement, 'aria-expanded', 'false');
6377
6375
  if (event) {
6378
6376
  this.dropdownService.closeNested(this, event);
6379
6377
  }
@@ -6383,7 +6381,6 @@ class DropdownComponent {
6383
6381
  else {
6384
6382
  // open if closed
6385
6383
  this.dropdownService.open(this, calculateHeight, displayToSide).then(() => {
6386
- this.renderer.setAttribute(this.toggleElement.nativeElement, 'aria-expanded', 'true');
6387
6384
  this.toggleElement.nativeElement.addEventListener('closeEvent', () => {
6388
6385
  this.isOpen = false;
6389
6386
  }, false);
@@ -6526,7 +6523,6 @@ class ActionContainerComponent extends CoreBaseComponent {
6526
6523
  /**
6527
6524
  * Event emitter fired whenever an error occurs within a child ActionItem.
6528
6525
  */
6529
- // eslint-disable-next-line @angular-eslint/no-output-native
6530
6526
  this.error = new EventEmitter();
6531
6527
  /**
6532
6528
  * Event emitter fired whenever a child ActionItem is executed.
@@ -6611,7 +6607,8 @@ class ActionContainerComponent extends CoreBaseComponent {
6611
6607
  * Callback method run when ActionContainerComponent is destroyed.
6612
6608
  */
6613
6609
  ngOnDestroy() {
6614
- this.completedSubscription.unsubscribe();
6610
+ var _a;
6611
+ (_a = this.completedSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
6615
6612
  }
6616
6613
  /**
6617
6614
  * Callback method run immediately after Angular has completed initialization of all of ActionContainerComponent's content.
@@ -8790,9 +8787,9 @@ function IconTextComponent_input_1_Template(rf, ctx) {
8790
8787
  i0.ɵɵattribute("aria-label", ctx_r1.readOnlyFormFieldLabel);
8791
8788
  }
8792
8789
  }
8793
- function IconTextComponent_span_2_Template(rf, ctx) {
8790
+ function IconTextComponent_h3_2_Template(rf, ctx) {
8794
8791
  if (rf & 1) {
8795
- i0.ɵɵelementStart(0, "span", 8);
8792
+ i0.ɵɵelementStart(0, "h3", 8);
8796
8793
  i0.ɵɵtext(1);
8797
8794
  i0.ɵɵelementEnd();
8798
8795
  }
@@ -8810,7 +8807,7 @@ class IconTextComponent extends CoreBaseComponent {
8810
8807
  */
8811
8808
  this.title = '';
8812
8809
  /**
8813
- * The text in string.
8810
+ * It determines whether to show title
8814
8811
  */
8815
8812
  this.showTitle = true;
8816
8813
  this.layoutFlex = true;
@@ -8842,7 +8839,7 @@ class IconTextComponent extends CoreBaseComponent {
8842
8839
  if (rf & 1) {
8843
8840
  i0.ɵɵtemplate(0, IconTextComponent_ng_container_0_Template, 3, 2, "ng-container", 0);
8844
8841
  i0.ɵɵtemplate(1, IconTextComponent_input_1_Template, 1, 2, "input", 1);
8845
- i0.ɵɵtemplate(2, IconTextComponent_span_2_Template, 2, 1, "span", 2);
8842
+ i0.ɵɵtemplate(2, IconTextComponent_h3_2_Template, 2, 1, "h3", 2);
8846
8843
  }
8847
8844
  if (rf & 2) {
8848
8845
  i0.ɵɵproperty("ngIf", ctx.smeIconClassName || ctx.urlIcon);
@@ -8855,7 +8852,7 @@ class IconTextComponent extends CoreBaseComponent {
8855
8852
  (function () {
8856
8853
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IconTextComponent, [{
8857
8854
  type: Component,
8858
- args: [{ selector: 'sme-icon-text', template: "<ng-container *ngIf=\"smeIconClassName || urlIcon\">\r\n <span *ngIf=\"smeIconClassName\" class=\"sme-icon-text-icon sme-position-flex-align-center sme-icon sme-margin-right-xs\" [class]=\"smeIconClassName ? smeIconClassName : ''\"></span>\r\n <span *ngIf=\"urlIcon && !smeIconClassName\" class=\"sme-icon-text-icon sme-position-flex-align-center sme-url-icon sme-margin-right-xs\" [style.background-image]=\"urlIcon\"></span>\r\n</ng-container>\r\n<input *ngIf=\"readOnlyFormField\" type=\"text\" readonly class=\"sme-icon-text-text sme-position-flex-auto\" [attr.aria-label]=\"readOnlyFormFieldLabel\" tabindex=\"-1\" [value]=\"title\" />\r\n<span *ngIf=\"!readOnlyFormField && showTitle\" class=\"sme-icon-text-text sme-position-flex-align-center\">{{ title }}</span>\r\n" }]
8855
+ args: [{ selector: 'sme-icon-text', template: "<ng-container *ngIf=\"smeIconClassName || urlIcon\">\r\n <span *ngIf=\"smeIconClassName\" class=\"sme-icon-text-icon sme-position-flex-align-center sme-icon sme-margin-right-xs\" [class]=\"smeIconClassName ? smeIconClassName : ''\"></span>\r\n <span *ngIf=\"urlIcon && !smeIconClassName\" class=\"sme-icon-text-icon sme-position-flex-align-center sme-url-icon sme-margin-right-xs\" [style.background-image]=\"urlIcon\"></span>\r\n</ng-container>\r\n<input *ngIf=\"readOnlyFormField\" type=\"text\" readonly class=\"sme-icon-text-text sme-position-flex-auto\" [attr.aria-label]=\"readOnlyFormFieldLabel\" tabindex=\"-1\" [value]=\"title\" />\r\n<h3 *ngIf=\"!readOnlyFormField && showTitle\" class=\"sme-icon-text-text sme-position-flex-align-center\">{{ title }}</h3>\r\n" }]
8859
8856
  }], function () { return [{ type: i0.Injector }]; }, { title: [{
8860
8857
  type: Input
8861
8858
  }], showTitle: [{
@@ -16372,7 +16369,7 @@ class TabbedFormLoaderComponent extends ObjectPropertySchemaFieldLoaderComponent
16372
16369
  });
16373
16370
  }
16374
16371
  ngOnDestroy() {
16375
- this.subscriptions.forEach(sub => sub.unsubscribe());
16372
+ this.subscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
16376
16373
  }
16377
16374
  setupSchema(schema) {
16378
16375
  for (let i = 0; i < schema.properties.length; i++) {
@@ -18400,8 +18397,10 @@ function ClockFormFieldComponent_div_12_Template(rf, ctx) {
18400
18397
  if (rf & 2) {
18401
18398
  const ctx_r3 = i0.ɵɵnextContext();
18402
18399
  i0.ɵɵadvance(1);
18400
+ i0.ɵɵproperty("title", ctx_r3.strings.MsftSmeShell.Angular.Common.apply);
18403
18401
  i0.ɵɵattribute("aria-label", ctx_r3.strings.MsftSmeShell.Angular.Common.apply);
18404
18402
  i0.ɵɵadvance(2);
18403
+ i0.ɵɵproperty("title", ctx_r3.strings.MsftSmeShell.Angular.Common.clear);
18405
18404
  i0.ɵɵattribute("aria-label", ctx_r3.strings.MsftSmeShell.Angular.Common.clear);
18406
18405
  }
18407
18406
  }
@@ -18968,7 +18967,7 @@ class ClockFormFieldComponent extends DateLikeFormFieldComponent {
18968
18967
  }
18969
18968
  }
18970
18969
  /** @nocollapse */ ClockFormFieldComponent.ɵfac = function ClockFormFieldComponent_Factory(t) { return new (t || ClockFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
18971
- /** @nocollapse */ ClockFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ClockFormFieldComponent, selectors: [["sme-form-field", "type", "clock"]], inputs: { showConfirmation: "showConfirmation" }, outputs: { accepted: "accepted", cleared: "cleared" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c0$1g, decls: 14, vars: 9, consts: [["role", "region", 3, "formField"], [1, "sme-clock", "sme-focus-zone", "sme-form-field-editor"], [1, "sme-clock-main-content"], [1, "sme-clock-column", "sme-clock-column-hours", 3, "wheel", "scroll"], [1, "sme-clock-column-header"], ["type", "button", 3, "sme-selected", "tabindex", "click", "keydown", 4, "ngFor", "ngForOf"], [1, "sme-clock-column", "sme-clock-column-minutes", 3, "wheel", "scroll"], ["class", "sme-clock-column sme-clock-column-meridiem", 3, "wheel", "scroll", 4, "ngIf"], ["class", "sme-clock-confirmation", 4, "ngIf"], [3, "alert", 4, "ngIf"], ["type", "button", 3, "tabindex", "click", "keydown"], [1, "sme-clock-column", "sme-clock-column-meridiem", 3, "wheel", "scroll"], ["type", "button", 3, "class", "sme-selected", "tabindex", "click", "keydown", 4, "ngFor", "ngForOf"], [1, "sme-clock-confirmation"], ["type", "button", "tabindex", "0", 3, "click"], [1, "sme-icon", "sme-icon-size-xxs", "sme-icon-accept"], [1, "sme-icon", "sme-icon-size-xxs", "sme-icon-clear"], [3, "alert"]], template: function ClockFormFieldComponent_Template(rf, ctx) {
18970
+ /** @nocollapse */ ClockFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ClockFormFieldComponent, selectors: [["sme-form-field", "type", "clock"]], inputs: { showConfirmation: "showConfirmation" }, outputs: { accepted: "accepted", cleared: "cleared" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c0$1g, decls: 14, vars: 9, consts: [["role", "region", 3, "formField"], [1, "sme-clock", "sme-focus-zone", "sme-form-field-editor"], [1, "sme-clock-main-content"], [1, "sme-clock-column", "sme-clock-column-hours", 3, "wheel", "scroll"], [1, "sme-clock-column-header"], ["type", "button", 3, "sme-selected", "tabindex", "click", "keydown", 4, "ngFor", "ngForOf"], [1, "sme-clock-column", "sme-clock-column-minutes", 3, "wheel", "scroll"], ["class", "sme-clock-column sme-clock-column-meridiem", 3, "wheel", "scroll", 4, "ngIf"], ["class", "sme-clock-confirmation", 4, "ngIf"], [3, "alert", 4, "ngIf"], ["type", "button", 3, "tabindex", "click", "keydown"], [1, "sme-clock-column", "sme-clock-column-meridiem", 3, "wheel", "scroll"], ["type", "button", 3, "class", "sme-selected", "tabindex", "click", "keydown", 4, "ngFor", "ngForOf"], [1, "sme-clock-confirmation"], ["type", "button", "tabindex", "0", 3, "title", "click"], [1, "sme-icon", "sme-icon-size-xxs", "sme-icon-accept"], [1, "sme-icon", "sme-icon-size-xxs", "sme-icon-clear"], [3, "alert"]], template: function ClockFormFieldComponent_Template(rf, ctx) {
18972
18971
  if (rf & 1) {
18973
18972
  i0.ɵɵelementStart(0, "sme-form-field-layout", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
18974
18973
  i0.ɵɵlistener("wheel", function ClockFormFieldComponent_Template_div_wheel_3_listener($event) { return ctx.onHourWheel($event); })("scroll", function ClockFormFieldComponent_Template_div_scroll_3_listener($event) { return ctx.onColumnScroll($event); });
@@ -18986,7 +18985,7 @@ class ClockFormFieldComponent extends DateLikeFormFieldComponent {
18986
18985
  i0.ɵɵelementEnd();
18987
18986
  i0.ɵɵtemplate(11, ClockFormFieldComponent_div_11_Template, 4, 2, "div", 7);
18988
18987
  i0.ɵɵelementEnd();
18989
- i0.ɵɵtemplate(12, ClockFormFieldComponent_div_12_Template, 5, 2, "div", 8);
18988
+ i0.ɵɵtemplate(12, ClockFormFieldComponent_div_12_Template, 5, 4, "div", 8);
18990
18989
  i0.ɵɵelementEnd();
18991
18990
  i0.ɵɵtemplate(13, ClockFormFieldComponent_sme_validation_alert_13_Template, 1, 1, "sme-validation-alert", 9);
18992
18991
  i0.ɵɵelementEnd();
@@ -19009,7 +19008,7 @@ class ClockFormFieldComponent extends DateLikeFormFieldComponent {
19009
19008
  i0.ɵɵadvance(1);
19010
19009
  i0.ɵɵproperty("ngIf", !ctx.compact);
19011
19010
  }
19012
- }, dependencies: [i1$1.NgForOf, i1$1.NgIf, ValidationAlertComponent, FormFieldLayoutComponent], encapsulation: 2 });
19011
+ }, dependencies: [i1$1.NgForOf, i1$1.NgIf, TooltipDirective, ValidationAlertComponent, FormFieldLayoutComponent], encapsulation: 2 });
19013
19012
  __decorate([
19014
19013
  Debounce$1(10),
19015
19014
  __metadata("design:type", Function),
@@ -19025,7 +19024,7 @@ __decorate([
19025
19024
  (function () {
19026
19025
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClockFormFieldComponent, [{
19027
19026
  type: Component,
19028
- args: [{ selector: 'sme-form-field[type="clock"]', template: "<sme-form-field-layout [formField]=\"this\" role=\"region\" [attr.aria-label]=\"ariaLabel\">\r\n <div class=\"sme-clock sme-focus-zone sme-form-field-editor \">\r\n <div class=\"sme-clock-main-content\">\r\n <div class=\"sme-clock-column sme-clock-column-hours\" (wheel)=\"onHourWheel($event)\"\r\n (scroll)=\"onColumnScroll($event)\">\r\n <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.hour}}</div>\r\n <button type=\"button\" *ngFor=\"let hour of hours\" [class.sme-selected]=\"hour.isSelected\" [tabindex]=\"hour.isSelected ? 0 : -1\"\r\n (click)=\"onHourClicked($event, hour)\" (keydown)=\"onHourKeydown($event)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Clock.Headings.hour + hour.display\">{{hour.display}}</button>\r\n </div>\r\n <div class=\"sme-clock-column sme-clock-column-minutes\" (wheel)=\"onMinuteWheel($event)\"\r\n (scroll)=\"onColumnScroll($event)\">\r\n <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.minute}}</div>\r\n <button type=\"button\" *ngFor=\"let minute of minutes\" [class.sme-selected]=\"minute.isSelected\"\r\n [tabindex]=\"minute.isSelected ? 0 : -1\" (click)=\"onMinuteClicked($event, minute)\"\r\n (keydown)=\"onMinuteKeydown($event)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Clock.Headings.minute + minute.display\">{{minute.display}}</button>\r\n </div>\r\n <div *ngIf=\"!!viewportMeridiem\" class=\"sme-clock-column sme-clock-column-meridiem\"\r\n (wheel)=\"onMeridiemWheel($event)\" (scroll)=\"onColumnScroll($event)\">\r\n <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.meridiem}}</div>\r\n <button type=\"button\" *ngFor=\"let meridiem of meridiems\" class=\"sme-clock-meridiem-{{meridiem.value}}\"\r\n [class.sme-selected]=\"meridiem.isSelected\" [tabindex]=\"meridiem.isSelected ? 0 : -1\"\r\n (click)=\"onMeridiemClicked($event, meridiem.value)\"\r\n (keydown)=\"onMeridiemKeydown($event)\">{{meridiem.display}}</button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showConfirmation\" class=\"sme-clock-confirmation\">\r\n <button type=\"button\" [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.apply\" tabindex=\"0\"\r\n (click)=\"onAcceptClicked($event)\">\r\n <span class=\"sme-icon sme-icon-size-xxs sme-icon-accept\"></span>\r\n </button>\r\n <button type=\"button\" [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.clear\" tabindex=\"0\"\r\n (click)=\"cleared.emit($event)\">\r\n <span class=\"sme-icon sme-icon-size-xxs sme-icon-clear\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n <sme-validation-alert *ngIf=\"!compact\" [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }]
19027
+ args: [{ selector: 'sme-form-field[type="clock"]', template: "<sme-form-field-layout [formField]=\"this\" role=\"region\" [attr.aria-label]=\"ariaLabel\">\r\n <div class=\"sme-clock sme-focus-zone sme-form-field-editor \">\r\n <div class=\"sme-clock-main-content\">\r\n <div class=\"sme-clock-column sme-clock-column-hours\" (wheel)=\"onHourWheel($event)\"\r\n (scroll)=\"onColumnScroll($event)\">\r\n <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.hour}}</div>\r\n <button type=\"button\" *ngFor=\"let hour of hours\" [class.sme-selected]=\"hour.isSelected\" [tabindex]=\"hour.isSelected ? 0 : -1\"\r\n (click)=\"onHourClicked($event, hour)\" (keydown)=\"onHourKeydown($event)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Clock.Headings.hour + hour.display\">{{hour.display}}</button>\r\n </div>\r\n <div class=\"sme-clock-column sme-clock-column-minutes\" (wheel)=\"onMinuteWheel($event)\"\r\n (scroll)=\"onColumnScroll($event)\">\r\n <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.minute}}</div>\r\n <button type=\"button\" *ngFor=\"let minute of minutes\" [class.sme-selected]=\"minute.isSelected\"\r\n [tabindex]=\"minute.isSelected ? 0 : -1\" (click)=\"onMinuteClicked($event, minute)\"\r\n (keydown)=\"onMinuteKeydown($event)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Clock.Headings.minute + minute.display\">{{minute.display}}</button>\r\n </div>\r\n <div *ngIf=\"!!viewportMeridiem\" class=\"sme-clock-column sme-clock-column-meridiem\"\r\n (wheel)=\"onMeridiemWheel($event)\" (scroll)=\"onColumnScroll($event)\">\r\n <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.meridiem}}</div>\r\n <button type=\"button\" *ngFor=\"let meridiem of meridiems\" class=\"sme-clock-meridiem-{{meridiem.value}}\"\r\n [class.sme-selected]=\"meridiem.isSelected\" [tabindex]=\"meridiem.isSelected ? 0 : -1\"\r\n (click)=\"onMeridiemClicked($event, meridiem.value)\"\r\n (keydown)=\"onMeridiemKeydown($event)\">{{meridiem.display}}</button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showConfirmation\" class=\"sme-clock-confirmation\">\r\n <button type=\"button\" [title]=\"this.strings.MsftSmeShell.Angular.Common.apply\"\r\n [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.apply\" tabindex=\"0\"\r\n (click)=\"onAcceptClicked($event)\">\r\n <span class=\"sme-icon sme-icon-size-xxs sme-icon-accept\"></span>\r\n </button>\r\n <button type=\"button\" [title]=\"this.strings.MsftSmeShell.Angular.Common.clear\"\r\n [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.clear\" tabindex=\"0\"\r\n (click)=\"cleared.emit($event)\">\r\n <span class=\"sme-icon sme-icon-size-xxs sme-icon-clear\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n <sme-validation-alert *ngIf=\"!compact\" [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }]
19029
19028
  }], function () { return [{ type: i0.Injector }]; }, { showConfirmation: [{
19030
19029
  type: Input
19031
19030
  }], accepted: [{
@@ -22249,6 +22248,13 @@ function NumberFormFieldComponent_div_3_span_4_Template(rf, ctx) {
22249
22248
  i0.ɵɵelement(6, "span", 15);
22250
22249
  i0.ɵɵelementEnd()();
22251
22250
  }
22251
+ if (rf & 2) {
22252
+ const ctx_r4 = i0.ɵɵnextContext(2);
22253
+ i0.ɵɵadvance(1);
22254
+ i0.ɵɵattribute("aria-label", ctx_r4.ariaLabelIncrease);
22255
+ i0.ɵɵadvance(3);
22256
+ i0.ɵɵattribute("aria-label", ctx_r4.ariaLabelDecrease);
22257
+ }
22252
22258
  }
22253
22259
  function NumberFormFieldComponent_div_3_Template(rf, ctx) {
22254
22260
  if (rf & 1) {
@@ -22256,14 +22262,14 @@ function NumberFormFieldComponent_div_3_Template(rf, ctx) {
22256
22262
  i0.ɵɵelementStart(0, "div", 5, 6)(2, "input", 7, 8);
22257
22263
  i0.ɵɵlistener("ngModelChange", function NumberFormFieldComponent_div_3_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.value = $event); })("focus", function NumberFormFieldComponent_div_3_Template_input_focus_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onInputFocus($event)); })("focusout", function NumberFormFieldComponent_div_3_Template_input_focusout_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onInputFocusOut($event)); })("keydown", function NumberFormFieldComponent_div_3_Template_input_keydown_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.onInputKeydown($event)); });
22258
22264
  i0.ɵɵelementEnd();
22259
- i0.ɵɵtemplate(4, NumberFormFieldComponent_div_3_span_4_Template, 7, 0, "span", 9);
22265
+ i0.ɵɵtemplate(4, NumberFormFieldComponent_div_3_span_4_Template, 7, 2, "span", 9);
22260
22266
  i0.ɵɵelementEnd();
22261
22267
  }
22262
22268
  if (rf & 2) {
22263
22269
  const ctx_r1 = i0.ɵɵnextContext();
22264
22270
  i0.ɵɵadvance(2);
22265
22271
  i0.ɵɵproperty("ngModel", ctx_r1.value)("required", ctx_r1.required)("disabled", ctx_r1.loadingOrDisabled)("max", ctx_r1.max)("min", ctx_r1.min)("step", ctx_r1.step)("placeholder", ctx_r1.placeholder);
22266
- i0.ɵɵattribute("role", ctx_r1.showSpinButton ? "spinButton" : null)("aria-valuemax", ctx_r1.max)("aria-valuemin", ctx_r1.min)("aria-label", ctx_r1.label)("aria-required", ctx_r1.required);
22272
+ i0.ɵɵattribute("role", ctx_r1.showSpinButton ? "spinbutton" : null)("aria-valuemax", ctx_r1.max)("aria-valuemin", ctx_r1.min)("aria-label", ctx_r1.label)("aria-required", ctx_r1.required);
22267
22273
  i0.ɵɵadvance(2);
22268
22274
  i0.ɵɵproperty("ngIf", ctx_r1.showSpinButton);
22269
22275
  }
@@ -22318,6 +22324,18 @@ let NumberFormFieldComponent = class NumberFormFieldComponent extends SmeInterna
22318
22324
  ? MsftSme.isNullOrUndefined(this.step) ? 1 : this.step
22319
22325
  : this.incrementBy;
22320
22326
  }
22327
+ /**
22328
+ * Getter aria label increase for spin button increase.
22329
+ */
22330
+ get ariaLabelIncrease() {
22331
+ return this.strings.MsftSmeShell.Angular.Form.SpinButton.increase.format(this.incrementBy);
22332
+ }
22333
+ /**
22334
+ * Getter aria label increase for spin button decrease.
22335
+ */
22336
+ get ariaLabelDecrease() {
22337
+ return this.strings.MsftSmeShell.Angular.Form.SpinButton.decrease.format(this.incrementBy);
22338
+ }
22321
22339
  /**
22322
22340
  * Handle keydown events on the number input
22323
22341
  */
@@ -22569,7 +22587,7 @@ NumberFormFieldComponent = __decorate([
22569
22587
  (function () {
22570
22588
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NumberFormFieldComponent, [{
22571
22589
  type: Component,
22572
- args: [{ selector: 'sme-form-field[type="number"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div class=\"sme-form-field-editor\">\r\n <span *ngIf=\"readonly\">{{ value }}</span>\r\n <div #container *ngIf=\"!readonly\" class=\"sme-number-form-field-container\">\r\n <input #input type=\"number\" autocomplete=\"off\" [(ngModel)]=\"value\" class=\"sme-hidden-focus\" [attr.role]=\"showSpinButton ? 'spinButton': null\"\r\n [required]=\"required\" [disabled]=\"loadingOrDisabled\" [max]=\"max\" [min]=\"min\" [step]=\"step\" [placeholder]=\"placeholder\"\r\n [attr.aria-valuemax]=\"max\" [attr.aria-valuemin]=\"min\" [attr.aria-label]=\"label\" [attr.aria-required]=\"required\"\r\n (focus)=\"onInputFocus($event)\" (focusout)=\"onInputFocusOut($event)\" (keydown)=\"onInputKeydown($event)\">\r\n <span *ngIf=\"showSpinButton\" class=\"sme-arrange-stack-v sme-form-field-number-button-group\">\r\n <button #incrementButton type=\"button\" class=\"sme-button-auto-width\" tabindex=\"-1\" (click)=\"increment()\">\r\n <span class=\"sme-icon sme-icon-chevronUpSmall\"></span>\r\n </button>\r\n <button #decrementButton type=\"button\" class=\"sme-button-auto-width\" tabindex=\"-1\" (click)=\"decrement()\">\r\n <span class=\"sme-icon sme-icon-chevronDownSmall\"></span>\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }]
22590
+ args: [{ selector: 'sme-form-field[type="number"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div class=\"sme-form-field-editor\">\r\n <span *ngIf=\"readonly\">{{ value }}</span>\r\n <div #container *ngIf=\"!readonly\" class=\"sme-number-form-field-container\">\r\n <input #input type=\"number\" autocomplete=\"off\" [(ngModel)]=\"value\" class=\"sme-hidden-focus\" [attr.role]=\"showSpinButton ? 'spinbutton': null\"\r\n [required]=\"required\" [disabled]=\"loadingOrDisabled\" [max]=\"max\" [min]=\"min\" [step]=\"step\" [placeholder]=\"placeholder\"\r\n [attr.aria-valuemax]=\"max\" [attr.aria-valuemin]=\"min\" [attr.aria-label]=\"label\" [attr.aria-required]=\"required\"\r\n (focus)=\"onInputFocus($event)\" (focusout)=\"onInputFocusOut($event)\" (keydown)=\"onInputKeydown($event)\">\r\n <span *ngIf=\"showSpinButton\" class=\"sme-arrange-stack-v sme-form-field-number-button-group\">\r\n <button #incrementButton type=\"button\" class=\"sme-button-auto-width\" tabindex=\"-1\" (click)=\"increment()\" [attr.aria-label]=\"ariaLabelIncrease\">\r\n <span class=\"sme-icon sme-icon-chevronUpSmall\"></span>\r\n </button>\r\n <button #decrementButton type=\"button\" class=\"sme-button-auto-width\" tabindex=\"-1\" (click)=\"decrement()\" [attr.aria-label]=\"ariaLabelDecrease\">\r\n <span class=\"sme-icon sme-icon-chevronDownSmall\"></span>\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }]
22573
22591
  }], function () { return [{ type: i0.Injector }]; }, { input: [{
22574
22592
  type: ViewChild,
22575
22593
  args: ['input']
@@ -23413,7 +23431,7 @@ function RadioGroupFormFieldLoaderComponent_ng_container_2_sme_option_1_Template
23413
23431
  if (rf & 2) {
23414
23432
  const item_r2 = i0.ɵɵnextContext().$implicit;
23415
23433
  const ctx_r3 = i0.ɵɵnextContext();
23416
- i0.ɵɵproperty("disabled", ctx_r3.shouldDisable() == item_r2.value)("value", item_r2.value)("label", ctx_r3.localize(item_r2.label))("description", ctx_r3.localize(item_r2.description));
23434
+ i0.ɵɵproperty("disabled", ctx_r3.shouldDisable() === item_r2.value)("value", item_r2.value)("label", ctx_r3.localize(item_r2.label))("description", ctx_r3.localize(item_r2.description));
23417
23435
  }
23418
23436
  }
23419
23437
  function RadioGroupFormFieldLoaderComponent_ng_container_2_sme_option_2_ng_template_1_Template(rf, ctx) {
@@ -23438,7 +23456,7 @@ function RadioGroupFormFieldLoaderComponent_ng_container_2_sme_option_2_Template
23438
23456
  if (rf & 2) {
23439
23457
  const item_r2 = i0.ɵɵnextContext().$implicit;
23440
23458
  const ctx_r4 = i0.ɵɵnextContext();
23441
- i0.ɵɵproperty("disabled", ctx_r4.shouldDisable() == item_r2.value)("value", item_r2.value)("label", ctx_r4.localize(item_r2.label))("description", ctx_r4.localize(item_r2.description));
23459
+ i0.ɵɵproperty("disabled", ctx_r4.shouldDisable() === item_r2.value)("value", item_r2.value)("label", ctx_r4.localize(item_r2.label))("description", ctx_r4.localize(item_r2.description));
23442
23460
  }
23443
23461
  }
23444
23462
  function RadioGroupFormFieldLoaderComponent_ng_container_2_Template(rf, ctx) {
@@ -23763,10 +23781,10 @@ class RadioGroupFormFieldLoaderComponent extends ObjectPropertySchemaFieldLoader
23763
23781
  [disabled]="!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))"
23764
23782
  (customValidate)="resolveFunction(propertySchema.customValidation)($event)">
23765
23783
  <ng-container *ngFor="let item of options">
23766
- <sme-option *ngIf="!getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()==item.value"
23784
+ <sme-option *ngIf="!getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()===item.value"
23767
23785
  [value]="item.value" [label]="localize(item.label)" [description]="localize(item.description)">
23768
23786
  </sme-option>
23769
- <sme-option *ngIf="getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()==item.value"
23787
+ <sme-option *ngIf="getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()===item.value"
23770
23788
  [value]="item.value" [label]="localize(item.label)" [description]="localize(item.description)">
23771
23789
  <ng-template>
23772
23790
  <sme-schema-field-host [propertySchema]="getObjectOptionByMainOption(item.value)"
@@ -26766,12 +26784,36 @@ class DataTableColumnComponent {
26766
26784
  * if we don't initialize from child components.
26767
26785
  */
26768
26786
  class SpacerBaseDirective extends CoreBaseComponent {
26787
+ constructor() {
26788
+ super(...arguments);
26789
+ /**
26790
+ * The internal value for showLeftMargin.
26791
+ */
26792
+ this.showLeftMarginInternal = true;
26793
+ }
26769
26794
  /**
26770
26795
  * The log source name for the component.
26771
26796
  */
26772
26797
  get logSourceName() {
26773
26798
  return 'SpacerBaseDirective';
26774
26799
  }
26800
+ /**
26801
+ * Setter showLeftMargin.
26802
+ * The input parameter for determining the component to render left margin.
26803
+ * Custom implementation on control is required.
26804
+ * Migrated from the data-table control, the data-table control will still accept this input but actual implementation will be noLeftMargin.
26805
+ * @deprecated since '05/01/23' Use noLeftMargin instead.
26806
+ */
26807
+ set showLeftMargin(input) {
26808
+ this.showLeftMarginInternal = !!input;
26809
+ this.noLeftMargin = !input;
26810
+ }
26811
+ /**
26812
+ * Getter showLeftMargin.
26813
+ */
26814
+ get showLeftMargin() {
26815
+ return !!this.showLeftMarginInternal;
26816
+ }
26775
26817
  }
26776
26818
  /** @nocollapse */ SpacerBaseDirective.ɵfac = /** @pureOrBreakMyCode */ function () { let ɵSpacerBaseDirective_BaseFactory; return function SpacerBaseDirective_Factory(t) { return (ɵSpacerBaseDirective_BaseFactory || (ɵSpacerBaseDirective_BaseFactory = i0.ɵɵgetInheritedFactory(SpacerBaseDirective)))(t || SpacerBaseDirective); }; }();
26777
26819
  /** @nocollapse */ SpacerBaseDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: SpacerBaseDirective, inputs: { noLeftPadding: "noLeftPadding", noPadding: "noPadding", noHorizontalMargin: "noHorizontalMargin", noSideMargin: "noSideMargin", showLeftMargin: "showLeftMargin", noLeftMargin: "noLeftMargin" }, features: [i0.ɵɵInheritDefinitionFeature] });
@@ -32923,7 +32965,7 @@ DataTableComponent.pxConverter = new PxConverter();
32923
32965
  i0.ɵɵelement(28, "div", 27, 28);
32924
32966
  }
32925
32967
  if (rf & 2) {
32926
- i0.ɵɵclassProp("sme-shadow-scrolled-content", ctx.isScrolledDown)("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-table-indented", ctx.showLeftMargin)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox);
32968
+ i0.ɵɵclassProp("sme-shadow-scrolled-content", ctx.isScrolledDown)("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-table-indented", !ctx.noLeftMargin)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox);
32927
32969
  i0.ɵɵadvance(5);
32928
32970
  i0.ɵɵattribute("role", ctx.selectionMode === "multiple" ? "columnheader" : "presentation");
32929
32971
  i0.ɵɵadvance(1);
@@ -32931,7 +32973,7 @@ DataTableComponent.pxConverter = new PxConverter();
32931
32973
  i0.ɵɵadvance(1);
32932
32974
  i0.ɵɵproperty("ngForOf", ctx.actualColumns);
32933
32975
  i0.ɵɵadvance(1);
32934
- i0.ɵɵclassProp("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-margin-top-none", !ctx.showHeader)("sme-table-indented", ctx.showLeftMargin)("sme-table-grid-lines", ctx.showGrid)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox)("sme-table-editable", ctx.editable);
32976
+ i0.ɵɵclassProp("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-margin-top-none", !ctx.showHeader)("sme-table-indented", !ctx.noLeftMargin)("sme-table-grid-lines", ctx.showGrid)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox)("sme-table-editable", ctx.editable);
32935
32977
  i0.ɵɵadvance(2);
32936
32978
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(38, _c18, ctx.scrollable, ctx.shouldScroll));
32937
32979
  i0.ɵɵadvance(2);
@@ -33009,7 +33051,7 @@ __decorate([
33009
33051
  (function () {
33010
33052
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataTableComponent, [{
33011
33053
  type: Component,
33012
- args: [{ selector: 'sme-data-table', template: "<div role=\"presentation\" class=\"sme-table-header sme-focus-zone sme-data-table-transition\" #header\r\n [class.sme-shadow-scrolled-content]=\"isScrolledDown\" [class.sme-table-multi-select]=\"selectionMode==='multiple'\"\r\n [class.sme-table-selectable]=\"selectable\" [class.sme-table-indented]=\"showLeftMargin\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\">\r\n <!-- According to the accessibility team, data-table headers should be accessible by keyboard\r\n and the resizer should also be accessed by keyboard.-->\r\n <div #headerTable class=\"sme-table sme-table-virtualized sme-table-auto-width-phone-down\" role=\"rowgroup\">\r\n <div class=\"sme-table-row sme-arrange-stack-h sme-position-flex-auto\" role=\"row\"\r\n (keydown)=\"onHeaderTablePressed($event)\">\r\n <div class=\"sme-table-caption\" [attr.role]=\"selectionMode==='multiple'?'columnheader':'presentation'\"\r\n data-uta-id=\"checkboxColumn\">\r\n <div class=\"sme-table-checkbox sme-table-header-checkbox\"\r\n *ngIf=\"selectionMode==='multiple' && showAllItemCheckbox && showHeader\" role=\"presentation\">\r\n <input sme-lint-disable-self type=\"checkbox\" [attr.aria-label]=\"getAllItemCheckBoxAriaLabel()\"\r\n [checked]=\"shouldAllItemCheckBoxChecked()\"\r\n [attr.aria-checked]=\"shouldAllItemCheckBoxChecked()?'true':'false'\" (change)=\"onAllItemCheckBoxClicked()\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex = index\" [attr.field]=\"column.field\"\r\n [ngStyle]=\"{'width': column.width}\"\r\n class=\"sme-table-caption sme-table-column-header sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"presentation\" [attr.data-uta-id]=\"column.utaId\" [attr.column-index]=\"colIndex\">\r\n <div *ngIf=\"column.sortable && column.sortable!='false' && showHeader\"\r\n class=\"sme-table-header-cell sme-focus-zone\" (click)=\"clickColumn(column)\" role=\"columnheader\"\r\n [title]=\"column.header\" aria-live=\"polite\" tabindex=\"0\" [attr.aria-sort]=\"columnSortSettings[column.header]\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!(column.sortable && column.sortable!='false') && showHeader\" class=\"sme-table-header-cell sme-focus-zone\"\r\n role=\"columnheader\" [title]=\"column.header\" tabindex=\"0\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!showHeader\" class=\"sme-table-header-cell\" role=\"columnheader\">\r\n </div>\r\n <sme-resizer [focusable]=\"false\" *ngIf=\"colIndex!==actualColumns.length-1 && showHeader\"\r\n resizerHostSelector=\"div.sme-table-header\" (resized)=\"onColumnResized(colIndex, $event)\"\r\n [visibleToScreenReader]=\"true\" [showResizerCover]=\"false\" orientation=\"left\"\r\n (resizing)=\"onColumnResizing($event)\" class=\"sme-focus-zone\"></sme-resizer>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"sme-focus-zone sme-table-container sme-data-table-transition\" #content role=\"presentation\"\r\n [class.sme-table-multi-select]=\"selectionMode==='multiple'\" [class.sme-table-selectable]=\"selectable\"\r\n [class.sme-margin-top-none]=\"!showHeader\" [class.sme-table-indented]=\"showLeftMargin\"\r\n [class.sme-table-grid-lines]=\"showGrid\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\"\r\n [class.sme-table-editable]=\"editable\">\r\n <div class=\"sme-table-scroll-container sme-layout-absolute sme-position-inset-none\"\r\n [ngClass]=\"{'sme-layout-absolute sme-position-inset-none': scrollable, 'sme-scrollable': shouldScroll}\"\r\n #scrollContainer role=\"rowgroup\">\r\n <div role=\"row\" class=\"sme-table-row sme-table-row-placeholder\" #emptyMessage tabindex=\"0\"\r\n *ngIf=\"showNoRecordsMessage()\" data-uta-id=\"empty-table-message\">\r\n <sme-loading-wheel *ngIf=\"isLoading || !isColumnWidthCalculated\" [message]=\"loadingMessage\">\r\n </sme-loading-wheel>\r\n <div class=\"sme-table-cell sme-table-cell-placeholder\">&nbsp;</div>\r\n <div role=\"gridcell\" class=\"sme-table-cell\">{{getNoRecordsMessage()}}</div>\r\n </div>\r\n <div class=\"sme-layout-relative sme-position-stretch-h sme-arrange-overflow-hide\" #scrollBody role=\"presentation\">\r\n <div class=\"sme-table sme-table-scrollable sme-table-virtualized\" #scrollAboveData\r\n [ngStyle]=\"{top: scrollAboveDataStyleTop}\" [attr.aria-hidden]=\"true\" sme-lint-disable>\r\n <!-- Above view port -->\r\n <div *ngFor=\"let renderedItem of renderedItemsAboveViewPort; let rowIndex = index\"\r\n class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"renderedItem.index === getActiveRenderedItemIndex() || isItemSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\">\r\n <div class=\"sme-arrange-stack-h\">\r\n <div class=\"sme-table-td sme-position-flex-auto\">\r\n <div class=\"sme-table-cell\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\"\r\n (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n class=\"sme-table-cell\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table sme-table-scrollable\" #scrollData [class.sme-table-virtualized]=\"!disableUIVirtualization\"\r\n [ngStyle]=\"{top: scrollDataStyleTop}\" sme-lint-disable role=\"presentation\">\r\n <div *ngFor=\"let renderedItem of renderedItemsInAndBelowViewPort; let rowIndex = index\"\r\n (keydown)=\"onContentTablePressed($event)\" (keyup)=\"onContentTableKeyUp($event)\"\r\n (contextmenu)=\"enableRightClickSelect ? selectItem($event, renderedItem) : true\"\r\n (click)=\"selectItem($event, renderedItem)\" class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"rowDisplayAsSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\" [class.sme-table-row-editable]=\"editable\"\r\n [class.sme-has-validation-error]=\"hasValidationError(renderedItem)\"\r\n [class.sme-data-table-row-new-item]=\"renderedItem?.data?.isNewRow\"\r\n [attr.tabindex]=\"renderedItem.index >= 0 ? 0 : undefined\" (dblclick)=\"doubleClickRow($event,renderedItem)\"\r\n (focus)=\"onContentItemFocused($event, renderedItem)\" (focusin)=\"onContentItemFocused($event, renderedItem)\"\r\n (focusout)=\"onContentItemBlurred($event, renderedItem)\" [attr.data-rendered-item-index]=\"renderedItem.index\"\r\n [attr.aria-rowindex]=\"renderedItem.index+2\" [attr.aria-selected]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n (mouseenter)=\"setHoveredRenderedItem(renderedItem)\" (mouseleave)=\"unsetHoveredRenderedItem(renderedItem)\"\r\n role=\"row\" [attr.aria-expanded]=\"getAriaExpandedAttributeValue(renderedItem)\"\r\n [attr.aria-level]=\"showAsTree && renderedItem.depth ? (renderedItem.depth+1):undefined\">\r\n <div class=\"sme-arrange-stack-h\" role=\"presentation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell': 'presentation'\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"gridcell\" [attr.aria-rowindex]=\"renderedItem.index+2\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\" [id]=\"getFirstColumnId(column, renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\"\r\n [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && !column.bodyEditTemplate\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\" [renderedItem]=\"renderedItem\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && column.bodyEditTemplate\">\r\n <ng-container *ngIf=\"!shouldShowEditRow(renderedItem)\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"shouldShowEditRow(renderedItem)\" class=\"sme-table-cell sme-table-edit-container\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyEditTemplate\" [field]=\"column.field\" [data]=\"renderedItem.data.content\"\r\n [rowIndex]=\"rowIndex\" [renderedItem]=\"renderedItem\"\r\n (validationAlert)=\"onValidationAlertHandler(renderedItem, column.field, $event.alert)\"\r\n (dataChanged)=\"onEditableDataChanged($event.renderedItem,$event.field)\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"hasValidationError(renderedItem)\" class=\"sme-table-row-validation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell' : 'presentation'\"\r\n [attr.tabindex]=\"selectionMode==='multiple'?'0':'undefined'\">\r\n <div class=\"sme-table-cell\" role=\"presentation\">\r\n <div *ngFor=\"let validationResultItem of renderedItem.validationResult\">\r\n <sme-validation-alert [alert]=\"validationResultItem.alert\"></sme-validation-alert>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table-row\" #tempRow>\r\n <div class=\"sme-table-td\" tabindex=\"0\">\r\n <div class=\"sme-table-cell\">&nbsp;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"shouldUseLastFocusableShadowElement\" #lastFocusableShadowElement class=\"sme-focus-zone\"\r\n data-sme-last-focusable-shadow-element (focus)=\"onLastFocusableShadowElementFocused($event)\" tabindex=\"0\"></div>\r\n </div>\r\n <div class=\"sme-layout-absolute sme-position-inset-none\"\r\n *ngIf=\"isBusy || (this.nodeNavigatingTask && this.nodeNavigatingTask.isRunning)\">\r\n <sme-loading-wheel [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n </div>\r\n</div>\r\n<div #resizerIndicator\r\n class=\"sme-width-xxs sme-layout-absolute sme-position-stretch-v sme-background-color-base-80 sme-layer-flyout sme-layout-none\">\r\n</div>\r\n" }]
33054
+ args: [{ selector: 'sme-data-table', template: "<div role=\"presentation\" class=\"sme-table-header sme-focus-zone sme-data-table-transition\" #header\r\n [class.sme-shadow-scrolled-content]=\"isScrolledDown\" [class.sme-table-multi-select]=\"selectionMode==='multiple'\"\r\n [class.sme-table-selectable]=\"selectable\" [class.sme-table-indented]=\"!noLeftMargin\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\">\r\n <!-- According to the accessibility team, data-table headers should be accessible by keyboard\r\n and the resizer should also be accessed by keyboard.-->\r\n <div #headerTable class=\"sme-table sme-table-virtualized sme-table-auto-width-phone-down\" role=\"rowgroup\">\r\n <div class=\"sme-table-row sme-arrange-stack-h sme-position-flex-auto\" role=\"row\"\r\n (keydown)=\"onHeaderTablePressed($event)\">\r\n <div class=\"sme-table-caption\" [attr.role]=\"selectionMode==='multiple'?'columnheader':'presentation'\"\r\n data-uta-id=\"checkboxColumn\">\r\n <div class=\"sme-table-checkbox sme-table-header-checkbox\"\r\n *ngIf=\"selectionMode==='multiple' && showAllItemCheckbox && showHeader\" role=\"presentation\">\r\n <input sme-lint-disable-self type=\"checkbox\" [attr.aria-label]=\"getAllItemCheckBoxAriaLabel()\"\r\n [checked]=\"shouldAllItemCheckBoxChecked()\"\r\n [attr.aria-checked]=\"shouldAllItemCheckBoxChecked()?'true':'false'\" (change)=\"onAllItemCheckBoxClicked()\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex = index\" [attr.field]=\"column.field\"\r\n [ngStyle]=\"{'width': column.width}\"\r\n class=\"sme-table-caption sme-table-column-header sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"presentation\" [attr.data-uta-id]=\"column.utaId\" [attr.column-index]=\"colIndex\">\r\n <div *ngIf=\"column.sortable && column.sortable!='false' && showHeader\"\r\n class=\"sme-table-header-cell sme-focus-zone\" (click)=\"clickColumn(column)\" role=\"columnheader\"\r\n [title]=\"column.header\" aria-live=\"polite\" tabindex=\"0\" [attr.aria-sort]=\"columnSortSettings[column.header]\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!(column.sortable && column.sortable!='false') && showHeader\" class=\"sme-table-header-cell sme-focus-zone\"\r\n role=\"columnheader\" [title]=\"column.header\" tabindex=\"0\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!showHeader\" class=\"sme-table-header-cell\" role=\"columnheader\">\r\n </div>\r\n <sme-resizer [focusable]=\"false\" *ngIf=\"colIndex!==actualColumns.length-1 && showHeader\"\r\n resizerHostSelector=\"div.sme-table-header\" (resized)=\"onColumnResized(colIndex, $event)\"\r\n [visibleToScreenReader]=\"true\" [showResizerCover]=\"false\" orientation=\"left\"\r\n (resizing)=\"onColumnResizing($event)\" class=\"sme-focus-zone\"></sme-resizer>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"sme-focus-zone sme-table-container sme-data-table-transition\" #content role=\"presentation\"\r\n [class.sme-table-multi-select]=\"selectionMode==='multiple'\" [class.sme-table-selectable]=\"selectable\"\r\n [class.sme-margin-top-none]=\"!showHeader\" [class.sme-table-indented]=\"!noLeftMargin\"\r\n [class.sme-table-grid-lines]=\"showGrid\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\"\r\n [class.sme-table-editable]=\"editable\">\r\n <div class=\"sme-table-scroll-container sme-layout-absolute sme-position-inset-none\"\r\n [ngClass]=\"{'sme-layout-absolute sme-position-inset-none': scrollable, 'sme-scrollable': shouldScroll}\"\r\n #scrollContainer role=\"rowgroup\">\r\n <div role=\"row\" class=\"sme-table-row sme-table-row-placeholder\" #emptyMessage tabindex=\"0\"\r\n *ngIf=\"showNoRecordsMessage()\" data-uta-id=\"empty-table-message\">\r\n <sme-loading-wheel *ngIf=\"isLoading || !isColumnWidthCalculated\" [message]=\"loadingMessage\">\r\n </sme-loading-wheel>\r\n <div class=\"sme-table-cell sme-table-cell-placeholder\">&nbsp;</div>\r\n <div role=\"gridcell\" class=\"sme-table-cell\">{{getNoRecordsMessage()}}</div>\r\n </div>\r\n <div class=\"sme-layout-relative sme-position-stretch-h sme-arrange-overflow-hide\" #scrollBody role=\"presentation\">\r\n <div class=\"sme-table sme-table-scrollable sme-table-virtualized\" #scrollAboveData\r\n [ngStyle]=\"{top: scrollAboveDataStyleTop}\" [attr.aria-hidden]=\"true\" sme-lint-disable>\r\n <!-- Above view port -->\r\n <div *ngFor=\"let renderedItem of renderedItemsAboveViewPort; let rowIndex = index\"\r\n class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"renderedItem.index === getActiveRenderedItemIndex() || isItemSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\">\r\n <div class=\"sme-arrange-stack-h\">\r\n <div class=\"sme-table-td sme-position-flex-auto\">\r\n <div class=\"sme-table-cell\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\"\r\n (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n class=\"sme-table-cell\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table sme-table-scrollable\" #scrollData [class.sme-table-virtualized]=\"!disableUIVirtualization\"\r\n [ngStyle]=\"{top: scrollDataStyleTop}\" sme-lint-disable role=\"presentation\">\r\n <div *ngFor=\"let renderedItem of renderedItemsInAndBelowViewPort; let rowIndex = index\"\r\n (keydown)=\"onContentTablePressed($event)\" (keyup)=\"onContentTableKeyUp($event)\"\r\n (contextmenu)=\"enableRightClickSelect ? selectItem($event, renderedItem) : true\"\r\n (click)=\"selectItem($event, renderedItem)\" class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"rowDisplayAsSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\" [class.sme-table-row-editable]=\"editable\"\r\n [class.sme-has-validation-error]=\"hasValidationError(renderedItem)\"\r\n [class.sme-data-table-row-new-item]=\"renderedItem?.data?.isNewRow\"\r\n [attr.tabindex]=\"renderedItem.index >= 0 ? 0 : undefined\" (dblclick)=\"doubleClickRow($event,renderedItem)\"\r\n (focus)=\"onContentItemFocused($event, renderedItem)\" (focusin)=\"onContentItemFocused($event, renderedItem)\"\r\n (focusout)=\"onContentItemBlurred($event, renderedItem)\" [attr.data-rendered-item-index]=\"renderedItem.index\"\r\n [attr.aria-rowindex]=\"renderedItem.index+2\" [attr.aria-selected]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n (mouseenter)=\"setHoveredRenderedItem(renderedItem)\" (mouseleave)=\"unsetHoveredRenderedItem(renderedItem)\"\r\n role=\"row\" [attr.aria-expanded]=\"getAriaExpandedAttributeValue(renderedItem)\"\r\n [attr.aria-level]=\"showAsTree && renderedItem.depth ? (renderedItem.depth+1):undefined\">\r\n <div class=\"sme-arrange-stack-h\" role=\"presentation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell': 'presentation'\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"gridcell\" [attr.aria-rowindex]=\"renderedItem.index+2\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\" [id]=\"getFirstColumnId(column, renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\"\r\n [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && !column.bodyEditTemplate\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\" [renderedItem]=\"renderedItem\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && column.bodyEditTemplate\">\r\n <ng-container *ngIf=\"!shouldShowEditRow(renderedItem)\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"shouldShowEditRow(renderedItem)\" class=\"sme-table-cell sme-table-edit-container\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyEditTemplate\" [field]=\"column.field\" [data]=\"renderedItem.data.content\"\r\n [rowIndex]=\"rowIndex\" [renderedItem]=\"renderedItem\"\r\n (validationAlert)=\"onValidationAlertHandler(renderedItem, column.field, $event.alert)\"\r\n (dataChanged)=\"onEditableDataChanged($event.renderedItem,$event.field)\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"hasValidationError(renderedItem)\" class=\"sme-table-row-validation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell' : 'presentation'\"\r\n [attr.tabindex]=\"selectionMode==='multiple'?'0':'undefined'\">\r\n <div class=\"sme-table-cell\" role=\"presentation\">\r\n <div *ngFor=\"let validationResultItem of renderedItem.validationResult\">\r\n <sme-validation-alert [alert]=\"validationResultItem.alert\"></sme-validation-alert>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table-row\" #tempRow>\r\n <div class=\"sme-table-td\" tabindex=\"0\">\r\n <div class=\"sme-table-cell\">&nbsp;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"shouldUseLastFocusableShadowElement\" #lastFocusableShadowElement class=\"sme-focus-zone\"\r\n data-sme-last-focusable-shadow-element (focus)=\"onLastFocusableShadowElementFocused($event)\" tabindex=\"0\"></div>\r\n </div>\r\n <div class=\"sme-layout-absolute sme-position-inset-none\"\r\n *ngIf=\"isBusy || (this.nodeNavigatingTask && this.nodeNavigatingTask.isRunning)\">\r\n <sme-loading-wheel [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n </div>\r\n</div>\r\n<div #resizerIndicator\r\n class=\"sme-width-xxs sme-layout-absolute sme-position-stretch-v sme-background-color-base-80 sme-layer-flyout sme-layout-none\">\r\n</div>\r\n" }]
33013
33055
  }], function () { return [{ type: i0.Injector }]; }, { resizerIndicator: [{
33014
33056
  type: ViewChild,
33015
33057
  args: ['resizerIndicator']
@@ -33241,7 +33283,7 @@ class TreeTableComponent extends DataTableComponent {
33241
33283
  i0.ɵɵelement(28, "div", 27, 28);
33242
33284
  }
33243
33285
  if (rf & 2) {
33244
- i0.ɵɵclassProp("sme-shadow-scrolled-content", ctx.isScrolledDown)("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-table-indented", ctx.showLeftMargin)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox);
33286
+ i0.ɵɵclassProp("sme-shadow-scrolled-content", ctx.isScrolledDown)("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-table-indented", !ctx.noLeftMargin)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox);
33245
33287
  i0.ɵɵadvance(5);
33246
33288
  i0.ɵɵattribute("role", ctx.selectionMode === "multiple" ? "columnheader" : "presentation");
33247
33289
  i0.ɵɵadvance(1);
@@ -33249,7 +33291,7 @@ class TreeTableComponent extends DataTableComponent {
33249
33291
  i0.ɵɵadvance(1);
33250
33292
  i0.ɵɵproperty("ngForOf", ctx.actualColumns);
33251
33293
  i0.ɵɵadvance(1);
33252
- i0.ɵɵclassProp("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-margin-top-none", !ctx.showHeader)("sme-table-indented", ctx.showLeftMargin)("sme-table-grid-lines", ctx.showGrid)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox)("sme-table-editable", ctx.editable);
33294
+ i0.ɵɵclassProp("sme-table-multi-select", ctx.selectionMode === "multiple")("sme-table-selectable", ctx.selectable)("sme-margin-top-none", !ctx.showHeader)("sme-table-indented", !ctx.noLeftMargin)("sme-table-grid-lines", ctx.showGrid)("sme-table-select-all-enabled", ctx.selectionMode === "multiple" && ctx.showAllItemCheckbox)("sme-table-editable", ctx.editable);
33253
33295
  i0.ɵɵadvance(2);
33254
33296
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(38, _c18, ctx.scrollable, ctx.shouldScroll));
33255
33297
  i0.ɵɵadvance(2);
@@ -33273,7 +33315,7 @@ class TreeTableComponent extends DataTableComponent {
33273
33315
  (function () {
33274
33316
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TreeTableComponent, [{
33275
33317
  type: Component,
33276
- args: [{ selector: 'sme-tree-table', template: "<div role=\"presentation\" class=\"sme-table-header sme-focus-zone sme-data-table-transition\" #header\r\n [class.sme-shadow-scrolled-content]=\"isScrolledDown\" [class.sme-table-multi-select]=\"selectionMode==='multiple'\"\r\n [class.sme-table-selectable]=\"selectable\" [class.sme-table-indented]=\"showLeftMargin\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\">\r\n <!-- According to the accessibility team, data-table headers should be accessible by keyboard\r\n and the resizer should also be accessed by keyboard.-->\r\n <div #headerTable class=\"sme-table sme-table-virtualized sme-table-auto-width-phone-down\" role=\"rowgroup\">\r\n <div class=\"sme-table-row sme-arrange-stack-h sme-position-flex-auto\" role=\"row\"\r\n (keydown)=\"onHeaderTablePressed($event)\">\r\n <div class=\"sme-table-caption\" [attr.role]=\"selectionMode==='multiple'?'columnheader':'presentation'\"\r\n data-uta-id=\"checkboxColumn\">\r\n <div class=\"sme-table-checkbox sme-table-header-checkbox\"\r\n *ngIf=\"selectionMode==='multiple' && showAllItemCheckbox && showHeader\" role=\"presentation\">\r\n <input sme-lint-disable-self type=\"checkbox\" [attr.aria-label]=\"getAllItemCheckBoxAriaLabel()\"\r\n [checked]=\"shouldAllItemCheckBoxChecked()\"\r\n [attr.aria-checked]=\"shouldAllItemCheckBoxChecked()?'true':'false'\" (change)=\"onAllItemCheckBoxClicked()\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex = index\" [attr.field]=\"column.field\"\r\n [ngStyle]=\"{'width': column.width}\"\r\n class=\"sme-table-caption sme-table-column-header sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"presentation\" [attr.data-uta-id]=\"column.utaId\" [attr.column-index]=\"colIndex\">\r\n <div *ngIf=\"column.sortable && column.sortable!='false' && showHeader\"\r\n class=\"sme-table-header-cell sme-focus-zone\" (click)=\"clickColumn(column)\" role=\"columnheader\"\r\n [title]=\"column.header\" aria-live=\"polite\" tabindex=\"0\" [attr.aria-sort]=\"columnSortSettings[column.header]\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!(column.sortable && column.sortable!='false') && showHeader\" class=\"sme-table-header-cell sme-focus-zone\"\r\n role=\"columnheader\" [title]=\"column.header\" tabindex=\"0\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!showHeader\" class=\"sme-table-header-cell\" role=\"columnheader\">\r\n </div>\r\n <sme-resizer [focusable]=\"false\" *ngIf=\"colIndex!==actualColumns.length-1 && showHeader\"\r\n resizerHostSelector=\"div.sme-table-header\" (resized)=\"onColumnResized(colIndex, $event)\"\r\n [visibleToScreenReader]=\"true\" [showResizerCover]=\"false\" orientation=\"left\"\r\n (resizing)=\"onColumnResizing($event)\" class=\"sme-focus-zone\"></sme-resizer>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"sme-focus-zone sme-table-container sme-data-table-transition\" #content role=\"presentation\"\r\n [class.sme-table-multi-select]=\"selectionMode==='multiple'\" [class.sme-table-selectable]=\"selectable\"\r\n [class.sme-margin-top-none]=\"!showHeader\" [class.sme-table-indented]=\"showLeftMargin\"\r\n [class.sme-table-grid-lines]=\"showGrid\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\"\r\n [class.sme-table-editable]=\"editable\">\r\n <div class=\"sme-table-scroll-container sme-layout-absolute sme-position-inset-none\"\r\n [ngClass]=\"{'sme-layout-absolute sme-position-inset-none': scrollable, 'sme-scrollable': shouldScroll}\"\r\n #scrollContainer role=\"rowgroup\">\r\n <div role=\"row\" class=\"sme-table-row sme-table-row-placeholder\" #emptyMessage tabindex=\"0\"\r\n *ngIf=\"showNoRecordsMessage()\" data-uta-id=\"empty-table-message\">\r\n <sme-loading-wheel *ngIf=\"isLoading || !isColumnWidthCalculated\" [message]=\"loadingMessage\">\r\n </sme-loading-wheel>\r\n <div class=\"sme-table-cell sme-table-cell-placeholder\">&nbsp;</div>\r\n <div role=\"gridcell\" class=\"sme-table-cell\">{{getNoRecordsMessage()}}</div>\r\n </div>\r\n <div class=\"sme-layout-relative sme-position-stretch-h sme-arrange-overflow-hide\" #scrollBody role=\"presentation\">\r\n <div class=\"sme-table sme-table-scrollable sme-table-virtualized\" #scrollAboveData\r\n [ngStyle]=\"{top: scrollAboveDataStyleTop}\" [attr.aria-hidden]=\"true\" sme-lint-disable>\r\n <!-- Above view port -->\r\n <div *ngFor=\"let renderedItem of renderedItemsAboveViewPort; let rowIndex = index\"\r\n class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"renderedItem.index === getActiveRenderedItemIndex() || isItemSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\">\r\n <div class=\"sme-arrange-stack-h\">\r\n <div class=\"sme-table-td sme-position-flex-auto\">\r\n <div class=\"sme-table-cell\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\"\r\n (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n class=\"sme-table-cell\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table sme-table-scrollable\" #scrollData [class.sme-table-virtualized]=\"!disableUIVirtualization\"\r\n [ngStyle]=\"{top: scrollDataStyleTop}\" sme-lint-disable role=\"presentation\">\r\n <div *ngFor=\"let renderedItem of renderedItemsInAndBelowViewPort; let rowIndex = index\"\r\n (keydown)=\"onContentTablePressed($event)\" (keyup)=\"onContentTableKeyUp($event)\"\r\n (contextmenu)=\"enableRightClickSelect ? selectItem($event, renderedItem) : true\"\r\n (click)=\"selectItem($event, renderedItem)\" class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"rowDisplayAsSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\" [class.sme-table-row-editable]=\"editable\"\r\n [class.sme-has-validation-error]=\"hasValidationError(renderedItem)\"\r\n [class.sme-data-table-row-new-item]=\"renderedItem?.data?.isNewRow\"\r\n [attr.tabindex]=\"renderedItem.index >= 0 ? 0 : undefined\" (dblclick)=\"doubleClickRow($event,renderedItem)\"\r\n (focus)=\"onContentItemFocused($event, renderedItem)\" (focusin)=\"onContentItemFocused($event, renderedItem)\"\r\n (focusout)=\"onContentItemBlurred($event, renderedItem)\" [attr.data-rendered-item-index]=\"renderedItem.index\"\r\n [attr.aria-rowindex]=\"renderedItem.index+2\" [attr.aria-selected]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n (mouseenter)=\"setHoveredRenderedItem(renderedItem)\" (mouseleave)=\"unsetHoveredRenderedItem(renderedItem)\"\r\n role=\"row\" [attr.aria-expanded]=\"getAriaExpandedAttributeValue(renderedItem)\"\r\n [attr.aria-level]=\"showAsTree && renderedItem.depth ? (renderedItem.depth+1):undefined\">\r\n <div class=\"sme-arrange-stack-h\" role=\"presentation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell': 'presentation'\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"gridcell\" [attr.aria-rowindex]=\"renderedItem.index+2\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\" [id]=\"getFirstColumnId(column, renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\"\r\n [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && !column.bodyEditTemplate\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\" [renderedItem]=\"renderedItem\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && column.bodyEditTemplate\">\r\n <ng-container *ngIf=\"!shouldShowEditRow(renderedItem)\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"shouldShowEditRow(renderedItem)\" class=\"sme-table-cell sme-table-edit-container\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyEditTemplate\" [field]=\"column.field\" [data]=\"renderedItem.data.content\"\r\n [rowIndex]=\"rowIndex\" [renderedItem]=\"renderedItem\"\r\n (validationAlert)=\"onValidationAlertHandler(renderedItem, column.field, $event.alert)\"\r\n (dataChanged)=\"onEditableDataChanged($event.renderedItem,$event.field)\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"hasValidationError(renderedItem)\" class=\"sme-table-row-validation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell' : 'presentation'\"\r\n [attr.tabindex]=\"selectionMode==='multiple'?'0':'undefined'\">\r\n <div class=\"sme-table-cell\" role=\"presentation\">\r\n <div *ngFor=\"let validationResultItem of renderedItem.validationResult\">\r\n <sme-validation-alert [alert]=\"validationResultItem.alert\"></sme-validation-alert>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table-row\" #tempRow>\r\n <div class=\"sme-table-td\" tabindex=\"0\">\r\n <div class=\"sme-table-cell\">&nbsp;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"shouldUseLastFocusableShadowElement\" #lastFocusableShadowElement class=\"sme-focus-zone\"\r\n data-sme-last-focusable-shadow-element (focus)=\"onLastFocusableShadowElementFocused($event)\" tabindex=\"0\"></div>\r\n </div>\r\n <div class=\"sme-layout-absolute sme-position-inset-none\"\r\n *ngIf=\"isBusy || (this.nodeNavigatingTask && this.nodeNavigatingTask.isRunning)\">\r\n <sme-loading-wheel [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n </div>\r\n</div>\r\n<div #resizerIndicator\r\n class=\"sme-width-xxs sme-layout-absolute sme-position-stretch-v sme-background-color-base-80 sme-layer-flyout sme-layout-none\">\r\n</div>\r\n" }]
33318
+ args: [{ selector: 'sme-tree-table', template: "<div role=\"presentation\" class=\"sme-table-header sme-focus-zone sme-data-table-transition\" #header\r\n [class.sme-shadow-scrolled-content]=\"isScrolledDown\" [class.sme-table-multi-select]=\"selectionMode==='multiple'\"\r\n [class.sme-table-selectable]=\"selectable\" [class.sme-table-indented]=\"!noLeftMargin\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\">\r\n <!-- According to the accessibility team, data-table headers should be accessible by keyboard\r\n and the resizer should also be accessed by keyboard.-->\r\n <div #headerTable class=\"sme-table sme-table-virtualized sme-table-auto-width-phone-down\" role=\"rowgroup\">\r\n <div class=\"sme-table-row sme-arrange-stack-h sme-position-flex-auto\" role=\"row\"\r\n (keydown)=\"onHeaderTablePressed($event)\">\r\n <div class=\"sme-table-caption\" [attr.role]=\"selectionMode==='multiple'?'columnheader':'presentation'\"\r\n data-uta-id=\"checkboxColumn\">\r\n <div class=\"sme-table-checkbox sme-table-header-checkbox\"\r\n *ngIf=\"selectionMode==='multiple' && showAllItemCheckbox && showHeader\" role=\"presentation\">\r\n <input sme-lint-disable-self type=\"checkbox\" [attr.aria-label]=\"getAllItemCheckBoxAriaLabel()\"\r\n [checked]=\"shouldAllItemCheckBoxChecked()\"\r\n [attr.aria-checked]=\"shouldAllItemCheckBoxChecked()?'true':'false'\" (change)=\"onAllItemCheckBoxClicked()\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex = index\" [attr.field]=\"column.field\"\r\n [ngStyle]=\"{'width': column.width}\"\r\n class=\"sme-table-caption sme-table-column-header sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"presentation\" [attr.data-uta-id]=\"column.utaId\" [attr.column-index]=\"colIndex\">\r\n <div *ngIf=\"column.sortable && column.sortable!='false' && showHeader\"\r\n class=\"sme-table-header-cell sme-focus-zone\" (click)=\"clickColumn(column)\" role=\"columnheader\"\r\n [title]=\"column.header\" aria-live=\"polite\" tabindex=\"0\" [attr.aria-sort]=\"columnSortSettings[column.header]\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!(column.sortable && column.sortable!='false') && showHeader\" class=\"sme-table-header-cell sme-focus-zone\"\r\n role=\"columnheader\" [title]=\"column.header\" tabindex=\"0\">\r\n <span>{{column.header}}</span>\r\n <span class=\"sme-icon sme-margin-left-xxs\" [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\"\r\n [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n </div>\r\n <div *ngIf=\"!showHeader\" class=\"sme-table-header-cell\" role=\"columnheader\">\r\n </div>\r\n <sme-resizer [focusable]=\"false\" *ngIf=\"colIndex!==actualColumns.length-1 && showHeader\"\r\n resizerHostSelector=\"div.sme-table-header\" (resized)=\"onColumnResized(colIndex, $event)\"\r\n [visibleToScreenReader]=\"true\" [showResizerCover]=\"false\" orientation=\"left\"\r\n (resizing)=\"onColumnResizing($event)\" class=\"sme-focus-zone\"></sme-resizer>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"sme-focus-zone sme-table-container sme-data-table-transition\" #content role=\"presentation\"\r\n [class.sme-table-multi-select]=\"selectionMode==='multiple'\" [class.sme-table-selectable]=\"selectable\"\r\n [class.sme-margin-top-none]=\"!showHeader\" [class.sme-table-indented]=\"!noLeftMargin\"\r\n [class.sme-table-grid-lines]=\"showGrid\"\r\n [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\"\r\n [class.sme-table-editable]=\"editable\">\r\n <div class=\"sme-table-scroll-container sme-layout-absolute sme-position-inset-none\"\r\n [ngClass]=\"{'sme-layout-absolute sme-position-inset-none': scrollable, 'sme-scrollable': shouldScroll}\"\r\n #scrollContainer role=\"rowgroup\">\r\n <div role=\"row\" class=\"sme-table-row sme-table-row-placeholder\" #emptyMessage tabindex=\"0\"\r\n *ngIf=\"showNoRecordsMessage()\" data-uta-id=\"empty-table-message\">\r\n <sme-loading-wheel *ngIf=\"isLoading || !isColumnWidthCalculated\" [message]=\"loadingMessage\">\r\n </sme-loading-wheel>\r\n <div class=\"sme-table-cell sme-table-cell-placeholder\">&nbsp;</div>\r\n <div role=\"gridcell\" class=\"sme-table-cell\">{{getNoRecordsMessage()}}</div>\r\n </div>\r\n <div class=\"sme-layout-relative sme-position-stretch-h sme-arrange-overflow-hide\" #scrollBody role=\"presentation\">\r\n <div class=\"sme-table sme-table-scrollable sme-table-virtualized\" #scrollAboveData\r\n [ngStyle]=\"{top: scrollAboveDataStyleTop}\" [attr.aria-hidden]=\"true\" sme-lint-disable>\r\n <!-- Above view port -->\r\n <div *ngFor=\"let renderedItem of renderedItemsAboveViewPort; let rowIndex = index\"\r\n class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"renderedItem.index === getActiveRenderedItemIndex() || isItemSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\">\r\n <div class=\"sme-arrange-stack-h\">\r\n <div class=\"sme-table-td sme-position-flex-auto\">\r\n <div class=\"sme-table-cell\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\"\r\n (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n class=\"sme-table-cell\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table sme-table-scrollable\" #scrollData [class.sme-table-virtualized]=\"!disableUIVirtualization\"\r\n [ngStyle]=\"{top: scrollDataStyleTop}\" sme-lint-disable role=\"presentation\">\r\n <div *ngFor=\"let renderedItem of renderedItemsInAndBelowViewPort; let rowIndex = index\"\r\n (keydown)=\"onContentTablePressed($event)\" (keyup)=\"onContentTableKeyUp($event)\"\r\n (contextmenu)=\"enableRightClickSelect ? selectItem($event, renderedItem) : true\"\r\n (click)=\"selectItem($event, renderedItem)\" class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n [class.sme-table-row-selected]=\"rowDisplayAsSelected(renderedItem)\"\r\n [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n [class.sme-checked]=\"isItemSelected(renderedItem)\" [class.sme-table-row-editable]=\"editable\"\r\n [class.sme-has-validation-error]=\"hasValidationError(renderedItem)\"\r\n [class.sme-data-table-row-new-item]=\"renderedItem?.data?.isNewRow\"\r\n [attr.tabindex]=\"renderedItem.index >= 0 ? 0 : undefined\" (dblclick)=\"doubleClickRow($event,renderedItem)\"\r\n (focus)=\"onContentItemFocused($event, renderedItem)\" (focusin)=\"onContentItemFocused($event, renderedItem)\"\r\n (focusout)=\"onContentItemBlurred($event, renderedItem)\" [attr.data-rendered-item-index]=\"renderedItem.index\"\r\n [attr.aria-rowindex]=\"renderedItem.index+2\" [attr.aria-selected]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n (mouseenter)=\"setHoveredRenderedItem(renderedItem)\" (mouseleave)=\"unsetHoveredRenderedItem(renderedItem)\"\r\n role=\"row\" [attr.aria-expanded]=\"getAriaExpandedAttributeValue(renderedItem)\"\r\n [attr.aria-level]=\"showAsTree && renderedItem.depth ? (renderedItem.depth+1):undefined\">\r\n <div class=\"sme-arrange-stack-h\" role=\"presentation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell': 'presentation'\">\r\n <div *ngIf=\"!showAsTree\" class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n role=\"gridcell\" [attr.aria-rowindex]=\"renderedItem.index+2\"\r\n [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n (click)=\"clickGroupToggle(renderedItem)\" [id]=\"getFirstColumnId(column, renderedItem)\">\r\n <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n </span>\r\n <span *ngIf=\"!this.groupHeaderTemplate\">\r\n {{renderedItem.data}}\r\n </span>\r\n <span *ngIf=\"this.groupHeaderTemplate\">\r\n <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n </sme-data-table-template-loader>\r\n </span>\r\n </div>\r\n <div\r\n *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n (click)=\"clickTreeToggle($event, renderedItem)\"\r\n [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n </span>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n </sme-loading-wheel>\r\n <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n </div>\r\n <div\r\n *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n <label role=\"presentation\"></label>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!editable\">\r\n <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\"\r\n [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n class=\"sme-table-cell\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n [class.sme-table-cell-full-height]=\"autoRowHeight\" [id]=\"getFirstColumnId(column, renderedItem)\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && !column.bodyEditTemplate\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\" [renderedItem]=\"renderedItem\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"editable && column.bodyEditTemplate\">\r\n <ng-container *ngIf=\"!shouldShowEditRow(renderedItem)\">\r\n <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n <div\r\n *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n class=\"sme-table-cell\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"shouldShowEditRow(renderedItem)\" class=\"sme-table-cell sme-table-edit-container\"\r\n [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n [template]=\"column.bodyEditTemplate\" [field]=\"column.field\" [data]=\"renderedItem.data.content\"\r\n [rowIndex]=\"rowIndex\" [renderedItem]=\"renderedItem\"\r\n (validationAlert)=\"onValidationAlertHandler(renderedItem, column.field, $event.alert)\"\r\n (dataChanged)=\"onEditableDataChanged($event.renderedItem,$event.field)\">\r\n </sme-data-table-template-loader>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"hasValidationError(renderedItem)\" class=\"sme-table-row-validation\">\r\n <div class=\"sme-table-td sme-position-flex-auto\"\r\n [attr.role] = \"selectionMode === 'multiple' ? 'gridcell' : 'presentation'\"\r\n [attr.tabindex]=\"selectionMode==='multiple'?'0':'undefined'\">\r\n <div class=\"sme-table-cell\" role=\"presentation\">\r\n <div *ngFor=\"let validationResultItem of renderedItem.validationResult\">\r\n <sme-validation-alert [alert]=\"validationResultItem.alert\"></sme-validation-alert>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sme-table-row\" #tempRow>\r\n <div class=\"sme-table-td\" tabindex=\"0\">\r\n <div class=\"sme-table-cell\">&nbsp;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"shouldUseLastFocusableShadowElement\" #lastFocusableShadowElement class=\"sme-focus-zone\"\r\n data-sme-last-focusable-shadow-element (focus)=\"onLastFocusableShadowElementFocused($event)\" tabindex=\"0\"></div>\r\n </div>\r\n <div class=\"sme-layout-absolute sme-position-inset-none\"\r\n *ngIf=\"isBusy || (this.nodeNavigatingTask && this.nodeNavigatingTask.isRunning)\">\r\n <sme-loading-wheel [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n </div>\r\n</div>\r\n<div #resizerIndicator\r\n class=\"sme-width-xxs sme-layout-absolute sme-position-stretch-v sme-background-color-base-80 sme-layer-flyout sme-layout-none\">\r\n</div>\r\n" }]
33277
33319
  }], function () { return [{ type: i0.Injector }]; }, null);
33278
33320
  })();
33279
33321
 
@@ -35526,7 +35568,7 @@ class SplitViewComponent extends CoreBaseComponent {
35526
35568
  * The Angular ngOnDestroy function.
35527
35569
  */
35528
35570
  ngOnDestroy() {
35529
- this.subscriptions.forEach(sub => sub.unsubscribe());
35571
+ this.subscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
35530
35572
  }
35531
35573
  /**
35532
35574
  * The method called after content is initialized.
@@ -37669,7 +37711,7 @@ class AlertBarComponent extends CoreBaseComponent {
37669
37711
  ngOnDestroy() {
37670
37712
  this.alertBarService.unregister(this.id);
37671
37713
  if (this.dialogSubscriptions) {
37672
- this.dialogSubscriptions.forEach(sub => sub.unsubscribe());
37714
+ this.dialogSubscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
37673
37715
  }
37674
37716
  }
37675
37717
  /**
@@ -41374,11 +41416,9 @@ class BaseDialogComponent {
41374
41416
  * The method to run when the component is destroyed.
41375
41417
  */
41376
41418
  ngOnDestroy() {
41377
- var _a;
41378
- this.dialogService.unregister(this.id);
41379
- // the close subscription is created in ngAfterViewInit, if the component is destroyed before that
41380
- // then the subscription will not exist and causing an error.
41381
- (_a = this.closeSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
41419
+ var _a, _b;
41420
+ (_a = this.dialogService) === null || _a === void 0 ? void 0 : _a.unregister(this.id);
41421
+ (_b = this.closeSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
41382
41422
  }
41383
41423
  /**
41384
41424
  * handler for when a close is requested
@@ -41872,7 +41912,8 @@ class ConfirmationListDialogComponent extends BaseDialogComponent {
41872
41912
  return result;
41873
41913
  }
41874
41914
  hide(result) {
41875
- this.dataSourceSubscription.unsubscribe();
41915
+ var _a;
41916
+ (_a = this.dataSourceSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
41876
41917
  super.hide(result);
41877
41918
  }
41878
41919
  onConfirm() {
@@ -46268,6 +46309,9 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) {
46268
46309
  i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_10_span_2_Template, 2, 1, "span", 25);
46269
46310
  i0.ɵɵelementStart(3, "a", 28);
46270
46311
  i0.ɵɵtext(4);
46312
+ i0.ɵɵelementEnd();
46313
+ i0.ɵɵelementStart(5, "span", 29);
46314
+ i0.ɵɵtext(6);
46271
46315
  i0.ɵɵelementEnd()();
46272
46316
  }
46273
46317
  if (rf & 2) {
@@ -46276,14 +46320,18 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) {
46276
46320
  const ctx_r9 = i0.ɵɵnextContext();
46277
46321
  const _r12 = i0.ɵɵreference(15);
46278
46322
  i0.ɵɵadvance(1);
46279
- i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(7, _c4$2, item_r35, i_r36));
46323
+ i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4$2, item_r35, i_r36));
46280
46324
  i0.ɵɵadvance(1);
46281
46325
  i0.ɵɵproperty("ngIf", item_r35.prefixString);
46282
46326
  i0.ɵɵadvance(1);
46283
46327
  i0.ɵɵproperty("routerLink", item_r35.link);
46284
- i0.ɵɵattribute("aria-labelledby", ctx_r9.idBag.labelSpan + i_r36 + " " + (ctx_r9.idBag.valueSpan + i_r36))("aria-describedby", ctx_r9.idBag.detailsSpan + i_r36);
46328
+ i0.ɵɵattribute("aria-describedby", ctx_r9.idBag.detailsSpan + i_r36);
46285
46329
  i0.ɵɵadvance(1);
46286
46330
  i0.ɵɵtextInterpolate(item_r35.value);
46331
+ i0.ɵɵadvance(1);
46332
+ i0.ɵɵproperty("id", ctx_r9.idBag.detailsSpan + i_r36);
46333
+ i0.ɵɵadvance(1);
46334
+ i0.ɵɵtextInterpolate(ctx_r9.getInternalLinkDescription(item_r35));
46287
46335
  }
46288
46336
  }
46289
46337
  function PropertyGridComponent_ng_template_12_ng_container_1_Template(rf, ctx) {
@@ -46308,8 +46356,11 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) {
46308
46356
  i0.ɵɵelementStart(0, "p");
46309
46357
  i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_12_ng_container_1_Template, 1, 0, "ng-container", 19);
46310
46358
  i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_12_span_2_Template, 2, 1, "span", 25);
46311
- i0.ɵɵelementStart(3, "a", 29);
46359
+ i0.ɵɵelementStart(3, "a", 30);
46312
46360
  i0.ɵɵtext(4);
46361
+ i0.ɵɵelementEnd();
46362
+ i0.ɵɵelementStart(5, "span", 29);
46363
+ i0.ɵɵtext(6);
46313
46364
  i0.ɵɵelementEnd()();
46314
46365
  }
46315
46366
  if (rf & 2) {
@@ -46318,14 +46369,18 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) {
46318
46369
  const ctx_r11 = i0.ɵɵnextContext();
46319
46370
  const _r12 = i0.ɵɵreference(15);
46320
46371
  i0.ɵɵadvance(1);
46321
- i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(7, _c4$2, item_r40, i_r41));
46372
+ i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4$2, item_r40, i_r41));
46322
46373
  i0.ɵɵadvance(1);
46323
46374
  i0.ɵɵproperty("ngIf", item_r40.prefixString);
46324
46375
  i0.ɵɵadvance(1);
46325
46376
  i0.ɵɵproperty("href", item_r40.link, i0.ɵɵsanitizeUrl);
46326
- i0.ɵɵattribute("aria-labelledby", ctx_r11.idBag.labelSpan + i_r41 + " " + (ctx_r11.idBag.valueSpan + i_r41))("aria-describedby", ctx_r11.idBag.detailsSpan + i_r41);
46377
+ i0.ɵɵattribute("aria-describedby", ctx_r11.idBag.detailsSpan + i_r41);
46327
46378
  i0.ɵɵadvance(1);
46328
46379
  i0.ɵɵtextInterpolate(item_r40.value);
46380
+ i0.ɵɵadvance(1);
46381
+ i0.ɵɵproperty("id", ctx_r11.idBag.detailsSpan + i_r41);
46382
+ i0.ɵɵadvance(1);
46383
+ i0.ɵɵtextInterpolate(ctx_r11.getExternalLinkDescription(item_r40));
46329
46384
  }
46330
46385
  }
46331
46386
  function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) {
@@ -46339,7 +46394,7 @@ function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) {
46339
46394
  }
46340
46395
  function PropertyGridComponent_ng_template_14_sme_status_icon_1_Template(rf, ctx) {
46341
46396
  if (rf & 1) {
46342
- i0.ɵɵelement(0, "sme-status-icon", 32);
46397
+ i0.ɵɵelement(0, "sme-status-icon", 33);
46343
46398
  }
46344
46399
  if (rf & 2) {
46345
46400
  const item_r45 = i0.ɵɵnextContext().$implicit;
@@ -46348,8 +46403,8 @@ function PropertyGridComponent_ng_template_14_sme_status_icon_1_Template(rf, ctx
46348
46403
  }
46349
46404
  function PropertyGridComponent_ng_template_14_Template(rf, ctx) {
46350
46405
  if (rf & 1) {
46351
- i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span", 30);
46352
- i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 31);
46406
+ i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span", 31);
46407
+ i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 32);
46353
46408
  }
46354
46409
  if (rf & 2) {
46355
46410
  const item_r45 = ctx.$implicit;
@@ -46487,6 +46542,12 @@ class PropertyGridComponent extends CoreBaseComponent {
46487
46542
  item.loading = false;
46488
46543
  }
46489
46544
  }
46545
+ getInternalLinkDescription(item) {
46546
+ return this.strings.MsftSmeShell.Angular.PropertyGrid.InternalLink.label.format(item.link);
46547
+ }
46548
+ getExternalLinkDescription(item) {
46549
+ return this.strings.MsftSmeShell.Angular.PropertyGrid.ExternalLink.label.format(item.link);
46550
+ }
46490
46551
  /**
46491
46552
  * Creates the idBag used by this component to store unique element ids.
46492
46553
  * id values will be assigned be the @see BaseComponent super class.
@@ -46534,7 +46595,7 @@ class PropertyGridComponent extends CoreBaseComponent {
46534
46595
  }
46535
46596
  }, inputs: { orientation: "orientation" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
46536
46597
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
46537
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 7, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem", "oneColumn"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", "tabindex", "0", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", "tabindex", "0", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "sme-read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "sme-action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon", "sme-icon-after", "sme-icon-openInNewWindow", 3, "href"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) {
46598
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 7, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem", "oneColumn"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", "tabindex", "0", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", "tabindex", "0", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "sme-read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "sme-action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], [1, "sme-screen-reader", 3, "id"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon", "sme-icon-after", "sme-icon-openInNewWindow", 3, "href"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) {
46538
46599
  if (rf & 1) {
46539
46600
  i0.ɵɵelementStart(0, "sme-layout", 0, 1);
46540
46601
  i0.ɵɵelement(2, "sme-layout-definition", 2);
@@ -46544,8 +46605,8 @@ class PropertyGridComponent extends CoreBaseComponent {
46544
46605
  i0.ɵɵelementEnd();
46545
46606
  i0.ɵɵtemplate(6, PropertyGridComponent_ng_template_6_Template, 2, 2, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
46546
46607
  i0.ɵɵtemplate(8, PropertyGridComponent_ng_template_8_Template, 5, 9, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
46547
- i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template, 5, 10, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
46548
- i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template, 5, 10, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
46608
+ i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template, 7, 11, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
46609
+ i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template, 7, 11, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
46549
46610
  i0.ɵɵtemplate(14, PropertyGridComponent_ng_template_14_Template, 2, 2, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
46550
46611
  }
46551
46612
  if (rf & 2) {
@@ -46565,7 +46626,7 @@ class PropertyGridComponent extends CoreBaseComponent {
46565
46626
  type: Component,
46566
46627
  args: [{ selector: 'sme-property-grid', providers: [
46567
46628
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
46568
- ], template: "<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n <label class=\"sme-arrange-stack-h\">\r\n <span>{{ item.label }}</span>\r\n <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n </label>\r\n <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n </div>\r\n </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n </p>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\" [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- External link -->\r\n<ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Icon Template -->\r\n<ng-template #iconTemplate let-item let-i=\"index\">\r\n <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n</ng-template>\r\n" }]
46629
+ ], template: "<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n <label class=\"sme-arrange-stack-h\">\r\n <span>{{ item.label }}</span>\r\n <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n </label>\r\n <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n </div>\r\n </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n </p>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getInternalLinkDescription(item) }}</span>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- External link -->\r\n<ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getExternalLinkDescription(item) }}</span>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Icon Template -->\r\n<ng-template #iconTemplate let-item let-i=\"index\">\r\n <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n</ng-template>\r\n" }]
46569
46630
  }], function () {
46570
46631
  return [{ type: i0.Injector }, { type: undefined, decorators: [{
46571
46632
  type: SkipSelf
@@ -50824,9 +50885,8 @@ class SettingsFormService {
50824
50885
  return fallBackRoute;
50825
50886
  }
50826
50887
  ngOnDestroy() {
50827
- if (this.routerSubscription) {
50828
- this.routerSubscription.unsubscribe();
50829
- }
50888
+ var _a;
50889
+ (_a = this.routerSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
50830
50890
  }
50831
50891
  }
50832
50892
  /** @nocollapse */ SettingsFormService.ɵfac = function SettingsFormService_Factory(t) { return new (t || SettingsFormService)(i0.ɵɵinject(i1.Router)); };
@@ -51521,9 +51581,9 @@ function CommonSettingsComponent_header_2_Template(rf, ctx) {
51521
51581
  i0.ɵɵtextInterpolate(ctx_r0.settingsTitle);
51522
51582
  }
51523
51583
  }
51524
- function CommonSettingsComponent_li_10_h4_1_Template(rf, ctx) {
51584
+ function CommonSettingsComponent_li_10_div_1_Template(rf, ctx) {
51525
51585
  if (rf & 1) {
51526
- i0.ɵɵelementStart(0, "h4", 17);
51586
+ i0.ɵɵelementStart(0, "div", 17);
51527
51587
  i0.ɵɵtext(1);
51528
51588
  i0.ɵɵelementEnd();
51529
51589
  }
@@ -51603,7 +51663,7 @@ function CommonSettingsComponent_li_10_a_2_Template(rf, ctx) {
51603
51663
  function CommonSettingsComponent_li_10_Template(rf, ctx) {
51604
51664
  if (rf & 1) {
51605
51665
  i0.ɵɵelementStart(0, "li", 14);
51606
- i0.ɵɵtemplate(1, CommonSettingsComponent_li_10_h4_1_Template, 2, 3, "h4", 15);
51666
+ i0.ɵɵtemplate(1, CommonSettingsComponent_li_10_div_1_Template, 2, 3, "div", 15);
51607
51667
  i0.ɵɵtemplate(2, CommonSettingsComponent_li_10_a_2_Template, 8, 21, "a", 16);
51608
51668
  i0.ɵɵelementEnd();
51609
51669
  }
@@ -52075,7 +52135,7 @@ __decorate([
52075
52135
  (function () {
52076
52136
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommonSettingsComponent, [{
52077
52137
  type: Component,
52078
- args: [{ selector: 'sme-common-settings', template: "<sme-settings [settingsTitle]=\"hackToolHeader ? '' : settingsTitle\" [class.sme-settings-external-header]=\"externalHeader\">\r\n <sme-settings-navigation class=\"sme-position-stretch-v-phone-up sme-position-stretch-h\" style=\"min-width: 160px\">\r\n <header class=\"sme-layout-tool-header\" *ngIf=\"hackToolHeader\">\r\n <h2 class=\"sme-position-flex-none sme-font-h3\" [attr.aria-label]=\"settingsTitle\">{{settingsTitle}}</h2>\r\n </header>\r\n <div role=\"region\" [attr.aria-label]=\"settingsTitle\" class=\"sme-position-stretch sme-arrange-stack-v\">\r\n <div class=\"sme-position-flex-none sme-focus-zone\">\r\n <form class=\"sme-margin-squish-v-sm\">\r\n <sme-form-field #searchTextBox type=\"search\" name=\"toolsListSearch\" [(ngModel)]=\"filter\" [placeholder]=\"searchBoxPlaceholder\"\r\n [autofocus]=\"true\" [count]=\"filteredSettings ? filteredSettings.length : 0\"\r\n (search)=\"onSearch()\"></sme-form-field>\r\n </form>\r\n </div>\r\n <nav role=\"tablist\" class=\"sme-arrange-stack-v sme-focus-zone\"\r\n [ngClass]=\"scrollableSecondaryNav ? 'sme-position-flex-auto sme-arrange-overflow-auto-y' : ''\">\r\n <ul class=\"sme-position-flex-auto sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y\"\r\n role=\"presentation\">\r\n <li *ngFor=\"let group of groupTools; let j = index\" class=\"sme-margin-inset-none\" role=\"presentation\">\r\n <h4 [id]=\"idBag.group + '-' + j\" class=\"sme-font-h4 sme-font-h4-settings\" *ngIf=\"group.group!==defaultGroup\"\r\n [title]=\"group.group\">{{ group.group }}</h4>\r\n <a *ngFor=\"let setting of group.options; let i = index\"\r\n class=\"sme-padding-squish-v-sm sme-arrange-stack-h sme-arrange-stack-centered-v sme-scheme-nav-item\" role=\"tab\"\r\n href=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n [attr.aria-selected]=\"selectedSetting === setting\"\r\n [routerLink]=\"setting.routeParams.commands\" routerLinkActive=\"sme-active\"\r\n (smeRouterLinkActivated)=\"onSmeRouterLinkActivated(setting)\"\r\n [preserveFragment]=\"setting.routeParams.extras && setting.routeParams.extras.preserveFragment\"\r\n [skipLocationChange]=\"setting.routeParams.extras && setting.routeParams.extras.skipLocationChange\"\r\n [replaceUrl]=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n [queryParams]=\"setting.routeParams.extras && setting.routeParams.extras.queryParams\"\r\n [title]=\"setting.label\" attr.aria-labelledby=\"{{idBag.option}}-{{j}}-{{i}} {{idBag.group}}-{{j}}\">\r\n <div class=\"sme-margin-right-xs sme-layout-flex sme-position-flex-align-center\">\r\n <div *ngIf=\"setting.smeIconClassName\" class=\"sme-icon\" [ngClass]=\"getSmeIconClass(setting)\"></div>\r\n <div *ngIf=\"setting.urlIcon\" class=\"sme-url-icon\" [style.background-image]=\"setting.urlIcon\"></div>\r\n <div *ngIf=\"!setting.urlIcon && !setting.smeIconClassName\" class=\"sme-url-icon\" [style.background-image]=\"defaultIcon\"></div>\r\n </div>\r\n <div class=\"sme-position-flex-auto\">\r\n <span [id]=\"idBag.option + '-' + j + '-' + i\" [class.sme-dirty]=\"!!(setting.form && setting.form.dirty)\"\r\n [class.sme-pristine]=\"!(setting.form && setting.form.dirty)\" class=\"sme-font-label sme-layout-flex sme-position-flex-align-center\">{{ setting.label }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div *ngIf=\"hackShowOverlay\">\r\n <div *ngFor=\"let layer of layers\"\r\n class=\"sme-layout-absolute sme-position-inset-none sme-layer-above sme-scheme-backdrop-opaque\"\r\n (click)=\"onOverlayClick(layer)\"></div>\r\n </div>\r\n </sme-settings-navigation>\r\n <sme-settings-header *ngIf=\"!!showHeader\">\r\n <h3 id=\"sme-shell-setting-selectedTitle\" [attr.aria-label]=\"selectedSetting.label\" *ngIf=\"!!selectedSetting\">\r\n {{ selectedSetting.label }}</h3>\r\n </sme-settings-header>\r\n <sme-settings-content>\r\n <router-outlet></router-outlet>\r\n </sme-settings-content>\r\n <sme-settings-footer>\r\n <ng-content></ng-content>\r\n </sme-settings-footer>\r\n</sme-settings>\r\n" }]
52138
+ args: [{ selector: 'sme-common-settings', template: "<sme-settings [settingsTitle]=\"hackToolHeader ? '' : settingsTitle\" [class.sme-settings-external-header]=\"externalHeader\">\r\n <sme-settings-navigation class=\"sme-position-stretch-v-phone-up sme-position-stretch-h\" style=\"min-width: 160px\">\r\n <header class=\"sme-layout-tool-header\" *ngIf=\"hackToolHeader\">\r\n <h2 class=\"sme-position-flex-none sme-font-h3\" [attr.aria-label]=\"settingsTitle\">{{settingsTitle}}</h2>\r\n </header>\r\n <div role=\"region\" [attr.aria-label]=\"settingsTitle\" class=\"sme-position-stretch sme-arrange-stack-v\">\r\n <div class=\"sme-position-flex-none sme-focus-zone\">\r\n <form class=\"sme-margin-squish-v-sm\">\r\n <sme-form-field #searchTextBox type=\"search\" name=\"toolsListSearch\" [(ngModel)]=\"filter\" [placeholder]=\"searchBoxPlaceholder\"\r\n [autofocus]=\"true\" [count]=\"filteredSettings ? filteredSettings.length : 0\"\r\n (search)=\"onSearch()\"></sme-form-field>\r\n </form>\r\n </div>\r\n <nav role=\"tablist\" class=\"sme-arrange-stack-v sme-focus-zone\"\r\n [ngClass]=\"scrollableSecondaryNav ? 'sme-position-flex-auto sme-arrange-overflow-auto-y' : ''\">\r\n <ul class=\"sme-position-flex-auto sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y\"\r\n role=\"presentation\">\r\n <li *ngFor=\"let group of groupTools; let j = index\" class=\"sme-margin-inset-none\" role=\"presentation\">\r\n <div [id]=\"idBag.group + '-' + j\" class=\"sme-font-h4 sme-font-h4-settings\" *ngIf=\"group.group!==defaultGroup\"\r\n [title]=\"group.group\">{{ group.group }}</div>\r\n <a *ngFor=\"let setting of group.options; let i = index\"\r\n class=\"sme-padding-squish-v-sm sme-arrange-stack-h sme-arrange-stack-centered-v sme-scheme-nav-item\" role=\"tab\"\r\n href=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n [attr.aria-selected]=\"selectedSetting === setting\"\r\n [routerLink]=\"setting.routeParams.commands\" routerLinkActive=\"sme-active\"\r\n (smeRouterLinkActivated)=\"onSmeRouterLinkActivated(setting)\"\r\n [preserveFragment]=\"setting.routeParams.extras && setting.routeParams.extras.preserveFragment\"\r\n [skipLocationChange]=\"setting.routeParams.extras && setting.routeParams.extras.skipLocationChange\"\r\n [replaceUrl]=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n [queryParams]=\"setting.routeParams.extras && setting.routeParams.extras.queryParams\"\r\n [title]=\"setting.label\" attr.aria-labelledby=\"{{idBag.option}}-{{j}}-{{i}} {{idBag.group}}-{{j}}\">\r\n <div class=\"sme-margin-right-xs sme-layout-flex sme-position-flex-align-center\">\r\n <div *ngIf=\"setting.smeIconClassName\" class=\"sme-icon\" [ngClass]=\"getSmeIconClass(setting)\"></div>\r\n <div *ngIf=\"setting.urlIcon\" class=\"sme-url-icon\" [style.background-image]=\"setting.urlIcon\"></div>\r\n <div *ngIf=\"!setting.urlIcon && !setting.smeIconClassName\" class=\"sme-url-icon\" [style.background-image]=\"defaultIcon\"></div>\r\n </div>\r\n <div class=\"sme-position-flex-auto\">\r\n <span [id]=\"idBag.option + '-' + j + '-' + i\" [class.sme-dirty]=\"!!(setting.form && setting.form.dirty)\"\r\n [class.sme-pristine]=\"!(setting.form && setting.form.dirty)\" class=\"sme-font-label sme-layout-flex sme-position-flex-align-center\">{{ setting.label }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div *ngIf=\"hackShowOverlay\">\r\n <div *ngFor=\"let layer of layers\"\r\n class=\"sme-layout-absolute sme-position-inset-none sme-layer-above sme-scheme-backdrop-opaque\"\r\n (click)=\"onOverlayClick(layer)\"></div>\r\n </div>\r\n </sme-settings-navigation>\r\n <sme-settings-header *ngIf=\"!!showHeader\">\r\n <h3 id=\"sme-shell-setting-selectedTitle\" [attr.aria-label]=\"selectedSetting.label\" *ngIf=\"!!selectedSetting\">\r\n {{ selectedSetting.label }}</h3>\r\n </sme-settings-header>\r\n <sme-settings-content>\r\n <router-outlet></router-outlet>\r\n </sme-settings-content>\r\n <sme-settings-footer>\r\n <ng-content></ng-content>\r\n </sme-settings-footer>\r\n</sme-settings>\r\n" }]
52079
52139
  }], function () {
52080
52140
  return [{ type: i0.Injector }, { type: i1.Router }, { type: SettingsFormService }, { type: i0.IterableDiffers }, { type: AppContextService }, { type: RpcShellService }, { type: undefined, decorators: [{
52081
52141
  type: Optional
@@ -52230,10 +52290,9 @@ class SettingsFormDirective {
52230
52290
  this.oldForm = null;
52231
52291
  }
52232
52292
  ngOnChanges(changes) {
52293
+ var _a;
52233
52294
  if (this.smeUpdateDataInComponent && this.smeSettingsForm) {
52234
- if (this.updateDataInComponentSubscription) {
52235
- this.updateDataInComponentSubscription.unsubscribe();
52236
- }
52295
+ (_a = this.updateDataInComponentSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
52237
52296
  this.updateDataInComponentSubscription = this.formsService.updateFormValue().subscribe((data) => {
52238
52297
  this.smeSettingsFormValueUpdate.emit(data.formGroupNewData);
52239
52298
  });
@@ -52246,9 +52305,8 @@ class SettingsFormDirective {
52246
52305
  }
52247
52306
  }
52248
52307
  ngOnDestroy() {
52249
- if (this.updateDataInComponentSubscription) {
52250
- this.updateDataInComponentSubscription.unsubscribe();
52251
- }
52308
+ var _a;
52309
+ (_a = this.updateDataInComponentSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
52252
52310
  }
52253
52311
  }
52254
52312
  /** @nocollapse */ SettingsFormDirective.ɵfac = function SettingsFormDirective_Factory(t) { return new (t || SettingsFormDirective)(i0.ɵɵdirectiveInject(SettingsFormService)); };
@@ -56000,9 +56058,8 @@ class UserAliveService extends RpcObservableAliveClient {
56000
56058
  * Stop monitoring the user activity.
56001
56059
  */
56002
56060
  stop() {
56003
- if (this.subscription) {
56004
- this.subscription.unsubscribe();
56005
- }
56061
+ var _a;
56062
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56006
56063
  }
56007
56064
  }
56008
56065
  /** @nocollapse */ UserAliveService.ɵfac = function UserAliveService_Factory(t) { return new (t || UserAliveService)(i0.ɵɵinject(i1.Router), i0.ɵɵinject(RpcService)); };
@@ -56053,15 +56110,14 @@ class NavigationService {
56053
56110
  * @param options The options to override the default behavior
56054
56111
  */
56055
56112
  initialize(options) {
56113
+ var _a;
56056
56114
  PerformanceTracker.navigationInitialized();
56057
56115
  this.active = true;
56058
56116
  this.options = options ? options : { idleRoute: ['idle'] };
56059
56117
  this.idleUrl = `/${this.options.idleRoute[0]}`;
56060
56118
  // navigate to idle.
56061
56119
  this.router.navigate(this.options.idleRoute, this.defaultNavigationOptions);
56062
- if (this.subscription) {
56063
- this.subscription.unsubscribe();
56064
- }
56120
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56065
56121
  let startTimestamp = null;
56066
56122
  this.subscription = this.router.events
56067
56123
  .pipe(tap(event => {
@@ -56099,11 +56155,9 @@ class NavigationService {
56099
56155
  * Shutdown the navigation communication from/to the shell.
56100
56156
  */
56101
56157
  shutdown() {
56158
+ var _a;
56102
56159
  this.active = false;
56103
- if (this.subscription) {
56104
- this.subscription.unsubscribe();
56105
- this.subscription = null;
56106
- }
56160
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56107
56161
  }
56108
56162
  /**
56109
56163
  * Map dialog service and dialog id so that correct dialog service instance can be found