@siemens/element-ng 49.12.0 → 51.0.0-rc.3

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 (233) 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 +56 -39
  5. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-action-modal.mjs +81 -51
  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 +170 -143
  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 +34 -33
  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 +18 -15
  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 +55 -32
  27. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
  28. package/fesm2022/siemens-element-ng-chat-messages.mjs +175 -111
  29. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  30. package/fesm2022/siemens-element-ng-circle-status.mjs +37 -24
  31. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-color-picker.mjs +24 -16
  33. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  34. package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +52 -33
  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 +35 -26
  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 +327 -213
  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 +358 -234
  50. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +21 -16
  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 +93 -81
  56. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-filter-bar.mjs +29 -22
  58. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-filtered-search.mjs +243 -147
  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 +289 -128
  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 +220 -315
  68. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  69. package/fesm2022/siemens-element-ng-header-dropdown.mjs +46 -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 +20 -16
  80. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
  81. package/fesm2022/siemens-element-ng-landing-page.mjs +118 -72
  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 +73 -54
  88. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  89. package/fesm2022/siemens-element-ng-loading-spinner.mjs +42 -33
  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 +46 -29
  94. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-markdown-renderer.mjs +6 -5
  96. package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
  97. package/fesm2022/siemens-element-ng-menu.mjs +56 -48
  98. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  99. package/fesm2022/siemens-element-ng-modal.mjs +12 -10
  100. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  101. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +133 -94
  102. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  103. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +117 -81
  104. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  105. package/fesm2022/siemens-element-ng-navbar.mjs +67 -41
  106. package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
  107. package/fesm2022/siemens-element-ng-notification-item.mjs +19 -11
  108. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  109. package/fesm2022/siemens-element-ng-number-input.mjs +38 -27
  110. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  111. package/fesm2022/siemens-element-ng-pagination.mjs +31 -20
  112. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  113. package/fesm2022/siemens-element-ng-password-strength.mjs +31 -22
  114. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  115. package/fesm2022/siemens-element-ng-password-toggle.mjs +18 -13
  116. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
  117. package/fesm2022/siemens-element-ng-phone-number.mjs +138 -134
  118. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  119. package/fesm2022/siemens-element-ng-photo-upload.mjs +76 -45
  120. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
  121. package/fesm2022/siemens-element-ng-pills-input.mjs +63 -58
  122. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  123. package/fesm2022/siemens-element-ng-popover-legacy.mjs +43 -28
  124. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  125. package/fesm2022/siemens-element-ng-popover.mjs +33 -26
  126. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  127. package/fesm2022/siemens-element-ng-progressbar.mjs +23 -16
  128. package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
  129. package/fesm2022/siemens-element-ng-resize-observer.mjs +32 -43
  130. package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
  131. package/fesm2022/siemens-element-ng-result-details-list.mjs +12 -10
  132. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  133. package/fesm2022/siemens-element-ng-search-bar.mjs +32 -24
  134. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
  135. package/fesm2022/siemens-element-ng-select.mjs +212 -154
  136. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  137. package/fesm2022/siemens-element-ng-shadow-root.mjs +3 -3
  138. package/fesm2022/siemens-element-ng-side-panel.mjs +119 -75
  139. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  140. package/fesm2022/siemens-element-ng-skip-links.mjs +14 -13
  141. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  142. package/fesm2022/siemens-element-ng-slider.mjs +42 -28
  143. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  144. package/fesm2022/siemens-element-ng-split.mjs +268 -254
  145. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  146. package/fesm2022/siemens-element-ng-status-bar.mjs +57 -47
  147. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  148. package/fesm2022/siemens-element-ng-status-counter.mjs +15 -11
  149. package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
  150. package/fesm2022/siemens-element-ng-status-toggle.mjs +22 -14
  151. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  152. package/fesm2022/siemens-element-ng-summary-chip.mjs +25 -16
  153. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  154. package/fesm2022/siemens-element-ng-summary-widget.mjs +27 -17
  155. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
  156. package/fesm2022/siemens-element-ng-system-banner.mjs +11 -8
  157. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
  158. package/fesm2022/siemens-element-ng-tabs-legacy.mjs +16 -15
  159. package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
  160. package/fesm2022/siemens-element-ng-tabs.mjs +88 -47
  161. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  162. package/fesm2022/siemens-element-ng-theme.mjs +5 -4
  163. package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
  164. package/fesm2022/siemens-element-ng-threshold.mjs +59 -40
  165. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  166. package/fesm2022/siemens-element-ng-toast-notification.mjs +45 -40
  167. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  168. package/fesm2022/siemens-element-ng-tooltip.mjs +218 -117
  169. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  170. package/fesm2022/siemens-element-ng-tour.mjs +28 -19
  171. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
  172. package/fesm2022/siemens-element-ng-translate.mjs +0 -1
  173. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  174. package/fesm2022/siemens-element-ng-tree-view.mjs +93 -74
  175. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  176. package/fesm2022/siemens-element-ng-typeahead.mjs +75 -67
  177. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  178. package/fesm2022/siemens-element-ng-wizard.mjs +72 -48
  179. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  180. package/formly-legacy/package.json +4 -0
  181. package/package.json +20 -22
  182. package/schematics/migration.json +4 -4
  183. package/schematics/migrations/data/class-member-replacement.js +1 -19
  184. package/schematics/migrations/data/component-property-names.js +1 -25
  185. package/schematics/migrations/data/element-class-changes.js +1 -28
  186. package/schematics/migrations/data/element-migration-data.js +2 -0
  187. package/schematics/migrations/data/element-selectors.js +1 -11
  188. package/schematics/migrations/data/index.js +0 -4
  189. package/schematics/migrations/data/migration-test-data.js +9 -6
  190. package/schematics/migrations/data/provider-function-removals.js +7 -0
  191. package/schematics/migrations/data/symbol-removals.js +7 -7
  192. package/schematics/migrations/data/symbol-renaming.js +1 -48
  193. package/schematics/migrations/element-migration/element-migration.js +3 -6
  194. package/schematics/migrations/utilities/import-removal.js +39 -0
  195. package/schematics/migrations/utilities/index.js +2 -0
  196. package/schematics/migrations/utilities/provider-function-removal.migration.js +116 -0
  197. package/schematics/ng-update/index.js +1 -1
  198. package/schematics/ng-update/{migrate-to-v49.js → migrate-to-v51.js} +2 -2
  199. package/template-i18n.json +3 -6
  200. package/types/siemens-element-ng-application-header.d.ts +13 -25
  201. package/types/siemens-element-ng-autocomplete.d.ts +19 -19
  202. package/types/siemens-element-ng-chat-messages.d.ts +6 -4
  203. package/types/siemens-element-ng-circle-status.d.ts +1 -1
  204. package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
  205. package/types/siemens-element-ng-datepicker.d.ts +1 -12
  206. package/types/siemens-element-ng-file-uploader.d.ts +5 -23
  207. package/types/siemens-element-ng-filtered-search.d.ts +1 -1
  208. package/types/siemens-element-ng-form.d.ts +135 -40
  209. package/types/siemens-element-ng-formly-legacy.d.ts +40 -0
  210. package/types/siemens-element-ng-formly.d.ts +34 -167
  211. package/types/siemens-element-ng-header-dropdown.d.ts +5 -0
  212. package/types/siemens-element-ng-icon.d.ts +2 -19
  213. package/types/siemens-element-ng-navbar-vertical-next.d.ts +6 -1
  214. package/types/siemens-element-ng-notification-item.d.ts +12 -0
  215. package/types/siemens-element-ng-phone-number.d.ts +6 -9
  216. package/types/siemens-element-ng-resize-observer.d.ts +0 -17
  217. package/types/siemens-element-ng-split.d.ts +95 -63
  218. package/types/siemens-element-ng-status-bar.d.ts +5 -13
  219. package/types/siemens-element-ng-status-counter.d.ts +1 -1
  220. package/types/siemens-element-ng-tabs.d.ts +4 -0
  221. package/types/siemens-element-ng-toast-notification.d.ts +0 -1
  222. package/types/siemens-element-ng-tooltip.d.ts +10 -26
  223. package/types/siemens-element-ng-translate.d.ts +1 -5
  224. package/fesm2022/siemens-element-ng-icon-status.mjs +0 -46
  225. package/fesm2022/siemens-element-ng-icon-status.mjs.map +0 -1
  226. package/fesm2022/siemens-element-ng-sort-bar.mjs +0 -99
  227. package/fesm2022/siemens-element-ng-sort-bar.mjs.map +0 -1
  228. package/icon-status/package.json +0 -4
  229. package/schematics/vitest-setup.js +0 -5
  230. package/sort-bar/package.json +0 -4
  231. package/types/siemens-element-ng-icon-status.d.ts +0 -25
  232. package/types/siemens-element-ng-sort-bar.d.ts +0 -59
  233. /package/{LICENSE.md → LICENSE} +0 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) Siemens 2016 - 2026
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import ts from 'typescript';
6
+ /**
7
+ * Builds an edit that removes the given named import specifiers from an import
8
+ * declaration.
9
+ *
10
+ * If no specifiers remain after the removal, the whole import declaration is removed
11
+ * (including its trailing newline). Otherwise the import is rebuilt without the removed
12
+ * specifiers while preserving the remaining specifiers and their aliases.
13
+ */
14
+ export const removeImportSpecifiers = (sourceFile, importDeclaration, specifiers) => {
15
+ const namedBindings = importDeclaration.importClause?.namedBindings;
16
+ const remainingElements = namedBindings && ts.isNamedImports(namedBindings)
17
+ ? namedBindings.elements.filter(element => !specifiers.includes(element))
18
+ : [];
19
+ if (remainingElements.length === 0) {
20
+ // No named binding remains: remove the whole import declaration including the
21
+ // trailing newline so no empty line is left behind.
22
+ const start = importDeclaration.getStart(sourceFile);
23
+ let end = importDeclaration.getEnd();
24
+ const fullText = sourceFile.getFullText();
25
+ if (fullText[end] === '\r') {
26
+ end++;
27
+ }
28
+ if (fullText[end] === '\n') {
29
+ end++;
30
+ }
31
+ return { start, width: end - start };
32
+ }
33
+ const updatedImport = ts.factory.createImportDeclaration(importDeclaration.modifiers, ts.factory.createImportClause(importDeclaration.importClause.isTypeOnly, importDeclaration.importClause.name, ts.factory.createNamedImports(remainingElements.map(element => ts.factory.createImportSpecifier(element.isTypeOnly, element.propertyName, element.name)))), importDeclaration.moduleSpecifier, importDeclaration.attributes);
34
+ return {
35
+ start: importDeclaration.getStart(sourceFile),
36
+ width: importDeclaration.getWidth(sourceFile),
37
+ newNode: updatedImport
38
+ };
39
+ };
@@ -9,4 +9,6 @@ export * from './component-property-name.migration.js';
9
9
  export * from './element-selector.migration.js';
