@siemens/element-ng 49.14.0 → 51.0.0-rc.5

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 (254) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/siemens-element-ng-about.mjs +41 -25
  3. package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
  4. package/fesm2022/siemens-element-ng-accordion.mjs +58 -40
  5. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-action-modal.mjs +83 -53
  7. package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
  8. package/fesm2022/siemens-element-ng-ag-grid.mjs +15 -12
  9. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  10. package/fesm2022/siemens-element-ng-application-header.mjs +176 -166
  11. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  12. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +34 -28
  13. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
  14. package/fesm2022/siemens-element-ng-autocomplete.mjs +27 -22
  15. package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
  16. package/fesm2022/siemens-element-ng-avatar.mjs +31 -21
  17. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  18. package/fesm2022/siemens-element-ng-badge.mjs +9 -8
  19. package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
  20. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +17 -14
  21. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
  22. package/fesm2022/siemens-element-ng-breadcrumb.mjs +21 -17
  23. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  24. package/fesm2022/siemens-element-ng-card.mjs +71 -46
  25. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  26. package/fesm2022/siemens-element-ng-carousel.mjs +57 -33
  27. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
  28. package/fesm2022/siemens-element-ng-chat-messages.mjs +181 -117
  29. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  30. package/fesm2022/siemens-element-ng-circle-status.mjs +39 -25
  31. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-color-picker.mjs +26 -17
  33. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  34. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +56 -35
  35. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
  36. package/fesm2022/siemens-element-ng-common.mjs +12 -12
  37. package/fesm2022/siemens-element-ng-connection-strength.mjs +14 -12
  38. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-content-action-bar.mjs +36 -27
  40. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-copyright-notice.mjs +19 -14
  42. package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-dashboard.mjs +335 -221
  44. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-datatable.mjs +8 -8
  46. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-date-range-filter.mjs +119 -72
  48. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  49. package/fesm2022/siemens-element-ng-datepicker.mjs +376 -244
  50. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +22 -17
  52. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  53. package/fesm2022/siemens-element-ng-empty-state.mjs +15 -12
  54. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  55. package/fesm2022/siemens-element-ng-file-uploader.mjs +105 -91
  56. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-filter-bar.mjs +32 -24
  58. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-filtered-search.mjs +251 -153
  60. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-footer.mjs +12 -10
  62. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  63. package/fesm2022/siemens-element-ng-form.mjs +345 -113
  64. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  65. package/fesm2022/siemens-element-ng-formly-legacy.mjs +99 -0
  66. package/fesm2022/siemens-element-ng-formly-legacy.mjs.map +1 -0
  67. package/fesm2022/siemens-element-ng-formly.mjs +222 -316
  68. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  69. package/fesm2022/siemens-element-ng-header-dropdown.mjs +40 -30
  70. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  71. package/fesm2022/siemens-element-ng-help-button.mjs +5 -5
  72. package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
  73. package/fesm2022/siemens-element-ng-icon.mjs +46 -47
  74. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  75. package/fesm2022/siemens-element-ng-info-page.mjs +17 -11
  76. package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
  77. package/fesm2022/siemens-element-ng-inline-notification.mjs +19 -14
  78. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
  79. package/fesm2022/siemens-element-ng-ip-input.mjs +25 -25
  80. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
  81. package/fesm2022/siemens-element-ng-landing-page.mjs +120 -74
  82. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  83. package/fesm2022/siemens-element-ng-language-switcher.mjs +16 -12
  84. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  85. package/fesm2022/siemens-element-ng-link.mjs +31 -21
  86. package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
  87. package/fesm2022/siemens-element-ng-list-details.mjs +76 -56
  88. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  89. package/fesm2022/siemens-element-ng-loading-spinner.mjs +46 -63
  90. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  91. package/fesm2022/siemens-element-ng-localization.mjs +14 -12
  92. package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
  93. package/fesm2022/siemens-element-ng-main-detail-container.mjs +47 -30
  94. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-maplibre.mjs +42 -0
  96. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -0
  97. package/fesm2022/siemens-element-ng-markdown-renderer.mjs +6 -5
  98. package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
  99. package/fesm2022/siemens-element-ng-menu.mjs +56 -48
  100. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  101. package/fesm2022/siemens-element-ng-modal.mjs +14 -11
  102. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  103. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +249 -204
  104. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  105. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +120 -83
  106. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  107. package/fesm2022/siemens-element-ng-navbar.mjs +72 -45
  108. package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
  109. package/fesm2022/siemens-element-ng-notification-item.mjs +19 -11
  110. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  111. package/fesm2022/siemens-element-ng-number-input.mjs +40 -28
  112. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  113. package/fesm2022/siemens-element-ng-pagination.mjs +31 -20
  114. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  115. package/fesm2022/siemens-element-ng-password-strength.mjs +32 -23
  116. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  117. package/fesm2022/siemens-element-ng-password-toggle.mjs +18 -13
  118. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
  119. package/fesm2022/siemens-element-ng-phone-number.mjs +123 -139
  120. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  121. package/fesm2022/siemens-element-ng-photo-upload.mjs +84 -51
  122. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
  123. package/fesm2022/siemens-element-ng-pills-input.mjs +63 -58
  124. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  125. package/fesm2022/siemens-element-ng-popover-legacy.mjs +43 -28
  126. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  127. package/fesm2022/siemens-element-ng-popover.mjs +35 -27
  128. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  129. package/fesm2022/siemens-element-ng-progressbar.mjs +23 -16
  130. package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
  131. package/fesm2022/siemens-element-ng-resize-observer.mjs +32 -43
  132. package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
  133. package/fesm2022/siemens-element-ng-result-details-list.mjs +12 -10
  134. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  135. package/fesm2022/siemens-element-ng-search-bar.mjs +38 -31
  136. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
  137. package/fesm2022/siemens-element-ng-select.mjs +218 -163
  138. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  139. package/fesm2022/siemens-element-ng-shadow-root.mjs +3 -3
  140. package/fesm2022/siemens-element-ng-side-panel.mjs +128 -86
  141. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  142. package/fesm2022/siemens-element-ng-skip-links.mjs +21 -24
  143. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  144. package/fesm2022/siemens-element-ng-slider.mjs +44 -29
  145. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  146. package/fesm2022/siemens-element-ng-split.mjs +273 -293
  147. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  148. package/fesm2022/siemens-element-ng-status-bar.mjs +65 -51
  149. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  150. package/fesm2022/siemens-element-ng-status-counter.mjs +15 -11
  151. package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
  152. package/fesm2022/siemens-element-ng-status-toggle.mjs +26 -16
  153. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  154. package/fesm2022/siemens-element-ng-summary-chip.mjs +25 -16
  155. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  156. package/fesm2022/siemens-element-ng-summary-widget.mjs +27 -17
  157. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
  158. package/fesm2022/siemens-element-ng-system-banner.mjs +11 -8
  159. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
  160. package/fesm2022/siemens-element-ng-tabs-legacy.mjs +20 -17
  161. package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
  162. package/fesm2022/siemens-element-ng-tabs.mjs +73 -70
  163. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  164. package/fesm2022/siemens-element-ng-theme.mjs +29 -6
  165. package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
  166. package/fesm2022/siemens-element-ng-threshold.mjs +60 -41
  167. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  168. package/fesm2022/siemens-element-ng-toast-notification.mjs +45 -40
  169. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  170. package/fesm2022/siemens-element-ng-tooltip.mjs +105 -82
  171. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  172. package/fesm2022/siemens-element-ng-tour.mjs +24 -18
  173. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
  174. package/fesm2022/siemens-element-ng-translate.mjs +0 -1
  175. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  176. package/fesm2022/siemens-element-ng-tree-view.mjs +96 -75
  177. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  178. package/fesm2022/siemens-element-ng-typeahead.mjs +76 -70
  179. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  180. package/fesm2022/siemens-element-ng-wizard.mjs +72 -48
  181. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  182. package/formly-legacy/package.json +4 -0
  183. package/maplibre/package.json +4 -0
  184. package/maplibre/styles/_index.scss +1 -0
  185. package/maplibre/styles/maplibre-gl.scss +715 -0
  186. package/package.json +37 -23
  187. package/schematics/migration.json +4 -4
  188. package/schematics/migrations/data/class-member-replacement.js +1 -19
  189. package/schematics/migrations/data/component-property-names.js +1 -25
  190. package/schematics/migrations/data/element-class-changes.js +1 -28
  191. package/schematics/migrations/data/element-migration-data.js +2 -0
  192. package/schematics/migrations/data/element-selectors.js +1 -11
  193. package/schematics/migrations/data/index.js +0 -4
  194. package/schematics/migrations/data/migration-test-data.js +9 -6
  195. package/schematics/migrations/data/provider-function-removals.js +7 -0
  196. package/schematics/migrations/data/symbol-removals.js +7 -7
  197. package/schematics/migrations/data/symbol-renaming.js +1 -48
  198. package/schematics/migrations/element-migration/element-migration.js +3 -6
  199. package/schematics/migrations/utilities/import-removal.js +39 -0
  200. package/schematics/migrations/utilities/index.js +2 -0
  201. package/schematics/migrations/utilities/provider-function-removal.migration.js +116 -0
  202. package/schematics/ng-update/index.js +1 -1
  203. package/schematics/ng-update/migrate-split-sizes.js +105 -0
  204. package/schematics/ng-update/{migrate-to-v49.js → migrate-to-v51.js} +5 -3
  205. package/template-i18n.json +45 -47
  206. package/types/siemens-element-ng-application-header.d.ts +8 -28
  207. package/types/siemens-element-ng-breadcrumb.d.ts +1 -1
  208. package/types/siemens-element-ng-chat-messages.d.ts +11 -9
  209. package/types/siemens-element-ng-circle-status.d.ts +1 -1
  210. package/types/siemens-element-ng-content-action-bar.d.ts +1 -1
  211. package/types/siemens-element-ng-dashboard.d.ts +2 -2
  212. package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
  213. package/types/siemens-element-ng-datepicker.d.ts +3 -14
  214. package/types/siemens-element-ng-electron-titlebar.d.ts +1 -1
  215. package/types/siemens-element-ng-file-uploader.d.ts +13 -31
  216. package/types/siemens-element-ng-filter-bar.d.ts +1 -1
  217. package/types/siemens-element-ng-filtered-search.d.ts +4 -4
  218. package/types/siemens-element-ng-form.d.ts +180 -44
  219. package/types/siemens-element-ng-formly-legacy.d.ts +40 -0
  220. package/types/siemens-element-ng-formly.d.ts +34 -167
  221. package/types/siemens-element-ng-icon.d.ts +2 -19
  222. package/types/siemens-element-ng-ip-input.d.ts +1 -1
  223. package/types/siemens-element-ng-landing-page.d.ts +2 -2
  224. package/types/siemens-element-ng-loading-spinner.d.ts +7 -17
  225. package/types/siemens-element-ng-maplibre.d.ts +26 -0
  226. package/types/siemens-element-ng-navbar-vertical-next.d.ts +86 -38
  227. package/types/siemens-element-ng-navbar-vertical.d.ts +1 -1
  228. package/types/siemens-element-ng-navbar.d.ts +3 -3
  229. package/types/siemens-element-ng-notification-item.d.ts +12 -0
  230. package/types/siemens-element-ng-phone-number.d.ts +5 -8
  231. package/types/siemens-element-ng-photo-upload.d.ts +4 -4
  232. package/types/siemens-element-ng-resize-observer.d.ts +0 -17
  233. package/types/siemens-element-ng-search-bar.d.ts +1 -1
  234. package/types/siemens-element-ng-select.d.ts +1 -1
  235. package/types/siemens-element-ng-side-panel.d.ts +3 -3
  236. package/types/siemens-element-ng-split.d.ts +99 -70
  237. package/types/siemens-element-ng-status-bar.d.ts +5 -13
  238. package/types/siemens-element-ng-status-counter.d.ts +1 -1
  239. package/types/siemens-element-ng-tabs.d.ts +1 -2
  240. package/types/siemens-element-ng-theme.d.ts +12 -2
  241. package/types/siemens-element-ng-threshold.d.ts +1 -1
  242. package/types/siemens-element-ng-toast-notification.d.ts +0 -1
  243. package/types/siemens-element-ng-tooltip.d.ts +7 -7
  244. package/types/siemens-element-ng-translate.d.ts +2 -5
  245. package/fesm2022/siemens-element-ng-icon-status.mjs +0 -46
  246. package/fesm2022/siemens-element-ng-icon-status.mjs.map +0 -1
  247. package/fesm2022/siemens-element-ng-sort-bar.mjs +0 -99
  248. package/fesm2022/siemens-element-ng-sort-bar.mjs.map +0 -1
  249. package/icon-status/package.json +0 -4
  250. package/schematics/vitest-setup.js +0 -5
  251. package/sort-bar/package.json +0 -4
  252. package/types/siemens-element-ng-icon-status.d.ts +0 -25
  253. package/types/siemens-element-ng-sort-bar.d.ts +0 -59
  254. /package/{LICENSE.md → LICENSE} +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Renderer2, input, booleanAttribute, signal, computed, HostListener, Directive } from '@angular/core';
