@siemens/element-ng 47.1.0 → 47.3.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 (297) hide show
  1. package/README.md +18 -6
  2. package/accordion/index.d.ts +9 -0
  3. package/accordion/package.json +3 -0
  4. package/accordion/si-accordion-hcollapse.service.d.ts +17 -0
  5. package/accordion/si-accordion.component.d.ts +37 -0
  6. package/accordion/si-accordion.module.d.ts +8 -0
  7. package/accordion/si-accordion.service.d.ts +17 -0
  8. package/accordion/si-collapsible-panel.component.d.ts +89 -0
  9. package/action-modal/index.d.ts +6 -0
  10. package/action-modal/package.json +3 -0
  11. package/action-modal/si-action-dialog.service.d.ts +49 -0
  12. package/action-modal/si-action-dialog.types.d.ts +92 -0
  13. package/action-modal/si-alert-dialog/si-alert-dialog.component.d.ts +32 -0
  14. package/action-modal/si-confirmation-dialog/si-confirmation-dialog.component.d.ts +40 -0
  15. package/action-modal/si-delete-confirmation-dialog/si-delete-confirmation-dialog.component.d.ts +45 -0
  16. package/action-modal/si-edit-discard-dialog/si-edit-discard-dialog.component.d.ts +68 -0
  17. package/auto-collapsable-list/index.d.ts +10 -0
  18. package/auto-collapsable-list/package.json +3 -0
  19. package/auto-collapsable-list/si-auto-collapsable-list-additional-content.directive.d.ts +6 -0
  20. package/auto-collapsable-list/si-auto-collapsable-list-item.directive.d.ts +29 -0
  21. package/auto-collapsable-list/si-auto-collapsable-list-measurable.class.d.ts +16 -0
  22. package/auto-collapsable-list/si-auto-collapsable-list-overflow-item.directive.d.ts +12 -0
  23. package/auto-collapsable-list/si-auto-collapsable-list.directive.d.ts +47 -0
  24. package/auto-collapsable-list/si-auto-collapsable-list.module.d.ts +10 -0
  25. package/autocomplete/index.d.ts +8 -0
  26. package/autocomplete/package.json +3 -0
  27. package/autocomplete/si-autocomplete-listbox.directive.d.ts +31 -0
  28. package/autocomplete/si-autocomplete-option.directive.d.ts +31 -0
  29. package/autocomplete/si-autocomplete.directive.d.ts +14 -0
  30. package/autocomplete/si-autocomplete.model.d.ts +7 -0
  31. package/autocomplete/si-autocomplete.module.d.ts +9 -0
  32. package/badge/index.d.ts +5 -0
  33. package/badge/package.json +3 -0
  34. package/badge/si-badge.component.d.ts +17 -0
  35. package/color-picker/index.d.ts +5 -0
  36. package/color-picker/package.json +3 -0
  37. package/color-picker/si-color-picker.component.d.ts +61 -0
  38. package/common/models/menu.model.d.ts +2 -2
  39. package/connection-strength/index.d.ts +6 -0
  40. package/connection-strength/package.json +3 -0
  41. package/connection-strength/si-connection-strength.component.d.ts +19 -0
  42. package/connection-strength/si-connection-strength.module.d.ts +7 -0
  43. package/content-action-bar/index.d.ts +7 -0
  44. package/content-action-bar/package.json +3 -0
  45. package/content-action-bar/si-content-action-bar-toggle.component.d.ts +6 -0
  46. package/content-action-bar/si-content-action-bar.component.d.ts +72 -0
  47. package/content-action-bar/si-content-action-bar.model.d.ts +9 -0
  48. package/content-action-bar/si-content-action-bar.module.d.ts +7 -0
  49. package/copyright-notice/index.d.ts +7 -0
  50. package/copyright-notice/package.json +3 -0
  51. package/copyright-notice/si-copyright-notice.component.d.ts +18 -0
  52. package/copyright-notice/si-copyright-notice.d.ts +23 -0
  53. package/copyright-notice/si-copyright-notice.module.d.ts +7 -0
  54. package/empty-state/index.d.ts +6 -0
  55. package/empty-state/package.json +3 -0
  56. package/empty-state/si-empty-state.component.d.ts +18 -0
  57. package/empty-state/si-empty-state.module.d.ts +7 -0
  58. package/fesm2022/siemens-element-ng-accordion.mjs +314 -0
  59. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -0
  60. package/fesm2022/siemens-element-ng-action-modal.mjs +363 -0
  61. package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -0
  62. package/fesm2022/siemens-element-ng-application-header.mjs +2 -2
  63. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  64. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +312 -0
  65. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -0
  66. package/fesm2022/siemens-element-ng-autocomplete.mjs +235 -0
  67. package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -0
  68. package/fesm2022/siemens-element-ng-badge.mjs +59 -0
  69. package/fesm2022/siemens-element-ng-badge.mjs.map +1 -0
  70. package/fesm2022/siemens-element-ng-color-picker.mjs +176 -0
  71. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -0
  72. package/fesm2022/siemens-element-ng-common.mjs +1 -1
  73. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  74. package/fesm2022/siemens-element-ng-connection-strength.mjs +58 -0
  75. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -0
  76. package/fesm2022/siemens-element-ng-content-action-bar.mjs +200 -0
  77. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -0
  78. package/fesm2022/siemens-element-ng-copyright-notice.mjs +71 -0
  79. package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -0
  80. package/fesm2022/siemens-element-ng-empty-state.mjs +59 -0
  81. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -0
  82. package/fesm2022/siemens-element-ng-footer.mjs +55 -0
  83. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -0
  84. package/fesm2022/siemens-element-ng-form.mjs +827 -0
  85. package/fesm2022/siemens-element-ng-form.mjs.map +1 -0
  86. package/fesm2022/siemens-element-ng-icon-status.mjs +65 -0
  87. package/fesm2022/siemens-element-ng-icon-status.mjs.map +1 -0
  88. package/fesm2022/siemens-element-ng-icon.mjs +19 -2
  89. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  90. package/fesm2022/siemens-element-ng-inline-notification.mjs +82 -0
  91. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -0
  92. package/fesm2022/siemens-element-ng-language-switcher.mjs +90 -0
  93. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -0
  94. package/fesm2022/siemens-element-ng-loading-spinner.mjs +248 -0
  95. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -0
  96. package/fesm2022/siemens-element-ng-menu.mjs +350 -0
  97. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -0
  98. package/fesm2022/siemens-element-ng-modal.mjs +345 -0
  99. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -0
  100. package/fesm2022/siemens-element-ng-number-input.mjs +267 -0
  101. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -0
  102. package/fesm2022/siemens-element-ng-pagination.mjs +145 -0
  103. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -0
  104. package/fesm2022/siemens-element-ng-password-strength.mjs +177 -0
  105. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -0
  106. package/fesm2022/siemens-element-ng-password-toggle.mjs +88 -0
  107. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -0
  108. package/fesm2022/siemens-element-ng-pills-input.mjs +397 -0
  109. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -0
  110. package/fesm2022/siemens-element-ng-popover-next.mjs +259 -0
  111. package/fesm2022/siemens-element-ng-popover-next.mjs.map +1 -0
  112. package/fesm2022/siemens-element-ng-popover.mjs +256 -0
  113. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -0
  114. package/fesm2022/siemens-element-ng-progressbar.mjs +83 -0
  115. package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -0
  116. package/fesm2022/siemens-element-ng-select.mjs +1166 -0
  117. package/fesm2022/siemens-element-ng-select.mjs.map +1 -0
  118. package/fesm2022/siemens-element-ng-skip-links.mjs +117 -0
  119. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -0
  120. package/fesm2022/siemens-element-ng-summary-chip.mjs +77 -0
  121. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -0
  122. package/fesm2022/siemens-element-ng-summary-widget.mjs +77 -0
  123. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -0
  124. package/fesm2022/siemens-element-ng-toast-notification.mjs +227 -0
  125. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -0
  126. package/fesm2022/siemens-element-ng-tooltip.mjs +233 -0
  127. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -0
  128. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  129. package/fesm2022/siemens-element-ng-typeahead.mjs +746 -0
  130. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -0
  131. package/fesm2022/siemens-element-ng-wizard.mjs +465 -0
  132. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -0
  133. package/footer/index.d.ts +6 -0
  134. package/footer/package.json +3 -0
  135. package/footer/si-footer.component.d.ts +14 -0
  136. package/footer/si-footer.module.d.ts +7 -0
  137. package/form/form-fieldset/si-form-fieldset.component.d.ts +40 -0
  138. package/form/index.d.ts +14 -0
  139. package/form/package.json +3 -0
  140. package/form/si-form-container/si-form-container.component.d.ts +155 -0
  141. package/form/si-form-item/si-form-field-native.control.d.ts +22 -0
  142. package/form/si-form-item/si-form-item.component.d.ts +90 -0
  143. package/form/si-form-item-control-input.directive.d.ts +18 -0
  144. package/form/si-form-item.control.d.ts +35 -0
  145. package/form/si-form-validation-error.model.d.ts +55 -0
  146. package/form/si-form-validation-error.provider.d.ts +11 -0
  147. package/form/si-form-validation-error.service.d.ts +42 -0
  148. package/form/si-form-validation-tooltip/si-form-validation-tooltip.component.d.ts +13 -0
  149. package/form/si-form-validation-tooltip/si-form-validation-tooltip.directive.d.ts +42 -0
  150. package/form/si-form.module.d.ts +25 -0
  151. package/icon/element-icons.d.ts +17 -0
  152. package/icon-status/index.d.ts +6 -0
  153. package/icon-status/package.json +3 -0
  154. package/icon-status/si-icon-status.component.d.ts +24 -0
  155. package/icon-status/si-icon-status.module.d.ts +7 -0
  156. package/inline-notification/index.d.ts +6 -0
  157. package/inline-notification/package.json +3 -0
  158. package/inline-notification/si-inline-notification.component.d.ts +42 -0
  159. package/inline-notification/si-inline-notification.module.d.ts +7 -0
  160. package/language-switcher/index.d.ts +7 -0
  161. package/language-switcher/iso-language-value.d.ts +14 -0
  162. package/language-switcher/package.json +3 -0
  163. package/language-switcher/si-language-switcher.component.d.ts +32 -0
  164. package/language-switcher/si-language-switcher.module.d.ts +7 -0
  165. package/loading-spinner/index.d.ts +9 -0
  166. package/loading-spinner/package.json +3 -0
  167. package/loading-spinner/si-loading-button.component.d.ts +31 -0
  168. package/loading-spinner/si-loading-spinner.component.d.ts +32 -0
  169. package/loading-spinner/si-loading-spinner.directive.d.ts +36 -0
  170. package/loading-spinner/si-loading-spinner.module.d.ts +8 -0
  171. package/loading-spinner/si-loading-spinner.service.d.ts +18 -0
  172. package/menu/index.d.ts +15 -0
  173. package/menu/package.json +3 -0
  174. package/menu/si-menu-action.service.d.ts +13 -0
  175. package/menu/si-menu-bar.directive.d.ts +12 -0
  176. package/menu/si-menu-divider.directive.d.ts +5 -0
  177. package/menu/si-menu-factory-item-guard.directive.d.ts +11 -0
  178. package/menu/si-menu-factory.component.d.ts +15 -0
  179. package/menu/si-menu-header.directive.d.ts +5 -0
  180. package/menu/si-menu-item-base.directive.d.ts +16 -0
  181. package/menu/si-menu-item-checkbox.component.d.ts +10 -0
  182. package/menu/si-menu-item-radio.component.d.ts +10 -0
  183. package/menu/si-menu-item.component.d.ts +10 -0
  184. package/menu/si-menu-model.d.ts +91 -0
  185. package/menu/si-menu.directive.d.ts +6 -0
  186. package/menu/si-menu.module.d.ts +14 -0
  187. package/modal/index.d.ts +7 -0
  188. package/modal/modal.helpers.d.ts +8 -0
  189. package/modal/modalref.d.ts +64 -0
  190. package/modal/package.json +3 -0
  191. package/modal/si-modal.component.d.ts +32 -0
  192. package/modal/si-modal.service.d.ts +57 -0
  193. package/number-input/index.d.ts +6 -0
  194. package/number-input/package.json +3 -0
  195. package/number-input/si-number-input.component.d.ts +106 -0
  196. package/number-input/si-number-input.module.d.ts +7 -0
  197. package/package.json +139 -3
  198. package/pagination/index.d.ts +6 -0
  199. package/pagination/package.json +3 -0
  200. package/pagination/si-pagination.component.d.ts +65 -0
  201. package/pagination/si-pagination.module.d.ts +7 -0
  202. package/password-strength/index.d.ts +7 -0
  203. package/password-strength/package.json +3 -0
  204. package/password-strength/si-password-strength.component.d.ts +25 -0
  205. package/password-strength/si-password-strength.directive.d.ts +54 -0
  206. package/password-strength/si-password-strength.module.d.ts +8 -0
  207. package/password-toggle/index.d.ts +6 -0
  208. package/password-toggle/package.json +3 -0
  209. package/password-toggle/si-password-toggle.component.d.ts +39 -0
  210. package/password-toggle/si-password-toggle.module.d.ts +7 -0
  211. package/pills-input/index.d.ts +9 -0
  212. package/pills-input/package.json +3 -0
  213. package/pills-input/si-input-pill.component.d.ts +9 -0
  214. package/pills-input/si-pills-input-csv.directive.d.ts +8 -0
  215. package/pills-input/si-pills-input-email.directive.d.ts +10 -0
  216. package/pills-input/si-pills-input-pattern-base.d.ts +19 -0
  217. package/pills-input/si-pills-input-value-handler.d.ts +12 -0
  218. package/pills-input/si-pills-input.component.d.ts +87 -0
  219. package/pills-input/si-pills-input.module.d.ts +9 -0
  220. package/popover/index.d.ts +6 -0
  221. package/popover/package.json +3 -0
  222. package/popover/si-popover.component.d.ts +26 -0
  223. package/popover/si-popover.directive.d.ts +89 -0
  224. package/popover/si-popover.module.d.ts +7 -0
  225. package/popover-next/index.d.ts +7 -0
  226. package/popover-next/package.json +3 -0
  227. package/popover-next/si-popover-description.directive.d.ts +7 -0
  228. package/popover-next/si-popover-next.directive.d.ts +61 -0
  229. package/popover-next/si-popover-title.directive.d.ts +7 -0
  230. package/popover-next/si-popover.component.d.ts +27 -0
  231. package/progressbar/index.d.ts +6 -0
  232. package/progressbar/package.json +3 -0
  233. package/progressbar/si-progressbar.component.d.ts +43 -0
  234. package/progressbar/si-progressbar.module.d.ts +7 -0
  235. package/select/index.d.ts +18 -0
  236. package/select/options/si-select-complex-options.directive.d.ts +69 -0
  237. package/select/options/si-select-lazy-options.directive.d.ts +38 -0
  238. package/select/options/si-select-option.source.d.ts +49 -0
  239. package/select/options/si-select-options-strategy.base.d.ts +35 -0
  240. package/select/options/si-select-options-strategy.d.ts +37 -0
  241. package/select/options/si-select-simple-options.directive.d.ts +34 -0
  242. package/select/package.json +3 -0
  243. package/select/select-input/si-select-input.component.d.ts +43 -0
  244. package/select/select-list/si-select-list-has-filter.component.d.ts +20 -0
  245. package/select/select-list/si-select-list.base.d.ts +37 -0
  246. package/select/select-list/si-select-list.component.d.ts +15 -0
  247. package/select/select-option/si-select-option-row.component.d.ts +16 -0
  248. package/select/select-option/si-select-option.component.d.ts +9 -0
  249. package/select/selection/si-select-multi-value.directive.d.ts +26 -0
  250. package/select/selection/si-select-selection-strategy.d.ts +58 -0
  251. package/select/selection/si-select-single-value.directive.d.ts +26 -0
  252. package/select/si-select-action.directive.d.ts +12 -0
  253. package/select/si-select-actions.directive.d.ts +5 -0
  254. package/select/si-select-group-template.directive.d.ts +20 -0
  255. package/select/si-select-option-row-template.directive.d.ts +9 -0
  256. package/select/si-select-option-template.directive.d.ts +21 -0
  257. package/select/si-select.component.d.ts +96 -0
  258. package/select/si-select.module.d.ts +15 -0
  259. package/select/si-select.types.d.ts +65 -0
  260. package/skip-links/index.d.ts +5 -0
  261. package/skip-links/package.json +3 -0
  262. package/skip-links/si-skip-link-target.directive.d.ts +27 -0
  263. package/skip-links/si-skip-links.component.d.ts +9 -0
  264. package/skip-links/skip-link.service.d.ts +14 -0
  265. package/summary-chip/index.d.ts +5 -0
  266. package/summary-chip/package.json +3 -0
  267. package/summary-chip/si-summary-chip.component.d.ts +44 -0
  268. package/summary-widget/index.d.ts +5 -0
  269. package/summary-widget/package.json +3 -0
  270. package/summary-widget/si-summary-widget.component.d.ts +44 -0
  271. package/template-i18n.json +47 -1
  272. package/toast-notification/index.d.ts +6 -0
  273. package/toast-notification/package.json +3 -0
  274. package/toast-notification/si-toast-notification/si-toast-notification.component.d.ts +17 -0
  275. package/toast-notification/si-toast-notification-drawer/si-toast-notification-drawer.component.d.ts +9 -0
  276. package/toast-notification/si-toast-notification.service.d.ts +41 -0
  277. package/toast-notification/si-toast.model.d.ts +25 -0
  278. package/tooltip/index.d.ts +7 -0
  279. package/tooltip/package.json +3 -0
  280. package/tooltip/si-tooltip.component.d.ts +25 -0
  281. package/tooltip/si-tooltip.directive.d.ts +45 -0
  282. package/tooltip/si-tooltip.module.d.ts +7 -0
  283. package/tooltip/si-tooltip.service.d.ts +44 -0
  284. package/translate/si-translatable-keys.interface.d.ts +46 -0
  285. package/typeahead/index.d.ts +8 -0
  286. package/typeahead/package.json +3 -0
  287. package/typeahead/si-typeahead-item-template.directive.d.ts +7 -0
  288. package/typeahead/si-typeahead.component.d.ts +22 -0
  289. package/typeahead/si-typeahead.directive.d.ts +196 -0
  290. package/typeahead/si-typeahead.model.d.ts +60 -0
  291. package/typeahead/si-typeahead.module.d.ts +8 -0
  292. package/typeahead/si-typeahead.sorting.d.ts +10 -0
  293. package/wizard/index.d.ts +7 -0
  294. package/wizard/package.json +3 -0
  295. package/wizard/si-wizard-step.component.d.ts +21 -0
  296. package/wizard/si-wizard.component.d.ts +196 -0
  297. package/wizard/si-wizard.module.d.ts +8 -0