10
10
  export * from './symbol-renaming.migration.js';
11
11
  export * from './symbol-removal.migration.js';
12
+ export * from './provider-function-removal.migration.js';
13
+ export * from './import-removal.js';
12
14
  export * from './migration.interface.js';
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Copyright (c) Siemens 2016 - 2026
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import ts from 'typescript';
6
+ import { getImportSpecifiers } from '../../utils/index.js';
7
+ import { removeImportSpecifiers } from './import-removal.js';
8
+ export const applyProviderFunctionRemovalMigration = (context, changes) => {
9
+ const { discoveredSourceFile, recorder } = context;
10
+ if (!changes?.length) {
11
+ return;
12
+ }
13
+ const { sourceFile } = discoveredSourceFile;
14
+ const edits = [];
15
+ for (const change of changes) {
16
+ const importSpecifiers = getImportSpecifiers(sourceFile, change.module, change.names);
17
+ if (!importSpecifiers.length) {
18
+ continue;
19
+ }
20
+ // Local names as they are used in the file (respecting import aliases).
21
+ const localNames = new Set(importSpecifiers.map(specifier => specifier.name.text));
22
+ const removedCall = collectArrayElementRemovals(sourceFile, localNames, edits);
23
+ // Only remove the import if at least one call was actually removed from a provider array.
24
+ if (removedCall) {
25
+ // Group the matched specifiers by their import declaration so a single edit is
26
+ // produced per declaration, even when multiple names are removed at once.
27
+ const specifiersByImport = new Map();
28
+ for (const specifier of importSpecifiers) {
29
+ const importDeclaration = specifier.parent.parent.parent;
30
+ if (!ts.isImportDeclaration(importDeclaration)) {
31
+ continue;
32
+ }
33
+ const existing = specifiersByImport.get(importDeclaration) ?? [];
34
+ existing.push(specifier);
35
+ specifiersByImport.set(importDeclaration, existing);
36
+ }
37
+ for (const [importDeclaration, specifiers] of specifiersByImport) {
38
+ edits.push(removeImportSpecifiers(sourceFile, importDeclaration, specifiers));
39
+ }
40
+ }
41
+ }
42
+ if (!edits.length) {
43
+ return;
44
+ }
45
+ const printer = ts.createPrinter();
46
+ // Apply edits from bottom to top so earlier offsets stay valid.
47
+ edits.sort((a, b) => b.start - a.start);
48
+ for (const edit of edits) {
49
+ recorder.remove(edit.start, edit.width);
50
+ if (edit.newNode) {
51
+ recorder.insertLeft(edit.start, printer.printNode(ts.EmitHint.Unspecified, edit.newNode, sourceFile));
52
+ }
53
+ }
54
+ };
55
+ /**
56
+ * Finds all call expressions of the given local names that appear as direct elements of
57
+ * an array literal (e.g. a `providers: [...]` array) and records removal edits covering
58
+ * the call together with its adjacent comma and surrounding whitespace.
59
+ *
60
+ * @returns `true` if at least one call was scheduled for removal.
61
+ */
62
+ const collectArrayElementRemovals = (sourceFile, localNames, edits) => {
63
+ let removed = false;
64
+ const visit = (node) => {
65
+ if (ts.isCallExpression(node) &&
66
+ ts.isIdentifier(node.expression) &&
67
+ localNames.has(node.expression.text) &&
68
+ ts.isArrayLiteralExpression(node.parent)) {
69
+ edits.push(getArrayElementRemovalRange(sourceFile, node.parent, node));
70
+ removed = true;
71
+ }
72
+ ts.forEachChild(node, visit);
73
+ };
74
+ visit(sourceFile);
75
+ return removed;
76
+ };
77
+ /**
78
+ * Computes the removal range for a single element of an array literal so that the
79
+ * remaining array stays syntactically valid (no dangling commas).
80
+ */
81
+ const getArrayElementRemovalRange = (sourceFile, array, element) => {
82
+ const elements = array.elements;
83
+ const index = elements.indexOf(element);
84
+ const text = sourceFile.getFullText();
85
+ const elementStart = element.getStart(sourceFile);
86
+ const elementEnd = element.getEnd();
87
+ const isLast = index === elements.length - 1;
88
+ if (!isLast) {
89
+ // Remove up to (and including) the comma before the next element, plus the
90
+ // whitespace that follows it.
91
+ let end = elementEnd;
92
+ while (end < text.length && text[end] !== ',') {
93
+ end++;
94
+ }
95
+ // Skip the comma itself.
96
+ if (text[end] === ',') {
97
+ end++;
98
+ }
99
+ // Skip whitespace before the next element.
100
+ while (end < text.length && /\s/.test(text[end])) {
101
+ end++;
102
+ }
103
+ return { start: elementStart, width: end - elementStart };
104
+ }
105
+ // Last element: also remove the comma and whitespace that precede it, so the previous
106
+ // element does not end up with a trailing comma.
107
+ let start = elementStart;
108
+ let cursor = elementStart - 1;
109
+ while (cursor >= 0 && /\s/.test(text[cursor])) {
110
+ cursor--;
111
+ }
112
+ if (cursor >= 0 && text[cursor] === ',') {
113
+ start = cursor;
114
+ }
115
+ return { start, width: elementEnd - start };
116
+ };
@@ -2,4 +2,4 @@
2
2
  * Copyright (c) Siemens 2016 - 2026
