@siemens/element-ng 47.5.0 → 47.7.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 (444) hide show
  1. package/README.md +4 -1
  2. package/about/index.d.ts +7 -0
  3. package/about/package.json +3 -0
  4. package/about/si-about-data.model.d.ts +49 -0
  5. package/about/si-about.component.d.ts +71 -0
  6. package/about/si-about.module.d.ts +7 -0
  7. package/accordion/index.d.ts +1 -1
  8. package/accordion/si-accordion.component.d.ts +1 -1
  9. package/accordion/si-collapsible-panel.component.d.ts +1 -1
  10. package/action-modal/index.d.ts +1 -1
  11. package/action-modal/si-action-dialog.types.d.ts +1 -1
  12. package/application-header/index.d.ts +1 -1
  13. package/application-header/launchpad/si-launchpad.model.d.ts +1 -1
  14. package/application-header/si-header-action-item-icon-base.directive.d.ts +1 -1
  15. package/application-header/si-header-action-item.base.d.ts +1 -1
  16. package/application-header/si-header-logo.directive.d.ts +1 -1
  17. package/assets/images/landing-page-steel.webp +0 -0
  18. package/auto-collapsable-list/index.d.ts +1 -1
  19. package/auto-collapsable-list/si-auto-collapsable-list-item.directive.d.ts +1 -1
  20. package/auto-collapsable-list/si-auto-collapsable-list-measurable.class.d.ts +1 -1
  21. package/auto-collapsable-list/si-auto-collapsable-list.directive.d.ts +1 -1
  22. package/autocomplete/index.d.ts +1 -1
  23. package/autocomplete/si-autocomplete-option.directive.d.ts +1 -1
  24. package/autocomplete/si-autocomplete.model.d.ts +1 -1
  25. package/avatar/index.d.ts +1 -1
  26. package/avatar/si-avatar-background-color.directive.d.ts +1 -1
  27. package/badge/index.d.ts +1 -1
  28. package/breadcrumb/breadcrumb-item.model.d.ts +1 -1
  29. package/breadcrumb/index.d.ts +1 -1
  30. package/breadcrumb-router/index.d.ts +8 -0
  31. package/breadcrumb-router/package.json +3 -0
  32. package/breadcrumb-router/si-breadcrumb-default-resolver.service.d.ts +23 -0
  33. package/breadcrumb-router/si-breadcrumb-router.component.d.ts +30 -0
  34. package/breadcrumb-router/si-breadcrumb-router.model.d.ts +53 -0
  35. package/breadcrumb-router/si-breadcrumb-router.module.d.ts +7 -0
  36. package/card/index.d.ts +1 -1
  37. package/circle-status/index.d.ts +1 -1
  38. package/color-picker/index.d.ts +1 -1
  39. package/column-selection-dialog/index.d.ts +1 -1
  40. package/column-selection-dialog/si-column-selection-dialog.types.d.ts +1 -1
  41. package/common/decorators/index.d.ts +1 -1
  42. package/common/decorators/webcomponent.decorator.d.ts +1 -1
  43. package/common/helpers/animation.helpers.d.ts +1 -1
  44. package/common/helpers/global-events.helpers.d.ts +1 -1
  45. package/common/helpers/index.d.ts +1 -1
  46. package/common/helpers/overlay-helper.d.ts +1 -1
  47. package/common/helpers/rtl.d.ts +1 -1
  48. package/common/helpers/track-by.helper.d.ts +1 -1
  49. package/common/index.d.ts +1 -1
  50. package/common/models/color-variant.model.d.ts +1 -1
  51. package/common/models/index.d.ts +1 -1
  52. package/common/models/menu.model.d.ts +1 -1
  53. package/common/models/positions.model.d.ts +1 -1
  54. package/common/models/status-type.model.d.ts +1 -1
  55. package/common/services/index.d.ts +1 -1
  56. package/connection-strength/index.d.ts +1 -1
  57. package/content-action-bar/index.d.ts +1 -1
  58. package/content-action-bar/si-content-action-bar.component.d.ts +1 -1
  59. package/content-action-bar/si-content-action-bar.model.d.ts +3 -3
  60. package/copyright-notice/index.d.ts +1 -1
  61. package/copyright-notice/si-copyright-notice.d.ts +1 -1
  62. package/datatable/index.d.ts +1 -1
  63. package/datatable/si-datatable-interaction.directive.d.ts +1 -1
  64. package/date-range-filter/index.d.ts +1 -1
  65. package/date-range-filter/si-date-range-filter.component.d.ts +5 -1
  66. package/date-range-filter/si-date-range-filter.types.d.ts +1 -1
  67. package/date-range-filter/si-relative-date.component.d.ts +1 -1
  68. package/datepicker/components/si-calendar-date-cell.directive.d.ts +1 -1
  69. package/datepicker/components/si-initial-focus.component.d.ts +1 -1
  70. package/datepicker/index.d.ts +1 -1
  71. package/datepicker/si-datepicker.directive.d.ts +1 -1
  72. package/datepicker/si-datepicker.model.d.ts +1 -1
  73. package/datepicker/si-timepicker.component.d.ts +1 -1
  74. package/electron-titlebar/electron.helpers.d.ts +1 -1
  75. package/electron-titlebar/index.d.ts +1 -1
  76. package/empty-state/index.d.ts +1 -1
  77. package/fesm2022/siemens-element-ng-about.mjs +157 -0
  78. package/fesm2022/siemens-element-ng-about.mjs.map +1 -0
  79. package/fesm2022/siemens-element-ng-accordion.mjs +11 -12
  80. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  81. package/fesm2022/siemens-element-ng-action-modal.mjs +15 -16
  82. package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
  83. package/fesm2022/siemens-element-ng-application-header.mjs +29 -30
  84. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  85. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +7 -7
  86. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
  87. package/fesm2022/siemens-element-ng-autocomplete.mjs +5 -5
  88. package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
  89. package/fesm2022/siemens-element-ng-avatar.mjs +4 -4
  90. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  91. package/fesm2022/siemens-element-ng-badge.mjs +2 -2
  92. package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
  93. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +263 -0
  94. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -0
  95. package/fesm2022/siemens-element-ng-breadcrumb.mjs +8 -9
  96. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  97. package/fesm2022/siemens-element-ng-card.mjs +7 -8
  98. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  99. package/fesm2022/siemens-element-ng-circle-status.mjs +6 -7
  100. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  101. package/fesm2022/siemens-element-ng-color-picker.mjs +6 -7
  102. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  103. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +11 -12
  104. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
  105. package/fesm2022/siemens-element-ng-common.mjs +14 -14
  106. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  107. package/fesm2022/siemens-element-ng-connection-strength.mjs +3 -3
  108. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
  109. package/fesm2022/siemens-element-ng-content-action-bar.mjs +9 -10
  110. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  111. package/fesm2022/siemens-element-ng-copyright-notice.mjs +4 -4
  112. package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
  113. package/fesm2022/siemens-element-ng-datatable.mjs +2 -2
  114. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  115. package/fesm2022/siemens-element-ng-date-range-filter.mjs +33 -14
  116. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  117. package/fesm2022/siemens-element-ng-datepicker.mjs +48 -54
  118. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  119. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +7 -8
  120. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  121. package/fesm2022/siemens-element-ng-empty-state.mjs +6 -7
  122. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  123. package/fesm2022/siemens-element-ng-file-uploader.mjs +9 -10
  124. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  125. package/fesm2022/siemens-element-ng-filter-bar.mjs +10 -11
  126. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  127. package/fesm2022/siemens-element-ng-filtered-search.mjs +19 -20
  128. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  129. package/fesm2022/siemens-element-ng-footer.mjs +7 -8
  130. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  131. package/fesm2022/siemens-element-ng-form.mjs +20 -23
  132. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  133. package/fesm2022/siemens-element-ng-formly.mjs +48 -55
  134. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  135. package/fesm2022/siemens-element-ng-header-dropdown.mjs +8 -9
  136. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  137. package/fesm2022/siemens-element-ng-icon-status.mjs +3 -3
  138. package/fesm2022/siemens-element-ng-icon-status.mjs.map +1 -1
  139. package/fesm2022/siemens-element-ng-icon.mjs +22 -37
  140. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  141. package/fesm2022/siemens-element-ng-info-page.mjs +5 -6
  142. package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
  143. package/fesm2022/siemens-element-ng-inline-notification.mjs +6 -7
  144. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
  145. package/fesm2022/siemens-element-ng-ip-input.mjs +4 -4
  146. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
  147. package/fesm2022/siemens-element-ng-landing-page.mjs +121 -0
  148. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -0
  149. package/fesm2022/siemens-element-ng-language-switcher.mjs +9 -10
  150. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  151. package/fesm2022/siemens-element-ng-link.mjs +6 -6
  152. package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
  153. package/fesm2022/siemens-element-ng-list-details.mjs +15 -16
  154. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  155. package/fesm2022/siemens-element-ng-loading-spinner.mjs +13 -14
  156. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  157. package/fesm2022/siemens-element-ng-localization.mjs +6 -6
  158. package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
  159. package/fesm2022/siemens-element-ng-main-detail-container.mjs +268 -0
  160. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -0
  161. package/fesm2022/siemens-element-ng-menu.mjs +22 -22
  162. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  163. package/fesm2022/siemens-element-ng-modal.mjs +5 -5
  164. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  165. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +801 -0
  166. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -0
  167. package/fesm2022/siemens-element-ng-navbar.mjs +11 -12
  168. package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
  169. package/fesm2022/siemens-element-ng-number-input.mjs +7 -8
  170. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  171. package/fesm2022/siemens-element-ng-pagination.mjs +6 -7
  172. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  173. package/fesm2022/siemens-element-ng-password-strength.mjs +6 -6
  174. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  175. package/fesm2022/siemens-element-ng-password-toggle.mjs +8 -9
  176. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
  177. package/fesm2022/siemens-element-ng-phone-number.mjs +16 -17
  178. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  179. package/fesm2022/siemens-element-ng-photo-upload.mjs +7 -9
  180. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
  181. package/fesm2022/siemens-element-ng-pills-input.mjs +14 -15
  182. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  183. package/fesm2022/siemens-element-ng-popover-next.mjs +5 -5
  184. package/fesm2022/siemens-element-ng-popover-next.mjs.map +1 -1
  185. package/fesm2022/siemens-element-ng-popover.mjs +3 -3
  186. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  187. package/fesm2022/siemens-element-ng-progressbar.mjs +7 -8
  188. package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
  189. package/fesm2022/siemens-element-ng-resize-observer.mjs +11 -8
  190. package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
  191. package/fesm2022/siemens-element-ng-result-details-list.mjs +6 -7
  192. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  193. package/fesm2022/siemens-element-ng-search-bar.mjs +6 -6
  194. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
  195. package/fesm2022/siemens-element-ng-select.mjs +39 -40
  196. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  197. package/fesm2022/siemens-element-ng-shadow-root.mjs +2 -2
  198. package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
  199. package/fesm2022/siemens-element-ng-side-panel.mjs +13 -14
  200. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  201. package/fesm2022/siemens-element-ng-skip-links.mjs +7 -8
  202. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  203. package/fesm2022/siemens-element-ng-slider.mjs +7 -8
  204. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  205. package/fesm2022/siemens-element-ng-sort-bar.mjs +6 -7
  206. package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
  207. package/fesm2022/siemens-element-ng-split.mjs +6 -7
  208. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  209. package/fesm2022/siemens-element-ng-status-bar.mjs +13 -14
  210. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  211. package/fesm2022/siemens-element-ng-status-toggle.mjs +5 -6
  212. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  213. package/fesm2022/siemens-element-ng-summary-chip.mjs +5 -6
  214. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  215. package/fesm2022/siemens-element-ng-summary-widget.mjs +5 -6
  216. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
  217. package/fesm2022/siemens-element-ng-system-banner.mjs +5 -6
  218. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
  219. package/fesm2022/siemens-element-ng-tabs-next.mjs +44 -180
  220. package/fesm2022/siemens-element-ng-tabs-next.mjs.map +1 -1
  221. package/fesm2022/siemens-element-ng-tabs.mjs +9 -16
  222. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  223. package/fesm2022/siemens-element-ng-theme.mjs +3 -3
  224. package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
  225. package/fesm2022/siemens-element-ng-threshold.mjs +318 -0
  226. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -0
  227. package/fesm2022/siemens-element-ng-toast-notification.mjs +9 -10
  228. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  229. package/fesm2022/siemens-element-ng-tooltip.mjs +7 -8
  230. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  231. package/fesm2022/siemens-element-ng-tour.mjs +383 -0
  232. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -0
  233. package/fesm2022/siemens-element-ng-translate.mjs +1 -1
  234. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  235. package/fesm2022/siemens-element-ng-tree-view.mjs +23 -24
  236. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  237. package/fesm2022/siemens-element-ng-typeahead.mjs +12 -13
  238. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  239. package/fesm2022/siemens-element-ng-unauthorized-page.mjs +6 -7
  240. package/fesm2022/siemens-element-ng-unauthorized-page.mjs.map +1 -1
  241. package/fesm2022/siemens-element-ng-wizard.mjs +8 -9
  242. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  243. package/fesm2022/siemens-element-ng.mjs +1 -1
  244. package/fesm2022/siemens-element-ng.mjs.map +1 -1
  245. package/file-uploader/index.d.ts +1 -1
  246. package/file-uploader/si-file-uploader.model.d.ts +1 -1
  247. package/filter-bar/filter.d.ts +1 -1
  248. package/filter-bar/index.d.ts +1 -1
  249. package/filtered-search/index.d.ts +1 -1
  250. package/filtered-search/si-filtered-search-value.component.d.ts +1 -1
  251. package/filtered-search/si-filtered-search.component.d.ts +1 -1
  252. package/filtered-search/si-filtered-search.model.d.ts +1 -1
  253. package/filtered-search/values/si-filtered-search-value.base.d.ts +1 -1
  254. package/filtered-search/values/typeahead/si-filtered-search-typeahead.component.d.ts +1 -1
  255. package/footer/index.d.ts +1 -1
  256. package/form/form-fieldset/si-form-fieldset.component.d.ts +1 -1
  257. package/form/index.d.ts +1 -1
  258. package/form/si-form-container/si-form-container.component.d.ts +24 -24
  259. package/form/si-form-item/si-form-field-native.control.d.ts +1 -1
  260. package/form/si-form-item.control.d.ts +1 -1
  261. package/form/si-form-validation-error.model.d.ts +1 -1
  262. package/form/si-form-validation-error.provider.d.ts +1 -1
  263. package/form/si-form-validation-tooltip/si-form-validation-tooltip.component.d.ts +1 -1
  264. package/form/si-form-validation-tooltip/si-form-validation-tooltip.directive.d.ts +1 -1
  265. package/form/si-form.module.d.ts +1 -1
  266. package/formly/fields/datetime/si-formly-datetime.component.d.ts +1 -1
  267. package/formly/fields/textarea/si-formly-textarea.component.d.ts +1 -1
  268. package/formly/fields/time/si-formly-time.component.d.ts +1 -1
  269. package/formly/index.d.ts +1 -1
  270. package/formly/si-formly-translate.extension.d.ts +1 -3
  271. package/formly/si-formly.component.d.ts +1 -1
  272. package/formly/structural/si-formly-accordion/si-formly-accordion.component.d.ts +1 -1
  273. package/formly/structural/si-formly-object-grid/si-formly-object-grid.component.d.ts +1 -1
  274. package/formly/structural/si-formly-object-grid/si-formly-object-grid.model.d.ts +1 -1
  275. package/formly/utils.d.ts +1 -1
  276. package/formly/wrapper/si-formly-form-field-provider.directive.d.ts +1 -1
  277. package/header-dropdown/index.d.ts +1 -1
  278. package/header-dropdown/si-header.model.d.ts +1 -1
  279. package/icon/element-icons.d.ts +1 -1
  280. package/icon/icon-status.d.ts +1 -1
  281. package/icon/index.d.ts +1 -1
  282. package/icon/si-status-icon.component.d.ts +1 -6
  283. package/icon-status/index.d.ts +1 -1
  284. package/info-page/index.d.ts +1 -1
  285. package/inline-notification/index.d.ts +1 -1
  286. package/ip-input/address-utils.d.ts +1 -1
  287. package/ip-input/address-validators.d.ts +1 -1
  288. package/ip-input/index.d.ts +1 -1
  289. package/ip-input/si-ip-input.directive.d.ts +1 -1
  290. package/landing-page/alert-config.model.d.ts +15 -0
  291. package/landing-page/index.d.ts +7 -0
  292. package/landing-page/package.json +3 -0
  293. package/landing-page/si-landing-page.component.d.ts +74 -0
  294. package/landing-page/si-landing-page.module.d.ts +7 -0
  295. package/language-switcher/index.d.ts +1 -1
  296. package/language-switcher/iso-language-value.d.ts +1 -1
  297. package/language-switcher/si-language-switcher.component.d.ts +1 -2
  298. package/link/aria-current.model.d.ts +1 -1
  299. package/link/index.d.ts +1 -1
  300. package/link/link.model.d.ts +1 -1
  301. package/list-details/index.d.ts +1 -1
  302. package/list-details/si-details-pane-header/si-details-pane-header.component.d.ts +1 -1
  303. package/loading-spinner/index.d.ts +1 -1
  304. package/localization/index.d.ts +1 -1
  305. package/localization/si-directionality.d.ts +1 -1
  306. package/localization/si-locale-store.d.ts +1 -1
  307. package/main-detail-container/index.d.ts +6 -0
  308. package/main-detail-container/package.json +3 -0
  309. package/main-detail-container/si-main-detail-container.component.d.ts +151 -0
  310. package/main-detail-container/si-main-detail-container.module.d.ts +7 -0
  311. package/menu/index.d.ts +1 -1
  312. package/menu/si-menu-action.service.d.ts +1 -1
  313. package/menu/si-menu-factory.component.d.ts +1 -1
  314. package/menu/si-menu-item-checkbox.component.d.ts +2 -1
  315. package/menu/si-menu-model.d.ts +1 -1
  316. package/modal/index.d.ts +1 -1
  317. package/modal/modal.helpers.d.ts +1 -1
  318. package/modal/modalref.d.ts +1 -1
  319. package/navbar/account.model.d.ts +1 -1
  320. package/navbar/index.d.ts +1 -1
  321. package/navbar/si-navbar-item/index.d.ts +1 -1
  322. package/navbar/si-navbar-primary/index.d.ts +1 -1
  323. package/navbar/si-navbar-primary/si-navbar-primary.model.d.ts +1 -1
  324. package/navbar-vertical/index.d.ts +7 -0
  325. package/navbar-vertical/package.json +3 -0
  326. package/navbar-vertical/si-navbar-vertical-divider.component.d.ts +5 -0
  327. package/navbar-vertical/si-navbar-vertical-group-trigger.directive.d.ts +38 -0
  328. package/navbar-vertical/si-navbar-vertical-group.component.d.ts +16 -0
  329. package/navbar-vertical/si-navbar-vertical-header.component.d.ts +6 -0
  330. package/navbar-vertical/si-navbar-vertical-item-legacy.component.d.ts +17 -0
  331. package/navbar-vertical/si-navbar-vertical-item.component.d.ts +21 -0
  332. package/navbar-vertical/si-navbar-vertical.component.d.ts +148 -0
  333. package/navbar-vertical/si-navbar-vertical.model.d.ts +77 -0
  334. package/navbar-vertical/si-navbar-vertical.module.d.ts +7 -0
  335. package/navbar-vertical/si-navbar-vertical.provider.d.ts +7 -0
  336. package/number-input/index.d.ts +1 -1
  337. package/number-input/si-number-input.component.d.ts +1 -1
  338. package/package.json +32 -4
  339. package/pagination/index.d.ts +1 -1
  340. package/password-strength/index.d.ts +1 -1
  341. package/password-strength/si-password-strength.component.d.ts +1 -1
  342. package/password-toggle/index.d.ts +1 -1
  343. package/phone-number/index.d.ts +1 -1
  344. package/phone-number/si-phone-number-input.models.d.ts +1 -1
  345. package/photo-upload/index.d.ts +1 -1
  346. package/pills-input/index.d.ts +1 -1
  347. package/pills-input/si-pills-input-pattern-base.d.ts +1 -1
  348. package/pills-input/si-pills-input.component.d.ts +1 -1
  349. package/popover/index.d.ts +1 -1
  350. package/popover/si-popover.component.d.ts +1 -1
  351. package/popover-next/index.d.ts +1 -1
  352. package/progressbar/index.d.ts +1 -1
  353. package/public-api.d.ts +1 -1
  354. package/resize-observer/index.d.ts +1 -1
  355. package/resize-observer/si-resize-observer.directive.d.ts +4 -2
  356. package/resize-observer/si-responsive-container.directive.d.ts +1 -1
  357. package/result-details-list/index.d.ts +1 -1
  358. package/result-details-list/si-result-details-list.datamodel.d.ts +1 -1
  359. package/search-bar/index.d.ts +1 -1
  360. package/search-bar/si-search-bar.component.d.ts +1 -1
  361. package/select/index.d.ts +1 -1
  362. package/select/options/si-select-complex-options.directive.d.ts +1 -1
  363. package/select/options/si-select-lazy-options.directive.d.ts +1 -1
  364. package/select/options/si-select-option.source.d.ts +1 -1
  365. package/select/options/si-select-options-strategy.base.d.ts +1 -1
  366. package/select/options/si-select-options-strategy.d.ts +1 -1
  367. package/select/options/si-select-simple-options.directive.d.ts +1 -1
  368. package/select/select-input/si-select-input.component.d.ts +1 -1
  369. package/select/select-list/si-select-list.base.d.ts +1 -1
  370. package/select/select-list/si-select-list.component.d.ts +1 -1
  371. package/select/select-option/si-select-option-row.component.d.ts +1 -1
  372. package/select/selection/si-select-selection-strategy.d.ts +1 -1
  373. package/select/si-select.types.d.ts +1 -1
  374. package/shadow-root/index.d.ts +1 -1
  375. package/shadow-root/si-shadow-root.directive.d.ts +1 -1
  376. package/side-panel/index.d.ts +1 -1
  377. package/side-panel/si-side-panel.service.d.ts +1 -1
  378. package/side-panel/side-panel.model.d.ts +1 -1
  379. package/skip-links/index.d.ts +1 -1
  380. package/skip-links/si-skip-link-target.directive.d.ts +1 -1
  381. package/slider/index.d.ts +1 -1
  382. package/sort-bar/index.d.ts +1 -1
  383. package/sort-bar/si-sort-bar.component.d.ts +1 -1
  384. package/split/index.d.ts +1 -1
  385. package/split/si-split.interfaces.d.ts +1 -1
  386. package/status-bar/index.d.ts +1 -1
  387. package/status-bar/si-status-bar-item/index.d.ts +1 -1
  388. package/status-bar/si-status-bar-item/si-status-bar-item.model.d.ts +1 -1
  389. package/status-toggle/index.d.ts +1 -1
  390. package/status-toggle/status-toggle.model.d.ts +1 -1
  391. package/summary-chip/index.d.ts +1 -1
  392. package/summary-widget/index.d.ts +1 -1
  393. package/system-banner/index.d.ts +1 -1
  394. package/tabs/index.d.ts +1 -1
  395. package/tabs/si-tab/index.d.ts +1 -1
  396. package/tabs/si-tab/si-tab.component.d.ts +1 -1
  397. package/tabs/si-tabset/index.d.ts +1 -1
  398. package/tabs-next/index.d.ts +1 -1
  399. package/tabs-next/si-tab-next-base.directive.d.ts +3 -6
  400. package/tabs-next/si-tab-next-link.component.d.ts +0 -2
  401. package/tabs-next/si-tabs-tokens.d.ts +1 -1
  402. package/tabs-next/si-tabset-next.component.d.ts +4 -19
  403. package/template-i18n.json +16 -0
  404. package/theme/index.d.ts +1 -1
  405. package/theme/si-theme-store.d.ts +1 -1
  406. package/theme/si-theme.model.d.ts +1 -1
  407. package/threshold/index.d.ts +6 -0
  408. package/threshold/package.json +3 -0
  409. package/threshold/si-readonly-threshold-option.component.d.ts +11 -0
  410. package/threshold/si-threshold.component.d.ts +147 -0
  411. package/threshold/si-threshold.module.d.ts +7 -0
  412. package/toast-notification/index.d.ts +1 -1
  413. package/toast-notification/si-toast.model.d.ts +1 -1
  414. package/tooltip/index.d.ts +1 -1
  415. package/tooltip/si-tooltip.component.d.ts +1 -1
  416. package/tooltip/si-tooltip.directive.d.ts +1 -1
  417. package/tooltip/si-tooltip.service.d.ts +1 -1
  418. package/tour/index.d.ts +6 -0
  419. package/tour/package.json +3 -0
  420. package/tour/si-tour-highlight.component.d.ts +15 -0
  421. package/tour/si-tour-token.model.d.ts +27 -0
  422. package/tour/si-tour.component.d.ts +31 -0
  423. package/tour/si-tour.model.d.ts +51 -0
  424. package/tour/si-tour.service.d.ts +62 -0
  425. package/translate/index.d.ts +1 -1
  426. package/translate/si-translatable-keys.interface.d.ts +16 -0
  427. package/translate/si-translatable-overrides.provider.d.ts +1 -1
  428. package/tree-view/drag-drop.util.d.ts +1 -1
  429. package/tree-view/index.d.ts +1 -1
  430. package/tree-view/si-tree-view-item/si-tree-view-item.component.d.ts +1 -1
  431. package/tree-view/si-tree-view-item/si-tree-view-item.directive.d.ts +1 -1
  432. package/tree-view/si-tree-view-item-context.d.ts +1 -1
  433. package/tree-view/si-tree-view-item-height.service.d.ts +1 -1
  434. package/tree-view/si-tree-view-item-template.directive.d.ts +1 -1
  435. package/tree-view/si-tree-view.component.d.ts +1 -1
  436. package/tree-view/si-tree-view.model.d.ts +1 -1
  437. package/tree-view/si-tree-view.service.d.ts +1 -1
  438. package/tree-view/si-tree-view.utils.d.ts +1 -1
  439. package/typeahead/index.d.ts +1 -1
  440. package/typeahead/si-typeahead.directive.d.ts +1 -1
  441. package/typeahead/si-typeahead.model.d.ts +1 -1
  442. package/typeahead/si-typeahead.sorting.d.ts +1 -1
  443. package/unauthorized-page/index.d.ts +1 -1
  444. package/wizard/index.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-theme.mjs","sources":["../../../../projects/element-ng/theme/si-theme-store.ts","../../../../projects/element-ng/theme/si-theme.model.ts","../../../../projects/element-ng/theme/si-theme.service.ts","../../../../projects/element-ng/theme/index.ts","../../../../projects/element-ng/theme/siemens-element-ng-theme.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Observable, of } from 'rxjs';\n\nimport { Theme } from './si-theme.model';\n\n/**\n * SiThemeStore object is used by the theme service to load and\n * store the themes. You can inject your own implementation to provide\n * a backend implementation. Otherwise a localStorage based implementation\n * is used.\n */\nexport abstract class SiThemeStore {\n /**\n * Load and return an alternative custom theme, other then\n * the default element theme. This method is invoked initially\n * to check for an alternative custom theme.\n * @returns The active theme to be used, or undefined if the\n * default element theme shall be used. All wrapped in an observable\n * that can also emit errors.\n */\n abstract loadActiveTheme(): Observable<Theme | undefined>;\n /**\n * Sets the theme with the given name to active.\n * @param name - The name of the theme to become active.\n * @returns True on success, otherwise false.\n */\n abstract activateTheme(name: string): Observable<boolean>;\n /**\n * Deactivate any active theme and makes the element theme the default one.\n * @returns True on success, otherwise false.\n */\n abstract deactivateTheme(): Observable<boolean>;\n /**\n * Load and return the available theme names.\n * @returns An `Observable` of available theme names, other than the\n * default element theme.\n */\n abstract loadThemeNames(): Observable<string[]>;\n /**\n * Load theme with the given `name`.\n * @param name - The name of the theme to be returned.\n * @returns Observable with the named theme or `undefined` if no such theme exist.\n */\n abstract loadTheme(name: string): Observable<Theme | undefined>;\n /**\n * Saves a theme to the store. The name shall not be empty. A theme with\n * identical name gets overwritten.\n * @param theme - The theme to be saved.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors.\n */\n abstract saveTheme(theme: Theme): Observable<boolean>;\n /**\n * Deletes the theme with the given name from the store.\n * @param name - The name of the theme to be deleted.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors. Returns false,\n * if the theme does not exist.\n */\n abstract deleteTheme(name: string): Observable<boolean>;\n}\n\nexport const SI_THEME_LOCAL_STORAGE_KEY = 'si-themes';\n\nexport interface ThemeStorage {\n activeTheme: string | undefined;\n themes: { [key: string]: Theme };\n}\n\nexport class SiDefaultThemeStore extends SiThemeStore {\n private isBrowser: boolean;\n\n constructor(isBrowser: boolean) {\n super();\n this.isBrowser = isBrowser;\n }\n\n loadActiveTheme(): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n\n const store = this.loadStore();\n if (store.activeTheme) {\n return of(store.themes[store.activeTheme]);\n } else {\n return of(undefined);\n }\n }\n\n activateTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n if (store.themes[name]) {\n store.activeTheme = name;\n this.saveStore(store);\n return of(true);\n } else {\n return of(false);\n }\n }\n\n deactivateTheme(): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.activeTheme = undefined;\n this.saveStore(store);\n return of(true);\n }\n\n loadThemeNames(): Observable<string[]> {\n if (!this.isBrowser) {\n return of([]);\n }\n const store = this.loadStore();\n return of(Array.from(Object.keys(store.themes)));\n }\n\n saveTheme(theme: Theme): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.themes[theme.name] = theme;\n this.saveStore(store);\n return of(true);\n }\n\n loadTheme(name: string): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n const store = this.loadStore();\n return of(store.themes[name]);\n }\n\n deleteTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n delete store.themes[name];\n if (store.activeTheme === name) {\n store.activeTheme = undefined;\n }\n this.saveStore(store);\n return of(true);\n }\n\n private loadStore(): ThemeStorage {\n const storeStr = localStorage.getItem(SI_THEME_LOCAL_STORAGE_KEY);\n if (storeStr) {\n return JSON.parse(storeStr) as ThemeStorage;\n } else {\n return { activeTheme: undefined, themes: {} };\n }\n }\n\n private saveStore(store: ThemeStorage): void {\n localStorage.setItem(SI_THEME_LOCAL_STORAGE_KEY, JSON.stringify(store));\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport interface ThemeDescription {\n name: string;\n groups: ThemePropertyGroup[];\n}\n\nexport interface ThemePropertyGroup {\n name: string;\n description?: string;\n properties: ThemeProperty[];\n}\n\nexport interface ThemeProperty {\n name: string;\n usage: string;\n type: ThemePropertyType;\n}\n\nexport type ThemePropertyType = 'color' | 'gradient' | 'font' | 'url' | 'text' | 'number';\n\nexport interface Theme {\n name: string;\n schemes: ThemeColorSchemes;\n /**\n * A map of icons that overrides the default Element icons.\n * The key must be the key of the original icon that should be overridden.\n * The value has to be a data SVG string.\n *\n * @example\n * ```ts\n * {\n * elementUser: \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'>...</svg>\"\n * }\n * ```\n *\n * @experimental\n */\n icons?: Record<string, string>;\n}\n\nexport interface ThemeColorSchemes {\n light?: ThemeColorScheme;\n dark?: ThemeColorScheme;\n}\n\nexport type ThemeColorScheme = { [key: string]: string };\n\nexport type ThemeType = 'dark' | 'light' | 'auto';\n\nexport const ELEMENT_THEME_NAME = 'element';\n\nexport const elementTheme: ThemeDescription = {\n name: 'element',\n groups: [\n {\n name: 'Branding',\n description: 'Configure the brand logo.',\n properties: [\n {\n name: '--element-brand-logo',\n usage: 'Enter a brand logo in the format: \\'url(\"https://company/logo.svg\")\\'',\n type: 'text'\n },\n {\n name: '--element-brand-logo-width',\n usage: \"Enter the width of the logo as CSS width value. Example: '100px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-height',\n usage: \"Enter the height of the logo as CSS width value. Max: 48px; Example: '16px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-text',\n usage:\n 'Enter a textual representation of the logo. Example: \\'\"Siemens logo\"\\'. The text must be wrapped in double quotes.',\n type: 'text'\n }\n ]\n },\n {\n name: 'Basic definitions',\n description: 'Basic definitions',\n properties: [\n {\n name: '--element-body-font-family',\n usage: 'The theme only uses one font everywhere.',\n type: 'font'\n },\n { name: '--element-button-radius', usage: 'Button border radius', type: 'text' },\n { name: '--element-button-focus-width', usage: 'Focus width', type: 'text' },\n {\n name: '--element-button-focus-overlay-width',\n usage: 'Focus overlay width',\n type: 'text'\n },\n {\n name: '--element-button-focus-overlay-color',\n usage: 'Focus overlay color',\n type: 'text'\n },\n { name: '--element-input-radius', usage: 'Input field border radius', type: 'text' },\n { name: '--element-logo-color', usage: 'Logo color', type: 'text' },\n { name: '--element-radius-1', usage: 'Border radius-1', type: 'text' },\n { name: '--element-radius-2', usage: 'Border radius-2', type: 'text' },\n { name: '--element-radius-3', usage: 'Border radius-3', type: 'text' }\n ]\n },\n {\n name: 'UI',\n description:\n 'UI colors are used on structural properties and icons and provide good contrast when used over any background.',\n properties: [\n { name: '--element-ui-0', usage: 'Logo, selected (active) elements', type: 'color' },\n { name: '--element-ui-0-hover', usage: 'Selected hover', type: 'color' },\n { name: '--element-ui-1', usage: 'Primary icons', type: 'color' },\n { name: '--element-ui-2', usage: 'Secondary icons', type: 'color' },\n { name: '--element-ui-3', usage: 'Disabled', type: 'color' },\n { name: '--element-ui-4', usage: 'Borders', type: 'color' },\n { name: '--element-ui-5', usage: 'Inverse', type: 'color' },\n { name: '--element-ui-6', usage: 'Shadows', type: 'color' },\n { name: '--element-box-shadow-color-1', usage: 'Box shadow color 1', type: 'color' },\n { name: '--element-box-shadow-color-2', usage: 'Box shadow color 2', type: 'color' },\n { name: '--element-focus-default', usage: 'Default focus color', type: 'color' }\n ]\n },\n {\n name: 'Base',\n description: 'Base colors are used as backgrounds of containers.',\n properties: [\n { name: '--element-base-0', usage: 'Page background, row background', type: 'color' },\n {\n name: '--element-base-1',\n usage: 'Header, navigation, card, table background',\n type: 'color'\n },\n {\n name: '--element-base-1-hover',\n usage: 'Hover on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-1-selected',\n usage: 'Selected on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-2',\n usage: 'Page background with higher contrast pages in dark mode',\n type: 'color'\n },\n {\n name: '--element-base-information',\n usage: 'Informational component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-success',\n usage: 'Success component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-caution',\n usage: 'Caution component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-warning',\n usage: 'Warning component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-danger',\n usage: 'Danger component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-1',\n usage: 'Translucent background, e.g. backdrop',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-2',\n usage: 'Slightly translucent background, e.g. toasts',\n type: 'gradient'\n }\n ]\n },\n {\n name: 'Actions',\n description: 'Action colors are used to indicate actions that users can perform.',\n properties: [\n { name: '--element-action-primary', usage: 'Primary interaction', type: 'gradient' },\n {\n name: '--element-action-primary-hover',\n usage: 'Primary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-primary-text', usage: 'Primary text color', type: 'color' },\n { name: '--element-action-secondary', usage: 'Secondary interaction', type: 'gradient' },\n {\n name: '--element-action-secondary-hover',\n usage: 'Secondary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-secondary-text', usage: 'Secondary text color', type: 'color' },\n {\n name: '--element-action-secondary-text-hover',\n usage: 'Secondary text color on hover',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border',\n usage: 'Secondary border color',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border-hover',\n usage: 'Secondary border color on hover',\n type: 'color'\n },\n { name: '--element-action-warning', usage: 'Warning', type: 'gradient' },\n {\n name: '--element-action-warning-hover',\n usage: 'Warning action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-warning-text', usage: 'Warning text color', type: 'color' },\n { name: '--element-action-danger', usage: 'Danger', type: 'gradient' },\n {\n name: '--element-action-danger-hover',\n usage: 'Danger action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-danger-text', usage: 'Danger text color', type: 'color' },\n {\n name: '--element-action-disabled-opacity',\n usage: 'Disabled action opacity',\n type: 'number'\n }\n ]\n },\n {\n name: 'Text',\n description: 'Similarly, categories for typography colors are also defined in this system.',\n properties: [\n { name: '--element-text-primary', usage: 'Primary', type: 'color' },\n { name: '--element-text-secondary', usage: 'Secondary', type: 'color' },\n { name: '--element-text-disabled', usage: 'Disabled', type: 'color' },\n { name: '--element-text-inverse', usage: 'Inverse', type: 'color' },\n { name: '--element-text-active', usage: 'Active', type: 'color' },\n { name: '--element-text-information', usage: 'Informational', type: 'color' },\n { name: '--element-text-success', usage: 'Success', type: 'color' },\n { name: '--element-text-caution', usage: 'Caution', type: 'color' },\n { name: '--element-text-warning', usage: 'Warning', type: 'color' },\n { name: '--element-text-danger', usage: 'Danger', type: 'color' }\n ]\n },\n {\n name: 'Status',\n description:\n 'Status colors are used to describe and/or report on the status of different things.',\n properties: [\n { name: '--element-status-information', usage: 'Informational', type: 'color' },\n {\n name: '--element-status-information-contrast',\n usage: 'Informational contrast',\n type: 'color'\n },\n { name: '--element-status-success', usage: 'Success', type: 'color' },\n { name: '--element-status-success-contrast', usage: 'Success contrast', type: 'color' },\n { name: '--element-status-caution', usage: 'Caution', type: 'color' },\n { name: '--element-status-caution-contrast', usage: 'Caution contrast', type: 'color' },\n { name: '--element-status-warning', usage: 'Warning', type: 'color' },\n { name: '--element-status-warning-contrast', usage: 'Warning contrast', type: 'color' },\n { name: '--element-status-danger', usage: 'Danger', type: 'color' },\n { name: '--element-status-danger-contrast', usage: 'Danger contrast', type: 'color' }\n ]\n },\n {\n name: 'Form feedback icons',\n description: 'Icons that are used to indicate a form item status',\n properties: [{ name: '--element-invalid-feedback-icon', usage: 'Danger', type: 'text' }]\n }\n ]\n};\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { DomSanitizer, Meta, SafeHtml } from '@angular/platform-browser';\nimport { Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\n\nimport { SiDefaultThemeStore, SiThemeStore } from './si-theme-store';\nimport {\n ELEMENT_THEME_NAME,\n Theme,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeType\n} from './si-theme.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiThemeService {\n /**\n * The current color scheme. (e.g. light or dark).\n */\n private _resolvedColorScheme: ThemeType | undefined = 'light';\n private resolvedColorSchemeSub = new ReplaySubject<keyof ThemeColorSchemes>(1);\n /**\n * Emits events when the color scheme changes.\n *\n * @defaultValue this.resolvedColorSchemeSub.asObservable()\n */\n readonly resolvedColorScheme$ = this.resolvedColorSchemeSub.asObservable();\n /**\n * The current color scheme. (e.g. light or dark).\n */\n get resolvedColorScheme(): ThemeType | undefined {\n return this._resolvedColorScheme;\n }\n\n /**\n * All available theme names, including element theme name.\n */\n private _themeNames: string[] = [ELEMENT_THEME_NAME];\n private themeNamesSub = new ReplaySubject<string[]>(1);\n /**\n * Emits events when the list of available theme names changes.\n *\n * @defaultValue this.themeNamesSub.asObservable()\n */\n readonly themeNames$ = this.themeNamesSub.asObservable();\n\n /**\n * All available theme names, including element theme name.\n */\n get themeNames(): string[] {\n return this._themeNames;\n }\n\n /**\n * Emits events when the currently applied theme changes. Either by\n * changing to another theme or by re-applying a theme with updated\n * properties. When switching to default theme element, `undefined`\n * is emitted.\n */\n readonly themeChange = new EventEmitter<Theme | undefined>();\n\n /**\n * The name of the theme that is active. Theme name `element` is the default.\n */\n activeThemeName?: string;\n /**\n * Icon overrides by the currently activeTheme.\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly themeIcons = signal<Record<string, SafeHtml>>({});\n\n private themes: Map<string, Theme> = new Map();\n private darkMediaQuery?: MediaQueryList;\n private mediaQueryListener?: () => void;\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private previewTheme?: Theme;\n\n private themeStore =\n inject(SiThemeStore, { optional: true }) ?? new SiDefaultThemeStore(this.isBrowser);\n private meta = inject(Meta);\n private document = inject(DOCUMENT);\n private domSanitizer = inject(DomSanitizer);\n\n constructor() {\n this.resolvedColorScheme$.subscribe(scheme => (this._resolvedColorScheme = scheme));\n this.themeNames$.subscribe(names => (this._themeNames = names));\n\n if (this.isBrowser) {\n this.darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = () => this.toggleDark(this.darkMediaQuery!.matches);\n }\n\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: theme => this.applyThemeStyle(theme, this._resolvedColorScheme),\n error: error => console.error('Cannot load active theme', error)\n });\n\n this.themeStore\n .loadThemeNames()\n .pipe(take(1))\n .subscribe({\n next: names => {\n names.push(ELEMENT_THEME_NAME);\n this.themeNamesSub.next(names);\n },\n error: error => console.error('Cannot load theme names', error)\n });\n }\n\n /**\n * Returns `true` if a theme with the given name is available.\n */\n hasTheme(name: string): boolean {\n return this._themeNames.includes(name);\n }\n\n /**\n * Returns a clone of the theme with the given name or `undefined` if not\n * available or name is `element`.\n * @param name - The name of the theme to be returned.\n * @returns The theme with the given name and `undefined` if name is `element`.\n */\n getTheme(name: string): Observable<Theme | undefined> {\n if (name === ELEMENT_THEME_NAME || !this.hasTheme(name)) {\n return of(undefined);\n }\n\n if (this.themes.has(name)) {\n const theme = this.themes.get(name)!;\n // return a clone to avoid changes as a side effect\n return of(this.cloneTheme(theme));\n }\n\n return this.themeStore.loadTheme(name).pipe(\n tap(theme => {\n if (theme) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n }\n })\n );\n }\n\n /**\n * Loads and returns the currently active theme. Returns undefined if no custom theme is used.\n * @returns A custom theme or `undefined` if the default element theme is used.\n */\n getActiveTheme(): Observable<Theme | undefined> {\n if (this.activeThemeName) {\n return of(this.themes.get(this.activeThemeName));\n }\n return this.themeStore.loadActiveTheme().pipe(\n map(theme => {\n if (theme) {\n this.activeThemeName = theme.name;\n this.themes.set(theme.name, theme);\n this.applyTheme(theme, this._resolvedColorScheme);\n return theme;\n }\n this.activeThemeName = ELEMENT_THEME_NAME;\n return undefined;\n })\n );\n }\n\n /**\n * Adds or updates the given theme in the theme store.\n * @param theme - The theme to be saved.\n * @returns `true` if the theme was saved successfully.\n */\n addOrUpdateTheme(theme: Theme): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n\n this.themeStore.saveTheme(theme).subscribe({\n next: saveResult => {\n if (saveResult) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n // Update list of theme names when this is a new one\n if (!this.hasTheme(theme.name)) {\n const names = this._themeNames.concat(theme.name);\n this.themeNamesSub.next(names);\n }\n }\n result.next(saveResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Deletes the theme with the given name from the theme store.\n */\n deleteTheme(name: string): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n if (!this.hasTheme(name) || name === ELEMENT_THEME_NAME) {\n result.next(false);\n result.complete();\n } else {\n this.removeThemeCSS(name);\n this.themeStore.deleteTheme(name).subscribe({\n next: deleteResult => {\n if (deleteResult) {\n this.themes.delete(name);\n const names = this._themeNames.filter(themeName => themeName !== name);\n this.themeNamesSub.next(names);\n }\n result.next(deleteResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n }\n return result;\n }\n\n /**\n * Resets the preview theme to the default element theme.\n */\n resetPreview(): void {\n this.previewTheme = { name: '__preview', schemes: { dark: {}, light: {} } };\n this.removeThemeCSS(this.previewTheme.name);\n }\n\n /**\n * Sets the active theme to the given name. If no name is given, the default element theme is used.\n */\n setActiveTheme(name?: string, type?: ThemeType): Observable<boolean> {\n const theType = type ?? this._resolvedColorScheme ?? 'auto';\n const theName = name ?? this.activeThemeName ?? ELEMENT_THEME_NAME;\n\n if (theName === this.activeThemeName) {\n return of(true);\n }\n if (!this.hasTheme(theName)) {\n return of(false);\n }\n\n const result = new ReplaySubject<boolean>(1);\n this.activeThemeName = theName;\n // Make the change in the remove store\n const store =\n theName !== ELEMENT_THEME_NAME\n ? this.themeStore.activateTheme(theName)\n : this.themeStore.deactivateTheme();\n store\n .pipe(\n // On success, load the theme\n switchMap(storeResult => {\n if (storeResult) {\n return this.getTheme(theName);\n } else {\n return throwError(() => 'Cannot change active theme in theme store.');\n }\n }),\n // Only take one to avoid unsubscription issues\n take(1)\n )\n .subscribe({\n next: theme => {\n this.applyTheme(theme, theType);\n result.next(true);\n },\n error: error => {\n console.error(`Activating theme ${name} failed`, error);\n result.next(false);\n },\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Apply `light` or `dark` theme to the document.\n */\n applyThemeType(type: ThemeType): void {\n if (type === this._resolvedColorScheme || !this.darkMediaQuery || !this.mediaQueryListener) {\n return;\n }\n\n this.darkMediaQuery.removeEventListener('change', this.mediaQueryListener);\n\n if (type === 'light') {\n this.toggleDark(false);\n } else if (type === 'dark') {\n this.toggleDark(true);\n } else {\n this.mediaQueryListener();\n this.darkMediaQuery.addEventListener('change', this.mediaQueryListener);\n }\n }\n\n /**\n * Applies the given theme to the document. If no theme is given, the active theme is applied.\n */\n applyTheme(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (theme) {\n this.applyThemeStyle(theme, type, overwrite);\n } else {\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: loadedTheme => this.applyThemeStyle(loadedTheme, type),\n error: error => console.error('Cannot load active theme', error)\n });\n }\n }\n\n /**\n * Updates the given property of the preview theme.\n */\n updateProperty(name: string, value: string, type: keyof ThemeColorSchemes): void {\n if (!this.previewTheme) {\n this.resetPreview();\n }\n this.previewTheme!.schemes[type]![name] = value;\n this.createThemeCSS(this.previewTheme!);\n this.document.documentElement.classList.add('theme-__preview');\n this.dispatchThemeSwitchEvent();\n }\n\n /**\n * Checks if the given theme JSON object is a valid theme.\n */\n isThemeValid(data: unknown): boolean {\n const theme = data as Theme;\n return (\n !!data &&\n typeof data === 'object' &&\n 'name' in data &&\n 'schemes' in data &&\n typeof theme.name === 'string' &&\n typeof theme.schemes === 'object' &&\n this.isThemeTypeValid(theme, 'light') &&\n this.isThemeTypeValid(theme, 'dark')\n );\n }\n\n private isThemeTypeValid(theme: Theme, type: 'light' | 'dark'): boolean {\n return (\n !(type in theme.schemes) ||\n (typeof theme.schemes[type] === 'object' &&\n Object.values(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ) &&\n Object.keys(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ))\n );\n }\n\n private applyThemeStyle(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n this.resetPreview();\n\n if (theme && theme.name !== ELEMENT_THEME_NAME && (overwrite || !this.hasThemeCSS(theme))) {\n this.createThemeCSS(theme);\n }\n this.activateTheme(theme);\n\n if (type && type !== this._resolvedColorScheme) {\n this.applyThemeType(type);\n }\n\n this.themeIcons.set(\n Object.fromEntries(\n Object.entries(theme?.icons ?? {}).map(([key, icon]) => [key, this.parseDataSvgIcon(icon)])\n )\n );\n this.themeChange.emit(theme);\n }\n\n private activateTheme(theme?: Theme): void {\n const classList = this.document.documentElement.classList;\n classList.forEach(c => {\n if (c.startsWith('theme-')) {\n classList.remove(c);\n }\n });\n if (theme) {\n classList.add(`theme-${theme.name}`);\n }\n }\n\n private hasThemeCSS(theme: Theme): boolean {\n const id = `__theme-${theme.name}`;\n return !!this.document.getElementById(id);\n }\n\n private createThemeCSS(theme: Theme): void {\n let css = '';\n const themeSelector = `:root.theme-${theme.name}`;\n if (theme.schemes.light) {\n css = this.createThemeVariantCSS(css, themeSelector, theme.schemes.light);\n }\n if (theme.schemes.dark) {\n css = this.createThemeVariantCSS(css, themeSelector + '.app--dark', theme.schemes.dark);\n }\n\n this.removeThemeCSS(theme.name);\n const cssElement = this.document.createElement('style');\n cssElement.id = `__theme-${theme.name}`;\n cssElement.textContent = css;\n\n this.document.body.appendChild(cssElement);\n }\n\n private createThemeVariantCSS(css: string, selector: string, scheme: ThemeColorScheme): string {\n css += `${selector} {\\n`;\n for (const key of Object.keys(scheme)) {\n css += `${key}: ${scheme[key]};\\n`;\n }\n css += '}\\n';\n return css;\n }\n\n private removeThemeCSS(name: string): void {\n const id = `__theme-${name}`;\n this.document.getElementById(id)?.remove();\n this.document.documentElement.classList.remove(`theme-${name}`);\n }\n\n private toggleDark(dark: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n\n this.document.documentElement.classList.toggle('app--dark', dark);\n const colorScheme = dark ? 'dark' : 'light';\n this.meta.updateTag({ name: 'color-scheme', content: colorScheme });\n this.resolvedColorSchemeSub.next(colorScheme);\n this.dispatchThemeSwitchEvent();\n }\n\n private cloneTheme(theme: Theme): Theme {\n const clone: Theme = { ...theme, schemes: {} };\n if (theme.schemes.light) {\n clone.schemes.light = { ...theme.schemes.light };\n }\n if (theme.schemes.dark) {\n clone.schemes.dark = { ...theme.schemes.dark };\n }\n return clone;\n }\n\n private dispatchThemeSwitchEvent(): void {\n window.dispatchEvent(\n new CustomEvent('theme-switch', {\n detail: {\n dark: this._resolvedColorScheme === 'dark',\n colorScheme: this._resolvedColorScheme\n }\n })\n );\n }\n\n private parseDataSvgIcon(icon: string): SafeHtml {\n // This method is currently a copy of parseDataSvgIcon in si-icon.registry.ts.\n // Those are likely to diverge in the future, as this version will get support for other formats like:\n // - URLs\n // - Plain SVG data\n // - Promises to enable lazy icon loading using import()\n const parsed = /^data:image\\/svg\\+xml;utf8,(.*)$/.exec(icon);\n if (!parsed) {\n console.error('Failed to parse icon', icon);\n return '';\n }\n return this.domSanitizer.bypassSecurityTrustHtml(parsed[1]);\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-theme-store';\nexport * from './si-theme.service';\nexport * from './si-theme.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-theme.mjs","sources":["../../../../projects/element-ng/theme/si-theme-store.ts","../../../../projects/element-ng/theme/si-theme.model.ts","../../../../projects/element-ng/theme/si-theme.service.ts","../../../../projects/element-ng/theme/index.ts","../../../../projects/element-ng/theme/siemens-element-ng-theme.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Observable, of } from 'rxjs';\n\nimport { Theme } from './si-theme.model';\n\n/**\n * SiThemeStore object is used by the theme service to load and\n * store the themes. You can inject your own implementation to provide\n * a backend implementation. Otherwise a localStorage based implementation\n * is used.\n */\nexport abstract class SiThemeStore {\n /**\n * Load and return an alternative custom theme, other then\n * the default element theme. This method is invoked initially\n * to check for an alternative custom theme.\n * @returns The active theme to be used, or undefined if the\n * default element theme shall be used. All wrapped in an observable\n * that can also emit errors.\n */\n abstract loadActiveTheme(): Observable<Theme | undefined>;\n /**\n * Sets the theme with the given name to active.\n * @param name - The name of the theme to become active.\n * @returns True on success, otherwise false.\n */\n abstract activateTheme(name: string): Observable<boolean>;\n /**\n * Deactivate any active theme and makes the element theme the default one.\n * @returns True on success, otherwise false.\n */\n abstract deactivateTheme(): Observable<boolean>;\n /**\n * Load and return the available theme names.\n * @returns An `Observable` of available theme names, other than the\n * default element theme.\n */\n abstract loadThemeNames(): Observable<string[]>;\n /**\n * Load theme with the given `name`.\n * @param name - The name of the theme to be returned.\n * @returns Observable with the named theme or `undefined` if no such theme exist.\n */\n abstract loadTheme(name: string): Observable<Theme | undefined>;\n /**\n * Saves a theme to the store. The name shall not be empty. A theme with\n * identical name gets overwritten.\n * @param theme - The theme to be saved.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors.\n */\n abstract saveTheme(theme: Theme): Observable<boolean>;\n /**\n * Deletes the theme with the given name from the store.\n * @param name - The name of the theme to be deleted.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors. Returns false,\n * if the theme does not exist.\n */\n abstract deleteTheme(name: string): Observable<boolean>;\n}\n\nexport const SI_THEME_LOCAL_STORAGE_KEY = 'si-themes';\n\nexport interface ThemeStorage {\n activeTheme: string | undefined;\n themes: { [key: string]: Theme };\n}\n\nexport class SiDefaultThemeStore extends SiThemeStore {\n private isBrowser: boolean;\n\n constructor(isBrowser: boolean) {\n super();\n this.isBrowser = isBrowser;\n }\n\n loadActiveTheme(): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n\n const store = this.loadStore();\n if (store.activeTheme) {\n return of(store.themes[store.activeTheme]);\n } else {\n return of(undefined);\n }\n }\n\n activateTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n if (store.themes[name]) {\n store.activeTheme = name;\n this.saveStore(store);\n return of(true);\n } else {\n return of(false);\n }\n }\n\n deactivateTheme(): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.activeTheme = undefined;\n this.saveStore(store);\n return of(true);\n }\n\n loadThemeNames(): Observable<string[]> {\n if (!this.isBrowser) {\n return of([]);\n }\n const store = this.loadStore();\n return of(Array.from(Object.keys(store.themes)));\n }\n\n saveTheme(theme: Theme): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.themes[theme.name] = theme;\n this.saveStore(store);\n return of(true);\n }\n\n loadTheme(name: string): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n const store = this.loadStore();\n return of(store.themes[name]);\n }\n\n deleteTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n delete store.themes[name];\n if (store.activeTheme === name) {\n store.activeTheme = undefined;\n }\n this.saveStore(store);\n return of(true);\n }\n\n private loadStore(): ThemeStorage {\n const storeStr = localStorage.getItem(SI_THEME_LOCAL_STORAGE_KEY);\n if (storeStr) {\n return JSON.parse(storeStr) as ThemeStorage;\n } else {\n return { activeTheme: undefined, themes: {} };\n }\n }\n\n private saveStore(store: ThemeStorage): void {\n localStorage.setItem(SI_THEME_LOCAL_STORAGE_KEY, JSON.stringify(store));\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport interface ThemeDescription {\n name: string;\n groups: ThemePropertyGroup[];\n}\n\nexport interface ThemePropertyGroup {\n name: string;\n description?: string;\n properties: ThemeProperty[];\n}\n\nexport interface ThemeProperty {\n name: string;\n usage: string;\n type: ThemePropertyType;\n}\n\nexport type ThemePropertyType = 'color' | 'gradient' | 'font' | 'url' | 'text' | 'number';\n\nexport interface Theme {\n name: string;\n schemes: ThemeColorSchemes;\n /**\n * A map of icons that overrides the default Element icons.\n * The key must be the key of the original icon that should be overridden.\n * The value has to be a data SVG string.\n *\n * @example\n * ```ts\n * {\n * elementUser: \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'>...</svg>\"\n * }\n * ```\n *\n * @experimental\n */\n icons?: Record<string, string>;\n}\n\nexport interface ThemeColorSchemes {\n light?: ThemeColorScheme;\n dark?: ThemeColorScheme;\n}\n\nexport type ThemeColorScheme = { [key: string]: string };\n\nexport type ThemeType = 'dark' | 'light' | 'auto';\n\nexport const ELEMENT_THEME_NAME = 'element';\n\nexport const elementTheme: ThemeDescription = {\n name: 'element',\n groups: [\n {\n name: 'Branding',\n description: 'Configure the brand logo.',\n properties: [\n {\n name: '--element-brand-logo',\n usage: 'Enter a brand logo in the format: \\'url(\"https://company/logo.svg\")\\'',\n type: 'text'\n },\n {\n name: '--element-brand-logo-width',\n usage: \"Enter the width of the logo as CSS width value. Example: '100px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-height',\n usage: \"Enter the height of the logo as CSS width value. Max: 48px; Example: '16px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-text',\n usage:\n 'Enter a textual representation of the logo. Example: \\'\"Siemens logo\"\\'. The text must be wrapped in double quotes.',\n type: 'text'\n }\n ]\n },\n {\n name: 'Basic definitions',\n description: 'Basic definitions',\n properties: [\n {\n name: '--element-body-font-family',\n usage: 'The theme only uses one font everywhere.',\n type: 'font'\n },\n { name: '--element-button-radius', usage: 'Button border radius', type: 'text' },\n { name: '--element-button-focus-width', usage: 'Focus width', type: 'text' },\n {\n name: '--element-button-focus-overlay-width',\n usage: 'Focus overlay width',\n type: 'text'\n },\n {\n name: '--element-button-focus-overlay-color',\n usage: 'Focus overlay color',\n type: 'text'\n },\n { name: '--element-input-radius', usage: 'Input field border radius', type: 'text' },\n { name: '--element-logo-color', usage: 'Logo color', type: 'text' },\n { name: '--element-radius-1', usage: 'Border radius-1', type: 'text' },\n { name: '--element-radius-2', usage: 'Border radius-2', type: 'text' },\n { name: '--element-radius-3', usage: 'Border radius-3', type: 'text' }\n ]\n },\n {\n name: 'UI',\n description:\n 'UI colors are used on structural properties and icons and provide good contrast when used over any background.',\n properties: [\n { name: '--element-ui-0', usage: 'Logo, selected (active) elements', type: 'color' },\n { name: '--element-ui-0-hover', usage: 'Selected hover', type: 'color' },\n { name: '--element-ui-1', usage: 'Primary icons', type: 'color' },\n { name: '--element-ui-2', usage: 'Secondary icons', type: 'color' },\n { name: '--element-ui-3', usage: 'Disabled', type: 'color' },\n { name: '--element-ui-4', usage: 'Borders', type: 'color' },\n { name: '--element-ui-5', usage: 'Inverse', type: 'color' },\n { name: '--element-ui-6', usage: 'Shadows', type: 'color' },\n { name: '--element-box-shadow-color-1', usage: 'Box shadow color 1', type: 'color' },\n { name: '--element-box-shadow-color-2', usage: 'Box shadow color 2', type: 'color' },\n { name: '--element-focus-default', usage: 'Default focus color', type: 'color' }\n ]\n },\n {\n name: 'Base',\n description: 'Base colors are used as backgrounds of containers.',\n properties: [\n { name: '--element-base-0', usage: 'Page background, row background', type: 'color' },\n {\n name: '--element-base-1',\n usage: 'Header, navigation, card, table background',\n type: 'color'\n },\n {\n name: '--element-base-1-hover',\n usage: 'Hover on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-1-selected',\n usage: 'Selected on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-2',\n usage: 'Page background with higher contrast pages in dark mode',\n type: 'color'\n },\n {\n name: '--element-base-information',\n usage: 'Informational component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-success',\n usage: 'Success component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-caution',\n usage: 'Caution component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-warning',\n usage: 'Warning component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-danger',\n usage: 'Danger component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-1',\n usage: 'Translucent background, e.g. backdrop',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-2',\n usage: 'Slightly translucent background, e.g. toasts',\n type: 'gradient'\n }\n ]\n },\n {\n name: 'Actions',\n description: 'Action colors are used to indicate actions that users can perform.',\n properties: [\n { name: '--element-action-primary', usage: 'Primary interaction', type: 'gradient' },\n {\n name: '--element-action-primary-hover',\n usage: 'Primary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-primary-text', usage: 'Primary text color', type: 'color' },\n { name: '--element-action-secondary', usage: 'Secondary interaction', type: 'gradient' },\n {\n name: '--element-action-secondary-hover',\n usage: 'Secondary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-secondary-text', usage: 'Secondary text color', type: 'color' },\n {\n name: '--element-action-secondary-text-hover',\n usage: 'Secondary text color on hover',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border',\n usage: 'Secondary border color',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border-hover',\n usage: 'Secondary border color on hover',\n type: 'color'\n },\n { name: '--element-action-warning', usage: 'Warning', type: 'gradient' },\n {\n name: '--element-action-warning-hover',\n usage: 'Warning action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-warning-text', usage: 'Warning text color', type: 'color' },\n { name: '--element-action-danger', usage: 'Danger', type: 'gradient' },\n {\n name: '--element-action-danger-hover',\n usage: 'Danger action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-danger-text', usage: 'Danger text color', type: 'color' },\n {\n name: '--element-action-disabled-opacity',\n usage: 'Disabled action opacity',\n type: 'number'\n }\n ]\n },\n {\n name: 'Text',\n description: 'Similarly, categories for typography colors are also defined in this system.',\n properties: [\n { name: '--element-text-primary', usage: 'Primary', type: 'color' },\n { name: '--element-text-secondary', usage: 'Secondary', type: 'color' },\n { name: '--element-text-disabled', usage: 'Disabled', type: 'color' },\n { name: '--element-text-inverse', usage: 'Inverse', type: 'color' },\n { name: '--element-text-active', usage: 'Active', type: 'color' },\n { name: '--element-text-information', usage: 'Informational', type: 'color' },\n { name: '--element-text-success', usage: 'Success', type: 'color' },\n { name: '--element-text-caution', usage: 'Caution', type: 'color' },\n { name: '--element-text-warning', usage: 'Warning', type: 'color' },\n { name: '--element-text-danger', usage: 'Danger', type: 'color' }\n ]\n },\n {\n name: 'Status',\n description:\n 'Status colors are used to describe and/or report on the status of different things.',\n properties: [\n { name: '--element-status-information', usage: 'Informational', type: 'color' },\n {\n name: '--element-status-information-contrast',\n usage: 'Informational contrast',\n type: 'color'\n },\n { name: '--element-status-success', usage: 'Success', type: 'color' },\n { name: '--element-status-success-contrast', usage: 'Success contrast', type: 'color' },\n { name: '--element-status-caution', usage: 'Caution', type: 'color' },\n { name: '--element-status-caution-contrast', usage: 'Caution contrast', type: 'color' },\n { name: '--element-status-warning', usage: 'Warning', type: 'color' },\n { name: '--element-status-warning-contrast', usage: 'Warning contrast', type: 'color' },\n { name: '--element-status-danger', usage: 'Danger', type: 'color' },\n { name: '--element-status-danger-contrast', usage: 'Danger contrast', type: 'color' }\n ]\n },\n {\n name: 'Form feedback icons',\n description: 'Icons that are used to indicate a form item status',\n properties: [{ name: '--element-invalid-feedback-icon', usage: 'Danger', type: 'text' }]\n }\n ]\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { DomSanitizer, Meta, SafeHtml } from '@angular/platform-browser';\nimport { Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\n\nimport { SiDefaultThemeStore, SiThemeStore } from './si-theme-store';\nimport {\n ELEMENT_THEME_NAME,\n Theme,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeType\n} from './si-theme.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiThemeService {\n /**\n * The current color scheme. (e.g. light or dark).\n */\n private _resolvedColorScheme: ThemeType | undefined = 'light';\n private resolvedColorSchemeSub = new ReplaySubject<keyof ThemeColorSchemes>(1);\n /**\n * Emits events when the color scheme changes.\n *\n * @defaultValue this.resolvedColorSchemeSub.asObservable()\n */\n readonly resolvedColorScheme$ = this.resolvedColorSchemeSub.asObservable();\n /**\n * The current color scheme. (e.g. light or dark).\n */\n get resolvedColorScheme(): ThemeType | undefined {\n return this._resolvedColorScheme;\n }\n\n /**\n * All available theme names, including element theme name.\n */\n private _themeNames: string[] = [ELEMENT_THEME_NAME];\n private themeNamesSub = new ReplaySubject<string[]>(1);\n /**\n * Emits events when the list of available theme names changes.\n *\n * @defaultValue this.themeNamesSub.asObservable()\n */\n readonly themeNames$ = this.themeNamesSub.asObservable();\n\n /**\n * All available theme names, including element theme name.\n */\n get themeNames(): string[] {\n return this._themeNames;\n }\n\n /**\n * Emits events when the currently applied theme changes. Either by\n * changing to another theme or by re-applying a theme with updated\n * properties. When switching to default theme element, `undefined`\n * is emitted.\n */\n readonly themeChange = new EventEmitter<Theme | undefined>();\n\n /**\n * The name of the theme that is active. Theme name `element` is the default.\n */\n activeThemeName?: string;\n /**\n * Icon overrides by the currently activeTheme.\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly themeIcons = signal<Record<string, SafeHtml>>({});\n\n private themes: Map<string, Theme> = new Map();\n private darkMediaQuery?: MediaQueryList;\n private mediaQueryListener?: () => void;\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private previewTheme?: Theme;\n\n private themeStore =\n inject(SiThemeStore, { optional: true }) ?? new SiDefaultThemeStore(this.isBrowser);\n private meta = inject(Meta);\n private document = inject(DOCUMENT);\n private domSanitizer = inject(DomSanitizer);\n\n constructor() {\n this.resolvedColorScheme$.subscribe(scheme => (this._resolvedColorScheme = scheme));\n this.themeNames$.subscribe(names => (this._themeNames = names));\n\n if (this.isBrowser) {\n this.darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = () => this.toggleDark(this.darkMediaQuery!.matches);\n }\n\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: theme => this.applyThemeStyle(theme, this._resolvedColorScheme),\n error: error => console.error('Cannot load active theme', error)\n });\n\n this.themeStore\n .loadThemeNames()\n .pipe(take(1))\n .subscribe({\n next: names => {\n names.push(ELEMENT_THEME_NAME);\n this.themeNamesSub.next(names);\n },\n error: error => console.error('Cannot load theme names', error)\n });\n }\n\n /**\n * Returns `true` if a theme with the given name is available.\n */\n hasTheme(name: string): boolean {\n return this._themeNames.includes(name);\n }\n\n /**\n * Returns a clone of the theme with the given name or `undefined` if not\n * available or name is `element`.\n * @param name - The name of the theme to be returned.\n * @returns The theme with the given name and `undefined` if name is `element`.\n */\n getTheme(name: string): Observable<Theme | undefined> {\n if (name === ELEMENT_THEME_NAME || !this.hasTheme(name)) {\n return of(undefined);\n }\n\n if (this.themes.has(name)) {\n const theme = this.themes.get(name)!;\n // return a clone to avoid changes as a side effect\n return of(this.cloneTheme(theme));\n }\n\n return this.themeStore.loadTheme(name).pipe(\n tap(theme => {\n if (theme) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n }\n })\n );\n }\n\n /**\n * Loads and returns the currently active theme. Returns undefined if no custom theme is used.\n * @returns A custom theme or `undefined` if the default element theme is used.\n */\n getActiveTheme(): Observable<Theme | undefined> {\n if (this.activeThemeName) {\n return of(this.themes.get(this.activeThemeName));\n }\n return this.themeStore.loadActiveTheme().pipe(\n map(theme => {\n if (theme) {\n this.activeThemeName = theme.name;\n this.themes.set(theme.name, theme);\n this.applyTheme(theme, this._resolvedColorScheme);\n return theme;\n }\n this.activeThemeName = ELEMENT_THEME_NAME;\n return undefined;\n })\n );\n }\n\n /**\n * Adds or updates the given theme in the theme store.\n * @param theme - The theme to be saved.\n * @returns `true` if the theme was saved successfully.\n */\n addOrUpdateTheme(theme: Theme): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n\n this.themeStore.saveTheme(theme).subscribe({\n next: saveResult => {\n if (saveResult) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n // Update list of theme names when this is a new one\n if (!this.hasTheme(theme.name)) {\n const names = this._themeNames.concat(theme.name);\n this.themeNamesSub.next(names);\n }\n }\n result.next(saveResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Deletes the theme with the given name from the theme store.\n */\n deleteTheme(name: string): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n if (!this.hasTheme(name) || name === ELEMENT_THEME_NAME) {\n result.next(false);\n result.complete();\n } else {\n this.removeThemeCSS(name);\n this.themeStore.deleteTheme(name).subscribe({\n next: deleteResult => {\n if (deleteResult) {\n this.themes.delete(name);\n const names = this._themeNames.filter(themeName => themeName !== name);\n this.themeNamesSub.next(names);\n }\n result.next(deleteResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n }\n return result;\n }\n\n /**\n * Resets the preview theme to the default element theme.\n */\n resetPreview(): void {\n this.previewTheme = { name: '__preview', schemes: { dark: {}, light: {} } };\n this.removeThemeCSS(this.previewTheme.name);\n }\n\n /**\n * Sets the active theme to the given name. If no name is given, the default element theme is used.\n */\n setActiveTheme(name?: string, type?: ThemeType): Observable<boolean> {\n const theType = type ?? this._resolvedColorScheme ?? 'auto';\n const theName = name ?? this.activeThemeName ?? ELEMENT_THEME_NAME;\n\n if (theName === this.activeThemeName) {\n return of(true);\n }\n if (!this.hasTheme(theName)) {\n return of(false);\n }\n\n const result = new ReplaySubject<boolean>(1);\n this.activeThemeName = theName;\n // Make the change in the remove store\n const store =\n theName !== ELEMENT_THEME_NAME\n ? this.themeStore.activateTheme(theName)\n : this.themeStore.deactivateTheme();\n store\n .pipe(\n // On success, load the theme\n switchMap(storeResult => {\n if (storeResult) {\n return this.getTheme(theName);\n } else {\n return throwError(() => 'Cannot change active theme in theme store.');\n }\n }),\n // Only take one to avoid unsubscription issues\n take(1)\n )\n .subscribe({\n next: theme => {\n this.applyTheme(theme, theType);\n result.next(true);\n },\n error: error => {\n console.error(`Activating theme ${name} failed`, error);\n result.next(false);\n },\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Apply `light` or `dark` theme to the document.\n */\n applyThemeType(type: ThemeType): void {\n if (type === this._resolvedColorScheme || !this.darkMediaQuery || !this.mediaQueryListener) {\n return;\n }\n\n this.darkMediaQuery.removeEventListener('change', this.mediaQueryListener);\n\n if (type === 'light') {\n this.toggleDark(false);\n } else if (type === 'dark') {\n this.toggleDark(true);\n } else {\n this.mediaQueryListener();\n this.darkMediaQuery.addEventListener('change', this.mediaQueryListener);\n }\n }\n\n /**\n * Applies the given theme to the document. If no theme is given, the active theme is applied.\n */\n applyTheme(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (theme) {\n this.applyThemeStyle(theme, type, overwrite);\n } else {\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: loadedTheme => this.applyThemeStyle(loadedTheme, type),\n error: error => console.error('Cannot load active theme', error)\n });\n }\n }\n\n /**\n * Updates the given property of the preview theme.\n */\n updateProperty(name: string, value: string, type: keyof ThemeColorSchemes): void {\n if (!this.previewTheme) {\n this.resetPreview();\n }\n this.previewTheme!.schemes[type]![name] = value;\n this.createThemeCSS(this.previewTheme!);\n this.document.documentElement.classList.add('theme-__preview');\n this.dispatchThemeSwitchEvent();\n }\n\n /**\n * Checks if the given theme JSON object is a valid theme.\n */\n isThemeValid(data: unknown): boolean {\n const theme = data as Theme;\n return (\n !!data &&\n typeof data === 'object' &&\n 'name' in data &&\n 'schemes' in data &&\n typeof theme.name === 'string' &&\n typeof theme.schemes === 'object' &&\n this.isThemeTypeValid(theme, 'light') &&\n this.isThemeTypeValid(theme, 'dark')\n );\n }\n\n private isThemeTypeValid(theme: Theme, type: 'light' | 'dark'): boolean {\n return (\n !(type in theme.schemes) ||\n (typeof theme.schemes[type] === 'object' &&\n Object.values(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ) &&\n Object.keys(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ))\n );\n }\n\n private applyThemeStyle(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n this.resetPreview();\n\n if (theme && theme.name !== ELEMENT_THEME_NAME && (overwrite || !this.hasThemeCSS(theme))) {\n this.createThemeCSS(theme);\n }\n this.activateTheme(theme);\n\n if (type && type !== this._resolvedColorScheme) {\n this.applyThemeType(type);\n }\n\n this.themeIcons.set(\n Object.fromEntries(\n Object.entries(theme?.icons ?? {}).map(([key, icon]) => [key, this.parseDataSvgIcon(icon)])\n )\n );\n this.themeChange.emit(theme);\n }\n\n private activateTheme(theme?: Theme): void {\n const classList = this.document.documentElement.classList;\n classList.forEach(c => {\n if (c.startsWith('theme-')) {\n classList.remove(c);\n }\n });\n if (theme) {\n classList.add(`theme-${theme.name}`);\n }\n }\n\n private hasThemeCSS(theme: Theme): boolean {\n const id = `__theme-${theme.name}`;\n return !!this.document.getElementById(id);\n }\n\n private createThemeCSS(theme: Theme): void {\n let css = '';\n const themeSelector = `:root.theme-${theme.name}`;\n if (theme.schemes.light) {\n css = this.createThemeVariantCSS(css, themeSelector, theme.schemes.light);\n }\n if (theme.schemes.dark) {\n css = this.createThemeVariantCSS(css, themeSelector + '.app--dark', theme.schemes.dark);\n }\n\n this.removeThemeCSS(theme.name);\n const cssElement = this.document.createElement('style');\n cssElement.id = `__theme-${theme.name}`;\n cssElement.textContent = css;\n\n this.document.body.appendChild(cssElement);\n }\n\n private createThemeVariantCSS(css: string, selector: string, scheme: ThemeColorScheme): string {\n css += `${selector} {\\n`;\n for (const key of Object.keys(scheme)) {\n css += `${key}: ${scheme[key]};\\n`;\n }\n css += '}\\n';\n return css;\n }\n\n private removeThemeCSS(name: string): void {\n const id = `__theme-${name}`;\n this.document.getElementById(id)?.remove();\n this.document.documentElement.classList.remove(`theme-${name}`);\n }\n\n private toggleDark(dark: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n\n this.document.documentElement.classList.toggle('app--dark', dark);\n const colorScheme = dark ? 'dark' : 'light';\n this.meta.updateTag({ name: 'color-scheme', content: colorScheme });\n this.resolvedColorSchemeSub.next(colorScheme);\n this.dispatchThemeSwitchEvent();\n }\n\n private cloneTheme(theme: Theme): Theme {\n const clone: Theme = { ...theme, schemes: {} };\n if (theme.schemes.light) {\n clone.schemes.light = { ...theme.schemes.light };\n }\n if (theme.schemes.dark) {\n clone.schemes.dark = { ...theme.schemes.dark };\n }\n return clone;\n }\n\n private dispatchThemeSwitchEvent(): void {\n window.dispatchEvent(\n new CustomEvent('theme-switch', {\n detail: {\n dark: this._resolvedColorScheme === 'dark',\n colorScheme: this._resolvedColorScheme\n }\n })\n );\n }\n\n private parseDataSvgIcon(icon: string): SafeHtml {\n // This method is currently a copy of parseDataSvgIcon in si-icon.registry.ts.\n // Those are likely to diverge in the future, as this version will get support for other formats like:\n // - URLs\n // - Plain SVG data\n // - Promises to enable lazy icon loading using import()\n const parsed = /^data:image\\/svg\\+xml;utf8,(.*)$/.exec(icon);\n if (!parsed) {\n console.error('Failed to parse icon', icon);\n return '';\n }\n return this.domSanitizer.bypassSecurityTrustHtml(parsed[1]);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-theme-store';\nexport * from './si-theme.service';\nexport * from './si-theme.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { input, computed, Component, model, booleanAttribute, output, inject, ElementRef, NgModule } from '@angular/core';
4
+ import * as i1 from '@angular/forms';
5
+ import { FormsModule } from '@angular/forms';
6
+ import { SiIconNextComponent, addIcons, elementPlus } from '@siemens/element-ng/icon';
7
+ import { SiNumberInputComponent } from '@siemens/element-ng/number-input';
8
+ import { SiSelectComponent, SiSelectSingleValueDirective, SiSelectSimpleOptionsDirective } from '@siemens/element-ng/select';
9
+ import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
10
+
11
+ /**
12
+ * Copyright (c) Siemens 2016 - 2025
13
+ * SPDX-License-Identifier: MIT
14
+ */
15
+ class SiReadonlyThresholdOptionComponent {
16
+ value = input.required();
17
+ options = input.required();
18
+ option = computed(() => {
19
+ const options = this.options();
20
+ const value = this.value();
21
+ if (value && options) {
22
+ return options.find(opt => (opt.type === 'option' ? opt.value === value : opt.id === value));
23
+ }
24
+ return undefined;
25
+ });
26
+ color = computed(() => {
27
+ const option = this.option();
28
+ return !option || option.disabled
29
+ ? undefined
30
+ : option.type === 'option'
31
+ ? option.iconColor
32
+ : option.color;
33
+ });
34
+ label = computed(() => {
35
+ const option = this.option();
36
+ return option?.type === 'option' ? option.label : option?.title;
37
+ });
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiReadonlyThresholdOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiReadonlyThresholdOptionComponent, isStandalone: true, selector: "si-readonly-threshold-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "d-flex align-items-center py-2 my-4 px-4 si-title-2" }, ngImport: i0, template: `@let opt = option();
40
+ @if (opt && opt.icon) {
41
+ <i class="icon-stack">
42
+ <si-icon-next
43
+ class="icon me-2"
44
+ [icon]="opt.icon"
45
+ [ngClass]="[(!opt.disabled && color()) || '']"
46
+ />
47
+ @if (opt.type === 'option' && opt.stackedIcon) {
48
+ <si-icon-next
49
+ class="icon me-2"
50
+ [icon]="opt.stackedIcon"
51
+ [ngClass]="opt.stackedIconColor"
52
+ />
53
+ }
54
+ </i>
55
+ }
56
+ <span class="text-truncate">{{ label() | translate }}</span>`, isInline: true, styles: [":host{block-size:2rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }] });
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiReadonlyThresholdOptionComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: 'si-readonly-threshold-option', imports: [NgClass, SiTranslatePipe, SiIconNextComponent], template: `@let opt = option();
61
+ @if (opt && opt.icon) {
62
+ <i class="icon-stack">
63
+ <si-icon-next
64
+ class="icon me-2"
65
+ [icon]="opt.icon"
66
+ [ngClass]="[(!opt.disabled && color()) || '']"
67
+ />
68
+ @if (opt.type === 'option' && opt.stackedIcon) {
69
+ <si-icon-next
70
+ class="icon me-2"
71
+ [icon]="opt.stackedIcon"
72
+ [ngClass]="opt.stackedIconColor"
73
+ />
74
+ }
75
+ </i>
76
+ }
77
+ <span class="text-truncate">{{ label() | translate }}</span>`, host: { class: 'd-flex align-items-center py-2 my-4 px-4 si-title-2' }, styles: [":host{block-size:2rem}\n"] }]
78
+ }] });
79
+
80
+ /**
81
+ * Copyright (c) Siemens 2016 - 2025
82
+ * SPDX-License-Identifier: MIT
83
+ */
84
+ class SiThresholdComponent {
85
+ /**
86
+ * Options to be shown in select dropdown
87
+ *
88
+ * @defaultValue []
89
+ */
90
+ options = input([]);
91
+ /**
92
+ * The thresholds
93
+ *
94
+ * @defaultValue []
95
+ */
96
+ thresholdSteps = model([]);
97
+ /**
98
+ * The unit to show
99
+ *
100
+ * @defaultValue ''
101
+ */
102
+ unit = input('');
103
+ /**
104
+ * The min. value for the threshold value
105
+ *
106
+ * @defaultValue 0
107
+ */
108
+ minValue = input(0);
109
+ /**
110
+ * The max. value for the threshold value
111
+ *
112
+ * @defaultValue 100
113
+ */
114
+ maxValue = input(100);
115
+ /**
116
+ * The step size for the threshold value
117
+ *
118
+ * @defaultValue 1
119
+ */
120
+ stepSize = input(1);
121
+ /**
122
+ * Max. number of steps, 0 for no hard limit
123
+ *
124
+ * @defaultValue 0
125
+ */
126
+ maxSteps = input(0);
127
+ /**
128
+ * Do validation?
129
+ *
130
+ * @defaultValue true
131
+ */
132
+ validation = input(true, { transform: booleanAttribute });
133
+ /**
134
+ * When disabled, steps cannot be added/removed
135
+ *
136
+ * @defaultValue true
137
+ */
138
+ canAddRemoveSteps = input(true, { transform: booleanAttribute });
139
+ /**
140
+ * Use horizontal layout?
141
+ *
142
+ * @defaultValue false
143
+ */
144
+ horizontalLayout = input(false, { transform: booleanAttribute });
145
+ /**
146
+ * Show dec/inc buttons?
147
+ *
148
+ * @defaultValue true
149
+ */
150
+ showDecIncButtons = input(true, { transform: booleanAttribute });
151
+ /**
152
+ * The obvious
153
+ *
154
+ * @defaultValue false
155
+ */
156
+ readonly = input(false, { transform: booleanAttribute });
157
+ /**
158
+ * Indicate that the threshold options are readonly and cannot be changed. This will also disable adding / removing steps.
159
+ *
160
+ * @defaultValue false
161
+ */
162
+ readonlyConditions = input(false, { transform: booleanAttribute });
163
+ /**
164
+ * The aria-label for delete button
165
+ *
166
+ * @defaultValue
167
+ * ```
168
+ * $localize`:@@SI_THRESHOLD.DELETE:Delete step`
169
+ * ```
170
+ */
171
+ deleteAriaLabel = input($localize `:@@SI_THRESHOLD.DELETE:Delete step`);
172
+ /**
173
+ * The aria-label for add button
174
+ *
175
+ * @defaultValue
176
+ * ```
177
+ * $localize`:@@SI_THRESHOLD.ADD:Add step`
178
+ * ```
179
+ */
180
+ addAriaLabel = input($localize `:@@SI_THRESHOLD.ADD:Add step`);
181
+ /**
182
+ * The aria-label for input field
183
+ *
184
+ * @defaultValue
185
+ * ```
186
+ * $localize`:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`
187
+ * ```
188
+ */
189
+ inputAriaLabel = input($localize `:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`);
190
+ /**
191
+ * The aria-label for status selection
192
+ *
193
+ * @defaultValue
194
+ * ```
195
+ * $localize`:@@SI_THRESHOLD.STATUS:Status`
196
+ * ```
197
+ */
198
+ statusAriaLabel = input($localize `:@@SI_THRESHOLD.STATUS:Status`);
199
+ /** Fired when validation status changes */
200
+ validChange = output();
201
+ colors = computed(() => {
202
+ const colorMap = new Map();
203
+ for (const opt of this.options()) {
204
+ if (opt.type === 'option') {
205
+ colorMap.set(opt.value, opt.iconColor ?? '');
206
+ }
207
+ else if (!opt.type) {
208
+ colorMap.set(opt.id, opt.color ?? '');
209
+ }
210
+ }
211
+ return this.thresholdSteps().map(ths => colorMap.get(ths.optionValue) ?? '');
212
+ });
213
+ icons = addIcons({ elementPlus });
214
+ _valid = true;
215
+ /**
216
+ * Whether the current input value is valid or not.
217
+ */
218
+ get valid() {
219
+ return this._valid;
220
+ }
221
+ element = inject(ElementRef);
222
+ ngOnChanges() {
223
+ this.validate();
224
+ }
225
+ deleteStep(index) {
226
+ const updated = [...this.thresholdSteps()];
227
+ updated.splice(index, 1);
228
+ this.thresholdSteps.set(updated);
229
+ this.validate();
230
+ }
231
+ addStep(index) {
232
+ const newStep = { ...this.thresholdSteps()[index], value: undefined };
233
+ const updated = [...this.thresholdSteps()];
234
+ updated.splice(index + 1, 0, newStep);
235
+ this.thresholdSteps.set(updated);
236
+ this.validate();
237
+ setTimeout(() => this.element.nativeElement.querySelectorAll('input.form-control')[index]?.focus());
238
+ }
239
+ stepChange() {
240
+ this.thresholdSteps.set([...this.thresholdSteps()]);
241
+ this.validate();
242
+ }
243
+ validate() {
244
+ const prevValid = this.valid;
245
+ this._valid = true;
246
+ for (let i = 1; i < this.thresholdSteps().length; i++) {
247
+ const step = this.thresholdSteps()[i];
248
+ if (this.validation()) {
249
+ const prev = this.thresholdSteps()[i - 1];
250
+ const next = this.thresholdSteps()[i + 1];
251
+ // valid: withing min/max, each step is lower than next step with step size between
252
+ step.valid =
253
+ step.value != null &&
254
+ step.value >= this.minValue() &&
255
+ step.value <= this.maxValue() &&
256
+ (prev.value == null || step.value - this.stepSize() >= prev.value) &&
257
+ (next?.value == null || step.value + this.stepSize() <= next.value);
258
+ this._valid &&= step.valid;
259
+ }
260
+ else {
261
+ step.valid = true;
262
+ }
263
+ }
264
+ if (this.valid !== prevValid) {
265
+ this.validChange.emit(this.valid);
266
+ }
267
+ }
268
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiThresholdComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
269
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiThresholdComponent, isStandalone: true, selector: "si-threshold", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, thresholdSteps: { classPropertyName: "thresholdSteps", publicName: "thresholdSteps", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, minValue: { classPropertyName: "minValue", publicName: "minValue", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: "maxValue", publicName: "maxValue", isSignal: true, isRequired: false, transformFunction: null }, stepSize: { classPropertyName: "stepSize", publicName: "stepSize", isSignal: true, isRequired: false, transformFunction: null }, maxSteps: { classPropertyName: "maxSteps", publicName: "maxSteps", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, canAddRemoveSteps: { classPropertyName: "canAddRemoveSteps", publicName: "canAddRemoveSteps", isSignal: true, isRequired: false, transformFunction: null }, horizontalLayout: { classPropertyName: "horizontalLayout", publicName: "horizontalLayout", isSignal: true, isRequired: false, transformFunction: null }, showDecIncButtons: { classPropertyName: "showDecIncButtons", publicName: "showDecIncButtons", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, readonlyConditions: { classPropertyName: "readonlyConditions", publicName: "readonlyConditions", isSignal: true, isRequired: false, transformFunction: null }, deleteAriaLabel: { classPropertyName: "deleteAriaLabel", publicName: "deleteAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, addAriaLabel: { classPropertyName: "addAriaLabel", publicName: "addAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, inputAriaLabel: { classPropertyName: "inputAriaLabel", publicName: "inputAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, statusAriaLabel: { classPropertyName: "statusAriaLabel", publicName: "statusAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thresholdSteps: "thresholdStepsChange", validChange: "validChange" }, host: { properties: { "class.add-remove": "canAddRemoveSteps()", "class.horizontal": "horizontalLayout()", "class.dec-inc-buttons": "showDecIncButtons()" } }, usesOnChanges: true, ngImport: i0, template: "@for (step of thresholdSteps(); track step) {\n <div class=\"ths-step\">\n @if (!$first) {\n <div class=\"ths-value d-flex align-items-center\">\n @if (canAddRemoveSteps() && !readonly() && !readonlyConditions()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost element-delete m-4\"\n [attr.aria-label]=\"deleteAriaLabel() | translate\"\n (click)=\"deleteStep($index)\"\n ></button>\n }\n @if (!canAddRemoveSteps() || readonly() || readonlyConditions()) {\n <div class=\"py-4 my-4\">&#8203;</div>\n }\n <div class=\"line\">\n <div class=\"segment\" [ngClass]=\"colors()[$index - 1]\"></div>\n <div class=\"dot\"></div>\n <div class=\"segment\" [ngClass]=\"colors()[$index]\"></div>\n </div>\n <div class=\"d-flex align-items-center text-nowrap m-4\">\n <si-number-input\n #valueInput=\"ngModel\"\n class=\"form-control text-end\"\n [class.is-invalid]=\"step.valid === false\"\n [aria-label]=\"inputAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [step]=\"stepSize()\"\n [unit]=\"unit()\"\n [showButtons]=\"showDecIncButtons()\"\n [required]=\"true\"\n [(ngModel)]=\"step.value\"\n (ngModelChange)=\"stepChange()\"\n />\n </div>\n </div>\n }\n @if ($first && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n <div class=\"ths-option d-flex align-items-center\">\n @if (canAddRemoveSteps() && !readonly() && !readonlyConditions()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-secondary m-4\"\n [disabled]=\"maxSteps() && $count >= maxSteps()\"\n [attr.aria-label]=\"addAriaLabel() | translate\"\n (click)=\"addStep($index)\"\n >\n <si-icon-next [icon]=\"icons.elementPlus\" />\n </button>\n }\n @if (!canAddRemoveSteps() || readonly() || readonlyConditions()) {\n <div class=\"py-4 my-4\">&#8203;</div>\n }\n <div class=\"line\" [ngClass]=\"colors()[$index]\">\n <div class=\"segment\"></div>\n </div>\n @if (!readonly() && !readonlyConditions()) {\n <si-select\n class=\"my-4\"\n [ariaLabel]=\"statusAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [options]=\"options()\"\n [(value)]=\"step.optionValue\"\n (valueChange)=\"stepChange()\"\n />\n }\n @if (readonly() || readonlyConditions()) {\n <si-readonly-threshold-option [options]=\"options()\" [value]=\"step.optionValue\" />\n }\n </div>\n @if ($last && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n </div>\n}\n\n<ng-template #startend let-color=\"color\">\n <div class=\"ths-value d-flex align-items-center startend\">\n <div class=\"py-4 my-4\">&#8203;</div>\n <div class=\"line\">\n <div class=\"segment\" [ngClass]=\"color\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{--direction-main: column;--direction-option: row;--direction-value: row;--input-width: calc(var(--input-base-width, 90px) + var(--buttons-width, 0px))}:host.horizontal{--direction-main: row;--direction-option: column;--direction-value: column-reverse;--value-margin: -24px;padding-inline:calc(var(--value-margin) * -1)}:host.dec-inc-buttons{--buttons-width: 48px}:host,.ths-step{display:flex;flex-direction:var(--direction-main)}.ths-option{flex-direction:var(--direction-option);min-inline-size:var(--option-width, 160px)}.ths-value{flex-direction:var(--direction-value);margin-inline:var(--value-margin)}si-select{border-radius:var(--element-button-radius);overflow:hidden}.form-control{inline-size:var(--input-width);block-size:calc(1rem + 16px)}.line{align-self:stretch;flex-basis:16px;display:flex;flex-direction:var(--direction-main);align-items:center;color:var(--element-ui-2);gap:4px}.segment{flex:1;border:1px solid currentColor}.dot{inline-size:6px;block-size:6px;border:1px solid var(--element-ui-2);border-radius:50%}.startend{inline-size:calc(var(--input-width) / 2)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "component", type: SiNumberInputComponent, selector: "si-number-input", inputs: ["min", "max", "step", "value", "unit", "showButtons", "aria-label", "inputId", "disabled", "readonly", "placeholder"], outputs: ["valueChange"] }, { kind: "component", type: SiSelectComponent, selector: "si-select", inputs: ["id", "ariaLabel", "labelledby", "filterPlaceholder", "noResultsFoundLabel", "placeholder", "readonly", "hasFilter"], outputs: ["dropdownClose", "openChange"] }, { kind: "directive", type: SiSelectSingleValueDirective, selector: "si-select:not([multi])" }, { kind: "directive", type: SiSelectSimpleOptionsDirective, selector: "si-select[options]", inputs: ["options", "optionEqualCheckFn"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiReadonlyThresholdOptionComponent, selector: "si-readonly-threshold-option", inputs: ["value", "options"] }] });
270
+ }
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiThresholdComponent, decorators: [{
272
+ type: Component,
273
+ args: [{ selector: 'si-threshold', imports: [
274
+ FormsModule,
275
+ NgClass,
276
+ NgTemplateOutlet,
277
+ SiIconNextComponent,
278
+ SiNumberInputComponent,
279
+ SiSelectComponent,
280
+ SiSelectSingleValueDirective,
281
+ SiSelectSimpleOptionsDirective,
282
+ SiTranslatePipe,
283
+ SiReadonlyThresholdOptionComponent
284
+ ], host: {
285
+ '[class.add-remove]': 'canAddRemoveSteps()',
286
+ '[class.horizontal]': 'horizontalLayout()',
287
+ '[class.dec-inc-buttons]': 'showDecIncButtons()'
288
+ }, template: "@for (step of thresholdSteps(); track step) {\n <div class=\"ths-step\">\n @if (!$first) {\n <div class=\"ths-value d-flex align-items-center\">\n @if (canAddRemoveSteps() && !readonly() && !readonlyConditions()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost element-delete m-4\"\n [attr.aria-label]=\"deleteAriaLabel() | translate\"\n (click)=\"deleteStep($index)\"\n ></button>\n }\n @if (!canAddRemoveSteps() || readonly() || readonlyConditions()) {\n <div class=\"py-4 my-4\">&#8203;</div>\n }\n <div class=\"line\">\n <div class=\"segment\" [ngClass]=\"colors()[$index - 1]\"></div>\n <div class=\"dot\"></div>\n <div class=\"segment\" [ngClass]=\"colors()[$index]\"></div>\n </div>\n <div class=\"d-flex align-items-center text-nowrap m-4\">\n <si-number-input\n #valueInput=\"ngModel\"\n class=\"form-control text-end\"\n [class.is-invalid]=\"step.valid === false\"\n [aria-label]=\"inputAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [step]=\"stepSize()\"\n [unit]=\"unit()\"\n [showButtons]=\"showDecIncButtons()\"\n [required]=\"true\"\n [(ngModel)]=\"step.value\"\n (ngModelChange)=\"stepChange()\"\n />\n </div>\n </div>\n }\n @if ($first && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n <div class=\"ths-option d-flex align-items-center\">\n @if (canAddRemoveSteps() && !readonly() && !readonlyConditions()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-secondary m-4\"\n [disabled]=\"maxSteps() && $count >= maxSteps()\"\n [attr.aria-label]=\"addAriaLabel() | translate\"\n (click)=\"addStep($index)\"\n >\n <si-icon-next [icon]=\"icons.elementPlus\" />\n </button>\n }\n @if (!canAddRemoveSteps() || readonly() || readonlyConditions()) {\n <div class=\"py-4 my-4\">&#8203;</div>\n }\n <div class=\"line\" [ngClass]=\"colors()[$index]\">\n <div class=\"segment\"></div>\n </div>\n @if (!readonly() && !readonlyConditions()) {\n <si-select\n class=\"my-4\"\n [ariaLabel]=\"statusAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [options]=\"options()\"\n [(value)]=\"step.optionValue\"\n (valueChange)=\"stepChange()\"\n />\n }\n @if (readonly() || readonlyConditions()) {\n <si-readonly-threshold-option [options]=\"options()\" [value]=\"step.optionValue\" />\n }\n </div>\n @if ($last && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n </div>\n}\n\n<ng-template #startend let-color=\"color\">\n <div class=\"ths-value d-flex align-items-center startend\">\n <div class=\"py-4 my-4\">&#8203;</div>\n <div class=\"line\">\n <div class=\"segment\" [ngClass]=\"color\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{--direction-main: column;--direction-option: row;--direction-value: row;--input-width: calc(var(--input-base-width, 90px) + var(--buttons-width, 0px))}:host.horizontal{--direction-main: row;--direction-option: column;--direction-value: column-reverse;--value-margin: -24px;padding-inline:calc(var(--value-margin) * -1)}:host.dec-inc-buttons{--buttons-width: 48px}:host,.ths-step{display:flex;flex-direction:var(--direction-main)}.ths-option{flex-direction:var(--direction-option);min-inline-size:var(--option-width, 160px)}.ths-value{flex-direction:var(--direction-value);margin-inline:var(--value-margin)}si-select{border-radius:var(--element-button-radius);overflow:hidden}.form-control{inline-size:var(--input-width);block-size:calc(1rem + 16px)}.line{align-self:stretch;flex-basis:16px;display:flex;flex-direction:var(--direction-main);align-items:center;color:var(--element-ui-2);gap:4px}.segment{flex:1;border:1px solid currentColor}.dot{inline-size:6px;block-size:6px;border:1px solid var(--element-ui-2);border-radius:50%}.startend{inline-size:calc(var(--input-width) / 2)}\n"] }]
289
+ }] });
290
+
291
+ /**
292
+ * Copyright (c) Siemens 2016 - 2025
293
+ * SPDX-License-Identifier: MIT
294
+ */
295
+ class SiThresholdModule {
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiThresholdModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
297
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiThresholdModule, imports: [SiThresholdComponent], exports: [SiThresholdComponent] });
298
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiThresholdModule, imports: [SiThresholdComponent] });
299
+ }
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiThresholdModule, decorators: [{
301
+ type: NgModule,
302
+ args: [{
303
+ imports: [SiThresholdComponent],
304
+ exports: [SiThresholdComponent]
305
+ }]
306
+ }] });
307
+
308
+ /**
309
+ * Copyright (c) Siemens 2016 - 2025
310
+ * SPDX-License-Identifier: MIT
311
+ */
312
+
313
+ /**
314
+ * Generated bundle index. Do not edit.
315
+ */
316
+
317
+ export { SiThresholdComponent, SiThresholdModule };
318
+ //# sourceMappingURL=siemens-element-ng-threshold.mjs.map