2
+ import { inject, ElementRef, Renderer2, input, booleanAttribute, signal, computed, Directive } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
4
4
  import { SI_FORM_ITEM_CONTROL } from '@siemens/element-ng/form';
5
5
 
@@ -232,20 +232,23 @@ class SiIpInputDirective {
232
232
  * `si-ip-input-${SiIpInputDirective.idCounter++}`
233
233
  * ```
234
234
  */
235
- id = input(`si-ip-input-${SiIpInputDirective.idCounter++}`, ...(ngDevMode ? [{ debugName: "id" }] : []));
235
+ id = input(`si-ip-input-${SiIpInputDirective.idCounter++}`, /* @ts-ignore */
236
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
236
237
  /**
237
238
  * Enable CIDR (Classless Inter-Domain Routing) notation.
238
239
  * @defaultValue false
239
240
  */
240
- cidr = input(false, { ...(ngDevMode ? { debugName: "cidr" } : {}), transform: booleanAttribute });
241
+ cidr = input(false, { ...(ngDevMode ? { debugName: "cidr" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
241
242
  /**
242
243
  * Whether the ip address input is disabled.
243
244
  * @defaultValue false
244
245
  */
245
246
  // eslint-disable-next-line @angular-eslint/no-input-rename
246
- disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : {}), alias: 'disabled' });
247
- disabledNgControl = signal(false, ...(ngDevMode ? [{ debugName: "disabledNgControl" }] : []));
248
- disabled = computed(() => this.disabledInput() || this.disabledNgControl(), ...(ngDevMode ? [{ debugName: "disabled" }] : []));
247
+ disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled' });
248
+ disabledNgControl = signal(false, /* @ts-ignore */
249
+ ...(ngDevMode ? [{ debugName: "disabledNgControl" }] : /* istanbul ignore next */ []));
250
+ disabled = computed(() => this.disabledInput() || this.disabledNgControl(), /* @ts-ignore */
251
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
249
252
  onTouched = () => { };
250
253
  onChange = () => { };
251
254
  value = '';
@@ -277,7 +280,7 @@ class SiIpInputDirective {
277
280
  this.onChange(this.value);
278
281
  }
279
282
  /** @internal */
280
- blur() {
283
+ onBlur() {
281
284
  this.leaveInput();
282
285
  this.onTouched();
283
286
  }
@@ -285,15 +288,15 @@ class SiIpInputDirective {
285
288
  * Allow to adjust the input value when leaving the input field.
286
289
  */
287
290
  leaveInput() { }
288
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiIpInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
289
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiIpInputDirective, isStandalone: true, selector: "input[siIpInput]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, cidr: { classPropertyName: "cidr", publicName: "cidr", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput($event)", "blur": "blur()" }, properties: { "id": "id()", "disabled": "disabled() || null" } }, providers: [
291
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SiIpInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
292
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: SiIpInputDirective, isStandalone: true, selector: "input[siIpInput]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, cidr: { classPropertyName: "cidr", publicName: "cidr", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput($event)", "blur": "onBlur()" }, properties: { "id": "id()", "disabled": "disabled() || null" } }, providers: [
290
293
  {
291
294
  provide: SI_FORM_ITEM_CONTROL,
292
295
  useExisting: SiIpInputDirective
293
296
  }
294
297
  ], ngImport: i0 });
295
298
  }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiIpInputDirective, decorators: [{
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SiIpInputDirective, decorators: [{
297
300
  type: Directive,
298
301
  args: [{
299
302
  selector: 'input[siIpInput]',
@@ -305,16 +308,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
305
308
  ],
306
309
  host: {
307
310
  '[id]': 'id()',
308
- '[disabled]': 'disabled() || null'
311
+ '[disabled]': 'disabled() || null',
312
+ '(input)': 'onInput($event)',
313
+ '(blur)': 'onBlur()'
309
314
  }
310
315
  }]
311
- }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], cidr: [{ type: i0.Input, args: [{ isSignal: true, alias: "cidr", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], onInput: [{
312
- type: HostListener,
313
- args: ['input', ['$event']]
314
- }], blur: [{
315
- type: HostListener,
316
- args: ['blur']
317
- }] } });
316
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], cidr: [{ type: i0.Input, args: [{ isSignal: true, alias: "cidr", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
318
317
 
319
318
  /**
320
319
  * Copyright (c) Siemens 2016 - 2026
@@ -370,8 +369,8 @@ class SiIp4InputDirective extends SiIpInputDirective {
370
369
  el.setSelectionRange(newPos, newPos);
371
370
  }
372
371
  }
373
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiIp4InputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
374
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: SiIp4InputDirective, isStandalone: true, selector: "input[siIpV4]", providers: [
372
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SiIp4InputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
373
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: SiIp4InputDirective, isStandalone: true, selector: "input[siIpV4]", providers: [
375
374
  {
376
375
  provide: NG_VALUE_ACCESSOR,
377
376
  useExisting: SiIp4InputDirective,
@@ -384,7 +383,7 @@ class SiIp4InputDirective extends SiIpInputDirective {
384
383
  }
385
384
  ], exportAs: ["siIpV4"], usesInheritance: true, ngImport: i0 });
386
385
  }
387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiIp4InputDirective, decorators: [{
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SiIp4InputDirective, decorators: [{
388
387
  type: Directive,
389
388
  args: [{
390
389
  selector: 'input[siIpV4]',
@@ -428,7 +427,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
428
427
  * ```
429
428
  */
430
429
  class SiIp6InputDirective extends SiIpInputDirective {
431
- validatorFn = computed(() => ipV6Validator({ zeroCompression: true, cidr: this.cidr() }), ...(ngDevMode ? [{ debugName: "validatorFn" }] : []));
430
+ validatorFn = computed(() => ipV6Validator({ zeroCompression: true, cidr: this.cidr() }), /* @ts-ignore */
431
+ ...(ngDevMode ? [{ debugName: "validatorFn" }] : /* istanbul ignore next */ []));
432
432
  validate(control) {
433
433
  return this.validatorFn()(control);
434
434
  }
@@ -457,8 +457,8 @@ class SiIp6InputDirective extends SiIpInputDirective {
457
457
  }
458
458
  }
459
459
  }
