@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
@@ -0,0 +1,801 @@
1
+ import { trigger, state, transition, style, animate, query, group, animateChild } from '@angular/animations';
2
+ import { BreakpointObserver } from '@angular/cdk/layout';
3
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
4
+ import * as i0 from '@angular/core';
5
+ import { Component, InjectionToken, input, model, signal, inject, ViewContainerRef, Injector, computed, HostListener, Directive, ChangeDetectionStrategy, viewChildren, booleanAttribute, numberAttribute, output, viewChild, HostBinding, NgModule } from '@angular/core';
6
+ import { RouterLinkActive, ActivatedRoute, RouterLink } from '@angular/router';
7
+ import { SI_UI_STATE_SERVICE } from '@siemens/element-ng/common';
8
+ import { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';
9
+ import { SiSearchBarComponent } from '@siemens/element-ng/search-bar';
10
+ import { SiSkipLinkTargetDirective } from '@siemens/element-ng/skip-links';
11
+ import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
12
+ import { Subject } from 'rxjs';
13
+ import { takeUntil } from 'rxjs/operators';
14
+ import { Overlay } from '@angular/cdk/overlay';
15
+ import { TemplatePortal } from '@angular/cdk/portal';
16
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
17
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
18
+ import { SiLinkDirective } from '@siemens/element-ng/link';
19
+
20
+ /**
21
+ * Copyright (c) Siemens 2016 - 2025
22
+ * SPDX-License-Identifier: MIT
23
+ */
24
+ // We need a component to attach the stylesheet
25
+ class SiNavbarVerticalDividerComponent {
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SiNavbarVerticalDividerComponent, isStandalone: true, selector: "si-navbar-vertical-divider", ngImport: i0, template: '', isInline: true, styles: [":host{display:block;block-size:1px;background-color:var(--element-ui-4);margin-block:6px;margin-inline:12px}\n"] });
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalDividerComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'si-navbar-vertical-divider', template: '', styles: [":host{display:block;block-size:1px;background-color:var(--element-ui-4);margin-block:6px;margin-inline:12px}\n"] }]
32
+ }] });
33
+
34
+ /**
35
+ * Copyright (c) Siemens 2016 - 2025
36
+ * SPDX-License-Identifier: MIT
37
+ */
38
+ const SI_NAVBAR_VERTICAL = new InjectionToken('SI_NAVBAR_VERTICAL');
39
+
40
+ /**
41
+ * Copyright (c) Siemens 2016 - 2025
42
+ * SPDX-License-Identifier: MIT
43
+ */
44
+ /**
45
+ * Using this component, to anchor the flyout inside the navbar within the a11y tree.
46
+ * Otherwise, without aria-owns, screen reader will announce the leaving of the navbar when moving to the flyout.
47
+ * Aria-owns cannot be put directly on the trigger
48
+ * as chrome will include the flyout children in the a11y label of the trigger.
49
+ */
50
+ class SiNavbarFlyoutAnchorComponent {
51
+ groupId = input();
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarFlyoutAnchorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.6", type: SiNavbarFlyoutAnchorComponent, isStandalone: true, selector: "si-navbar-flyout-anchor", inputs: { groupId: { classPropertyName: "groupId", publicName: "groupId", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-owns": "groupId()" } }, ngImport: i0, template: '', isInline: true });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarFlyoutAnchorComponent, decorators: [{
56
+ type: Component,
57
+ args: [{
58
+ selector: 'si-navbar-flyout-anchor',
59
+ template: '',
60
+ host: { '[attr.aria-owns]': 'groupId()' }
61
+ }]
62
+ }] });
63
+ class SiNavbarVerticalGroupTriggerDirective {
64
+ static idCounter = 0;
65
+ /** @internal */
66
+ groupId = `si-navbar-vertical-group-${SiNavbarVerticalGroupTriggerDirective.idCounter++}`;
67
+ id = `${this.groupId}-trigger`;
68
+ groupTemplate = input.required({
69
+ alias: 'siNavbarVerticalGroupTriggerFor'
70
+ });
71
+ groupData = input();
72
+ stateId = input();
73
+ expanded = model.required();
74
+ /** @internal */
75
+ flyout = signal(false);
76
+ /** @internal */
77
+ active = signal(false);
78
+ navbar = inject(SI_NAVBAR_VERTICAL);
79
+ flyoutOutsideClickSubscription;
80
+ viewContainer = inject(ViewContainerRef);
81
+ overlay = inject(Overlay);
82
+ injector = Injector.create({ parent: inject(Injector), providers: [] });
83
+ overlayRef = this.overlay.create({
84
+ positionStrategy: this.overlay
85
+ .position()
86
+ .flexibleConnectedTo(this.viewContainer.element)
87
+ .withPositions([
88
+ { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },
89
+ { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' }
90
+ ])
91
+ });
92
+ groupView;
93
+ flyoutAnchorComponentRef;
94
+ templatePortal = computed(() => new TemplatePortal(this.groupTemplate(), this.viewContainer, this.groupData(), this.injector));
95
+ ngOnInit() {
96
+ this.attachInline();
97
+ }
98
+ /** @internal */
99
+ hideFlyout() {
100
+ if (this.flyout()) {
101
+ this.flyout.set(false);
102
+ this.flyoutAnchorComponentRef?.destroy();
103
+ this.flyoutAnchorComponentRef = undefined;
104
+ this.attachInline();
105
+ this.flyoutOutsideClickSubscription?.unsubscribe();
106
+ }
107
+ }
108
+ triggered() {
109
+ if (this.navbar.collapsed()) {
110
+ this.toggleFlyout();
111
+ }
112
+ else {
113
+ this.expanded.set(!this.expanded());
114
+ this.navbar.groupTriggered();
115
+ }
116
+ }
117
+ toggleFlyout() {
118
+ if (this.flyout()) {
119
+ this.hideFlyout();
120
+ }
121
+ else {
122
+ this.flyout.set(true);
123
+ this.attachFlyout();
124
+ }
125
+ }
126
+ attachInline() {
127
+ this.overlayRef.detach();
128
+ this.groupView?.destroy(); // we need ?. for first attachment
129
+ this.groupView = this.viewContainer.createEmbeddedView(this.groupTemplate(), this.groupData(), {
130
+ injector: this.injector
131
+ });
132
+ }
133
+ attachFlyout() {
134
+ this.groupView.destroy();
135
+ this.groupView = this.overlayRef.attach(this.templatePortal());
136
+ this.flyoutAnchorComponentRef = this.viewContainer.createComponent(SiNavbarFlyoutAnchorComponent);
137
+ this.flyoutAnchorComponentRef.setInput('groupId', this.groupId);
138
+ this.flyoutOutsideClickSubscription = this.overlayRef
139
+ .outsidePointerEvents()
140
+ .subscribe(() => this.hideFlyout());
141
+ }
142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalGroupTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
143
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: SiNavbarVerticalGroupTriggerDirective, isStandalone: true, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: { groupTemplate: { classPropertyName: "groupTemplate", publicName: "siNavbarVerticalGroupTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, groupData: { classPropertyName: "groupData", publicName: "groupData", isSignal: true, isRequired: false, transformFunction: null }, stateId: { classPropertyName: "stateId", publicName: "stateId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { listeners: { "click": "triggered()" }, properties: { "id": "id", "class.show": "expanded()", "attr.aria-controls": "groupId", "attr.aria-expanded": "expanded()" }, classAttribute: "dropdown-toggle" }, ngImport: i0 });
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalGroupTriggerDirective, decorators: [{
146
+ type: Directive,
147
+ args: [{
148
+ selector: 'button[siNavbarVerticalGroupTriggerFor]',
149
+ host: {
150
+ class: 'dropdown-toggle',
151
+ '[id]': 'id',
152
+ '[class.show]': 'expanded()',
153
+ '[attr.aria-controls]': 'groupId',
154
+ '[attr.aria-expanded]': 'expanded()'
155
+ }
156
+ }]
157
+ }], propDecorators: { triggered: [{
158
+ type: HostListener,
159
+ args: ['click']
160
+ }] } });
161
+
162
+ /**
163
+ * Copyright (c) Siemens 2016 - 2025
164
+ * SPDX-License-Identifier: MIT
165
+ */
166
+ class SiNavbarVerticalItemComponent {
167
+ item = input.required({
168
+ alias: 'si-navbar-vertical-item'
169
+ });
170
+ activeOverride = input();
171
+ navbar = inject(SI_NAVBAR_VERTICAL);
172
+ parent = inject(SiNavbarVerticalItemComponent, {
173
+ skipSelf: true,
174
+ optional: true
175
+ });
176
+ group = inject(SiNavbarVerticalGroupTriggerDirective, {
177
+ optional: true,
178
+ self: true
179
+ });
180
+ routerLinkActive = inject(RouterLinkActive, { optional: true });
181
+ siLink = inject(SiLinkDirective, { optional: true });
182
+ ngOnInit() {
183
+ if (this.group && this.active) {
184
+ this.group.expanded.set(true);
185
+ }
186
+ }
187
+ triggered() {
188
+ const item = this.item();
189
+ if (item.type === 'action') {
190
+ item.action(item);
191
+ return;
192
+ }
193
+ this.parent?.group?.hideFlyout();
194
+ if (!this.group) {
195
+ this.navbar.itemTriggered();
196
+ }
197
+ }
198
+ get active() {
199
+ return (this.activeOverride() ||
200
+ this.routerLinkActive?.isActive ||
201
+ this.siLink?.active() ||
202
+ ((!this.group?.expanded() || this.navbar.collapsed()) && this.group?.active()) ||
203
+ false);
204
+ /* eslint-disable-enable @typescript-eslint/prefer-nullish-coalescing */
205
+ }
206
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
207
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiNavbarVerticalItemComponent, isStandalone: true, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: { item: { classPropertyName: "item", publicName: "si-navbar-vertical-item", isSignal: true, isRequired: true, transformFunction: null }, activeOverride: { classPropertyName: "activeOverride", publicName: "activeOverride", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "triggered()" }, properties: { "class.dropdown-item": "this.parent?.group?.flyout()", "class.navbar-vertical-item": "!this.parent?.group?.flyout()", "class.active": "active" }, classAttribute: "focus-inside" }, ngImport: i0, template: "@if (item().icon) {\n <i class=\"icon me-n2\" aria-hidden=\"true\" [ngClass]=\"[item().icon]\"></i>\n}\n@if (item().icon && item().badge) {\n <span class=\"badge-text\">{{ item().badge }}</span>\n}\n<div\n class=\"item-title text-truncate si-title-2\"\n [class.visually-hidden]=\"!this.parent && this.navbar.collapsed()\"\n>\n <ng-content />\n</div>\n@if (item().badge) {\n <span class=\"badge\" [ngClass]=\"'bg-' + item().badgeColor\">\n {{ item().badge }}\n </span>\n}\n@if (group) {\n <span aria-hidden=\"true\" class=\"dropdown-caret element-down-2 me-0 text-body\"></span>\n}\n", styles: [":host(.navbar-vertical-item){display:flex;align-items:center;position:relative;color:var(--element-text-primary);background:none;border:0;font-size:.875rem;padding-block:8px;padding-inline:0 12px;min-inline-size:0;min-block-size:40px;inline-size:100%}:host(.navbar-vertical-item) .item-title{margin-inline-start:12px}:host(.navbar-vertical-item) .icon{margin-inline-start:12px}:host(.navbar-vertical-item) .icon+.item-title{margin-inline-start:12px}:host(.navbar-vertical-item).active{color:var(--element-text-active);background:var(--element-base-1-selected)}:host(.navbar-vertical-item).active:after{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;inline-size:4px;background:var(--element-ui-0)}:host(.navbar-vertical-item):hover{text-decoration:none;background:var(--element-base-1-hover)}:host-context(.nav-scroll > .navbar-vertical-item)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-vertical-group)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-flyout-anchor)+:host(.navbar-vertical-item){margin-block-start:8px}:host-context(.nav-text-only si-navbar-vertical-group) .item-title{margin-inline-start:0}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item){padding-inline-start:32px}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item) .item-title{font-weight:400}:host(.dropdown-item) .item-title{font-weight:400}:host-context(.nav-collapsed) :is(.badge,.dropdown-caret){display:none}:host-context(si-navbar-vertical:not(.nav-collapsed)) .badge-text{display:none}:host-context(.link-with-items)>:host(button){padding-inline:12px}:host-context(.link-with-items)>:host(button) .item-title,:host-context(.link-with-items)>:host(button) .icon{display:none}:host-context(.link-with-items)>:host(button) .dropdown-caret{padding-inline:0}:host-context(.link-with-items)>:host(button):after{display:none}:host-context(.nav-collapsed .link-with-items)>:host(button){padding-inline:0}:host-context(.nav-collapsed .link-with-items)>:host(button):after{display:block}:host-context(.nav-collapsed .link-with-items)>:host(button) .icon{display:block}:host-context(.nav-collapsed .link-with-items)>:host(a){display:none}.badge{margin-inline:auto 0}.badge-text{inset-block-start:-8px;inset-inline-start:-6px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
208
+ }
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalItemComponent, decorators: [{
210
+ type: Component,
211
+ args: [{ selector: 'a[si-navbar-vertical-item], button[si-navbar-vertical-item]', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, host: {
212
+ 'class': 'focus-inside',
213
+ '[class.dropdown-item]': 'this.parent?.group?.flyout()',
214
+ '[class.navbar-vertical-item]': '!this.parent?.group?.flyout()',
215
+ '[class.active]': 'active'
216
+ }, template: "@if (item().icon) {\n <i class=\"icon me-n2\" aria-hidden=\"true\" [ngClass]=\"[item().icon]\"></i>\n}\n@if (item().icon && item().badge) {\n <span class=\"badge-text\">{{ item().badge }}</span>\n}\n<div\n class=\"item-title text-truncate si-title-2\"\n [class.visually-hidden]=\"!this.parent && this.navbar.collapsed()\"\n>\n <ng-content />\n</div>\n@if (item().badge) {\n <span class=\"badge\" [ngClass]=\"'bg-' + item().badgeColor\">\n {{ item().badge }}\n </span>\n}\n@if (group) {\n <span aria-hidden=\"true\" class=\"dropdown-caret element-down-2 me-0 text-body\"></span>\n}\n", styles: [":host(.navbar-vertical-item){display:flex;align-items:center;position:relative;color:var(--element-text-primary);background:none;border:0;font-size:.875rem;padding-block:8px;padding-inline:0 12px;min-inline-size:0;min-block-size:40px;inline-size:100%}:host(.navbar-vertical-item) .item-title{margin-inline-start:12px}:host(.navbar-vertical-item) .icon{margin-inline-start:12px}:host(.navbar-vertical-item) .icon+.item-title{margin-inline-start:12px}:host(.navbar-vertical-item).active{color:var(--element-text-active);background:var(--element-base-1-selected)}:host(.navbar-vertical-item).active:after{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;inline-size:4px;background:var(--element-ui-0)}:host(.navbar-vertical-item):hover{text-decoration:none;background:var(--element-base-1-hover)}:host-context(.nav-scroll > .navbar-vertical-item)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-vertical-group)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-flyout-anchor)+:host(.navbar-vertical-item){margin-block-start:8px}:host-context(.nav-text-only si-navbar-vertical-group) .item-title{margin-inline-start:0}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item){padding-inline-start:32px}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item) .item-title{font-weight:400}:host(.dropdown-item) .item-title{font-weight:400}:host-context(.nav-collapsed) :is(.badge,.dropdown-caret){display:none}:host-context(si-navbar-vertical:not(.nav-collapsed)) .badge-text{display:none}:host-context(.link-with-items)>:host(button){padding-inline:12px}:host-context(.link-with-items)>:host(button) .item-title,:host-context(.link-with-items)>:host(button) .icon{display:none}:host-context(.link-with-items)>:host(button) .dropdown-caret{padding-inline:0}:host-context(.link-with-items)>:host(button):after{display:none}:host-context(.nav-collapsed .link-with-items)>:host(button){padding-inline:0}:host-context(.nav-collapsed .link-with-items)>:host(button):after{display:block}:host-context(.nav-collapsed .link-with-items)>:host(button) .icon{display:block}:host-context(.nav-collapsed .link-with-items)>:host(a){display:none}.badge{margin-inline:auto 0}.badge-text{inset-block-start:-8px;inset-inline-start:-6px}\n"] }]
217
+ }], propDecorators: { triggered: [{
218
+ type: HostListener,
219
+ args: ['click']
220
+ }] } });
221
+
222
+ /**
223
+ * Copyright (c) Siemens 2016 - 2025
224
+ * SPDX-License-Identifier: MIT
225
+ */
226
+ // We have to use a component to build animations.
227
+ class SiNavbarVerticalGroupComponent {
228
+ navbar = inject(SI_NAVBAR_VERTICAL);
229
+ groupTrigger = inject(SiNavbarVerticalGroupTriggerDirective);
230
+ groupParent = inject(SiNavbarVerticalItemComponent);
231
+ routerLinkActive = inject(RouterLinkActive, { optional: true });
232
+ // Store initial value, as the mode for an instance never changes.
233
+ flyout = this.groupTrigger.flyout();
234
+ visible = computed(() => {
235
+ return this.flyout || (!this.navbar.collapsed() && this.groupTrigger.expanded());
236
+ });
237
+ state = computed(() => {
238
+ if (this.flyout) {
239
+ return 'flyout';
240
+ }
241
+ if (this.groupTrigger.expanded() && !this.navbar.collapsed()) {
242
+ return 'expanded';
243
+ }
244
+ return 'collapsed';
245
+ });
246
+ constructor() {
247
+ this.routerLinkActive?.isActiveChange
248
+ .pipe(takeUntilDestroyed())
249
+ .subscribe(active => this.groupTrigger.active.set(active));
250
+ }
251
+ close() {
252
+ this.groupTrigger.hideFlyout();
253
+ }
254
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
255
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: SiNavbarVerticalGroupComponent, isStandalone: true, selector: "si-navbar-vertical-group", host: { attributes: { "role": "group" }, listeners: { "keydown.escape": "close()" }, properties: { "id": "groupTrigger.groupId", "attr.aria-labelledby": "groupTrigger.id", "class.dropdown-menu": "flyout", "@collapse": "state() ?? \"collapsed\"" } }, ngImport: i0, template: `<div [cdkTrapFocus]="flyout" [cdkTrapFocusAutoCapture]="flyout">
256
+ <ng-content />
257
+ </div>`, isInline: true, styles: [":host{display:block;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [
258
+ trigger('collapse', [
259
+ state('collapsed', style({ display: 'none' })),
260
+ // Prevents initial animation. See: https://stackoverflow.com/a/50791299
261
+ transition(':enter', []),
262
+ transition('collapsed => expanded', [
263
+ style({ 'display': 'block', 'block-size': '0' }),
264
+ animate('0.5s ease', style({ 'block-size': '*' }))
265
+ ]),
266
+ transition('expanded => collapsed', [animate('0.5s ease', style({ 'block-size': '0' }))])
267
+ ])
268
+ ] });
269
+ }
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalGroupComponent, decorators: [{
271
+ type: Component,
272
+ args: [{ selector: 'si-navbar-vertical-group', imports: [CdkTrapFocus], template: `<div [cdkTrapFocus]="flyout" [cdkTrapFocusAutoCapture]="flyout">
273
+ <ng-content />
274
+ </div>`, host: {
275
+ role: 'group',
276
+ '[id]': 'groupTrigger.groupId',
277
+ '[attr.aria-labelledby]': 'groupTrigger.id',
278
+ '[class.dropdown-menu]': 'flyout',
279
+ '[@collapse]': 'state() ?? "collapsed"'
280
+ }, animations: [
281
+ trigger('collapse', [
282
+ state('collapsed', style({ display: 'none' })),
283
+ // Prevents initial animation. See: https://stackoverflow.com/a/50791299
284
+ transition(':enter', []),
285
+ transition('collapsed => expanded', [
286
+ style({ 'display': 'block', 'block-size': '0' }),
287
+ animate('0.5s ease', style({ 'block-size': '*' }))
288
+ ]),
289
+ transition('expanded => collapsed', [animate('0.5s ease', style({ 'block-size': '0' }))])
290
+ ])
291
+ ], styles: [":host{display:block;overflow:hidden}\n"] }]
292
+ }], ctorParameters: () => [], propDecorators: { close: [{
293
+ type: HostListener,
294
+ args: ['keydown.escape']
295
+ }] } });
296
+
297
+ /**
298
+ * Copyright (c) Siemens 2016 - 2025
299
+ * SPDX-License-Identifier: MIT
300
+ */
301
+ class SiNavbarVerticalHeaderComponent {
302
+ navbar = inject(SI_NAVBAR_VERTICAL);
303
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
304
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiNavbarVerticalHeaderComponent, isStandalone: true, selector: "si-navbar-vertical-header", host: { properties: { "@headerCollapse": "navbar.collapsed()" } }, ngImport: i0, template: `
305
+ @if (!navbar.collapsed()) {
306
+ <div class="si-title-2 text-secondary p-5">
307
+ <ng-content />
308
+ </div>
309
+ } @else {
310
+ <si-navbar-vertical-divider />
311
+ }
312
+ `, isInline: true, styles: [":host{display:flex;align-items:center}si-navbar-vertical-divider{flex:1;margin-block:0}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }], animations: [
313
+ trigger('headerCollapse', [
314
+ // Prevents initial animation. See: https://stackoverflow.com/a/50791299
315
+ transition(':enter', []),
316
+ state('true', style({ blockSize: '13px' })),
317
+ state('false', style({ blockSize: '40px' })),
318
+ transition('* <=> *', [
319
+ query('.si-title-2', style({ position: 'absolute' }), { optional: true }),
320
+ group([
321
+ query(':leave', [style({ opacity: '1' }), animate('0.2s ease-in', style({ opacity: '0' }))], { optional: true }),
322
+ query(':enter', [style({ opacity: '0' }), animate('0.2s 0.3s ease-out', style({ opacity: '1' }))], { optional: true }),
323
+ animate('0.5s ease')
324
+ ])
325
+ ])
326
+ ])
327
+ ] });
328
+ }
329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalHeaderComponent, decorators: [{
330
+ type: Component,
331
+ args: [{ selector: 'si-navbar-vertical-header', imports: [SiNavbarVerticalDividerComponent], template: `
332
+ @if (!navbar.collapsed()) {
333
+ <div class="si-title-2 text-secondary p-5">
334
+ <ng-content />
335
+ </div>
336
+ } @else {
337
+ <si-navbar-vertical-divider />
338
+ }
339
+ `, animations: [
340
+ trigger('headerCollapse', [
341
+ // Prevents initial animation. See: https://stackoverflow.com/a/50791299
342
+ transition(':enter', []),
343
+ state('true', style({ blockSize: '13px' })),
344
+ state('false', style({ blockSize: '40px' })),
345
+ transition('* <=> *', [
346
+ query('.si-title-2', style({ position: 'absolute' }), { optional: true }),
347
+ group([
348
+ query(':leave', [style({ opacity: '1' }), animate('0.2s ease-in', style({ opacity: '0' }))], { optional: true }),
349
+ query(':enter', [style({ opacity: '0' }), animate('0.2s 0.3s ease-out', style({ opacity: '1' }))], { optional: true }),
350
+ animate('0.5s ease')
351
+ ])
352
+ ])
353
+ ])
354
+ ], host: { '[@headerCollapse]': 'navbar.collapsed()' }, styles: [":host{display:flex;align-items:center}si-navbar-vertical-divider{flex:1;margin-block:0}\n"] }]
355
+ }] });
356
+
357
+ /**
358
+ * Copyright (c) Siemens 2016 - 2025
359
+ * SPDX-License-Identifier: MIT
360
+ */
361
+ class SiNavbarVerticalItemLegacyComponent {
362
+ item = input.required();
363
+ navbarExpandButtonText = input.required();
364
+ navbarCollapseButtonText = input.required();
365
+ expanded = model.required();
366
+ flyoutItems = computed(() => {
367
+ if (!this.navbar.collapsed()) {
368
+ return this.item().items;
369
+ }
370
+ else {
371
+ return [
372
+ this.isLink() ? { ...this.item(), items: undefined } : [],
373
+ this.item().items ?? []
374
+ ].flat();
375
+ }
376
+ });
377
+ isLink = computed(() => {
378
+ const item = this.item();
379
+ return !!item.action || !!item.link || !!item.href;
380
+ });
381
+ toggleButtonLabel = computed(() => this.navbar.collapsed()
382
+ ? this.navbarExpandButtonText()
383
+ : this.expanded()
384
+ ? this.navbarCollapseButtonText()
385
+ : this.navbarExpandButtonText());
386
+ siLinks = viewChildren(SiLinkDirective);
387
+ itemActive = computed(() => (this.navbar.collapsed() || !this.expanded()) && this.siLinks().some(link => link.active()));
388
+ navbar = inject(SI_NAVBAR_VERTICAL);
389
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalItemLegacyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
390
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiNavbarVerticalItemLegacyComponent, isStandalone: true, selector: "si-navbar-vertical-item-legacy", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, navbarExpandButtonText: { classPropertyName: "navbarExpandButtonText", publicName: "navbarExpandButtonText", isSignal: true, isRequired: true, transformFunction: null }, navbarCollapseButtonText: { classPropertyName: "navbarCollapseButtonText", publicName: "navbarCollapseButtonText", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { classAttribute: "d-block mb-4" }, viewQueries: [{ propertyName: "siLinks", predicate: SiLinkDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- section header -->\n@if (!isLink() && !item().items) {\n <si-navbar-vertical-header>\n {{ item().title | translate }}\n </si-navbar-vertical-header>\n} @else if (isLink() && !item().items) {\n <a [si-navbar-vertical-item]=\"item()\" [siLink]=\"item()\">\n {{ item().title | translate }}\n </a>\n} @else if (isLink() && item().items) {\n <div class=\"link-with-items\">\n <a\n #mainLink\n [si-navbar-vertical-item]=\"item()\"\n [siLink]=\"item()\"\n [activeOverride]=\"itemActive()\"\n >\n {{ item().title | translate }}\n </a>\n <button\n type=\"button\"\n class=\"mt-0\"\n [si-navbar-vertical-item]=\"item()\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [activeOverride]=\"mainLink.active\"\n [attr.aria-label]=\"toggleButtonLabel() + ' ' + item().title | translate\"\n [(expanded)]=\"expanded\"\n >\n {{ item().title | translate }}\n </button>\n </div>\n} @else if (item().items) {\n <button\n type=\"button\"\n [si-navbar-vertical-item]=\"item()\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [activeOverride]=\"itemActive()\"\n [(expanded)]=\"expanded\"\n >\n {{ item().title | translate }}\n </button>\n}\n\n<ng-template #group>\n <si-navbar-vertical-group>\n @for (subitem of flyoutItems(); track $index) {\n <a activeClass=\"active\" [si-navbar-vertical-item]=\"subitem\" [siLink]=\"subitem\">\n {{ subitem.title | translate }}\n </a>\n }\n </si-navbar-vertical-group>\n</ng-template>\n", styles: [".link-with-items{display:grid;grid-template-columns:1fr auto;grid-template-areas:\"- -\" \"items items\"}si-navbar-vertical-group{grid-area:items}\n"], dependencies: [{ kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiNavbarVerticalItemComponent, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: ["si-navbar-vertical-item", "activeOverride"] }, { kind: "directive", type: SiNavbarVerticalGroupTriggerDirective, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: ["siNavbarVerticalGroupTriggerFor", "groupData", "stateId", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiNavbarVerticalGroupComponent, selector: "si-navbar-vertical-group" }, { kind: "component", type: SiNavbarVerticalHeaderComponent, selector: "si-navbar-vertical-header" }] });
391
+ }
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalItemLegacyComponent, decorators: [{
393
+ type: Component,
394
+ args: [{ selector: 'si-navbar-vertical-item-legacy', imports: [
395
+ SiLinkDirective,
396
+ SiTranslatePipe,
397
+ SiNavbarVerticalItemComponent,
398
+ SiNavbarVerticalGroupTriggerDirective,
399
+ SiNavbarVerticalGroupComponent,
400
+ SiNavbarVerticalHeaderComponent
401
+ ], host: {
402
+ 'class': 'd-block mb-4'
403
+ }, template: "<!-- section header -->\n@if (!isLink() && !item().items) {\n <si-navbar-vertical-header>\n {{ item().title | translate }}\n </si-navbar-vertical-header>\n} @else if (isLink() && !item().items) {\n <a [si-navbar-vertical-item]=\"item()\" [siLink]=\"item()\">\n {{ item().title | translate }}\n </a>\n} @else if (isLink() && item().items) {\n <div class=\"link-with-items\">\n <a\n #mainLink\n [si-navbar-vertical-item]=\"item()\"\n [siLink]=\"item()\"\n [activeOverride]=\"itemActive()\"\n >\n {{ item().title | translate }}\n </a>\n <button\n type=\"button\"\n class=\"mt-0\"\n [si-navbar-vertical-item]=\"item()\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [activeOverride]=\"mainLink.active\"\n [attr.aria-label]=\"toggleButtonLabel() + ' ' + item().title | translate\"\n [(expanded)]=\"expanded\"\n >\n {{ item().title | translate }}\n </button>\n </div>\n} @else if (item().items) {\n <button\n type=\"button\"\n [si-navbar-vertical-item]=\"item()\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [activeOverride]=\"itemActive()\"\n [(expanded)]=\"expanded\"\n >\n {{ item().title | translate }}\n </button>\n}\n\n<ng-template #group>\n <si-navbar-vertical-group>\n @for (subitem of flyoutItems(); track $index) {\n <a activeClass=\"active\" [si-navbar-vertical-item]=\"subitem\" [siLink]=\"subitem\">\n {{ subitem.title | translate }}\n </a>\n }\n </si-navbar-vertical-group>\n</ng-template>\n", styles: [".link-with-items{display:grid;grid-template-columns:1fr auto;grid-template-areas:\"- -\" \"items items\"}si-navbar-vertical-group{grid-area:items}\n"] }]
404
+ }] });
405
+
406
+ /**
407
+ * Copyright (c) Siemens 2016 - 2025
408
+ * SPDX-License-Identifier: MIT
409
+ */
410
+ /** Required to have compiler checks on the factory template */
411
+ class SiNavbarVerticalItemGuardDirective {
412
+ static ngTemplateContextGuard(dir, ctx) {
413
+ return true;
414
+ }
415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalItemGuardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
416
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: SiNavbarVerticalItemGuardDirective, isStandalone: true, selector: "[siNavbarVerticalItemGuard]", ngImport: i0 });
417
+ }
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalItemGuardDirective, decorators: [{
419
+ type: Directive,
420
+ args: [{ selector: '[siNavbarVerticalItemGuard]' }]
421
+ }] });
422
+ class SiNavbarVerticalComponent {
423
+ /**
424
+ * Whether the navbar-vertical is collapsed.
425
+ *
426
+ * @defaultValue false
427
+ */
428
+ collapsed = model(false);
429
+ /**
430
+ * Toggles search bar
431
+ *
432
+ * @defaultValue false
433
+ */
434
+ searchable = input(false, { transform: booleanAttribute });
435
+ /**
436
+ * Placeholder text for search
437
+ *
438
+ * @defaultValue
439
+ * ```
440
+ * $localize`:@@SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER:Search ...`
441
+ * ```
442
+ */
443
+ searchPlaceholder = input($localize `:@@SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER:Search ...`);
444
+ /**
445
+ * List of vertical navigation items
446
+ *
447
+ * @defaultValue []
448
+ */
449
+ items = model([]);
450
+ /**
451
+ * Set to `true` if there are no icons
452
+ *
453
+ * @defaultValue false
454
+ */
455
+ /**
456
+ * Set to `true` if there are no icons
457
+ *
458
+ * @defaultValue false
459
+ */
460
+ textOnly = input(false, { transform: booleanAttribute });
461
+ /**
462
+ * Set to false to hide the vertical navbar
463
+ *
464
+ * @defaultValue true
465
+ */
466
+ /**
467
+ * Set to false to hide the vertical navbar
468
+ *
469
+ * @defaultValue true
470
+ */
471
+ visible = input(true, { transform: booleanAttribute });
472
+ /**
473
+ * @deprecated dropped without replacement.
474
+ *
475
+ * @defaultValue undefined
476
+ */
477
+ autoCollapseDelay = input(undefined, { transform: numberAttribute });
478
+ /**
479
+ * Text for the navbar expand button. Required for a11y
480
+ *
481
+ * @defaultValue
482
+ * ```
483
+ * $localize`:@@SI_NAVBAR_VERTICAL.EXPAND:Expand`
484
+ * ```
485
+ */
486
+ navbarExpandButtonText = input($localize `:@@SI_NAVBAR_VERTICAL.EXPAND:Expand`);
487
+ /**
488
+ * Text for the navbar collapse button. Required for a11y
489
+ *
490
+ * @defaultValue
491
+ * ```
492
+ * $localize`:@@SI_NAVBAR_VERTICAL.COLLAPSE:Collapse`
493
+ * ```
494
+ */
495
+ navbarCollapseButtonText = input($localize `:@@SI_NAVBAR_VERTICAL.COLLAPSE:Collapse`);
496
+ /**
497
+ * An optional stateId to uniquely identify a component instance.
498
+ * Required for persistence of ui state.
499
+ */
500
+ stateId = input();
501
+ /**
502
+ * Label for the skip link to the vertical navbar
503
+ *
504
+ * @defaultValue
505
+ * ```
506
+ * $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL:Navigation`
507
+ * ```
508
+ */
509
+ skipLinkNavigationLabel = input($localize `:@@SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL:Navigation`);
510
+ /**
511
+ * Label for the skip link to main content
512
+ *
513
+ * @defaultValue
514
+ * ```
515
+ * $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL:Main content`
516
+ * ```
517
+ */
518
+ skipLinkMainContentLabel = input($localize `:@@SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL:Main content`);
519
+ /**
520
+ * Output for search bar input
521
+ */
522
+ searchEvent = output();
523
+ searchBar = viewChild.required(SiSearchBarComponent);
524
+ activatedRoute = inject(ActivatedRoute, { optional: true });
525
+ // Is required to prevent the navbar from running the padding animation on creation.
526
+ ready = true;
527
+ searchInputDelay = 400;
528
+ uiStateService = inject(SI_UI_STATE_SERVICE, { optional: true });
529
+ breakpointObserver = inject(BreakpointObserver);
530
+ navbarItems = viewChildren(SiNavbarVerticalItemComponent);
531
+ navbarItemsLegacy = viewChildren(SiNavbarVerticalItemLegacyComponent);
532
+ itemsToComponents = computed(() => new Map([...this.navbarItems(), ...this.navbarItemsLegacy()].map(component => [
533
+ component.item(), // to have a broader key type allowed
534
+ component
535
+ ])));
536
+ smallScreen = signal(false);
537
+ uiStateExpandedItems = signal({});
538
+ destroyer = new Subject();
539
+ // Indicates if the user prefers a collapsed navbar. Relevant for resizing.
540
+ preferCollapse = false;
541
+ constructor() {
542
+ this.breakpointObserver
543
+ .observe(`(max-width: ${BOOTSTRAP_BREAKPOINTS.lgMinimum}px)`)
544
+ .pipe(takeUntil(this.destroyer))
545
+ .subscribe(({ matches }) => {
546
+ this.collapsed.set(matches || this.preferCollapse);
547
+ this.smallScreen.set(matches);
548
+ });
549
+ }
550
+ ngOnChanges(changes) {
551
+ if (changes.collapsed) {
552
+ this.preferCollapse = this.collapsed();
553
+ }
554
+ }
555
+ ngOnInit() {
556
+ const stateId = this.stateId();
557
+ if (this.uiStateService && stateId) {
558
+ this.uiStateService.load(stateId).then(uiState => {
559
+ if (uiState) {
560
+ this.preferCollapse = uiState.preferCollapse;
561
+ this.collapsed.set(this.smallScreen() ? this.collapsed() : this.preferCollapse);
562
+ this.uiStateExpandedItems.set(uiState.expandedItems);
563
+ }
564
+ });
565
+ }
566
+ }
567
+ ngOnDestroy() {
568
+ this.destroyer.next();
569
+ this.destroyer.complete();
570
+ }
571
+ toggleCollapse() {
572
+ if (this.collapsed()) {
573
+ this.expand();
574
+ }
575
+ else {
576
+ this.collapse();
577
+ }
578
+ }
579
+ /** Expands the vertical navbar. */
580
+ expand() {
581
+ this.collapsed.set(false);
582
+ if (!this.smallScreen()) {
583
+ this.preferCollapse = this.collapsed();
584
+ const autoCollapseDelay = this.autoCollapseDelay();
585
+ if (autoCollapseDelay) {
586
+ setTimeout(() => {
587
+ if (!this.collapsed()) {
588
+ this.toggleCollapse();
589
+ }
590
+ }, autoCollapseDelay);
591
+ }
592
+ }
593
+ this.saveUIState();
594
+ }
595
+ /** Collapses the vertical navbar. */
596
+ collapse() {
597
+ this.collapsed.set(true);
598
+ if (!this.smallScreen()) {
599
+ this.preferCollapse = this.collapsed();
600
+ }
601
+ this.saveUIState();
602
+ }
603
+ expandForSearch() {
604
+ this.expand();
605
+ setTimeout(() => this.searchBar().focus());
606
+ }
607
+ doSearch(event) {
608
+ this.searchEvent.emit(event);
609
+ }
610
+ /** @internal */
611
+ groupTriggered() {
612
+ this.saveUIState();
613
+ const itemToComponentMap = this.itemsToComponents();
614
+ this.items.set(this.items().map(item => {
615
+ const component = itemToComponentMap.get(item);
616
+ if (!component) {
617
+ return item;
618
+ }
619
+ if (component instanceof SiNavbarVerticalItemLegacyComponent) {
620
+ return {
621
+ ...item,
622
+ expanded: component.expanded()
623
+ };
624
+ }
625
+ if (component.group) {
626
+ return {
627
+ ...item,
628
+ expanded: component.group.expanded()
629
+ };
630
+ }
631
+ return item;
632
+ }));
633
+ this.collapsed.set(false);
634
+ }
635
+ saveUIState() {
636
+ const stateId = this.stateId();
637
+ if (!this.uiStateService || !stateId) {
638
+ return;
639
+ }
640
+ const expandedGroups = this.navbarItems()
641
+ .filter(item => item.item().id && item.group?.expanded())
642
+ .map(item => [item.item().id, true]);
643
+ const expandedGroupsLegacy = this.navbarItemsLegacy()
644
+ .filter(item => item.item().id && item.expanded())
645
+ .map(item => [item.item().id, true]);
646
+ this.uiStateService.save(stateId, {
647
+ preferCollapse: this.preferCollapse,
648
+ expandedItems: Object.fromEntries([...expandedGroups, ...expandedGroupsLegacy])
649
+ });
650
+ }
651
+ /** @internal */
652
+ itemTriggered() {
653
+ if (this.smallScreen()) {
654
+ this.collapsed.set(true);
655
+ }
656
+ }
657
+ isLegacyStyle(item) {
658
+ return !('type' in item && item.type !== 'check' && item.type !== 'radio');
659
+ }
660
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
661
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiNavbarVerticalComponent, isStandalone: true, selector: "si-navbar-vertical", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, textOnly: { classPropertyName: "textOnly", publicName: "textOnly", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, autoCollapseDelay: { classPropertyName: "autoCollapseDelay", publicName: "autoCollapseDelay", isSignal: true, isRequired: false, transformFunction: null }, navbarExpandButtonText: { classPropertyName: "navbarExpandButtonText", publicName: "navbarExpandButtonText", isSignal: true, isRequired: false, transformFunction: null }, navbarCollapseButtonText: { classPropertyName: "navbarCollapseButtonText", publicName: "navbarCollapseButtonText", isSignal: true, isRequired: false, transformFunction: null }, stateId: { classPropertyName: "stateId", publicName: "stateId", isSignal: true, isRequired: false, transformFunction: null }, skipLinkNavigationLabel: { classPropertyName: "skipLinkNavigationLabel", publicName: "skipLinkNavigationLabel", isSignal: true, isRequired: false, transformFunction: null }, skipLinkMainContentLabel: { classPropertyName: "skipLinkMainContentLabel", publicName: "skipLinkMainContentLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", items: "itemsChange", searchEvent: "searchEvent" }, host: { properties: { "class.nav-collapsed": "collapsed()", "class.nav-text-only": "textOnly()", "class.visible": "visible()", "class.ready": "this.ready" }, classAttribute: "si-layout-inner" }, providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }], viewQueries: [{ propertyName: "searchBar", first: true, predicate: SiSearchBarComponent, descendants: true, isSignal: true }, { propertyName: "navbarItems", predicate: SiNavbarVerticalItemComponent, descendants: true, isSignal: true }, { propertyName: "navbarItemsLegacy", predicate: SiNavbarVerticalItemLegacyComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@if (visible()) {\n @if (smallScreen() && !collapsed()) {\n <div\n class=\"modal-backdrop\"\n [@backdrop]=\"smallScreen() && !collapsed() ? 'show' : 'hide'\"\n (click)=\"toggleCollapse()\"\n ></div>\n }\n <nav\n tabindex=\"-1\"\n class=\"bg-base-1 focus-sub-inside\"\n [siSkipLinkTarget]=\"skipLinkNavigationLabel()\"\n [@collapse]=\"collapsed() ? 'collapsed' : 'expanded'\"\n [class.text-only]=\"textOnly()\"\n >\n <div class=\"collapse-toggle ms-auto\">\n <div class=\"mobile-drawer focus-inside navbar-vertical-no-collapse\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost flip-rtl\"\n [class.element-double-left]=\"!collapsed()\"\n [class.element-double-right]=\"collapsed()\"\n [attr.aria-label]=\"\n (collapsed() ? navbarExpandButtonText() : navbarCollapseButtonText()) | translate\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\"\n >\n </button>\n </div>\n </div>\n @if (searchable()) {\n <div class=\"nav-search\">\n <si-search-bar\n class=\"mx-4\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"searchInputDelay\"\n [showIcon]=\"true\"\n (searchChange)=\"doSearch($event)\"\n />\n <button\n type=\"button\"\n class=\"btn-search bg-base-0 p-2 mx-4 mobile navbar-vertical-no-collapse text-secondary\"\n [attr.aria-label]=\"searchPlaceholder() | translate\"\n (click)=\"expandForSearch()\"\n >\n <i class=\"icon element-search\"></i>\n </button>\n </div>\n }\n <div class=\"nav-scroll\">\n @for (item of items(); track $index) {\n @if (isLegacyStyle(item)) {\n <si-navbar-vertical-item-legacy\n [item]=\"item\"\n [navbarExpandButtonText]=\"navbarExpandButtonText() | translate\"\n [navbarCollapseButtonText]=\"navbarCollapseButtonText() | translate\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n />\n } @else {\n <ng-container *ngTemplateOutlet=\"navbarItems; context: { item }\" />\n }\n }\n </div>\n </nav>\n}\n<main\n class=\"si-layout-inner focus-none\"\n tabindex=\"-1\"\n [siSkipLinkTarget]=\"skipLinkMainContentLabel()\"\n>\n <ng-content />\n</main>\n\n<ng-template #navbarItems let-item=\"item\" siNavbarVerticalItemGuard>\n @switch (item.type) {\n @case ('group') {\n <button\n type=\"button\"\n [si-navbar-vertical-item]=\"item\"\n [stateId]=\"item.id\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [groupData]=\"{ group: item }\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n >\n {{ item.label | translate }}\n </button>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n @case ('divider') {\n <si-navbar-vertical-divider />\n }\n @case ('header') {\n <si-navbar-vertical-header>\n {{ item.label | translate }}\n </si-navbar-vertical-header>\n }\n }\n</ng-template>\n\n<ng-template #group let-group=\"group\" siNavbarVerticalItemGuard>\n <si-navbar-vertical-group routerLinkActive>\n @for (item of group.children; track $index) {\n <!-- a copy from above, but we have to nest the items to make routerLink active work -->\n @switch (item.type) {\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n }\n }\n </si-navbar-vertical-group>\n</ng-template>\n", styles: [":host{display:block;transition:padding-inline-start calc(.5s * var(--element-animations-enabled, 1));--si-layout-header-first-element-offset: 40px}:host.ready:not(.visible){padding-inline-start:0!important}nav{display:flex;flex-direction:column;position:fixed;z-index:1031;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));inset-block-end:0;inset-inline-start:0;inline-size:0}:host(.nav-collapsed) nav{z-index:1030}.nav-scroll{overflow-x:hidden;min-block-size:0;flex:1 0 0;overflow-y:auto;margin-block-start:8px}:host(.nav-collapsed) .nav-scroll{display:none}.mobile-drawer{display:block;text-align:end;border:0;inline-size:48px;color:var(--element-text-primary);padding-block:4px;padding-inline:8px;margin-block-start:8px;border-start-end-radius:var(--element-radius-2);border-end-end-radius:var(--element-radius-2)}.nav-search{display:flex;align-items:center;block-size:40px;margin-block-start:8px;overflow-x:hidden}:host(.nav-collapsed) .nav-search{display:none}si-search-bar{inline-size:100%}.btn-search{display:none;border:0;border-radius:var(--element-radius-2)}:host.nav-collapsed .mobile-drawer{border:0;color:var(--element-text-primary);background:var(--element-base-1);text-align:end;box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2)}:host.nav-collapsed si-search-bar{display:none}.modal-backdrop{z-index:1031;opacity:0}@media (min-width: 576px){:host:not(.nav-text-only),:host:not(.nav-collapsed){--si-layout-header-first-element-offset: 0}:host:not(.nav-text-only){padding-inline-start:48px}:host:not(.nav-text-only) .mobile-drawer{background:transparent;box-shadow:none}:host:not(.nav-text-only).nav-collapsed .nav-scroll{display:block}:host:not(.nav-text-only).nav-collapsed .nav-search{display:flex}.btn-search{display:none}:host.nav-collapsed .btn-search{display:block}:host:not(.nav-text-only) nav{inline-size:48px}}@media (min-width: 992px){:host:not(.nav-collapsed){padding-inline-start:240px}}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalItemLegacyComponent, selector: "si-navbar-vertical-item-legacy", inputs: ["item", "navbarExpandButtonText", "navbarCollapseButtonText", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled"], outputs: ["searchChange"] }, { kind: "directive", type: SiSkipLinkTargetDirective, selector: "[siSkipLinkTarget]", inputs: ["siSkipLinkTarget"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiNavbarVerticalItemComponent, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: ["si-navbar-vertical-item", "activeOverride"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: SiNavbarVerticalItemGuardDirective, selector: "[siNavbarVerticalItemGuard]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiNavbarVerticalGroupComponent, selector: "si-navbar-vertical-group" }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: SiNavbarVerticalGroupTriggerDirective, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: ["siNavbarVerticalGroupTriggerFor", "groupData", "stateId", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }, { kind: "component", type: SiNavbarVerticalHeaderComponent, selector: "si-navbar-vertical-header" }], animations: [
662
+ trigger('collapse', [
663
+ state('expanded', style({ 'inline-size': '240px' })),
664
+ state('collapsed', style({ 'inline-size': '*' })),
665
+ transition('collapsed => expanded', [
666
+ group([
667
+ animate('0.5s ease'),
668
+ query('si-navbar-vertical-group, si-navbar-vertical-header', animateChild(), {
669
+ optional: true
670
+ }),
671
+ query('.dropdown-caret', [style({ 'opacity': '0' }), animate('0.5s ease', style({ 'opacity': '1' }))], { optional: true }),
672
+ query('.mobile-drawer', style({ 'box-shadow': 'none', background: 'var(--element-base-1)' })),
673
+ query('.mobile-drawer', [
674
+ style({ 'inline-size': '*', 'box-shadow': '*' }),
675
+ animate('0.5s ease', style({ 'inline-size': '240px' })),
676
+ style({ 'inline-size': '240px' })
677
+ ])
678
+ ])
679
+ ]),
680
+ transition('expanded => collapsed', [
681
+ query('.nav-search', style({ 'display': 'flex' }), { optional: true }),
682
+ query('.nav-scroll', style({ 'display': 'block' })),
683
+ group([
684
+ animate('0.5s ease'),
685
+ query('si-navbar-vertical-group, si-navbar-vertical-header', animateChild(), {
686
+ optional: true
687
+ }),
688
+ query('.section-item', style({ visibility: 'hidden' }), { optional: true }),
689
+ query('si-navbar-vertical-group', style({ visibility: 'hidden' }), { optional: true }),
690
+ query('.mobile-drawer', [
691
+ style({ 'inline-size': '240px', 'box-shadow': 'none' }),
692
+ animate('0.5s ease', style({ 'inline-size': '*' })),
693
+ style({ 'inline-size': '*' })
694
+ ])
695
+ ])
696
+ ])
697
+ ]),
698
+ trigger('backdrop', [
699
+ state('show', style({ 'opacity': '1' })),
700
+ state('hide', style({ 'opacity': '0' })),
701
+ transition('* <=> *', [animate('0.15s linear')])
702
+ ])
703
+ ] });
704
+ }
705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalComponent, decorators: [{
706
+ type: Component,
707
+ args: [{ selector: 'si-navbar-vertical', imports: [
708
+ SiNavbarVerticalItemLegacyComponent,
709
+ SiSearchBarComponent,
710
+ SiSkipLinkTargetDirective,
711
+ SiTranslatePipe,
712
+ SiNavbarVerticalItemComponent,
713
+ RouterLink,
714
+ SiNavbarVerticalItemGuardDirective,
715
+ NgTemplateOutlet,
716
+ SiNavbarVerticalGroupComponent,
717
+ RouterLinkActive,
718
+ SiNavbarVerticalGroupTriggerDirective,
719
+ SiNavbarVerticalDividerComponent,
720
+ SiNavbarVerticalHeaderComponent
721
+ ], host: {
722
+ class: 'si-layout-inner',
723
+ '[class.nav-collapsed]': 'collapsed()',
724
+ '[class.nav-text-only]': 'textOnly()',
725
+ '[class.visible]': 'visible()'
726
+ }, providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }], animations: [
727
+ trigger('collapse', [
728
+ state('expanded', style({ 'inline-size': '240px' })),
729
+ state('collapsed', style({ 'inline-size': '*' })),
730
+ transition('collapsed => expanded', [
731
+ group([
732
+ animate('0.5s ease'),
733
+ query('si-navbar-vertical-group, si-navbar-vertical-header', animateChild(), {
734
+ optional: true
735
+ }),
736
+ query('.dropdown-caret', [style({ 'opacity': '0' }), animate('0.5s ease', style({ 'opacity': '1' }))], { optional: true }),
737
+ query('.mobile-drawer', style({ 'box-shadow': 'none', background: 'var(--element-base-1)' })),
738
+ query('.mobile-drawer', [
739
+ style({ 'inline-size': '*', 'box-shadow': '*' }),
740
+ animate('0.5s ease', style({ 'inline-size': '240px' })),
741
+ style({ 'inline-size': '240px' })
742
+ ])
743
+ ])
744
+ ]),
745
+ transition('expanded => collapsed', [
746
+ query('.nav-search', style({ 'display': 'flex' }), { optional: true }),
747
+ query('.nav-scroll', style({ 'display': 'block' })),
748
+ group([
749
+ animate('0.5s ease'),
750
+ query('si-navbar-vertical-group, si-navbar-vertical-header', animateChild(), {
751
+ optional: true
752
+ }),
753
+ query('.section-item', style({ visibility: 'hidden' }), { optional: true }),
754
+ query('si-navbar-vertical-group', style({ visibility: 'hidden' }), { optional: true }),
755
+ query('.mobile-drawer', [
756
+ style({ 'inline-size': '240px', 'box-shadow': 'none' }),
757
+ animate('0.5s ease', style({ 'inline-size': '*' })),
758
+ style({ 'inline-size': '*' })
759
+ ])
760
+ ])
761
+ ])
762
+ ]),
763
+ trigger('backdrop', [
764
+ state('show', style({ 'opacity': '1' })),
765
+ state('hide', style({ 'opacity': '0' })),
766
+ transition('* <=> *', [animate('0.15s linear')])
767
+ ])
768
+ ], template: "@if (visible()) {\n @if (smallScreen() && !collapsed()) {\n <div\n class=\"modal-backdrop\"\n [@backdrop]=\"smallScreen() && !collapsed() ? 'show' : 'hide'\"\n (click)=\"toggleCollapse()\"\n ></div>\n }\n <nav\n tabindex=\"-1\"\n class=\"bg-base-1 focus-sub-inside\"\n [siSkipLinkTarget]=\"skipLinkNavigationLabel()\"\n [@collapse]=\"collapsed() ? 'collapsed' : 'expanded'\"\n [class.text-only]=\"textOnly()\"\n >\n <div class=\"collapse-toggle ms-auto\">\n <div class=\"mobile-drawer focus-inside navbar-vertical-no-collapse\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost flip-rtl\"\n [class.element-double-left]=\"!collapsed()\"\n [class.element-double-right]=\"collapsed()\"\n [attr.aria-label]=\"\n (collapsed() ? navbarExpandButtonText() : navbarCollapseButtonText()) | translate\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\"\n >\n </button>\n </div>\n </div>\n @if (searchable()) {\n <div class=\"nav-search\">\n <si-search-bar\n class=\"mx-4\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"searchInputDelay\"\n [showIcon]=\"true\"\n (searchChange)=\"doSearch($event)\"\n />\n <button\n type=\"button\"\n class=\"btn-search bg-base-0 p-2 mx-4 mobile navbar-vertical-no-collapse text-secondary\"\n [attr.aria-label]=\"searchPlaceholder() | translate\"\n (click)=\"expandForSearch()\"\n >\n <i class=\"icon element-search\"></i>\n </button>\n </div>\n }\n <div class=\"nav-scroll\">\n @for (item of items(); track $index) {\n @if (isLegacyStyle(item)) {\n <si-navbar-vertical-item-legacy\n [item]=\"item\"\n [navbarExpandButtonText]=\"navbarExpandButtonText() | translate\"\n [navbarCollapseButtonText]=\"navbarCollapseButtonText() | translate\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n />\n } @else {\n <ng-container *ngTemplateOutlet=\"navbarItems; context: { item }\" />\n }\n }\n </div>\n </nav>\n}\n<main\n class=\"si-layout-inner focus-none\"\n tabindex=\"-1\"\n [siSkipLinkTarget]=\"skipLinkMainContentLabel()\"\n>\n <ng-content />\n</main>\n\n<ng-template #navbarItems let-item=\"item\" siNavbarVerticalItemGuard>\n @switch (item.type) {\n @case ('group') {\n <button\n type=\"button\"\n [si-navbar-vertical-item]=\"item\"\n [stateId]=\"item.id\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [groupData]=\"{ group: item }\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n >\n {{ item.label | translate }}\n </button>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n @case ('divider') {\n <si-navbar-vertical-divider />\n }\n @case ('header') {\n <si-navbar-vertical-header>\n {{ item.label | translate }}\n </si-navbar-vertical-header>\n }\n }\n</ng-template>\n\n<ng-template #group let-group=\"group\" siNavbarVerticalItemGuard>\n <si-navbar-vertical-group routerLinkActive>\n @for (item of group.children; track $index) {\n <!-- a copy from above, but we have to nest the items to make routerLink active work -->\n @switch (item.type) {\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n }\n }\n </si-navbar-vertical-group>\n</ng-template>\n", styles: [":host{display:block;transition:padding-inline-start calc(.5s * var(--element-animations-enabled, 1));--si-layout-header-first-element-offset: 40px}:host.ready:not(.visible){padding-inline-start:0!important}nav{display:flex;flex-direction:column;position:fixed;z-index:1031;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));inset-block-end:0;inset-inline-start:0;inline-size:0}:host(.nav-collapsed) nav{z-index:1030}.nav-scroll{overflow-x:hidden;min-block-size:0;flex:1 0 0;overflow-y:auto;margin-block-start:8px}:host(.nav-collapsed) .nav-scroll{display:none}.mobile-drawer{display:block;text-align:end;border:0;inline-size:48px;color:var(--element-text-primary);padding-block:4px;padding-inline:8px;margin-block-start:8px;border-start-end-radius:var(--element-radius-2);border-end-end-radius:var(--element-radius-2)}.nav-search{display:flex;align-items:center;block-size:40px;margin-block-start:8px;overflow-x:hidden}:host(.nav-collapsed) .nav-search{display:none}si-search-bar{inline-size:100%}.btn-search{display:none;border:0;border-radius:var(--element-radius-2)}:host.nav-collapsed .mobile-drawer{border:0;color:var(--element-text-primary);background:var(--element-base-1);text-align:end;box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2)}:host.nav-collapsed si-search-bar{display:none}.modal-backdrop{z-index:1031;opacity:0}@media (min-width: 576px){:host:not(.nav-text-only),:host:not(.nav-collapsed){--si-layout-header-first-element-offset: 0}:host:not(.nav-text-only){padding-inline-start:48px}:host:not(.nav-text-only) .mobile-drawer{background:transparent;box-shadow:none}:host:not(.nav-text-only).nav-collapsed .nav-scroll{display:block}:host:not(.nav-text-only).nav-collapsed .nav-search{display:flex}.btn-search{display:none}:host.nav-collapsed .btn-search{display:block}:host:not(.nav-text-only) nav{inline-size:48px}}@media (min-width: 992px){:host:not(.nav-collapsed){padding-inline-start:240px}}\n"] }]
769
+ }], ctorParameters: () => [], propDecorators: { ready: [{
770
+ type: HostBinding,
771
+ args: ['class.ready']
772
+ }] } });
773
+
774
+ /**
775
+ * Copyright (c) Siemens 2016 - 2025
776
+ * SPDX-License-Identifier: MIT
777
+ */
778
+ class SiNavbarVerticalModule {
779
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
780
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalModule, imports: [SiNavbarVerticalComponent], exports: [SiNavbarVerticalComponent] });
781
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalModule, imports: [SiNavbarVerticalComponent] });
782
+ }
783
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarVerticalModule, decorators: [{
784
+ type: NgModule,
785
+ args: [{
786
+ imports: [SiNavbarVerticalComponent],
787
+ exports: [SiNavbarVerticalComponent]
788
+ }]
789
+ }] });
790
+
791
+ /**
792
+ * Copyright (c) Siemens 2016 - 2025
793
+ * SPDX-License-Identifier: MIT
794
+ */
795
+
796
+ /**
797
+ * Generated bundle index. Do not edit.
798
+ */
799
+
800
+ export { SiNavbarVerticalComponent, SiNavbarVerticalItemGuardDirective, SiNavbarVerticalModule };
801
+ //# sourceMappingURL=siemens-element-ng-navbar-vertical.mjs.map