@siemens/element-ng 47.4.0 → 47.6.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 (198) hide show
  1. package/breadcrumb-router/index.d.ts +8 -0
  2. package/breadcrumb-router/package.json +3 -0
  3. package/breadcrumb-router/si-breadcrumb-default-resolver.service.d.ts +23 -0
  4. package/breadcrumb-router/si-breadcrumb-router.component.d.ts +30 -0
  5. package/breadcrumb-router/si-breadcrumb-router.model.d.ts +53 -0
  6. package/breadcrumb-router/si-breadcrumb-router.module.d.ts +7 -0
  7. package/common/models/status-type.model.d.ts +2 -0
  8. package/datatable/index.d.ts +42 -0
  9. package/datatable/package.json +3 -0
  10. package/datatable/si-datatable-interaction.directive.d.ts +34 -0
  11. package/datatable/si-datatable.module.d.ts +7 -0
  12. package/date-range-filter/si-date-range-filter.component.d.ts +5 -1
  13. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +263 -0
  14. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -0
  15. package/fesm2022/siemens-element-ng-breadcrumb.mjs +1 -1
  16. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  18. package/fesm2022/siemens-element-ng-datatable.mjs +173 -0
  19. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -0
  20. package/fesm2022/siemens-element-ng-date-range-filter.mjs +26 -5
  21. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  22. package/fesm2022/siemens-element-ng-filtered-search.mjs +1139 -0
  23. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -0
  24. package/fesm2022/siemens-element-ng-formly.mjs +935 -0
  25. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -0
  26. package/fesm2022/siemens-element-ng-icon.mjs +29 -15
  27. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  28. package/fesm2022/siemens-element-ng-list-details.mjs +390 -0
  29. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -0
  30. package/fesm2022/siemens-element-ng-loading-spinner.mjs +15 -12
  31. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-main-detail-container.mjs +269 -0
  33. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -0
  34. package/fesm2022/siemens-element-ng-modal.mjs +5 -2
  35. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  36. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +802 -0
  37. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -0
  38. package/fesm2022/siemens-element-ng-password-strength.mjs +22 -16
  39. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  40. package/fesm2022/siemens-element-ng-phone-number.mjs +426 -0
  41. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -0
  42. package/fesm2022/siemens-element-ng-resize-observer.mjs +6 -3
  43. package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
  44. package/fesm2022/siemens-element-ng-result-details-list.mjs +74 -0
  45. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -0
  46. package/fesm2022/siemens-element-ng-shadow-root.mjs +70 -0
  47. package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -0
  48. package/fesm2022/siemens-element-ng-side-panel.mjs +554 -0
  49. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -0
  50. package/fesm2022/siemens-element-ng-status-bar.mjs +348 -0
  51. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -0
  52. package/fesm2022/siemens-element-ng-tabs-next.mjs +356 -0
  53. package/fesm2022/siemens-element-ng-tabs-next.mjs.map +1 -0
  54. package/fesm2022/siemens-element-ng-tabs.mjs +1 -1
  55. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  56. package/fesm2022/siemens-element-ng-threshold.mjs +319 -0
  57. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -0
  58. package/fesm2022/siemens-element-ng-tour.mjs +384 -0
  59. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -0
  60. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-tree-view.mjs +2936 -0
  62. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -0
  63. package/fesm2022/siemens-element-ng-wizard.mjs +2 -2
  64. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  65. package/filtered-search/index.d.ts +7 -0
  66. package/filtered-search/package.json +3 -0
  67. package/filtered-search/si-filtered-search-helper.d.ts +22 -0
  68. package/filtered-search/si-filtered-search-value.component.d.ts +53 -0
  69. package/filtered-search/si-filtered-search.component.d.ts +329 -0
  70. package/filtered-search/si-filtered-search.model.d.ts +139 -0
  71. package/filtered-search/si-filtered-search.module.d.ts +7 -0
  72. package/filtered-search/values/date-value/si-filtered-search-date-value.component.d.ts +57 -0
  73. package/filtered-search/values/si-filtered-search-value.base.d.ts +27 -0
  74. package/filtered-search/values/typeahead/si-filtered-search-typeahead.component.d.ts +45 -0
  75. package/formly/fields/button/si-formly-button.component.d.ts +7 -0
  76. package/formly/fields/date-range/si-formly-date-range.component.d.ts +6 -0
  77. package/formly/fields/datetime/si-formly-datetime.component.d.ts +13 -0
  78. package/formly/fields/email/si-formly-email.component.d.ts +6 -0
  79. package/formly/fields/ip-input/si-formly-ip-input.component.d.ts +6 -0
  80. package/formly/fields/number/si-formly-number.component.d.ts +6 -0
  81. package/formly/fields/password/si-formly-password.component.d.ts +6 -0
  82. package/formly/fields/select/si-formly-select.component.d.ts +6 -0
  83. package/formly/fields/text/si-formly-text-display.component.d.ts +7 -0
  84. package/formly/fields/textarea/si-formly-textarea.component.d.ts +18 -0
  85. package/formly/fields/time/si-formly-time.component.d.ts +13 -0
  86. package/formly/index.d.ts +6 -0
  87. package/formly/package.json +3 -0
  88. package/formly/si-formly-translate.extension.d.ts +11 -0
  89. package/formly/si-formly.component.d.ts +62 -0
  90. package/formly/si-formly.module.d.ts +35 -0
  91. package/formly/structural/si-formly-accordion/si-formly-accordion.component.d.ts +13 -0
  92. package/formly/structural/si-formly-array/si-formly-array.component.d.ts +6 -0
  93. package/formly/structural/si-formly-object/si-formly-object.component.d.ts +6 -0
  94. package/formly/structural/si-formly-object-grid/si-formly-object-grid.component.d.ts +22 -0
  95. package/formly/structural/si-formly-object-grid/si-formly-object-grid.model.d.ts +21 -0
  96. package/formly/structural/si-formly-object-plain/si-formly-object-plain.component.d.ts +6 -0
  97. package/formly/structural/si-formly-tabset/si-formly-object-tabset.component.d.ts +7 -0
  98. package/formly/utils.d.ts +6 -0
  99. package/formly/wrapper/si-formly-fieldset.component.d.ts +8 -0
  100. package/formly/wrapper/si-formly-form-field-provider.directive.d.ts +19 -0
  101. package/formly/wrapper/si-formly-horizontal-wrapper.component.d.ts +6 -0
  102. package/formly/wrapper/si-formly-icon-wrapper.component.d.ts +6 -0
  103. package/formly/wrapper/si-formly-wrapper.component.d.ts +8 -0
  104. package/icon/element-icons.d.ts +5 -0
  105. package/list-details/index.d.ts +12 -0
  106. package/list-details/package.json +3 -0
  107. package/list-details/si-details-pane/si-details-pane.component.d.ts +8 -0
  108. package/list-details/si-details-pane-body/si-details-pane-body.component.d.ts +6 -0
  109. package/list-details/si-details-pane-footer/si-details-pane-footer.component.d.ts +6 -0
  110. package/list-details/si-details-pane-header/si-details-pane-header.component.d.ts +38 -0
  111. package/list-details/si-list-details.component.d.ts +100 -0
  112. package/list-details/si-list-pane/si-list-pane.component.d.ts +10 -0
  113. package/list-details/si-list-pane-body/si-list-pane-body.component.d.ts +6 -0
  114. package/list-details/si-list-pane-header/si-list-pane-header.component.d.ts +6 -0
  115. package/loading-spinner/si-loading-spinner.directive.d.ts +3 -2
  116. package/main-detail-container/index.d.ts +6 -0
  117. package/main-detail-container/package.json +3 -0
  118. package/main-detail-container/si-main-detail-container.component.d.ts +151 -0
  119. package/main-detail-container/si-main-detail-container.module.d.ts +7 -0
  120. package/navbar-vertical/index.d.ts +7 -0
  121. package/navbar-vertical/package.json +3 -0
  122. package/navbar-vertical/si-navbar-vertical-divider.component.d.ts +5 -0
  123. package/navbar-vertical/si-navbar-vertical-group-trigger.directive.d.ts +38 -0
  124. package/navbar-vertical/si-navbar-vertical-group.component.d.ts +16 -0
  125. package/navbar-vertical/si-navbar-vertical-header.component.d.ts +6 -0
  126. package/navbar-vertical/si-navbar-vertical-item-legacy.component.d.ts +17 -0
  127. package/navbar-vertical/si-navbar-vertical-item.component.d.ts +21 -0
  128. package/navbar-vertical/si-navbar-vertical.component.d.ts +148 -0
  129. package/navbar-vertical/si-navbar-vertical.model.d.ts +77 -0
  130. package/navbar-vertical/si-navbar-vertical.module.d.ts +7 -0
  131. package/navbar-vertical/si-navbar-vertical.provider.d.ts +7 -0
  132. package/package.json +93 -9
  133. package/password-strength/si-password-strength.directive.d.ts +11 -0
  134. package/phone-number/index.d.ts +7 -0
  135. package/phone-number/package.json +3 -0
  136. package/phone-number/si-phone-number-input-select.directive.d.ts +10 -0
  137. package/phone-number/si-phone-number-input.component.d.ts +137 -0
  138. package/phone-number/si-phone-number-input.models.d.ts +48 -0
  139. package/phone-number/si-phone-number-input.module.d.ts +7 -0
  140. package/resize-observer/si-resize-observer.directive.d.ts +3 -1
  141. package/result-details-list/index.d.ts +7 -0
  142. package/result-details-list/package.json +3 -0
  143. package/result-details-list/si-result-details-list.component.d.ts +14 -0
  144. package/result-details-list/si-result-details-list.datamodel.d.ts +48 -0
  145. package/result-details-list/si-result-details-list.module.d.ts +7 -0
  146. package/shadow-root/index.d.ts +5 -0
  147. package/shadow-root/package.json +3 -0
  148. package/shadow-root/si-shadow-root.directive.d.ts +39 -0
  149. package/side-panel/index.d.ts +9 -0
  150. package/side-panel/package.json +3 -0
  151. package/side-panel/si-side-panel-content.component.d.ts +105 -0
  152. package/side-panel/si-side-panel.component.d.ts +108 -0
  153. package/side-panel/si-side-panel.module.d.ts +8 -0
  154. package/side-panel/si-side-panel.service.d.ts +45 -0
  155. package/side-panel/side-panel.model.d.ts +16 -0
  156. package/status-bar/index.d.ts +7 -0
  157. package/status-bar/package.json +3 -0
  158. package/status-bar/si-status-bar-item/index.d.ts +6 -0
  159. package/status-bar/si-status-bar-item/si-status-bar-item.component.d.ts +22 -0
  160. package/status-bar/si-status-bar-item/si-status-bar-item.model.d.ts +33 -0
  161. package/status-bar/si-status-bar.component.d.ts +116 -0
  162. package/status-bar/si-status-bar.module.d.ts +7 -0
  163. package/tabs-next/index.d.ts +7 -0
  164. package/tabs-next/package.json +3 -0
  165. package/tabs-next/si-tab-next-base.directive.d.ts +63 -0
  166. package/tabs-next/si-tab-next-link.component.d.ts +16 -0
  167. package/tabs-next/si-tab-next.component.d.ts +16 -0
  168. package/tabs-next/si-tabs-tokens.d.ts +7 -0
  169. package/tabs-next/si-tabset-next.component.d.ts +57 -0
  170. package/template-i18n.json +45 -0
  171. package/threshold/index.d.ts +6 -0
  172. package/threshold/package.json +3 -0
  173. package/threshold/si-readonly-threshold-option.component.d.ts +11 -0
  174. package/threshold/si-threshold.component.d.ts +147 -0
  175. package/threshold/si-threshold.module.d.ts +7 -0
  176. package/tour/index.d.ts +6 -0
  177. package/tour/package.json +3 -0
  178. package/tour/si-tour-highlight.component.d.ts +15 -0
  179. package/tour/si-tour-token.model.d.ts +27 -0
  180. package/tour/si-tour.component.d.ts +31 -0
  181. package/tour/si-tour.model.d.ts +51 -0
  182. package/tour/si-tour.service.d.ts +62 -0
  183. package/translate/si-translatable-keys.interface.d.ts +45 -0
  184. package/tree-view/drag-drop.util.d.ts +32 -0
  185. package/tree-view/index.d.ts +12 -0
  186. package/tree-view/package.json +3 -0
  187. package/tree-view/si-tree-view-converter.service.d.ts +41 -0
  188. package/tree-view/si-tree-view-item/si-tree-view-item.component.d.ts +105 -0
  189. package/tree-view/si-tree-view-item/si-tree-view-item.directive.d.ts +24 -0
  190. package/tree-view/si-tree-view-item-context.d.ts +11 -0
  191. package/tree-view/si-tree-view-item-height.service.d.ts +49 -0
  192. package/tree-view/si-tree-view-item-template.directive.d.ts +18 -0
  193. package/tree-view/si-tree-view-virtualization.service.d.ts +150 -0
  194. package/tree-view/si-tree-view.component.d.ts +466 -0
  195. package/tree-view/si-tree-view.model.d.ts +146 -0
  196. package/tree-view/si-tree-view.module.d.ts +10 -0
  197. package/tree-view/si-tree-view.service.d.ts +55 -0
  198. package/tree-view/si-tree-view.utils.d.ts +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-navbar-vertical.mjs","sources":["../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-divider.component.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical.provider.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-group-trigger.directive.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-item.component.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-item.component.html","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-group.component.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-header.component.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-item-legacy.component.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical-item-legacy.component.html","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical.component.ts","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical.component.html","../../../../projects/element-ng/navbar-vertical/si-navbar-vertical.module.ts","../../../../projects/element-ng/navbar-vertical/index.ts","../../../../projects/element-ng/navbar-vertical/siemens-element-ng-navbar-vertical.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n// We need a component to attach the stylesheet\n@Component({\n selector: 'si-navbar-vertical-divider',\n styleUrl: './si-navbar-vertical-divider.component.scss',\n template: ''\n})\nexport class SiNavbarVerticalDividerComponent {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { InjectionToken } from '@angular/core';\n\nimport type { SiNavbarVerticalComponent } from './si-navbar-vertical.component';\n\nexport const SI_NAVBAR_VERTICAL = new InjectionToken<SiNavbarVerticalComponent>(\n 'SI_NAVBAR_VERTICAL'\n);\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n ComponentRef,\n computed,\n Directive,\n EmbeddedViewRef,\n HostListener,\n inject,\n Injector,\n input,\n model,\n OnInit,\n signal,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NavbarVerticalItem, NavbarVerticalItemGroup } from './si-navbar-vertical.model';\nimport { SI_NAVBAR_VERTICAL } from './si-navbar-vertical.provider';\n\n/**\n * Using this component, to anchor the flyout inside the navbar within the a11y tree.\n * Otherwise, without aria-owns, screen reader will announce the leaving of the navbar when moving to the flyout.\n * Aria-owns cannot be put directly on the trigger\n * as chrome will include the flyout children in the a11y label of the trigger.\n */\n@Component({\n selector: 'si-navbar-flyout-anchor',\n template: '',\n host: { '[attr.aria-owns]': 'groupId()' }\n})\nclass SiNavbarFlyoutAnchorComponent {\n readonly groupId = input<string>();\n}\n\n@Directive({\n selector: 'button[siNavbarVerticalGroupTriggerFor]',\n host: {\n class: 'dropdown-toggle',\n '[id]': 'id',\n '[class.show]': 'expanded()',\n '[attr.aria-controls]': 'groupId',\n '[attr.aria-expanded]': 'expanded()'\n }\n})\nexport class SiNavbarVerticalGroupTriggerDirective implements OnInit {\n private static idCounter = 0;\n\n /** @internal */\n readonly groupId = `si-navbar-vertical-group-${SiNavbarVerticalGroupTriggerDirective.idCounter++}`;\n readonly id = `${this.groupId}-trigger`;\n\n readonly groupTemplate = input.required<TemplateRef<unknown>>({\n alias: 'siNavbarVerticalGroupTriggerFor'\n });\n\n readonly groupData = input<{ item?: NavbarVerticalItem; group: NavbarVerticalItemGroup }>();\n\n readonly stateId = input<string>();\n\n readonly expanded = model.required<boolean>();\n\n /** @internal */\n readonly flyout = signal(false);\n\n /** @internal */\n readonly active = signal(false);\n\n protected readonly navbar = inject(SI_NAVBAR_VERTICAL);\n\n private flyoutOutsideClickSubscription?: Subscription;\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly overlay = inject(Overlay);\n private readonly injector = Injector.create({ parent: inject(Injector), providers: [] });\n private readonly overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.viewContainer.element)\n .withPositions([\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' }\n ])\n });\n private groupView!: EmbeddedViewRef<unknown>;\n private flyoutAnchorComponentRef?: ComponentRef<SiNavbarFlyoutAnchorComponent>;\n private readonly templatePortal = computed(\n () =>\n new TemplatePortal(this.groupTemplate(), this.viewContainer, this.groupData(), this.injector)\n );\n\n ngOnInit(): void {\n this.attachInline();\n }\n\n /** @internal */\n hideFlyout(): void {\n if (this.flyout()) {\n this.flyout.set(false);\n this.flyoutAnchorComponentRef?.destroy();\n this.flyoutAnchorComponentRef = undefined;\n this.attachInline();\n this.flyoutOutsideClickSubscription?.unsubscribe();\n }\n }\n\n @HostListener('click') protected triggered(): void {\n if (this.navbar.collapsed()) {\n this.toggleFlyout();\n } else {\n this.expanded.set(!this.expanded());\n this.navbar.groupTriggered();\n }\n }\n\n private toggleFlyout(): void {\n if (this.flyout()) {\n this.hideFlyout();\n } else {\n this.flyout.set(true);\n this.attachFlyout();\n }\n }\n private attachInline(): void {\n this.overlayRef.detach();\n this.groupView?.destroy(); // we need ?. for first attachment\n this.groupView = this.viewContainer.createEmbeddedView(this.groupTemplate(), this.groupData(), {\n injector: this.injector\n });\n }\n\n private attachFlyout(): void {\n this.groupView.destroy();\n this.groupView = this.overlayRef.attach(this.templatePortal());\n this.flyoutAnchorComponentRef = this.viewContainer.createComponent(\n SiNavbarFlyoutAnchorComponent\n );\n this.flyoutAnchorComponentRef.setInput('groupId', this.groupId);\n this.flyoutOutsideClickSubscription = this.overlayRef\n .outsidePointerEvents()\n .subscribe(() => this.hideFlyout());\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n inject,\n input,\n OnInit\n} from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\n\nimport { SiNavbarVerticalGroupTriggerDirective } from './si-navbar-vertical-group-trigger.directive';\nimport {\n NavbarVerticalItemAction,\n NavbarVerticalItemGroup,\n NavbarVerticalItemLink,\n NavbarVerticalItemRouterLink\n} from './si-navbar-vertical.model';\nimport { SI_NAVBAR_VERTICAL } from './si-navbar-vertical.provider';\n\ntype NavbarVerticalItemInteractive =\n | NavbarVerticalItemGroup\n | NavbarVerticalItemRouterLink\n | NavbarVerticalItemLink\n | NavbarVerticalItemAction;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[si-navbar-vertical-item], button[si-navbar-vertical-item]',\n imports: [NgClass],\n templateUrl: './si-navbar-vertical-item.component.html',\n styleUrl: './si-navbar-vertical-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'focus-inside',\n '[class.dropdown-item]': 'this.parent?.group?.flyout()',\n '[class.navbar-vertical-item]': '!this.parent?.group?.flyout()',\n '[class.active]': 'active'\n }\n})\nexport class SiNavbarVerticalItemComponent implements OnInit {\n readonly item = input.required<NavbarVerticalItemInteractive | MenuItem>({\n alias: 'si-navbar-vertical-item'\n });\n readonly activeOverride = input<boolean>();\n\n protected readonly navbar = inject(SI_NAVBAR_VERTICAL);\n protected readonly parent = inject(SiNavbarVerticalItemComponent, {\n skipSelf: true,\n optional: true\n });\n readonly group = inject(SiNavbarVerticalGroupTriggerDirective, {\n optional: true,\n self: true\n });\n private readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n private readonly siLink = inject(SiLinkDirective, { optional: true });\n\n ngOnInit(): void {\n if (this.group && this.active) {\n this.group.expanded.set(true);\n }\n }\n\n @HostListener('click') protected triggered(): void {\n const item = this.item();\n if (item.type === 'action') {\n item.action(item);\n return;\n }\n this.parent?.group?.hideFlyout();\n if (!this.group) {\n this.navbar.itemTriggered();\n }\n }\n\n get active(): boolean {\n return (\n this.activeOverride() ||\n this.routerLinkActive?.isActive ||\n this.siLink?.active() ||\n ((!this.group?.expanded() || this.navbar.collapsed()) && this.group?.active()) ||\n false\n );\n /* eslint-disable-enable @typescript-eslint/prefer-nullish-coalescing */\n }\n}\n","@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","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { Component, computed, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterLinkActive } from '@angular/router';\n\nimport { SiNavbarVerticalGroupTriggerDirective } from './si-navbar-vertical-group-trigger.directive';\nimport { SiNavbarVerticalItemComponent } from './si-navbar-vertical-item.component';\nimport { SI_NAVBAR_VERTICAL } from './si-navbar-vertical.provider';\n\n// We have to use a component to build animations.\n@Component({\n selector: 'si-navbar-vertical-group',\n template: `<div [cdkTrapFocus]=\"flyout\" [cdkTrapFocusAutoCapture]=\"flyout\">\n <ng-content />\n </div>`,\n styles: `\n :host {\n display: block;\n overflow: hidden;\n }\n `,\n host: {\n role: 'group',\n '[id]': 'groupTrigger.groupId',\n '[attr.aria-labelledby]': 'groupTrigger.id',\n '[class.dropdown-menu]': 'flyout',\n '[@collapse]': 'state() ?? \"collapsed\"'\n },\n imports: [CdkTrapFocus],\n animations: [\n trigger('collapse', [\n state('collapsed', style({ display: 'none' })),\n // Prevents initial animation. See: https://stackoverflow.com/a/50791299\n transition(':enter', []),\n transition('collapsed => expanded', [\n style({ 'display': 'block', 'block-size': '0' }),\n animate('0.5s ease', style({ 'block-size': '*' }))\n ]),\n transition('expanded => collapsed', [animate('0.5s ease', style({ 'block-size': '0' }))])\n ])\n ]\n})\nexport class SiNavbarVerticalGroupComponent {\n protected readonly navbar = inject(SI_NAVBAR_VERTICAL);\n protected readonly groupTrigger = inject(SiNavbarVerticalGroupTriggerDirective);\n readonly groupParent = inject(SiNavbarVerticalItemComponent);\n private readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n // Store initial value, as the mode for an instance never changes.\n protected flyout = this.groupTrigger.flyout();\n\n protected readonly visible = computed(() => {\n return this.flyout || (!this.navbar.collapsed() && this.groupTrigger.expanded());\n });\n\n protected readonly state = computed(() => {\n if (this.flyout) {\n return 'flyout';\n }\n\n if (this.groupTrigger.expanded() && !this.navbar.collapsed()) {\n return 'expanded';\n }\n\n return 'collapsed';\n });\n\n constructor() {\n this.routerLinkActive?.isActiveChange\n .pipe(takeUntilDestroyed())\n .subscribe(active => this.groupTrigger.active.set(active));\n }\n\n @HostListener('keydown.escape') protected close(): void {\n this.groupTrigger.hideFlyout();\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { animate, group, query, state, style, transition, trigger } from '@angular/animations';\nimport { Component, inject } from '@angular/core';\n\nimport { SiNavbarVerticalDividerComponent } from './si-navbar-vertical-divider.component';\nimport { SI_NAVBAR_VERTICAL } from './si-navbar-vertical.provider';\n\n@Component({\n selector: 'si-navbar-vertical-header',\n imports: [SiNavbarVerticalDividerComponent],\n template: `\n @if (!navbar.collapsed()) {\n <div class=\"si-title-2 text-secondary p-5\">\n <ng-content />\n </div>\n } @else {\n <si-navbar-vertical-divider />\n }\n `,\n animations: [\n trigger('headerCollapse', [\n // Prevents initial animation. See: https://stackoverflow.com/a/50791299\n transition(':enter', []),\n state('true', style({ blockSize: '13px' })),\n state('false', style({ blockSize: '40px' })),\n transition('* <=> *', [\n query('.si-title-2', style({ position: 'absolute' }), { optional: true }),\n group([\n query(\n ':leave',\n [style({ opacity: '1' }), animate('0.2s ease-in', style({ opacity: '0' }))],\n { optional: true }\n ),\n query(\n ':enter',\n [style({ opacity: '0' }), animate('0.2s 0.3s ease-out', style({ opacity: '1' }))],\n { optional: true }\n ),\n animate('0.5s ease')\n ])\n ])\n ])\n ],\n styleUrl: './si-navbar-vertical-header.component.scss',\n host: { '[@headerCollapse]': 'navbar.collapsed()' }\n})\nexport class SiNavbarVerticalHeaderComponent {\n protected navbar = inject(SI_NAVBAR_VERTICAL);\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, inject, input, model, viewChildren } from '@angular/core';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiNavbarVerticalGroupTriggerDirective } from './si-navbar-vertical-group-trigger.directive';\nimport { SiNavbarVerticalGroupComponent } from './si-navbar-vertical-group.component';\nimport { SiNavbarVerticalHeaderComponent } from './si-navbar-vertical-header.component';\nimport { SiNavbarVerticalItemComponent } from './si-navbar-vertical-item.component';\nimport { SI_NAVBAR_VERTICAL } from './si-navbar-vertical.provider';\n\n@Component({\n selector: 'si-navbar-vertical-item-legacy',\n templateUrl: './si-navbar-vertical-item-legacy.component.html',\n styleUrl: './si-navbar-vertical-item-legacy.component.scss',\n imports: [\n SiLinkDirective,\n SiTranslateModule,\n SiNavbarVerticalItemComponent,\n SiNavbarVerticalGroupTriggerDirective,\n SiNavbarVerticalGroupComponent,\n SiNavbarVerticalHeaderComponent\n ],\n host: {\n 'class': 'd-block mb-4'\n }\n})\nexport class SiNavbarVerticalItemLegacyComponent {\n readonly item = input.required<MenuItem>();\n readonly navbarExpandButtonText = input.required();\n readonly navbarCollapseButtonText = input.required();\n readonly expanded = model.required<boolean>();\n\n protected readonly flyoutItems = computed(() => {\n if (!this.navbar.collapsed()) {\n return this.item().items;\n } else {\n return [\n this.isLink() ? { ...this.item(), items: undefined } : [],\n this.item().items ?? []\n ].flat();\n }\n });\n\n protected readonly isLink = computed(() => {\n const item = this.item();\n return !!item.action || !!item.link || !!item.href;\n });\n\n protected readonly toggleButtonLabel = computed(() =>\n this.navbar.collapsed()\n ? this.navbarExpandButtonText()\n : this.expanded()\n ? this.navbarCollapseButtonText()\n : this.navbarExpandButtonText()\n );\n\n protected readonly siLinks = viewChildren(SiLinkDirective);\n protected readonly itemActive = computed(\n () =>\n (this.navbar.collapsed() || !this.expanded()) && this.siLinks().some(link => link.active())\n );\n protected navbar = inject(SI_NAVBAR_VERTICAL);\n}\n","<!-- 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","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport {\n animate,\n animateChild,\n group,\n query,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n Directive,\n HostBinding,\n inject,\n input,\n model,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport { ActivatedRoute, RouterLink, RouterLinkActive } from '@angular/router';\nimport { MenuItem, SI_UI_STATE_SERVICE } from '@siemens/element-ng/common';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiSkipLinkTargetDirective } from '@siemens/element-ng/skip-links';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SiNavbarVerticalDividerComponent } from './si-navbar-vertical-divider.component';\nimport { SiNavbarVerticalGroupTriggerDirective } from './si-navbar-vertical-group-trigger.directive';\nimport { SiNavbarVerticalGroupComponent } from './si-navbar-vertical-group.component';\nimport { SiNavbarVerticalHeaderComponent } from './si-navbar-vertical-header.component';\nimport { SiNavbarVerticalItemLegacyComponent } from './si-navbar-vertical-item-legacy.component';\nimport { SiNavbarVerticalItemComponent } from './si-navbar-vertical-item.component';\nimport { NavbarVerticalItem, NavbarVerticalItemGroup } from './si-navbar-vertical.model';\nimport { SI_NAVBAR_VERTICAL } from './si-navbar-vertical.provider';\n\ninterface UIState {\n preferCollapse: boolean;\n expandedItems: Record<string, boolean>;\n}\n\n/** Required to have compiler checks on the factory template */\n@Directive({ selector: '[siNavbarVerticalItemGuard]' })\nexport class SiNavbarVerticalItemGuardDirective {\n static ngTemplateContextGuard(\n dir: SiNavbarVerticalItemGuardDirective,\n ctx: any\n ): ctx is { item: NavbarVerticalItem; group: NavbarVerticalItemGroup } {\n return true;\n }\n}\n\n@Component({\n selector: 'si-navbar-vertical',\n templateUrl: './si-navbar-vertical.component.html',\n styleUrl: './si-navbar-vertical.component.scss',\n host: {\n class: 'si-layout-inner',\n '[class.nav-collapsed]': 'collapsed()',\n '[class.nav-text-only]': 'textOnly()',\n '[class.visible]': 'visible()'\n },\n providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }],\n animations: [\n trigger('collapse', [\n state('expanded', style({ 'inline-size': '240px' })),\n state('collapsed', style({ 'inline-size': '*' })),\n transition('collapsed => expanded', [\n group([\n animate('0.5s ease'),\n query('si-navbar-vertical-group, si-navbar-vertical-header', animateChild(), {\n optional: true\n }),\n query(\n '.dropdown-caret',\n [style({ 'opacity': '0' }), animate('0.5s ease', style({ 'opacity': '1' }))],\n { optional: true }\n ),\n query(\n '.mobile-drawer',\n style({ 'box-shadow': 'none', background: 'var(--element-base-1)' })\n ),\n query('.mobile-drawer', [\n style({ 'inline-size': '*', 'box-shadow': '*' }),\n animate('0.5s ease', style({ 'inline-size': '240px' })),\n style({ 'inline-size': '240px' })\n ])\n ])\n ]),\n transition('expanded => collapsed', [\n query('.nav-search', style({ 'display': 'flex' }), { optional: true }),\n query('.nav-scroll', style({ 'display': 'block' })),\n group([\n animate('0.5s ease'),\n query('si-navbar-vertical-group, si-navbar-vertical-header', animateChild(), {\n optional: true\n }),\n query('.section-item', style({ visibility: 'hidden' }), { optional: true }),\n query('si-navbar-vertical-group', style({ visibility: 'hidden' }), { optional: true }),\n query('.mobile-drawer', [\n style({ 'inline-size': '240px', 'box-shadow': 'none' }),\n animate('0.5s ease', style({ 'inline-size': '*' })),\n style({ 'inline-size': '*' })\n ])\n ])\n ])\n ]),\n trigger('backdrop', [\n state('show', style({ 'opacity': '1' })),\n state('hide', style({ 'opacity': '0' })),\n transition('* <=> *', [animate('0.15s linear')])\n ])\n ],\n imports: [\n SiNavbarVerticalItemLegacyComponent,\n SiSearchBarComponent,\n SiSkipLinkTargetDirective,\n SiTranslateModule,\n SiNavbarVerticalItemComponent,\n RouterLink,\n SiNavbarVerticalItemGuardDirective,\n NgTemplateOutlet,\n SiNavbarVerticalGroupComponent,\n RouterLinkActive,\n SiNavbarVerticalGroupTriggerDirective,\n SiNavbarVerticalDividerComponent,\n SiNavbarVerticalHeaderComponent\n ]\n})\nexport class SiNavbarVerticalComponent implements OnChanges, OnInit, OnDestroy {\n /**\n * Whether the navbar-vertical is collapsed.\n *\n * @defaultValue false\n */\n readonly collapsed = model(false);\n\n /**\n * Toggles search bar\n *\n * @defaultValue false\n */\n readonly searchable = input(false, { transform: booleanAttribute });\n\n /**\n * Placeholder text for search\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER:Search ...`\n * ```\n */\n readonly searchPlaceholder = input(\n $localize`:@@SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER:Search ...`\n );\n\n /**\n * List of vertical navigation items\n *\n * @defaultValue []\n */\n readonly items = model<(MenuItem | NavbarVerticalItem)[]>([]);\n\n /**\n * Set to `true` if there are no icons\n *\n * @defaultValue false\n */\n /**\n * Set to `true` if there are no icons\n *\n * @defaultValue false\n */\n readonly textOnly = input(false, { transform: booleanAttribute });\n\n /**\n * Set to false to hide the vertical navbar\n *\n * @defaultValue true\n */\n /**\n * Set to false to hide the vertical navbar\n *\n * @defaultValue true\n */\n readonly visible = input(true, { transform: booleanAttribute });\n\n /**\n * @deprecated dropped without replacement.\n *\n * @defaultValue undefined\n */\n readonly autoCollapseDelay = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * Text for the navbar expand button. Required for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR_VERTICAL.EXPAND:Expand`\n * ```\n */\n readonly navbarExpandButtonText = input($localize`:@@SI_NAVBAR_VERTICAL.EXPAND:Expand`);\n\n /**\n * Text for the navbar collapse button. Required for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR_VERTICAL.COLLAPSE:Collapse`\n * ```\n */\n readonly navbarCollapseButtonText = input($localize`:@@SI_NAVBAR_VERTICAL.COLLAPSE:Collapse`);\n\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n readonly stateId = input<string>();\n\n /**\n * Label for the skip link to the vertical navbar\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL:Navigation`\n * ```\n */\n readonly skipLinkNavigationLabel = input(\n $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL:Navigation`\n );\n\n /**\n * Label for the skip link to main content\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL:Main content`\n * ```\n */\n readonly skipLinkMainContentLabel = input(\n $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL:Main content`\n );\n\n /**\n * Output for search bar input\n */\n readonly searchEvent = output<string>();\n\n private readonly searchBar = viewChild.required(SiSearchBarComponent);\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n // Is required to prevent the navbar from running the padding animation on creation.\n @HostBinding('class.ready') protected readonly ready = true;\n\n protected readonly searchInputDelay = 400;\n\n private uiStateService = inject(SI_UI_STATE_SERVICE, { optional: true });\n private breakpointObserver = inject(BreakpointObserver);\n private readonly navbarItems = viewChildren(SiNavbarVerticalItemComponent);\n private readonly navbarItemsLegacy = viewChildren(SiNavbarVerticalItemLegacyComponent);\n private readonly itemsToComponents = computed(\n () =>\n new Map(\n [...this.navbarItems(), ...this.navbarItemsLegacy()].map(component => [\n component.item() as NavbarVerticalItem | MenuItem, // to have a broader key type allowed\n component\n ])\n )\n );\n\n protected readonly smallScreen = signal(false);\n protected readonly uiStateExpandedItems = signal<Record<string, boolean>>({});\n private destroyer = new Subject<void>();\n\n // Indicates if the user prefers a collapsed navbar. Relevant for resizing.\n private preferCollapse = false;\n\n constructor() {\n this.breakpointObserver\n .observe(`(max-width: ${BOOTSTRAP_BREAKPOINTS.lgMinimum}px)`)\n .pipe(takeUntil(this.destroyer))\n .subscribe(({ matches }) => {\n this.collapsed.set(matches || this.preferCollapse);\n this.smallScreen.set(matches);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.collapsed) {\n this.preferCollapse = this.collapsed();\n }\n }\n\n ngOnInit(): void {\n const stateId = this.stateId();\n if (this.uiStateService && stateId) {\n this.uiStateService.load<UIState>(stateId).then(uiState => {\n if (uiState) {\n this.preferCollapse = uiState.preferCollapse;\n this.collapsed.set(this.smallScreen() ? this.collapsed() : this.preferCollapse);\n this.uiStateExpandedItems.set(uiState.expandedItems);\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroyer.next();\n this.destroyer.complete();\n }\n\n protected toggleCollapse(): void {\n if (this.collapsed()) {\n this.expand();\n } else {\n this.collapse();\n }\n }\n\n /** Expands the vertical navbar. */\n expand(): void {\n this.collapsed.set(false);\n if (!this.smallScreen()) {\n this.preferCollapse = this.collapsed();\n const autoCollapseDelay = this.autoCollapseDelay();\n if (autoCollapseDelay) {\n setTimeout(() => {\n if (!this.collapsed()) {\n this.toggleCollapse();\n }\n }, autoCollapseDelay);\n }\n }\n this.saveUIState();\n }\n\n /** Collapses the vertical navbar. */\n collapse(): void {\n this.collapsed.set(true);\n if (!this.smallScreen()) {\n this.preferCollapse = this.collapsed();\n }\n\n this.saveUIState();\n }\n\n protected expandForSearch(): void {\n this.expand();\n setTimeout(() => this.searchBar().focus());\n }\n\n protected doSearch(event: string): void {\n this.searchEvent.emit(event);\n }\n\n /** @internal */\n groupTriggered(): void {\n this.saveUIState();\n const itemToComponentMap = this.itemsToComponents();\n this.items.set(\n this.items().map(item => {\n const component = itemToComponentMap.get(item);\n if (!component) {\n return item;\n }\n\n if (component instanceof SiNavbarVerticalItemLegacyComponent) {\n return {\n ...item,\n expanded: component.expanded()\n };\n }\n\n if (component.group) {\n return {\n ...item,\n expanded: component.group.expanded()\n };\n }\n\n return item;\n })\n );\n this.collapsed.set(false);\n }\n\n protected saveUIState(): void {\n const stateId = this.stateId();\n if (!this.uiStateService || !stateId) {\n return;\n }\n\n const expandedGroups = this.navbarItems()\n .filter(item => item.item().id && item.group?.expanded())\n .map(item => [item.item().id, true]);\n\n const expandedGroupsLegacy = this.navbarItemsLegacy()\n .filter(item => item.item().id && item.expanded())\n .map(item => [item.item().id, true]);\n\n this.uiStateService.save<UIState>(stateId, {\n preferCollapse: this.preferCollapse,\n expandedItems: Object.fromEntries([...expandedGroups, ...expandedGroupsLegacy])\n });\n }\n\n /** @internal */\n itemTriggered(): void {\n if (this.smallScreen()) {\n this.collapsed.set(true);\n }\n }\n\n protected isLegacyStyle(item: MenuItem | NavbarVerticalItem): item is MenuItem {\n return !('type' in item && item.type !== 'check' && item.type !== 'radio');\n }\n}\n","@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","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiNavbarVerticalComponent } from './si-navbar-vertical.component';\n\n@NgModule({\n imports: [SiNavbarVerticalComponent],\n exports: [SiNavbarVerticalComponent]\n})\nexport class SiNavbarVerticalModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-vertical.component';\nexport * from './si-navbar-vertical.module';\nexport * from './si-navbar-vertical.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -51,30 +51,36 @@ class SiPasswordStrengthDirective {
