@siemens/element-ng 47.3.0 → 47.5.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 (313) hide show
  1. package/badge/si-badge.component.d.ts +1 -1
  2. package/breadcrumb/breadcrumb-item.model.d.ts +36 -0
  3. package/breadcrumb/index.d.ts +7 -0
  4. package/breadcrumb/package.json +3 -0
  5. package/breadcrumb/si-breadcrumb-item-template.directive.d.ts +10 -0
  6. package/breadcrumb/si-breadcrumb.component.d.ts +46 -0
  7. package/breadcrumb/si-breadcrumb.module.d.ts +7 -0
  8. package/card/index.d.ts +6 -0
  9. package/card/package.json +3 -0
  10. package/card/si-card.component.d.ts +79 -0
  11. package/card/si-card.module.d.ts +7 -0
  12. package/circle-status/index.d.ts +6 -0
  13. package/circle-status/package.json +3 -0
  14. package/circle-status/si-circle-status.component.d.ts +66 -0
  15. package/circle-status/si-circle-status.module.d.ts +7 -0
  16. package/column-selection-dialog/column-selection-editor/si-column-selection-editor.component.d.ts +23 -0
  17. package/column-selection-dialog/index.d.ts +6 -0
  18. package/column-selection-dialog/package.json +3 -0
  19. package/column-selection-dialog/si-column-selection-dialog.component.d.ts +114 -0
  20. package/column-selection-dialog/si-column-selection-dialog.service.d.ts +20 -0
  21. package/column-selection-dialog/si-column-selection-dialog.types.d.ts +68 -0
  22. package/common/models/status-type.model.d.ts +4 -2
  23. package/datatable/index.d.ts +42 -0
  24. package/datatable/package.json +3 -0
  25. package/datatable/si-datatable-interaction.directive.d.ts +34 -0
  26. package/datatable/si-datatable.module.d.ts +7 -0
  27. package/date-range-filter/index.d.ts +8 -0
  28. package/date-range-filter/package.json +3 -0
  29. package/date-range-filter/si-date-range-calculation.service.d.ts +33 -0
  30. package/date-range-filter/si-date-range-filter.component.d.ts +248 -0
  31. package/date-range-filter/si-date-range-filter.module.d.ts +7 -0
  32. package/date-range-filter/si-date-range-filter.types.d.ts +40 -0
  33. package/date-range-filter/si-relative-date.component.d.ts +31 -0
  34. package/datepicker/components/si-calendar-body.component.d.ts +137 -0
  35. package/datepicker/components/si-calendar-date-cell.directive.d.ts +16 -0
  36. package/datepicker/components/si-calendar-direction-button.component.d.ts +18 -0
  37. package/datepicker/components/si-compare-adapter.d.ts +37 -0
  38. package/datepicker/components/si-day-selection.component.d.ts +76 -0
  39. package/datepicker/components/si-initial-focus.component.d.ts +74 -0
  40. package/datepicker/components/si-month-selection.component.d.ts +62 -0
  41. package/datepicker/components/si-year-selection.component.d.ts +65 -0
  42. package/datepicker/date-time-helper.d.ts +302 -0
  43. package/datepicker/index.d.ts +15 -0
  44. package/datepicker/package.json +3 -0
  45. package/datepicker/si-calendar-button.component.d.ts +49 -0
  46. package/datepicker/si-date-input.directive.d.ts +114 -0
  47. package/datepicker/si-date-range.component.d.ts +150 -0
  48. package/datepicker/si-datepicker-overlay.component.d.ts +82 -0
  49. package/datepicker/si-datepicker-overlay.directive.d.ts +104 -0
  50. package/datepicker/si-datepicker.component.d.ts +228 -0
  51. package/datepicker/si-datepicker.directive.d.ts +62 -0
  52. package/datepicker/si-datepicker.model.d.ts +129 -0
  53. package/datepicker/si-datepicker.module.d.ts +12 -0
  54. package/datepicker/si-timepicker.component.d.ts +214 -0
  55. package/electron-titlebar/electron.helpers.d.ts +5 -0
  56. package/electron-titlebar/index.d.ts +7 -0
  57. package/electron-titlebar/package.json +3 -0
  58. package/electron-titlebar/si-electron-titlebar.component.d.ts +72 -0
  59. package/electron-titlebar/si-electron-titlebar.module.d.ts +7 -0
  60. package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-breadcrumb.mjs +302 -0
  62. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -0
  63. package/fesm2022/siemens-element-ng-card.mjs +122 -0
  64. package/fesm2022/siemens-element-ng-card.mjs.map +1 -0
  65. package/fesm2022/siemens-element-ng-circle-status.mjs +146 -0
  66. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -0
  67. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +369 -0
  68. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -0
  69. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  70. package/fesm2022/siemens-element-ng-datatable.mjs +173 -0
  71. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -0
  72. package/fesm2022/siemens-element-ng-date-range-filter.mjs +649 -0
  73. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -0
  74. package/fesm2022/siemens-element-ng-datepicker.mjs +4231 -0
  75. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -0
  76. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +142 -0
  77. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -0
  78. package/fesm2022/siemens-element-ng-file-uploader.mjs +751 -0
  79. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -0
  80. package/fesm2022/siemens-element-ng-filter-bar.mjs +153 -0
  81. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -0
  82. package/fesm2022/siemens-element-ng-filtered-search.mjs +1139 -0
  83. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -0
  84. package/fesm2022/siemens-element-ng-formly.mjs +935 -0
  85. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -0
  86. package/fesm2022/siemens-element-ng-icon.mjs +52 -14
  87. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  88. package/fesm2022/siemens-element-ng-info-page.mjs +63 -0
  89. package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -0
  90. package/fesm2022/siemens-element-ng-inline-notification.mjs +4 -6
  91. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
  92. package/fesm2022/siemens-element-ng-ip-input.mjs +451 -0
  93. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -0
  94. package/fesm2022/siemens-element-ng-list-details.mjs +390 -0
  95. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -0
  96. package/fesm2022/siemens-element-ng-loading-spinner.mjs +15 -12
  97. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  98. package/fesm2022/siemens-element-ng-localization.mjs +306 -0
  99. package/fesm2022/siemens-element-ng-localization.mjs.map +1 -0
  100. package/fesm2022/siemens-element-ng-modal.mjs +4 -1
  101. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  102. package/fesm2022/siemens-element-ng-password-strength.mjs +22 -16
  103. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  104. package/fesm2022/siemens-element-ng-phone-number.mjs +426 -0
  105. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -0
  106. package/fesm2022/siemens-element-ng-photo-upload.mjs +480 -0
  107. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -0
  108. package/fesm2022/siemens-element-ng-result-details-list.mjs +74 -0
  109. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -0
  110. package/fesm2022/siemens-element-ng-search-bar.mjs +193 -0
  111. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -0
  112. package/fesm2022/siemens-element-ng-shadow-root.mjs +70 -0
  113. package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -0
  114. package/fesm2022/siemens-element-ng-side-panel.mjs +554 -0
  115. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -0
  116. package/fesm2022/siemens-element-ng-slider.mjs +313 -0
  117. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -0
  118. package/fesm2022/siemens-element-ng-sort-bar.mjs +89 -0
  119. package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -0
  120. package/fesm2022/siemens-element-ng-split.mjs +575 -0
  121. package/fesm2022/siemens-element-ng-split.mjs.map +1 -0
  122. package/fesm2022/siemens-element-ng-status-bar.mjs +348 -0
  123. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -0
  124. package/fesm2022/siemens-element-ng-status-toggle.mjs +196 -0
  125. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -0
  126. package/fesm2022/siemens-element-ng-system-banner.mjs +47 -0
  127. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -0
  128. package/fesm2022/siemens-element-ng-tabs-next.mjs +491 -0
  129. package/fesm2022/siemens-element-ng-tabs-next.mjs.map +1 -0
  130. package/fesm2022/siemens-element-ng-tabs.mjs +395 -0
  131. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -0
  132. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  133. package/fesm2022/siemens-element-ng-tree-view.mjs +2936 -0
  134. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -0
  135. package/fesm2022/siemens-element-ng-unauthorized-page.mjs +76 -0
  136. package/fesm2022/siemens-element-ng-unauthorized-page.mjs.map +1 -0
  137. package/fesm2022/siemens-element-ng-wizard.mjs +2 -2
  138. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  139. package/file-uploader/index.d.ts +8 -0
  140. package/file-uploader/package.json +3 -0
  141. package/file-uploader/si-file-dropzone.component.d.ts +106 -0
  142. package/file-uploader/si-file-uploader.component.d.ts +296 -0
  143. package/file-uploader/si-file-uploader.model.d.ts +12 -0
  144. package/file-uploader/si-file-uploader.module.d.ts +8 -0
  145. package/filter-bar/filter.d.ts +26 -0
  146. package/filter-bar/index.d.ts +8 -0
  147. package/filter-bar/package.json +3 -0
  148. package/filter-bar/si-filter-bar.component.d.ts +65 -0
  149. package/filter-bar/si-filter-bar.module.d.ts +7 -0
  150. package/filter-bar/si-filter-pill.component.d.ts +20 -0
  151. package/filtered-search/index.d.ts +7 -0
  152. package/filtered-search/package.json +3 -0
  153. package/filtered-search/si-filtered-search-helper.d.ts +22 -0
  154. package/filtered-search/si-filtered-search-value.component.d.ts +53 -0
  155. package/filtered-search/si-filtered-search.component.d.ts +329 -0
  156. package/filtered-search/si-filtered-search.model.d.ts +139 -0
  157. package/filtered-search/si-filtered-search.module.d.ts +7 -0
  158. package/filtered-search/values/date-value/si-filtered-search-date-value.component.d.ts +57 -0
  159. package/filtered-search/values/si-filtered-search-value.base.d.ts +27 -0
  160. package/filtered-search/values/typeahead/si-filtered-search-typeahead.component.d.ts +45 -0
  161. package/formly/fields/button/si-formly-button.component.d.ts +7 -0
  162. package/formly/fields/date-range/si-formly-date-range.component.d.ts +6 -0
  163. package/formly/fields/datetime/si-formly-datetime.component.d.ts +13 -0
  164. package/formly/fields/email/si-formly-email.component.d.ts +6 -0
  165. package/formly/fields/ip-input/si-formly-ip-input.component.d.ts +6 -0
  166. package/formly/fields/number/si-formly-number.component.d.ts +6 -0
  167. package/formly/fields/password/si-formly-password.component.d.ts +6 -0
  168. package/formly/fields/select/si-formly-select.component.d.ts +6 -0
  169. package/formly/fields/text/si-formly-text-display.component.d.ts +7 -0
  170. package/formly/fields/textarea/si-formly-textarea.component.d.ts +18 -0
  171. package/formly/fields/time/si-formly-time.component.d.ts +13 -0
  172. package/formly/index.d.ts +6 -0
  173. package/formly/package.json +3 -0
  174. package/formly/si-formly-translate.extension.d.ts +11 -0
  175. package/formly/si-formly.component.d.ts +62 -0
  176. package/formly/si-formly.module.d.ts +35 -0
  177. package/formly/structural/si-formly-accordion/si-formly-accordion.component.d.ts +13 -0
  178. package/formly/structural/si-formly-array/si-formly-array.component.d.ts +6 -0
  179. package/formly/structural/si-formly-object/si-formly-object.component.d.ts +6 -0
  180. package/formly/structural/si-formly-object-grid/si-formly-object-grid.component.d.ts +22 -0
  181. package/formly/structural/si-formly-object-grid/si-formly-object-grid.model.d.ts +21 -0
  182. package/formly/structural/si-formly-object-plain/si-formly-object-plain.component.d.ts +6 -0
  183. package/formly/structural/si-formly-tabset/si-formly-object-tabset.component.d.ts +7 -0
  184. package/formly/utils.d.ts +6 -0
  185. package/formly/wrapper/si-formly-fieldset.component.d.ts +8 -0
  186. package/formly/wrapper/si-formly-form-field-provider.directive.d.ts +19 -0
  187. package/formly/wrapper/si-formly-horizontal-wrapper.component.d.ts +6 -0
  188. package/formly/wrapper/si-formly-icon-wrapper.component.d.ts +6 -0
  189. package/formly/wrapper/si-formly-wrapper.component.d.ts +8 -0
  190. package/icon/element-icons.d.ts +15 -0
  191. package/icon/si-status-icon.component.d.ts +6 -1
  192. package/info-page/index.d.ts +5 -0
  193. package/info-page/package.json +3 -0
  194. package/info-page/si-info-page.component.d.ts +38 -0
  195. package/inline-notification/si-inline-notification.component.d.ts +0 -2
  196. package/ip-input/address-utils.d.ts +28 -0
  197. package/ip-input/address-validators.d.ts +21 -0
  198. package/ip-input/index.d.ts +7 -0
  199. package/ip-input/package.json +3 -0
  200. package/ip-input/si-ip-input.directive.d.ts +53 -0
  201. package/ip-input/si-ip4-input.directive.d.ts +9 -0
  202. package/ip-input/si-ip6-input.directive.d.ts +10 -0
  203. package/list-details/index.d.ts +12 -0
  204. package/list-details/package.json +3 -0
  205. package/list-details/si-details-pane/si-details-pane.component.d.ts +8 -0
  206. package/list-details/si-details-pane-body/si-details-pane-body.component.d.ts +6 -0
  207. package/list-details/si-details-pane-footer/si-details-pane-footer.component.d.ts +6 -0
  208. package/list-details/si-details-pane-header/si-details-pane-header.component.d.ts +38 -0
  209. package/list-details/si-list-details.component.d.ts +100 -0
  210. package/list-details/si-list-pane/si-list-pane.component.d.ts +10 -0
  211. package/list-details/si-list-pane-body/si-list-pane-body.component.d.ts +6 -0
  212. package/list-details/si-list-pane-header/si-list-pane-header.component.d.ts +6 -0
  213. package/loading-spinner/si-loading-spinner.directive.d.ts +3 -2
  214. package/localization/index.d.ts +8 -0
  215. package/localization/package.json +3 -0
  216. package/localization/si-directionality.d.ts +41 -0
  217. package/localization/si-locale-id.d.ts +22 -0
  218. package/localization/si-locale-store.d.ts +16 -0
  219. package/localization/si-locale.service.d.ts +73 -0
  220. package/package.json +161 -9
  221. package/password-strength/si-password-strength.directive.d.ts +11 -0
  222. package/phone-number/index.d.ts +7 -0
  223. package/phone-number/package.json +3 -0
  224. package/phone-number/si-phone-number-input-select.directive.d.ts +10 -0
  225. package/phone-number/si-phone-number-input.component.d.ts +137 -0
  226. package/phone-number/si-phone-number-input.models.d.ts +48 -0
  227. package/phone-number/si-phone-number-input.module.d.ts +7 -0
  228. package/photo-upload/index.d.ts +6 -0
  229. package/photo-upload/package.json +3 -0
  230. package/photo-upload/si-image-cropper-style.component.d.ts +5 -0
  231. package/photo-upload/si-photo-upload.component.d.ts +298 -0
  232. package/result-details-list/index.d.ts +7 -0
  233. package/result-details-list/package.json +3 -0
  234. package/result-details-list/si-result-details-list.component.d.ts +14 -0
  235. package/result-details-list/si-result-details-list.datamodel.d.ts +48 -0
  236. package/result-details-list/si-result-details-list.module.d.ts +7 -0
  237. package/search-bar/index.d.ts +6 -0
  238. package/search-bar/package.json +3 -0
  239. package/search-bar/si-search-bar.component.d.ts +87 -0
  240. package/search-bar/si-search-bar.module.d.ts +7 -0
  241. package/shadow-root/index.d.ts +5 -0
  242. package/shadow-root/package.json +3 -0
  243. package/shadow-root/si-shadow-root.directive.d.ts +39 -0
  244. package/side-panel/index.d.ts +9 -0
  245. package/side-panel/package.json +3 -0
  246. package/side-panel/si-side-panel-content.component.d.ts +105 -0
  247. package/side-panel/si-side-panel.component.d.ts +108 -0
  248. package/side-panel/si-side-panel.module.d.ts +8 -0
  249. package/side-panel/si-side-panel.service.d.ts +45 -0
  250. package/side-panel/side-panel.model.d.ts +16 -0
  251. package/slider/index.d.ts +6 -0
  252. package/slider/package.json +3 -0
  253. package/slider/si-slider.component.d.ts +129 -0
  254. package/slider/si-slider.module.d.ts +7 -0
  255. package/sort-bar/index.d.ts +6 -0
  256. package/sort-bar/package.json +3 -0
  257. package/sort-bar/si-sort-bar.component.d.ts +42 -0
  258. package/sort-bar/si-sort-bar.module.d.ts +7 -0
  259. package/split/index.d.ts +8 -0
  260. package/split/package.json +3 -0
  261. package/split/si-split-part.component.d.ts +154 -0
  262. package/split/si-split.component.d.ts +48 -0
  263. package/split/si-split.interfaces.d.ts +17 -0
  264. package/split/si-split.module.d.ts +8 -0
  265. package/status-bar/index.d.ts +7 -0
  266. package/status-bar/package.json +3 -0
  267. package/status-bar/si-status-bar-item/index.d.ts +6 -0
  268. package/status-bar/si-status-bar-item/si-status-bar-item.component.d.ts +22 -0
  269. package/status-bar/si-status-bar-item/si-status-bar-item.model.d.ts +33 -0
  270. package/status-bar/si-status-bar.component.d.ts +116 -0
  271. package/status-bar/si-status-bar.module.d.ts +7 -0
  272. package/status-toggle/index.d.ts +6 -0
  273. package/status-toggle/package.json +3 -0
  274. package/status-toggle/si-status-toggle.component.d.ts +54 -0
  275. package/status-toggle/status-toggle.model.d.ts +26 -0
  276. package/system-banner/index.d.ts +5 -0
  277. package/system-banner/package.json +3 -0
  278. package/system-banner/system-banner.component.d.ts +23 -0
  279. package/tabs/index.d.ts +7 -0
  280. package/tabs/package.json +3 -0
  281. package/tabs/si-tab/index.d.ts +5 -0
  282. package/tabs/si-tab/si-tab.component.d.ts +58 -0
  283. package/tabs/si-tabs.module.d.ts +8 -0
  284. package/tabs/si-tabset/index.d.ts +5 -0
  285. package/tabs/si-tabset/si-tabset.component.d.ts +100 -0
  286. package/tabs-next/index.d.ts +7 -0
  287. package/tabs-next/package.json +3 -0
  288. package/tabs-next/si-tab-next-base.directive.d.ts +66 -0
  289. package/tabs-next/si-tab-next-link.component.d.ts +18 -0
  290. package/tabs-next/si-tab-next.component.d.ts +16 -0
  291. package/tabs-next/si-tabs-tokens.d.ts +7 -0
  292. package/tabs-next/si-tabset-next.component.d.ts +72 -0
  293. package/template-i18n.json +111 -0
  294. package/translate/si-translatable-keys.interface.d.ts +111 -0
  295. package/tree-view/drag-drop.util.d.ts +32 -0
  296. package/tree-view/index.d.ts +12 -0
  297. package/tree-view/package.json +3 -0
  298. package/tree-view/si-tree-view-converter.service.d.ts +41 -0
  299. package/tree-view/si-tree-view-item/si-tree-view-item.component.d.ts +105 -0
  300. package/tree-view/si-tree-view-item/si-tree-view-item.directive.d.ts +24 -0
  301. package/tree-view/si-tree-view-item-context.d.ts +11 -0
  302. package/tree-view/si-tree-view-item-height.service.d.ts +49 -0
  303. package/tree-view/si-tree-view-item-template.directive.d.ts +18 -0
  304. package/tree-view/si-tree-view-virtualization.service.d.ts +150 -0
  305. package/tree-view/si-tree-view.component.d.ts +466 -0
  306. package/tree-view/si-tree-view.model.d.ts +146 -0
  307. package/tree-view/si-tree-view.module.d.ts +10 -0
  308. package/tree-view/si-tree-view.service.d.ts +55 -0
  309. package/tree-view/si-tree-view.utils.d.ts +46 -0
  310. package/unauthorized-page/index.d.ts +6 -0
  311. package/unauthorized-page/package.json +3 -0
  312. package/unauthorized-page/si-unauthorized-page.component.d.ts +35 -0
  313. package/unauthorized-page/si-unauthorized-page.module.d.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-side-panel.mjs","sources":["../../../../projects/element-ng/side-panel/si-side-panel.service.ts","../../../../projects/element-ng/side-panel/si-side-panel.component.ts","../../../../projects/element-ng/side-panel/si-side-panel.component.html","../../../../projects/element-ng/side-panel/si-side-panel-content.component.ts","../../../../projects/element-ng/side-panel/si-side-panel-content.component.html","../../../../projects/element-ng/side-panel/si-side-panel.module.ts","../../../../projects/element-ng/side-panel/side-panel.model.ts","../../../../projects/element-ng/side-panel/index.ts","../../../../projects/element-ng/side-panel/siemens-element-ng-side-panel.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Portal } from '@angular/cdk/portal';\nimport { Injectable, signal } from '@angular/core';\nimport { BehaviorSubject, EMPTY, Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SiSidePanelService {\n private contentSubject = new BehaviorSubject<Portal<any> | undefined>(undefined);\n /** @internal */\n readonly content$ = this.contentSubject.asObservable();\n\n private openSubject = new BehaviorSubject<boolean>(false);\n /**\n * Emits on side panel is open or close.\n *\n * @defaultValue this.openSubject.asObservable()\n */\n readonly isOpen$ = this.openSubject.asObservable();\n\n private tempContentSubject = new BehaviorSubject<Portal<any> | undefined>(undefined);\n /** @internal */\n readonly tempContent$ = this.tempContentSubject.asObservable();\n\n private tempContentClosed?: Subject<void>;\n /** @internal */\n readonly enableMobile = signal(false);\n /** Set or update displayed content. */\n setSidePanelContent(portal: Portal<any> | undefined): void {\n this.contentSubject.next(portal);\n }\n\n /** Open side panel. */\n open(): void {\n this.hideTemporaryContent();\n this.openSubject.next(true);\n }\n\n /** Close side panel. */\n close(): void {\n if (this.hideTemporaryContent()) {\n return;\n }\n this.openSubject.next(false);\n }\n\n /** Toggle side panel open/close. */\n toggle(): void {\n this.hideTemporaryContent();\n this.openSubject.next(!this.openSubject.value);\n }\n\n /** Indicate is side panel open. */\n isOpen(): boolean {\n return this.openSubject.value;\n }\n\n /**\n * Indicate that the side panel is open with temporary content.\n */\n isTemporaryOpen(): boolean {\n return !!this.tempContentSubject.value;\n }\n\n /** Show side panel temporary content, opening the side panel when necessary. */\n showTemporaryContent(portal: Portal<any> | undefined): Observable<void> {\n this.hideTemporaryContent();\n this.tempContentSubject.next(portal);\n\n if (portal) {\n this.tempContentClosed = new Subject();\n return this.tempContentClosed.asObservable();\n }\n return EMPTY;\n }\n\n /** Hide side panel temporary content, reverting to state before showing temporary content. */\n hideTemporaryContent(): boolean {\n if (!this.isTemporaryOpen()) {\n return false;\n }\n if (this.tempContentClosed) {\n const sub = this.tempContentClosed;\n this.tempContentClosed = undefined;\n sub.next();\n sub.complete();\n }\n this.tempContentSubject.next(undefined);\n return true;\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkPortalOutlet, Portal, PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n Breakpoints,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { SiSidePanelService } from './si-side-panel.service';\nimport { SidePanelMode, SidePanelSize } from './side-panel.model';\n\n@Component({\n selector: 'si-side-panel',\n templateUrl: './si-side-panel.component.html',\n styleUrl: './si-side-panel.component.scss',\n host: {\n class: 'si-layout-inner',\n '[class.enable-mobile]': 'enableMobile()',\n '[class.rpanel-size--regular]': 'this.size() === \"regular\"',\n '[class.rpanel-size--wide]': 'this.size() === \"wide\"',\n '[class.rpanel-mode--over]': 'this.mode() === \"over\"',\n '[class.rpanel-mode--scroll]': 'isScrollMode()',\n '[class.rpanel-collapsed]': 'isCollapsed()',\n '[class.ready]': 'ready()',\n '[class.collapsible]': 'collapsible() && !this.showTempContent()',\n '[class.collapsible-temp]': 'collapsible() && this.showTempContent()',\n '[class.rpanel-hidden]': 'isHidden()',\n '[class.rpanel-resize-xs]': 'isXs()',\n '[class.rpanel-resize-sm]': 'isSm()',\n '[class.rpanel-resize-md]': 'isMd()',\n '[class.rpanel-resize-lg]': 'isLg()',\n '[class.rpanel-resize-xl]': 'isXl()'\n },\n imports: [PortalModule]\n})\nexport class SiSidePanelComponent implements OnInit, OnDestroy, OnChanges {\n /**\n * @defaultValue false\n */\n readonly collapsible = input(false, { transform: booleanAttribute });\n\n /**\n * Default state of navigation\n */\n readonly collapsed = model<boolean>();\n\n /**\n * Mode of side panel\n * (ignored below a certain width)\n *\n * @defaultValue 'over'\n */\n readonly mode = input<SidePanelMode>('over');\n\n /**\n * Size of side-panel\n *\n * @defaultValue 'regular'\n */\n readonly size = input<SidePanelSize>('regular');\n\n /**\n * Toggle icon aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`\n * ```\n */\n readonly toggleItemLabel = input($localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`);\n\n /**\n * Specifies custom breakpoints to automatically switch mode.\n * The `smMinimum` specifies the breakpoint for the mobile view.\n * The `lgMinimum` specifies the breakpoint to allow scroll mode\n * (below automatically uses over mode).\n * The `xlMinimum` specifies the breakpoint to allow scroll mode\n * with wide size (below automatically uses over mode).\n */\n readonly breakpoints = input<Breakpoints>();\n\n /**\n * Enable mobile drawer for small screen sizes. Should not be used in conjunction with the vertical navbar.\n *\n * @defaultValue false\n */\n readonly enableMobile = input(false, { transform: booleanAttribute });\n\n /**\n * Emits when the panel is closed\n */\n readonly closed = output();\n\n /**\n * Emits whenever the content is resized due to opening and closing or parent resize.\n */\n readonly contentResize = output<ElementDimensions>();\n\n protected readonly isScrollMode = computed(() => this.mode() === 'scroll');\n\n protected readonly isXs = signal(false);\n protected readonly isSm = signal(false);\n protected readonly isMd = signal(true);\n protected readonly isLg = signal(false);\n protected readonly isXl = signal(false);\n protected readonly isCollapsed = signal(false);\n protected readonly ready = signal(false);\n protected readonly isHidden = signal(false);\n protected readonly showTempContent = signal(false);\n\n private readonly panelElement = viewChild.required<ElementRef>('sidePanel');\n private readonly contentElement = viewChild.required<ElementRef>('content');\n private readonly portalOutlet = viewChild.required<CdkPortalOutlet, CdkPortalOutlet>(\n 'portalOutlet',\n {\n read: CdkPortalOutlet\n }\n );\n private readonly tmpPortalOutlet = viewChild.required<CdkPortalOutlet, CdkPortalOutlet>(\n 'tmpPortalOutlet',\n {\n read: CdkPortalOutlet\n }\n );\n\n /**\n * The $rpanel-transition-duration in the style is 0.5 seconds.\n * Sending the resize event after resize need to wait until resize is done.\n */\n private readonly resizeEventDelay = 500;\n private resizeEvent = new Subject<void>();\n private openingOrClosing = false;\n private previousContentDimensions: ElementDimensions = { width: 0, height: 0 };\n private isCollapsedInternal = false; // same as the other one, except w/o timeout for animation\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly element = inject(ElementRef);\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly service = inject(SiSidePanelService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n\n constructor() {\n if (this.isBrowser) {\n this.resizeEvent\n .asObservable()\n .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(this.resizeEventDelay))\n .subscribe(() => {\n this.openingOrClosing = false;\n this.emitResizeOutputs();\n if (this.isCollapsedInternal && !this.collapsible()) {\n this.isHidden.set(true);\n }\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.collapsed) {\n if (this.collapsed()) {\n this.service.close();\n } else {\n this.service.open();\n }\n } else if (changes.enableMobile) {\n this.service.enableMobile.set(this.enableMobile());\n }\n }\n\n ngOnInit(): void {\n // handle initial state to avoid flicker\n const collapsed = this.collapsed() ?? !this.service.isOpen();\n this.isCollapsedInternal = collapsed;\n this.isHidden.set(collapsed);\n this.isCollapsed.set(collapsed);\n\n this.resizeObserver\n .observe(this.element.nativeElement, 100, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dim => {\n this.setBreakpoints(dim.width, dim.height);\n if (!this.ready()) {\n // delay because the initial sizing needs to settle\n setTimeout(() => {\n this.ready.set(true);\n }, 100);\n }\n if (!this.openingOrClosing) {\n this.emitResizeOutputs();\n }\n });\n\n this.service.content$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(portal => this.attachContent(portal));\n\n this.service.tempContent$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(portal => this.attachTempContent(portal));\n\n this.service.isOpen$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(state => this.openClose(state));\n }\n\n ngOnDestroy(): void {\n this.portalOutlet().detach();\n }\n /**\n * Toggle whether the side panel is expanded or not.\n */\n toggleSidePanel(): void {\n if (this.collapsible()) {\n this.service.toggle();\n } else {\n this.service.close();\n }\n }\n\n private emitResizeOutputs(): void {\n const contentDimensions = this.getContentDimensions();\n if (\n contentDimensions.width !== this.previousContentDimensions.width ||\n contentDimensions.height !== this.previousContentDimensions.height\n ) {\n this.previousContentDimensions = contentDimensions;\n this.contentResize.emit(contentDimensions);\n }\n }\n\n private getContentDimensions(): ElementDimensions {\n if (!this.isCollapsedInternal && this.isXs()) {\n return { width: 0, height: 0 };\n }\n const rect = this.contentElement().nativeElement.getBoundingClientRect();\n return { width: rect.width, height: rect.height };\n }\n\n private setBreakpoints(width: number, height: number): void {\n if (!width && !height) {\n // element is not visible, no point in changing anything\n return;\n }\n const breakpoints = this.breakpoints() ?? BOOTSTRAP_BREAKPOINTS;\n\n this.isXs.set(width < breakpoints.smMinimum);\n this.isSm.set(width >= breakpoints.smMinimum && width < breakpoints.mdMinimum);\n this.isMd.set(width >= breakpoints.mdMinimum && width < breakpoints.lgMinimum);\n this.isLg.set(width >= breakpoints.lgMinimum && width < breakpoints.xlMinimum);\n this.isXl.set(width >= breakpoints.xlMinimum);\n }\n\n private sendResize(): void {\n if (this.isScrollMode() || this.element.nativeElement.style.paddingRight !== '0') {\n this.openingOrClosing = true;\n this.resizeEvent.next();\n }\n }\n\n private attachContent(portal?: Portal<any>): void {\n const portalOutlet = this.portalOutlet();\n portalOutlet.detach();\n if (portal) {\n portalOutlet.attach(portal);\n }\n this.cdRef.markForCheck();\n }\n\n private attachTempContent(portal: Portal<any> | undefined): void {\n const tmpPortalOutlet = this.tmpPortalOutlet();\n tmpPortalOutlet.detach();\n if (portal) {\n tmpPortalOutlet.attach(portal);\n this.showTempContent.set(true);\n this.openClose(true, true);\n } else if (this.showTempContent) {\n this.showTempContent.set(false);\n this.openClose(this.service.isOpen(), true);\n }\n }\n\n private openClose(open: boolean, regainFocus = false): void {\n if (open !== this.isCollapsedInternal) {\n this.moveFocusInside(open && regainFocus);\n return;\n }\n this.isCollapsedInternal = !open;\n if (open) {\n this.isHidden.set(false);\n }\n setTimeout(() => this.doOpenClose(open));\n }\n\n private doOpenClose(open: boolean): void {\n this.moveFocusInside(open);\n this.isCollapsed.set(!open);\n this.collapsed.set(this.isCollapsed());\n if (this.isCollapsedInternal) {\n this.closed.emit();\n }\n this.sendResize();\n }\n\n private moveFocusInside(open: boolean): void {\n if (\n open &&\n !this.document.activeElement?.parentElement?.classList.contains(\n 'side-panel-collapse-toggle'\n ) &&\n !this.document.activeElement?.classList.contains('side-panel-collapse-toggle')\n ) {\n // moves the keyboard focus inside the panel so that the next tab is somewhere useful\n this.panelElement().nativeElement.focus();\n queueMicrotask(() => this.panelElement().nativeElement.blur());\n }\n }\n}\n","<div #sidePanel class=\"side-panel focus-none\" tabindex=\"-1\">\n <div class=\"inner\" [class.d-none]=\"showTempContent()\">\n <ng-content select=\"si-side-panel-content, element-side-panel-content\" />\n <ng-container #portalOutlet cdkPortalOutlet />\n </div>\n <div class=\"inner\" [class.d-none]=\"!showTempContent()\">\n <ng-container #tmpPortalOutlet cdkPortalOutlet />\n </div>\n</div>\n<div #content class=\"main-content si-layout-inner\">\n <ng-content />\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SiAccordionHCollapseService } from '@siemens/element-ng/accordion';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport {\n ContentActionBarMainItem,\n SiContentActionBarComponent\n} from '@siemens/element-ng/content-action-bar';\nimport {\n elementDoubleLeft,\n elementDoubleRight,\n addIcons,\n SiIconNextComponent\n} from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslateModule, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiSidePanelService } from './si-side-panel.service';\n\n/**\n * An extension of MenuItem to support combined icons\n */\nexport interface StatusItem extends MenuItemLegacy {\n overlayIcon?: string;\n}\n\n@Component({\n selector: 'si-side-panel-content',\n templateUrl: './si-side-panel-content.component.html',\n providers: [SiAccordionHCollapseService],\n styleUrl: './si-side-panel-content.component.scss',\n imports: [\n SiContentActionBarComponent,\n SiIconNextComponent,\n SiLinkDirective,\n SiSearchBarComponent,\n SiTranslateModule\n ],\n host: {\n '[class.collapsed]': 'isCollapsed()',\n '[class.expanded]': 'isExpanded()',\n '[class.enable-mobile]': 'enableMobile()'\n }\n})\nexport class SiSidePanelContentComponent implements OnInit {\n /**\n * @defaultValue false\n */\n readonly collapsible = input(false, { transform: booleanAttribute });\n\n /**\n * Header of side panel\n *\n * @defaultValue ''\n */\n readonly heading = input<TranslatableString>('');\n\n /**\n * Input list of primary action items\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n\n /**\n * Status icons/actions\n *\n * @defaultValue []\n */\n readonly statusActions = input<StatusItem[]>([]);\n\n /**\n * Toggles search bar\n *\n * @defaultValue false\n */\n readonly searchable = input(false, { transform: booleanAttribute });\n\n /**\n * Placeholder text for search\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SIDE_PANEL.SEARCH_PLACEHOLDER:Search...`\n * ```\n */\n readonly searchPlaceholder = input($localize`:@@SI_SIDE_PANEL.SEARCH_PLACEHOLDER:Search...`);\n\n /**\n * Aria label for close button. Needed for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SIDE_PANEL.CLOSE:Close`\n * ```\n */\n readonly closeButtonLabel = input($localize`:@@SI_SIDE_PANEL.CLOSE:Close`);\n\n /**\n * Toggle icon aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`\n * ```\n */\n readonly toggleItemLabel = input($localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`);\n\n /**\n * Show a badge on the mobile drawer indicating a new alert or notification\n *\n * @defaultValue false\n */\n readonly showMobileDrawerBadge = input(false, { transform: booleanAttribute });\n\n /**\n * Output for search bar input\n */\n readonly searchEvent = output<string>();\n\n protected readonly isCollapsed = signal(false);\n protected readonly isExpanded = signal(true);\n protected readonly enableMobile = computed(() => this.service?.enableMobile() ?? false);\n protected readonly mobileSize = signal(false);\n protected readonly focusable = computed(\n () => !this.mobileSize() || !this.enableMobile() || !this.isCollapsed()\n );\n protected readonly icons = addIcons({ elementDoubleLeft, elementDoubleRight });\n /**\n * The $rpanel-transition-duration in the style is 0.5 seconds.\n * For the animation we need to wait until the resize is done.\n */\n private readonly resizeAnimationDelay = 500;\n private readonly destroyRef = inject(DestroyRef);\n private readonly service = inject(SiSidePanelService);\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n private expandedTimeout: any;\n\n constructor() {\n const accordionHcollapse = inject(SiAccordionHCollapseService);\n this.service.isOpen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(state => {\n this.isCollapsed.set(!state);\n clearTimeout(this.expandedTimeout);\n this.expandedTimeout = undefined;\n if (!state) {\n this.isExpanded.set(false);\n } else {\n this.expandedTimeout = setTimeout(() => {\n this.isExpanded.set(true);\n }, this.resizeAnimationDelay / 2);\n }\n accordionHcollapse.hcollapsed.set(!state);\n });\n accordionHcollapse.open$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.service.open());\n }\n\n ngOnInit(): void {\n this.breakpointObserver\n .observe('(max-width: ' + BOOTSTRAP_BREAKPOINTS.smMinimum + 'px)')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ matches }) => {\n this.mobileSize.set(matches);\n });\n }\n\n protected toggleSidePanel(event?: MouseEvent): void {\n if (event?.detail !== 0) {\n // Blur except if triggered by keyboard\n (document?.activeElement as HTMLElement)?.blur();\n }\n if (this.service.isTemporaryOpen()) {\n this.service.hideTemporaryContent();\n } else {\n this.service.toggle();\n }\n }\n}\n","<div class=\"rpanel-header pt-5\">\n <p class=\"si-title-2 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost element-cancel me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n ></button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon-next\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon-next class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon-next class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n }\n @if (dp.disabled) {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">&bull;</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSidePanelContentComponent } from './si-side-panel-content.component';\nimport { SiSidePanelComponent } from './si-side-panel.component';\n\n@NgModule({\n imports: [SiSidePanelComponent, SiSidePanelContentComponent],\n exports: [SiSidePanelComponent, SiSidePanelContentComponent]\n})\nexport class SiSidePanelModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * Side panel mode options.\n * - scroll: pushes content when side panel opens/closes,\n * - over: Opens as an overlay on existing content. Just like modal.\n */\nexport type SidePanelMode = 'scroll' | 'over';\n\n/**\n * Side panel size options.\n * - wide: 500px,\n * - regular: 390px\n */\nexport type SidePanelSize = 'wide' | 'regular';\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-side-panel.service';\nexport * from './si-side-panel.component';\nexport * from './si-side-panel-content.component';\nexport * from './si-side-panel.module';\nexport * from './side-panel.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ import * as i0 from '@angular/core';
2
+ import { viewChild, signal, input, model, numberAttribute, booleanAttribute, computed, inject, NgZone, ChangeDetectorRef, HostListener, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { correctKeyRTL, listenGlobal, isRTL } from '@siemens/element-ng/common';
5
+ import { SI_FORM_ITEM_CONTROL } from '@siemens/element-ng/form';
6
+ import { addIcons, elementPlus, elementMinus, SiIconNextComponent } from '@siemens/element-ng/icon';
7
+ import * as i1 from '@siemens/element-translate-ng/translate';
8
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
9
+ import { timer } from 'rxjs';
10
+
11
+ /**
12
+ * Copyright Siemens 2016 - 2025.
13
+ * SPDX-License-Identifier: MIT
14
+ */
15
+ class SiSliderComponent {
16
+ static idCounter = 0;
17
+ handleRef = viewChild.required('handle');
18
+ disabledNgControl = signal(false);
19
+ /**
20
+ * @defaultValue
21
+ * ```
22
+ * `__si-slider-${SiSliderComponent.idCounter++}`
23
+ * ```
24
+ */
25
+ id = input(`__si-slider-${SiSliderComponent.idCounter++}`);
26
+ /**
27
+ * Current value of slider.
28
+ */
29
+ value = model();
30
+ /**
31
+ * Minimum of slider range.
32
+ *
33
+ * @defaultValue 0
34
+ */
35
+ min = input(0, { transform: numberAttribute });
36
+ /**
37
+ * Maximum of slider range.
38
+ *
39
+ * @defaultValue 100
40
+ */
41
+ max = input(100, { transform: numberAttribute });
42
+ /**
43
+ * Label to describe minimum of slider range.
44
+ *
45
+ * @defaultValue ''
46
+ */
47
+ minLabel = input('');
48
+ /**
49
+ * Label to describe maximum of slider range.
50
+ *
51
+ * @defaultValue ''
52
+ */
53
+ maxLabel = input('');
54
+ /**
55
+ * Interval to step through the slider.
56
+ *
57
+ * @defaultValue 1
58
+ */
59
+ step = input(1, { transform: numberAttribute });
60
+ /**
61
+ * Icon to use as the slider thumb.
62
+ */
63
+ thumbIcon = input();
64
+ /**
65
+ * Text for aria-label of increment. Needed for a11y.
66
+ *
67
+ * @defaultValue
68
+ * ```
69
+ * $localize`:@@SI_SLIDER.INCREMENT:Increment`
70
+ * ```
71
+ */
72
+ incrementLabel = input($localize `:@@SI_SLIDER.INCREMENT:Increment`);
73
+ /**
74
+ * Text for aria-label of decrement. Needed for a11y.
75
+ *
76
+ * @defaultValue
77
+ * ```
78
+ * $localize`:@@SI_SLIDER.DECREMENT:Decrement`
79
+ * ```
80
+ */
81
+ decrementLabel = input($localize `:@@SI_SLIDER.DECREMENT:Decrement`);
82
+ /**
83
+ * Text for aria-label of slider. Needed for a11y
84
+ *
85
+ * @defaultValue
86
+ * ```
87
+ * $localize`:@@SI_SLIDER.LABEL:Value`
88
+ * ```
89
+ */
90
+ sliderLabel = input($localize `:@@SI_SLIDER.LABEL:Value`);
91
+ /**
92
+ * @defaultValue
93
+ * ```
94
+ * `${this.id()}-label`
95
+ * ```
96
+ */
97
+ labelledby = input(`${this.id()}-label`);
98
+ /** @defaultValue false */
99
+ // eslint-disable-next-line @angular-eslint/no-input-rename
100
+ disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });
101
+ disabled = computed(() => this.disabledInput() || this.disabledNgControl() || this.min() === this.max());
102
+ sliderValue = computed(() => {
103
+ const value = this.value();
104
+ if (typeof value !== 'number') {
105
+ return this.roundToStepPrecision((this.min() + this.max()) / 2);
106
+ }
107
+ return value;
108
+ });
109
+ /** @internal */
110
+ errormessageId = `${this.id()}-errormessage`;
111
+ indicatorPos = computed(() => {
112
+ const range = this.max() - this.min();
113
+ if (range === 0) {
114
+ return 50;
115
+ }
116
+ const indicatorPos = ((this.sliderValue() - this.min()) * 100) / range;
117
+ return Math.max(Math.min(indicatorPos, 100), 0);
118
+ });
119
+ icons = addIcons({ elementMinus, elementPlus });
120
+ isDragging = false;
121
+ autoUpdate$ = timer(400, 80); // 250
122
+ autoUpdateSubs;
123
+ rtl = false;
124
+ unlistenDragEvents = [];
125
+ onTouchedCallback = () => { };
126
+ onChangeCallback = () => { };
127
+ zone = inject(NgZone);
128
+ changeDetectorRef = inject(ChangeDetectorRef);
129
+ incrementValue() {
130
+ this.value.set(this.normalizeValue(this.sliderValue() + this.step()));
131
+ this.valueChanged();
132
+ }
133
+ decrementValue() {
134
+ this.value.set(this.normalizeValue(this.sliderValue() - this.step()));
135
+ this.valueChanged();
136
+ }
137
+ roundToStepPrecision(value) {
138
+ const factor = 1 / this.step();
139
+ if (factor > 1) {
140
+ return Math.round(value * factor) / factor;
141
+ }
142
+ return Math.round(value / this.step()) * this.step();
143
+ }
144
+ normalizeValue(value) {
145
+ return Math.min(Math.max(this.roundToStepPrecision(value), this.min()), this.max());
146
+ }
147
+ handleTouchMove(event) {
148
+ if (event.cancelable) {
149
+ event.preventDefault();
150
+ event.stopPropagation();
151
+ }
152
+ this.handleDragMove(event.touches[0]);
153
+ }
154
+ handleMouseMove(event) {
155
+ event.preventDefault();
156
+ event.stopPropagation();
157
+ this.handleDragMove(event);
158
+ }
159
+ handleDragMove(event) {
160
+ const pointerPosX = event.clientX;
161
+ const handleRect = this.handleRef().nativeElement.getBoundingClientRect();
162
+ const handleWrapperWidth = this.handleRef().nativeElement.parentElement.clientWidth;
163
+ const direction = this.rtl ? -1 : 1;
164
+ const pointerPosDelta = Math.round(pointerPosX - (handleRect.x + handleRect.width / 2)) * direction;
165
+ const valueDelta = (pointerPosDelta / handleWrapperWidth) * (this.max() - this.min());
166
+ const newValue = this.normalizeValue(this.sliderValue() + valueDelta);
167
+ if ((pointerPosDelta > 0 && newValue > this.sliderValue()) ||
168
+ (pointerPosDelta < 0 && newValue < this.sliderValue())) {
169
+ // the zone is required to work around a problem on native device where CD doesn't trigger
170
+ this.zone.run(() => {
171
+ this.changeDetectorRef.markForCheck();
172
+ this.value.set(newValue);
173
+ this.valueChanged();
174
+ });
175
+ }
176
+ window.getSelection()?.removeAllRanges();
177
+ }
178
+ handleDragEnd() {
179
+ this.isDragging = false;
180
+ this.unlistenDragEvents.forEach(handler => handler());
181
+ this.unlistenDragEvents.length = 0;
182
+ }
183
+ valueChanged() {
184
+ this.onTouchedCallback();
185
+ this.onChangeCallback(this.sliderValue());
186
+ }
187
+ handlePointerDown(event) {
188
+ event.stopPropagation();
189
+ }
190
+ autoUpdateKeydown(event) {
191
+ const rtlCorrectedKey = correctKeyRTL(event.key);
192
+ if (rtlCorrectedKey === 'ArrowLeft') {
193
+ this.autoUpdateStart(event, false);
194
+ }
195
+ else if (rtlCorrectedKey === 'ArrowRight') {
196
+ this.autoUpdateStart(event, true);
197
+ }
198
+ }
199
+ autoUpdateStart(event, isIncrement) {
200
+ event.preventDefault();
201
+ const trigger = isIncrement ? () => this.incrementValue() : () => this.decrementValue();
202
+ this.autoUpdateSubs?.unsubscribe();
203
+ this.autoUpdateSubs = this.autoUpdate$.subscribe(trigger);
204
+ trigger();
205
+ }
206
+ autoUpdateStop() {
207
+ if (this.autoUpdateSubs) {
208
+ this.autoUpdateSubs.unsubscribe();
209
+ this.autoUpdateSubs = undefined;
210
+ }
211
+ }
212
+ handleMouseDown(event) {
213
+ this.unlistenDragEvents.push(listenGlobal('mousemove', moveEvent => this.handleMouseMove(moveEvent)));
214
+ this.unlistenDragEvents.push(listenGlobal('mouseup', () => this.handleDragEnd()));
215
+ this.isDragging = true;
216
+ this.rtl = isRTL();
217
+ this.handleMouseMove(event);
218
+ }
219
+ handleTouchStart(event) {
220
+ if (event.touches.length !== 1) {
221
+ return;
222
+ }
223
+ this.unlistenDragEvents.push(listenGlobal('touchmove', e => this.handleTouchMove(e), true));
224
+ this.unlistenDragEvents.push(listenGlobal('touchend', () => this.handleDragEnd()));
225
+ this.isDragging = true;
226
+ this.rtl = isRTL();
227
+ this.handleTouchMove(event);
228
+ }
229
+ /** @internal */
230
+ writeValue(val) {
231
+ this.value.set(val);
232
+ }
233
+ /** @internal */
234
+ registerOnChange(fn) {
235
+ this.onChangeCallback = fn;
236
+ }
237
+ /** @internal */
238
+ registerOnTouched(fn) {
239
+ this.onTouchedCallback = fn;
240
+ }
241
+ /** @internal */
242
+ setDisabledState(isDisabled) {
243
+ this.disabledNgControl.set(isDisabled);
244
+ }
245
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
246
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiSliderComponent, isStandalone: true, selector: "si-slider", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minLabel: { classPropertyName: "minLabel", publicName: "minLabel", isSignal: true, isRequired: false, transformFunction: null }, maxLabel: { classPropertyName: "maxLabel", publicName: "maxLabel", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, thumbIcon: { classPropertyName: "thumbIcon", publicName: "thumbIcon", isSignal: true, isRequired: false, transformFunction: null }, incrementLabel: { classPropertyName: "incrementLabel", publicName: "incrementLabel", isSignal: true, isRequired: false, transformFunction: null }, decrementLabel: { classPropertyName: "decrementLabel", publicName: "decrementLabel", isSignal: true, isRequired: false, transformFunction: null }, sliderLabel: { classPropertyName: "sliderLabel", publicName: "sliderLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledby: { classPropertyName: "labelledby", publicName: "labelledby", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "role": "group" }, listeners: { "pointerdown": "handlePointerDown($event)", "mousedown": "handlePointerDown($event)", "touchstart": "handlePointerDown($event)" }, properties: { "class.disabled": "disabled()", "attr.aria-labelledby": "labelledby()" } }, providers: [
247
+ {
248
+ provide: NG_VALUE_ACCESSOR,
249
+ useExisting: SiSliderComponent,
250
+ multi: true
251
+ },
252
+ {
253
+ provide: SI_FORM_ITEM_CONTROL,
254
+ useExisting: SiSliderComponent
255
+ }
256
+ ], viewQueries: [{ propertyName: "handleRef", first: true, predicate: ["handle"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"slider-container\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-circle btn-secondary decrement-button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"decrementLabel() | translate\"\n [attr.aria-describedby]=\"errormessageId\"\n (mousedown)=\"autoUpdateStart($event, false)\"\n (touchstart)=\"autoUpdateStart($event, false)\"\n (keydown.enter)=\"autoUpdateStart($event, false)\"\n (touchend)=\"autoUpdateStop()\"\n (mouseup)=\"autoUpdateStop()\"\n (keyup.enter)=\"autoUpdateStop()\"\n (mouseleave)=\"autoUpdateStop()\"\n >\n <si-icon-next [icon]=\"icons.elementMinus\" />\n </button>\n\n <div class=\"slider-wrapper\">\n <div class=\"value-indicator-wrapper\">\n <span class=\"value-indicator\" [style.inset-inline-start.%]=\"indicatorPos()\">\n <span>\n <ng-content />\n </span>\n </span>\n </div>\n\n <div class=\"slider\" [class.dragging]=\"isDragging\">\n <div class=\"track\"></div>\n <div\n class=\"thumb-handle-wrapper\"\n [class.dragging]=\"isDragging\"\n (mousedown)=\"handleMouseDown($event)\"\n (touchstart)=\"handleTouchStart($event)\"\n >\n <div #handle class=\"thumb-handle\" [style.inset-inline-start.%]=\"indicatorPos()\">\n <div\n class=\"thumb\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-label]=\"sliderLabel() | translate\"\n [attr.aria-valuenow]=\"sliderValue()\"\n [attr.aria-describedby]=\"errormessageId\"\n [class.dragging]=\"isDragging\"\n (keydown)=\"autoUpdateKeydown($event)\"\n (keyup)=\"autoUpdateStop()\"\n >\n @let iconValue = thumbIcon();\n @if (iconValue) {\n <si-icon-next [icon]=\"iconValue\" />\n } @else {\n <div class=\"hover-circle\"></div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-circle btn-secondary increment-button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"incrementLabel() | translate\"\n [attr.aria-describedby]=\"errormessageId\"\n (mousedown)=\"autoUpdateStart($event, true)\"\n (touchstart)=\"autoUpdateStart($event, true)\"\n (keydown.enter)=\"autoUpdateStart($event, true)\"\n (touchend)=\"autoUpdateStop()\"\n (mouseup)=\"autoUpdateStop()\"\n (keyup.enter)=\"autoUpdateStop()\"\n (mouseleave)=\"autoUpdateStop()\"\n >\n <si-icon-next [icon]=\"icons.elementPlus\" />\n </button>\n</div>\n\n@if (minLabel() && maxLabel()) {\n <div class=\"range-indicator-wrapper\">\n <div class=\"range-indicator\">\n <span>{{ minLabel() }}</span>\n <span class=\"ms-auto\">{{ maxLabel() }}</span>\n </div>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}.slider-container{display:flex;align-items:flex-end}.decrement-button{margin-inline-end:4px}.increment-button{margin-inline-start:4px}.slider-wrapper{position:relative;flex:1 1 0;min-inline-size:0;display:flex;flex-direction:column}.value-indicator-wrapper{position:relative;margin-inline:12px;text-align:start}.value-indicator{position:relative;display:inline-block;white-space:nowrap;color:var(--element-text-secondary)}.value-indicator>span{display:inline-block;margin-inline-start:-50%}.range-indicator-wrapper{margin-block:0;margin-inline:36px}.range-indicator-wrapper .range-indicator{display:inline-flex;white-space:nowrap;inline-size:100%;color:var(--element-text-secondary)}.range-indicator-wrapper .range-indicator>span{display:inline-block}.slider{position:relative;inline-size:100%;block-size:32px;cursor:pointer}.slider.dragging{cursor:grabbing}:host.disabled .slider{cursor:default}.slider .track{position:absolute;inset-block-start:50%;border-radius:var(--element-radius-1);margin-block-start:-2px;block-size:4px;inline-size:100%;background:var(--element-ui-4);pointer-events:none}.slider .thumb-handle-wrapper{position:absolute;inset-block:0;inset-inline:12px}:host.disabled .slider .thumb-handle-wrapper{pointer-events:none}.slider .thumb-handle{display:flex;align-items:center;justify-content:center;position:absolute;inset-block-start:50%;margin-block-start:-20px;margin-inline:-20px;inline-size:40px;block-size:40px}:host.disabled .slider .thumb-handle{pointer-events:none}.slider .thumb{--thumb-state-color: var(--element-ui-0);display:flex;align-items:center;justify-content:center;block-size:24px;min-block-size:24px;inline-size:24px;min-inline-size:24px;border-radius:50%;border:1px solid var(--thumb-state-color);box-shadow:0 0 8px var(--element-box-shadow-color-1),0 8px 8px var(--element-box-shadow-color-2);background:var(--element-base-1)}.slider .thumb:hover:not(.dragging){--thumb-state-color: var(--element-ui-0-hover);background:var(--element-action-secondary-hover)}:host.disabled .slider .thumb{--thumb-state-color: var(--element-ui-3)}.slider .thumb si-icon-next{font-size:1.5rem;color:var(--thumb-state-color)}.slider .thumb:hover .hover-circle,.slider .thumb:focus .hover-circle,.slider .thumb.dragging .hover-circle{display:block}.slider .hover-circle{display:none;block-size:12px;inline-size:12px;border-radius:50%;background:var(--thumb-state-color)}\n"], dependencies: [{ kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
257
+ }
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSliderComponent, decorators: [{
259
+ type: Component,
260
+ args: [{ selector: 'si-slider', providers: [
261
+ {
262
+ provide: NG_VALUE_ACCESSOR,
263
+ useExisting: SiSliderComponent,
264
+ multi: true
265
+ },
266
+ {
267
+ provide: SI_FORM_ITEM_CONTROL,
268
+ useExisting: SiSliderComponent
269
+ }
270
+ ], changeDetection: ChangeDetectionStrategy.OnPush, imports: [SiIconNextComponent, SiTranslateModule], host: {
271
+ role: 'group',
272
+ '[class.disabled]': 'disabled()',
273
+ '[attr.aria-labelledby]': 'labelledby()'
274
+ }, template: "<div class=\"slider-container\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-circle btn-secondary decrement-button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"decrementLabel() | translate\"\n [attr.aria-describedby]=\"errormessageId\"\n (mousedown)=\"autoUpdateStart($event, false)\"\n (touchstart)=\"autoUpdateStart($event, false)\"\n (keydown.enter)=\"autoUpdateStart($event, false)\"\n (touchend)=\"autoUpdateStop()\"\n (mouseup)=\"autoUpdateStop()\"\n (keyup.enter)=\"autoUpdateStop()\"\n (mouseleave)=\"autoUpdateStop()\"\n >\n <si-icon-next [icon]=\"icons.elementMinus\" />\n </button>\n\n <div class=\"slider-wrapper\">\n <div class=\"value-indicator-wrapper\">\n <span class=\"value-indicator\" [style.inset-inline-start.%]=\"indicatorPos()\">\n <span>\n <ng-content />\n </span>\n </span>\n </div>\n\n <div class=\"slider\" [class.dragging]=\"isDragging\">\n <div class=\"track\"></div>\n <div\n class=\"thumb-handle-wrapper\"\n [class.dragging]=\"isDragging\"\n (mousedown)=\"handleMouseDown($event)\"\n (touchstart)=\"handleTouchStart($event)\"\n >\n <div #handle class=\"thumb-handle\" [style.inset-inline-start.%]=\"indicatorPos()\">\n <div\n class=\"thumb\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-label]=\"sliderLabel() | translate\"\n [attr.aria-valuenow]=\"sliderValue()\"\n [attr.aria-describedby]=\"errormessageId\"\n [class.dragging]=\"isDragging\"\n (keydown)=\"autoUpdateKeydown($event)\"\n (keyup)=\"autoUpdateStop()\"\n >\n @let iconValue = thumbIcon();\n @if (iconValue) {\n <si-icon-next [icon]=\"iconValue\" />\n } @else {\n <div class=\"hover-circle\"></div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-circle btn-secondary increment-button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"incrementLabel() | translate\"\n [attr.aria-describedby]=\"errormessageId\"\n (mousedown)=\"autoUpdateStart($event, true)\"\n (touchstart)=\"autoUpdateStart($event, true)\"\n (keydown.enter)=\"autoUpdateStart($event, true)\"\n (touchend)=\"autoUpdateStop()\"\n (mouseup)=\"autoUpdateStop()\"\n (keyup.enter)=\"autoUpdateStop()\"\n (mouseleave)=\"autoUpdateStop()\"\n >\n <si-icon-next [icon]=\"icons.elementPlus\" />\n </button>\n</div>\n\n@if (minLabel() && maxLabel()) {\n <div class=\"range-indicator-wrapper\">\n <div class=\"range-indicator\">\n <span>{{ minLabel() }}</span>\n <span class=\"ms-auto\">{{ maxLabel() }}</span>\n </div>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}.slider-container{display:flex;align-items:flex-end}.decrement-button{margin-inline-end:4px}.increment-button{margin-inline-start:4px}.slider-wrapper{position:relative;flex:1 1 0;min-inline-size:0;display:flex;flex-direction:column}.value-indicator-wrapper{position:relative;margin-inline:12px;text-align:start}.value-indicator{position:relative;display:inline-block;white-space:nowrap;color:var(--element-text-secondary)}.value-indicator>span{display:inline-block;margin-inline-start:-50%}.range-indicator-wrapper{margin-block:0;margin-inline:36px}.range-indicator-wrapper .range-indicator{display:inline-flex;white-space:nowrap;inline-size:100%;color:var(--element-text-secondary)}.range-indicator-wrapper .range-indicator>span{display:inline-block}.slider{position:relative;inline-size:100%;block-size:32px;cursor:pointer}.slider.dragging{cursor:grabbing}:host.disabled .slider{cursor:default}.slider .track{position:absolute;inset-block-start:50%;border-radius:var(--element-radius-1);margin-block-start:-2px;block-size:4px;inline-size:100%;background:var(--element-ui-4);pointer-events:none}.slider .thumb-handle-wrapper{position:absolute;inset-block:0;inset-inline:12px}:host.disabled .slider .thumb-handle-wrapper{pointer-events:none}.slider .thumb-handle{display:flex;align-items:center;justify-content:center;position:absolute;inset-block-start:50%;margin-block-start:-20px;margin-inline:-20px;inline-size:40px;block-size:40px}:host.disabled .slider .thumb-handle{pointer-events:none}.slider .thumb{--thumb-state-color: var(--element-ui-0);display:flex;align-items:center;justify-content:center;block-size:24px;min-block-size:24px;inline-size:24px;min-inline-size:24px;border-radius:50%;border:1px solid var(--thumb-state-color);box-shadow:0 0 8px var(--element-box-shadow-color-1),0 8px 8px var(--element-box-shadow-color-2);background:var(--element-base-1)}.slider .thumb:hover:not(.dragging){--thumb-state-color: var(--element-ui-0-hover);background:var(--element-action-secondary-hover)}:host.disabled .slider .thumb{--thumb-state-color: var(--element-ui-3)}.slider .thumb si-icon-next{font-size:1.5rem;color:var(--thumb-state-color)}.slider .thumb:hover .hover-circle,.slider .thumb:focus .hover-circle,.slider .thumb.dragging .hover-circle{display:block}.slider .hover-circle{display:none;block-size:12px;inline-size:12px;border-radius:50%;background:var(--thumb-state-color)}\n"] }]
275
+ }], propDecorators: { handlePointerDown: [{
276
+ type: HostListener,
277
+ args: ['pointerdown', ['$event']]
278
+ }, {
279
+ type: HostListener,
280
+ args: ['mousedown', ['$event']]
281
+ }, {
282
+ type: HostListener,
283
+ args: ['touchstart', ['$event']]
284
+ }] } });
285
+
286
+ /**
287
+ * Copyright Siemens 2016 - 2025.
288
+ * SPDX-License-Identifier: MIT
289
+ */
290
+ class SiSliderModule {
291
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
292
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiSliderModule, imports: [SiSliderComponent], exports: [SiSliderComponent] });
293
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSliderModule, imports: [SiSliderComponent] });
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSliderModule, decorators: [{
296
+ type: NgModule,
297
+ args: [{
298
+ imports: [SiSliderComponent],
299
+ exports: [SiSliderComponent]
300
+ }]
301
+ }] });
302
+
303
+ /**
304
+ * Copyright Siemens 2016 - 2025.
305
+ * SPDX-License-Identifier: MIT
306
+ */
307
+
308
+ /**
309
+ * Generated bundle index. Do not edit.
310
+ */
311
+
312
+ export { SiSliderComponent, SiSliderModule };
313
+ //# sourceMappingURL=siemens-element-ng-slider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-slider.mjs","sources":["../../../../projects/element-ng/slider/si-slider.component.ts","../../../../projects/element-ng/slider/si-slider.component.html","../../../../projects/element-ng/slider/si-slider.module.ts","../../../../projects/element-ng/slider/index.ts","../../../../projects/element-ng/slider/siemens-element-ng-slider.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n NgZone,\n numberAttribute,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { correctKeyRTL, isRTL, listenGlobal } from '@siemens/element-ng/common';\nimport { SI_FORM_ITEM_CONTROL, SiFormItemControl } from '@siemens/element-ng/form';\nimport { elementMinus, elementPlus, addIcons, SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\nimport { Subscription, timer } from 'rxjs';\n\n@Component({\n selector: 'si-slider',\n templateUrl: './si-slider.component.html',\n styleUrl: './si-slider.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiSliderComponent,\n multi: true\n },\n {\n provide: SI_FORM_ITEM_CONTROL,\n useExisting: SiSliderComponent\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SiIconNextComponent, SiTranslateModule],\n host: {\n role: 'group',\n '[class.disabled]': 'disabled()',\n '[attr.aria-labelledby]': 'labelledby()'\n }\n})\nexport class SiSliderComponent implements ControlValueAccessor, SiFormItemControl {\n private static idCounter = 0;\n\n private readonly handleRef = viewChild.required<ElementRef>('handle');\n\n private readonly disabledNgControl = signal(false);\n\n /**\n * @defaultValue\n * ```\n * `__si-slider-${SiSliderComponent.idCounter++}`\n * ```\n */\n readonly id = input(`__si-slider-${SiSliderComponent.idCounter++}`);\n\n /**\n * Current value of slider.\n */\n readonly value = model<number>();\n /**\n * Minimum of slider range.\n *\n * @defaultValue 0\n */\n readonly min = input(0, { transform: numberAttribute });\n /**\n * Maximum of slider range.\n *\n * @defaultValue 100\n */\n readonly max = input(100, { transform: numberAttribute });\n /**\n * Label to describe minimum of slider range.\n *\n * @defaultValue ''\n */\n readonly minLabel = input('');\n /**\n * Label to describe maximum of slider range.\n *\n * @defaultValue ''\n */\n readonly maxLabel = input('');\n /**\n * Interval to step through the slider.\n *\n * @defaultValue 1\n */\n readonly step = input(1, { transform: numberAttribute });\n /**\n * Icon to use as the slider thumb.\n */\n readonly thumbIcon = input<string>();\n /**\n * Text for aria-label of increment. Needed for a11y.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SLIDER.INCREMENT:Increment`\n * ```\n */\n readonly incrementLabel = input($localize`:@@SI_SLIDER.INCREMENT:Increment`);\n /**\n * Text for aria-label of decrement. Needed for a11y.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SLIDER.DECREMENT:Decrement`\n * ```\n */\n readonly decrementLabel = input($localize`:@@SI_SLIDER.DECREMENT:Decrement`);\n /**\n * Text for aria-label of slider. Needed for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SLIDER.LABEL:Value`\n * ```\n */\n readonly sliderLabel = input($localize`:@@SI_SLIDER.LABEL:Value`);\n\n /**\n * @defaultValue\n * ```\n * `${this.id()}-label`\n * ```\n */\n readonly labelledby = input(`${this.id()}-label`);\n\n /** @defaultValue false */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n protected readonly disabled = computed(\n () => this.disabledInput() || this.disabledNgControl() || this.min() === this.max()\n );\n\n protected readonly sliderValue = computed<number>(() => {\n const value = this.value();\n if (typeof value !== 'number') {\n return this.roundToStepPrecision((this.min() + this.max()) / 2);\n }\n return value;\n });\n\n /** @internal */\n readonly errormessageId = `${this.id()}-errormessage`;\n\n protected readonly indicatorPos = computed(() => {\n const range = this.max() - this.min();\n if (range === 0) {\n return 50;\n }\n const indicatorPos = ((this.sliderValue()! - this.min()) * 100) / range;\n return Math.max(Math.min(indicatorPos, 100), 0);\n });\n\n protected readonly icons = addIcons({ elementMinus, elementPlus });\n protected isDragging = false;\n\n private autoUpdate$ = timer(400, 80); // 250\n private autoUpdateSubs?: Subscription;\n private rtl = false;\n\n private unlistenDragEvents: (() => void)[] = [];\n\n private onTouchedCallback: () => void = () => {};\n private onChangeCallback: (val: any) => void = () => {};\n\n private zone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private incrementValue(): void {\n this.value.set(this.normalizeValue(this.sliderValue()! + this.step()));\n this.valueChanged();\n }\n\n private decrementValue(): void {\n this.value.set(this.normalizeValue(this.sliderValue()! - this.step()));\n this.valueChanged();\n }\n\n private roundToStepPrecision(value: number): number {\n const factor = 1 / this.step();\n if (factor > 1) {\n return Math.round(value * factor) / factor;\n }\n return Math.round(value / this.step()) * this.step();\n }\n\n private normalizeValue(value: number): number {\n return Math.min(Math.max(this.roundToStepPrecision(value), this.min()), this.max());\n }\n\n private handleTouchMove(event: TouchEvent): void {\n if (event.cancelable) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.handleDragMove(event.touches[0]);\n }\n\n private handleMouseMove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.handleDragMove(event);\n }\n\n private handleDragMove(event: MouseEvent | Touch): void {\n const pointerPosX = event.clientX;\n const handleRect = this.handleRef().nativeElement.getBoundingClientRect();\n const handleWrapperWidth = this.handleRef().nativeElement.parentElement.clientWidth;\n\n const direction = this.rtl ? -1 : 1;\n const pointerPosDelta =\n Math.round(pointerPosX - (handleRect.x + handleRect.width / 2)) * direction;\n const valueDelta = (pointerPosDelta / handleWrapperWidth) * (this.max() - this.min());\n\n const newValue = this.normalizeValue(this.sliderValue()! + valueDelta);\n\n if (\n (pointerPosDelta > 0 && newValue > this.sliderValue()!) ||\n (pointerPosDelta < 0 && newValue < this.sliderValue()!)\n ) {\n // the zone is required to work around a problem on native device where CD doesn't trigger\n this.zone.run(() => {\n this.changeDetectorRef.markForCheck();\n this.value.set(newValue);\n this.valueChanged();\n });\n }\n window.getSelection()?.removeAllRanges();\n }\n\n private handleDragEnd(): void {\n this.isDragging = false;\n\n this.unlistenDragEvents.forEach(handler => handler());\n this.unlistenDragEvents.length = 0;\n }\n\n private valueChanged(): void {\n this.onTouchedCallback();\n this.onChangeCallback(this.sliderValue());\n }\n\n @HostListener('pointerdown', ['$event'])\n @HostListener('mousedown', ['$event'])\n @HostListener('touchstart', ['$event'])\n protected handlePointerDown(event: Event): void {\n event.stopPropagation();\n }\n\n protected autoUpdateKeydown(event: KeyboardEvent): void {\n const rtlCorrectedKey = correctKeyRTL(event.key);\n\n if (rtlCorrectedKey === 'ArrowLeft') {\n this.autoUpdateStart(event, false);\n } else if (rtlCorrectedKey === 'ArrowRight') {\n this.autoUpdateStart(event, true);\n }\n }\n\n protected autoUpdateStart(event: Event, isIncrement: boolean): void {\n event.preventDefault();\n\n const trigger = isIncrement ? () => this.incrementValue() : () => this.decrementValue();\n\n this.autoUpdateSubs?.unsubscribe();\n this.autoUpdateSubs = this.autoUpdate$.subscribe(trigger);\n trigger();\n }\n\n protected autoUpdateStop(): void {\n if (this.autoUpdateSubs) {\n this.autoUpdateSubs.unsubscribe();\n this.autoUpdateSubs = undefined;\n }\n }\n\n protected handleMouseDown(event: MouseEvent): void {\n this.unlistenDragEvents.push(\n listenGlobal('mousemove', moveEvent => this.handleMouseMove(moveEvent))\n );\n this.unlistenDragEvents.push(listenGlobal('mouseup', () => this.handleDragEnd()));\n\n this.isDragging = true;\n\n this.rtl = isRTL();\n this.handleMouseMove(event);\n }\n\n protected handleTouchStart(event: TouchEvent): void {\n if (event.touches.length !== 1) {\n return;\n }\n\n this.unlistenDragEvents.push(listenGlobal('touchmove', e => this.handleTouchMove(e), true));\n this.unlistenDragEvents.push(listenGlobal('touchend', () => this.handleDragEnd()));\n\n this.isDragging = true;\n\n this.rtl = isRTL();\n this.handleTouchMove(event);\n }\n\n /** @internal */\n writeValue(val: any): void {\n this.value.set(val);\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n /** @internal */\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n /** @internal */\n setDisabledState(isDisabled: boolean): void {\n this.disabledNgControl.set(isDisabled);\n }\n}\n","<div class=\"slider-container\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-circle btn-secondary decrement-button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"decrementLabel() | translate\"\n [attr.aria-describedby]=\"errormessageId\"\n (mousedown)=\"autoUpdateStart($event, false)\"\n (touchstart)=\"autoUpdateStart($event, false)\"\n (keydown.enter)=\"autoUpdateStart($event, false)\"\n (touchend)=\"autoUpdateStop()\"\n (mouseup)=\"autoUpdateStop()\"\n (keyup.enter)=\"autoUpdateStop()\"\n (mouseleave)=\"autoUpdateStop()\"\n >\n <si-icon-next [icon]=\"icons.elementMinus\" />\n </button>\n\n <div class=\"slider-wrapper\">\n <div class=\"value-indicator-wrapper\">\n <span class=\"value-indicator\" [style.inset-inline-start.%]=\"indicatorPos()\">\n <span>\n <ng-content />\n </span>\n </span>\n </div>\n\n <div class=\"slider\" [class.dragging]=\"isDragging\">\n <div class=\"track\"></div>\n <div\n class=\"thumb-handle-wrapper\"\n [class.dragging]=\"isDragging\"\n (mousedown)=\"handleMouseDown($event)\"\n (touchstart)=\"handleTouchStart($event)\"\n >\n <div #handle class=\"thumb-handle\" [style.inset-inline-start.%]=\"indicatorPos()\">\n <div\n class=\"thumb\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-label]=\"sliderLabel() | translate\"\n [attr.aria-valuenow]=\"sliderValue()\"\n [attr.aria-describedby]=\"errormessageId\"\n [class.dragging]=\"isDragging\"\n (keydown)=\"autoUpdateKeydown($event)\"\n (keyup)=\"autoUpdateStop()\"\n >\n @let iconValue = thumbIcon();\n @if (iconValue) {\n <si-icon-next [icon]=\"iconValue\" />\n } @else {\n <div class=\"hover-circle\"></div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-circle btn-secondary increment-button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"incrementLabel() | translate\"\n [attr.aria-describedby]=\"errormessageId\"\n (mousedown)=\"autoUpdateStart($event, true)\"\n (touchstart)=\"autoUpdateStart($event, true)\"\n (keydown.enter)=\"autoUpdateStart($event, true)\"\n (touchend)=\"autoUpdateStop()\"\n (mouseup)=\"autoUpdateStop()\"\n (keyup.enter)=\"autoUpdateStop()\"\n (mouseleave)=\"autoUpdateStop()\"\n >\n <si-icon-next [icon]=\"icons.elementPlus\" />\n </button>\n</div>\n\n@if (minLabel() && maxLabel()) {\n <div class=\"range-indicator-wrapper\">\n <div class=\"range-indicator\">\n <span>{{ minLabel() }}</span>\n <span class=\"ms-auto\">{{ maxLabel() }}</span>\n </div>\n </div>\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSliderComponent } from './si-slider.component';\n\n@NgModule({\n imports: [SiSliderComponent],\n exports: [SiSliderComponent]\n})\nexport class SiSliderModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-slider.component';\nexport * from './si-slider.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import * as i0 from '@angular/core';
3
+ import { input, output, Component, NgModule } from '@angular/core';
4
+ import { addIcons, elementSortUp, elementSortDown, SiIconNextComponent } from '@siemens/element-ng/icon';
5
+ import * as i1 from '@siemens/element-translate-ng/translate';
6
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
7
+
8
+ /**
9
+ * Copyright Siemens 2016 - 2025.
10
+ * SPDX-License-Identifier: MIT
11
+ */
12
+ class SiSortBarComponent {
13
+ /**
14
+ * Custom sort title.
15
+ *
16
+ * @defaultValue
17
+ * ```
18
+ * $localize`:@@SI_SORT_BAR.TITLE:Sort by`
19
+ * ```
20
+ */
21
+ sortTitle = input($localize `:@@SI_SORT_BAR.TITLE:Sort by`);
22
+ /**
23
+ * List of sort criteria.
24
+ */
25
+ sortCriteria = input.required();
26
+ /**
27
+ * `key` which sortCriteria is active by default.
28
+ */
29
+ defaultSortCriteria = input.required();
30
+ /**
31
+ * Output callback event will provide you with a HttpParams object if active
32
+ * sortCriteria change.
33
+ */
34
+ sortChange = output();
35
+ icons = addIcons({ elementSortDown, elementSortUp });
36
+ activeSortCriteria = '';
37
+ sortIsDescending = false;
38
+ ngOnInit() {
39
+ const defaultSortCriteria = this.defaultSortCriteria();
40
+ if (defaultSortCriteria) {
41
+ this.setActive(defaultSortCriteria);
42
+ }
43
+ }
44
+ setActive(key) {
45
+ if (this.activeSortCriteria === key) {
46
+ this.sortIsDescending = !this.sortIsDescending;
47
+ }
48
+ this.activeSortCriteria = key;
49
+ const searchParams = new HttpParams()
50
+ .set('sort', this.activeSortCriteria)
51
+ .set('order', this.sortIsDescending ? 'desc' : 'asc');
52
+ this.sortChange.emit(searchParams);
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSortBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiSortBarComponent, isStandalone: true, selector: "si-sort-bar", inputs: { sortTitle: { classPropertyName: "sortTitle", publicName: "sortTitle", isSignal: true, isRequired: false, transformFunction: null }, sortCriteria: { classPropertyName: "sortCriteria", publicName: "sortCriteria", isSignal: true, isRequired: true, transformFunction: null }, defaultSortCriteria: { classPropertyName: "defaultSortCriteria", publicName: "defaultSortCriteria", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div class=\"list-header list-header-sorting\">\n <div class=\"list-title\">{{ sortTitle() | translate }}:</div>\n @for (item of sortCriteria(); track $index) {\n <div\n class=\"sort-item\"\n tabindex=\"0\"\n [attr.data-key]=\"item.key\"\n (click)=\"setActive(item.key)\"\n (keydown.enter)=\"setActive(item.key)\"\n >\n <span>{{ item.name | translate }}</span>\n @if (item.key === activeSortCriteria) {\n <si-icon-next\n class=\"icon\"\n [icon]=\"sortIsDescending ? icons.elementSortDown : icons.elementSortUp\"\n />\n }\n </div>\n }\n</div>\n", styles: [".list-title{font-weight:500;margin-inline-end:5px}.list-header-sorting{background:var(--element-ui-4);padding:6px 12px;display:flex;align-items:center}.sort-item{padding-block:0;padding-inline:5px;cursor:pointer;display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }] });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSortBarComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: 'si-sort-bar', imports: [SiIconNextComponent, SiTranslateModule], template: "<div class=\"list-header list-header-sorting\">\n <div class=\"list-title\">{{ sortTitle() | translate }}:</div>\n @for (item of sortCriteria(); track $index) {\n <div\n class=\"sort-item\"\n tabindex=\"0\"\n [attr.data-key]=\"item.key\"\n (click)=\"setActive(item.key)\"\n (keydown.enter)=\"setActive(item.key)\"\n >\n <span>{{ item.name | translate }}</span>\n @if (item.key === activeSortCriteria) {\n <si-icon-next\n class=\"icon\"\n [icon]=\"sortIsDescending ? icons.elementSortDown : icons.elementSortUp\"\n />\n }\n </div>\n }\n</div>\n", styles: [".list-title{font-weight:500;margin-inline-end:5px}.list-header-sorting{background:var(--element-ui-4);padding:6px 12px;display:flex;align-items:center}.sort-item{padding-block:0;padding-inline:5px;cursor:pointer;display:flex;align-items:center}\n"] }]
60
+ }] });
61
+
62
+ /**
63
+ * Copyright Siemens 2016 - 2025.
64
+ * SPDX-License-Identifier: MIT
65
+ */
66
+ class SiSortBarModule {
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSortBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
68
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiSortBarModule, imports: [SiSortBarComponent], exports: [SiSortBarComponent] });
69
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSortBarModule, imports: [SiSortBarComponent] });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSortBarModule, decorators: [{
72
+ type: NgModule,
73
+ args: [{
74
+ imports: [SiSortBarComponent],
75
+ exports: [SiSortBarComponent]
76
+ }]
77
+ }] });
78
+
79
+ /**
80
+ * Copyright Siemens 2016 - 2025.
81
+ * SPDX-License-Identifier: MIT
82
+ */
83
+
84
+ /**
85
+ * Generated bundle index. Do not edit.
86
+ */
87
+
88
+ export { SiSortBarComponent, SiSortBarModule };
89
+ //# sourceMappingURL=siemens-element-ng-sort-bar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-sort-bar.mjs","sources":["../../../../projects/element-ng/sort-bar/si-sort-bar.component.ts","../../../../projects/element-ng/sort-bar/si-sort-bar.component.html","../../../../projects/element-ng/sort-bar/si-sort-bar.module.ts","../../../../projects/element-ng/sort-bar/index.ts","../../../../projects/element-ng/sort-bar/siemens-element-ng-sort-bar.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { HttpParams } from '@angular/common/http';\nimport { Component, input, OnInit, output } from '@angular/core';\nimport {\n addIcons,\n elementSortDown,\n elementSortUp,\n SiIconNextComponent\n} from '@siemens/element-ng/icon';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nexport interface SortCriteria {\n name: string;\n key: number | string;\n}\n\n@Component({\n selector: 'si-sort-bar',\n templateUrl: './si-sort-bar.component.html',\n styleUrl: './si-sort-bar.component.scss',\n imports: [SiIconNextComponent, SiTranslateModule]\n})\nexport class SiSortBarComponent implements OnInit {\n /**\n * Custom sort title.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_SORT_BAR.TITLE:Sort by`\n * ```\n */\n readonly sortTitle = input($localize`:@@SI_SORT_BAR.TITLE:Sort by`);\n /**\n * List of sort criteria.\n */\n readonly sortCriteria = input.required<SortCriteria[]>();\n /**\n * `key` which sortCriteria is active by default.\n */\n readonly defaultSortCriteria = input.required<SortCriteria['key']>();\n\n /**\n * Output callback event will provide you with a HttpParams object if active\n * sortCriteria change.\n */\n readonly sortChange = output<HttpParams>();\n\n protected readonly icons = addIcons({ elementSortDown, elementSortUp });\n protected activeSortCriteria: SortCriteria['key'] = '';\n protected sortIsDescending = false;\n\n ngOnInit(): void {\n const defaultSortCriteria = this.defaultSortCriteria();\n if (defaultSortCriteria) {\n this.setActive(defaultSortCriteria);\n }\n }\n\n protected setActive(key: SortCriteria['key']): void {\n if (this.activeSortCriteria === key) {\n this.sortIsDescending = !this.sortIsDescending;\n }\n\n this.activeSortCriteria = key;\n\n const searchParams = new HttpParams()\n .set('sort', this.activeSortCriteria)\n .set('order', this.sortIsDescending ? 'desc' : 'asc');\n\n this.sortChange.emit(searchParams);\n }\n}\n","<div class=\"list-header list-header-sorting\">\n <div class=\"list-title\">{{ sortTitle() | translate }}:</div>\n @for (item of sortCriteria(); track $index) {\n <div\n class=\"sort-item\"\n tabindex=\"0\"\n [attr.data-key]=\"item.key\"\n (click)=\"setActive(item.key)\"\n (keydown.enter)=\"setActive(item.key)\"\n >\n <span>{{ item.name | translate }}</span>\n @if (item.key === activeSortCriteria) {\n <si-icon-next\n class=\"icon\"\n [icon]=\"sortIsDescending ? icons.elementSortDown : icons.elementSortUp\"\n />\n }\n </div>\n }\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSortBarComponent } from './si-sort-bar.component';\n\n@NgModule({\n imports: [SiSortBarComponent],\n exports: [SiSortBarComponent]\n})\nexport class SiSortBarModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-sort-bar.component';\nexport * from './si-sort-bar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}