@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.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 (581) 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/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
  21. package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
  22. package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
  23. package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
  24. package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
  25. package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
  26. package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
  27. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
  28. package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
  29. package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
  30. package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
  31. package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
  32. package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
  33. package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
  34. package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
  35. package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
  36. package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
  37. package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
  38. package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
  39. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
  40. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
  41. package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
  42. package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
  43. package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
  44. package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
  45. package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
  46. package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
  47. package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
  48. package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
  49. package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
  50. package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
  51. package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
  52. package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
  53. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  54. package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
  55. package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
  56. package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
  57. package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
  58. package/angular/esm2020/src/data/index.mjs +2 -1
  59. package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
  60. package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
  61. package/angular/esm2020/src/generated/strings.mjs +1 -1
  62. package/angular/esm2020/src/service/navigation.service.mjs +3 -8
  63. package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
  64. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
  65. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  66. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
  67. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  68. package/angular/package.json +1 -1
  69. package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
  70. package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
  71. package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
  72. package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
  73. package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
  74. package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
  75. package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
  76. package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
  77. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
  78. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
  79. package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
  80. package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
  81. package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
  82. package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
  83. package/angular/src/data/index.d.ts +1 -0
  84. package/angular/src/directives/svg/svg.directive.d.ts +1 -2
  85. package/angular/src/generated/strings.d.ts +12 -0
  86. package/core/async/cancellation.js +312 -0
  87. package/core/async/index.js +312 -0
  88. package/core/async/progress.js +312 -0
  89. package/core/azure/azure-constants.d.ts +2 -2
  90. package/core/azure/azure-constants.d.ts.map +1 -1
  91. package/core/azure/azure-constants.js +322 -3
  92. package/core/azure/azure-constants.js.map +1 -1
  93. package/core/azure/azure-logging.js +312 -0
  94. package/core/azure/azure-manager.js +312 -0
  95. package/core/azure/models/aadAppConfig-data.js +312 -0
  96. package/core/azure/models/azureArcStatusEnum.js +312 -0
  97. package/core/azure/models/azureTokenResult-data.js +312 -0
  98. package/core/azure/resources/deployment-operation-request-body.js +312 -0
  99. package/core/azure/resources/deployment-operation-response.js +312 -0
  100. package/core/azure/resources/location-data.js +315 -0
  101. package/core/azure/resources/resource-group-data.js +312 -0
  102. package/core/azure/resources/subscription-data.js +312 -0
  103. package/core/base/data-store/browser-storage-data-store.js +315 -0
  104. package/core/base/data-store/cached-data-store.js +312 -0
  105. package/core/base/data-store/data-store.js +312 -0
  106. package/core/base/data-store/local-data-store.js +312 -0
  107. package/core/base/data-store/memory-data-store.js +312 -0
  108. package/core/base/data-store/session-data-store.js +312 -0
  109. package/core/base/date/date-like.js +312 -0
  110. package/core/base/date/date-range.js +312 -0
  111. package/core/base/date/date-time.js +312 -0
  112. package/core/base/date/date-type.js +312 -0
  113. package/core/base/date/time-unit.js +312 -0
  114. package/core/base/decorators/base.js +312 -0
  115. package/core/base/decorators/debounce.decorators.js +312 -0
  116. package/core/base/decorators/delay.decorator.js +315 -0
  117. package/core/base/decorators/yield.decorator.js +312 -0
  118. package/core/base/environment.js +312 -0
  119. package/core/base/json.js +312 -0
  120. package/core/base/msft-sme.mock.js +316 -0
  121. package/core/base/polyfills/array.js +315 -0
  122. package/core/base/polyfills/string.js +312 -0
  123. package/core/base/rxjs-lifetime-manager.js +312 -0
  124. package/core/base/utilities.js +312 -0
  125. package/core/base/versioned-object.js +312 -0
  126. package/core/data/accessibility-manager.js +312 -0
  127. package/core/data/active-directory/active-directory.js +312 -0
  128. package/core/data/active-directory/models/account-info.js +312 -0
  129. package/core/data/active-directory/models/active-directory-search-options.js +312 -0
  130. package/core/data/active-directory/models/search-type.js +312 -0
  131. package/core/data/animation.js +312 -0
  132. package/core/data/app-context.js +312 -0
  133. package/core/data/asset-manager.js +315 -0
  134. package/core/data/base64-array-buffer.js +312 -0
  135. package/core/data/batch-connection.js +312 -0
  136. package/core/data/cim-connection.js +312 -0
  137. package/core/data/cim-stream.js +312 -0
  138. package/core/data/cim.js +312 -0
  139. package/core/data/column-picker.js +312 -0
  140. package/core/data/cookie.js +312 -0
  141. package/core/data/core-environment.js +315 -0
  142. package/core/data/crypto.js +312 -0
  143. package/core/data/deployment-share.js +312 -0
  144. package/core/data/disposable.js +312 -0
  145. package/core/data/electron.js +315 -0
  146. package/core/data/error-extended.js +312 -0
  147. package/core/data/extension-broker/dialog-listener.js +312 -0
  148. package/core/data/extension-broker/extension-broker.js +312 -0
  149. package/core/data/extension-broker/extension-listener.js +312 -0
  150. package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
  151. package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
  152. package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
  153. package/core/data/extension-broker/model/extension-entries.js +315 -0
  154. package/core/data/extension-broker/model/extension-instance.js +315 -0
  155. package/core/data/extension-broker/model/extension-rect.js +312 -0
  156. package/core/data/extension-broker/model/extension-search-options.js +312 -0
  157. package/core/data/extension-broker/service-listener.js +312 -0
  158. package/core/data/extension-broker/worker-listener.js +312 -0
  159. package/core/data/extension-broker/worker-set.js +312 -0
  160. package/core/data/file-transfer.js +312 -0
  161. package/core/data/gateway-connection.js +312 -0
  162. package/core/data/gateway-status.js +312 -0
  163. package/core/data/gateway-url-builder.js +312 -0
  164. package/core/data/gateway-url-translator.d.ts +1 -0
  165. package/core/data/gateway-url-translator.d.ts.map +1 -1
  166. package/core/data/gateway-url-translator.js +337 -6
  167. package/core/data/gateway-url-translator.js.map +1 -1
  168. package/core/data/gateway-urls.js +312 -0
  169. package/core/data/globalization.js +315 -0
  170. package/core/data/http-constants.js +315 -0
  171. package/core/data/http.js +312 -0
  172. package/core/data/jobs/jobs-manager.js +312 -0
  173. package/core/data/jobs/models/job-credentials.js +312 -0
  174. package/core/data/jobs/models/job-node.js +312 -0
  175. package/core/data/jobs/models/job-paginated-response.js +315 -0
  176. package/core/data/jobs/models/job-pagination-options.js +315 -0
  177. package/core/data/jobs/models/job.js +312 -0
  178. package/core/data/jobs/models/node-job.js +312 -0
  179. package/core/data/jobs/models/powershell-job.js +312 -0
  180. package/core/data/language.js +315 -0
  181. package/core/data/lifetime-data.js +312 -0
  182. package/core/data/localization-manager.js +312 -0
  183. package/core/data/native-q.js +312 -0
  184. package/core/data/net.d.ts.map +1 -1
  185. package/core/data/net.js +313 -1
  186. package/core/data/net.js.map +1 -1
  187. package/core/data/node-connection.d.ts.map +1 -1
  188. package/core/data/node-connection.js +312 -2
  189. package/core/data/node-connection.js.map +1 -1
  190. package/core/data/node-extension-install.js +312 -0
  191. package/core/data/powershell-alternate.js +312 -0
  192. package/core/data/powershell-batch.js +312 -0
  193. package/core/data/powershell-connection.js +312 -0
  194. package/core/data/powershell-crypto.js +312 -0
  195. package/core/data/powershell-stream.js +312 -0
  196. package/core/data/powershell.js +312 -0
  197. package/core/data/query-cache.js +312 -0
  198. package/core/data/resource-cache.js +312 -0
  199. package/core/data/schedule-reboot.js +312 -0
  200. package/core/data/settings-manager.js +312 -0
  201. package/core/data/settings-manger.mock.js +312 -0
  202. package/core/data/sme-extension.js +312 -0
  203. package/core/data/ssh-stream.js +312 -0
  204. package/core/data/units.js +312 -0
  205. package/core/data/uri-builder.js +315 -0
  206. package/core/data/wdac-operations.js +312 -0
  207. package/core/data/websocket-stream.js +312 -0
  208. package/core/diagnostics/error-monitor.js +312 -0
  209. package/core/diagnostics/log-level.js +312 -0
  210. package/core/diagnostics/log-record.js +312 -0
  211. package/core/diagnostics/logging-constants.js +312 -0
  212. package/core/diagnostics/logging.js +312 -0
  213. package/core/diagnostics/logging.mock.js +312 -0
  214. package/core/diagnostics/sme-web-telemetry-models.js +312 -0
  215. package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
  216. package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
  217. package/core/diagnostics/sme-web-telemetry.js +336 -15
  218. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  219. package/core/diagnostics/telemetry-control-type.js +312 -0
  220. package/core/diagnostics/telemetry-options.js +312 -0
  221. package/core/diagnostics/telemetry-record.js +312 -0
  222. package/core/dom/dom.js +312 -0
  223. package/core/frame/frame-connection.js +312 -0
  224. package/core/frame/frame-connection.mock.js +312 -0
  225. package/core/frame/shell-navigation-connection.js +312 -0
  226. package/core/generated/powershell-scripts.d.ts.map +1 -1
  227. package/core/generated/powershell-scripts.js +313 -1
  228. package/core/generated/powershell-scripts.js.map +1 -1
  229. package/core/generated/strings.js +312 -0
  230. package/core/host/host-core-manager.js +312 -0
  231. package/core/host/host-core-message-type.js +312 -0
  232. package/core/host/host-core-messages.js +312 -0
  233. package/core/index.d.ts +0 -1
  234. package/core/index.d.ts.map +1 -1
  235. package/core/index.js +312 -1
  236. package/core/index.js.map +1 -1
  237. package/core/manifest/environment-modules.js +312 -0
  238. package/core/manifest/manifest-loader.js +312 -0
  239. package/core/notification/client-notification-instance.js +312 -0
  240. package/core/notification/client-notification.js +312 -0
  241. package/core/notification/notification-connection.js +312 -0
  242. package/core/notification/notification-link-type.js +312 -0
  243. package/core/notification/notification-manager.js +312 -0
  244. package/core/notification/notification-message.js +312 -0
  245. package/core/notification/notification-state.js +312 -0
  246. package/core/notification/notification.js +312 -0
  247. package/core/notification/powershell-notification.js +312 -0
  248. package/core/notification/socket-signalr.js +312 -0
  249. package/core/notification/work-item-connection.js +312 -0
  250. package/core/notification/work-item-manager.js +312 -0
  251. package/core/notification/work-item-request.js +312 -0
  252. package/core/performance/performance-profile-data-type.js +312 -0
  253. package/core/performance/performance-profile-data.js +312 -0
  254. package/core/performance/performance-profile-database.js +312 -0
  255. package/core/performance/performance-profile-record.js +312 -0
  256. package/core/performance/performance-profile.d.ts.map +1 -1
  257. package/core/performance/performance-profile.js +321 -9
  258. package/core/performance/performance-profile.js.map +1 -1
  259. package/core/performance/performance-tracker.js +312 -0
  260. package/core/polyfills.js +312 -0
  261. package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
  262. package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
  263. package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
  264. package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
  265. package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
  266. package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
  267. package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
  268. package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
  269. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
  270. package/core/rpc/alive/rpc-alive-client.js +312 -0
  271. package/core/rpc/alive/rpc-alive-handler.js +312 -0
  272. package/core/rpc/alive/rpc-alive-model.js +315 -0
  273. package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
  274. package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
  275. package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
  276. package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
  277. package/core/rpc/azure/rpc-azure-model.js +312 -0
  278. package/core/rpc/azure/rpc-azure-request-client.js +312 -0
  279. package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
  280. package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
  281. package/core/rpc/azure/rpc-azure-response-client.js +312 -0
  282. package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
  283. package/core/rpc/credssp/rpc-credssp-model.js +312 -0
  284. package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
  285. package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
  286. package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
  287. package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
  288. package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
  289. package/core/rpc/dialog/rpc-dialog-client.js +312 -0
  290. package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
  291. package/core/rpc/dialog/rpc-dialog-model.js +312 -0
  292. package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
  293. package/core/rpc/electron/rpc-electron-model.js +312 -0
  294. package/core/rpc/electron/rpc-electron-request-client.js +312 -0
  295. package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
  296. package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
  297. package/core/rpc/electron/rpc-electron-response-client.js +312 -0
  298. package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
  299. package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
  300. package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
  301. package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
  302. package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
  303. package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
  304. package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
  305. package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
  306. package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
  307. package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
  308. package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
  309. package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
  310. package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
  311. package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
  312. package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
  313. package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
  314. package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
  315. package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
  316. package/core/rpc/forward/rpc-forward-down-client.js +315 -0
  317. package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
  318. package/core/rpc/forward/rpc-forward-model.js +312 -0
  319. package/core/rpc/forward/rpc-forward-up-client.js +312 -0
  320. package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
  321. package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
  322. package/core/rpc/log/rpc-log-client.js +312 -0
  323. package/core/rpc/log/rpc-log-handler.js +312 -0
  324. package/core/rpc/log/rpc-log-model.js +312 -0
  325. package/core/rpc/log/rpc-log-subject-server.js +312 -0
  326. package/core/rpc/notification/rpc-notification-client.js +312 -0
  327. package/core/rpc/notification/rpc-notification-handler.js +312 -0
  328. package/core/rpc/notification/rpc-notification-model.js +312 -0
  329. package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
  330. package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
  331. package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
  332. package/core/rpc/overlay/rpc-overlay-model.js +312 -0
  333. package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
  334. package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
  335. package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
  336. package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
  337. package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
  338. package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
  339. package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
  340. package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
  341. package/core/rpc/report/rpc-report-client.js +312 -0
  342. package/core/rpc/report/rpc-report-handler.js +312 -0
  343. package/core/rpc/report/rpc-report-model.js +312 -0
  344. package/core/rpc/report/rpc-report-subject-server.js +315 -0
  345. package/core/rpc/rpc-base.js +312 -0
  346. package/core/rpc/rpc-channel.js +312 -0
  347. package/core/rpc/rpc-forwarder.js +312 -0
  348. package/core/rpc/rpc-inbound-client.js +312 -0
  349. package/core/rpc/rpc-inbound.js +312 -0
  350. package/core/rpc/rpc-manager.js +312 -0
  351. package/core/rpc/rpc-module-subject-server.js +315 -0
  352. package/core/rpc/rpc-observable-client.js +312 -0
  353. package/core/rpc/rpc-observable-request.js +312 -0
  354. package/core/rpc/rpc-observable-result.js +312 -0
  355. package/core/rpc/rpc-observable-server.js +312 -0
  356. package/core/rpc/rpc-outbound-client.js +312 -0
  357. package/core/rpc/rpc-outbound.js +312 -0
  358. package/core/rpc/rpc-subject-server.js +312 -0
  359. package/core/rpc/rpc.js +312 -0
  360. package/core/rpc/seek/rpc-seek-client.js +312 -0
  361. package/core/rpc/seek/rpc-seek-handler.js +315 -0
  362. package/core/rpc/seek/rpc-seek-model.js +312 -0
  363. package/core/rpc/settings/rpc-settings-client.js +315 -0
  364. package/core/rpc/settings/rpc-settings-handler.js +312 -0
  365. package/core/rpc/settings/rpc-settings-model.js +312 -0
  366. package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
  367. package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
  368. package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
  369. package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
  370. package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
  371. package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
  372. package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
  373. package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
  374. package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
  375. package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
  376. package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
  377. package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
  378. package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
  379. package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
  380. package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
  381. package/core/rpc/update-data/rpc-update-data-client.js +312 -0
  382. package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
  383. package/core/rpc/update-data/rpc-update-data-model.js +312 -0
  384. package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
  385. package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
  386. package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
  387. package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
  388. package/core/rpc/work-item/rpc-work-item-client.js +312 -0
  389. package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
  390. package/core/rpc/work-item/rpc-work-item-model.js +312 -0
  391. package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
  392. package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
  393. package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
  394. package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
  395. package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
  396. package/core/security/active-connection.js +312 -0
  397. package/core/security/authorization-manager.js +312 -0
  398. package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
  399. package/core/security/connection-manager-settings/connection-settings.js +312 -0
  400. package/core/security/connection-manager.js +312 -0
  401. package/core/security/connection-stream.js +312 -0
  402. package/core/security/connection.js +312 -0
  403. package/core/security/credssp-manager.js +312 -0
  404. package/core/security/sign-on-manager.js +312 -0
  405. package/core/security/tag-manager.js +312 -0
  406. package/core/security/tool-condition-validator.js +312 -0
  407. package/core/security/tool-connection-query.js +312 -0
  408. package/core/security/user-principal.js +312 -0
  409. package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
  410. package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
  411. package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
  412. package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
  413. package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
  414. package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
  415. package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
  416. package/core/shared/inventory-query-caches.js +312 -0
  417. package/core/shared/server-inventory/server-inventory-cache.js +312 -0
  418. package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
  419. package/core/shared/server-inventory/server-inventory-detail.js +315 -0
  420. package/core/shared/server-inventory/server-inventory.js +312 -0
  421. package/core/shared/shared-cache.js +312 -0
  422. package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
  423. package/core/shared/tool-inventory/tool-inventory.js +312 -0
  424. package/core/special.js +315 -0
  425. package/core/test-utilities/accessibility-tester.js +312 -0
  426. package/core/test-utilities/console.mock.js +312 -0
  427. package/core/test-utilities/jasmine-axe-matcher.js +312 -0
  428. package/core/test-utilities/wait-async.js +312 -0
  429. package/core/test.js +312 -0
  430. package/core/testing.js +312 -0
  431. package/core/workflow/persistent-local-storage.js +312 -0
  432. package/core/workflow/persistent-work-item-apply-state.js +316 -0
  433. package/core/workflow/persistent-work-item-state.js +312 -0
  434. package/core/workflow/persistent-work-item.js +315 -0
  435. package/core/workflow/persistent-workflow-builder.js +312 -0
  436. package/core/workflow/persistent-workflow-context.js +312 -0
  437. package/core/workflow/persistent-workflow-runner.js +312 -0
  438. package/core/workflow/persistent-workflow-snapshot.js +312 -0
  439. package/core/workflow/persistent-workflow-store.js +312 -0
  440. package/core/workflow/persistent-workflow.js +312 -0
  441. package/package.json +11 -9
  442. package/styles/css/main-v2.css +1 -1
  443. package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
  444. package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
  445. package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
  446. package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
  447. package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
  448. package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
  449. package/tools/build/webpack/index-html.transform.js +312 -0
  450. package/tools/build/webpack/shell.index-html.transform.js +312 -0
  451. package/tools/build/webpack/shell.webpack.config.js +312 -0
  452. package/tools/build/webpack/webpack.config.js +312 -0
  453. package/tools/code-formatter/.eslintrc.base.json +3 -1
  454. package/tools/code-formatter/lint.d.ts.map +1 -1
  455. package/tools/code-formatter/lint.js +319 -1
  456. package/tools/code-formatter/lint.js.map +1 -1
  457. package/tools/code-formatter/utilities.d.ts +7 -0
  458. package/tools/code-formatter/utilities.d.ts.map +1 -0
  459. package/tools/code-formatter/utilities.js +395 -0
  460. package/tools/code-formatter/utilities.js.map +1 -0
  461. package/tools/gulp-doc-generator/index.js +312 -0
  462. package/tools/gulp-manifest-resource/index.js +312 -0
  463. package/tools/gulp-manifest-validator/index.js +312 -0
  464. package/tools/gulp-merge-json-in-folders/index.js +312 -0
  465. package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
  466. package/tools/gulp-ps-cim/index.js +315 -0
  467. package/tools/gulp-ps-code/index.d.ts.map +1 -1
  468. package/tools/gulp-ps-code/index.js +323 -2
  469. package/tools/gulp-ps-code/index.js.map +1 -1
  470. package/tools/gulp-ps-code/ps-code-convert.js +312 -0
  471. package/tools/gulp-ps-manifest/index.js +312 -0
  472. package/tools/gulp-ps-module/index.d.ts.map +1 -1
  473. package/tools/gulp-ps-module/index.js +327 -3
  474. package/tools/gulp-ps-module/index.js.map +1 -1
  475. package/tools/gulp-ps-resjson/index.js +315 -0
  476. package/tools/gulp-resjson/index.js +315 -0
  477. package/tools/gulp-resjson/resjson-convert.js +312 -0
  478. package/tools/gulp-schema-form/index.js +312 -0
  479. package/tools/gulp-svg-code/index.js +312 -0
  480. package/tools/gulp-svg-code/svg-code-convert.js +312 -0
  481. package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
  482. package/tools/gulp-update-notes-resource/index.js +316 -4
  483. package/tools/gulp-update-notes-resource/index.js.map +1 -1
  484. package/tools/module-template/.eslintrc.json +3 -0
  485. package/tools/module-template/build/increment-package-version.ps1 +216 -0
  486. package/tools/module-template/build/push-incremented-version.ps1 +216 -1
  487. package/tools/module-template/build/update-powershell-code.ps1 +216 -0
  488. package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
  489. package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
  490. package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
  491. package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
  492. package/tools/pack-nuget/index.d.ts.map +1 -1
  493. package/tools/pack-nuget/index.js +321 -3
  494. package/tools/pack-nuget/index.js.map +1 -1
  495. package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
  496. package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
  497. package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
  498. package/tools/scripts/package-information/README.md +3 -0
  499. package/tools/scripts/package-information/ms-logo.png +0 -0
  500. package/tools/test-runner/index.js +312 -0
  501. package/tools/utilities/index.js +312 -0
  502. package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
  503. package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
  504. package/tools/wac-cli/src/angular15/configs/config.js +312 -0
  505. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
  506. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
  507. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
  508. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
  509. package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
  510. package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
  511. package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
  512. package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
  513. package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
  514. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
  515. package/tools/wac-cli/src/angular15/main.d.ts +19 -3
  516. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  517. package/tools/wac-cli/src/angular15/main.js +353 -7
  518. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  519. package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
  520. package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
  521. package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
  522. package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
  523. package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
  524. package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
  525. package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
  526. package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
  527. package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
  528. package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
  529. package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
  530. package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
  531. package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
  532. package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
  533. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
  534. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
  535. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
  536. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
  537. package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
  538. package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
  539. package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
  540. package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
  541. package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
  542. package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
  543. package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
  544. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
  545. package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
  546. package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
  547. package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
  548. package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
  549. package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
  550. package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
  551. package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
  552. package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
  553. package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
  554. package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
  555. package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
  556. package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
  557. package/tools/wac-cli/src/common.js +312 -0
  558. package/tools/wac-cli/src/create/main.js +312 -0
  559. package/tools/wac-cli/src/eslint/main.js +312 -0
  560. package/tools/wac-cli/src/index.js +312 -0
  561. package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
  562. package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
  563. package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
  564. package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
  565. package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
  566. package/tools/wac-cli/src/upgrade/get-files.js +312 -0
  567. package/tools/wac-cli/src/upgrade/main.js +312 -0
  568. package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
  569. package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
  570. package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
  571. package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
  572. package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
  573. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
  574. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
  575. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
  576. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
  577. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
  578. package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
  579. package/core/data/extension-broker/snap-in-listener.js +0 -73
  580. package/core/data/extension-broker/snap-in-listener.js.map +0 -1
  581. package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