51
51
  passwordStrengthChanged = output();
52
52
  /** @internal */
53
53
  validate(control) {
54
- if (this.getStrength(control.value) >= this.maxStrength()) {
54
+ const strength = this.getStrength(control.value);
55
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
56
+ const requiredStrength = this.siPasswordStrength().minRequiredPolicies || this.maxStrength();
57
+ if (strength.length && strength.strength >= requiredStrength) {
55
58
  return {};
56
59
  }
57
60
  return { siPasswordStrength: true };
58
61
  }
59
62
  getStrength(password) {
63
+ const policy = this.siPasswordStrength();
64
+ if (!password) {
65
+ this.noValidation = false;
66
+ this.passwordStrengthChanged.emit();
67
+ return { length: false, strength: 0 };
68
+ }
60
69
  let strength = 0;
61
- if (password && password !== '') {
62
- // Strength check
63
- strength += password.length >= this.siPasswordStrength().minLength ? 1 : 0;
64
- strength += this.siPasswordStrength().uppercase && password.match(RE_UPPER_CASE) ? 1 : 0;
65
- strength += this.siPasswordStrength().lowercase && password.match(RE_LOWER_CASE) ? 1 : 0;
66
- strength += this.siPasswordStrength().digits && password.match(RE_DIGITS) ? 1 : 0;
67
- strength += this.siPasswordStrength().special && password.match(RE_SPECIAL_CHARS) ? 1 : 0;
68
- // Hard limit check
70
+ // Strength check
71
+ const length = password.length >= policy.minLength;
72
+ strength += length ? 1 : 0;
73
+ strength += policy.uppercase && password.match(RE_UPPER_CASE) ? 1 : 0;
74
+ strength += policy.lowercase && password.match(RE_LOWER_CASE) ? 1 : 0;
75
+ strength += policy.digits && password.match(RE_DIGITS) ? 1 : 0;
76
+ strength += policy.special && password.match(RE_SPECIAL_CHARS) ? 1 : 0;
77
+ if (policy.allowWhitespace !== true) {
69
78
  strength = password.match(RE_WHITESPACES) ? 0 : strength;
70
- this.noValidation = true;
71
- // Notify listeners
72
- this.passwordStrengthChanged.emit(strength - this.maxStrength());
73
- return strength;
74
79
  }
75
- this.noValidation = false;
76
- this.passwordStrengthChanged.emit();
77
- return strength;
80
+ this.noValidation = true;
81
+ // Notify listeners
82
+ this.passwordStrengthChanged.emit(strength - this.maxStrength());
83
+ return { length, strength };
78
84
  }
79
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
80
86
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: SiPasswordStrengthDirective, isStandalone: true, selector: "[siPasswordStrength]", inputs: { siPasswordStrength: { classPropertyName: "siPasswordStrength", publicName: "siPasswordStrength", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { passwordStrengthChanged: "passwordStrengthChanged" }, host: { properties: { "class.no-validation": "noValidation" } }, providers: [{ provide: NG_VALIDATORS, useExisting: SiPasswordStrengthDirective, multi: true }], ngImport: i0 });
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-password-strength.mjs","sources":["../../../../projects/element-ng/password-strength/si-password-strength.directive.ts","../../../../projects/element-ng/password-strength/si-password-strength.component.ts","../../../../projects/element-ng/password-strength/si-password-strength.module.ts","../../../../projects/element-ng/password-strength/index.ts","../../../../projects/element-ng/password-strength/siemens-element-ng-password-strength.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { computed, Directive, input, output } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nconst RE_UPPER_CASE = /[A-Z]/;\nconst RE_LOWER_CASE = /[a-z]/;\nconst RE_DIGITS = /[0-9]/;\nconst RE_SPECIAL_CHARS = /[\\x21-\\x2F|\\x3A-\\x40|\\x5B-\\x60]/;\nconst RE_WHITESPACES = /\\s/;\n\nexport interface PasswordPolicy {\n /**\n * Define minimal number of characters.\n */\n minLength: number;\n /**\n * Define if uppercase characters are required in password.\n */\n uppercase: boolean;\n /**\n * Define if lowercase characters are required in password.\n */\n lowercase: boolean;\n /**\n * Define if digits are required in password.\n */\n digits: boolean;\n /**\n * Define if special characters are required in password.\n */\n special: boolean;\n}\n\n@Directive({\n selector: '[siPasswordStrength]',\n providers: [{ provide: NG_VALIDATORS, useExisting: SiPasswordStrengthDirective, multi: true }],\n host: {\n '[class.no-validation]': 'noValidation'\n }\n})\nexport class SiPasswordStrengthDirective implements Validator {\n private readonly maxStrength = computed(() => {\n const strength = this.siPasswordStrength();\n return (\n 1 +\n (strength.uppercase ? 1 : 0) +\n (strength.lowercase ? 1 : 0) +\n (strength.digits ? 1 : 0) +\n (strength.special ? 1 : 0)\n );\n });\n\n protected noValidation = false;\n\n /**\n * Define Siemens password strength.\n *\n * @defaultValue\n * ```\n * {\n * minLength: 8,\n * uppercase: true,\n * lowercase: true,\n * digits: true,\n * special: true\n * }\n * ```\n */\n readonly siPasswordStrength = input<PasswordPolicy>({\n minLength: 8,\n uppercase: true,\n lowercase: true,\n digits: true,\n special: true\n });\n\n /**\n * Output callback event called when the password changes. The number\n * indicated the number of rules which still can be met. (`-2` --\\> 2 rules are\n * still unmet, `0` --\\> all met)\n */\n readonly passwordStrengthChanged = output<number | void>();\n\n /** @internal */\n validate(control: AbstractControl): ValidationErrors {\n if (this.getStrength(control.value) >= this.maxStrength()) {\n return {};\n }\n return { siPasswordStrength: true };\n }\n\n private getStrength(password: string): number {\n let strength = 0;\n if (password && password !== '') {\n // Strength check\n strength += password.length >= this.siPasswordStrength().minLength ? 1 : 0;\n strength += this.siPasswordStrength().uppercase && password.match(RE_UPPER_CASE) ? 1 : 0;\n strength += this.siPasswordStrength().lowercase && password.match(RE_LOWER_CASE) ? 1 : 0;\n strength += this.siPasswordStrength().digits && password.match(RE_DIGITS) ? 1 : 0;\n strength += this.siPasswordStrength().special && password.match(RE_SPECIAL_CHARS) ? 1 : 0;\n // Hard limit check\n strength = password.match(RE_WHITESPACES) ? 0 : strength;\n this.noValidation = true;\n // Notify listeners\n this.passwordStrengthChanged.emit(strength - this.maxStrength());\n return strength;\n }\n this.noValidation = false;\n this.passwordStrengthChanged.emit();\n return strength;\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport {\n AfterViewInit,\n Component,\n contentChildren,\n ElementRef,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\n\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@Component({\n selector: 'si-password-strength',\n template: `\n <si-password-toggle [showVisibilityIcon]=\"showVisibilityIcon()\" (typeChange)=\"toggle($event)\">\n <ng-content />\n </si-password-toggle>\n `,\n styleUrl: './si-password-strength.component.scss',\n imports: [SiPasswordToggleComponent],\n host: {\n '[class.bad]': 'bad()',\n '[class.weak]': 'weak()',\n '[class.medium]': 'medium()',\n '[class.good]': 'good()',\n '[class.strong]': 'strong()'\n }\n})\nexport class SiPasswordStrengthComponent implements AfterViewInit {\n /**\n * Whether to show the visibility toggle icon.\n *\n * @defaultValue true\n */\n readonly showVisibilityIcon = input(true);\n\n private readonly passwordStrengthDirective = contentChildren(SiPasswordStrengthDirective);\n private elRef = inject(ElementRef);\n\n protected readonly bad = signal(false);\n protected readonly weak = signal(false);\n protected readonly medium = signal(false);\n protected readonly good = signal(false);\n protected readonly strong = signal(false);\n\n protected toggle(type: string): void {\n const inputEl = this.elRef.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.type = type;\n }\n }\n\n ngAfterViewInit(): void {\n this.passwordStrengthDirective().forEach(directive => {\n directive.passwordStrengthChanged.subscribe((strength: number | void) => {\n this.strong.set(strength === 0);\n this.good.set(strength === -1);\n this.medium.set(strength === -2);\n this.weak.set(strength === -3);\n this.bad.set(strength === -4);\n });\n });\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPasswordStrengthComponent } from './si-password-strength.component';\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@NgModule({\n imports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective],\n exports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective]\n})\nexport class SiPasswordStrengthModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-password-strength.component';\nexport * from './si-password-strength.directive';\nexport * from './si-password-strength.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-password-strength.mjs","sources":["../../../../projects/element-ng/password-strength/si-password-strength.directive.ts","../../../../projects/element-ng/password-strength/si-password-strength.component.ts","../../../../projects/element-ng/password-strength/si-password-strength.module.ts","../../../../projects/element-ng/password-strength/index.ts","../../../../projects/element-ng/password-strength/siemens-element-ng-password-strength.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { computed, Directive, input, output } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nconst RE_UPPER_CASE = /[A-Z]/;\nconst RE_LOWER_CASE = /[a-z]/;\nconst RE_DIGITS = /[0-9]/;\nconst RE_SPECIAL_CHARS = /[\\x21-\\x2F|\\x3A-\\x40|\\x5B-\\x60]/;\nconst RE_WHITESPACES = /\\s/;\n\nexport interface PasswordPolicy {\n /**\n * Define minimal number of characters.\n */\n minLength: number;\n /**\n * Define if uppercase characters are required in password.\n */\n uppercase: boolean;\n /**\n * Define if lowercase characters are required in password.\n */\n lowercase: boolean;\n /**\n * Define if digits are required in password.\n */\n digits: boolean;\n /**\n * Define if special characters are required in password.\n */\n special: boolean;\n /**\n * Whether to allow whitespaces. By default whitespaces are not allowed.\n */\n allowWhitespace?: boolean;\n /**\n * Minimum required policies for valid password. When set to a number greater than 0,\n * defines the number of policies that must be met for the password to be valid.\n * E.g. when set to 3 and the policies uppercase/lowercase/digits/special are all set\n * and the password contains 3 out of these four, the password will be valid.\n */\n minRequiredPolicies?: number;\n}\n\ninterface StrengthCheck {\n length: boolean;\n strength: number;\n}\n\n@Directive({\n selector: '[siPasswordStrength]',\n providers: [{ provide: NG_VALIDATORS, useExisting: SiPasswordStrengthDirective, multi: true }],\n host: {\n '[class.no-validation]': 'noValidation'\n }\n})\nexport class SiPasswordStrengthDirective implements Validator {\n private readonly maxStrength = computed(() => {\n const strength = this.siPasswordStrength();\n return (\n 1 +\n (strength.uppercase ? 1 : 0) +\n (strength.lowercase ? 1 : 0) +\n (strength.digits ? 1 : 0) +\n (strength.special ? 1 : 0)\n );\n });\n\n protected noValidation = false;\n\n /**\n * Define Siemens password strength.\n *\n * @defaultValue\n * ```\n * {\n * minLength: 8,\n * uppercase: true,\n * lowercase: true,\n * digits: true,\n * special: true\n * }\n * ```\n */\n readonly siPasswordStrength = input<PasswordPolicy>({\n minLength: 8,\n uppercase: true,\n lowercase: true,\n digits: true,\n special: true\n });\n\n /**\n * Output callback event called when the password changes. The number\n * indicated the number of rules which still can be met. (`-2` --\\> 2 rules are\n * still unmet, `0` --\\> all met)\n */\n readonly passwordStrengthChanged = output<number | void>();\n\n /** @internal */\n validate(control: AbstractControl): ValidationErrors {\n const strength = this.getStrength(control.value);\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const requiredStrength = this.siPasswordStrength().minRequiredPolicies || this.maxStrength();\n if (strength.length && strength.strength >= requiredStrength) {\n return {};\n }\n return { siPasswordStrength: true };\n }\n\n private getStrength(password: string): StrengthCheck {\n const policy = this.siPasswordStrength();\n if (!password) {\n this.noValidation = false;\n this.passwordStrengthChanged.emit();\n return { length: false, strength: 0 };\n }\n\n let strength = 0;\n // Strength check\n const length = password.length >= policy.minLength;\n strength += length ? 1 : 0;\n strength += policy.uppercase && password.match(RE_UPPER_CASE) ? 1 : 0;\n strength += policy.lowercase && password.match(RE_LOWER_CASE) ? 1 : 0;\n strength += policy.digits && password.match(RE_DIGITS) ? 1 : 0;\n strength += policy.special && password.match(RE_SPECIAL_CHARS) ? 1 : 0;\n if (policy.allowWhitespace !== true) {\n strength = password.match(RE_WHITESPACES) ? 0 : strength;\n }\n this.noValidation = true;\n // Notify listeners\n this.passwordStrengthChanged.emit(strength - this.maxStrength());\n return { length, strength };\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport {\n AfterViewInit,\n Component,\n contentChildren,\n ElementRef,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\n\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@Component({\n selector: 'si-password-strength',\n template: `\n <si-password-toggle [showVisibilityIcon]=\"showVisibilityIcon()\" (typeChange)=\"toggle($event)\">\n <ng-content />\n </si-password-toggle>\n `,\n styleUrl: './si-password-strength.component.scss',\n imports: [SiPasswordToggleComponent],\n host: {\n '[class.bad]': 'bad()',\n '[class.weak]': 'weak()',\n '[class.medium]': 'medium()',\n '[class.good]': 'good()',\n '[class.strong]': 'strong()'\n }\n})\nexport class SiPasswordStrengthComponent implements AfterViewInit {\n /**\n * Whether to show the visibility toggle icon.\n *\n * @defaultValue true\n */\n readonly showVisibilityIcon = input(true);\n\n private readonly passwordStrengthDirective = contentChildren(SiPasswordStrengthDirective);\n private elRef = inject(ElementRef);\n\n protected readonly bad = signal(false);\n protected readonly weak = signal(false);\n protected readonly medium = signal(false);\n protected readonly good = signal(false);\n protected readonly strong = signal(false);\n\n protected toggle(type: string): void {\n const inputEl = this.elRef.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.type = type;\n }\n }\n\n ngAfterViewInit(): void {\n this.passwordStrengthDirective().forEach(directive => {\n directive.passwordStrengthChanged.subscribe((strength: number | void) => {\n this.strong.set(strength === 0);\n this.good.set(strength === -1);\n this.medium.set(strength === -2);\n this.weak.set(strength === -3);\n this.bad.set(strength === -4);\n });\n });\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPasswordStrengthComponent } from './si-password-strength.component';\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@NgModule({\n imports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective],\n exports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective]\n})\nexport class SiPasswordStrengthModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-password-strength.component';\nexport * from './si-password-strength.directive';\nexport * from './si-password-strength.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}