460
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiIp6InputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
461
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: SiIp6InputDirective, isStandalone: true, selector: "input[siIpV6]", providers: [
460
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SiIp6InputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
461
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: SiIp6InputDirective, isStandalone: true, selector: "input[siIpV6]", providers: [
462
462
  {
463
463
  provide: NG_VALUE_ACCESSOR,
464
464
  useExisting: SiIp6InputDirective,
@@ -471,7 +471,7 @@ class SiIp6InputDirective extends SiIpInputDirective {
471
471
  }
472
472
  ], exportAs: ["siIpV6"], usesInheritance: true, ngImport: i0 });
473
473
  }
474
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiIp6InputDirective, decorators: [{
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SiIp6InputDirective, decorators: [{
475
475
  type: Directive,
476
476
  args: [{
477
477
  selector: 'input[siIpV6]',
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-ip-input.mjs","sources":["../../../../projects/element-ng/ip-input/address-utils.ts","../../../../projects/element-ng/ip-input/address-validators.ts","../../../../projects/element-ng/ip-input/si-ip-input.directive.ts","../../../../projects/element-ng/ip-input/si-ip4-input.directive.ts","../../../../projects/element-ng/ip-input/si-ip6-input.directive.ts","../../../../projects/element-ng/ip-input/index.ts","../../../../projects/element-ng/ip-input/siemens-element-ng-ip-input.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\ninterface Section {\n value: string;\n current?: boolean;\n partNo?: number;\n /** Indicate this is a network mask. */\n mask?: boolean;\n}\n\nexport interface Ip4SplitOptions {\n type?: 'insert' | 'delete' | 'paste';\n input?: string | null;\n pos: number;\n cidr?: boolean;\n}\n\nexport interface Ip6SplitOptions {\n type?: 'insert' | 'delete' | 'paste';\n input?: string | null;\n pos: number;\n zeroCompression?: boolean;\n cidr?: boolean;\n}\n\nconst isDigit = (c: string): boolean => c >= '0' && c <= '9';\nconst isHex = (c: string): boolean => (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F');\n\nconst recursiveSplitIpV4 = (\n options: Ip4SplitOptions,\n input: string,\n sections: Section[] = [{ value: '', partNo: 0 }],\n index: number = 0,\n cursorDelta: number = 0\n): { sections: Section[]; cursorDelta: number } => {\n // Base case: no more input to process\n if (input.length === 0) {\n return { sections, cursorDelta };\n }\n const current = sections.at(-1)!;\n const char = input[0];\n input = input.substring(1);\n if (isDigit(char)) {\n const part = `${current.value}${char}`;\n const limit = current.mask ? 32 : 255;\n // Append digits to current part until the part limit exceeds\n if (part.length <= 3 && parseInt(part, 10) <= limit) {\n current.value = part;\n } else {\n // Base case: IP completely entered\n if ((options.cidr && current.mask) || (!options.cidr && current.partNo === 3)) {\n return { sections, cursorDelta };\n }\n // Force separators since the part exceeded his limit\n if (current.partNo === 3) {\n input = `/${char}${input.replace('.', '').replace('/', '')}`;\n } else {\n const dotIndex = input.indexOf('.');\n if (dotIndex >= 0) {\n input = input.substring(0, dotIndex) + input.substring(dotIndex + 1);\n }\n input = `.${char}${input}`;\n }\n // In case the cursor position is at the the position of the exceeded digit it is necessary\n // to move the cursor one position forward since a separator will be added before the digit\n if (index === options.pos) {\n cursorDelta = 1;\n }\n }\n } else if (char === '.' || char === '/') {\n // Handle separators\n if ('partNo' in current && current.partNo! < 3) {\n sections.push({ value: '.' }, { value: '', partNo: current.partNo! + 1 });\n } else if (options.cidr && !current.mask) {\n sections.push({ value: '/' }, { value: '', mask: true });\n }\n }\n\n return recursiveSplitIpV4(options, input, sections, index + 1, cursorDelta);\n};\n\n/**\n * Parse IPv4 input string into IPv4 address section array.\n */\nexport const splitIpV4Sections = (\n options: Ip4SplitOptions\n): { value: string; cursorDelta: number } => {\n const { input } = options;\n if (!input) {\n return { value: '', cursorDelta: 0 };\n }\n const { sections, cursorDelta } = recursiveSplitIpV4(options, input);\n return {\n value: sections.map(s => s.value).join(''),\n cursorDelta\n };\n};\n\nexport const splitIpV6Sections = (\n options: Ip6SplitOptions\n): { value: string; cursorDelta: number } => {\n const { type, input, pos, zeroCompression, cidr } = options;\n const sections: Section[] = [{ value: '' }];\n let cursorDelta = 0;\n if (!input) {\n return { value: '', cursorDelta: 0 };\n }\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charAt(i).toUpperCase();\n if (isHex(c)) {\n sections.at(-1)!.value += c;\n } else if (c === ':') {\n if (input.charAt(i - 1) === c) {\n // Merge :: characters\n sections.at(-2)!.value += c;\n } else {\n sections.push({ value: c }, { value: '' });\n }\n } else if (cidr && c === '/') {\n sections.push({ value: c }, { value: '', mask: true });\n }\n if (pos === i) {\n sections.at(-1)!.current = true;\n }\n }\n\n // Split values > FFFF in multiple sections:\n // - 1FFFF will be split into 1FFF and F\n for (let i = 0; i < sections.length; i++) {\n const { value, current } = sections[i];\n if (value.length > 4) {\n const append: Section[] = [];\n let charsProcessed = 0;\n for (let p = 0; p < value.length; p += 4) {\n const part = value.substring(p, p + 4);\n append.push({ value: part });\n if (part.length === 4) {\n append.push({ value: ':' });\n if (current && pos >= charsProcessed) {\n cursorDelta++;\n }\n }\n charsProcessed += 4;\n }\n\n sections.splice(i, 1, ...append);\n if (current) {\n sections[i + append.length - 1].current = true;\n }\n }\n }\n\n // Drop invalid zero compression indicators '::'\n const removeEnd = pos === input.length || type === 'paste';\n let matches = sections.filter(s => s.value.startsWith('::'));\n if (matches) {\n matches = removeEnd ? matches : matches.reverse();\n if (zeroCompression) {\n matches.shift();\n }\n // Only allow one occurrence of ::\n for (const drop of matches) {\n drop.value = drop.value.substring(1);\n }\n }\n\n // Ensure the that the CIDR divider is a slash\n if (cidr) {\n const startCidr = matches.length > 0 ? 13 : 15;\n if (startCidr < sections.length && sections[startCidr].value === ':') {\n sections[startCidr].value = '/';\n }\n const prefixPos = startCidr + 1;\n if (prefixPos < sections.length) {\n const prefixLength = sections[prefixPos].value;\n if (parseInt(prefixLength, 10) > 128) {\n sections[prefixPos].value = prefixLength.substring(0, 2);\n }\n }\n }\n\n const value = sections\n .splice(0, cidr ? 17 : 15)\n .map(s => s.value)\n .join('');\n return { value, cursorDelta };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nconst ipv4Regex =\n /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nconst ipv4CIDRRegex =\n /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\/([1-9]|1[0-9]|2[0-9]|3[0-2]))$/;\n\nconst ipV6Regex =\n /^((?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|:(?::[0-9A-Fa-f]{1,4}){1,7}|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|:(?:(?::[0-9A-Fa-f]{1,4}){1,6}))$/;\n/**\n * Validator factory for a IPV6 address.\n */\nexport const ipV6Validator = (options: {\n zeroCompression?: boolean;\n cidr?: boolean;\n}): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n const parts = value.split('/');\n const error = { ipv6Address: true };\n if (options.cidr) {\n if (parts.length < 2 || !validateSubnet(parts[1])) {\n return error;\n }\n } else {\n if (parts.length > 1) {\n return error;\n }\n }\n if (parts[0].split('::').length > (options.zeroCompression ? 2 : 1)) {\n return error;\n }\n if (!matchIpV6(parts[0])) {\n return error;\n }\n\n return null;\n };\n};\n\n/**\n * Validates a IPV4 address.\n */\nexport const ipV4Validator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const v = control.value;\n const valid = v === '' || v?.toString().match(ipv4Regex);\n return valid ? null : { ipv4Address: true };\n};\n\n/**\n * Validates a IPV4 address including CIDR.\n */\nexport const ipV4CIDRValidator: ValidatorFn = (\n control: AbstractControl\n): ValidationErrors | null => {\n const v = control.value;\n const valid = v === '' || v?.toString().match(ipv4CIDRRegex);\n return valid ? null : { ipv4Address: true };\n};\n\nconst validateSubnet = (cidr: string): boolean => {\n const subnet = parseInt(cidr, 10);\n return subnet > 0 && subnet <= 128;\n};\n\nconst matchIpV6 = (ip: string): boolean =>\n (ip === '::' || !!ip.match(ipV6Regex)) && !!URL.parse(`http://[${ip}]`);\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n Renderer2,\n signal\n} from '@angular/core';\nimport { SI_FORM_ITEM_CONTROL } from '@siemens/element-ng/form';\n\nconst eventMap = new Map<string, 'insert' | 'delete' | 'paste'>([\n ['insertText', 'insert'],\n ['insertFromPaste', 'paste'],\n ['deleteContentBackward', 'delete']\n]);\n\nexport interface AddrInputEvent {\n type?: 'insert' | 'delete' | 'paste';\n pos: number;\n change: string | null;\n value?: string | null;\n previous?: string | null;\n}\n\n/**\n * Base directive for ip address input fields.\n */\n@Directive({\n selector: 'input[siIpInput]',\n providers: [\n {\n provide: SI_FORM_ITEM_CONTROL,\n useExisting: SiIpInputDirective\n }\n ],\n host: {\n '[id]': 'id()',\n '[disabled]': 'disabled() || null'\n }\n})\nexport abstract class SiIpInputDirective {\n private static idCounter = 0;\n protected readonly elementRef = inject(ElementRef<HTMLInputElement>);\n protected readonly renderer = inject(Renderer2);\n protected readonly inputEl = this.elementRef.nativeElement;\n\n /**\n * @defaultValue\n * ```\n * `si-ip-input-${SiIpInputDirective.idCounter++}`\n * ```\n */\n readonly id = input(`si-ip-input-${SiIpInputDirective.idCounter++}`);\n\n /**\n * Enable CIDR (Classless Inter-Domain Routing) notation.\n * @defaultValue false\n */\n readonly cidr = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the ip address input is disabled.\n * @defaultValue false\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled' });\n\n private readonly disabledNgControl = signal(false);\n protected readonly disabled = computed(() => this.disabledInput() || this.disabledNgControl());\n protected onTouched: () => void = () => {};\n protected onChange: (value: any) => void = () => {};\n protected value?: string | null = '';\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledNgControl.set(isDisabled);\n }\n\n writeValue(value?: string | null): void {\n this.value = value;\n this.renderer.setProperty(this.inputEl, 'value', value ?? '');\n }\n\n @HostListener('input', ['$event'])\n protected onInput(e: Event): void {\n const el = e.target as HTMLInputElement;\n const selStart = el.selectionStart ?? 0;\n const { inputType, data } = e as InputEvent;\n this.maskInput({\n value: el.value,\n type: eventMap.get(inputType),\n change: data,\n pos: selStart,\n previous: this.value\n });\n\n this.value = el.value;\n this.onChange(this.value);\n }\n /** @internal */\n @HostListener('blur')\n protected blur(): void {\n this.leaveInput();\n this.onTouched();\n }\n /**\n * Allow to adjust the input value when leaving the input field.\n */\n protected leaveInput(): void {}\n /**\n * Enforce a format on user input.\n */\n protected abstract maskInput(e: AddrInputEvent): void;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { splitIpV4Sections } from './address-utils';\nimport { ipV4CIDRValidator, ipV4Validator } from './address-validators';\nimport { AddrInputEvent, SiIpInputDirective } from './si-ip-input.directive';\n\n/**\n * Directive for IPv4 address input fields.\n *\n * Usage:\n *\n * ```ts\n * import { SiFormItemComponent } from '@siemens/element-ng/form';\n * import { SiIp4InputDirective } from '@siemens/element-ng/ip-input';\n *\n * @Component({\n * template: `\n * <si-form-item label=\"IPv4 address\">\n * <input type=\"text\" class=\"form-control\" siIpV4 />\n * </si-form-item>\n * `,\n * imports: [SiFormItemComponent, SiIp4InputDirective, ...]\n * })\n * ```\n */\n@Directive({\n selector: 'input[siIpV4]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiIp4InputDirective,\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SiIp4InputDirective,\n multi: true\n }\n ],\n exportAs: 'siIpV4'\n})\nexport class SiIp4InputDirective\n extends SiIpInputDirective\n implements ControlValueAccessor, Validator\n{\n validate(control: AbstractControl): ValidationErrors | null {\n return this.cidr() ? ipV4CIDRValidator(control) : ipV4Validator(control);\n }\n /**\n * Trim leading zeros from each part of the IPv4 address\n */\n protected override leaveInput(): void {\n const trimmedValue = this.value\n ?.split('.')\n .map(part => part.replace(/^0+(\\d)/, '$1'))\n .join('.');\n if (this.value !== trimmedValue) {\n this.renderer.setProperty(this.inputEl, 'value', trimmedValue);\n this.onChange(trimmedValue);\n }\n }\n /** @internal */\n protected maskInput(e: AddrInputEvent): void {\n const { value, pos, type } = e;\n const ipv4 = splitIpV4Sections({ type, input: value, pos, cidr: this.cidr() });\n\n this.renderer.setProperty(this.inputEl, 'value', ipv4.value);\n const el = this.elementRef.nativeElement;\n if (value?.length === pos) {\n el.setSelectionRange(ipv4.value.length, ipv4.value.length);\n } else {\n const newPos = pos + ipv4.cursorDelta;\n el.setSelectionRange(newPos, newPos);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { computed, Directive } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { splitIpV6Sections } from './address-utils';\nimport { ipV6Validator } from './address-validators';\nimport { AddrInputEvent, SiIpInputDirective } from './si-ip-input.directive';\n\n/**\n * Directive for IPv6 address input fields.\n *\n * Usage:\n *\n * ```ts\n * import { SiFormItemComponent } from '@siemens/element-ng/form';\n * import { SiIp6InputDirective } from '@siemens/element-ng/ip-input';\n *\n * @Component({\n * template: `\n * <si-form-item label=\"IPv6 address\">\n * <input type=\"text\" class=\"form-control\" siIpV6 />\n * </si-form-item>\n * `,\n * imports: [SiFormItemComponent, SiIp6InputDirective, ...]\n * })\n * ```\n */\n@Directive({\n selector: 'input[siIpV6]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiIp6InputDirective,\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SiIp6InputDirective,\n multi: true\n }\n ],\n exportAs: 'siIpV6'\n})\nexport class SiIp6InputDirective\n extends SiIpInputDirective\n implements ControlValueAccessor, Validator\n{\n protected readonly validatorFn = computed(() =>\n ipV6Validator({ zeroCompression: true, cidr: this.cidr() })\n );\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.validatorFn()(control);\n }\n\n protected maskInput(e: AddrInputEvent): void {\n const { value, pos, type } = e;\n if (!value) {\n this.renderer.setProperty(this.inputEl, 'value', '');\n return;\n }\n\n const ipv6 = splitIpV6Sections({\n type,\n input: value,\n pos,\n zeroCompression: true,\n cidr: this.cidr()\n });\n this.renderer.setProperty(this.inputEl, 'value', ipv6.value);\n\n if (type === 'insert') {\n const el = this.elementRef.nativeElement;\n if (value?.length === pos) {\n el.setSelectionRange(ipv6.value.length, ipv6.value.length);\n } else {\n const newPos = pos + ipv6.cursorDelta;\n el.setSelectionRange(newPos, newPos);\n }\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-ip4-input.directive';\nexport * from './si-ip6-input.directive';\nexport * from './address-validators';\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-ip-input.mjs","sources":["../../../../projects/element-ng/ip-input/address-utils.ts","../../../../projects/element-ng/ip-input/address-validators.ts","../../../../projects/element-ng/ip-input/si-ip-input.directive.ts","../../../../projects/element-ng/ip-input/si-ip4-input.directive.ts","../../../../projects/element-ng/ip-input/si-ip6-input.directive.ts","../../../../projects/element-ng/ip-input/index.ts","../../../../projects/element-ng/ip-input/siemens-element-ng-ip-input.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\ninterface Section {\n value: string;\n current?: boolean;\n partNo?: number;\n /** Indicate this is a network mask. */\n mask?: boolean;\n}\n\nexport interface Ip4SplitOptions {\n type?: 'insert' | 'delete' | 'paste';\n input?: string | null;\n pos: number;\n cidr?: boolean;\n}\n\nexport interface Ip6SplitOptions {\n type?: 'insert' | 'delete' | 'paste';\n input?: string | null;\n pos: number;\n zeroCompression?: boolean;\n cidr?: boolean;\n}\n\nconst isDigit = (c: string): boolean => c >= '0' && c <= '9';\nconst isHex = (c: string): boolean => (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F');\n\nconst recursiveSplitIpV4 = (\n options: Ip4SplitOptions,\n input: string,\n sections: Section[] = [{ value: '', partNo: 0 }],\n index: number = 0,\n cursorDelta: number = 0\n): { sections: Section[]; cursorDelta: number } => {\n // Base case: no more input to process\n if (input.length === 0) {\n return { sections, cursorDelta };\n }\n const current = sections.at(-1)!;\n const char = input[0];\n input = input.substring(1);\n if (isDigit(char)) {\n const part = `${current.value}${char}`;\n const limit = current.mask ? 32 : 255;\n // Append digits to current part until the part limit exceeds\n if (part.length <= 3 && parseInt(part, 10) <= limit) {\n current.value = part;\n } else {\n // Base case: IP completely entered\n if ((options.cidr && current.mask) || (!options.cidr && current.partNo === 3)) {\n return { sections, cursorDelta };\n }\n // Force separators since the part exceeded his limit\n if (current.partNo === 3) {\n input = `/${char}${input.replace('.', '').replace('/', '')}`;\n } else {\n const dotIndex = input.indexOf('.');\n if (dotIndex >= 0) {\n input = input.substring(0, dotIndex) + input.substring(dotIndex + 1);\n }\n input = `.${char}${input}`;\n }\n // In case the cursor position is at the the position of the exceeded digit it is necessary\n // to move the cursor one position forward since a separator will be added before the digit\n if (index === options.pos) {\n cursorDelta = 1;\n }\n }\n } else if (char === '.' || char === '/') {\n // Handle separators\n if ('partNo' in current && current.partNo! < 3) {\n sections.push({ value: '.' }, { value: '', partNo: current.partNo! + 1 });\n } else if (options.cidr && !current.mask) {\n sections.push({ value: '/' }, { value: '', mask: true });\n }\n }\n\n return recursiveSplitIpV4(options, input, sections, index + 1, cursorDelta);\n};\n\n/**\n * Parse IPv4 input string into IPv4 address section array.\n */\nexport const splitIpV4Sections = (\n options: Ip4SplitOptions\n): { value: string; cursorDelta: number } => {\n const { input } = options;\n if (!input) {\n return { value: '', cursorDelta: 0 };\n }\n const { sections, cursorDelta } = recursiveSplitIpV4(options, input);\n return {\n value: sections.map(s => s.value).join(''),\n cursorDelta\n };\n};\n\nexport const splitIpV6Sections = (\n options: Ip6SplitOptions\n): { value: string; cursorDelta: number } => {\n const { type, input, pos, zeroCompression, cidr } = options;\n const sections: Section[] = [{ value: '' }];\n let cursorDelta = 0;\n if (!input) {\n return { value: '', cursorDelta: 0 };\n }\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charAt(i).toUpperCase();\n if (isHex(c)) {\n sections.at(-1)!.value += c;\n } else if (c === ':') {\n if (input.charAt(i - 1) === c) {\n // Merge :: characters\n sections.at(-2)!.value += c;\n } else {\n sections.push({ value: c }, { value: '' });\n }\n } else if (cidr && c === '/') {\n sections.push({ value: c }, { value: '', mask: true });\n }\n if (pos === i) {\n sections.at(-1)!.current = true;\n }\n }\n\n // Split values > FFFF in multiple sections:\n // - 1FFFF will be split into 1FFF and F\n for (let i = 0; i < sections.length; i++) {\n const { value, current } = sections[i];\n if (value.length > 4) {\n const append: Section[] = [];\n let charsProcessed = 0;\n for (let p = 0; p < value.length; p += 4) {\n const part = value.substring(p, p + 4);\n append.push({ value: part });\n if (part.length === 4) {\n append.push({ value: ':' });\n if (current && pos >= charsProcessed) {\n cursorDelta++;\n }\n }\n charsProcessed += 4;\n }\n\n sections.splice(i, 1, ...append);\n if (current) {\n sections[i + append.length - 1].current = true;\n }\n }\n }\n\n // Drop invalid zero compression indicators '::'\n const removeEnd = pos === input.length || type === 'paste';\n let matches = sections.filter(s => s.value.startsWith('::'));\n if (matches) {\n matches = removeEnd ? matches : matches.reverse();\n if (zeroCompression) {\n matches.shift();\n }\n // Only allow one occurrence of ::\n for (const drop of matches) {\n drop.value = drop.value.substring(1);\n }\n }\n\n // Ensure the that the CIDR divider is a slash\n if (cidr) {\n const startCidr = matches.length > 0 ? 13 : 15;\n if (startCidr < sections.length && sections[startCidr].value === ':') {\n sections[startCidr].value = '/';\n }\n const prefixPos = startCidr + 1;\n if (prefixPos < sections.length) {\n const prefixLength = sections[prefixPos].value;\n if (parseInt(prefixLength, 10) > 128) {\n sections[prefixPos].value = prefixLength.substring(0, 2);\n }\n }\n }\n\n const value = sections\n .splice(0, cidr ? 17 : 15)\n .map(s => s.value)\n .join('');\n return { value, cursorDelta };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nconst ipv4Regex =\n /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nconst ipv4CIDRRegex =\n /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\/([1-9]|1[0-9]|2[0-9]|3[0-2]))$/;\n\nconst ipV6Regex =\n /^((?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|:(?::[0-9A-Fa-f]{1,4}){1,7}|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|:(?:(?::[0-9A-Fa-f]{1,4}){1,6}))$/;\n/**\n * Validator factory for a IPV6 address.\n */\nexport const ipV6Validator = (options: {\n zeroCompression?: boolean;\n cidr?: boolean;\n}): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n const parts = value.split('/');\n const error = { ipv6Address: true };\n if (options.cidr) {\n if (parts.length < 2 || !validateSubnet(parts[1])) {\n return error;\n }\n } else {\n if (parts.length > 1) {\n return error;\n }\n }\n if (parts[0].split('::').length > (options.zeroCompression ? 2 : 1)) {\n return error;\n }\n if (!matchIpV6(parts[0])) {\n return error;\n }\n\n return null;\n };\n};\n\n/**\n * Validates a IPV4 address.\n */\nexport const ipV4Validator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const v = control.value;\n const valid = v === '' || v?.toString().match(ipv4Regex);\n return valid ? null : { ipv4Address: true };\n};\n\n/**\n * Validates a IPV4 address including CIDR.\n */\nexport const ipV4CIDRValidator: ValidatorFn = (\n control: AbstractControl\n): ValidationErrors | null => {\n const v = control.value;\n const valid = v === '' || v?.toString().match(ipv4CIDRRegex);\n return valid ? null : { ipv4Address: true };\n};\n\nconst validateSubnet = (cidr: string): boolean => {\n const subnet = parseInt(cidr, 10);\n return subnet > 0 && subnet <= 128;\n};\n\nconst matchIpV6 = (ip: string): boolean =>\n (ip === '::' || !!ip.match(ipV6Regex)) && !!URL.parse(`http://[${ip}]`);\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal\n} from '@angular/core';\nimport { SI_FORM_ITEM_CONTROL } from '@siemens/element-ng/form';\n\nconst eventMap = new Map<string, 'insert' | 'delete' | 'paste'>([\n ['insertText', 'insert'],\n ['insertFromPaste', 'paste'],\n ['deleteContentBackward', 'delete']\n]);\n\nexport interface AddrInputEvent {\n type?: 'insert' | 'delete' | 'paste';\n pos: number;\n change: string | null;\n value?: string | null;\n previous?: string | null;\n}\n\n/**\n * Base directive for ip address input fields.\n */\n@Directive({\n selector: 'input[siIpInput]',\n providers: [\n {\n provide: SI_FORM_ITEM_CONTROL,\n useExisting: SiIpInputDirective\n }\n ],\n host: {\n '[id]': 'id()',\n '[disabled]': 'disabled() || null',\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()'\n }\n})\nexport abstract class SiIpInputDirective {\n private static idCounter = 0;\n protected readonly elementRef = inject(ElementRef<HTMLInputElement>);\n protected readonly renderer = inject(Renderer2);\n protected readonly inputEl = this.elementRef.nativeElement;\n\n /**\n * @defaultValue\n * ```\n * `si-ip-input-${SiIpInputDirective.idCounter++}`\n * ```\n */\n readonly id = input(`si-ip-input-${SiIpInputDirective.idCounter++}`);\n\n /**\n * Enable CIDR (Classless Inter-Domain Routing) notation.\n * @defaultValue false\n */\n readonly cidr = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the ip address input is disabled.\n * @defaultValue false\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled' });\n\n private readonly disabledNgControl = signal(false);\n protected readonly disabled = computed(() => this.disabledInput() || this.disabledNgControl());\n protected onTouched: () => void = () => {};\n protected onChange: (value: any) => void = () => {};\n protected value?: string | null = '';\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledNgControl.set(isDisabled);\n }\n\n writeValue(value?: string | null): void {\n this.value = value;\n this.renderer.setProperty(this.inputEl, 'value', value ?? '');\n }\n\n protected onInput(e: Event): void {\n const el = e.target as HTMLInputElement;\n const selStart = el.selectionStart ?? 0;\n const { inputType, data } = e as InputEvent;\n this.maskInput({\n value: el.value,\n type: eventMap.get(inputType),\n change: data,\n pos: selStart,\n previous: this.value\n });\n\n this.value = el.value;\n this.onChange(this.value);\n }\n /** @internal */\n protected onBlur(): void {\n this.leaveInput();\n this.onTouched();\n }\n /**\n * Allow to adjust the input value when leaving the input field.\n */\n protected leaveInput(): void {}\n /**\n * Enforce a format on user input.\n */\n protected abstract maskInput(e: AddrInputEvent): void;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { splitIpV4Sections } from './address-utils';\nimport { ipV4CIDRValidator, ipV4Validator } from './address-validators';\nimport { AddrInputEvent, SiIpInputDirective } from './si-ip-input.directive';\n\n/**\n * Directive for IPv4 address input fields.\n *\n * Usage:\n *\n * ```ts\n * import { SiFormItemComponent } from '@siemens/element-ng/form';\n * import { SiIp4InputDirective } from '@siemens/element-ng/ip-input';\n *\n * @Component({\n * template: `\n * <si-form-item label=\"IPv4 address\">\n * <input type=\"text\" class=\"form-control\" siIpV4 />\n * </si-form-item>\n * `,\n * imports: [SiFormItemComponent, SiIp4InputDirective, ...]\n * })\n * ```\n */\n@Directive({\n selector: 'input[siIpV4]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiIp4InputDirective,\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SiIp4InputDirective,\n multi: true\n }\n ],\n exportAs: 'siIpV4'\n})\nexport class SiIp4InputDirective\n extends SiIpInputDirective\n implements ControlValueAccessor, Validator\n{\n validate(control: AbstractControl): ValidationErrors | null {\n return this.cidr() ? ipV4CIDRValidator(control) : ipV4Validator(control);\n }\n /**\n * Trim leading zeros from each part of the IPv4 address\n */\n protected override leaveInput(): void {\n const trimmedValue = this.value\n ?.split('.')\n .map(part => part.replace(/^0+(\\d)/, '$1'))\n .join('.');\n if (this.value !== trimmedValue) {\n this.renderer.setProperty(this.inputEl, 'value', trimmedValue);\n this.onChange(trimmedValue);\n }\n }\n /** @internal */\n protected maskInput(e: AddrInputEvent): void {\n const { value, pos, type } = e;\n const ipv4 = splitIpV4Sections({ type, input: value, pos, cidr: this.cidr() });\n\n this.renderer.setProperty(this.inputEl, 'value', ipv4.value);\n const el = this.elementRef.nativeElement;\n if (value?.length === pos) {\n el.setSelectionRange(ipv4.value.length, ipv4.value.length);\n } else {\n const newPos = pos + ipv4.cursorDelta;\n el.setSelectionRange(newPos, newPos);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { computed, Directive } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { splitIpV6Sections } from './address-utils';\nimport { ipV6Validator } from './address-validators';\nimport { AddrInputEvent, SiIpInputDirective } from './si-ip-input.directive';\n\n/**\n * Directive for IPv6 address input fields.\n *\n * Usage:\n *\n * ```ts\n * import { SiFormItemComponent } from '@siemens/element-ng/form';\n * import { SiIp6InputDirective } from '@siemens/element-ng/ip-input';\n *\n * @Component({\n * template: `\n * <si-form-item label=\"IPv6 address\">\n * <input type=\"text\" class=\"form-control\" siIpV6 />\n * </si-form-item>\n * `,\n * imports: [SiFormItemComponent, SiIp6InputDirective, ...]\n * })\n * ```\n */\n@Directive({\n selector: 'input[siIpV6]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiIp6InputDirective,\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SiIp6InputDirective,\n multi: true\n }\n ],\n exportAs: 'siIpV6'\n})\nexport class SiIp6InputDirective\n extends SiIpInputDirective\n implements ControlValueAccessor, Validator\n{\n protected readonly validatorFn = computed(() =>\n ipV6Validator({ zeroCompression: true, cidr: this.cidr() })\n );\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.validatorFn()(control);\n }\n\n protected maskInput(e: AddrInputEvent): void {\n const { value, pos, type } = e;\n if (!value) {\n this.renderer.setProperty(this.inputEl, 'value', '');\n return;\n }\n\n const ipv6 = splitIpV6Sections({\n type,\n input: value,\n pos,\n zeroCompression: true,\n cidr: this.cidr()\n });\n this.renderer.setProperty(this.inputEl, 'value', ipv6.value);\n\n if (type === 'insert') {\n const el = this.elementRef.nativeElement;\n if (value?.length === pos) {\n el.setSelectionRange(ipv6.value.length, ipv6.value.length);\n } else {\n const newPos = pos + ipv6.cursorDelta;\n el.setSelectionRange(newPos, newPos);\n }\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-ip4-input.directive';\nexport * from './si-ip6-input.directive';\nexport * from './address-validators';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}