@@ -7,7 +7,7 @@ import { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/l
7
7
  import { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';
8
8
  import { __decorate, __metadata, __param } from 'tslib';
9
9
  import { Debounce as Debounce$1 } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';
10
- import { Dom, ElementPosition } from '@microsoft/windows-admin-center-sdk/core/dom/dom';
10
+ import { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';
11
11
  import { marked } from 'marked';
12
12
  import * as i1$1 from '@angular/common';
13
13
  import { Location, CommonModule, DatePipe } from '@angular/common';
@@ -19,6 +19,7 @@ import { PerformanceTracker } from '@microsoft/windows-admin-center-sdk/core/per
19
19
  import { EnvironmentModule, EnvironmentModuleEntryPointType } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';
20
20
  import { ActiveConnection } from '@microsoft/windows-admin-center-sdk/core/security/active-connection';
21
21
  import { ConnectionManager } from '@microsoft/windows-admin-center-sdk/core/security/connection-manager';
22
+ import * as i1$3 from '@microsoft/windows-admin-center-sdk/core/rpc/rpc';
22
23
  import { Rpc } from '@microsoft/windows-admin-center-sdk/core/rpc/rpc';
23
24
  import { GatewayConnection } from '@microsoft/windows-admin-center-sdk/core/data/gateway-connection';
24
25
  import { Http } from '@microsoft/windows-admin-center-sdk/core/data/http';
@@ -44,10 +45,12 @@ import { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/glo
44
45
  import { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';
45
46
  import { Yield as Yield$1 } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';
46
47
  import { TagManager } from '@microsoft/windows-admin-center-sdk/core/security/tag-manager';
48
+ import * as i2 from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/extension-broker';
47
49
  import { ExtensionBroker } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/extension-broker';
48
50
  import * as i1$2 from '@angular/forms';
49
51
  import { NG_VALUE_ACCESSOR, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NgControl, ControlContainer, Validators, FormsModule, ReactiveFormsModule, FormGroup, FormControl, FormArray, FormBuilder } from '@angular/forms';
50
52
  import { Net } from '@microsoft/windows-admin-center-sdk/core/data/net';
53
+ import { Debounce as Debounce$2 } from '@microsoft/windows-admin-center-sdk/core/index';
51
54
  import { DateTime } from '@microsoft/windows-admin-center-sdk/core/base/date/date-time';
52
55
  import { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';
53
56
  import { TimeUnit } from '@microsoft/windows-admin-center-sdk/core/base/date/time-unit';
@@ -83,6 +86,7 @@ import { ScheduleRebootManager } from '@microsoft/windows-admin-center-sdk/core/
83
86
  import { headerConstants } from '@microsoft/windows-admin-center-sdk/core/data/http-constants';
84
87
  import { RpcObservableExtensionDataClient } from '@microsoft/windows-admin-center-sdk/core/rpc/extension-data/rpc-observable-extension-data-client';
85
88
  import { SmeExtension } from '@microsoft/windows-admin-center-sdk/core/data/sme-extension';
89
+ import { ExtensionClientListener } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/extension-listener';
86
90
 
87
91
  /**
88
92
  * Directive to provide notification or state changes for angulars @see RouterLink directive.
@@ -137,7 +141,7 @@ class SmeRouterLinkDirective {
137
141
  this.updateIsActive();
138
142
  }
139
143
  ngOnDestroy() {
140
- this.subscriptions.forEach(sub => sub.unsubscribe());
144
+ this.subscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
141
145
  }
142
146
  /**
143
147
  * Updates the isActive state and fires appropriate events if that state has changed.
@@ -3723,7 +3727,7 @@ class TooltipHostInstance {
3723
3727
  })();
3724
3728
 
3725
3729
  const _c0$1I = ["tooltipContainer"];
3726
- const _c1$T = ["tooltipPointer"];
3730
+ const _c1$V = ["tooltipPointer"];
3727
3731
  function TooltipHostComponent_div_5_ng_container_1_Template(rf, ctx) {
3728
3732
  if (rf & 1) {
3729
3733
  i0.ɵɵelementContainerStart(0);
@@ -4107,7 +4111,7 @@ TooltipHostComponent.SCREEN_EDGE_MARGIN = 16;
4107
4111
  /** @nocollapse */ TooltipHostComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TooltipHostComponent, selectors: [["sme-tooltip-host"]], viewQuery: function TooltipHostComponent_Query(rf, ctx) {
4108
4112
  if (rf & 1) {
4109
4113
  i0.ɵɵviewQuery(_c0$1I, 5);
4110
- i0.ɵɵviewQuery(_c1$T, 5);
4114
+ i0.ɵɵviewQuery(_c1$V, 5);
4111
4115
  }
4112
4116
  if (rf & 2) {
4113
4117
  let _t;
@@ -5384,14 +5388,14 @@ class ExtensionRootModule {
5384
5388
  })();
5385
5389
 
5386
5390
  const _c0$1G = ["*"];
5387
- const _c1$S = function (a0, a1) { return { "sme-icon-chevronDown": a0, "sme-icon-chevronRight": a1 }; };
5391
+ const _c1$U = function (a0, a1) { return { "sme-icon-chevronDown": a0, "sme-icon-chevronRight": a1 }; };
5388
5392
  function AccordionPanelComponent_span_4_Template(rf, ctx) {
5389
5393
  if (rf & 1) {
5390
5394
  i0.ɵɵelement(0, "span", 7);
5391
5395
  }
5392
5396
  if (rf & 2) {
5393
5397
  const ctx_r1 = i0.ɵɵnextContext();
5394
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(1, _c1$S, ctx_r1.opened, !ctx_r1.opened));
5398
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(1, _c1$U, ctx_r1.opened, !ctx_r1.opened));
5395
5399
  }
5396
5400
  }
5397
5401
  function AccordionPanelComponent_div_8_Template(rf, ctx) {
@@ -5408,9 +5412,19 @@ function AccordionPanelComponent_div_8_Template(rf, ctx) {
5408
5412
  const _c2$n = [[["sme-panel-control"]], "*"];
5409
5413
  const _c3$e = ["sme-panel-control", "*"];
5410
5414
  class PanelControlComponent {
5415
+ constructor() {
5416
+ /**
5417
+ * Best effort to make sure the buttons, texts can be focused.
5418
+ */
5419
+ this.defaultFocusZone = true;
5420
+ }
5411
5421
  }
5412
5422
  /** @nocollapse */ PanelControlComponent.ɵfac = function PanelControlComponent_Factory(t) { return new (t || PanelControlComponent)(); };
5413
- /** @nocollapse */ PanelControlComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: PanelControlComponent, selectors: [["sme-panel-control"]], ngContentSelectors: _c0$1G, decls: 1, vars: 0, template: function PanelControlComponent_Template(rf, ctx) {
5423
+ /** @nocollapse */ PanelControlComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: PanelControlComponent, selectors: [["sme-panel-control"]], hostVars: 2, hostBindings: function PanelControlComponent_HostBindings(rf, ctx) {
5424
+ if (rf & 2) {
5425
+ i0.ɵɵclassProp("sme-focus-zone", ctx.defaultFocusZone);
5426
+ }
5427
+ }, ngContentSelectors: _c0$1G, decls: 1, vars: 0, template: function PanelControlComponent_Template(rf, ctx) {
5414
5428
  if (rf & 1) {
5415
5429
  i0.ɵɵprojectionDef();
5416
5430
  i0.ɵɵprojection(0);
@@ -5423,10 +5437,22 @@ class PanelControlComponent {
5423
5437
  selector: 'sme-panel-control',
5424
5438
  template: '<ng-content></ng-content>'
5425
5439
  }]
5426
- }], null, null);
5440
+ }], null, { defaultFocusZone: [{
5441
+ type: HostBinding,
5442
+ args: ['class.sme-focus-zone']
5443
+ }] });
5427
5444
  })();
5428
5445
  class AccordionPanelComponent {
5429
5446
  constructor() {
5447
+ /**
5448
+ * It indicates whether the panel is opened.
5449
+ */
5450
+ this.opened = true;
5451
+ /**
5452
+ * It indicates whether the panel is initially opened.
5453
+ * This value will no longer be respected after the control fully loaded.
5454
+ */
5455
+ this.initialOpened = true;
5430
5456
  /**
5431
5457
  * It indicates whether the panel is expandable.
5432
5458
  */
@@ -5442,21 +5468,24 @@ class AccordionPanelComponent {
5442
5468
  */
5443
5469
  this.paddingInset = false;
5444
5470
  this.toggled = new EventEmitter();
5445
- this.opened = true;
5471
+ }
5472
+ ngOnInit() {
5473
+ this.opened = !!this.initialOpened;
5446
5474
  this.canClose = this.isExpandable;
5447
5475
  }
5448
5476
  /**
5449
5477
  * The on toggle function implementation.
5450
5478
  */
5451
5479
  onToggle() {
5452
- if (this.isExpandable) {
5453
- this.opened = !this.opened;
5454
- this.toggled.emit(this);
5480
+ if (!this.isExpandable) {
5481
+ return;
5455
5482
  }
5483
+ this.opened = !this.opened;
5484
+ this.toggled.emit(this);
5456
5485
  }
5457
5486
  }
5458
5487
  /** @nocollapse */ AccordionPanelComponent.ɵfac = function AccordionPanelComponent_Factory(t) { return new (t || AccordionPanelComponent)(); };
5459
- /** @nocollapse */ AccordionPanelComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: AccordionPanelComponent, selectors: [["sme-accordion-panel"]], inputs: { header: "header", opened: "opened", isExpandable: "isExpandable", borderRadius: "borderRadius", paddingInset: "paddingInset" }, outputs: { toggled: "toggled" }, ngContentSelectors: _c3$e, decls: 9, vars: 14, consts: [[1, "sme-accordion-panel"], [1, "sme-arrange-stack-h", "sme-panel-header", "sme-layout-flex", "sme-position-flex-align-center"], [1, "sme-button", "sme-button-align-left", "sme-button-trigger", "sme-position-flex-auto", "sme-panel-expander", 3, "click"], ["accordionPanelButton", ""], ["class", "sme-position-flex-none sme-icon sme-position-stretch-v", 3, "ngClass", 4, "ngIf"], [1, "sme-arrange-ellipsis", "sme-position-stretch-v", 3, "title"], ["class", "sme-panel-body", 3, "sme-padding-inset-sm", 4, "ngIf"], [1, "sme-position-flex-none", "sme-icon", "sme-position-stretch-v", 3, "ngClass"], [1, "sme-panel-body"]], template: function AccordionPanelComponent_Template(rf, ctx) {
5488
+ /** @nocollapse */ AccordionPanelComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: AccordionPanelComponent, selectors: [["sme-accordion-panel"]], inputs: { header: "header", initialOpened: "initialOpened", isExpandable: "isExpandable", borderRadius: "borderRadius", paddingInset: "paddingInset" }, outputs: { toggled: "toggled" }, ngContentSelectors: _c3$e, decls: 9, vars: 16, consts: [[1, "sme-accordion-panel"], [1, "sme-arrange-stack-h", "sme-panel-header", "sme-layout-flex", "sme-position-flex-align-center"], ["tabindex", "0", 1, "sme-button", "sme-button-align-left", "sme-button-trigger", "sme-position-flex-auto", "sme-panel-expander", 3, "click"], ["accordionPanelButton", ""], ["class", "sme-position-flex-none sme-icon sme-position-stretch-v", 3, "ngClass", 4, "ngIf"], [1, "sme-arrange-ellipsis", "sme-position-stretch-v", 3, "title"], ["class", "sme-panel-body", 3, "sme-padding-inset-sm", 4, "ngIf"], [1, "sme-position-flex-none", "sme-icon", "sme-position-stretch-v", 3, "ngClass"], [1, "sme-panel-body"]], template: function AccordionPanelComponent_Template(rf, ctx) {
5460
5489
  if (rf & 1) {
5461
5490
  i0.ɵɵprojectionDef(_c2$n);
5462
5491
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2, 3);
@@ -5475,6 +5504,7 @@ class AccordionPanelComponent {
5475
5504
  i0.ɵɵclassProp("sme-panel-header-border-radius", ctx.borderRadius)("sme-panel-header-border-radius-opened", ctx.borderRadius && ctx.opened);
5476
5505
  i0.ɵɵadvance(1);
5477
5506
  i0.ɵɵclassProp("sme-focus-zone", ctx.canClose)("sme-panel-header-border-radius", ctx.borderRadius)("sme-panel-header-border-radius-opened", ctx.borderRadius && ctx.opened);
5507
+ i0.ɵɵattribute("aria-expanded", !!ctx.opened)("aria-label", ctx.header);
5478
5508
  i0.ɵɵadvance(2);
5479
5509
  i0.ɵɵproperty("ngIf", ctx.canClose);
5480
5510
  i0.ɵɵadvance(1);
@@ -5488,10 +5518,10 @@ class AccordionPanelComponent {
5488
5518
  (function () {
5489
5519
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AccordionPanelComponent, [{
5490
5520
  type: Component,
5491
- args: [{ selector: 'sme-accordion-panel', template: "<div class=\"sme-accordion-panel\">\r\n <div class=\"sme-arrange-stack-h sme-panel-header sme-layout-flex sme-position-flex-align-center\" [class.sme-panel-header-border-radius]=\"borderRadius\"\r\n [class.sme-panel-header-border-radius-opened]=\"borderRadius && opened\">\r\n <div #accordionPanelButton [class.sme-focus-zone]=\"canClose\" [class.sme-panel-header-border-radius]=\"borderRadius\"\r\n [class.sme-panel-header-border-radius-opened]=\"borderRadius && opened\"\r\n class=\"sme-button sme-button-align-left sme-button-trigger sme-position-flex-auto sme-panel-expander\"\r\n (click)=\"onToggle()\">\r\n <span *ngIf=\"canClose\" class=\"sme-position-flex-none sme-icon sme-position-stretch-v\"\r\n [ngClass]=\"{'sme-icon-chevronDown':opened, 'sme-icon-chevronRight': !opened}\"></span>\r\n <span class=\"sme-arrange-ellipsis sme-position-stretch-v\" [title]=\"header\">{{ header }}</span>\r\n </div>\r\n <ng-content select=\"sme-panel-control\"></ng-content>\r\n </div>\r\n <div class=\"sme-panel-body\" *ngIf=\"opened\" [class.sme-padding-inset-sm]=\"paddingInset\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n" }]
5492
- }], function () { return []; }, { header: [{
5521
+ args: [{ selector: 'sme-accordion-panel', template: "<div class=\"sme-accordion-panel\">\r\n <div class=\"sme-arrange-stack-h sme-panel-header sme-layout-flex sme-position-flex-align-center\" [class.sme-panel-header-border-radius]=\"borderRadius\"\r\n [class.sme-panel-header-border-radius-opened]=\"borderRadius && opened\">\r\n <div #accordionPanelButton [class.sme-focus-zone]=\"canClose\" [class.sme-panel-header-border-radius]=\"borderRadius\"\r\n [class.sme-panel-header-border-radius-opened]=\"borderRadius && opened\" [attr.aria-expanded]=\"!!opened\"\r\n [attr.aria-label]=\"header\" tabindex=\"0\"\r\n class=\"sme-button sme-button-align-left sme-button-trigger sme-position-flex-auto sme-panel-expander\"\r\n (click)=\"onToggle()\">\r\n <span *ngIf=\"canClose\" class=\"sme-position-flex-none sme-icon sme-position-stretch-v\"\r\n [ngClass]=\"{'sme-icon-chevronDown':opened, 'sme-icon-chevronRight': !opened}\"></span>\r\n <span class=\"sme-arrange-ellipsis sme-position-stretch-v\" [title]=\"header\">{{ header }}</span>\r\n </div>\r\n <ng-content select=\"sme-panel-control\"></ng-content>\r\n </div>\r\n <div class=\"sme-panel-body\" *ngIf=\"opened\" [class.sme-padding-inset-sm]=\"paddingInset\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n" }]
5522
+ }], null, { header: [{
5493
5523
  type: Input
5494
- }], opened: [{
5524
+ }], initialOpened: [{
5495
5525
  type: Input
5496
5526
  }], isExpandable: [{
5497
5527
  type: Input
@@ -6216,7 +6246,7 @@ __decorate([
6216
6246
  })();
6217
6247
 
6218
6248
  const _c0$1E = ["smeDropdownContent"];
6219
- const _c1$R = ["smeDropdownToggle"];
6249
+ const _c1$T = ["smeDropdownToggle"];
6220
6250
  const _c2$m = [[["", 8, "sme-dropdown-toggle"]], [["", 8, "sme-dropdown-content"]]];
6221
6251
  const _c3$d = function (a0, a1, a2, a3) { return { "sme-layout-hidden": a0, "sme-layout-inline-block": a1, "sme-arrange-overflow-auto-x": a2, "sme-arrange-overflow-auto-y": a3 }; };
6222
6252
  const _c4$9 = [".sme-dropdown-toggle", ".sme-dropdown-content"];
@@ -6305,7 +6335,6 @@ class DropdownComponent {
6305
6335
  ngAfterViewInit() {
6306
6336
  // load the context menu code here so as to allow all child views to be completely initialized
6307
6337
  if (!this.isContextMenu) {
6308
- this.renderer.setAttribute(this.toggleElement.nativeElement, 'aria-haspopup', 'true');
6309
6338
  this.unsubscribeToggleClick = this.renderer.listen(this.toggleElement.nativeElement, 'click', (event) => this.onToggleClick(event));
6310
6339
  }
6311
6340
  else {
@@ -6373,7 +6402,6 @@ class DropdownComponent {
6373
6402
  if (this.isOpen) {
6374
6403
  // close if opened
6375
6404
  this.dropdownService.close(this);
6376
- this.renderer.setAttribute(this.toggleElement.nativeElement, 'aria-expanded', 'false');
6377
6405
  if (event) {
6378
6406
  this.dropdownService.closeNested(this, event);
6379
6407
  }
@@ -6383,7 +6411,6 @@ class DropdownComponent {
6383
6411
  else {
6384
6412
  // open if closed
6385
6413
  this.dropdownService.open(this, calculateHeight, displayToSide).then(() => {
6386
- this.renderer.setAttribute(this.toggleElement.nativeElement, 'aria-expanded', 'true');
6387
6414
  this.toggleElement.nativeElement.addEventListener('closeEvent', () => {
6388
6415
  this.isOpen = false;
6389
6416
  }, false);
@@ -6412,7 +6439,7 @@ class DropdownComponent {
6412
6439
  /** @nocollapse */ DropdownComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DropdownComponent, selectors: [["sme-dropdown"]], viewQuery: function DropdownComponent_Query(rf, ctx) {
6413
6440
  if (rf & 1) {
6414
6441
  i0.ɵɵviewQuery(_c0$1E, 5);
6415
- i0.ɵɵviewQuery(_c1$R, 7);
6442
+ i0.ɵɵviewQuery(_c1$T, 7);
6416
6443
  }
6417
6444
  if (rf & 2) {
6418
6445
  let _t;
@@ -6526,7 +6553,6 @@ class ActionContainerComponent extends CoreBaseComponent {
6526
6553
  /**
6527
6554
  * Event emitter fired whenever an error occurs within a child ActionItem.
6528
6555
  */
6529
- // eslint-disable-next-line @angular-eslint/no-output-native
6530
6556
  this.error = new EventEmitter();
6531
6557
  /**
6532
6558
  * Event emitter fired whenever a child ActionItem is executed.
@@ -6611,7 +6637,8 @@ class ActionContainerComponent extends CoreBaseComponent {
6611
6637
  * Callback method run when ActionContainerComponent is destroyed.
6612
6638
  */
6613
6639
  ngOnDestroy() {
6614
- this.completedSubscription.unsubscribe();
6640
+ var _a;
6641
+ (_a = this.completedSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
6615
6642
  }
6616
6643
  /**
6617
6644
  * Callback method run immediately after Angular has completed initialization of all of ActionContainerComponent's content.
@@ -6846,7 +6873,7 @@ class ActionMenuComponent extends ActionContainerComponent {
6846
6873
  })();
6847
6874
 
6848
6875
  const _c0$1B = ["actionBarElement"];
6849
- const _c1$Q = ["dropDownButton"];
6876
+ const _c1$S = ["dropDownButton"];
6850
6877
  const _c2$l = ["dropDown"];
6851
6878
  function ActionBarComponent_sme_dynamic_action_item_2_Template(rf, ctx) {
6852
6879
  if (rf & 1) {
@@ -7212,7 +7239,7 @@ class ActionBarComponent extends ActionContainerComponent {
7212
7239
  /** @nocollapse */ ActionBarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ActionBarComponent, selectors: [["sme-action-bar"]], viewQuery: function ActionBarComponent_Query(rf, ctx) {
7213
7240
  if (rf & 1) {
7214
7241
  i0.ɵɵviewQuery(_c0$1B, 5);
7215
- i0.ɵɵviewQuery(_c1$Q, 5);
7242
+ i0.ɵɵviewQuery(_c1$S, 5);
7216
7243
  i0.ɵɵviewQuery(_c2$l, 5);
7217
7244
  }
7218
7245
  if (rf & 2) {
@@ -8071,7 +8098,7 @@ class ActionButtonAsyncComponent extends ActionItemComponent {
8071
8098
  })();
8072
8099
 
8073
8100
  const _c0$1A = ["dropDown"];
8074
- const _c1$P = ["dropDownButton"];
8101
+ const _c1$R = ["dropDownButton"];
8075
8102
  function ActionDropdownRendererComponent_p_4_Template(rf, ctx) {
8076
8103
  if (rf & 1) {
8077
8104
  i0.ɵɵelementStart(0, "p", 10);
@@ -8191,7 +8218,7 @@ ActionDropdownRendererComponent.dropdownUtaIdSuffix = '-dropdown';
8191
8218
  /** @nocollapse */ ActionDropdownRendererComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ActionDropdownRendererComponent, selectors: [["sme-action-dropdown-renderer"]], viewQuery: function ActionDropdownRendererComponent_Query(rf, ctx) {
8192
8219
  if (rf & 1) {
8193
8220
  i0.ɵɵviewQuery(_c0$1A, 5);
8194
- i0.ɵɵviewQuery(_c1$P, 5);
8221
+ i0.ɵɵviewQuery(_c1$R, 5);
8195
8222
  }
8196
8223
  if (rf & 2) {
8197
8224
  let _t;
@@ -8790,9 +8817,9 @@ function IconTextComponent_input_1_Template(rf, ctx) {
8790
8817
  i0.ɵɵattribute("aria-label", ctx_r1.readOnlyFormFieldLabel);
8791
8818
  }
8792
8819
  }
8793
- function IconTextComponent_span_2_Template(rf, ctx) {
8820
+ function IconTextComponent_h3_2_Template(rf, ctx) {
8794
8821
  if (rf & 1) {
8795
- i0.ɵɵelementStart(0, "span", 8);
8822
+ i0.ɵɵelementStart(0, "h3", 8);
8796
8823
  i0.ɵɵtext(1);
8797
8824
  i0.ɵɵelementEnd();
8798
8825
  }
@@ -8810,7 +8837,7 @@ class IconTextComponent extends CoreBaseComponent {
8810
8837
  */
8811
8838
  this.title = '';
8812
8839
  /**
8813
- * The text in string.
8840
+ * It determines whether to show title
8814
8841
  */
8815
8842
  this.showTitle = true;
8816
8843
  this.layoutFlex = true;
@@ -8842,7 +8869,7 @@ class IconTextComponent extends CoreBaseComponent {
8842
8869
  if (rf & 1) {
8843
8870
  i0.ɵɵtemplate(0, IconTextComponent_ng_container_0_Template, 3, 2, "ng-container", 0);
8844
8871
  i0.ɵɵtemplate(1, IconTextComponent_input_1_Template, 1, 2, "input", 1);
8845
- i0.ɵɵtemplate(2, IconTextComponent_span_2_Template, 2, 1, "span", 2);
8872
+ i0.ɵɵtemplate(2, IconTextComponent_h3_2_Template, 2, 1, "h3", 2);
8846
8873
  }
8847
8874
  if (rf & 2) {
8848
8875
  i0.ɵɵproperty("ngIf", ctx.smeIconClassName || ctx.urlIcon);
@@ -8855,7 +8882,7 @@ class IconTextComponent extends CoreBaseComponent {
8855
8882
  (function () {
8856
8883
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IconTextComponent, [{
8857
8884
  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" }]
8885
+ 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
8886
  }], function () { return [{ type: i0.Injector }]; }, { title: [{
8860
8887
  type: Input
8861
8888
  }], showTitle: [{
@@ -9262,7 +9289,7 @@ function EditableLayoutItemComponent_p_2_Template(rf, ctx) {
9262
9289
  }
9263
9290
  }
9264
9291
  const _c0$1v = function (a0) { return { "sme-cursor-pointer": a0 }; };
9265
- const _c1$O = function (a0) { return { "sme-corner-resizer-disabled": a0 }; };
9292
+ const _c1$Q = function (a0) { return { "sme-corner-resizer-disabled": a0 }; };
9266
9293
  const _c2$j = ["*"];
9267
9294
  /**
9268
9295
  * Individual Layout Items that can be added on demand with as -
@@ -9369,7 +9396,7 @@ class EditableLayoutItemComponent extends CoreBaseComponent {
9369
9396
  i0.ɵɵadvance(1);
9370
9397
  i0.ɵɵproperty("ngIf", ctx.isLayoutItemDraggable);
9371
9398
  i0.ɵɵadvance(2);
9372
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c1$O, !ctx.isLayoutItemDraggable));
9399
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c1$Q, !ctx.isLayoutItemDraggable));
9373
9400
  }
9374
9401
  }, dependencies: [i1$1.NgClass, i1$1.NgIf], encapsulation: 2 });
9375
9402
  (function () {
@@ -9988,7 +10015,7 @@ __decorate([
9988
10015
  ], LayoutResponsiveWindowManager.prototype, "onWindowSizeChanged", null);
9989
10016
 
9990
10017
  const _c0$1t = [[["sme-layout-item"]]];
9991
- const _c1$N = ["sme-layout-item"];
10018
+ const _c1$P = ["sme-layout-item"];
9992
10019
  /**
9993
10020
  * Layout component
9994
10021
  */
@@ -10440,7 +10467,7 @@ class LayoutComponent extends CoreBaseComponent {
10440
10467
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.layoutItems = _t);
10441
10468
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.definitions = _t);
10442
10469
  }
10443
- }, inputs: { itemHorizontalSpace: "itemHorizontalSpace", itemVerticalSpace: "itemVerticalSpace", oneColumn: "oneColumn", tryToFillWholeRow: "tryToFillWholeRow", definition: "definition", padLastItem: "padLastItem", noExtraRightPaddingOneItemPerRow: "noExtraRightPaddingOneItemPerRow", layoutConfig: "layoutConfig" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1$N, decls: 1, vars: 0, template: function LayoutComponent_Template(rf, ctx) {
10470
+ }, inputs: { itemHorizontalSpace: "itemHorizontalSpace", itemVerticalSpace: "itemVerticalSpace", oneColumn: "oneColumn", tryToFillWholeRow: "tryToFillWholeRow", definition: "definition", padLastItem: "padLastItem", noExtraRightPaddingOneItemPerRow: "noExtraRightPaddingOneItemPerRow", layoutConfig: "layoutConfig" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1$P, decls: 1, vars: 0, template: function LayoutComponent_Template(rf, ctx) {
10444
10471
  if (rf & 1) {
10445
10472
  i0.ɵɵprojectionDef(_c0$1t);
10446
10473
  i0.ɵɵprojection(0);
@@ -10503,7 +10530,7 @@ __decorate([
10503
10530
  })();
10504
10531
 
10505
10532
  const _c0$1s = [[["sme-editable-layout-item"]]];
10506
- const _c1$M = ["sme-editable-layout-item"];
10533
+ const _c1$O = ["sme-editable-layout-item"];
10507
10534
  class EditableLayoutComponent extends LayoutComponent {
10508
10535
  /**
10509
10536
  * The source name to use for logging
@@ -10674,7 +10701,7 @@ EditableLayoutComponent.gridPaddingSize = 8;
10674
10701
  let _t;
10675
10702
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editableLayoutItems = _t);
10676
10703
  }
10677
- }, inputs: { isEditMode: "isEditMode" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1$M, decls: 2, vars: 4, consts: [[1, "sme-editable-layout-grid"]], template: function EditableLayoutComponent_Template(rf, ctx) {
10704
+ }, inputs: { isEditMode: "isEditMode" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1$O, decls: 2, vars: 4, consts: [[1, "sme-editable-layout-grid"]], template: function EditableLayoutComponent_Template(rf, ctx) {
10678
10705
  if (rf & 1) {
10679
10706
  i0.ɵɵprojectionDef(_c0$1s);
10680
10707
  i0.ɵɵelementStart(0, "div", 0);
@@ -10747,7 +10774,7 @@ function LoadingWheelComponent_a_11_Template(rf, ctx) {
10747
10774
  }
10748
10775
  }
10749
10776
  const _c0$1r = function (a0, a1, a2) { return { "sme-scheme-loading-wheel": a0, "sme-layout-absolute": a1, "sme-position-inset-none": a2 }; };
10750
- const _c1$L = function (a0, a1) { return { "sme-layout-absolute": a0, "sme-position-center": a1 }; };
10777
+ const _c1$N = function (a0, a1) { return { "sme-layout-absolute": a0, "sme-position-center": a1 }; };
10751
10778
  const _c2$i = function (a0, a1) { return { "sme-progress-center": a0, "sme-progress-center-h": a1 }; };
10752
10779
  var LoadingWheelSize;
10753
10780
  (function (LoadingWheelSize) {
@@ -10895,7 +10922,7 @@ class LoadingWheelComponent extends CoreBaseComponent {
10895
10922
  if (rf & 2) {
10896
10923
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(11, _c0$1r, !ctx.isBackgroundTransparent, !ctx.inline, !ctx.inline));
10897
10924
  i0.ɵɵadvance(1);
10898
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(15, _c1$L, !ctx.inline, !ctx.inline));
10925
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(15, _c1$N, !ctx.inline, !ctx.inline));
10899
10926
  i0.ɵɵadvance(1);
10900
10927
  i0.ɵɵclassMapInterpolate1("sme-progress sme-progress-indeterminate-local ", ctx.sizeClass, " sme-focus-zone");
10901
10928
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(18, _c2$i, ctx.inline, !ctx.inline));
@@ -11171,7 +11198,7 @@ function SmeSchemaProperty(...dataTypeRegistrations) {
11171
11198
  }
11172
11199
 
11173
11200
  const _c0$1q = ["fieldHost"];
11174
- const _c1$K = ["field"];
11201
+ const _c1$M = ["field"];
11175
11202
  /**
11176
11203
  * Schema Form Component
11177
11204
  * It takes the schema and data and other necessary inputs then dynamically renders the form UI.
@@ -11489,7 +11516,7 @@ SchemaFieldLoaderComponentBase.localizationCache = {};
11489
11516
  /** @nocollapse */ SchemaFieldLoaderComponentBase.ɵfac = function SchemaFieldLoaderComponentBase_Factory(t) { return new (t || SchemaFieldLoaderComponentBase)(); };
11490
11517
  /** @nocollapse */ SchemaFieldLoaderComponentBase.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: SchemaFieldLoaderComponentBase, viewQuery: function SchemaFieldLoaderComponentBase_Query(rf, ctx) {
11491
11518
  if (rf & 1) {
11492
- i0.ɵɵviewQuery(_c1$K, 5);
11519
+ i0.ɵɵviewQuery(_c1$M, 5);
11493
11520
  }
11494
11521
  if (rf & 2) {
11495
11522
  let _t;
@@ -15232,7 +15259,7 @@ function DialogComponent_sme_backdrop_0_Template(rf, ctx) {
15232
15259
  i0.ɵɵproperty("ngIf", ctx_r0.ariaDescription);
15233
15260
  }
15234
15261
  }
15235
- const _c1$J = [[["sme-dialog-header"]], [["sme-dialog-content"]], [["sme-dialog-footer"]]];
15262
+ const _c1$L = [[["sme-dialog-header"]], [["sme-dialog-content"]], [["sme-dialog-footer"]]];
15236
15263
  const _c2$h = ["sme-dialog-header", "sme-dialog-content", "sme-dialog-footer"];
15237
15264
  /**
15238
15265
  *
@@ -15565,7 +15592,7 @@ DialogComponent.nextDialogId = 0;
15565
15592
  }
15566
15593
  }, inputs: { allowBackgroundInteraction: "allowBackgroundInteraction", showBackdrop: "showBackdrop", clickBackdrop: "clickBackdrop", ariaLabel: "ariaLabel", ariaDescription: "ariaDescription", actionPane: "actionPane", dialogMode: "dialogMode", dialogType: "dialogType", closeButton: "closeButton", compactFullHeight: "compactFullHeight" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c2$h, decls: 1, vars: 1, consts: [["class", "sme-layout-absolute sme-position-inset-none", 3, "level", "showBackdrop", "allowBackgroundInteraction", "clicked", 4, "ngIf"], [1, "sme-layout-absolute", "sme-position-inset-none", 3, "level", "showBackdrop", "allowBackgroundInteraction", "clicked"], ["aria-modal", "true", 3, "ngClass"], ["class", "sme-button-trigger sme-button-auto-width sme-dialog-close-button", 3, "title", "click", 4, "ngIf"], [1, "sme-position-flex-none", "sme-focus-zone"], [1, "sme-layout-relative", "sme-position-flex-auto", "sme-padding-horizontal-lg", "sme-arrange-overflow-auto-y", "sme-arrange-overflow-hide-x", "sme-focus-zone", "sme-layout-responsive-zone-xs", "sme-dialog-content-wrapper"], [1, "sme-position-flex-none", "sme-focus-zone", "sme-padding-horizontal-lg", "sme-padding-vertical-sm"], ["class", "sme-screen-reader", 3, "id", 4, "ngIf"], [1, "sme-button-trigger", "sme-button-auto-width", "sme-dialog-close-button", 3, "title", "click"], [1, "sme-icon", "sme-icon-cancel"], [1, "sme-screen-reader", 3, "id"]], template: function DialogComponent_Template(rf, ctx) {
15567
15594
  if (rf & 1) {
15568
- i0.ɵɵprojectionDef(_c1$J);
15595
+ i0.ɵɵprojectionDef(_c1$L);
15569
15596
  i0.ɵɵtemplate(0, DialogComponent_sme_backdrop_0_Template, 11, 11, "sme-backdrop", 0);
15570
15597
  }
15571
15598
  if (rf & 2) {
@@ -16372,7 +16399,7 @@ class TabbedFormLoaderComponent extends ObjectPropertySchemaFieldLoaderComponent
16372
16399
  });
16373
16400
  }
16374
16401
  ngOnDestroy() {
16375
- this.subscriptions.forEach(sub => sub.unsubscribe());
16402
+ this.subscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
16376
16403
  }
16377
16404
  setupSchema(schema) {
16378
16405
  for (let i = 0; i < schema.properties.length; i++) {
@@ -16662,6 +16689,166 @@ class SchemaFieldHostModule {
16662
16689
  TooltipModule], exports: [SchemaFieldHostComponent] });
16663
16690
  })();
16664
16691
 
16692
+ /**
16693
+ * A re-usable form field accessibility manager.
16694
+ */
16695
+ class FormFieldAccessibilityManagerBaseService {
16696
+ /**
16697
+ * The focus handler on delete/add if the form field is a list.
16698
+ * @param value The value for the list form field.
16699
+ * @param addButton The component reference for the add button.
16700
+ * @param hostElement The host element reference.
16701
+ * @param isDelete Determine if the action is delete.
16702
+ * @returns void
16703
+ */
16704
+ listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement, isDelete = true) {
16705
+ // If there are no items in the list, focus on the add button.
16706
+ if (!value || !value.length) {
16707
+ this.deferredFocusOnAddButton(addButton);
16708
+ return;
16709
+ }
16710
+ // Otherwise focus on the either the first input fields when it is delete or the last input field when it is add.
16711
+ this.deferredFocusOnInputFields(hostElement, value, isDelete);
16712
+ }
16713
+ /**
16714
+ * The focus handler on delete/add if the form field is a list. And the list is built with a specific selector.
16715
+ * @param value The value for the list form field.
16716
+ * @param addButton The component reference for the add button.
16717
+ * @param hostElement The host element reference.
16718
+ * @param selector The selector for the input fields.
16719
+ * @returns void
16720
+ */
16721
+ listFormFieldFocusHandlerOnKeyboardActionBySelector(value, addButton, hostElement, selector) {
16722
+ // If there are no items in the list, focus on the add button.
16723
+ if (!value || !value.length) {
16724
+ this.deferredFocusOnAddButton(addButton);
16725
+ return;
16726
+ }
16727
+ // Otherwise focus on the either the first input fields when it is delete or the last input field when it is add.
16728
+ this.deferredFocusOnTargetBySelector(value, hostElement, selector);
16729
+ }
16730
+ /**
16731
+ * It handles the focus on the input field by index if value is type of any[].
16732
+ * @param hostElement the host form field element.
16733
+ * @param index the index of the input field to focus on.
16734
+ * @returns void.
16735
+ */
16736
+ focusOnInputByIndex(hostElement, index) {
16737
+ const inputs = hostElement.nativeElement.querySelectorAll('input');
16738
+ if (index < 0 || index >= inputs.length) {
16739
+ return;
16740
+ }
16741
+ inputs[index].focus();
16742
+ }
16743
+ deferredFocusOnTargetBySelector(value, hostElement, selector) {
16744
+ if (!value || !value.length) {
16745
+ return;
16746
+ }
16747
+ const targets = hostElement.nativeElement.querySelectorAll(selector);
16748
+ if (!targets || !targets.length) {
16749
+ return;
16750
+ }
16751
+ targets[0].focus();
16752
+ }
16753
+ deferredFocusOnAddButton(addButton) {
16754
+ if (!addButton) {
16755
+ return;
16756
+ }
16757
+ addButton.nativeElement.focus();
16758
+ }
16759
+ deferredFocusOnInputFields(hostElement, value, isDelete = true) {
16760
+ if (!value || !value.length) {
16761
+ return;
16762
+ }
16763
+ this.focusOnInputByIndex(hostElement, isDelete ? 0 : value.length - 1);
16764
+ }
16765
+ }
16766
+ /** @nocollapse */ FormFieldAccessibilityManagerBaseService.ɵfac = function FormFieldAccessibilityManagerBaseService_Factory(t) { return new (t || FormFieldAccessibilityManagerBaseService)(); };
16767
+ /** @nocollapse */ FormFieldAccessibilityManagerBaseService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: FormFieldAccessibilityManagerBaseService, factory: FormFieldAccessibilityManagerBaseService.ɵfac, providedIn: 'root' });
16768
+ __decorate([
16769
+ Debounce$2(),
16770
+ __metadata("design:type", Function),
16771
+ __metadata("design:paramtypes", [Array, ElementRef, String]),
16772
+ __metadata("design:returntype", void 0)
16773
+ ], FormFieldAccessibilityManagerBaseService.prototype, "deferredFocusOnTargetBySelector", null);
16774
+ __decorate([
16775
+ Debounce$2(),
16776
+ __metadata("design:type", Function),
16777
+ __metadata("design:paramtypes", [ElementRef]),
16778
+ __metadata("design:returntype", void 0)
16779
+ ], FormFieldAccessibilityManagerBaseService.prototype, "deferredFocusOnAddButton", null);
16780
+ __decorate([
16781
+ Debounce$2(),
16782
+ __metadata("design:type", Function),
16783
+ __metadata("design:paramtypes", [ElementRef, Array, Object]),
16784
+ __metadata("design:returntype", void 0)
16785
+ ], FormFieldAccessibilityManagerBaseService.prototype, "deferredFocusOnInputFields", null);
16786
+ (function () {
16787
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormFieldAccessibilityManagerBaseService, [{
16788
+ type: Injectable,
16789
+ args: [{
16790
+ providedIn: 'root'
16791
+ }]
16792
+ }], null, { deferredFocusOnTargetBySelector: [], deferredFocusOnAddButton: [], deferredFocusOnInputFields: [] });
16793
+ })();
16794
+
16795
+ class ArrayFormFieldAccessibilityManagerService {
16796
+ constructor(formFieldAccessibilityManagerBaseService) {
16797
+ this.formFieldAccessibilityManagerBaseService = formFieldAccessibilityManagerBaseService;
16798
+ this.firstFormFieldInArrayItemSelector = 'sme-accordion sme-accordion-panel:last-of-type input';
16799
+ }
16800
+ /**
16801
+ * It handles the focus when deleting an item from the list.
16802
+ * @param value the value for the list.
16803
+ * @param addButton the element reference for the add button.
16804
+ * @param hostElement the element reference for the host element.
16805
+ * @returns void
16806
+ */
16807
+ delete(value, addButton, hostElement) {
16808
+ this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardActionBySelector(value, addButton, hostElement, this.firstFormFieldInArrayItemSelector);
16809
+ }
16810
+ /**
16811
+ * It handles the focus when adding an item to the list.
16812
+ * @param value the value for the list.
16813
+ * @param addButton the element reference for the add button.
16814
+ * @param hostElement the element reference for the host element.
16815
+ * @returns void
16816
+ */
16817
+ add(value, addButton, hostElement) {
16818
+ this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardActionBySelector(value, addButton, hostElement, this.firstFormFieldInArrayItemSelector);
16819
+ }
16820
+ /**
16821
+ * It handles the focus when promoting an item in the list.
16822
+ * @param hostElement The element reference for the host element.
16823
+ * @param index the current index.
16824
+ */
16825
+ promote(value, hostElement, index) {
16826
+ this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(value, hostElement,
16827
+ // nth means index - 1 + 1 = index
16828
+ `sme-accordion sme-accordion-panel:nth-of-type(${index}) button:nth-of-type(2)`);
16829
+ }
16830
+ /**
16831
+ * It handles the focus when demoting an item in the list.
16832
+ * @param hostElement The element reference for the host element.
16833
+ * @param index the current index.
16834
+ */
16835
+ demote(value, hostElement, index) {
16836
+ this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(value, hostElement,
16837
+ // nth means index + 1 + 1 = index + 2
16838
+ `sme-accordion sme-accordion-panel:nth-of-type(${index + 2}) button:nth-of-type(3)`);
16839
+ }
16840
+ }
16841
+ /** @nocollapse */ ArrayFormFieldAccessibilityManagerService.ɵfac = function ArrayFormFieldAccessibilityManagerService_Factory(t) { return new (t || ArrayFormFieldAccessibilityManagerService)(i0.ɵɵinject(FormFieldAccessibilityManagerBaseService)); };
16842
+ /** @nocollapse */ ArrayFormFieldAccessibilityManagerService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: ArrayFormFieldAccessibilityManagerService, factory: ArrayFormFieldAccessibilityManagerService.ɵfac, providedIn: 'root' });
16843
+ (function () {
16844
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArrayFormFieldAccessibilityManagerService, [{
16845
+ type: Injectable,
16846
+ args: [{
16847
+ providedIn: 'root'
16848
+ }]
16849
+ }], function () { return [{ type: FormFieldAccessibilityManagerBaseService }]; }, null);
16850
+ })();
16851
+
16665
16852
  /**
16666
16853
  * Provider that hides any existing ControlContainers from NgModel
16667
16854
  */
@@ -16803,7 +16990,7 @@ function ArrayFormFieldLoaderComponent_ng_template_2_Template(rf, ctx) {
16803
16990
  i0.ɵɵproperty("propertySchema", ctx_r1.propertySchema.item)("context", ctx_r1.context)("data", model_r2);
16804
16991
  }
16805
16992
  }
16806
- const _c1$I = ["addButton"];
16993
+ const _c1$K = ["addButton"];
16807
16994
  const _c2$g = ["type", "array"];
16808
16995
  const _c3$b = function (a0, a1) { return { index: a0, ariaLabelId: a1 }; };
16809
16996
  function ArrayFormFieldComponent_sme_accordion_panel_3_ng_container_2_Template(rf, ctx) {
@@ -16919,7 +17106,6 @@ function ArrayFormFieldComponent_button_4_Template(rf, ctx) {
16919
17106
  }
16920
17107
  }
16921
17108
  /* eslint-disable max-len */
16922
- /* eslint-enable max-len */
16923
17109
  class ArrayFormFieldLoaderComponent extends ArrayPropertySchemaFieldLoaderComponent {
16924
17110
  askForNewItem($event) {
16925
17111
  const item = SchemaUtilities.generateDataBasedOnSchemaProperty(this.propertySchema.item);
@@ -16996,8 +17182,9 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
16996
17182
  /**
16997
17183
  * Initializes a new instance of the JsonFormFieldComponent
16998
17184
  */
16999
- constructor(injector) {
17185
+ constructor(injector, arrayFormFieldAccessibilityManagerService) {
17000
17186
  super(injector);
17187
+ this.arrayFormFieldAccessibilityManagerService = arrayFormFieldAccessibilityManagerService;
17001
17188
  /**
17002
17189
  * When no "newItem" is provided. This output will be called anytime a new item is required.
17003
17190
  */
@@ -17083,35 +17270,19 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
17083
17270
  */
17084
17271
  add() {
17085
17272
  const item = this.getNewItem();
17086
- const index = this.value.length;
17087
17273
  this.value.push(item);
17088
17274
  this.triggerValueChange();
17089
- setTimeout(() => {
17090
- const itemId = this.getItemAriaId(index, 'itemContainer');
17091
- const itemContainer = document.getElementById(itemId);
17092
- const firstInput = itemContainer.querySelector('input');
17093
- if (firstInput) {
17094
- firstInput.focus();
17095
- }
17096
- itemContainer.scrollIntoView({ behavior: 'smooth', block: 'center' });
17097
- });
17275
+ this.arrayFormFieldAccessibilityManagerService.add(this.value, this.addButton, this.hostElement);
17098
17276
  }
17099
17277
  /**
17100
17278
  * Deletes an item from the array
17101
17279
  */
17102
17280
  delete(item) {
17103
17281
  const index = this.value.indexOf(item);
17104
- // return the view to the previous item in the list.
17105
- const prevItemId = this.getItemAriaId(index - 1, 'itemContainer');
17106
- const prevContainer = document.getElementById(prevItemId);
17107
- if (prevContainer) {
17108
- prevContainer.scrollIntoView({ behavior: 'smooth', block: 'center' });
17109
- }
17110
- // focus on the add button, otherwise focus is reset to the beginning of the page
17111
- this.addButton.nativeElement.focus();
17112
17282
  this.value.splice(index, 1);
17113
17283
  this.triggerValueChange();
17114
17284
  this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.removeButtonEvent);
17285
+ this.arrayFormFieldAccessibilityManagerService.delete(this.value, this.addButton, this.hostElement);
17115
17286
  }
17116
17287
  /**
17117
17288
  * Decreases the index of an item by 1
@@ -17123,6 +17294,7 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
17123
17294
  this.value[index] = Object.assign({}, this.value[index - 1]);
17124
17295
  this.value[index - 1] = temp;
17125
17296
  this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.promoteButtonEvent);
17297
+ this.arrayFormFieldAccessibilityManagerService.promote(this.value, this.hostElement, index);
17126
17298
  }
17127
17299
  else {
17128
17300
  this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.promoteButtonPreventedEvent);
@@ -17138,6 +17310,7 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
17138
17310
  this.value[index] = Object.assign({}, this.value[index + 1]);
17139
17311
  this.value[index + 1] = temp;
17140
17312
  this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.demoteButtonEvent);
17313
+ this.arrayFormFieldAccessibilityManagerService.demote(this.value, this.hostElement, index);
17141
17314
  }
17142
17315
  else {
17143
17316
  this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.demoteButtonPreventedEvent);
@@ -17213,7 +17386,7 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
17213
17386
  }
17214
17387
  }
17215
17388
  };
17216
- /** @nocollapse */ ArrayFormFieldComponent.ɵfac = function ArrayFormFieldComponent_Factory(t) { return new (t || ArrayFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
17389
+ /** @nocollapse */ ArrayFormFieldComponent.ɵfac = function ArrayFormFieldComponent_Factory(t) { return new (t || ArrayFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(ArrayFormFieldAccessibilityManagerService)); };
17217
17390
  /** @nocollapse */ ArrayFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ArrayFormFieldComponent, selectors: [["sme-form-field", "type", "array"]], contentQueries: function ArrayFormFieldComponent_ContentQueries(rf, ctx, dirIndex) {
17218
17391
  if (rf & 1) {
17219
17392
  i0.ɵɵcontentQuery(dirIndex, FormFieldIsolatorComponent, 7);
@@ -17224,7 +17397,7 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
17224
17397
  }
17225
17398
  }, viewQuery: function ArrayFormFieldComponent_Query(rf, ctx) {
17226
17399
  if (rf & 1) {
17227
- i0.ɵɵviewQuery(_c1$I, 5);
17400
+ i0.ɵɵviewQuery(_c1$K, 5);
17228
17401
  }
17229
17402
  if (rf & 2) {
17230
17403
  let _t;
@@ -17268,13 +17441,14 @@ ArrayFormFieldComponent = __decorate([
17268
17441
  description: `A form field control binding to array data.`,
17269
17442
  loaderComponent: ArrayFormFieldLoaderComponent
17270
17443
  }),
17271
- __metadata("design:paramtypes", [Injector])
17444
+ __metadata("design:paramtypes", [Injector,
17445
+ ArrayFormFieldAccessibilityManagerService])
17272
17446
  ], ArrayFormFieldComponent);
17273
17447
  (function () {
17274
17448
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArrayFormFieldComponent, [{
17275
17449
  type: Component,
17276
- args: [{ selector: 'sme-form-field[type="array"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n\r\n <div class=\"sme-array\">\r\n <sme-accordion [canCloseAny]=\"canCloseAny\" [canCloseAll]=\"canCloseAll\" [canOpenMultiple]=\"canOpenMultiple\">\r\n <sme-accordion-panel *ngFor=\"let item of value; let i = index\" [header]=\"getItemTitle(item, i)\" [isExpandable]=\"false\" [attr.data-uta-id]=\"'array-form-field-item-' + i\">\r\n <sme-panel-control>\r\n <ng-container *ngIf=\"headerTemplate\" smeTemplateOutlet [template]=\"headerTemplate\" [data]=\"item\" hostDataName=\"context\"\r\n [hostData]=\"{index: i, ariaLabelId: getItemAriaId(i, 'itemHeader')}\"></ng-container>\r\n <button *ngIf=\"showMove\" type=\"button\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.promoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.promoteButtonTooltip\" (click)=\"moveUp(item)\"\r\n [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"promote-button\">\r\n <span class=\"sme-icon sme-icon-up\"></span>\r\n </button>\r\n <button *ngIf=\"showMove\" type=\"button\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.demoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.demoteButtonTooltip\" (click)=\"moveDown(item)\"\r\n [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"demote-button\">\r\n <span class=\"sme-icon sme-icon-down\"></span>\r\n </button>\r\n <button *ngIf=\"getShowRemove(item, i)\" type=\"button\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.removeButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.removeButtonTooltip\" (click)=\"delete(item)\"\r\n [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"remove-button\">\r\n <span class=\"sme-icon sme-icon-delete sme-color-red\"></span>\r\n </button>\r\n </sme-panel-control>\r\n\r\n <span class=\"sme-screen-reader\" [id]=\"getItemAriaId(i, 'item')\">{{itemTitle}}</span>\r\n <fieldset [attr.aria-labelledby]=\"getItemAriaId(i, 'item')\"\r\n class=\"sme-arrange-stack-h sme-margin-bottom-lg sme-array-item\"\r\n [class.sme-subform-indent-none]=\"orientation==='horizontal'\">\r\n\r\n <div class=\"sme-position-flex-auto sme-padding-inset-md\" [id]=\"getItemAriaId(i, 'itemContainer')\">\r\n <ng-container smeTemplateOutlet [template]=\"itemTemplate\" [data]=\"item\" hostDataName=\"context\"\r\n [hostData]=\"{index: i, ariaLabelId: getItemAriaId(i, 'item')}\"></ng-container>\r\n </div>\r\n </fieldset>\r\n\r\n </sme-accordion-panel>\r\n </sme-accordion>\r\n\r\n <button #addButton *ngIf=\"showAdd\" type=\"button\" data-uta-id=\"add-button\"\r\n [smeDisabled]=\"loadingOrDisabled || (maxItems !== -1 && value.length >= maxItems)\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.addButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.addButtonTooltip\" (click)=\"add()\">{{addButtonText}}</button>\r\n </div>\r\n\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n <div class=\"sme-screen-reader\" aria-live=\"assertive\" aria-relevant=\"all\">{{screenReaderEvent}}</div>\r\n</sme-form-field-layout>\r\n" }]
17277
- }], function () { return [{ type: i0.Injector }]; }, { subFieldIsolator: [{
17450
+ args: [{ selector: 'sme-form-field[type="array"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div class=\"sme-array\">\r\n <sme-accordion [canCloseAny]=\"canCloseAny\" [canCloseAll]=\"canCloseAll\" [canOpenMultiple]=\"canOpenMultiple\">\r\n <sme-accordion-panel *ngFor=\"let item of value; let i = index\" [header]=\"getItemTitle(item, i)\" [isExpandable]=\"false\" [attr.data-uta-id]=\"'array-form-field-item-' + i\">\r\n <sme-panel-control>\r\n <ng-container *ngIf=\"headerTemplate\" smeTemplateOutlet [template]=\"headerTemplate\" [data]=\"item\" hostDataName=\"context\"\r\n [hostData]=\"{index: i, ariaLabelId: getItemAriaId(i, 'itemHeader')}\"></ng-container>\r\n <button *ngIf=\"showMove\" type=\"button\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.promoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.promoteButtonTooltip\" (click)=\"moveUp(item)\"\r\n [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"promote-button\">\r\n <span class=\"sme-icon sme-icon-up\"></span>\r\n </button>\r\n <button *ngIf=\"showMove\" type=\"button\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.demoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.demoteButtonTooltip\" (click)=\"moveDown(item)\"\r\n [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"demote-button\">\r\n <span class=\"sme-icon sme-icon-down\"></span>\r\n </button>\r\n <button *ngIf=\"getShowRemove(item, i)\" type=\"button\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.removeButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.removeButtonTooltip\" (click)=\"delete(item)\"\r\n [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"remove-button\">\r\n <span class=\"sme-icon sme-icon-delete sme-color-red\"></span>\r\n </button>\r\n </sme-panel-control>\r\n <span class=\"sme-screen-reader\" [id]=\"getItemAriaId(i, 'item')\">{{itemTitle}}</span>\r\n <fieldset [attr.aria-labelledby]=\"getItemAriaId(i, 'item')\"\r\n class=\"sme-arrange-stack-h sme-margin-bottom-lg sme-array-item\"\r\n [class.sme-subform-indent-none]=\"orientation==='horizontal'\">\r\n <div class=\"sme-position-flex-auto sme-padding-inset-md\" [id]=\"getItemAriaId(i, 'itemContainer')\">\r\n <ng-container smeTemplateOutlet [template]=\"itemTemplate\" [data]=\"item\" hostDataName=\"context\"\r\n [hostData]=\"{index: i, ariaLabelId: getItemAriaId(i, 'item')}\"></ng-container>\r\n </div>\r\n </fieldset>\r\n </sme-accordion-panel>\r\n </sme-accordion>\r\n <button #addButton *ngIf=\"showAdd\" type=\"button\" data-uta-id=\"add-button\"\r\n [smeDisabled]=\"loadingOrDisabled || (maxItems !== -1 && value.length >= maxItems)\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.addButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.Array.addButtonTooltip\" (click)=\"add()\">{{addButtonText}}</button>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n <div class=\"sme-screen-reader\" aria-live=\"assertive\" aria-relevant=\"all\">{{screenReaderEvent}}</div>\r\n</sme-form-field-layout>\r\n" }]
17451
+ }], function () { return [{ type: i0.Injector }, { type: ArrayFormFieldAccessibilityManagerService }]; }, { subFieldIsolator: [{
17278
17452
  type: ContentChild,
17279
17453
  args: [FormFieldIsolatorComponent, { static: true }]
17280
17454
  }], askForNewItem: [{
@@ -18400,8 +18574,10 @@ function ClockFormFieldComponent_div_12_Template(rf, ctx) {
18400
18574
  if (rf & 2) {
18401
18575
  const ctx_r3 = i0.ɵɵnextContext();
18402
18576
  i0.ɵɵadvance(1);
18577
+ i0.ɵɵproperty("title", ctx_r3.strings.MsftSmeShell.Angular.Common.apply);
18403
18578
  i0.ɵɵattribute("aria-label", ctx_r3.strings.MsftSmeShell.Angular.Common.apply);
18404
18579
  i0.ɵɵadvance(2);
18580
+ i0.ɵɵproperty("title", ctx_r3.strings.MsftSmeShell.Angular.Common.clear);
18405
18581
  i0.ɵɵattribute("aria-label", ctx_r3.strings.MsftSmeShell.Angular.Common.clear);
18406
18582
  }
18407
18583
  }
@@ -18968,7 +19144,7 @@ class ClockFormFieldComponent extends DateLikeFormFieldComponent {
18968
19144
  }
18969
19145
  }
18970
19146
  /** @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) {
19147
+ /** @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
19148
  if (rf & 1) {
18973
19149
  i0.ɵɵelementStart(0, "sme-form-field-layout", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
18974
19150
  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 +19162,7 @@ class ClockFormFieldComponent extends DateLikeFormFieldComponent {
18986
19162
  i0.ɵɵelementEnd();
18987
19163
  i0.ɵɵtemplate(11, ClockFormFieldComponent_div_11_Template, 4, 2, "div", 7);
18988
19164
  i0.ɵɵelementEnd();
18989
- i0.ɵɵtemplate(12, ClockFormFieldComponent_div_12_Template, 5, 2, "div", 8);
19165
+ i0.ɵɵtemplate(12, ClockFormFieldComponent_div_12_Template, 5, 4, "div", 8);
18990
19166
  i0.ɵɵelementEnd();
18991
19167
  i0.ɵɵtemplate(13, ClockFormFieldComponent_sme_validation_alert_13_Template, 1, 1, "sme-validation-alert", 9);
18992
19168
  i0.ɵɵelementEnd();
@@ -19009,7 +19185,7 @@ class ClockFormFieldComponent extends DateLikeFormFieldComponent {
19009
19185
  i0.ɵɵadvance(1);
19010
19186
  i0.ɵɵproperty("ngIf", !ctx.compact);
19011
19187
  }
19012
- }, dependencies: [i1$1.NgForOf, i1$1.NgIf, ValidationAlertComponent, FormFieldLayoutComponent], encapsulation: 2 });
19188
+ }, dependencies: [i1$1.NgForOf, i1$1.NgIf, TooltipDirective, ValidationAlertComponent, FormFieldLayoutComponent], encapsulation: 2 });
19013
19189
  __decorate([
19014
19190
  Debounce$1(10),
19015
19191
  __metadata("design:type", Function),
@@ -19025,7 +19201,7 @@ __decorate([
19025
19201
  (function () {
19026
19202
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClockFormFieldComponent, [{
19027
19203
  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" }]
19204
+ 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
19205
  }], function () { return [{ type: i0.Injector }]; }, { showConfirmation: [{
19030
19206
  type: Input
19031
19207
  }], accepted: [{
@@ -19135,7 +19311,7 @@ function fromMonacoEvent(emitter) {
19135
19311
  }
19136
19312
 
19137
19313
  const _c0$1f = ["editor"];
19138
- const _c1$H = ["type", "code"];
19314
+ const _c1$J = ["type", "code"];
19139
19315
  function CodeFormFieldComponent_sme_validation_alert_3_Template(rf, ctx) {
19140
19316
  if (rf & 1) {
19141
19317
  i0.ɵɵelement(0, "sme-validation-alert", 4);
@@ -19438,7 +19614,7 @@ let CodeFormFieldComponent = class CodeFormFieldComponent extends SmeInternalFor
19438
19614
  if (rf & 1) {
19439
19615
  i0.ɵɵlistener("keydown", function CodeFormFieldComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });
19440
19616
  }
19441
- }, inputs: { language: "language", options: "options" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], attrs: _c1$H, decls: 4, vars: 2, consts: [[3, "formField"], ["sme-lint-disable", "", 1, "sme-code-editor", "sme-form-field-editor"], ["editor", ""], [3, "alert", 4, "ngIf"], [3, "alert"]], template: function CodeFormFieldComponent_Template(rf, ctx) {
19617
+ }, inputs: { language: "language", options: "options" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], attrs: _c1$J, decls: 4, vars: 2, consts: [[3, "formField"], ["sme-lint-disable", "", 1, "sme-code-editor", "sme-form-field-editor"], ["editor", ""], [3, "alert", 4, "ngIf"], [3, "alert"]], template: function CodeFormFieldComponent_Template(rf, ctx) {
19442
19618
  if (rf & 1) {
19443
19619
  i0.ɵɵelementStart(0, "sme-form-field-layout", 0);
19444
19620
  i0.ɵɵelement(1, "div", 1, 2);
@@ -19824,7 +20000,7 @@ function ComboboxFormFieldLoaderComponent_ng_container_3_Template(rf, ctx) {
19824
20000
  }
19825
20001
  }
19826
20002
  const _c0$1d = ["singleSelectTemplate"];
19827
- const _c1$G = ["multiSelectTemplate"];
20003
+ const _c1$I = ["multiSelectTemplate"];
19828
20004
  const _c2$f = ["listbox"];
19829
20005
  const _c3$a = ["dropDown"];
19830
20006
  const _c4$8 = ["type", "combobox"];
@@ -20266,7 +20442,7 @@ let ComboboxFormFieldComponent = class ComboboxFormFieldComponent extends SmeInt
20266
20442
  /** @nocollapse */ ComboboxFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ComboboxFormFieldComponent, selectors: [["sme-form-field", "type", "combobox"], ["sme-form-field", "type", "select"]], viewQuery: function ComboboxFormFieldComponent_Query(rf, ctx) {
20267
20443
  if (rf & 1) {
20268
20444
  i0.ɵɵviewQuery(_c0$1d, 7);
20269
- i0.ɵɵviewQuery(_c1$G, 7);
20445
+ i0.ɵɵviewQuery(_c1$I, 7);
20270
20446
  i0.ɵɵviewQuery(_c2$f, 5);
20271
20447
  i0.ɵɵviewQuery(_c3$a, 5);
20272
20448
  }
@@ -20448,7 +20624,7 @@ class SelectFormFieldDirective {
20448
20624
  })();
20449
20625
 
20450
20626
  const _c0$1c = ["dropDown"];
20451
- const _c1$F = ["calendar"];
20627
+ const _c1$H = ["calendar"];
20452
20628
  const _c2$e = ["type", "date"];
20453
20629
  /**
20454
20630
  * Date Form Field Component
@@ -20570,7 +20746,7 @@ class DateFormFieldComponent extends DateLikeFormFieldComponent {
20570
20746
  /** @nocollapse */ DateFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DateFormFieldComponent, selectors: [["sme-form-field", "type", "date"]], viewQuery: function DateFormFieldComponent_Query(rf, ctx) {
20571
20747
  if (rf & 1) {
20572
20748
  i0.ɵɵviewQuery(_c0$1c, 5);
20573
- i0.ɵɵviewQuery(_c1$F, 5);
20749
+ i0.ɵɵviewQuery(_c1$H, 5);
20574
20750
  }
20575
20751
  if (rf & 2) {
20576
20752
  let _t;
@@ -20630,7 +20806,7 @@ class DateFormFieldComponent extends DateLikeFormFieldComponent {
20630
20806
  })();
20631
20807
 
20632
20808
  const _c0$1b = ["dropDown"];
20633
- const _c1$E = ["calendar"];
20809
+ const _c1$G = ["calendar"];
20634
20810
  const _c2$d = ["clock"];
20635
20811
  const _c3$9 = ["type", "datetime"];
20636
20812
  /**
@@ -20782,7 +20958,7 @@ class DateTimeFormFieldComponent extends DateLikeFormFieldComponent {
20782
20958
  /** @nocollapse */ DateTimeFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DateTimeFormFieldComponent, selectors: [["sme-form-field", "type", "datetime"]], viewQuery: function DateTimeFormFieldComponent_Query(rf, ctx) {
20783
20959
  if (rf & 1) {
20784
20960
  i0.ɵɵviewQuery(_c0$1b, 5);
20785
- i0.ɵɵviewQuery(_c1$E, 5);
20961
+ i0.ɵɵviewQuery(_c1$G, 5);
20786
20962
  i0.ɵɵviewQuery(_c2$d, 5);
20787
20963
  }
20788
20964
  if (rf & 2) {
@@ -20907,7 +21083,7 @@ class DateTimeRangeOptionComponent {
20907
21083
  })();
20908
21084
 
20909
21085
  const _c0$1a = ["listbox"];
20910
- const _c1$D = ["dropDown"];
21086
+ const _c1$F = ["dropDown"];
20911
21087
  const _c2$c = ["startFormField"];
20912
21088
  const _c3$8 = ["endFormField"];
20913
21089
  const _c4$7 = ["type", "datetimerange"];
@@ -21360,7 +21536,7 @@ DateTimeRangeFormFieldComponent.endProperty = 'end';
21360
21536
  }, viewQuery: function DateTimeRangeFormFieldComponent_Query(rf, ctx) {
21361
21537
  if (rf & 1) {
21362
21538
  i0.ɵɵviewQuery(_c0$1a, 5);
21363
- i0.ɵɵviewQuery(_c1$D, 5);
21539
+ i0.ɵɵviewQuery(_c1$F, 5);
21364
21540
  i0.ɵɵviewQuery(_c2$c, 5);
21365
21541
  i0.ɵɵviewQuery(_c3$8, 5);
21366
21542
  }
@@ -21530,7 +21706,7 @@ class WebkitFileSystem {
21530
21706
  WebkitFileSystem.isDirectoryPropertyName = '__SME_isDirectory__';
21531
21707
 
21532
21708
  const _c0$19 = ["file"];
21533
- const _c1$C = ["type", "file"];
21709
+ const _c1$E = ["type", "file"];
21534
21710
  function FileFormFieldComponent_ng_container_16_div_1_Template(rf, ctx) {
21535
21711
  if (rf & 1) {
21536
21712
  const _r6 = i0.ɵɵgetCurrentView();
@@ -21839,7 +22015,7 @@ let FileFormFieldComponent = class FileFormFieldComponent extends SmeInternalFor
21839
22015
  let _t;
21840
22016
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first);
21841
22017
  }
21842
- }, inputs: { multiple: "multiple", fileTypes: "fileTypes", buttonLabel: "buttonLabel" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c1$C, decls: 18, vars: 19, consts: [[3, "formField"], [1, "sme-file-drop-zone", "sme-subform-indent-none", "sme-subform-no-bottom-margin"], [1, "sme-padding-inset-xs", "sme-margin-bottom-xs", "sme-arrange-stack-v", 3, "smeDrop"], [1, "sme-file-input", "sme-margin-bottom-xxs"], ["type", "file", 1, "sme-layout-none", 3, "disabled", "change"], ["file", ""], ["type", "button", 1, "sme-button-primary", "sme-button-auto-width", "sme-margin-right-xs", 3, "smeDisabled", "click"], [1, "sme-position-flex-align-center"], [1, "sme-margin-bottom-xs"], [4, "ngIf"], [3, "alert"], ["class", "sme-arrange-stack-h sme-margin-bottom-xs", 4, "ngFor", "ngForOf"], [1, "sme-arrange-stack-h", "sme-margin-bottom-xs"], [1, "sme-position-flex-none", "sme-icon", "sme-icon-size-lg"], [1, "sme-position-flex-auto", "sme-padding-left-sm", "sme-arrange-stack-v"], [1, "sme-position-flex-auto", "sme-arrange-ellipsis", "sme-padding-inset-none"], ["type", "button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-cancel", "sme-color-red"]], template: function FileFormFieldComponent_Template(rf, ctx) {
22018
+ }, inputs: { multiple: "multiple", fileTypes: "fileTypes", buttonLabel: "buttonLabel" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c1$E, decls: 18, vars: 19, consts: [[3, "formField"], [1, "sme-file-drop-zone", "sme-subform-indent-none", "sme-subform-no-bottom-margin"], [1, "sme-padding-inset-xs", "sme-margin-bottom-xs", "sme-arrange-stack-v", 3, "smeDrop"], [1, "sme-file-input", "sme-margin-bottom-xxs"], ["type", "file", 1, "sme-layout-none", 3, "disabled", "change"], ["file", ""], ["type", "button", 1, "sme-button-primary", "sme-button-auto-width", "sme-margin-right-xs", 3, "smeDisabled", "click"], [1, "sme-position-flex-align-center"], [1, "sme-margin-bottom-xs"], [4, "ngIf"], [3, "alert"], ["class", "sme-arrange-stack-h sme-margin-bottom-xs", 4, "ngFor", "ngForOf"], [1, "sme-arrange-stack-h", "sme-margin-bottom-xs"], [1, "sme-position-flex-none", "sme-icon", "sme-icon-size-lg"], [1, "sme-position-flex-auto", "sme-padding-left-sm", "sme-arrange-stack-v"], [1, "sme-position-flex-auto", "sme-arrange-ellipsis", "sme-padding-inset-none"], ["type", "button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-cancel", "sme-color-red"]], template: function FileFormFieldComponent_Template(rf, ctx) {
21843
22019
  if (rf & 1) {
21844
22020
  const _r7 = i0.ɵɵgetCurrentView();
21845
22021
  i0.ɵɵelementStart(0, "sme-form-field-layout", 0)(1, "fieldset", 1)(2, "sme-drop-zone", 2);
@@ -22058,24 +22234,61 @@ JsonFormFieldComponent = __decorate([
22058
22234
  }], function () { return [{ type: i0.Injector }]; }, null);
22059
22235
  })();
22060
22236
 
22061
- const _c0$17 = ["type", "list"];
22237
+ class ListFormFieldAccessibilityManagerService {
22238
+ constructor(formFieldAccessibilityManagerBaseService) {
22239
+ this.formFieldAccessibilityManagerBaseService = formFieldAccessibilityManagerBaseService;
22240
+ }
22241
+ /**
22242
+ * It handles the focus when deleting an item from the list.
22243
+ * @param value the value for the list.
22244
+ * @param addButton the element reference for the add button.
22245
+ * @param hostElement the element reference for the host element.
22246
+ * @returns void
22247
+ */
22248
+ delete(value, addButton, hostElement) {
22249
+ this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement);
22250
+ }
22251
+ /**
22252
+ * It handles the focus when adding an item to the list.
22253
+ * @param value the value for the list.
22254
+ * @param addButton the element reference for the add button.
22255
+ * @param hostElement the element reference for the host element.
22256
+ * @returns void
22257
+ */
22258
+ add(value, addButton, hostElement) {
22259
+ this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement, false);
22260
+ }
22261
+ }
22262
+ /** @nocollapse */ ListFormFieldAccessibilityManagerService.ɵfac = function ListFormFieldAccessibilityManagerService_Factory(t) { return new (t || ListFormFieldAccessibilityManagerService)(i0.ɵɵinject(FormFieldAccessibilityManagerBaseService)); };
22263
+ /** @nocollapse */ ListFormFieldAccessibilityManagerService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: ListFormFieldAccessibilityManagerService, factory: ListFormFieldAccessibilityManagerService.ɵfac, providedIn: 'root' });
22264
+ (function () {
22265
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListFormFieldAccessibilityManagerService, [{
22266
+ type: Injectable,
22267
+ args: [{
22268
+ providedIn: 'root'
22269
+ }]
22270
+ }], function () { return [{ type: FormFieldAccessibilityManagerBaseService }]; }, null);
22271
+ })();
22272
+
22273
+ const _c0$17 = ["addButton"];
22274
+ const _c1$D = ["type", "list"];
22062
22275
  function ListFormFieldComponent_div_1_div_1_Template(rf, ctx) {
22063
22276
  if (rf & 1) {
22064
- const _r5 = i0.ɵɵgetCurrentView();
22065
- i0.ɵɵelementStart(0, "div", 7)(1, "input", 8);
22066
- i0.ɵɵlistener("ngModelChange", function ListFormFieldComponent_div_1_div_1_Template_input_ngModelChange_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r5); const i_r3 = restoredCtx.index; const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((ctx_r4.value[i_r3] = $event)); })("input", function ListFormFieldComponent_div_1_div_1_Template_input_input_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r6 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r6.triggerValueChange()); });
22277
+ const _r6 = i0.ɵɵgetCurrentView();
22278
+ i0.ɵɵelementStart(0, "div", 8)(1, "input", 9);
22279
+ i0.ɵɵlistener("ngModelChange", function ListFormFieldComponent_div_1_div_1_Template_input_ngModelChange_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r6); const i_r4 = restoredCtx.index; const ctx_r5 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((ctx_r5.value[i_r4] = $event)); })("input", function ListFormFieldComponent_div_1_div_1_Template_input_input_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.triggerValueChange()); });
22067
22280
  i0.ɵɵelementEnd();
22068
- i0.ɵɵelementStart(2, "button", 9);
22069
- i0.ɵɵlistener("click", function ListFormFieldComponent_div_1_div_1_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r5); const i_r3 = restoredCtx.index; const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.removeItemAt(i_r3)); });
22070
- i0.ɵɵelement(3, "span", 10);
22281
+ i0.ɵɵelementStart(2, "button", 10);
22282
+ i0.ɵɵlistener("click", function ListFormFieldComponent_div_1_div_1_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const i_r4 = restoredCtx.index; const ctx_r8 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r8.removeItemAt(i_r4)); });
22283
+ i0.ɵɵelement(3, "span", 11);
22071
22284
  i0.ɵɵelementEnd()();
22072
22285
  }
22073
22286
  if (rf & 2) {
22074
- const i_r3 = ctx.index;
22287
+ const i_r4 = ctx.index;
22075
22288
  const ctx_r1 = i0.ɵɵnextContext(2);
22076
22289
  i0.ɵɵadvance(1);
22077
- i0.ɵɵproperty("ngModel", ctx_r1.value[i_r3]);
22078
- i0.ɵɵattribute("aria-label", ctx_r1.strings.MsftSmeShell.Angular.Form.List.itemAriaLabel.format(ctx_r1.label, i_r3 + 1, ctx_r1.value.length));
22290
+ i0.ɵɵproperty("ngModel", ctx_r1.value[i_r4]);
22291
+ i0.ɵɵattribute("aria-label", ctx_r1.strings.MsftSmeShell.Angular.Form.List.itemAriaLabel.format(ctx_r1.label, i_r4 + 1, ctx_r1.value.length));
22079
22292
  i0.ɵɵadvance(1);
22080
22293
  i0.ɵɵproperty("title", ctx_r1.strings.MsftSmeShell.Angular.Form.List.removeButtonTooltip);
22081
22294
  i0.ɵɵattribute("aria-label", ctx_r1.strings.MsftSmeShell.Angular.Form.List.removeButtonAriaLabel);
@@ -22083,14 +22296,14 @@ function ListFormFieldComponent_div_1_div_1_Template(rf, ctx) {
22083
22296
  }
22084
22297
  function ListFormFieldComponent_div_1_Template(rf, ctx) {
22085
22298
  if (rf & 1) {
22086
- const _r9 = i0.ɵɵgetCurrentView();
22299
+ const _r10 = i0.ɵɵgetCurrentView();
22087
22300
  i0.ɵɵelementStart(0, "div", 3);
22088
22301
  i0.ɵɵtemplate(1, ListFormFieldComponent_div_1_div_1_Template, 4, 4, "div", 4);
22089
- i0.ɵɵelementStart(2, "button", 5);
22090
- i0.ɵɵlistener("click", function ListFormFieldComponent_div_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.addListItem()); });
22091
- i0.ɵɵelement(3, "span", 6);
22092
- i0.ɵɵelementStart(4, "span");
22093
- i0.ɵɵtext(5);
22302
+ i0.ɵɵelementStart(2, "button", 5, 6);
22303
+ i0.ɵɵlistener("click", function ListFormFieldComponent_div_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.addListItem()); });
22304
+ i0.ɵɵelement(4, "span", 7);
22305
+ i0.ɵɵelementStart(5, "span");
22306
+ i0.ɵɵtext(6);
22094
22307
  i0.ɵɵelementEnd()()();
22095
22308
  }
22096
22309
  if (rf & 2) {
@@ -22099,8 +22312,8 @@ function ListFormFieldComponent_div_1_Template(rf, ctx) {
22099
22312
  i0.ɵɵproperty("ngForOf", ctx_r0.value)("ngForTrackBy", ctx_r0.trackByIndex);
22100
22313
  i0.ɵɵadvance(1);
22101
22314
  i0.ɵɵproperty("title", ctx_r0.strings.MsftSmeShell.Angular.Form.List.addButtonTooltip);
22102
- i0.ɵɵattribute("aria-label", ctx_r0.strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel);
22103
- i0.ɵɵadvance(3);
22315
+ i0.ɵɵattribute("aria-label", ctx_r0.addButtonAriaLabel);
22316
+ i0.ɵɵadvance(4);
22104
22317
  i0.ɵɵtextInterpolate(ctx_r0.strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel);
22105
22318
  }
22106
22319
  }
@@ -22111,8 +22324,9 @@ class ListFormFieldComponent extends SmeInternalFormFieldComponent {
22111
22324
  /**
22112
22325
  * Initializes a new instance of the ListFormFieldComponent
22113
22326
  */
22114
- constructor(injector) {
22327
+ constructor(injector, listFormFieldAccessibilityManagerService) {
22115
22328
  super(injector);
22329
+ this.listFormFieldAccessibilityManagerService = listFormFieldAccessibilityManagerService;
22116
22330
  }
22117
22331
  /**
22118
22332
  * The source name to use for logging
@@ -22126,6 +22340,15 @@ class ListFormFieldComponent extends SmeInternalFormFieldComponent {
22126
22340
  get ariaLabel() {
22127
22341
  return this.getMergedDescriptionLabel();
22128
22342
  }
22343
+ /**
22344
+ * It gets the aria label for the add button that can respect when the field is required.
22345
+ */
22346
+ get addButtonAriaLabel() {
22347
+ if (this.required) {
22348
+ return this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(this.strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel);
22349
+ }
22350
+ return this.strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel;
22351
+ }
22129
22352
  /**
22130
22353
  * The method called after the component is initialized.
22131
22354
  */
@@ -22138,6 +22361,7 @@ class ListFormFieldComponent extends SmeInternalFormFieldComponent {
22138
22361
  */
22139
22362
  addListItem(value = '') {
22140
22363
  this.value = [...this.value, value];
22364
+ this.listFormFieldAccessibilityManagerService.add(this.value, this.addButton, this.hostElement);
22141
22365
  }
22142
22366
  /**
22143
22367
  * Removes an item at the given index
@@ -22146,10 +22370,7 @@ class ListFormFieldComponent extends SmeInternalFormFieldComponent {
22146
22370
  const value = [...this.value];
22147
22371
  value.splice(index, 1);
22148
22372
  this.value = value;
22149
- const firstFocusable = Dom.getFirstFocusableDescendent(this.hostElement.nativeElement);
22150
- if (firstFocusable) {
22151
- firstFocusable.focus();
22152
- }
22373
+ this.listFormFieldAccessibilityManagerService.delete(this.value, this.addButton, this.hostElement);
22153
22374
  }
22154
22375
  /**
22155
22376
  * The method called when a <select> element's value changes.
@@ -22190,15 +22411,23 @@ class ListFormFieldComponent extends SmeInternalFormFieldComponent {
22190
22411
  return super.validate(c);
22191
22412
  }
22192
22413
  }
22193
- /** @nocollapse */ ListFormFieldComponent.ɵfac = function ListFormFieldComponent_Factory(t) { return new (t || ListFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
22194
- /** @nocollapse */ ListFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ListFormFieldComponent, selectors: [["sme-form-field", "type", "list"]], hostVars: 1, hostBindings: function ListFormFieldComponent_HostBindings(rf, ctx) {
22414
+ /** @nocollapse */ ListFormFieldComponent.ɵfac = function ListFormFieldComponent_Factory(t) { return new (t || ListFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(ListFormFieldAccessibilityManagerService)); };
22415
+ /** @nocollapse */ ListFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ListFormFieldComponent, selectors: [["sme-form-field", "type", "list"]], viewQuery: function ListFormFieldComponent_Query(rf, ctx) {
22416
+ if (rf & 1) {
22417
+ i0.ɵɵviewQuery(_c0$17, 5);
22418
+ }
22419
+ if (rf & 2) {
22420
+ let _t;
22421
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addButton = _t.first);
22422
+ }
22423
+ }, hostVars: 1, hostBindings: function ListFormFieldComponent_HostBindings(rf, ctx) {
22195
22424
  if (rf & 2) {
22196
22425
  i0.ɵɵattribute("aria-label", ctx.ariaLabel);
22197
22426
  }
22198
- }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c0$17, decls: 3, vars: 3, consts: [[3, "formField"], ["class", "sme-margin-bottom-xs sme-form-field-editor", 4, "ngIf"], [3, "alert"], [1, "sme-margin-bottom-xs", "sme-form-field-editor"], ["class", "sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["type", "button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-margin-bottom-xs", 3, "title", "click"], [1, "sme-icon", "sme-icon-add"], [1, "sme-arrange-stack-h", "sme-margin-bottom-xs", "sme-form-field-width"], ["type", "text", 1, "sme-position-flex-auto", "sme-margin-right-xs", 3, "ngModel", "ngModelChange", "input"], ["type", "button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-cancel", "sme-color-red"]], template: function ListFormFieldComponent_Template(rf, ctx) {
22427
+ }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c1$D, decls: 3, vars: 3, consts: [[3, "formField"], ["class", "sme-margin-bottom-xs sme-form-field-editor", 4, "ngIf"], [3, "alert"], [1, "sme-margin-bottom-xs", "sme-form-field-editor"], ["class", "sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["type", "button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-margin-bottom-xs", 3, "title", "click"], ["addButton", ""], [1, "sme-icon", "sme-icon-add"], [1, "sme-arrange-stack-h", "sme-margin-bottom-xs", "sme-form-field-width"], ["type", "text", 1, "sme-position-flex-auto", "sme-margin-right-xs", 3, "ngModel", "ngModelChange", "input"], ["type", "button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-cancel", "sme-color-red"]], template: function ListFormFieldComponent_Template(rf, ctx) {
22199
22428
  if (rf & 1) {
22200
22429
  i0.ɵɵelementStart(0, "sme-form-field-layout", 0);
22201
- i0.ɵɵtemplate(1, ListFormFieldComponent_div_1_Template, 6, 5, "div", 1);
22430
+ i0.ɵɵtemplate(1, ListFormFieldComponent_div_1_Template, 7, 5, "div", 1);
22202
22431
  i0.ɵɵelement(2, "sme-validation-alert", 2);
22203
22432
  i0.ɵɵelementEnd();
22204
22433
  }
@@ -22213,15 +22442,18 @@ class ListFormFieldComponent extends SmeInternalFormFieldComponent {
22213
22442
  (function () {
22214
22443
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListFormFieldComponent, [{
22215
22444
  type: Component,
22216
- args: [{ selector: 'sme-form-field[type="list"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div *ngIf=\"value\" class=\"sme-margin-bottom-xs sme-form-field-editor\">\r\n <div *ngFor=\"let item of value;trackBy: trackByIndex; let i = index\"\r\n class=\"sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width\">\r\n <input class=\"sme-position-flex-auto sme-margin-right-xs\" type=\"text\" [(ngModel)]=\"value[i]\"\r\n (input)=\"triggerValueChange()\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.itemAriaLabel.format(label, i + 1, value.length)\" />\r\n <button type=\"button\" class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.removeButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.List.removeButtonTooltip\" (click)=\"removeItemAt(i)\">\r\n <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n </button>\r\n </div>\r\n <button type=\"button\" class=\"sme-button-trigger sme-button-auto-width sme-margin-bottom-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.List.addButtonTooltip\" (click)=\"addListItem()\">\r\n <span class=\"sme-icon sme-icon-add\"></span>\r\n <span>{{strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel}}</span>\r\n </button>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>" }]
22217
- }], function () { return [{ type: i0.Injector }]; }, { ariaLabel: [{
22445
+ args: [{ selector: 'sme-form-field[type="list"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div *ngIf=\"value\" class=\"sme-margin-bottom-xs sme-form-field-editor\">\r\n <div *ngFor=\"let item of value;trackBy: trackByIndex; let i = index\"\r\n class=\"sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width\">\r\n <input class=\"sme-position-flex-auto sme-margin-right-xs\" type=\"text\" [(ngModel)]=\"value[i]\"\r\n (input)=\"triggerValueChange()\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.itemAriaLabel.format(label, i + 1, value.length)\" />\r\n <button type=\"button\" class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.removeButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.List.removeButtonTooltip\" (click)=\"removeItemAt(i)\">\r\n <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n </button>\r\n </div>\r\n <button #addButton type=\"button\" class=\"sme-button-trigger sme-button-auto-width sme-margin-bottom-xs\"\r\n [attr.aria-label]=\"addButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.List.addButtonTooltip\" (click)=\"addListItem()\">\r\n <span class=\"sme-icon sme-icon-add\"></span>\r\n <span>{{ strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel }}</span>\r\n </button>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>" }]
22446
+ }], function () { return [{ type: i0.Injector }, { type: ListFormFieldAccessibilityManagerService }]; }, { addButton: [{
22447
+ type: ViewChild,
22448
+ args: ['addButton']
22449
+ }], ariaLabel: [{
22218
22450
  type: HostBinding,
22219
22451
  args: ['attr.aria-label']
22220
22452
  }] });
22221
22453
  })();
22222
22454
 
22223
22455
  const _c0$16 = ["input"];
22224
- const _c1$B = ["container"];
22456
+ const _c1$C = ["container"];
22225
22457
  const _c2$b = ["incrementButton"];
22226
22458
  const _c3$7 = ["decrementButton"];
22227
22459
  const _c4$6 = ["type", "number"];
@@ -22249,6 +22481,13 @@ function NumberFormFieldComponent_div_3_span_4_Template(rf, ctx) {
22249
22481
  i0.ɵɵelement(6, "span", 15);
22250
22482
  i0.ɵɵelementEnd()();
22251
22483
  }
22484
+ if (rf & 2) {
22485
+ const ctx_r4 = i0.ɵɵnextContext(2);
22486
+ i0.ɵɵadvance(1);
22487
+ i0.ɵɵattribute("aria-label", ctx_r4.ariaLabelIncrease);
22488
+ i0.ɵɵadvance(3);
22489
+ i0.ɵɵattribute("aria-label", ctx_r4.ariaLabelDecrease);
22490
+ }
22252
22491
  }
22253
22492
  function NumberFormFieldComponent_div_3_Template(rf, ctx) {
22254
22493
  if (rf & 1) {
@@ -22256,14 +22495,14 @@ function NumberFormFieldComponent_div_3_Template(rf, ctx) {
22256
22495
  i0.ɵɵelementStart(0, "div", 5, 6)(2, "input", 7, 8);
22257
22496
  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
22497
  i0.ɵɵelementEnd();
22259
- i0.ɵɵtemplate(4, NumberFormFieldComponent_div_3_span_4_Template, 7, 0, "span", 9);
22498
+ i0.ɵɵtemplate(4, NumberFormFieldComponent_div_3_span_4_Template, 7, 2, "span", 9);
22260
22499
  i0.ɵɵelementEnd();
22261
22500
  }
22262
22501
  if (rf & 2) {
22263
22502
  const ctx_r1 = i0.ɵɵnextContext();
22264
22503
  i0.ɵɵadvance(2);
22265
22504
  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);
22505
+ 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
22506
  i0.ɵɵadvance(2);
22268
22507
  i0.ɵɵproperty("ngIf", ctx_r1.showSpinButton);
22269
22508
  }
@@ -22318,6 +22557,18 @@ let NumberFormFieldComponent = class NumberFormFieldComponent extends SmeInterna
22318
22557
  ? MsftSme.isNullOrUndefined(this.step) ? 1 : this.step
22319
22558
  : this.incrementBy;
22320
22559
  }
22560
+ /**
22561
+ * Getter aria label increase for spin button increase.
22562
+ */
22563
+ get ariaLabelIncrease() {
22564
+ return this.strings.MsftSmeShell.Angular.Form.SpinButton.increase.format(this.incrementBy);
22565
+ }
22566
+ /**
22567
+ * Getter aria label increase for spin button decrease.
22568
+ */
22569
+ get ariaLabelDecrease() {
22570
+ return this.strings.MsftSmeShell.Angular.Form.SpinButton.decrease.format(this.incrementBy);
22571
+ }
22321
22572
  /**
22322
22573
  * Handle keydown events on the number input
22323
22574
  */
@@ -22491,7 +22742,7 @@ let NumberFormFieldComponent = class NumberFormFieldComponent extends SmeInterna
22491
22742
  /** @nocollapse */ NumberFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: NumberFormFieldComponent, selectors: [["sme-form-field", "type", "number"]], viewQuery: function NumberFormFieldComponent_Query(rf, ctx) {
22492
22743
  if (rf & 1) {
22493
22744
  i0.ɵɵviewQuery(_c0$16, 5);
22494
- i0.ɵɵviewQuery(_c1$B, 5);
22745
+ i0.ɵɵviewQuery(_c1$C, 5);
22495
22746
  i0.ɵɵviewQuery(_c2$b, 5);
22496
22747
  i0.ɵɵviewQuery(_c3$7, 5);
22497
22748
  }
@@ -22569,7 +22820,7 @@ NumberFormFieldComponent = __decorate([
22569
22820
  (function () {
22570
22821
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NumberFormFieldComponent, [{
22571
22822
  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" }]
22823
+ 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
22824
  }], function () { return [{ type: i0.Injector }]; }, { input: [{
22574
22825
  type: ViewChild,
22575
22826
  args: ['input']
@@ -22595,6 +22846,58 @@ NumberFormFieldComponent = __decorate([
22595
22846
  }] });
22596
22847
  })();
22597
22848
 
22849
+ class OrderedListFormFieldAccessibilityManagerService {
22850
+ constructor(formFieldAccessibilityManagerBaseService) {
22851
+ this.formFieldAccessibilityManagerBaseService = formFieldAccessibilityManagerBaseService;
22852
+ }
22853
+ /**
22854
+ * It handles the focus when deleting an item from the list.
22855
+ * @param value the value for the list.
22856
+ * @param addButton the element reference for the add button.
22857
+ * @param hostElement the element reference for the host element.
22858
+ * @returns void
22859
+ */
22860
+ delete(value, addButton, hostElement) {
22861
+ this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement);
22862
+ }
22863
+ /**
22864
+ * It handles the focus when adding an item to the list.
22865
+ * @param value the value for the list.
22866
+ * @param addButton the element reference for the add button.
22867
+ * @param hostElement the element reference for the host element.
22868
+ * @returns void
22869
+ */
22870
+ add(value, addButton, hostElement) {
22871
+ this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement, false);
22872
+ }
22873
+ /**
22874
+ * It handles the focus when promoting an item in the list.
22875
+ * @param hostElement The element reference for the host element.
22876
+ * @param index the current index.
22877
+ */
22878
+ promote(value, hostElement, buttonId) {
22879
+ this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(value, hostElement, buttonId);
22880
+ }
22881
+ /**
22882
+ * It handles the focus when demoting an item in the list.
22883
+ * @param hostElement The element reference for the host element.
22884
+ * @param index the current index.
22885
+ */
22886
+ demote(value, hostElement, buttonId) {
22887
+ this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(value, hostElement, buttonId);
22888
+ }
22889
+ }
22890
+ /** @nocollapse */ OrderedListFormFieldAccessibilityManagerService.ɵfac = function OrderedListFormFieldAccessibilityManagerService_Factory(t) { return new (t || OrderedListFormFieldAccessibilityManagerService)(i0.ɵɵinject(FormFieldAccessibilityManagerBaseService)); };
22891
+ /** @nocollapse */ OrderedListFormFieldAccessibilityManagerService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: OrderedListFormFieldAccessibilityManagerService, factory: OrderedListFormFieldAccessibilityManagerService.ɵfac, providedIn: 'root' });
22892
+ (function () {
22893
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OrderedListFormFieldAccessibilityManagerService, [{
22894
+ type: Injectable,
22895
+ args: [{
22896
+ providedIn: 'root'
22897
+ }]
22898
+ }], function () { return [{ type: FormFieldAccessibilityManagerBaseService }]; }, null);
22899
+ })();
22900
+
22598
22901
  function OrderedListFormFieldLoaderComponent_sme_option_2_Template(rf, ctx) {
22599
22902
  if (rf & 1) {
22600
22903
  i0.ɵɵelement(0, "sme-option", 4);
@@ -22627,7 +22930,8 @@ function OrderedListFormFieldLoaderComponent_ng_container_3_Template(rf, ctx) {
22627
22930
  i0.ɵɵproperty("ngForOf", ctx_r2.resolveComponentMember(ctx_r2.propertySchema.options.itemsBinding));
22628
22931
  }
22629
22932
  }
22630
- const _c0$15 = ["type", "orderedlist"];
22933
+ const _c0$15 = ["addButton"];
22934
+ const _c1$B = ["type", "orderedlist"];
22631
22935
  function OrderedListFormFieldComponent_div_1_div_1_p_3_Template(rf, ctx) {
22632
22936
  if (rf & 1) {
22633
22937
  i0.ɵɵelementStart(0, "p", 14);
@@ -22637,9 +22941,9 @@ function OrderedListFormFieldComponent_div_1_div_1_p_3_Template(rf, ctx) {
22637
22941
  if (rf & 2) {
22638
22942
  const i_r4 = i0.ɵɵnextContext().index;
22639
22943
  const ctx_r5 = i0.ɵɵnextContext(2);
22640
- i0.ɵɵattribute("aria-describedby", ctx_r5.idBag.detailsSpan + i_r4);
22944
+ i0.ɵɵattribute("aria-label", ctx_r5.idBag.detailsSpan + i_r4);
22641
22945
  i0.ɵɵadvance(1);
22642
- i0.ɵɵtextInterpolate(ctx_r5.arrayGetValueDisplayString(ctx_r5.value[i_r4]));
22946
+ i0.ɵɵtextInterpolate1(" ", ctx_r5.arrayGetValueDisplayString(ctx_r5.value[i_r4]), "");
22643
22947
  }
22644
22948
  }
22645
22949
  function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_ng_container_1_sme_option_1_Template(rf, ctx) {
@@ -22669,14 +22973,14 @@ function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template(rf,
22669
22973
  if (rf & 1) {
22670
22974
  const _r17 = i0.ɵɵgetCurrentView();
22671
22975
  i0.ɵɵelementStart(0, "sme-form-field", 15);
22672
- i0.ɵɵlistener("ngModelChange", function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template_sme_form_field_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const i_r4 = i0.ɵɵnextContext().index; const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((ctx_r16.value[i_r4] = $event)); })("ngModelChange", function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template_sme_form_field_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r19 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r19.triggerValueChange()); })("customValidate", function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template_sme_form_field_customValidate_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r20 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r20.newItemCheck()); });
22976
+ i0.ɵɵlistener("ngModelChange", function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template_sme_form_field_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const i_r4 = i0.ɵɵnextContext().index; const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((ctx_r16.value[i_r4] = $event)); })("ngModelChange", function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template_sme_form_field_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r19 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r19.triggerValueChange()); });
22673
22977
  i0.ɵɵtemplate(1, OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_ng_container_1_Template, 2, 1, "ng-container", 16);
22674
22978
  i0.ɵɵelementEnd();
22675
22979
  }
22676
22980
  if (rf & 2) {
22677
- const ctx_r21 = i0.ɵɵnextContext();
22678
- const item_r3 = ctx_r21.$implicit;
22679
- const i_r4 = ctx_r21.index;
22981
+ const ctx_r20 = i0.ɵɵnextContext();
22982
+ const item_r3 = ctx_r20.$implicit;
22983
+ const i_r4 = ctx_r20.index;
22680
22984
  const ctx_r6 = i0.ɵɵnextContext(2);
22681
22985
  i0.ɵɵproperty("utaId", item_r3 ? item_r3.toString() + "-combobox" : "new-combobox")("hideHeader", true)("valueComparator", ctx_r6.valueComparator)("ngModel", ctx_r6.value[i_r4])("label", ctx_r6.label)("searchable", ctx_r6.searchable);
22682
22986
  i0.ɵɵadvance(1);
@@ -22685,9 +22989,9 @@ function OrderedListFormFieldComponent_div_1_div_1_sme_form_field_5_Template(rf,
22685
22989
  }
22686
22990
  function OrderedListFormFieldComponent_div_1_div_1_button_6_Template(rf, ctx) {
22687
22991
  if (rf & 1) {
22688
- const _r24 = i0.ɵɵgetCurrentView();
22992
+ const _r23 = i0.ɵɵgetCurrentView();
22689
22993
  i0.ɵɵelementStart(0, "button", 19);
22690
- i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_div_1_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const i_r4 = i0.ɵɵnextContext().index; const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.promoteItemAt(i_r4)); });
22994
+ i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_div_1_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const i_r4 = i0.ɵɵnextContext().index; const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.promoteItemAt(i_r4)); });
22691
22995
  i0.ɵɵelement(1, "span", 20);
22692
22996
  i0.ɵɵelementEnd();
22693
22997
  }
@@ -22700,9 +23004,9 @@ function OrderedListFormFieldComponent_div_1_div_1_button_6_Template(rf, ctx) {
22700
23004
  }
22701
23005
  function OrderedListFormFieldComponent_div_1_div_1_button_7_Template(rf, ctx) {
22702
23006
  if (rf & 1) {
22703
- const _r28 = i0.ɵɵgetCurrentView();
23007
+ const _r27 = i0.ɵɵgetCurrentView();
22704
23008
  i0.ɵɵelementStart(0, "button", 21);
22705
- i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_div_1_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r28); const i_r4 = i0.ɵɵnextContext().index; const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.demoteItemAt(i_r4)); });
23009
+ i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_div_1_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const i_r4 = i0.ɵɵnextContext().index; const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.demoteItemAt(i_r4)); });
22706
23010
  i0.ɵɵelement(1, "span", 22);
22707
23011
  i0.ɵɵelementEnd();
22708
23012
  }
@@ -22715,9 +23019,9 @@ function OrderedListFormFieldComponent_div_1_div_1_button_7_Template(rf, ctx) {
22715
23019
  }
22716
23020
  function OrderedListFormFieldComponent_div_1_div_1_button_8_Template(rf, ctx) {
22717
23021
  if (rf & 1) {
22718
- const _r32 = i0.ɵɵgetCurrentView();
23022
+ const _r31 = i0.ɵɵgetCurrentView();
22719
23023
  i0.ɵɵelementStart(0, "button", 23);
22720
- i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_div_1_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r32); const i_r4 = i0.ɵɵnextContext().index; const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.removeItemAt(i_r4)); });
23024
+ i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_div_1_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r31); const i_r4 = i0.ɵɵnextContext().index; const ctx_r29 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r29.removeItemAt(i_r4)); });
22721
23025
  i0.ɵɵelement(1, "span", 24);
22722
23026
  i0.ɵɵelementEnd();
22723
23027
  }
@@ -22767,16 +23071,16 @@ function OrderedListFormFieldComponent_div_1_div_1_Template(rf, ctx) {
22767
23071
  function OrderedListFormFieldComponent_div_1_button_2_Template(rf, ctx) {
22768
23072
  if (rf & 1) {
22769
23073
  const _r34 = i0.ɵɵgetCurrentView();
22770
- i0.ɵɵelementStart(0, "button", 25);
23074
+ i0.ɵɵelementStart(0, "button", 25, 26);
22771
23075
  i0.ɵɵlistener("click", function OrderedListFormFieldComponent_div_1_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.addListItem()); });
22772
- i0.ɵɵtext(1);
23076
+ i0.ɵɵtext(2);
22773
23077
  i0.ɵɵelementEnd();
22774
23078
  }
22775
23079
  if (rf & 2) {
22776
23080
  const ctx_r2 = i0.ɵɵnextContext(2);
22777
23081
  i0.ɵɵproperty("smeDisabled", ctx_r2.loadingOrDisabled || ctx_r2.value.length === ctx_r2.options.length)("title", ctx_r2.strings.MsftSmeShell.Angular.Form.OrderedList.addButtonTooltip);
22778
- i0.ɵɵattribute("aria-label", ctx_r2.strings.MsftSmeShell.Angular.Form.OrderedList.addButtonAriaLabel);
22779
- i0.ɵɵadvance(1);
23082
+ i0.ɵɵattribute("aria-label", ctx_r2.addRemoveButtonArialLabel);
23083
+ i0.ɵɵadvance(2);
22780
23084
  i0.ɵɵtextInterpolate1(" ", ctx_r2.addButtonText, " ");
22781
23085
  }
22782
23086
  }
@@ -22784,7 +23088,7 @@ function OrderedListFormFieldComponent_div_1_Template(rf, ctx) {
22784
23088
  if (rf & 1) {
22785
23089
  i0.ɵɵelementStart(0, "div", 3);
22786
23090
  i0.ɵɵtemplate(1, OrderedListFormFieldComponent_div_1_div_1_Template, 9, 10, "div", 4);
22787
- i0.ɵɵtemplate(2, OrderedListFormFieldComponent_div_1_button_2_Template, 2, 4, "button", 5);
23091
+ i0.ɵɵtemplate(2, OrderedListFormFieldComponent_div_1_button_2_Template, 3, 4, "button", 5);
22788
23092
  i0.ɵɵelementEnd();
22789
23093
  }
22790
23094
  if (rf & 2) {
@@ -22864,8 +23168,9 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
22864
23168
  /**
22865
23169
  * Initializes a new instance of the OrderedListFormFieldComponent
22866
23170
  */
22867
- constructor(injector) {
23171
+ constructor(injector, orderedListFormFieldAccessibilityManagerService) {
22868
23172
  super(injector);
23173
+ this.orderedListFormFieldAccessibilityManagerService = orderedListFormFieldAccessibilityManagerService;
22869
23174
  /**
22870
23175
  * Single selection is not supported by ordered list
22871
23176
  */
@@ -22882,10 +23187,6 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
22882
23187
  * Indicates allow empty selection
22883
23188
  */
22884
23189
  this.allowEmpty = true;
22885
- /**
22886
- * Tracks when new item is added to place focus on.
22887
- */
22888
- this.newItemAdded = false;
22889
23190
  this.instructions = this.strings.MsftSmeShell.Angular.Form.OrderedList.instructions;
22890
23191
  this.showAddRemove = true;
22891
23192
  this.showMove = true;
@@ -22909,6 +23210,17 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
22909
23210
  get ariaLabel() {
22910
23211
  return this.getMergedDescriptionLabel();
22911
23212
  }
23213
+ /**
23214
+ * The aria label for the add/remove button when aria label is passed in.
23215
+ * The aria label needs to be in sync with the add button text so that narrator can read the correct content.
23216
+ * It should also respect the required state.
23217
+ */
23218
+ get addRemoveButtonArialLabel() {
23219
+ if (this.addButtonText) {
23220
+ return this.required ? this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(this.addButtonText) : this.addButtonText;
23221
+ }
23222
+ return this.required ? this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(this.strings.MsftSmeShell.Angular.Form.OrderedList.addButtonAriaLabel) : this.strings.MsftSmeShell.Angular.Form.OrderedList.addButtonAriaLabel;
23223
+ }
22912
23224
  /**
22913
23225
  * The method called after the component is initialized.
22914
23226
  */
@@ -22946,7 +23258,7 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
22946
23258
  return false;
22947
23259
  }
22948
23260
  this.value = [...this.value, value];
22949
- this.newItemAdded = true;
23261
+ this.orderedListFormFieldAccessibilityManagerService.add(this.value, this.addButton, this.hostElement);
22950
23262
  return true;
22951
23263
  }
22952
23264
  /**
@@ -22954,26 +23266,22 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
22954
23266
  * @param index The index of the item being demoted.
22955
23267
  */
22956
23268
  demoteItemAt(index) {
22957
- if (index !== this.value.length - 1) {
22958
- this.moveItem(index, index + 1);
22959
- const focusable = document.getElementById(`${this.idBag.demote}${index + 1}`);
22960
- if (focusable) {
22961
- focusable.focus();
22962
- }
23269
+ if (index === this.value.length - 1) {
23270
+ return;
22963
23271
  }
23272
+ this.moveItem(index, index + 1);
23273
+ this.orderedListFormFieldAccessibilityManagerService.demote(this.value, this.hostElement, `#${this.idBag.demote}${index + 1}`);
22964
23274
  }
22965
23275
  /**
22966
23276
  * Promotes an item at the given index by 1
22967
23277
  * @param index The index of the item being promoted.
22968
23278
  */
22969
23279
  promoteItemAt(index) {
22970
- if (index !== 0) {
22971
- this.moveItem(index, index - 1);
22972
- const focusable = document.getElementById(`${this.idBag.promote}${index - 1}`);
22973
- if (focusable) {
22974
- focusable.focus();
22975
- }
23280
+ if (index === 0) {
23281
+ return;
22976
23282
  }
23283
+ this.moveItem(index, index - 1);
23284
+ this.orderedListFormFieldAccessibilityManagerService.promote(this.value, this.hostElement, `#${this.idBag.promote}${index - 1}`);
22977
23285
  }
22978
23286
  /**
22979
23287
  * Returns the index to track items in the array.
@@ -22985,10 +23293,7 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
22985
23293
  removeItemAt(index) {
22986
23294
  this.value.splice(index, 1);
22987
23295
  this.triggerValueChange();
22988
- const firstFocusable = Dom.getFirstFocusableDescendent(this.hostElement.nativeElement);
22989
- if (firstFocusable) {
22990
- firstFocusable.focus();
22991
- }
23296
+ this.orderedListFormFieldAccessibilityManagerService.delete(this.value, this.addButton, this.hostElement);
22992
23297
  }
22993
23298
  /**
22994
23299
  * Moves an element of an array from a starting index to a destination index.
@@ -23011,18 +23316,6 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
23011
23316
  }
23012
23317
  this.value = value;
23013
23318
  }
23014
- /**
23015
- * Places focus on new item when it is added.
23016
- */
23017
- newItemCheck() {
23018
- if (this.newItemAdded) {
23019
- const focusable = Dom.findChildElementDFS(this.hostElement.nativeElement, (element) => element.tagName.toUpperCase() === 'INPUT', ElementPosition.Last);
23020
- if (focusable) {
23021
- focusable.focus();
23022
- }
23023
- this.newItemAdded = false;
23024
- }
23025
- }
23026
23319
  /**
23027
23320
  * The method called when a <select> element's value changes.
23028
23321
  */
@@ -23060,12 +23353,20 @@ let OrderedListFormFieldComponent = class OrderedListFormFieldComponent extends
23060
23353
  return super.validate(c);
23061
23354
  }
23062
23355
  };
23063
- /** @nocollapse */ OrderedListFormFieldComponent.ɵfac = function OrderedListFormFieldComponent_Factory(t) { return new (t || OrderedListFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
23064
- /** @nocollapse */ OrderedListFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: OrderedListFormFieldComponent, selectors: [["sme-form-field", "type", "orderedlist"]], hostVars: 1, hostBindings: function OrderedListFormFieldComponent_HostBindings(rf, ctx) {
23356
+ /** @nocollapse */ OrderedListFormFieldComponent.ɵfac = function OrderedListFormFieldComponent_Factory(t) { return new (t || OrderedListFormFieldComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(OrderedListFormFieldAccessibilityManagerService)); };
23357
+ /** @nocollapse */ OrderedListFormFieldComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: OrderedListFormFieldComponent, selectors: [["sme-form-field", "type", "orderedlist"]], viewQuery: function OrderedListFormFieldComponent_Query(rf, ctx) {
23358
+ if (rf & 1) {
23359
+ i0.ɵɵviewQuery(_c0$15, 5);
23360
+ }
23361
+ if (rf & 2) {
23362
+ let _t;
23363
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addButton = _t.first);
23364
+ }
23365
+ }, hostVars: 1, hostBindings: function OrderedListFormFieldComponent_HostBindings(rf, ctx) {
23065
23366
  if (rf & 2) {
23066
23367
  i0.ɵɵattribute("aria-label", ctx.ariaLabel);
23067
23368
  }
23068
- }, inputs: { showAddRemove: "showAddRemove", showMove: "showMove", showSelect: "showSelect", addButtonText: "addButtonText", searchable: "searchable", allowEmpty: "allowEmpty" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c0$15, decls: 3, vars: 3, consts: [[3, "formField"], ["class", "sme-margin-bottom-xs sme-form-field-editor", 4, "ngIf"], [3, "alert"], [1, "sme-margin-bottom-xs", "sme-form-field-editor"], ["class", "sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs", "data-uta-id", "add-button", 3, "smeDisabled", "title", "click", 4, "ngIf"], [1, "sme-arrange-stack-h", "sme-margin-bottom-xs", "sme-form-field-width"], [1, "sme-screen-reader", 3, "id"], ["class", "sme-position-flex-auto", "role", "textbox", 4, "ngIf"], [1, "sme-layout-relative", "sme-position-flex-auto"], ["type", "combobox", 3, "utaId", "hideHeader", "valueComparator", "ngModel", "label", "searchable", "ngModelChange", "customValidate", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height", "data-uta-id", "promote-button", 3, "id", "title", "smeDisabled", "click", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height", "data-uta-id", "demote-button", 3, "id", "title", "smeDisabled", "click", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height", "data-uta-id", "remove-button", 3, "title", "smeDisabled", "click", 4, "ngIf"], ["role", "textbox", 1, "sme-position-flex-auto"], ["type", "combobox", 3, "utaId", "hideHeader", "valueComparator", "ngModel", "label", "searchable", "ngModelChange", "customValidate"], [4, "ngFor", "ngForOf"], [3, "utaId", "value", "label", "disabled", 4, "ngIf"], [3, "utaId", "value", "label", "disabled"], ["type", "button", "data-uta-id", "promote-button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", "sme-form-field-height", 3, "id", "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-up"], ["type", "button", "data-uta-id", "demote-button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", "sme-form-field-height", 3, "id", "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-down"], ["type", "button", "data-uta-id", "remove-button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", "sme-form-field-height", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-cancel", "sme-color-red"], ["type", "button", "data-uta-id", "add-button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-icon", "sme-icon-add", "sme-margin-bottom-xs", 3, "smeDisabled", "title", "click"]], template: function OrderedListFormFieldComponent_Template(rf, ctx) {
23369
+ }, inputs: { showAddRemove: "showAddRemove", showMove: "showMove", showSelect: "showSelect", addButtonText: "addButtonText", searchable: "searchable", allowEmpty: "allowEmpty" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c1$B, decls: 3, vars: 3, consts: [[3, "formField"], ["class", "sme-margin-bottom-xs sme-form-field-editor", 4, "ngIf"], [3, "alert"], [1, "sme-margin-bottom-xs", "sme-form-field-editor"], ["class", "sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs", "data-uta-id", "add-button", 3, "smeDisabled", "title", "click", 4, "ngIf"], [1, "sme-arrange-stack-h", "sme-margin-bottom-xs", "sme-form-field-width"], [1, "sme-screen-reader", 3, "id"], ["class", "sme-position-flex-auto", "role", "textbox", 4, "ngIf"], [1, "sme-layout-relative", "sme-position-flex-auto"], ["type", "combobox", 3, "utaId", "hideHeader", "valueComparator", "ngModel", "label", "searchable", "ngModelChange", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height", "data-uta-id", "promote-button", 3, "id", "title", "smeDisabled", "click", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height", "data-uta-id", "demote-button", 3, "id", "title", "smeDisabled", "click", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height", "data-uta-id", "remove-button", 3, "title", "smeDisabled", "click", 4, "ngIf"], ["role", "textbox", 1, "sme-position-flex-auto"], ["type", "combobox", 3, "utaId", "hideHeader", "valueComparator", "ngModel", "label", "searchable", "ngModelChange"], [4, "ngFor", "ngForOf"], [3, "utaId", "value", "label", "disabled", 4, "ngIf"], [3, "utaId", "value", "label", "disabled"], ["type", "button", "data-uta-id", "promote-button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", "sme-form-field-height", 3, "id", "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-up"], ["type", "button", "data-uta-id", "demote-button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", "sme-form-field-height", 3, "id", "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-down"], ["type", "button", "data-uta-id", "remove-button", 1, "sme-button-trigger", "sme-position-flex-none", "sme-button-auto-width", "sme-form-field-height", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-cancel", "sme-color-red"], ["type", "button", "data-uta-id", "add-button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-icon", "sme-icon-add", "sme-margin-bottom-xs", 3, "smeDisabled", "title", "click"], ["addButton", ""]], template: function OrderedListFormFieldComponent_Template(rf, ctx) {
23069
23370
  if (rf & 1) {
23070
23371
  i0.ɵɵelementStart(0, "sme-form-field-layout", 0);
23071
23372
  i0.ɵɵtemplate(1, OrderedListFormFieldComponent_div_1_Template, 3, 3, "div", 1);
@@ -23124,13 +23425,17 @@ OrderedListFormFieldComponent = __decorate([
23124
23425
  }
23125
23426
  ]
23126
23427
  }),
23127
- __metadata("design:paramtypes", [Injector])
23428
+ __metadata("design:paramtypes", [Injector,
23429
+ OrderedListFormFieldAccessibilityManagerService])
23128
23430
  ], OrderedListFormFieldComponent);
23129
23431
  (function () {
23130
23432
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OrderedListFormFieldComponent, [{
23131
23433
  type: Component,
23132
- args: [{ selector: 'sme-form-field[type="orderedlist"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div *ngIf=\"value\" class=\"sme-margin-bottom-xs sme-form-field-editor\">\r\n <div *ngFor=\"let item of value; trackBy: trackByIndex; let i = index\"\r\n class=\"sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width\"\r\n [attr.data-uta-id]=\"item ? item.toString() + '-row' : 'new-item-row'\">\r\n <label class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">\r\n {{strings.MsftSmeShell.Angular.Form.OrderedList.itemAriaDescription.format(i + 1, value.length)}}\r\n </label>\r\n <p *ngIf=\"!showSelect\" class=\"sme-position-flex-auto\" role=\"textbox\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{arrayGetValueDisplayString(value[i])}}</p>\r\n <div class=\"sme-layout-relative sme-position-flex-auto\" [class.sme-margin-right-xs]=\"showMove || showAddRemove\">\r\n <sme-form-field *ngIf=\"showSelect\" [utaId]=\"item ? item.toString() + '-combobox' : 'new-combobox'\"\r\n type=\"combobox\" [hideHeader]=\"true\" [valueComparator]=\"valueComparator\" [(ngModel)]=\"value[i]\"\r\n (ngModelChange)=\"triggerValueChange()\" (customValidate)=\"newItemCheck()\" [label]=\"label\"\r\n [searchable]=\"searchable\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <sme-option *ngIf=\"!option.isSelected || arrayValueComparator(option.value, value[i])\"\r\n [utaId]=\"option.utaId ? option.utaId : option.value\" [value]=\"option.value\" [label]=\"option.toString()\"\r\n [disabled]=\"option.disabled\">\r\n </sme-option>\r\n </ng-container>\r\n </sme-form-field>\r\n </div>\r\n <button *ngIf=\"showMove\" [id]=\"idBag.promote + i\" type=\"button\"\r\n class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.promoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.promoteButtonTooltip\" (click)=\"promoteItemAt(i)\"\r\n [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"promote-button\">\r\n <span class=\"sme-icon sme-icon-up\"></span>\r\n </button>\r\n <button *ngIf=\"showMove\" [id]=\"idBag.demote + i\" type=\"button\"\r\n class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.demoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.demoteButtonTooltip\" (click)=\"demoteItemAt(i)\"\r\n [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"demote-button\">\r\n <span class=\"sme-icon sme-icon-down\"></span>\r\n </button>\r\n <button *ngIf=\"showAddRemove\" type=\"button\"\r\n class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.removeButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.removeButtonTooltip\" (click)=\"removeItemAt(i)\"\r\n [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"remove-button\">\r\n <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n </button>\r\n </div>\r\n <button *ngIf=\"showAddRemove\" type=\"button\" [smeDisabled]=\"loadingOrDisabled || value.length === options.length\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.addButtonAriaLabel\" data-uta-id=\"add-button\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.addButtonTooltip\" (click)=\"addListItem()\">\r\n {{addButtonText}}\r\n </button>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }]
23133
- }], function () { return [{ type: i0.Injector }]; }, { showAddRemove: [{
23434
+ args: [{ selector: 'sme-form-field[type="orderedlist"]', template: "<sme-form-field-layout [formField]=\"this\">\r\n <div *ngIf=\"value\" class=\"sme-margin-bottom-xs sme-form-field-editor\">\r\n <div *ngFor=\"let item of value; trackBy: trackByIndex; let i = index\"\r\n class=\"sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width\"\r\n [attr.data-uta-id]=\"item ? item.toString() + '-row' : 'new-item-row'\">\r\n <label class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">\r\n {{ strings.MsftSmeShell.Angular.Form.OrderedList.itemAriaDescription.format(i + 1, value.length) }}\r\n </label>\r\n <p *ngIf=\"!showSelect\" class=\"sme-position-flex-auto\" role=\"textbox\" [attr.aria-label]=\"idBag.detailsSpan + i\">\r\n {{ arrayGetValueDisplayString(value[i]) }}</p>\r\n <div class=\"sme-layout-relative sme-position-flex-auto\" [class.sme-margin-right-xs]=\"showMove || showAddRemove\">\r\n <sme-form-field *ngIf=\"showSelect\" [utaId]=\"item ? item.toString() + '-combobox' : 'new-combobox'\"\r\n type=\"combobox\" [hideHeader]=\"true\" [valueComparator]=\"valueComparator\" [(ngModel)]=\"value[i]\"\r\n (ngModelChange)=\"triggerValueChange()\" [label]=\"label\"\r\n [searchable]=\"searchable\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <sme-option *ngIf=\"!option.isSelected || arrayValueComparator(option.value, value[i])\"\r\n [utaId]=\"option.utaId ? option.utaId : option.value\" [value]=\"option.value\" [label]=\"option.toString()\"\r\n [disabled]=\"option.disabled\">\r\n </sme-option>\r\n </ng-container>\r\n </sme-form-field>\r\n </div>\r\n <button *ngIf=\"showMove\" [id]=\"idBag.promote + i\" type=\"button\"\r\n class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.promoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.promoteButtonTooltip\" (click)=\"promoteItemAt(i)\"\r\n [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"promote-button\">\r\n <span class=\"sme-icon sme-icon-up\"></span>\r\n </button>\r\n <button *ngIf=\"showMove\" [id]=\"idBag.demote + i\" type=\"button\"\r\n class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.demoteButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.demoteButtonTooltip\" (click)=\"demoteItemAt(i)\"\r\n [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"demote-button\">\r\n <span class=\"sme-icon sme-icon-down\"></span>\r\n </button>\r\n <button *ngIf=\"showAddRemove\" type=\"button\"\r\n class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.removeButtonAriaLabel\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.removeButtonTooltip\" (click)=\"removeItemAt(i)\"\r\n [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"remove-button\">\r\n <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n </button>\r\n </div>\r\n <button #addButton *ngIf=\"showAddRemove\" type=\"button\" [smeDisabled]=\"loadingOrDisabled || value.length === options.length\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs\"\r\n [attr.aria-label]=\"addRemoveButtonArialLabel\" data-uta-id=\"add-button\"\r\n [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.addButtonTooltip\" (click)=\"addListItem()\">\r\n {{ addButtonText }}\r\n </button>\r\n </div>\r\n <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n" }]
23435
+ }], function () { return [{ type: i0.Injector }, { type: OrderedListFormFieldAccessibilityManagerService }]; }, { addButton: [{
23436
+ type: ViewChild,
23437
+ args: ['addButton']
23438
+ }], showAddRemove: [{
23134
23439
  type: Input
23135
23440
  }], showMove: [{
23136
23441
  type: Input
@@ -23413,7 +23718,7 @@ function RadioGroupFormFieldLoaderComponent_ng_container_2_sme_option_1_Template
23413
23718
  if (rf & 2) {
23414
23719
  const item_r2 = i0.ɵɵnextContext().$implicit;
23415
23720
  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));
23721
+ 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
23722
  }
23418
23723
  }
23419
23724
  function RadioGroupFormFieldLoaderComponent_ng_container_2_sme_option_2_ng_template_1_Template(rf, ctx) {
@@ -23438,7 +23743,7 @@ function RadioGroupFormFieldLoaderComponent_ng_container_2_sme_option_2_Template
23438
23743
  if (rf & 2) {
23439
23744
  const item_r2 = i0.ɵɵnextContext().$implicit;
23440
23745
  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));
23746
+ 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
23747
  }
23443
23748
  }
23444
23749
  function RadioGroupFormFieldLoaderComponent_ng_container_2_Template(rf, ctx) {
@@ -23763,10 +24068,10 @@ class RadioGroupFormFieldLoaderComponent extends ObjectPropertySchemaFieldLoader
23763
24068
  [disabled]="!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))"
23764
24069
  (customValidate)="resolveFunction(propertySchema.customValidation)($event)">
23765
24070
  <ng-container *ngFor="let item of options">
23766
- <sme-option *ngIf="!getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()==item.value"
24071
+ <sme-option *ngIf="!getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()===item.value"
23767
24072
  [value]="item.value" [label]="localize(item.label)" [description]="localize(item.description)">
23768
24073
  </sme-option>
23769
- <sme-option *ngIf="getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()==item.value"
24074
+ <sme-option *ngIf="getObjectOptionByMainOption(item.value)" [disabled]="shouldDisable()===item.value"
23770
24075
  [value]="item.value" [label]="localize(item.label)" [description]="localize(item.description)">
23771
24076
  <ng-template>
23772
24077
  <sme-schema-field-host [propertySchema]="getObjectOptionByMainOption(item.value)"
@@ -25806,7 +26111,13 @@ class SmeFormsModule {
25806
26111
  }
25807
26112
  /** @nocollapse */ SmeFormsModule.ɵfac = function SmeFormsModule_Factory(t) { return new (t || SmeFormsModule)(); };
25808
26113
  /** @nocollapse */ SmeFormsModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: SmeFormsModule });
25809
- /** @nocollapse */ SmeFormsModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ imports: [AccordionModule,
26114
+ /** @nocollapse */ SmeFormsModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [
26115
+ // TODO: each form field should have its own accessibility manager service
26116
+ ArrayFormFieldAccessibilityManagerService,
26117
+ ListFormFieldAccessibilityManagerService,
26118
+ OrderedListFormFieldAccessibilityManagerService,
26119
+ FormFieldAccessibilityManagerBaseService
26120
+ ], imports: [AccordionModule,
25810
26121
  ActionsModule,
25811
26122
  AutofocusModule,
25812
26123
  CommonModule,
@@ -25979,6 +26290,13 @@ class SmeFormsModule {
25979
26290
  TileDirectivesModule,
25980
26291
  TooltipModule,
25981
26292
  TelemetryDirectiveModule
26293
+ ],
26294
+ providers: [
26295
+ // TODO: each form field should have its own accessibility manager service
26296
+ ArrayFormFieldAccessibilityManagerService,
26297
+ ListFormFieldAccessibilityManagerService,
26298
+ OrderedListFormFieldAccessibilityManagerService,
26299
+ FormFieldAccessibilityManagerBaseService
25982
26300
  ]
25983
26301
  }]
25984
26302
  }], null, null);
@@ -26766,12 +27084,36 @@ class DataTableColumnComponent {
26766
27084
  * if we don't initialize from child components.
26767
27085
  */
26768
27086
  class SpacerBaseDirective extends CoreBaseComponent {
27087
+ constructor() {
27088
+ super(...arguments);
27089
+ /**
27090
+ * The internal value for showLeftMargin.
27091
+ */
27092
+ this.showLeftMarginInternal = true;
27093
+ }
26769
27094
  /**
26770
27095
  * The log source name for the component.
26771
27096
  */
26772
27097
  get logSourceName() {
26773
27098
  return 'SpacerBaseDirective';
26774
27099
  }
27100
+ /**
27101
+ * Setter showLeftMargin.
27102
+ * The input parameter for determining the component to render left margin.
27103
+ * Custom implementation on control is required.
27104
+ * Migrated from the data-table control, the data-table control will still accept this input but actual implementation will be noLeftMargin.
27105
+ * @deprecated since '05/01/23' Use noLeftMargin instead.
27106
+ */
27107
+ set showLeftMargin(input) {
27108
+ this.showLeftMarginInternal = !!input;
27109
+ this.noLeftMargin = !input;
27110
+ }
27111
+ /**
27112
+ * Getter showLeftMargin.
27113
+ */
27114
+ get showLeftMargin() {
27115
+ return !!this.showLeftMarginInternal;
27116
+ }
26775
27117
  }
26776
27118
  /** @nocollapse */ SpacerBaseDirective.ɵfac = /** @pureOrBreakMyCode */ function () { let ɵSpacerBaseDirective_BaseFactory; return function SpacerBaseDirective_Factory(t) { return (ɵSpacerBaseDirective_BaseFactory || (ɵSpacerBaseDirective_BaseFactory = i0.ɵɵgetInheritedFactory(SpacerBaseDirective)))(t || SpacerBaseDirective); }; }();
26777
27119
  /** @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 +33265,7 @@ DataTableComponent.pxConverter = new PxConverter();
32923
33265
  i0.ɵɵelement(28, "div", 27, 28);
32924
33266
  }
32925
33267
  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);
33268
+ 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
33269
  i0.ɵɵadvance(5);
32928
33270
  i0.ɵɵattribute("role", ctx.selectionMode === "multiple" ? "columnheader" : "presentation");
32929
33271
  i0.ɵɵadvance(1);
@@ -32931,7 +33273,7 @@ DataTableComponent.pxConverter = new PxConverter();
32931
33273
  i0.ɵɵadvance(1);
32932
33274
  i0.ɵɵproperty("ngForOf", ctx.actualColumns);
32933
33275
  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);
33276
+ 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
33277
  i0.ɵɵadvance(2);
32936
33278
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(38, _c18, ctx.scrollable, ctx.shouldScroll));
32937
33279
  i0.ɵɵadvance(2);
@@ -33009,7 +33351,7 @@ __decorate([
33009
33351
  (function () {
33010
33352
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataTableComponent, [{
33011
33353
  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" }]
33354
+ 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
33355
  }], function () { return [{ type: i0.Injector }]; }, { resizerIndicator: [{
33014
33356
  type: ViewChild,
33015
33357
  args: ['resizerIndicator']
@@ -33241,7 +33583,7 @@ class TreeTableComponent extends DataTableComponent {
33241
33583
  i0.ɵɵelement(28, "div", 27, 28);
33242
33584
  }
33243
33585
  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);
33586
+ 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
33587
  i0.ɵɵadvance(5);
33246
33588
  i0.ɵɵattribute("role", ctx.selectionMode === "multiple" ? "columnheader" : "presentation");
33247
33589
  i0.ɵɵadvance(1);
@@ -33249,7 +33591,7 @@ class TreeTableComponent extends DataTableComponent {
33249
33591
  i0.ɵɵadvance(1);
33250
33592
  i0.ɵɵproperty("ngForOf", ctx.actualColumns);
33251
33593
  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);
33594
+ 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
33595
  i0.ɵɵadvance(2);
33254
33596
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(38, _c18, ctx.scrollable, ctx.shouldScroll));
33255
33597
  i0.ɵɵadvance(2);
@@ -33273,7 +33615,7 @@ class TreeTableComponent extends DataTableComponent {
33273
33615
  (function () {
33274
33616
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TreeTableComponent, [{
33275
33617
  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" }]
33618
+ 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
33619
  }], function () { return [{ type: i0.Injector }]; }, null);
33278
33620
  })();
33279
33621
 
@@ -35526,7 +35868,7 @@ class SplitViewComponent extends CoreBaseComponent {
35526
35868
  * The Angular ngOnDestroy function.
35527
35869
  */
35528
35870
  ngOnDestroy() {
35529
- this.subscriptions.forEach(sub => sub.unsubscribe());
35871
+ this.subscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
35530
35872
  }
35531
35873
  /**
35532
35874
  * The method called after content is initialized.
@@ -37669,7 +38011,7 @@ class AlertBarComponent extends CoreBaseComponent {
37669
38011
  ngOnDestroy() {
37670
38012
  this.alertBarService.unregister(this.id);
37671
38013
  if (this.dialogSubscriptions) {
37672
- this.dialogSubscriptions.forEach(sub => sub.unsubscribe());
38014
+ this.dialogSubscriptions.forEach(sub => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
37673
38015
  }
37674
38016
  }
37675
38017
  /**
@@ -41374,11 +41716,9 @@ class BaseDialogComponent {
41374
41716
  * The method to run when the component is destroyed.
41375
41717
  */
41376
41718
  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();
41719
+ var _a, _b;
41720
+ (_a = this.dialogService) === null || _a === void 0 ? void 0 : _a.unregister(this.id);
41721
+ (_b = this.closeSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
41382
41722
  }
41383
41723
  /**
41384
41724
  * handler for when a close is requested
@@ -41872,7 +42212,8 @@ class ConfirmationListDialogComponent extends BaseDialogComponent {
41872
42212
  return result;
41873
42213
  }
41874
42214
  hide(result) {
41875
- this.dataSourceSubscription.unsubscribe();
42215
+ var _a;
42216
+ (_a = this.dataSourceSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
41876
42217
  super.hide(result);
41877
42218
  }
41878
42219
  onConfirm() {
@@ -45700,7 +46041,7 @@ function PageAlertBarComponent_a_5_Template(rf, ctx) {
45700
46041
  const ctx_r2 = i0.ɵɵnextContext();
45701
46042
  i0.ɵɵproperty("title", !!ctx_r2.alert.detailsCaption ? ctx_r2.alert.detailsCaption : ctx_r2.defaultDetailsLabel);
45702
46043
  i0.ɵɵadvance(1);
45703
- i0.ɵɵtextInterpolate1(" ", !!ctx_r2.alert.detailsLabel ? ctx_r2.alert.detailsLabel : ctx_r2.defaultDetailsLabel, "\n");
46044
+ i0.ɵɵtextInterpolate1(" ", !!ctx_r2.alert.detailsLabel ? ctx_r2.alert.detailsLabel : ctx_r2.defaultDetailsLabel, " ");
45704
46045
  }
45705
46046
  }
45706
46047
  /**
@@ -45855,8 +46196,8 @@ class PageAlertBarComponent extends SpacerBaseDirective {
45855
46196
  i0.ɵɵelementStart(2, "span");
45856
46197
  i0.ɵɵtext(3);
45857
46198
  i0.ɵɵtemplate(4, PageAlertBarComponent_a_4_Template, 2, 6, "a", 1);
45858
- i0.ɵɵelementEnd();
45859
46199
  i0.ɵɵtemplate(5, PageAlertBarComponent_a_5_Template, 2, 2, "a", 2);
46200
+ i0.ɵɵelementEnd();
45860
46201
  }
45861
46202
  if (rf & 2) {
45862
46203
  i0.ɵɵclassMapInterpolate1("sme-margin-right-xs sme-position-flex-none ", ctx.iconClass, "");
@@ -45874,7 +46215,7 @@ class PageAlertBarComponent extends SpacerBaseDirective {
45874
46215
  (function () {
45875
46216
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PageAlertBarComponent, [{
45876
46217
  type: Component,
45877
- args: [{ selector: 'sme-page-alert-bar', template: "<span class=\"sme-margin-right-xs sme-position-flex-none {{iconClass}}\" [class.sme-icon]=\"!!iconClass\">\r\n <sme-status-icon *ngIf=\"statusIcon !== null\" class=\"sme-layout-inline-block\" [status]=\"statusIcon\" size=\"16px\">\r\n </sme-status-icon>\r\n</span>\r\n\r\n<span>\r\n {{ alert.message }}\r\n <a *ngIf=\"alert.externalLink\" class=\"sme-link sme-focus-zone sme-icon-after\" [class]=\"alert?.externalLink?.iconClass\"\r\n [class.sme-icon]=\"!!alert?.externalLink?.iconClass\" href=\"{{alert.externalLink.url}}\"\r\n target=\"_blank\">{{ alert.externalLink.title }}</a>\r\n</span>\r\n\r\n<a *ngIf=\"!!alert.detailsCommand\" class=\"sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone\" tabindex=\"0\" role=\"link\"\r\n [title]=\"!!alert.detailsCaption ? alert.detailsCaption : defaultDetailsLabel\" (click)=\"alert.detailsCommand($event)\">\r\n {{ !!alert.detailsLabel ? alert.detailsLabel : defaultDetailsLabel }}\r\n</a>\r\n" }]
46218
+ args: [{ selector: 'sme-page-alert-bar', template: "<span class=\"sme-margin-right-xs sme-position-flex-none {{iconClass}}\" [class.sme-icon]=\"!!iconClass\">\r\n <sme-status-icon *ngIf=\"statusIcon !== null\" class=\"sme-layout-inline-block\" [status]=\"statusIcon\" size=\"16px\">\r\n </sme-status-icon>\r\n</span>\r\n\r\n<span>\r\n {{ alert.message }}\r\n <a *ngIf=\"alert.externalLink\" class=\"sme-link sme-focus-zone sme-icon-after\" [class]=\"alert?.externalLink?.iconClass\"\r\n [class.sme-icon]=\"!!alert?.externalLink?.iconClass\" href=\"{{alert.externalLink.url}}\" target=\"_blank\">{{\r\n alert.externalLink.title }}</a>\r\n <a *ngIf=\"!!alert.detailsCommand\" class=\"sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone\"\r\n tabindex=\"0\" role=\"link\" [title]=\"!!alert.detailsCaption ? alert.detailsCaption : defaultDetailsLabel\"\r\n (click)=\"alert.detailsCommand($event)\">\r\n {{ !!alert.detailsLabel ? alert.detailsLabel : defaultDetailsLabel }}\r\n </a>\r\n</span>\r\n" }]
45878
46219
  }], function () { return [{ type: i0.Injector }]; }, { isBackgroundTransparent: [{
45879
46220
  type: Input
45880
46221
  }], isCritical: [{
@@ -46268,6 +46609,9 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) {
46268
46609
  i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_10_span_2_Template, 2, 1, "span", 25);
46269
46610
  i0.ɵɵelementStart(3, "a", 28);
46270
46611
  i0.ɵɵtext(4);
46612
+ i0.ɵɵelementEnd();
46613
+ i0.ɵɵelementStart(5, "span", 29);
46614
+ i0.ɵɵtext(6);
46271
46615
  i0.ɵɵelementEnd()();
46272
46616
  }
46273
46617
  if (rf & 2) {
@@ -46276,14 +46620,18 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) {
46276
46620
  const ctx_r9 = i0.ɵɵnextContext();
46277
46621
  const _r12 = i0.ɵɵreference(15);
46278
46622
  i0.ɵɵadvance(1);
46279
- i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(7, _c4$2, item_r35, i_r36));
46623
+ i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4$2, item_r35, i_r36));
46280
46624
  i0.ɵɵadvance(1);
46281
46625
  i0.ɵɵproperty("ngIf", item_r35.prefixString);
46282
46626
  i0.ɵɵadvance(1);
46283
46627
  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);
46628
+ i0.ɵɵattribute("aria-describedby", ctx_r9.idBag.detailsSpan + i_r36);
46285
46629
  i0.ɵɵadvance(1);
46286
46630
  i0.ɵɵtextInterpolate(item_r35.value);
46631
+ i0.ɵɵadvance(1);
46632
+ i0.ɵɵproperty("id", ctx_r9.idBag.detailsSpan + i_r36);
46633
+ i0.ɵɵadvance(1);
46634
+ i0.ɵɵtextInterpolate(ctx_r9.getInternalLinkDescription(item_r35));
46287
46635
  }
46288
46636
  }
46289
46637
  function PropertyGridComponent_ng_template_12_ng_container_1_Template(rf, ctx) {
@@ -46308,8 +46656,11 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) {
46308
46656
  i0.ɵɵelementStart(0, "p");
46309
46657
  i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_12_ng_container_1_Template, 1, 0, "ng-container", 19);
46310
46658
  i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_12_span_2_Template, 2, 1, "span", 25);
46311
- i0.ɵɵelementStart(3, "a", 29);
46659
+ i0.ɵɵelementStart(3, "a", 30);
46312
46660
  i0.ɵɵtext(4);
46661
+ i0.ɵɵelementEnd();
46662
+ i0.ɵɵelementStart(5, "span", 29);
46663
+ i0.ɵɵtext(6);
46313
46664
  i0.ɵɵelementEnd()();
46314
46665
  }
46315
46666
  if (rf & 2) {
@@ -46318,14 +46669,18 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) {
46318
46669
  const ctx_r11 = i0.ɵɵnextContext();
46319
46670
  const _r12 = i0.ɵɵreference(15);
46320
46671
  i0.ɵɵadvance(1);
46321
- i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(7, _c4$2, item_r40, i_r41));
46672
+ i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4$2, item_r40, i_r41));
46322
46673
  i0.ɵɵadvance(1);
46323
46674
  i0.ɵɵproperty("ngIf", item_r40.prefixString);
46324
46675
  i0.ɵɵadvance(1);
46325
46676
  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);
46677
+ i0.ɵɵattribute("aria-describedby", ctx_r11.idBag.detailsSpan + i_r41);
46327
46678
  i0.ɵɵadvance(1);
46328
46679
  i0.ɵɵtextInterpolate(item_r40.value);
46680
+ i0.ɵɵadvance(1);
46681
+ i0.ɵɵproperty("id", ctx_r11.idBag.detailsSpan + i_r41);
46682
+ i0.ɵɵadvance(1);
46683
+ i0.ɵɵtextInterpolate(ctx_r11.getExternalLinkDescription(item_r40));
46329
46684
  }
46330
46685
  }
46331
46686
  function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) {
@@ -46339,7 +46694,7 @@ function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) {
46339
46694
  }
46340
46695
  function PropertyGridComponent_ng_template_14_sme_status_icon_1_Template(rf, ctx) {
46341
46696
  if (rf & 1) {
46342
- i0.ɵɵelement(0, "sme-status-icon", 32);
46697
+ i0.ɵɵelement(0, "sme-status-icon", 33);
46343
46698
  }
46344
46699
  if (rf & 2) {
46345
46700
  const item_r45 = i0.ɵɵnextContext().$implicit;
@@ -46348,8 +46703,8 @@ function PropertyGridComponent_ng_template_14_sme_status_icon_1_Template(rf, ctx
46348
46703
  }
46349
46704
  function PropertyGridComponent_ng_template_14_Template(rf, ctx) {
46350
46705
  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);
46706
+ i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span", 31);
46707
+ i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 32);
46353
46708
  }
46354
46709
  if (rf & 2) {
46355
46710
  const item_r45 = ctx.$implicit;
@@ -46487,6 +46842,12 @@ class PropertyGridComponent extends CoreBaseComponent {
46487
46842
  item.loading = false;
46488
46843
  }
46489
46844
  }
46845
+ getInternalLinkDescription(item) {
46846
+ return this.strings.MsftSmeShell.Angular.PropertyGrid.InternalLink.label.format(item.link);
46847
+ }
46848
+ getExternalLinkDescription(item) {
46849
+ return this.strings.MsftSmeShell.Angular.PropertyGrid.ExternalLink.label.format(item.link);
46850
+ }
46490
46851
  /**
46491
46852
  * Creates the idBag used by this component to store unique element ids.
46492
46853
  * id values will be assigned be the @see BaseComponent super class.
@@ -46534,7 +46895,7 @@ class PropertyGridComponent extends CoreBaseComponent {
46534
46895
  }
46535
46896
  }, inputs: { orientation: "orientation" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
46536
46897
  { 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) {
46898
+ ]), 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
46899
  if (rf & 1) {
46539
46900
  i0.ɵɵelementStart(0, "sme-layout", 0, 1);
46540
46901
  i0.ɵɵelement(2, "sme-layout-definition", 2);
@@ -46544,8 +46905,8 @@ class PropertyGridComponent extends CoreBaseComponent {
46544
46905
  i0.ɵɵelementEnd();
46545
46906
  i0.ɵɵtemplate(6, PropertyGridComponent_ng_template_6_Template, 2, 2, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
46546
46907
  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);
46908
+ i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template, 7, 11, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
46909
+ i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template, 7, 11, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
46549
46910
  i0.ɵɵtemplate(14, PropertyGridComponent_ng_template_14_Template, 2, 2, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
46550
46911
  }
46551
46912
  if (rf & 2) {
@@ -46565,7 +46926,7 @@ class PropertyGridComponent extends CoreBaseComponent {
46565
46926
  type: Component,
46566
46927
  args: [{ selector: 'sme-property-grid', providers: [
46567
46928
  { 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" }]
46929
+ ], 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
46930
  }], function () {
46570
46931
  return [{ type: i0.Injector }, { type: undefined, decorators: [{
46571
46932
  type: SkipSelf
@@ -50824,9 +51185,8 @@ class SettingsFormService {
50824
51185
  return fallBackRoute;
50825
51186
  }
50826
51187
  ngOnDestroy() {
50827
- if (this.routerSubscription) {
50828
- this.routerSubscription.unsubscribe();
50829
- }
51188
+ var _a;
51189
+ (_a = this.routerSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
50830
51190
  }
50831
51191
  }
50832
51192
  /** @nocollapse */ SettingsFormService.ɵfac = function SettingsFormService_Factory(t) { return new (t || SettingsFormService)(i0.ɵɵinject(i1.Router)); };
@@ -51521,9 +51881,9 @@ function CommonSettingsComponent_header_2_Template(rf, ctx) {
51521
51881
  i0.ɵɵtextInterpolate(ctx_r0.settingsTitle);
51522
51882
  }
51523
51883
  }
51524
- function CommonSettingsComponent_li_10_h4_1_Template(rf, ctx) {
51884
+ function CommonSettingsComponent_li_10_div_1_Template(rf, ctx) {
51525
51885
  if (rf & 1) {
51526
- i0.ɵɵelementStart(0, "h4", 17);
51886
+ i0.ɵɵelementStart(0, "div", 17);
51527
51887
  i0.ɵɵtext(1);
51528
51888
  i0.ɵɵelementEnd();
51529
51889
  }
@@ -51603,7 +51963,7 @@ function CommonSettingsComponent_li_10_a_2_Template(rf, ctx) {
51603
51963
  function CommonSettingsComponent_li_10_Template(rf, ctx) {
51604
51964
  if (rf & 1) {
51605
51965
  i0.ɵɵelementStart(0, "li", 14);
51606
- i0.ɵɵtemplate(1, CommonSettingsComponent_li_10_h4_1_Template, 2, 3, "h4", 15);
51966
+ i0.ɵɵtemplate(1, CommonSettingsComponent_li_10_div_1_Template, 2, 3, "div", 15);
51607
51967
  i0.ɵɵtemplate(2, CommonSettingsComponent_li_10_a_2_Template, 8, 21, "a", 16);
51608
51968
  i0.ɵɵelementEnd();
51609
51969
  }
@@ -52075,7 +52435,7 @@ __decorate([
52075
52435
  (function () {
52076
52436
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommonSettingsComponent, [{
52077
52437
  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" }]
52438
+ 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
52439
  }], function () {
52080
52440
  return [{ type: i0.Injector }, { type: i1.Router }, { type: SettingsFormService }, { type: i0.IterableDiffers }, { type: AppContextService }, { type: RpcShellService }, { type: undefined, decorators: [{
52081
52441
  type: Optional
@@ -52230,10 +52590,9 @@ class SettingsFormDirective {
52230
52590
  this.oldForm = null;
52231
52591
  }
52232
52592
  ngOnChanges(changes) {
52593
+ var _a;
52233
52594
  if (this.smeUpdateDataInComponent && this.smeSettingsForm) {
52234
- if (this.updateDataInComponentSubscription) {
52235
- this.updateDataInComponentSubscription.unsubscribe();
52236
- }
52595
+ (_a = this.updateDataInComponentSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
52237
52596
  this.updateDataInComponentSubscription = this.formsService.updateFormValue().subscribe((data) => {
52238
52597
  this.smeSettingsFormValueUpdate.emit(data.formGroupNewData);
52239
52598
  });
@@ -52246,9 +52605,8 @@ class SettingsFormDirective {
52246
52605
  }
52247
52606
  }
52248
52607
  ngOnDestroy() {
52249
- if (this.updateDataInComponentSubscription) {
52250
- this.updateDataInComponentSubscription.unsubscribe();
52251
- }
52608
+ var _a;
52609
+ (_a = this.updateDataInComponentSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
52252
52610
  }
52253
52611
  }
52254
52612
  /** @nocollapse */ SettingsFormDirective.ɵfac = function SettingsFormDirective_Factory(t) { return new (t || SettingsFormDirective)(i0.ɵɵdirectiveInject(SettingsFormService)); };
@@ -53042,7 +53400,7 @@ class WizardNavigationButtonComponent extends CoreBaseComponent {
53042
53400
  }
53043
53401
  }
53044
53402
  /** @nocollapse */ WizardNavigationButtonComponent.ɵfac = function WizardNavigationButtonComponent_Factory(t) { return new (t || WizardNavigationButtonComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
53045
- /** @nocollapse */ WizardNavigationButtonComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: WizardNavigationButtonComponent, selectors: [["sme-wizard-navigation-button"]], inputs: { showIcons: "showIcons", leftIcon: "leftIcon", rightIcon: "rightIcon", buttonAutoWidth: "buttonAutoWidth", buttons: "buttons" }, outputs: { startButtonClicked: "startButtonClicked", endButtonClicked: "endButtonClicked" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 16, consts: [[1, "sme-arrange-stack-h", "sme-position-stretch-h"], [1, "sme-padding-right-xs"], ["type", "button", "aria-live", "polite", "tabIndex", "0", 1, "sme-arrange-stack-h", 3, "disabled", "click"], ["class", "sme-icon", 3, "class", 4, "ngIf"], [1, "sme-position-flex-auto", "sme-position-flex-grow-start", "sme-arrange-ellipsis", "sme-action-button-text-span"], [1, "sme-icon"]], template: function WizardNavigationButtonComponent_Template(rf, ctx) {
53403
+ /** @nocollapse */ WizardNavigationButtonComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: WizardNavigationButtonComponent, selectors: [["sme-wizard-navigation-button"]], inputs: { showIcons: "showIcons", leftIcon: "leftIcon", rightIcon: "rightIcon", buttonAutoWidth: "buttonAutoWidth", buttons: "buttons" }, outputs: { startButtonClicked: "startButtonClicked", endButtonClicked: "endButtonClicked" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 16, consts: [[1, "sme-arrange-stack-h", "sme-position-stretch-h"], [1, "sme-padding-right-xs"], ["type", "button", "aria-live", "polite", "tabindex", "0", 1, "sme-arrange-stack-h", 3, "disabled", "click"], ["class", "sme-icon", 3, "class", 4, "ngIf"], [1, "sme-position-flex-auto", "sme-position-flex-grow-start", "sme-arrange-ellipsis", "sme-action-button-text-span"], [1, "sme-icon"]], template: function WizardNavigationButtonComponent_Template(rf, ctx) {
53046
53404
  if (rf & 1) {
53047
53405
  i0.ɵɵelementStart(0, "div", 0)(1, "span", 1)(2, "button", 2);
53048
53406
  i0.ɵɵlistener("click", function WizardNavigationButtonComponent_Template_button_click_2_listener() { return ctx.onStartButtonClick(); });
@@ -53081,7 +53439,7 @@ class WizardNavigationButtonComponent extends CoreBaseComponent {
53081
53439
  (function () {
53082
53440
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WizardNavigationButtonComponent, [{
53083
53441
  type: Component,
53084
- args: [{ selector: 'sme-wizard-navigation-button', template: "<div class=\"sme-arrange-stack-h sme-position-stretch-h\" [class.sme-layout-hidden]=\"!render\">\r\n <span class=\"sme-padding-right-xs\">\r\n <button type=\"button\" aria-live=\"polite\" class=\"sme-arrange-stack-h\" tabIndex=\"0\"\r\n [class]=\"buttons[currentStartButtonIndex]?.class\"\r\n [class.sme-button-auto-width]=\"buttonAutoWidth\"\r\n [disabled]=\"checkStartDisabled(currentStartButtonIndex)\"\r\n (click)=\"onStartButtonClick()\">\r\n <span *ngIf=\"showIcons\" class=\"sme-icon\" [class]=\"leftIcon\"></span>\r\n <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n {{ buttons[currentStartButtonIndex] ? buttons[currentStartButtonIndex].label : strings.MsftSmeShell.Angular.Wizard.Lite.Actions.previous }}</span>\r\n </button>\r\n </span>\r\n <button type=\"button\" aria-live=\"polite\" class=\"sme-arrange-stack-h\" tabIndex=\"0\"\r\n [class]=\"buttons[currentStartButtonIndex]?.class\"\r\n [class.sme-button-auto-width]=\"buttonAutoWidth\"\r\n [disabled]=\"checkEndDisabled(currentStartButtonIndex)\"\r\n (click)=\"onEndButtonClick()\">\r\n <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n {{ buttons[currentStartButtonIndex + 2] ? buttons[currentStartButtonIndex + 2].label : strings.MsftSmeShell.Angular.Wizard.Lite.Actions.next }}</span>\r\n <span *ngIf=\"showIcons\" class=\"sme-icon\" [class]=\"rightIcon\"></span>\r\n </button>\r\n</div>\r\n" }]
53442
+ args: [{ selector: 'sme-wizard-navigation-button', template: "<div class=\"sme-arrange-stack-h sme-position-stretch-h\" [class.sme-layout-hidden]=\"!render\">\r\n <span class=\"sme-padding-right-xs\">\r\n <button type=\"button\" aria-live=\"polite\" class=\"sme-arrange-stack-h\" tabindex=\"0\"\r\n [class]=\"buttons[currentStartButtonIndex]?.class\"\r\n [class.sme-button-auto-width]=\"buttonAutoWidth\"\r\n [disabled]=\"checkStartDisabled(currentStartButtonIndex)\"\r\n (click)=\"onStartButtonClick()\">\r\n <span *ngIf=\"showIcons\" class=\"sme-icon\" [class]=\"leftIcon\"></span>\r\n <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n {{ buttons[currentStartButtonIndex] ? buttons[currentStartButtonIndex].label : strings.MsftSmeShell.Angular.Wizard.Lite.Actions.previous }}</span>\r\n </button>\r\n </span>\r\n <button type=\"button\" aria-live=\"polite\" class=\"sme-arrange-stack-h\" tabindex=\"0\"\r\n [class]=\"buttons[currentStartButtonIndex]?.class\"\r\n [class.sme-button-auto-width]=\"buttonAutoWidth\"\r\n [disabled]=\"checkEndDisabled(currentStartButtonIndex)\"\r\n (click)=\"onEndButtonClick()\">\r\n <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n {{ buttons[currentStartButtonIndex + 2] ? buttons[currentStartButtonIndex + 2].label : strings.MsftSmeShell.Angular.Wizard.Lite.Actions.next }}</span>\r\n <span *ngIf=\"showIcons\" class=\"sme-icon\" [class]=\"rightIcon\"></span>\r\n </button>\r\n</div>\r\n" }]
53085
53443
  }], function () { return [{ type: i0.Injector }]; }, { showIcons: [{
53086
53444
  type: Input
53087
53445
  }], leftIcon: [{
@@ -56000,9 +56358,8 @@ class UserAliveService extends RpcObservableAliveClient {
56000
56358
  * Stop monitoring the user activity.
56001
56359
  */
56002
56360
  stop() {
56003
- if (this.subscription) {
56004
- this.subscription.unsubscribe();
56005
- }
56361
+ var _a;
56362
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56006
56363
  }
56007
56364
  }
56008
56365
  /** @nocollapse */ UserAliveService.ɵfac = function UserAliveService_Factory(t) { return new (t || UserAliveService)(i0.ɵɵinject(i1.Router), i0.ɵɵinject(RpcService)); };
@@ -56053,15 +56410,14 @@ class NavigationService {
56053
56410
  * @param options The options to override the default behavior
56054
56411
  */
56055
56412
  initialize(options) {
56413
+ var _a;
56056
56414
  PerformanceTracker.navigationInitialized();
56057
56415
  this.active = true;
56058
56416
  this.options = options ? options : { idleRoute: ['idle'] };
56059
56417
  this.idleUrl = `/${this.options.idleRoute[0]}`;
56060
56418
  // navigate to idle.
56061
56419
  this.router.navigate(this.options.idleRoute, this.defaultNavigationOptions);
56062
- if (this.subscription) {
56063
- this.subscription.unsubscribe();
56064
- }
56420
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56065
56421
  let startTimestamp = null;
56066
56422
  this.subscription = this.router.events
56067
56423
  .pipe(tap(event => {
@@ -56099,11 +56455,9 @@ class NavigationService {
56099
56455
  * Shutdown the navigation communication from/to the shell.
56100
56456
  */
56101
56457
  shutdown() {
56458
+ var _a;
56102
56459
  this.active = false;
56103
- if (this.subscription) {
56104
- this.subscription.unsubscribe();
56105
- this.subscription = null;
56106
- }
56460
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56107
56461
  }
56108
56462
  /**
56109
56463
  * Map dialog service and dialog id so that correct dialog service instance can be found
@@ -56880,6 +57234,78 @@ function getFullRouteParams(route) {
56880
57234
  return params;
56881
57235
  }
56882
57236
 
57237
+ /**
57238
+ * Base class for snap in specific extension listeners
57239
+ */
57240
+ class SnapInListener extends ExtensionClientListener {
57241
+ /**
57242
+ * Initializes a new instance of the SnapInListener class
57243
+ * @param rpc The rpc context
57244
+ */
57245
+ constructor(rpc, extensionBroker, hostElement) {
57246
+ super(rpc);
57247
+ this.extensionBroker = extensionBroker;
57248
+ this.hostElement = hostElement;
57249
+ }
57250
+ ngAfterViewInit() {
57251
+ if (this.hostElement) {
57252
+ document.body.setAttribute('sme-snap-in', '');
57253
+ document.addEventListener('wheel', event => {
57254
+ // do not listen to wheel if it is for internal scroll
57255
+ // default behavior may try to scroll parent first THEN internal scroll,
57256
+ // see if we can update this to match that behavior
57257
+ if (!Dom.getOverflowAncestor(this.hostElement.nativeElement)) {
57258
+ this.emitOutput({ deltaY: event.deltaY });
57259
+ }
57260
+ });
57261
+ this.hostElement.nativeElement.addEventListener('focusin', (event) => {
57262
+ // check if we actually need to do these
57263
+ event.preventDefault();
57264
+ event.stopPropagation();
57265
+ // send info about the current active element
57266
+ if (document.activeElement) {
57267
+ const focusedElementRect = document.activeElement.getBoundingClientRect();
57268
+ this.emitOutput({ focusedElementRect });
57269
+ }
57270
+ });
57271
+ }
57272
+ }
57273
+ /**
57274
+ * Occurs when any method is called on this worker from another extension
57275
+ */
57276
+ onCall(method, version, ...args) {
57277
+ if (method === 'input' && args && args.length > 0 && args[0].length > 0) {
57278
+ this.onInputReceived(args[0][0]);
57279
+ return of(null);
57280
+ }
57281
+ return super.throwMethodNotFound(method, version);
57282
+ }
57283
+ /**
57284
+ * Occurs when an input is received on this snap-in
57285
+ * @param input the input object.
57286
+ */
57287
+ onInputReceived(input) {
57288
+ this.input = input;
57289
+ }
57290
+ /**
57291
+ * Emits an output to the consumer of this snap-in.
57292
+ * @param output the output object.
57293
+ */
57294
+ emitOutput(output) {
57295
+ // TODO: should there be a separate output type for page events?
57296
+ // abstract output from consumer by mapping to null.
57297
+ return this.extensionBroker.emitResult(this.instanceId, 'output', output)
57298
+ .pipe(map(() => null));
57299
+ }
57300
+ }
57301
+ /** @nocollapse */ SnapInListener.ɵfac = function SnapInListener_Factory(t) { return new (t || SnapInListener)(i0.ɵɵdirectiveInject(i1$3.Rpc), i0.ɵɵdirectiveInject(i2.ExtensionBroker), i0.ɵɵdirectiveInject(i0.ElementRef)); };
57302
+ /** @nocollapse */ SnapInListener.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: SnapInListener, features: [i0.ɵɵInheritDefinitionFeature] });
57303
+ (function () {
57304
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SnapInListener, [{
57305
+ type: Directive
57306
+ }], function () { return [{ type: i1$3.Rpc }, { type: i2.ExtensionBroker }, { type: i0.ElementRef }]; }, null);
57307
+ })();
57308
+
56883
57309
  /// <reference path='../../dist/packages/core/index.d.ts'/>
56884
57310
  /// <reference path='../../dist/packages/core/special.d.ts'/>
56885
57311
  /// <reference path='../../dist/packages/core/polyfills.d.ts'/>
@@ -56891,5 +57317,5 @@ function getFullRouteParams(route) {
56891
57317
  * Generated bundle index. Do not edit.
56892
57318
  */
56893
57319
 
56894
- export { AccordionComponent, AccordionModule, AccordionPanelComponent, ActionBarComponent, ActionBarDirective, ActionButton, ActionButtonAsync, ActionButtonAsyncComponent, ActionButtonComponent, ActionButtonRendererComponent, ActionContainerComponent, ActionDropdown, ActionDropdownComponent, ActionDropdownRendererComponent, ActionItem, ActionItemComponent, ActionItemRendererComponent, ActionItemSeparator, ActionItemSeparatorComponent, ActionItemSeparatorRendererComponent, ActionMenuComponent, ActionsModule, ActiveConnectionService, ActiveDirectoryModule, ActiveDirectorySearchFormFieldComponent, ActiveDirectoryService, AlertBarComponent, AlertBarModule, AlertBarService, AlertSeverity, AppContextService, AppErrorHandler, ApplyMode, AriaLiveOptions, ArrayFormFieldComponent, ArrayFormFieldLoaderComponent, ArrayPropertySchemaFieldLoaderComponent, AuthorizationService, AutofocusDirective, AutofocusModule, AzureManagerService, BackdropComponent, BackdropModule, BackgroundExtensionRootComponent, BadgeBaseComponent, BadgeFeatureTypes, BadgeModule, BannerComponent, BannerModule, BaseComponent, BaseDialogComponent, BaseFormData, BasePropertiesForm, BasicFormLoaderComponent, BatchService, BooleanConverterPipe, BooleanConverterPipeModule, BreadcrumbComponent, BreadcrumbHeaderComponent, BreadcrumbHeaderModule, BreadcrumbModule, BreadcrumbSeparator, BugFixesFeatureBadgeComponent, ByteUnitConverterPipe, ByteUnitConverterPipeModule, CAPSLOCK_VALIDATOR, CalendarFormFieldComponent, CanDeactivateGuard, CapacityBarChartComponent, CapacityBase, CapacityDoughnutChartComponent, CapsLockValidatorDirective, ChartComponent, ChartModule, CheckboxFormFieldComponent, CheckboxFormFieldLoaderComponent, ChecklistFormFieldComponent, ChecklistFormFieldLoaderComponent, ChevronPosition, ChoiceDialogComponent, CimService, CimStreamService, ClampDirective, ClampModule, ClockFormFieldComponent, CodeFormFieldComponent, CodeFormFieldLoaderComponent, ColumnPickerService, ComboboxFormFieldComponent, ComboboxFormFieldLoaderComponent, ComingSoonBadgeComponent, CommonDialogsComponent, CommonSettingsComponent, CommonSettingsComponentBase, ConfirmationDialogComponent, ConfirmationListDialogComponent, ConnectionService, ConnectivityEnforcer, ConnectivityLevel, ContextDropdownComponent, ContextMenuComponent, ContextMenuDirective, ContextMenuModule, CoreServiceModule, CredSSPEnabledBadgeComponent, CredSSPManagerService, CriticalBadgeComponent, CustomBadgeComponent, DataOnlyFormFieldLoaderComponent, DataTableColumnComponent, DataTableColumnPickerExtension, DataTableComponent, DataTableDownloadDataType, DataTableDownloadService, DataTableModule, DataTableMultipleSelectMode, DataTableRenderedItemType, DataTableSortMode, DateConverterPipe, DateConverterPipeModule, DateFormFieldComponent, DateTimeFormFieldComponent, DateTimeRangeFormFieldComponent, DateTimeRangeOptionComponent, Debounce, DeleteColumnComponent, DetailsComponent, DetailsModule, DevGuardService, DialogChangeEvent, DialogCloseReason, DialogComponent, DialogContentComponent, DialogFooterComponent, DialogHeaderComponent, DialogMode, DialogModule, DialogService, DisabledChangedEvent, DisabledDirective, DisabledModule, DiscardDirective, DiscardModule, DocumentationComponent, DocumentationModule, DoughnutChartComponent, DoughnutChartModule, DropdownComponent, DropdownModule, DropdownService, DynamicActionItemComponent, DynamicComponentBase, EditableCollectionItem, EditableLayoutComponent, EditableLayoutItemComponent, ElectronService, EnumConverterPipe, EnumConverterPipeModule, ExperimentGuardService, ExtensionBrokerService, ExtensionDialogComponent, ExtensionRootModule, FeedbackBadgeComponent, FieldsetDirective, FileFormFieldComponent, FileFormFieldLoaderComponent, FileTransferService, FilterPipe, FilterPipeModule, FormAsyncValidatorBase, FormField, FormFieldAccessor, FormFieldAccessorDirective, FormFieldAsyncValidatorDirective, FormFieldComponent, FormFieldIsolatorComponent, FormFieldLayoutComponent, FormFieldOptionComponent, FormFieldOptionSubFormTemplateLoaderComponent, FormFieldOrientation, FormFieldTemplateDirective, FormFieldValidatorDirective, FormValidatorBase, FormWizardStepComponent, FormatPipe, FormatPipeModule, FrameService, GatewayService, GuardsModule, GuidedPaneComponent, GuidedPanelComponent, GuidedPanelModule, HeaderComponent, HeaderModule, HealthAlertSeverity, HighlightPipe, HighlightPipeModule, HorizontalBarChartComponent, HorizontalBarChartModule, HttpService, IconLayerComponent, IconModule, IconTextComponent, IdleComponent, IdleModule, ImprovementFeatureBadgeComponent, InputValidatorDirective, InstallationTypeGuardService, JobsService, JsonFormFieldComponent, JsonFormFieldLoaderComponent, LayeredIconComponent, LayoutComponent, LayoutConfigGenerator, LayoutDefinitionComponent, LayoutDrivenType, LayoutItemComponent, LayoutItemConfigMode, LayoutItemConfigPropertyWidthType, LayoutModule, LegendComponent, LegendEntryComponent, LegendModule, LifetimeService, LineChartComponent, LineChartModule, LineChartType, ListFormFieldComponent, LoadingWheelComponent, LoadingWheelModule, LoadingWheelSize, LocalDateConverterPipe, MachineNameValidatorDirective, MarkdownDirective, MarkdownModule, MasterViewComponent, MasterViewContentDirective, MasterViewContentModule, MasterViewModule, MatchFieldValidatorDirective, MediaConversion2, MessageDialogComponent, Monaco, Navigation, NavigationService, NavigationTitle, NewBadgeComponent, NewFeatureBadgeComponent, NodeCredentialsFormComponent, NodeCredentialsFormModule, NodeService, NotificationService, NumberFormFieldComponent, NumberFormFieldLoaderComponent, ObjectDefaultFormFieldLoaderComponent, ObjectPropertySchemaFieldLoaderComponent, OptionsFormFieldComponent, OrderedListFormFieldComponent, OrderedListFormFieldLoaderComponent, PageAlertBarComponent, PageAlertBarModule, PanelControlComponent, PasswordFormFieldComponent, PasswordFormFieldLoaderComponent, PivotComponent, PivotModule, PivotTabComponent, PivotTabType, PowerShellService, PowerShellStreamService, PreviewBadgeComponent, PropertyGridComponent, PropertyGridItemComponent, PropertyGridModule, QueryDataItemPresetGenerator, QueryDataItemValueType, QueryDataOperand, QueryEditorComponent, QueryEditorModule, RadioGroupFormFieldComponent, RadioGroupFormFieldLoaderComponent, RatingRadioGroupFormFieldComponent, ReactiveForm, ReactiveFormAccessor, ReactiveFormWizardStepComponent, ReadonlyFormFieldComponent, RequiredTrimmedValidatorDirective, ResizerComponent, ResizerModule, ResourceService, RpcService, RpcShellService, SME_ASYNC_VALIDATORS, SME_FORM_FIELD_VALIDATION_ALERT_CONTAINER_PROVIDER, SME_LAYOUT_PROVIDER, SME_VALIDATORS, ScheduleRebootService, SchemaDataTypeStore, SchemaFieldContext, SchemaFieldHostComponent, SchemaFieldHostModule, SchemaFieldLoaderComponentBase, SchemaFormComponent, SchemaFormModule, SchemaPrimitiveType, SchemaUtilities, SearchFormFieldComponent, SecureExtensionDataService, SelectFormFieldDirective, SettingsComponent, SettingsContentComponent, SettingsFooterComponent, SettingsFormDirective, SettingsFormService, SettingsHeaderComponent, SettingsModule, SettingsNavigationComponent, SettingsPageComponent, SettingsService, SimplePropertySchemaFieldLoaderComponent, SliderFormFieldComponent, SliderFormFieldLoaderComponent, SmeExtensionService, SmeFormsModule, SmeHeaderData, SmeInjectableBase, SmeInternalFormFieldComponent, SmeResponsiveWindowBreakpoints, SmeResponsiveWindowBreakpointsValue, SmeResponsiveWindowManagerComponent, SmeRouterLinkDirective, SmeRouterModule, SmeSchemaProperty, SmeTemplateOutletModule, SmeUxComponent, SmeUxContentComponent, SmeUxContentModule, SmeUxFooterComponent, SmeUxFooterModule, SmeUxModule, SmeUxPageComponent, SmeUxPageModule, SmeWizardLiteFooterTemplateComponent, SmeWizardLiteFooterTemplateModule, SnapInExtensionComponent, SnapInExtensionModule, SplitViewComponent, SplitViewContentComponent, SplitViewModule, SplitViewPaneComponent, SshStreamService, StackedBarComponent, StackedHorizontalBarChartComponent, StatusIconComponent, StatusIconType, SvgDirective, SvgInlineDirective, SvgInlineResource, SvgModule, SvgResource, TabbedFormController, TabbedFormItemController, TabbedFormLoaderComponent, TabbedLineChartGroupComponent, TagService, TagsActionButtonComponent, TagsColumnComponent, TagsFormFieldComponent, TagsFormFieldLoaderComponent, TelemetryDirective, TelemetryDirectiveModule, TemplateDrivenWizardStepComponent, TemplateOutletDirective, TextFormFieldComponent, TextFormFieldLoaderComponent, TileComponent, TileContentComponent, TileDirectivesModule, TileImageDirective, TileModule, TileRadioGroupFormFieldComponent, TimeFormFieldComponent, ToggleSwitchFormFieldComponent, ToggleSwitchFormFieldLoaderComponent, ToolHeaderComponent, ToolHeaderModule, TooltipDirective, TooltipHostComponent, TooltipHostInstance, TooltipModule, TooltipPlacement, TooltipZoneDirective, TreeTableComponent, UserAliveService, UxExtensionRootComponent, ValidationAlertComponent, ValidationAlertSeverity, WarningBadgeComponent, WebsocketStreamService, WizardAsParent, WizardBuilder, WizardComponent, WizardLiteComponent, WizardLiteModule, WizardModule, WizardNavigationButtonComponent, WizardNavigationButtonModule, WizardNavigationInformation, WizardStage, WizardStep, WizardStepComponent, WorkItemService, YesNoConverterPipe, YesNoConverterPipeModule, Yield, alertDialog, getFullRouteParams, modalDialog };
57320
+ export { AccordionComponent, AccordionModule, AccordionPanelComponent, ActionBarComponent, ActionBarDirective, ActionButton, ActionButtonAsync, ActionButtonAsyncComponent, ActionButtonComponent, ActionButtonRendererComponent, ActionContainerComponent, ActionDropdown, ActionDropdownComponent, ActionDropdownRendererComponent, ActionItem, ActionItemComponent, ActionItemRendererComponent, ActionItemSeparator, ActionItemSeparatorComponent, ActionItemSeparatorRendererComponent, ActionMenuComponent, ActionsModule, ActiveConnectionService, ActiveDirectoryModule, ActiveDirectorySearchFormFieldComponent, ActiveDirectoryService, AlertBarComponent, AlertBarModule, AlertBarService, AlertSeverity, AppContextService, AppErrorHandler, ApplyMode, AriaLiveOptions, ArrayFormFieldComponent, ArrayFormFieldLoaderComponent, ArrayPropertySchemaFieldLoaderComponent, AuthorizationService, AutofocusDirective, AutofocusModule, AzureManagerService, BackdropComponent, BackdropModule, BackgroundExtensionRootComponent, BadgeBaseComponent, BadgeFeatureTypes, BadgeModule, BannerComponent, BannerModule, BaseComponent, BaseDialogComponent, BaseFormData, BasePropertiesForm, BasicFormLoaderComponent, BatchService, BooleanConverterPipe, BooleanConverterPipeModule, BreadcrumbComponent, BreadcrumbHeaderComponent, BreadcrumbHeaderModule, BreadcrumbModule, BreadcrumbSeparator, BugFixesFeatureBadgeComponent, ByteUnitConverterPipe, ByteUnitConverterPipeModule, CAPSLOCK_VALIDATOR, CalendarFormFieldComponent, CanDeactivateGuard, CapacityBarChartComponent, CapacityBase, CapacityDoughnutChartComponent, CapsLockValidatorDirective, ChartComponent, ChartModule, CheckboxFormFieldComponent, CheckboxFormFieldLoaderComponent, ChecklistFormFieldComponent, ChecklistFormFieldLoaderComponent, ChevronPosition, ChoiceDialogComponent, CimService, CimStreamService, ClampDirective, ClampModule, ClockFormFieldComponent, CodeFormFieldComponent, CodeFormFieldLoaderComponent, ColumnPickerService, ComboboxFormFieldComponent, ComboboxFormFieldLoaderComponent, ComingSoonBadgeComponent, CommonDialogsComponent, CommonSettingsComponent, CommonSettingsComponentBase, ConfirmationDialogComponent, ConfirmationListDialogComponent, ConnectionService, ConnectivityEnforcer, ConnectivityLevel, ContextDropdownComponent, ContextMenuComponent, ContextMenuDirective, ContextMenuModule, CoreServiceModule, CredSSPEnabledBadgeComponent, CredSSPManagerService, CriticalBadgeComponent, CustomBadgeComponent, DataOnlyFormFieldLoaderComponent, DataTableColumnComponent, DataTableColumnPickerExtension, DataTableComponent, DataTableDownloadDataType, DataTableDownloadService, DataTableModule, DataTableMultipleSelectMode, DataTableRenderedItemType, DataTableSortMode, DateConverterPipe, DateConverterPipeModule, DateFormFieldComponent, DateTimeFormFieldComponent, DateTimeRangeFormFieldComponent, DateTimeRangeOptionComponent, Debounce, DeleteColumnComponent, DetailsComponent, DetailsModule, DevGuardService, DialogChangeEvent, DialogCloseReason, DialogComponent, DialogContentComponent, DialogFooterComponent, DialogHeaderComponent, DialogMode, DialogModule, DialogService, DisabledChangedEvent, DisabledDirective, DisabledModule, DiscardDirective, DiscardModule, DocumentationComponent, DocumentationModule, DoughnutChartComponent, DoughnutChartModule, DropdownComponent, DropdownModule, DropdownService, DynamicActionItemComponent, DynamicComponentBase, EditableCollectionItem, EditableLayoutComponent, EditableLayoutItemComponent, ElectronService, EnumConverterPipe, EnumConverterPipeModule, ExperimentGuardService, ExtensionBrokerService, ExtensionDialogComponent, ExtensionRootModule, FeedbackBadgeComponent, FieldsetDirective, FileFormFieldComponent, FileFormFieldLoaderComponent, FileTransferService, FilterPipe, FilterPipeModule, FormAsyncValidatorBase, FormField, FormFieldAccessor, FormFieldAccessorDirective, FormFieldAsyncValidatorDirective, FormFieldComponent, FormFieldIsolatorComponent, FormFieldLayoutComponent, FormFieldOptionComponent, FormFieldOptionSubFormTemplateLoaderComponent, FormFieldOrientation, FormFieldTemplateDirective, FormFieldValidatorDirective, FormValidatorBase, FormWizardStepComponent, FormatPipe, FormatPipeModule, FrameService, GatewayService, GuardsModule, GuidedPaneComponent, GuidedPanelComponent, GuidedPanelModule, HeaderComponent, HeaderModule, HealthAlertSeverity, HighlightPipe, HighlightPipeModule, HorizontalBarChartComponent, HorizontalBarChartModule, HttpService, IconLayerComponent, IconModule, IconTextComponent, IdleComponent, IdleModule, ImprovementFeatureBadgeComponent, InputValidatorDirective, InstallationTypeGuardService, JobsService, JsonFormFieldComponent, JsonFormFieldLoaderComponent, LayeredIconComponent, LayoutComponent, LayoutConfigGenerator, LayoutDefinitionComponent, LayoutDrivenType, LayoutItemComponent, LayoutItemConfigMode, LayoutItemConfigPropertyWidthType, LayoutModule, LegendComponent, LegendEntryComponent, LegendModule, LifetimeService, LineChartComponent, LineChartModule, LineChartType, ListFormFieldComponent, LoadingWheelComponent, LoadingWheelModule, LoadingWheelSize, LocalDateConverterPipe, MachineNameValidatorDirective, MarkdownDirective, MarkdownModule, MasterViewComponent, MasterViewContentDirective, MasterViewContentModule, MasterViewModule, MatchFieldValidatorDirective, MediaConversion2, MessageDialogComponent, Monaco, Navigation, NavigationService, NavigationTitle, NewBadgeComponent, NewFeatureBadgeComponent, NodeCredentialsFormComponent, NodeCredentialsFormModule, NodeService, NotificationService, NumberFormFieldComponent, NumberFormFieldLoaderComponent, ObjectDefaultFormFieldLoaderComponent, ObjectPropertySchemaFieldLoaderComponent, OptionsFormFieldComponent, OrderedListFormFieldComponent, OrderedListFormFieldLoaderComponent, PageAlertBarComponent, PageAlertBarModule, PanelControlComponent, PasswordFormFieldComponent, PasswordFormFieldLoaderComponent, PivotComponent, PivotModule, PivotTabComponent, PivotTabType, PowerShellService, PowerShellStreamService, PreviewBadgeComponent, PropertyGridComponent, PropertyGridItemComponent, PropertyGridModule, QueryDataItemPresetGenerator, QueryDataItemValueType, QueryDataOperand, QueryEditorComponent, QueryEditorModule, RadioGroupFormFieldComponent, RadioGroupFormFieldLoaderComponent, RatingRadioGroupFormFieldComponent, ReactiveForm, ReactiveFormAccessor, ReactiveFormWizardStepComponent, ReadonlyFormFieldComponent, RequiredTrimmedValidatorDirective, ResizerComponent, ResizerModule, ResourceService, RpcService, RpcShellService, SME_ASYNC_VALIDATORS, SME_FORM_FIELD_VALIDATION_ALERT_CONTAINER_PROVIDER, SME_LAYOUT_PROVIDER, SME_VALIDATORS, ScheduleRebootService, SchemaDataTypeStore, SchemaFieldContext, SchemaFieldHostComponent, SchemaFieldHostModule, SchemaFieldLoaderComponentBase, SchemaFormComponent, SchemaFormModule, SchemaPrimitiveType, SchemaUtilities, SearchFormFieldComponent, SecureExtensionDataService, SelectFormFieldDirective, SettingsComponent, SettingsContentComponent, SettingsFooterComponent, SettingsFormDirective, SettingsFormService, SettingsHeaderComponent, SettingsModule, SettingsNavigationComponent, SettingsPageComponent, SettingsService, SimplePropertySchemaFieldLoaderComponent, SliderFormFieldComponent, SliderFormFieldLoaderComponent, SmeExtensionService, SmeFormsModule, SmeHeaderData, SmeInjectableBase, SmeInternalFormFieldComponent, SmeResponsiveWindowBreakpoints, SmeResponsiveWindowBreakpointsValue, SmeResponsiveWindowManagerComponent, SmeRouterLinkDirective, SmeRouterModule, SmeSchemaProperty, SmeTemplateOutletModule, SmeUxComponent, SmeUxContentComponent, SmeUxContentModule, SmeUxFooterComponent, SmeUxFooterModule, SmeUxModule, SmeUxPageComponent, SmeUxPageModule, SmeWizardLiteFooterTemplateComponent, SmeWizardLiteFooterTemplateModule, SnapInExtensionComponent, SnapInExtensionModule, SnapInListener, SplitViewComponent, SplitViewContentComponent, SplitViewModule, SplitViewPaneComponent, SshStreamService, StackedBarComponent, StackedHorizontalBarChartComponent, StatusIconComponent, StatusIconType, SvgDirective, SvgInlineDirective, SvgInlineResource, SvgModule, SvgResource, TabbedFormController, TabbedFormItemController, TabbedFormLoaderComponent, TabbedLineChartGroupComponent, TagService, TagsActionButtonComponent, TagsColumnComponent, TagsFormFieldComponent, TagsFormFieldLoaderComponent, TelemetryDirective, TelemetryDirectiveModule, TemplateDrivenWizardStepComponent, TemplateOutletDirective, TextFormFieldComponent, TextFormFieldLoaderComponent, TileComponent, TileContentComponent, TileDirectivesModule, TileImageDirective, TileModule, TileRadioGroupFormFieldComponent, TimeFormFieldComponent, ToggleSwitchFormFieldComponent, ToggleSwitchFormFieldLoaderComponent, ToolHeaderComponent, ToolHeaderModule, TooltipDirective, TooltipHostComponent, TooltipHostInstance, TooltipModule, TooltipPlacement, TooltipZoneDirective, TreeTableComponent, UserAliveService, UxExtensionRootComponent, ValidationAlertComponent, ValidationAlertSeverity, WarningBadgeComponent, WebsocketStreamService, WizardAsParent, WizardBuilder, WizardComponent, WizardLiteComponent, WizardLiteModule, WizardModule, WizardNavigationButtonComponent, WizardNavigationButtonModule, WizardNavigationInformation, WizardStage, WizardStep, WizardStepComponent, WorkItemService, YesNoConverterPipe, YesNoConverterPipeModule, Yield, alertDialog, getFullRouteParams, modalDialog };
56895
57321
  //# sourceMappingURL=microsoft-windows-admin-center-sdk-angular.mjs.map