@@ -0,0 +1,177 @@
1
+ import * as i0 from '@angular/core';
2
+ import { computed, input, output, Directive, contentChildren, inject, ElementRef, signal, Component, NgModule } from '@angular/core';
3
+ import { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';
4
+ import { NG_VALIDATORS } from '@angular/forms';
5
+
6
+ /**
7
+ * Copyright Siemens 2016 - 2025.
8
+ * SPDX-License-Identifier: MIT
9
+ */
10
+ const RE_UPPER_CASE = /[A-Z]/;
11
+ const RE_LOWER_CASE = /[a-z]/;
12
+ const RE_DIGITS = /[0-9]/;
13
+ const RE_SPECIAL_CHARS = /[\x21-\x2F|\x3A-\x40|\x5B-\x60]/;
14
+ const RE_WHITESPACES = /\s/;
15
+ class SiPasswordStrengthDirective {
16
+ maxStrength = computed(() => {
17
+ const strength = this.siPasswordStrength();
18
+ return (1 +
19
+ (strength.uppercase ? 1 : 0) +
20
+ (strength.lowercase ? 1 : 0) +
21
+ (strength.digits ? 1 : 0) +
22
+ (strength.special ? 1 : 0));
23
+ });
24
+ noValidation = false;
25
+ /**
26
+ * Define Siemens password strength.
27
+ *
28
+ * @defaultValue
29
+ * ```
30
+ * {
31
+ * minLength: 8,
32
+ * uppercase: true,
33
+ * lowercase: true,
34
+ * digits: true,
35
+ * special: true
36
+ * }
37
+ * ```
38
+ */
39
+ siPasswordStrength = input({
40
+ minLength: 8,
41
+ uppercase: true,
42
+ lowercase: true,
43
+ digits: true,
44
+ special: true
45
+ });
46
+ /**
47
+ * Output callback event called when the password changes. The number
48
+ * indicated the number of rules which still can be met. (`-2` --\> 2 rules are
49
+ * still unmet, `0` --\> all met)
50
+ */
51
+ passwordStrengthChanged = output();
52
+ /** @internal */
53
+ validate(control) {
54
+ if (this.getStrength(control.value) >= this.maxStrength()) {
55
+ return {};
56
+ }
57
+ return { siPasswordStrength: true };
58
+ }
59
+ getStrength(password) {
60
+ 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
69
+ 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
+ }
75
+ this.noValidation = false;
76
+ this.passwordStrengthChanged.emit();
77
+ return strength;
78
+ }
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
80
+ 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 });
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthDirective, decorators: [{
83
+ type: Directive,
84
+ args: [{
85
+ selector: '[siPasswordStrength]',
86
+ providers: [{ provide: NG_VALIDATORS, useExisting: SiPasswordStrengthDirective, multi: true }],
87
+ host: {
88
+ '[class.no-validation]': 'noValidation'
89
+ }
90
+ }]
91
+ }] });
92
+
93
+ /**
94
+ * Copyright Siemens 2016 - 2025.
95
+ * SPDX-License-Identifier: MIT
96
+ */
97
+ class SiPasswordStrengthComponent {
98
+ /**
99
+ * Whether to show the visibility toggle icon.
100
+ *
101
+ * @defaultValue true
102
+ */
103
+ showVisibilityIcon = input(true);
104
+ passwordStrengthDirective = contentChildren(SiPasswordStrengthDirective);
105
+ elRef = inject(ElementRef);
106
+ bad = signal(false);
107
+ weak = signal(false);
108
+ medium = signal(false);
109
+ good = signal(false);
110
+ strong = signal(false);
111
+ toggle(type) {
112
+ const inputEl = this.elRef.nativeElement.querySelector('input');
113
+ if (inputEl) {
114
+ inputEl.type = type;
115
+ }
116
+ }
117
+ ngAfterViewInit() {
118
+ this.passwordStrengthDirective().forEach(directive => {
119
+ directive.passwordStrengthChanged.subscribe((strength) => {
120
+ this.strong.set(strength === 0);
121
+ this.good.set(strength === -1);
122
+ this.medium.set(strength === -2);
123
+ this.weak.set(strength === -3);
124
+ this.bad.set(strength === -4);
125
+ });
126
+ });
127
+ }
128
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
129
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.6", type: SiPasswordStrengthComponent, isStandalone: true, selector: "si-password-strength", inputs: { showVisibilityIcon: { classPropertyName: "showVisibilityIcon", publicName: "showVisibilityIcon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.bad": "bad()", "class.weak": "weak()", "class.medium": "medium()", "class.good": "good()", "class.strong": "strong()" } }, queries: [{ propertyName: "passwordStrengthDirective", predicate: SiPasswordStrengthDirective, isSignal: true }], ngImport: i0, template: `
130
+ <si-password-toggle [showVisibilityIcon]="showVisibilityIcon()" (typeChange)="toggle($event)">
131
+ <ng-content />
132
+ </si-password-toggle>
133
+ `, isInline: true, styles: [":host{--strength-border-radius: 0 var(--element-radius-1) var(--element-radius-1) 1px;display:block;position:relative}:host:before{background:var(--strength-background);inset-block-end:1px;content:\"\";block-size:3px;inset-inline-start:1px;position:absolute;transition:inline-size calc(.15s * var(--element-animations-enabled, 1)),background calc(.15s * var(--element-animations-enabled, 1)) ease-in-out;inline-size:calc(var(--strength-width) - 2px);border-radius:var(--strength-border-radius);z-index:1}:host.bad{--strength-background: var(--element-color-bad);--strength-width: 20%}:host.weak{--strength-background: var(--element-color-poor);--strength-width: 40%}:host.medium{--strength-background: var(--element-color-average);--strength-width: 60%}:host.good{--strength-background: var(--element-color-good);--strength-width: 80%}:host.strong{--strength-background: var(--element-color-excellent);--strength-width: 100%;--strength-border-radius: 0 0 1px 1px}\n"], dependencies: [{ kind: "component", type: SiPasswordToggleComponent, selector: "si-password-toggle", inputs: ["showVisibilityIcon", "showLabel", "hideLabel"], outputs: ["typeChange"] }] });
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthComponent, decorators: [{
136
+ type: Component,
137
+ args: [{ selector: 'si-password-strength', template: `
138
+ <si-password-toggle [showVisibilityIcon]="showVisibilityIcon()" (typeChange)="toggle($event)">
139
+ <ng-content />
140
+ </si-password-toggle>
141
+ `, imports: [SiPasswordToggleComponent], host: {
142
+ '[class.bad]': 'bad()',
143
+ '[class.weak]': 'weak()',
144
+ '[class.medium]': 'medium()',
145
+ '[class.good]': 'good()',
146
+ '[class.strong]': 'strong()'
147
+ }, styles: [":host{--strength-border-radius: 0 var(--element-radius-1) var(--element-radius-1) 1px;display:block;position:relative}:host:before{background:var(--strength-background);inset-block-end:1px;content:\"\";block-size:3px;inset-inline-start:1px;position:absolute;transition:inline-size calc(.15s * var(--element-animations-enabled, 1)),background calc(.15s * var(--element-animations-enabled, 1)) ease-in-out;inline-size:calc(var(--strength-width) - 2px);border-radius:var(--strength-border-radius);z-index:1}:host.bad{--strength-background: var(--element-color-bad);--strength-width: 20%}:host.weak{--strength-background: var(--element-color-poor);--strength-width: 40%}:host.medium{--strength-background: var(--element-color-average);--strength-width: 60%}:host.good{--strength-background: var(--element-color-good);--strength-width: 80%}:host.strong{--strength-background: var(--element-color-excellent);--strength-width: 100%;--strength-border-radius: 0 0 1px 1px}\n"] }]
148
+ }] });
149
+
150
+ /**
151
+ * Copyright Siemens 2016 - 2025.
152
+ * SPDX-License-Identifier: MIT
153
+ */
154
+ class SiPasswordStrengthModule {
155
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
156
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthModule, imports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective], exports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective] });
157
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthModule, imports: [SiPasswordStrengthComponent] });
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordStrengthModule, decorators: [{
160
+ type: NgModule,
161
+ args: [{
162
+ imports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective],
163
+ exports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective]
164
+ }]
165
+ }] });
166
+
167
+ /**
168
+ * Copyright Siemens 2016 - 2025.
169
+ * SPDX-License-Identifier: MIT
170
+ */
171
+
172
+ /**
173
+ * Generated bundle index. Do not edit.
174
+ */
175
+
176
+ export { SiPasswordStrengthComponent, SiPasswordStrengthDirective, SiPasswordStrengthModule };
177
+ //# sourceMappingURL=siemens-element-ng-password-strength.mjs.map
@@ -0,0 +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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"}
@@ -0,0 +1,88 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, signal, Component, NgModule } from '@angular/core';
3
+ import { addIcons, elementShow, elementHide, SiIconNextComponent } from '@siemens/element-ng/icon';
4
+ import * as i1 from '@siemens/element-translate-ng/translate';
5
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
6
+
7
+ /**
8
+ * Copyright Siemens 2016 - 2025.
9
+ * SPDX-License-Identifier: MIT
10
+ */
11
+ class SiPasswordToggleComponent {
12
+ /**
13
+ * Whether to show the visibility toggle icon.
14
+ *
15
+ * @defaultValue true
16
+ */
17
+ showVisibilityIcon = input(true);
18
+ /**
19
+ * Emits the `type` attribute for the `<input>` ('password' | 'text')
20
+ * whenever the password visibility is getting toggled.
21
+ */
22
+ typeChange = output();
23
+ /**
24
+ * The aria-label (translatable) for the password show icon.
25
+ *
26
+ * @defaultValue
27
+ * ```
28
+ * $localize`:@@SI_PASSWORD_TOGGLE.SHOW:show password`
29
+ * ```
30
+ */
31
+ showLabel = input($localize `:@@SI_PASSWORD_TOGGLE.SHOW:show password`);
32
+ /**
33
+ * The aria-label (translatable) for the password hide icon.
34
+ *
35
+ * @defaultValue
36
+ * ```
37
+ * $localize`:@@SI_PASSWORD_TOGGLE.HIDE:hide password`
38
+ * ```
39
+ */
40
+ hideLabel = input($localize `:@@SI_PASSWORD_TOGGLE.HIDE:hide password`);
41
+ showPassword = signal(false);
42
+ icons = addIcons({ elementHide, elementShow });
43
+ /** The `type` attribute for the `<input>` ('password' | 'text'). */
44
+ get inputType() {
45
+ return this.showPassword() ? 'text' : 'password';
46
+ }
47
+ toggle() {
48
+ this.showPassword.set(!this.showPassword());
49
+ this.typeChange.emit(this.inputType);
50
+ }
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
52
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiPasswordToggleComponent, isStandalone: true, selector: "si-password-toggle", inputs: { showVisibilityIcon: { classPropertyName: "showVisibilityIcon", publicName: "showVisibilityIcon", isSignal: true, isRequired: false, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, hideLabel: { classPropertyName: "hideLabel", publicName: "hideLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { typeChange: "typeChange" }, host: { properties: { "class.show-visibility-icon": "showVisibilityIcon()" } }, ngImport: i0, template: "<ng-content />\n@if (showVisibilityIcon()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-circle btn-xs text-body password-visibility-icon\"\n [attr.aria-label]=\"(showPassword() ? hideLabel() : showLabel()) | translate\"\n (click)=\"toggle()\"\n >\n <si-icon-next [icon]=\"showPassword() ? icons.elementHide : icons.elementShow\" />\n </button>\n}\n", styles: [":host{display:block;position:relative;inline-size:100%}:host.show-visibility-icon{--si-action-icon-offset: 28px}.password-visibility-icon{position:absolute;font-size:1.5rem;inset-inline-end:8px;inset-block-start:4px;z-index:2}\n"], dependencies: [{ kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }] });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordToggleComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ selector: 'si-password-toggle', imports: [SiIconNextComponent, SiTranslateModule], host: {
57
+ '[class.show-visibility-icon]': 'showVisibilityIcon()'
58
+ }, template: "<ng-content />\n@if (showVisibilityIcon()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-circle btn-xs text-body password-visibility-icon\"\n [attr.aria-label]=\"(showPassword() ? hideLabel() : showLabel()) | translate\"\n (click)=\"toggle()\"\n >\n <si-icon-next [icon]=\"showPassword() ? icons.elementHide : icons.elementShow\" />\n </button>\n}\n", styles: [":host{display:block;position:relative;inline-size:100%}:host.show-visibility-icon{--si-action-icon-offset: 28px}.password-visibility-icon{position:absolute;font-size:1.5rem;inset-inline-end:8px;inset-block-start:4px;z-index:2}\n"] }]
59
+ }] });
60
+
61
+ /**
62
+ * Copyright Siemens 2016 - 2025.
63
+ * SPDX-License-Identifier: MIT
64
+ */
65
+ class SiPasswordToggleModule {
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
67
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordToggleModule, imports: [SiPasswordToggleComponent], exports: [SiPasswordToggleComponent] });
68
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordToggleModule, imports: [SiPasswordToggleComponent] });
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiPasswordToggleModule, decorators: [{
71
+ type: NgModule,
72
+ args: [{
73
+ exports: [SiPasswordToggleComponent],
74
+ imports: [SiPasswordToggleComponent]
75
+ }]
76
+ }] });
77
+
78
+ /**
79
+ * Copyright Siemens 2016 - 2025.
80
+ * SPDX-License-Identifier: MIT
81
+ */
82
+
83
+ /**
84
+ * Generated bundle index. Do not edit.
85
+ */
86
+
87
+ export { SiPasswordToggleComponent, SiPasswordToggleModule };
88
+ //# sourceMappingURL=siemens-element-ng-password-toggle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-password-toggle.mjs","sources":["../../../../projects/element-ng/password-toggle/si-password-toggle.component.ts","../../../../projects/element-ng/password-toggle/si-password-toggle.component.html","../../../../projects/element-ng/password-toggle/si-password-toggle.module.ts","../../../../projects/element-ng/password-toggle/index.ts","../../../../projects/element-ng/password-toggle/siemens-element-ng-password-toggle.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output, signal } from '@angular/core';\nimport { addIcons, elementHide, elementShow, SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-password-toggle',\n templateUrl: './si-password-toggle.component.html',\n styleUrl: './si-password-toggle.component.scss',\n imports: [SiIconNextComponent, SiTranslateModule],\n host: {\n '[class.show-visibility-icon]': 'showVisibilityIcon()'\n }\n})\nexport class SiPasswordToggleComponent {\n /**\n * Whether to show the visibility toggle icon.\n *\n * @defaultValue true\n */\n readonly showVisibilityIcon = input(true);\n\n /**\n * Emits the `type` attribute for the `<input>` ('password' | 'text')\n * whenever the password visibility is getting toggled.\n */\n readonly typeChange = output<string>();\n\n /**\n * The aria-label (translatable) for the password show icon.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_PASSWORD_TOGGLE.SHOW:show password`\n * ```\n */\n readonly showLabel = input($localize`:@@SI_PASSWORD_TOGGLE.SHOW:show password`);\n /**\n * The aria-label (translatable) for the password hide icon.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_PASSWORD_TOGGLE.HIDE:hide password`\n * ```\n */\n readonly hideLabel = input($localize`:@@SI_PASSWORD_TOGGLE.HIDE:hide password`);\n\n protected readonly showPassword = signal<boolean>(false);\n protected readonly icons = addIcons({ elementHide, elementShow });\n\n /** The `type` attribute for the `<input>` ('password' | 'text'). */\n get inputType(): string {\n return this.showPassword() ? 'text' : 'password';\n }\n\n protected toggle(): void {\n this.showPassword.set(!this.showPassword());\n this.typeChange.emit(this.inputType);\n }\n}\n","<ng-content />\n@if (showVisibilityIcon()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary btn-circle btn-xs text-body password-visibility-icon\"\n [attr.aria-label]=\"(showPassword() ? hideLabel() : showLabel()) | translate\"\n (click)=\"toggle()\"\n >\n <si-icon-next [icon]=\"showPassword() ? icons.elementHide : icons.elementShow\" />\n </button>\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPasswordToggleComponent } from './si-password-toggle.component';\n\n@NgModule({\n exports: [SiPasswordToggleComponent],\n imports: [SiPasswordToggleComponent]\n})\nexport class SiPasswordToggleModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-password-toggle.component';\nexport * from './si-password-toggle.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAcU,yBAAyB,CAAA;AACpC;;;;AAIG;AACM,IAAA,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC;AAEzC;;;AAGG;IACM,UAAU,GAAG,MAAM,EAAU;AAEtC;;;;;;;AAOG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA,CAAA,wCAAA,CAA0C,CAAC;AAC/E;;;;;;;AAOG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA,CAAA,wCAAA,CAA0C,CAAC;AAE5D,IAAA,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC;IACrC,KAAK,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;;AAGjE,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,UAAU;;IAGxC,MAAM,GAAA;QACd,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;uGA3C3B,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,ECjBtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gYAWA,EDCY,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,0EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAKrC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WAGrB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAC3C,IAAA,EAAA;AACJ,wBAAA,8BAA8B,EAAE;AACjC,qBAAA,EAAA,QAAA,EAAA,gYAAA,EAAA,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA;;;AEfH;;;AAGG;MASU,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,OAAA,EAAA,CAFvB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CADzB,yBAAyB,CAAA,EAAA,CAAA;AAGxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAFvB,yBAAyB,CAAA,EAAA,CAAA;;2FAExB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB;AACpC,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}