3
3
  * SPDX-License-Identifier: MIT
4
4
  */
5
- export { migrateToV49 } from './migrate-to-v49.js';
5
+ export { migrateToV51 } from './migrate-to-v51.js';
@@ -7,9 +7,9 @@ import { getElementMigrationData } from '../migrations/data/index.js';
7
7
  import { elementMigrationRule } from '../migrations/element-migration/element-migration.js';
8
8
  import { iconPathMigrationRule } from '../migrations/icon-path-migration/index.js';
9
9
  import { missingTranslateMigrationRule } from '../migrations/ngx-translate/index.js';
10
- export const migrateToV49 = () => {
10
+ export const migrateToV51 = () => {
11
11
  return (tree, context) => {
12
- context.logger.info('🚀 Starting update from version 48 to 49...');
12
+ context.logger.info('🚀 Starting update from version 49 to 51...');
13
13
  const migrationData = getElementMigrationData();
14
14
  const options = { path: '/' };
15
15
  return chain([
@@ -5,7 +5,7 @@
5
5
  "SI_APPLICATION_HEADER.LAUNCHPAD": "Launchpad",
6
6
  "SI_APPLICATION_HEADER.TOGGLE_ACTIONS": "Toggle actions",
7
7
  "SI_APPLICATION_HEADER.TOGGLE_NAVIGATION": "Toggle navigation",
8
- "SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT": "Remove attachment",
8
+ "SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT": "Remove {{attachment}}",
9
9
  "SI_BREADCRUMB": "Breadcrumbs",
10
10
  "SI_BREADCRUMB_ROUTER_LABEL": "breadcrumb",
11
11
  "SI_CAROUSEL.NEXT": "Next slide",
@@ -103,10 +103,9 @@
103
103
  "SI_FILE_UPLOADER.ACCEPTED_FILE_TYPES": "Accepted file types: {{accept}}.",
104
104
  "SI_FILE_UPLOADER.CANCEL": "Cancel",
105
105
  "SI_FILE_UPLOADER.CLEAR": "Clear",
106
- "SI_FILE_UPLOADER.DROP": "Drop files here or",
106
+ "SI_FILE_UPLOADER.DROP": "Drop files here or click to upload",
107
107
  "SI_FILE_UPLOADER.ERROR_FILE_SIZE_EXCEEDED": "File exceeds allowed maximum size of {{maxFileSize}}",
108
108
  "SI_FILE_UPLOADER.ERROR_FILE_TYPE": "Incorrect file type selected",
109
- "SI_FILE_UPLOADER.FILE_SELECT": "click to upload",
110
109
  "SI_FILE_UPLOADER.MAX_FILE_REACHED": "Max. {{maxFiles}} files",
111
110
  "SI_FILE_UPLOADER.MAX_SIZE": "Max. {{maxFileSize}} upload size.",
112
111
  "SI_FILE_UPLOADER.REMOVE": "Remove",
@@ -221,11 +220,9 @@
221
220
  "SI_SLIDER.DECREMENT": "Decrement",
222
221
  "SI_SLIDER.INCREMENT": "Increment",
223
222
  "SI_SLIDER.LABEL": "Value",
224
- "SI_SORT_BAR.TITLE": "Sort by",
225
223
  "SI_STATUS_BAR.ALL_OK": "All OK",
226
- "SI_STATUS_BAR.COLLAPSE": "Collapse",
227
- "SI_STATUS_BAR.EXPAND": "Expand",
228
224
  "SI_STATUS_BAR.MUTE": "Mute/unmute",
225
+ "SI_STATUS_BAR.TOGGLE": "Toggle",
229
226
  "SI_THRESHOLD.ADD": "Add step",
230
227
  "SI_THRESHOLD.DELETE": "Delete step",
231
228
  "SI_THRESHOLD.INPUT_LABEL": "Threshold value",
@@ -1,7 +1,7 @@
1
1
  import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
2
2
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
3
3
  import * as _angular_core from '@angular/core';
4
- import { OnDestroy, TemplateRef, Injector, OnInit, OnChanges, SimpleChanges } from '@angular/core';
4
+ import { OnDestroy, TemplateRef, Injector, OnInit, OnChanges, Signal, ElementRef, SimpleChanges } from '@angular/core';
5
5
  import { HeaderWithDropdowns, SiHeaderDropdownTriggerDirective } from '@siemens/element-ng/header-dropdown';
6
6
  import { Subject } from 'rxjs';
7
7
  import * as _siemens_element_ng_application_header from '@siemens/element-ng/application-header';
@@ -147,10 +147,16 @@ declare abstract class SiHeaderActionIconItemBase extends SiHeaderActionItemBase
147
147
  * - =true, an empty red dot will be shown
148
148
  */
149
149
  readonly badge: _angular_core.InputSignal<number | boolean | null | undefined>;
150
- protected readonly badgeDot: _angular_core.Signal<boolean>;
151
- protected readonly badgeValue: _angular_core.Signal<string | undefined>;
150
+ protected abstract readonly itemTitle: Signal<string | ElementRef<Element>>;
151
+ private readonly tooltipService;
152
+ private readonly elementRef;
153
+ private readonly existingTooltip;
154
+ protected readonly badgeDot: Signal<boolean>;
155
+ protected readonly badgeValue: Signal<string | undefined>;
156
+ constructor();
157
+ private setupTooltip;
152
158
  ngOnChanges(changes: SimpleChanges<this>): void;
153
- protected get visuallyHideTitle(): boolean;
159
+ protected readonly visuallyHideTitle: Signal<boolean>;
154
160
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiHeaderActionIconItemBase, never>;
155
161
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiHeaderActionIconItemBase, never, never, { "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
156
162
  }
@@ -159,6 +165,7 @@ declare abstract class SiHeaderActionIconItemBase extends SiHeaderActionItemBase
159
165
  declare class SiHeaderActionItemComponent extends SiHeaderActionIconItemBase {
160
166
  /** The icon to be shown. */
161
167
  readonly icon: _angular_core.InputSignal<string>;
168
+ protected readonly itemTitle: _angular_core.Signal<ElementRef<HTMLElement>>;
162
169
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiHeaderActionItemComponent, never>;
163
170
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiHeaderActionItemComponent, "button[si-header-action-item], a[si-header-action-item]", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; }, {}, never, ["si-avatar", "*"], true, never>;
164
171
  }
@@ -171,6 +178,7 @@ declare class SiHeaderAccountItemComponent extends SiHeaderActionIconItemBase {
171
178
  readonly initials: _angular_core.InputSignal<string | undefined>;
172
179
  /** URL to an image which should be shown instead of the initials. */
173
180
  readonly imageUrl: _angular_core.InputSignal<string | undefined>;
181
+ protected readonly itemTitle: _angular_core.InputSignal<string>;
174
182
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiHeaderAccountItemComponent, never>;
175
183
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiHeaderAccountItemComponent, "button[si-header-account-item]", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
176
184
  }
@@ -197,26 +205,6 @@ declare class SiHeaderLogoDirective implements OnInit {
197
205
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiHeaderLogoDirective, "si-header-logo, [siHeaderLogo]", never, {}, {}, never, never, true, never>;
198
206
  }
199
207
 
200
- /**
201
- * The siemens logo.
202
- * Should be located inside `.header-brand`.
203
- *
204
- * @deprecated Use the {@link SiHeaderLogoDirective} instead.
205
- * The new component will use the logo provided by the global theme instead
206
- * of containing a hard coded siemens logo.
207
- * ```html
208
- * // previous
209
- * <a si-header-siemens-logo routerLink="/" aria-label="Siemens" class="d-none d-md-flex"></a>
210
- * // new
211
- * <a siHeaderLogo routerLink="/" class="d-none d-md-flex"></a>
212
- * ```
213
- *
214
- */
215
- declare class SiHeaderSiemensLogoComponent extends SiHeaderLogoDirective {
216
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiHeaderSiemensLogoComponent, never>;
217
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiHeaderSiemensLogoComponent, "si-header-siemens-logo, [si-header-siemens-logo]", never, {}, {}, never, never, true, never>;
218
- }
219
-
220
208
  declare class SiHeaderActionsDirective {
221
209
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiHeaderActionsDirective, never>;
222
210
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiHeaderActionsDirective, "si-header-actions", never, {}, {}, never, never, true, never>;
@@ -371,5 +359,5 @@ declare class SiLaunchpadFactoryComponent {
371
359
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiLaunchpadFactoryComponent, "si-launchpad-factory", never, { "closeText": { "alias": "closeText"; "required": false; "isSignal": true; }; "titleText": { "alias": "titleText"; "required": false; "isSignal": true; }; "subtitleText": { "alias": "subtitleText"; "required": false; "isSignal": true; }; "apps": { "alias": "apps"; "required": true; "isSignal": true; }; "enableFavorites": { "alias": "enableFavorites"; "required": false; "isSignal": true; }; "favoriteAppsText": { "alias": "favoriteAppsText"; "required": false; "isSignal": true; }; "showMoreAppsText": { "alias": "showMoreAppsText"; "required": false; "isSignal": true; }; "showLessAppsText": { "alias": "showLessAppsText"; "required": false; "isSignal": true; }; }, { "favoriteChange": "favoriteChange"; }, never, never, true, never>;
372
360
  }
373
361
 
374
- export { SiAccountDetailsComponent, SiApplicationHeaderComponent, SiHeaderAccountItemComponent, SiHeaderActionItemComponent, SiHeaderActionsDirective, SiHeaderBrandDirective, SiHeaderCollapsibleActionsComponent, SiHeaderLogoDirective, SiHeaderNavigationComponent, SiHeaderNavigationItemComponent, SiHeaderSelectionItemComponent, SiHeaderSiemensLogoComponent, SiLaunchpadFactoryComponent };
362
+ export { SiAccountDetailsComponent, SiApplicationHeaderComponent, SiHeaderAccountItemComponent, SiHeaderActionItemComponent, SiHeaderActionsDirective, SiHeaderBrandDirective, SiHeaderCollapsibleActionsComponent, SiHeaderLogoDirective, SiHeaderNavigationComponent, SiHeaderNavigationItemComponent, SiHeaderSelectionItemComponent, SiLaunchpadFactoryComponent };
375
363
  export type { App, AppBase, AppCategory, AppLink, AppRouterLink, FavoriteChangeEvent };
@@ -1,4 +1,4 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { OnInit } from '@angular/core';
3
3
  import { Highlightable } from '@angular/cdk/a11y';
4
4
 
@@ -12,30 +12,30 @@ declare class SiAutocompleteOptionDirective<T = unknown> implements Highlightabl
12
12
  * `__si-autocomplete-option-${SiAutocompleteOptionDirective.idCounter++}`
13
13
  * ```
14
14
  */
15
- readonly id: i0.InputSignal<string>;
15
+ readonly id: _angular_core.InputSignal<string>;
16
16
  /** @defaultValue false */
17
- readonly disabledInput: i0.InputSignalWithTransform<boolean, unknown>;
17
+ readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
18
18
  get disabled(): boolean;
19
19
  /** @defaultValue undefined */
20
- readonly value: i0.InputSignal<T | undefined>;
21
- protected active?: boolean;
20
+ readonly value: _angular_core.InputSignal<T | undefined>;
21
+ protected readonly active: _angular_core.WritableSignal<boolean>;
22
22
  protected click(): void;
23
23
  /** @internal */
24
24
  setActiveStyles(): void;
25
25
  /** @internal */
26
26
  setInactiveStyles(): void;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteOptionDirective<any>, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutocompleteOptionDirective<any>, "[siAutocompleteOption]", ["siAutocompleteOption"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "siAutocompleteOption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
27
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAutocompleteOptionDirective<any>, never>;
28
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiAutocompleteOptionDirective<any>, "[siAutocompleteOption]", ["siAutocompleteOption"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "siAutocompleteOption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
29
  }
30
30
 
31
31
  declare class SiAutocompleteDirective<T> {
32
32
  /** @internal */
33
- readonly listbox: i0.WritableSignal<SiAutocompleteListboxDirective<T> | undefined>;
33
+ readonly listbox: _angular_core.WritableSignal<SiAutocompleteListboxDirective<T> | undefined>;
34
34
  protected get activeDescendant(): string;
35
35
  protected keydown(event: KeyboardEvent): void;
36
36
  get active(): SiAutocompleteOptionDirective<T> | undefined | null;
37
- static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteDirective<any>, never>;
38
- static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutocompleteDirective<any>, "input[siAutocomplete]", ["siAutocomplete"], {}, {}, never, never, true, never>;
37
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAutocompleteDirective<any>, never>;
38
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiAutocompleteDirective<any>, "input[siAutocomplete]", ["siAutocomplete"], {}, {}, never, never, true, never>;
39
39
  }
40
40
 
41
41
  declare class SiAutocompleteListboxDirective<T> implements OnInit {
@@ -47,11 +47,11 @@ declare class SiAutocompleteListboxDirective<T> implements OnInit {
47
47
  * `__si-autocomplete-listbox-${SiAutocompleteListboxDirective.idCounter++}`
48
48
  * ```
49
49
  */
50
- readonly id: i0.InputSignal<string>;
51
- readonly autocomplete: i0.InputSignal<SiAutocompleteDirective<T>>;
50
+ readonly id: _angular_core.InputSignal<string>;
51
+ readonly autocomplete: _angular_core.InputSignal<SiAutocompleteDirective<T>>;
52
52
  /** @defaultValue 0 */
53
- readonly siAutocompleteDefaultIndex: i0.InputSignal<number>;
54
- readonly siAutocompleteOptionSubmitted: i0.OutputEmitterRef<T | undefined>;
53
+ readonly siAutocompleteDefaultIndex: _angular_core.InputSignal<number>;
54
+ readonly siAutocompleteOptionSubmitted: _angular_core.OutputEmitterRef<T | undefined>;
55
55
  private injector;
56
56
  private keyManager;
57
57
  private changeDetectorRef;
@@ -62,14 +62,14 @@ declare class SiAutocompleteListboxDirective<T> implements OnInit {
62
62
  /** @internal */
63
63
  onKeydown(event: KeyboardEvent): void;
64
64
  get active(): SiAutocompleteOptionDirective<T> | null;
65
- static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteListboxDirective<any>, never>;
66
- static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutocompleteListboxDirective<any>, "[siAutocompleteListboxFor]", ["siAutocompleteListbox"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "siAutocompleteListboxFor"; "required": true; "isSignal": true; }; "siAutocompleteDefaultIndex": { "alias": "siAutocompleteDefaultIndex"; "required": false; "isSignal": true; }; }, { "siAutocompleteOptionSubmitted": "siAutocompleteOptionSubmitted"; }, ["options"], never, true, never>;
65
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAutocompleteListboxDirective<any>, never>;
66
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiAutocompleteListboxDirective<any>, "[siAutocompleteListboxFor]", ["siAutocompleteListbox"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "siAutocompleteListboxFor"; "required": true; "isSignal": true; }; "siAutocompleteDefaultIndex": { "alias": "siAutocompleteDefaultIndex"; "required": false; "isSignal": true; }; }, { "siAutocompleteOptionSubmitted": "siAutocompleteOptionSubmitted"; }, ["options"], never, true, never>;
67
67
  }
68
68
 
69
69
  declare class SiAutocompleteModule {
70
- static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteModule, never>;
71
- static ɵmod: i0.ɵɵNgModuleDeclaration<SiAutocompleteModule, never, [typeof SiAutocompleteDirective, typeof SiAutocompleteListboxDirective, typeof SiAutocompleteOptionDirective], [typeof SiAutocompleteDirective, typeof SiAutocompleteListboxDirective, typeof SiAutocompleteOptionDirective]>;
72
- static ɵinj: i0.ɵɵInjectorDeclaration<SiAutocompleteModule>;
70
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAutocompleteModule, never>;
71
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiAutocompleteModule, never, [typeof SiAutocompleteDirective, typeof SiAutocompleteListboxDirective, typeof SiAutocompleteOptionDirective], [typeof SiAutocompleteDirective, typeof SiAutocompleteListboxDirective, typeof SiAutocompleteOptionDirective]>;
72
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiAutocompleteModule>;
73
73
  }
74
74
 
75
75
  export { SiAutocompleteDirective, SiAutocompleteListboxDirective, SiAutocompleteModule, SiAutocompleteOptionDirective };
@@ -168,11 +168,12 @@ declare class SiAttachmentListComponent {
168
168
  */
169
169
  readonly removable: _angular_core.InputSignalWithTransform<boolean, unknown>;
170
170
  /**
171
- * Label for remove attachment button
171
+ * Label for remove attachment button.
172
+ * The attachment name is available with `{{attachment}}`.
172
173
  *
173
174
  * @defaultValue
174
175
  * ```
175
- * t(() => $localize`:@@SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT:Remove attachment`)
176
+ * t(() => $localize`:@@SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT:Remove {{attachment}}`)
176
177
  * ```
177
178
  */
178
179
  readonly removeLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
@@ -449,11 +450,12 @@ declare class SiChatInputComponent implements AfterViewInit {
449
450
  */
450
451
  readonly attachFileLabel: _angular_core.InputSignal<TranslatableString$1>;
451
452
  /**
452
- * Remove attachment aria label prefix
453
+ * Remove attachment aria label.
454
+ * The attachment name is available with `{{attachment}}`.
453
455
  *
454
456
  * @defaultValue
455
457
  * ```
456
- * t(() => $localize`:@@SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT:Remove attachment`)
458
+ * t(() => $localize`:@@SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT:Remove {{attachment}}`)
457
459
  * ```
458
460
  */
459
461
  readonly removeAttachmentLabel: _angular_core.InputSignal<TranslatableString$1>;
@@ -25,7 +25,7 @@ declare class SiCircleStatusComponent implements OnChanges, OnDestroy {
25
25
  *
26
26
  * @defaultValue 'regular'
27
27
  */
28
- readonly size: _angular_core.InputSignal<"regular" | "small">;
28
+ readonly size: _angular_core.InputSignal<"small" | "regular">;
29
29
  /**
30
30
  * event direction is out
31
31
  *
@@ -283,7 +283,7 @@ declare class SiDateRangeFilterComponent implements OnChanges {
283
283
  protected readonly advancedMode: _angular_core.WritableSignal<boolean>;
284
284
  protected readonly dateRange: _angular_core.WritableSignal<DateRange>;
285
285
  protected readonly point1Now: _angular_core.WritableSignal<boolean>;
286
- protected readonly point2Mode: _angular_core.WritableSignal<"duration" | "date">;
286
+ protected readonly point2Mode: _angular_core.WritableSignal<"date" | "duration">;
287
287
  protected readonly point1date: _angular_core.WritableSignal<Date>;
288
288
  protected readonly point2date: _angular_core.WritableSignal<Date>;
289
289
  protected readonly point2offset: _angular_core.WritableSignal<number>;
@@ -334,16 +334,6 @@ declare class SiDatepickerComponent implements OnInit, OnChanges, AfterViewInit
334
334
  * ```
335
335
  */
336
336
  readonly nextLabel: _angular_core.InputSignal<TranslatableString>;
337
- /**
338
- * Aria label for week number column
339
- *
340
- * @deprecated Use `calendarWeekLabel` instead.
341
- * @defaultValue
342
- * ```
343
- * t(() => $localize`:@@SI_DATEPICKER.CALENDAR_WEEK_LABEL:Calendar week`)
344
- * ```
345
- */
346
- readonly calenderWeekLabel: _angular_core.InputSignal<TranslatableString | undefined>;
347
337
  /**
348
338
  * Aria label for week number column
349
339
  *
@@ -353,7 +343,6 @@ declare class SiDatepickerComponent implements OnInit, OnChanges, AfterViewInit
353
343
  * ```
354
344
  */
355
345
  readonly calendarWeekLabel: _angular_core.InputSignal<TranslatableString>;
356
- protected readonly derivedWeekLabel: _angular_core.Signal<TranslatableString>;
357
346
  /**
358
347
  * Enable/disable 12H mode in timepicker. Defaults to locale
359
348
  *
@@ -500,7 +489,7 @@ declare class SiDatepickerComponent implements OnInit, OnChanges, AfterViewInit
500
489
  focusActiveCell(): void;
501
490
  protected onActiveHoverChange(event?: Cell): void;
502
491
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiDatepickerComponent, never>;
503
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDatepickerComponent, "si-datepicker", never, { "focusedDate": { "alias": "focusedDate"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "dateRange": { "alias": "dateRange"; "required": false; "isSignal": true; }; "dateRangeRole": { "alias": "dateRangeRole"; "required": false; "isSignal": true; }; "initialFocus": { "alias": "initialFocus"; "required": false; "isSignal": true; }; "disabledTime": { "alias": "disabledTime"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "calenderWeekLabel": { "alias": "calenderWeekLabel"; "required": false; "isSignal": true; }; "calendarWeekLabel": { "alias": "calendarWeekLabel"; "required": false; "isSignal": true; }; "time12h": { "alias": "time12h"; "required": false; "isSignal": true; }; "rangeType": { "alias": "rangeType"; "required": false; "isSignal": true; }; "minMonth": { "alias": "minMonth"; "required": false; "isSignal": true; }; "maxMonth": { "alias": "maxMonth"; "required": false; "isSignal": true; }; "hideTimeToggle": { "alias": "hideTimeToggle"; "required": false; "isSignal": true; }; "hideCalendar": { "alias": "hideCalendar"; "required": false; "isSignal": true; }; "timepickerLabel": { "alias": "timepickerLabel"; "required": false; "isSignal": true; }; "activeHover": { "alias": "activeHover"; "required": false; "isSignal": true; }; }, { "focusedDate": "focusedDateChange"; "date": "dateChange"; "dateRange": "dateRangeChange"; "disabledTime": "disabledTimeChange"; "config": "configChange"; "rangeType": "rangeTypeChange"; "activeHover": "activeHoverChange"; }, never, never, true, never>;
492
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDatepickerComponent, "si-datepicker", never, { "focusedDate": { "alias": "focusedDate"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "dateRange": { "alias": "dateRange"; "required": false; "isSignal": true; }; "dateRangeRole": { "alias": "dateRangeRole"; "required": false; "isSignal": true; }; "initialFocus": { "alias": "initialFocus"; "required": false; "isSignal": true; }; "disabledTime": { "alias": "disabledTime"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "calendarWeekLabel": { "alias": "calendarWeekLabel"; "required": false; "isSignal": true; }; "time12h": { "alias": "time12h"; "required": false; "isSignal": true; }; "rangeType": { "alias": "rangeType"; "required": false; "isSignal": true; }; "minMonth": { "alias": "minMonth"; "required": false; "isSignal": true; }; "maxMonth": { "alias": "maxMonth"; "required": false; "isSignal": true; }; "hideTimeToggle": { "alias": "hideTimeToggle"; "required": false; "isSignal": true; }; "hideCalendar": { "alias": "hideCalendar"; "required": false; "isSignal": true; }; "timepickerLabel": { "alias": "timepickerLabel"; "required": false; "isSignal": true; }; "activeHover": { "alias": "activeHover"; "required": false; "isSignal": true; }; }, { "focusedDate": "focusedDateChange"; "date": "dateChange"; "dateRange": "dateRangeChange"; "disabledTime": "disabledTimeChange"; "config": "configChange"; "rangeType": "rangeTypeChange"; "activeHover": "activeHoverChange"; }, never, never, true, never>;
504
493
  }
505
494
 
506
495
  declare class SiDatepickerOverlayComponent implements OnChanges, OnInit, OnDestroy {
@@ -128,20 +128,11 @@ declare class SiFileUploadDirective {
128
128
 
129
129
  declare class SiFileDropzoneComponent {
130
130
  /**
131
- * Text or translation key of the input file selector (is combined with the `uploadTextRest`).
131
+ * Text or translation key of the drag&drop field.
132
132
  *
133
133
  * @defaultValue
134
134
  * ```
135
- * t(() => $localize`:@@SI_FILE_UPLOADER.FILE_SELECT:click to upload`)
136
- * ```
137
- */
138
- readonly uploadTextFileSelect: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
139
- /**
140
- * Text or translation key of the drag&drop field (is combined with the `uploadTextFileSelect`).
141
- *
142
- * @defaultValue
143
- * ```
144
- * t(() => $localize`:@@SI_FILE_UPLOADER.DROP:Drop files here or`)
135
+ * t(() => $localize`:@@SI_FILE_UPLOADER.DROP:Drop files here or click to upload`)
145
136
  * ```
146
137
  */
147
138
  readonly uploadDropText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
@@ -226,7 +217,7 @@ declare class SiFileDropzoneComponent {
226
217
  */
227
218
  reset(): void;
228
219
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFileDropzoneComponent, never>;
229
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFileDropzoneComponent, "si-file-dropzone", never, { "uploadTextFileSelect": { "alias": "uploadTextFileSelect"; "required": false; "isSignal": true; }; "uploadDropText": { "alias": "uploadDropText"; "required": false; "isSignal": true; }; "maxFileSizeText": { "alias": "maxFileSizeText"; "required": false; "isSignal": true; }; "acceptText": { "alias": "acceptText"; "required": false; "isSignal": true; }; "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "fileError": "fileError"; }, never, never, true, never>;
220
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFileDropzoneComponent, "si-file-dropzone", never, { "uploadDropText": { "alias": "uploadDropText"; "required": false; "isSignal": true; }; "maxFileSizeText": { "alias": "maxFileSizeText"; "required": false; "isSignal": true; }; "acceptText": { "alias": "acceptText"; "required": false; "isSignal": true; }; "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "fileError": "fileError"; }, never, never, true, never>;
230
221
  }
231
222
 
232
223
  /**
@@ -271,21 +262,12 @@ interface ExtUploadFile extends UploadFile {
271
262
  fadeOut?: boolean;
272
263
  }
273
264
  declare class SiFileUploaderComponent {
274
- /**
275
- * Text of the link to open the file select dialog (follows `uploadDropText`).
276
- *
277
- * @defaultValue
278
- * ```
279
- * t(() => $localize`:@@SI_FILE_UPLOADER.FILE_SELECT:click to upload`)
280
- * ```
281
- */
282
- readonly uploadTextFileSelect: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
283
265
  /**
284
266
  * Text instructing a user to drop the files inside the dropzone.
285
267
  *
286
268
  * @defaultValue
287
269
  * ```
288
- * t(() => $localize`:@@SI_FILE_UPLOADER.DROP:Drop files here or`)
270
+ * t(() => $localize`:@@SI_FILE_UPLOADER.DROP:Drop files here or click to upload`)
289
271
  * ```
290
272
  */
291
273
  readonly uploadDropText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
@@ -516,7 +498,7 @@ declare class SiFileUploaderComponent {
516
498
  private updateStates;
517
499
  private countValid;
518
500
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFileUploaderComponent, never>;
519
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFileUploaderComponent, "si-file-uploader", never, { "uploadTextFileSelect": { "alias": "uploadTextFileSelect"; "required": false; "isSignal": true; }; "uploadDropText": { "alias": "uploadDropText"; "required": false; "isSignal": true; }; "maxFileSizeText": { "alias": "maxFileSizeText"; "required": false; "isSignal": true; }; "maxFilesReachedText": { "alias": "maxFilesReachedText"; "required": false; "isSignal": true; }; "acceptText": { "alias": "acceptText"; "required": false; "isSignal": true; }; "uploadButtonText": { "alias": "uploadButtonText"; "required": false; "isSignal": true; }; "clearButtonText": { "alias": "clearButtonText"; "required": false; "isSignal": true; }; "uploadingText": { "alias": "uploadingText"; "required": false; "isSignal": true; }; "removeButtonText": { "alias": "removeButtonText"; "required": false; "isSignal": true; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; "isSignal": true; }; "successTextTitle": { "alias": "successTextTitle"; "required": false; "isSignal": true; }; "errorUploadFailed": { "alias": "errorUploadFailed"; "required": false; "isSignal": true; }; "showHttpError": { "alias": "showHttpError"; "required": false; "isSignal": true; }; "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "uploadConfig": { "alias": "uploadConfig"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "maxConcurrentUploads": { "alias": "maxConcurrentUploads"; "required": false; "isSignal": true; }; "retries": { "alias": "retries"; "required": false; "isSignal": true; }; "autoUpload": { "alias": "autoUpload"; "required": false; "isSignal": true; }; "disableUpload": { "alias": "disableUpload"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "uploadCanceled": "uploadCanceled"; "uploadCompleted": "uploadCompleted"; "filesChanges": "filesChanges"; }, never, never, true, never>;
501
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFileUploaderComponent, "si-file-uploader", never, { "uploadDropText": { "alias": "uploadDropText"; "required": false; "isSignal": true; }; "maxFileSizeText": { "alias": "maxFileSizeText"; "required": false; "isSignal": true; }; "maxFilesReachedText": { "alias": "maxFilesReachedText"; "required": false; "isSignal": true; }; "acceptText": { "alias": "acceptText"; "required": false; "isSignal": true; }; "uploadButtonText": { "alias": "uploadButtonText"; "required": false; "isSignal": true; }; "clearButtonText": { "alias": "clearButtonText"; "required": false; "isSignal": true; }; "uploadingText": { "alias": "uploadingText"; "required": false; "isSignal": true; }; "removeButtonText": { "alias": "removeButtonText"; "required": false; "isSignal": true; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; "isSignal": true; }; "successTextTitle": { "alias": "successTextTitle"; "required": false; "isSignal": true; }; "errorUploadFailed": { "alias": "errorUploadFailed"; "required": false; "isSignal": true; }; "showHttpError": { "alias": "showHttpError"; "required": false; "isSignal": true; }; "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "uploadConfig": { "alias": "uploadConfig"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "maxConcurrentUploads": { "alias": "maxConcurrentUploads"; "required": false; "isSignal": true; }; "retries": { "alias": "retries"; "required": false; "isSignal": true; }; "autoUpload": { "alias": "autoUpload"; "required": false; "isSignal": true; }; "disableUpload": { "alias": "disableUpload"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "uploadCanceled": "uploadCanceled"; "uploadCompleted": "uploadCompleted"; "filesChanges": "filesChanges"; }, never, never, true, never>;
520
502
  }
521
503
 
522
504
  declare class SiFileUploaderModule {
@@ -61,7 +61,7 @@ interface CriterionDefinition {
61
61
  /**
62
62
  * Optional configuration object for the datepicker.
63
63
  */
64
- datepickerConfig?: DatepickerInputConfig;
64
+ datepickerConfig?: Omit<DatepickerInputConfig, 'enableDateRange' | 'enableTwoMonthDateRange'>;
65
65
  /**
66
66
  * Limit criterion options to the predefined ones.
67
67
  */