@siemens/element-ng 51.0.0-rc.9 → 51.0.1

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 (152) hide show
  1. package/fesm2022/siemens-element-ng-accordion.mjs +2 -2
  2. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-ag-grid.mjs +125 -125
  4. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-application-header.mjs +4 -4
  6. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-avatar.mjs +5 -5
  8. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-breadcrumb.mjs +2 -2
  10. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-card.mjs +2 -2
  12. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-carousel.mjs +2 -2
  14. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-chat-messages.mjs +129 -29
  16. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-circle-status.mjs +2 -2
  18. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-color-picker.mjs +18 -18
  20. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-connection-strength.mjs +2 -2
  22. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
  24. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-dashboard.mjs +8 -8
  26. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-date-range-filter.mjs +2 -2
  28. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-datepicker.mjs +8 -8
  30. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +2 -2
  32. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  33. package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
  34. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-file-uploader.mjs +2 -2
  36. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-filter-bar.mjs +4 -4
  38. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-filtered-search.mjs +4 -4
  40. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-footer.mjs +2 -2
  42. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-form.mjs +17 -4
  44. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-help-button.mjs +2 -2
  46. package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-icon.mjs +1 -1
  48. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  49. package/fesm2022/siemens-element-ng-landing-page.mjs +2 -2
  50. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-language-switcher.mjs +2 -2
  52. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  53. package/fesm2022/siemens-element-ng-list-details.mjs +64 -18
  54. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  55. package/fesm2022/siemens-element-ng-loading-spinner.mjs +4 -4
  56. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-main-detail-container.mjs +72 -24
  58. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-maplibre.mjs +21 -21
  60. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
  62. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
  63. package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs +2 -2
  64. package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs.map +1 -1
  65. package/fesm2022/siemens-element-ng-menu.mjs +6 -6
  66. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  67. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +8 -8
  68. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  69. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +6 -6
  70. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  71. package/fesm2022/siemens-element-ng-notification-item.mjs +2 -4
  72. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  73. package/fesm2022/siemens-element-ng-number-input.mjs +2 -2
  74. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  75. package/fesm2022/siemens-element-ng-password-strength.mjs +2 -2
  76. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  77. package/fesm2022/siemens-element-ng-phone-number.mjs +2 -2
  78. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  79. package/fesm2022/siemens-element-ng-photo-upload.mjs +4 -4
  80. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
  81. package/fesm2022/siemens-element-ng-pills-input.mjs +2 -2
  82. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  83. package/fesm2022/siemens-element-ng-result-details-list.mjs +2 -2
  84. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  85. package/fesm2022/siemens-element-ng-search-bar.mjs +2 -2
  86. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
  87. package/fesm2022/siemens-element-ng-select.mjs +46 -7
  88. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  89. package/fesm2022/siemens-element-ng-side-panel.mjs +48 -13
  90. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  91. package/fesm2022/siemens-element-ng-skip-links.mjs +2 -2
  92. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  93. package/fesm2022/siemens-element-ng-slider.mjs +2 -2
  94. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-source-chip.mjs +2 -2
  96. package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
  97. package/fesm2022/siemens-element-ng-split.mjs +21 -19
  98. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  99. package/fesm2022/siemens-element-ng-status-bar.mjs +4 -4
  100. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  101. package/fesm2022/siemens-element-ng-status-counter.mjs +2 -2
  102. package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
  103. package/fesm2022/siemens-element-ng-status-toggle.mjs +2 -2
  104. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  105. package/fesm2022/siemens-element-ng-summary-chip.mjs +2 -2
  106. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  107. package/fesm2022/siemens-element-ng-summary-widget.mjs +2 -2
  108. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
  109. package/fesm2022/siemens-element-ng-system-banner.mjs +2 -2
  110. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
  111. package/fesm2022/siemens-element-ng-tabs-legacy.mjs +2 -2
  112. package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
  113. package/fesm2022/siemens-element-ng-tabs.mjs +95 -73
  114. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  115. package/fesm2022/siemens-element-ng-threshold.mjs +2 -2
  116. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  117. package/fesm2022/siemens-element-ng-toast-notification.mjs +2 -2
  118. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  119. package/fesm2022/siemens-element-ng-tour.mjs +4 -4
  120. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
  121. package/fesm2022/siemens-element-ng-tree-view.mjs +4 -4
  122. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  123. package/fesm2022/siemens-element-ng-wizard.mjs +2 -2
  124. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  125. package/maplibre/styles/maplibre-gl.scss +22 -22
  126. package/package.json +4 -4
  127. package/schematics/migration.json +5 -0
  128. package/schematics/migrations/data/css-custom-properties.js +204 -12
  129. package/schematics/migrations/data/element-class-changes.js +8 -7
  130. package/schematics/migrations/data/element-migration-data.js +13 -1
  131. package/schematics/migrations/data/index.js +1 -1
  132. package/schematics/ng-update/index.js +1 -0
  133. package/schematics/ng-update/migrate-list-details-units.js +86 -0
  134. package/schematics/ng-update/migrate-main-detail-units.js +89 -0
  135. package/schematics/ng-update/migrate-split-collapse.js +1 -32
  136. package/schematics/ng-update/migrate-split-scale.js +524 -0
  137. package/schematics/ng-update/migrate-split-sizes.js +5 -3
  138. package/schematics/ng-update/migrate-to-v51-0-1.js +12 -0
  139. package/schematics/ng-update/migrate-to-v51.js +6 -0
  140. package/schematics/utils/index.js +1 -0
  141. package/schematics/utils/template-edit-utils.js +35 -0
  142. package/schematics/utils/template-utils.js +31 -45
  143. package/schematics/utils/testing.js +13 -1
  144. package/types/siemens-element-ng-avatar.d.ts +1 -1
  145. package/types/siemens-element-ng-chat-messages.d.ts +81 -17
  146. package/types/siemens-element-ng-form.d.ts +3 -0
  147. package/types/siemens-element-ng-list-details.d.ts +25 -3
  148. package/types/siemens-element-ng-main-detail-container.d.ts +23 -3
  149. package/types/siemens-element-ng-notification-item.d.ts +0 -12
  150. package/types/siemens-element-ng-select.d.ts +31 -4
  151. package/types/siemens-element-ng-side-panel.d.ts +17 -3
  152. package/types/siemens-element-ng-split.d.ts +3 -10
@@ -5,6 +5,11 @@
5
5
  "version": "51.0.0",
6
6
  "description": "Updates Siemens element to v51",
7
7
  "factory": "./ng-update/index#migrateToV51"
8
+ },
9
+ "migration-v51-0-1": {
10
+ "version": "51.0.1",
11
+ "description": "Renames Siemens Design Language color tokens to include the color group segment",
12
+ "factory": "./ng-update/index#migrateToV5101"
8
13
  }
9
14
  }
10
15
  }
@@ -1,3 +1,194 @@
1
+ /** Color token suffixes that moved from `si.sys.<group>` to `si.sys.color.<group>`. */
2
+ export const SYS_COLOR_TOKEN_NAMES = [
3
+ 'background-0',
4
+ 'background-1',
5
+ 'background-2',
6
+ 'background-3',
7
+ 'background-4',
8
+ 'background-accent',
9
+ 'background-accent-active',
10
+ 'background-accent-hover',
11
+ 'background-accent-secondary',
12
+ 'background-accent-secondary-active',
13
+ 'background-accent-secondary-hover',
14
+ 'background-active',
15
+ 'background-caution',
16
+ 'background-caution-active',
17
+ 'background-caution-hover',
18
+ 'background-caution-subtle',
19
+ 'background-critical',
20
+ 'background-critical-active',
21
+ 'background-critical-hover',
22
+ 'background-critical-subtle',
23
+ 'background-danger',
24
+ 'background-danger-active',
25
+ 'background-danger-hover',
26
+ 'background-danger-secondary',
27
+ 'background-danger-subtle',
28
+ 'background-hover',
29
+ 'background-information',
30
+ 'background-information-active',
31
+ 'background-information-hover',
32
+ 'background-information-subtle',
33
+ 'background-inverse',
34
+ 'background-neutral',
35
+ 'background-neutral-active',
36
+ 'background-neutral-hover',
37
+ 'background-success',
38
+ 'background-success-active',
39
+ 'background-success-hover',
40
+ 'background-success-subtle',
41
+ 'background-warning',
42
+ 'background-warning-active',
43
+ 'background-warning-hover',
44
+ 'background-warning-secondary',
45
+ 'background-warning-subtle',
46
+ 'border-1',
47
+ 'border-2',
48
+ 'border-3',
49
+ 'border-4',
50
+ 'border-accent',
51
+ 'border-accent-active',
52
+ 'border-accent-hover',
53
+ 'border-caution',
54
+ 'border-critical',
55
+ 'border-danger',
56
+ 'border-danger-secondary',
57
+ 'border-information',
58
+ 'border-inverse',
59
+ 'border-neutral',
60
+ 'border-success',
61
+ 'border-warning',
62
+ 'border-warning-secondary',
63
+ 'code-1',
64
+ 'code-2',
65
+ 'code-3',
66
+ 'code-4',
67
+ 'code-5',
68
+ 'code-6',
69
+ 'code-7',
70
+ 'code-8',
71
+ 'code-9',
72
+ 'code-10',
73
+ 'code-11',
74
+ 'code-12',
75
+ 'data-categorical-1',
76
+ 'data-categorical-2',
77
+ 'data-categorical-3',
78
+ 'data-categorical-4',
79
+ 'data-categorical-5',
80
+ 'data-categorical-6',
81
+ 'data-categorical-7',
82
+ 'data-categorical-8',
83
+ 'data-categorical-9',
84
+ 'data-categorical-10',
85
+ 'data-categorical-11',
86
+ 'data-categorical-12',
87
+ 'data-categorical-13',
88
+ 'data-categorical-14',
89
+ 'data-categorical-15',
90
+ 'data-categorical-16',
91
+ 'data-categorical-17',
92
+ 'data-rating-average',
93
+ 'data-rating-bad',
94
+ 'data-rating-excellent',
95
+ 'data-rating-good',
96
+ 'data-rating-poor',
97
+ 'data-sequential-avocado-1',
98
+ 'data-sequential-avocado-2',
99
+ 'data-sequential-avocado-3',
100
+ 'data-sequential-avocado-4',
101
+ 'data-sequential-blue-1',
102
+ 'data-sequential-blue-2',
103
+ 'data-sequential-blue-3',
104
+ 'data-sequential-blue-4',
105
+ 'data-sequential-deep-blue-1',
106
+ 'data-sequential-deep-blue-2',
107
+ 'data-sequential-deep-blue-3',
108
+ 'data-sequential-deep-blue-4',
109
+ 'data-sequential-green-1',
110
+ 'data-sequential-green-2',
111
+ 'data-sequential-green-3',
112
+ 'data-sequential-green-4',
113
+ 'data-sequential-interactive-coral-1',
114
+ 'data-sequential-interactive-coral-2',
115
+ 'data-sequential-interactive-coral-3',
116
+ 'data-sequential-interactive-coral-4',
117
+ 'data-sequential-orange-1',
118
+ 'data-sequential-orange-2',
119
+ 'data-sequential-orange-3',
120
+ 'data-sequential-orange-4',
121
+ 'data-sequential-orchid-1',
122
+ 'data-sequential-orchid-2',
123
+ 'data-sequential-orchid-3',
124
+ 'data-sequential-orchid-4',
125
+ 'data-sequential-plum-1',
126
+ 'data-sequential-plum-2',
127
+ 'data-sequential-plum-3',
128
+ 'data-sequential-plum-4',
129
+ 'data-sequential-purple-1',
130
+ 'data-sequential-purple-2',
131
+ 'data-sequential-purple-3',
132
+ 'data-sequential-purple-4',
133
+ 'data-sequential-red-1',
134
+ 'data-sequential-red-2',
135
+ 'data-sequential-red-3',
136
+ 'data-sequential-red-4',
137
+ 'data-sequential-royal-blue-1',
138
+ 'data-sequential-royal-blue-2',
139
+ 'data-sequential-royal-blue-3',
140
+ 'data-sequential-royal-blue-4',
141
+ 'data-sequential-sand-1',
142
+ 'data-sequential-sand-2',
143
+ 'data-sequential-sand-3',
144
+ 'data-sequential-sand-4',
145
+ 'data-sequential-turquoise-1',
146
+ 'data-sequential-turquoise-2',
147
+ 'data-sequential-turquoise-3',
148
+ 'data-sequential-turquoise-4',
149
+ 'data-sequential-yellow-1',
150
+ 'data-sequential-yellow-2',
151
+ 'data-sequential-yellow-3',
152
+ 'data-sequential-yellow-4',
153
+ 'effects-backdrop',
154
+ 'effects-focus',
155
+ 'effects-logo',
156
+ 'effects-shadow-1',
157
+ 'effects-shadow-2',
158
+ 'effects-shadow-3',
159
+ 'effects-shadow-4',
160
+ 'text-accent',
161
+ 'text-accent-active',
162
+ 'text-accent-hover',
163
+ 'text-caution',
164
+ 'text-critical',
165
+ 'text-danger',
166
+ 'text-disabled',
167
+ 'text-information',
168
+ 'text-inverse',
169
+ 'text-on-accent',
170
+ 'text-on-accent-secondary',
171
+ 'text-on-accent-secondary-active',
172
+ 'text-on-accent-secondary-hover',
173
+ 'text-on-caution',
174
+ 'text-on-critical',
175
+ 'text-on-danger',
176
+ 'text-on-danger-secondary',
177
+ 'text-on-information',
178
+ 'text-on-neutral',
179
+ 'text-on-success',
180
+ 'text-on-warning',
181
+ 'text-on-warning-secondary',
182
+ 'text-primary',
183
+ 'text-secondary',
184
+ 'text-success',
185
+ 'text-warning'
186
+ ];
187
+ export const SYS_COLOR_TOKEN_RENAMES = SYS_COLOR_TOKEN_NAMES.flatMap(name => [
188
+ { replace: `$si-sys-${name}`, replaceWith: `$si-sys-color-${name}` },
189
+ { replace: `--si-sys-${name}`, replaceWith: `--si-sys-color-${name}` },
190
+ { replace: `si-sys-${name}`, replaceWith: `si-sys-color-${name}` }
191
+ ]);
1
192
  export const CSS_CUSTOM_PROPERTIES_MIGRATION = [
2
193
  {
3
194
  replace: '--si-feedback-icon-offset',
@@ -157,47 +348,47 @@ export const CSS_CUSTOM_PROPERTIES_MIGRATION = [
157
348
  },
158
349
  {
159
350
  replace: '$box-shadow',
160
- replaceWith: '$si-sys-effects-shadow-2'
351
+ replaceWith: '$si-sys-color-effects-shadow-2'
161
352
  },
162
353
  {
163
354
  replace: '$box-shadow-sm',
164
- replaceWith: '$si-sys-effects-shadow-1'
355
+ replaceWith: '$si-sys-color-effects-shadow-1'
165
356
  },
166
357
  {
167
358
  replace: '$box-shadow-lg',
168
- replaceWith: '$si-sys-effects-shadow-3'
359
+ replaceWith: '$si-sys-color-effects-shadow-3'
169
360
  },
170
361
  {
171
362
  replace: '$popover-box-shadow',
172
- replaceWith: '$si-sys-effects-shadow-3'
363
+ replaceWith: '$si-sys-color-effects-shadow-3'
173
364
  },
174
365
  {
175
366
  replace: '$modal-content-box-shadow-xs',
176
- replaceWith: '$si-sys-effects-shadow-3'
367
+ replaceWith: '$si-sys-color-effects-shadow-3'
177
368
  },
178
369
  {
179
370
  replace: '$modal-content-box-shadow-sm-up',
180
- replaceWith: '$si-sys-effects-shadow-2'
371
+ replaceWith: '$si-sys-color-effects-shadow-2'
181
372
  },
182
373
  {
183
374
  replace: '$thumbnail-box-shadow',
184
- replaceWith: '$si-sys-effects-shadow-1'
375
+ replaceWith: '$si-sys-color-effects-shadow-1'
185
376
  },
186
377
  {
187
378
  replace: '$element-elevation-1',
188
- replaceWith: '$si-sys-effects-shadow-1'
379
+ replaceWith: '$si-sys-color-effects-shadow-1'
189
380
  },
190
381
  {
191
382
  replace: '$element-elevation-2',
192
- replaceWith: '$si-sys-effects-shadow-2'
383
+ replaceWith: '$si-sys-color-effects-shadow-2'
193
384
  },
194
385
  {
195
386
  replace: '$element-elevation-3',
196
- replaceWith: '$si-sys-effects-shadow-3'
387
+ replaceWith: '$si-sys-color-effects-shadow-3'
197
388
  },
198
389
  {
199
390
  replace: '$element-elevation-4',
200
- replaceWith: '$si-sys-effects-shadow-4'
391
+ replaceWith: '$si-sys-color-effects-shadow-4'
201
392
  },
202
393
  ...['font-size', 'line-height', 'font-weight'].flatMap(property => [
203
394
  {
@@ -220,5 +411,6 @@ export const CSS_CUSTOM_PROPERTIES_MIGRATION = [
220
411
  replace: `$si-${property}-display-bold`,
221
412
  replaceWith: `$si-${property}-display-lg-sbold`
222
413
  }
223
- ])
414
+ ]),
415
+ ...SYS_COLOR_TOKEN_RENAMES
224
416
  ];
@@ -4,13 +4,13 @@
4
4
  */
5
5
  export const ELEMENT_CLASS_CHANGES_MIGRATION = [
6
6
  ...[
7
- ['bg-primary', 'background-accent'],
8
- ['bg-secondary', 'background-neutral'],
7
+ ['bg-primary', 'background-accent', ['badge']],
8
+ ['bg-secondary', 'background-neutral', ['badge']],
9
9
  ['bg-tertiary', 'background-4'],
10
- ['bg-success', 'background-success'],
11
- ['bg-info', 'background-information'],
12
- ['bg-warning', 'background-warning'],
13
- ['bg-danger', 'background-danger'],
10
+ ['bg-success', 'background-success', ['badge']],
11
+ ['bg-info', 'background-information', ['badge']],
12
+ ['bg-warning', 'background-warning', ['badge']],
13
+ ['bg-danger', 'background-danger', ['badge']],
14
14
  ['bg-base-0', 'background-0'],
15
15
  ['bg-base-1', 'background-1'],
16
16
  ['bg-base-2', 'background-2'],
@@ -37,8 +37,9 @@ export const ELEMENT_CLASS_CHANGES_MIGRATION = [
37
37
  ['elevation-2', 'shadow-2'],
38
38
  ['elevation-3', 'shadow-3'],
39
39
  ['elevation-4', 'shadow-4']
40
- ].map(([oldClass, newClass]) => ({
40
+ ].map(([oldClass, newClass, excludedClasses]) => ({
41
41
  requiredClasses: [oldClass],
42
+ excludedClasses,
42
43
  removeClasses: [oldClass],
43
44
  addClasses: [newClass]
44
45
  })),
@@ -6,7 +6,7 @@ import { ATTRIBUTE_SELECTORS_MIGRATION } from './attribute-selectors.js';
6
6
  import { CLASS_MEMBER_REPLACEMENTS_MIGRATION } from './class-member-replacement.js';
7
7
  import { COMPONENT_PROPERTY_NAMES_MIGRATION } from './component-property-names.js';
8
8
  import { COMPONENT_PROPERTY_TO_CHILD_MIGRATION } from './component-property-to-child.js';
9
- import { CSS_CUSTOM_PROPERTIES_MIGRATION } from './css-custom-properties.js';
9
+ import { CSS_CUSTOM_PROPERTIES_MIGRATION, SYS_COLOR_TOKEN_RENAMES } from './css-custom-properties.js';
10
10
  import { ELEMENT_CLASS_CHANGES_MIGRATION } from './element-class-changes.js';
11
11
  import { ELEMENT_SELECTORS_MIGRATION } from './element-selectors.js';
12
12
  import { PROVIDER_FUNCTION_REMOVALS_MIGRATION } from './provider-function-removals.js';
@@ -24,3 +24,15 @@ export const getElementMigrationData = () => ({
24
24
  symbolRemovalChanges: SYMBOL_REMOVALS_MIGRATION,
25
25
  symbolRenamingChanges: SYMBOL_RENAMING_MIGRATION
26
26
  });
27
+ export const getColorTokenRenameMigrationData = () => ({
28
+ attributeSelectorChanges: [],
29
+ classMemberReplacementChanges: [],
30
+ componentPropertyNameChanges: [],
31
+ cssCustomPropertyChanges: SYS_COLOR_TOKEN_RENAMES,
32
+ componentPropertyToChildChanges: [],
33
+ elementClassChanges: [],
34
+ elementSelectorChanges: [],
35
+ providerFunctionRemovalChanges: [],
36
+ symbolRemovalChanges: [],
37
+ symbolRenamingChanges: []
38
+ });
@@ -1 +1 @@
1
- export { getElementMigrationData } from './element-migration-data.js';
1
+ export { getColorTokenRenameMigrationData, getElementMigrationData } from './element-migration-data.js';
@@ -3,3 +3,4 @@
3
3
  * SPDX-License-Identifier: MIT
4
4
  */
5
5
  export { migrateToV51 } from './migrate-to-v51.js';
6
+ export { migrateToV5101 } from './migrate-to-v51-0-1.js';
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Copyright (c) Siemens 2016 - 2026
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import { dirname, join } from 'path/posix';
6
+ import ts from 'typescript';
7
+ import { discoverSourceFiles, findElement, getInlineTemplates, getTemplateUrl, insertAttribute } from '../utils/index.js';
8
+ const disableResizingAttributeNames = [
9
+ 'disableResizing',
10
+ '[disableResizing]',
11
+ 'bind-disableResizing'
12
+ ];
13
+ const listWidthUnitAttributeNames = ['listWidthUnit', '[listWidthUnit]', 'bind-listWidthUnit'];
14
+ export const listDetailsUnitsMigrationRule = (options) => {
15
+ return async (tree, context) => {
16
+ const processedTemplates = new Set();
17
+ for await (const discoveredSourceFile of discoverSourceFiles(tree, context, options.path)) {
18
+ const { path: filePath, sourceFile } = discoveredSourceFile;
19
+ const recorder = tree.beginUpdate(filePath);
20
+ for (const template of getInlineTemplates(sourceFile)) {
21
+ migrateListDetailsUnitsTemplate(sourceFile.text.substring(template.getStart() + 1, template.getEnd() - 1), template.getStart() + 1, recorder);
22
+ }
23
+ tree.commitUpdate(recorder);
24
+ for (const templateUrl of getTemplateUrl(sourceFile)) {
25
+ const templatePath = join(dirname(filePath), templateUrl);
26
+ if (processedTemplates.has(templatePath) || !tree.exists(templatePath)) {
27
+ continue;
28
+ }
29
+ processedTemplates.add(templatePath);
30
+ const templateRecorder = tree.beginUpdate(templatePath);
31
+ migrateListDetailsUnitsTemplate(tree.read(templatePath).toString('utf-8'), 0, templateRecorder);
32
+ tree.commitUpdate(templateRecorder);
33
+ }
34
+ }
35
+ return tree;
36
+ };
37
+ };
38
+ const migrateListDetailsUnitsTemplate = (template, offset, recorder) => {
39
+ findElement(template, element => element.name === 'si-list-details').forEach(element => {
40
+ migrateListDetailsElement(template, element, offset, recorder);
41
+ });
42
+ };
43
+ const migrateListDetailsElement = (template, element, offset, recorder) => {
44
+ const disableResizingAttribute = element.attrs.find(attr => disableResizingAttributeNames.includes(attr.name));
45
+ const isExplicitlyDisabled = disableResizingAttribute && getStaticBooleanValue(disableResizingAttribute) === true;
46
+ if (isExplicitlyDisabled) {
47
+ return;
48
+ }
49
+ const hasListWidthUnit = element.attrs.some(attr => listWidthUnitAttributeNames.includes(attr.name));
50
+ if (hasListWidthUnit) {
51
+ return;
52
+ }
53
+ insertAttribute(template, element, 'listWidthUnit="fr"', offset, recorder);
54
+ };
55
+ const getStaticBooleanValue = (attribute) => {
56
+ if (!attribute.name.startsWith('[')) {
57
+ if (/^\s*{{[\s\S]*}}\s*$/.test(attribute.value)) {
58
+ return undefined;
59
+ }
60
+ return attribute.value !== 'false';
61
+ }
62
+ const initializer = getExpression(attribute.value);
63
+ if (!initializer) {
64
+ return undefined;
65
+ }
66
+ if (initializer.kind === ts.SyntaxKind.TrueKeyword) {
67
+ return true;
68
+ }
69
+ if (initializer.kind === ts.SyntaxKind.FalseKeyword ||
70
+ initializer.kind === ts.SyntaxKind.NullKeyword ||
71
+ (ts.isIdentifier(initializer) && initializer.text === 'undefined') ||
72
+ (ts.isStringLiteral(initializer) && initializer.text === 'false')) {
73
+ return false;
74
+ }
75
+ if (ts.isStringLiteral(initializer) || ts.isNumericLiteral(initializer)) {
76
+ return true;
77
+ }
78
+ return undefined;
79
+ };
80
+ const getExpression = (value) => {
81
+ const statement = ts.createSourceFile('template-expression.ts', `const value = ${value};`, ts.ScriptTarget.Latest, true).statements[0];
82
+ if (!statement || !ts.isVariableStatement(statement)) {
83
+ return undefined;
84
+ }
85
+ return statement.declarationList.declarations[0]?.initializer;
86
+ };
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Copyright (c) Siemens 2016 - 2026
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import { dirname, join } from 'path/posix';
6
+ import ts from 'typescript';
7
+ import { discoverSourceFiles, findElement, getInlineTemplates, getTemplateUrl, insertAttribute } from '../utils/index.js';
8
+ const resizableAttributeNames = ['resizableParts', '[resizableParts]', 'bind-resizableParts'];
9
+ const mainUnitAttributeNames = [
10
+ 'mainContainerWidthUnit',
11
+ '[mainContainerWidthUnit]',
12
+ 'bind-mainContainerWidthUnit'
13
+ ];
14
+ export const mainDetailUnitsMigrationRule = (options) => {
15
+ return async (tree, context) => {
16
+ const processedTemplates = new Set();
17
+ for await (const discoveredSourceFile of discoverSourceFiles(tree, context, options.path)) {
18
+ const { path: filePath, sourceFile } = discoveredSourceFile;
19
+ const recorder = tree.beginUpdate(filePath);
20
+ for (const template of getInlineTemplates(sourceFile)) {
21
+ migrateMainDetailUnitsTemplate(sourceFile.text.substring(template.getStart() + 1, template.getEnd() - 1), template.getStart() + 1, recorder);
22
+ }
23
+ tree.commitUpdate(recorder);
24
+ for (const templateUrl of getTemplateUrl(sourceFile)) {
25
+ const templatePath = join(dirname(filePath), templateUrl);
26
+ if (processedTemplates.has(templatePath) || !tree.exists(templatePath)) {
27
+ continue;
28
+ }
29
+ processedTemplates.add(templatePath);
30
+ const templateRecorder = tree.beginUpdate(templatePath);
31
+ migrateMainDetailUnitsTemplate(tree.read(templatePath).toString('utf-8'), 0, templateRecorder);
32
+ tree.commitUpdate(templateRecorder);
33
+ }
34
+ }
35
+ return tree;
36
+ };
37
+ };
38
+ const migrateMainDetailUnitsTemplate = (template, offset, recorder) => {
39
+ findElement(template, element => element.name === 'si-main-detail-container').forEach(element => {
40
+ migrateMainDetailContainerElement(template, element, offset, recorder);
41
+ });
42
+ };
43
+ const migrateMainDetailContainerElement = (template, element, offset, recorder) => {
44
+ const resizableAttribute = element.attrs.find(attr => resizableAttributeNames.includes(attr.name));
45
+ if (!resizableAttribute) {
46
+ return;
47
+ }
48
+ const isExplicitlyDisabled = getStaticBooleanValue(resizableAttribute) === false;
49
+ if (isExplicitlyDisabled) {
50
+ return;
51
+ }
52
+ const hasMainUnit = element.attrs.some(attr => mainUnitAttributeNames.includes(attr.name));
53
+ if (hasMainUnit) {
54
+ return;
55
+ }
56
+ insertAttribute(template, element, 'mainContainerWidthUnit="fr"', offset, recorder);
57
+ };
58
+ const getStaticBooleanValue = (attribute) => {
59
+ if (!attribute.name.startsWith('[')) {
60
+ if (/^\s*{{[\s\S]*}}\s*$/.test(attribute.value)) {
61
+ return undefined;
62
+ }
63
+ return attribute.value !== 'false';
64
+ }
65
+ const initializer = getExpression(attribute.value);
66
+ if (!initializer) {
67
+ return undefined;
68
+ }
69
+ if (initializer.kind === ts.SyntaxKind.TrueKeyword) {
70
+ return true;
71
+ }
72
+ if (initializer.kind === ts.SyntaxKind.FalseKeyword ||
73
+ initializer.kind === ts.SyntaxKind.NullKeyword ||
74
+ (ts.isIdentifier(initializer) && initializer.text === 'undefined') ||
75
+ (ts.isStringLiteral(initializer) && initializer.text === 'false')) {
76
+ return false;
77
+ }
78
+ if (ts.isStringLiteral(initializer) || ts.isNumericLiteral(initializer)) {
79
+ return true;
80
+ }
81
+ return undefined;
82
+ };
83
+ const getExpression = (value) => {
84
+ const statement = ts.createSourceFile('template-expression.ts', `const value = ${value};`, ts.ScriptTarget.Latest, true).statements[0];
85
+ if (!statement || !ts.isVariableStatement(statement)) {
86
+ return undefined;
87
+ }
88
+ return statement.declarationList.declarations[0]?.initializer;
89
+ };
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { dirname, join } from 'path/posix';
6
6
  import ts from 'typescript';
7
- import { discoverSourceFiles, findElement, getInlineTemplates, getTemplateUrl } from '../utils/index.js';
7
+ import { discoverSourceFiles, findElement, formatBoundAttribute, getInlineTemplates, getTemplateUrl, insertAttribute, removeAttribute, replaceAttribute } from '../utils/index.js';
8
8
  const collapseValues = new Map([
9
9
  ['start', 'to-start'],
10
10
  ['end', 'to-end']
@@ -132,37 +132,6 @@ const getShowCollapseButtonExpression = (attribute) => {
132
132
  return attribute.value.replace(/^\s*{{\s*|\s*}}\s*$/g, '');
133
133
  };
134
134
  const getBooleanAttributeCondition = (expression) => `![false, null, undefined, 'false'].includes($any(${expression}))`;
135
- const formatBoundAttribute = (name, expression) => {
136
- const quote = expression.includes('"') && !expression.includes("'") ? "'" : '"';
137
- const escapedExpression = quote === '"' ? expression.replaceAll('"', '&quot;') : expression.replaceAll("'", '&#39;');
138
- return `[${name}]=${quote}${escapedExpression}${quote}`;
139
- };
140
- const replaceAttribute = (attribute, replacement, offset, recorder) => {
141
- const start = attribute.sourceSpan.start.offset + offset;
142
- recorder.remove(start, attribute.sourceSpan.end.offset - attribute.sourceSpan.start.offset);
143
- recorder.insertLeft(start, replacement);
144
- };
145
- const insertAttribute = (template, element, attribute, offset, recorder) => {
146
- const selfClosing = element.startSourceSpan.toString().endsWith('/>');
147
- const insertOffset = element.startSourceSpan.end.offset - (selfClosing ? 2 : 1);
148
- const prefix = /\s/.test(template[insertOffset - 1]) ? '' : ' ';
149
- recorder.insertLeft(insertOffset + offset, `${prefix}${attribute}${selfClosing ? ' ' : ''}`);
150
- };
151
- const removeAttribute = (template, attribute, offset, recorder) => {
152
- const start = attribute.sourceSpan.start.offset;
153
- const end = attribute.sourceSpan.end.offset;
154
- const lineStart = template.lastIndexOf('\n', start - 1) + 1;
155
- const lineEnd = template.indexOf('\n', end);
156
- const endOfLine = lineEnd === -1 ? template.length : lineEnd;
157
- if (template.slice(lineStart, start).trim() === '' &&
158
- template.slice(end, endOfLine).trim() === '') {
159
- const removeEnd = lineEnd === -1 ? endOfLine : lineEnd + 1;
160
- recorder.remove(lineStart + offset, removeEnd - lineStart);
161
- return;
162
- }
163
- const removeStart = start > 0 && /\s/.test(template[start - 1]) ? start - 1 : start;
164
- recorder.remove(removeStart + offset, attribute.sourceSpan.end.offset - removeStart);
165
- };
166
135
  const getStringLiteral = (value) => {
167
136
  const initializer = getExpression(value);
168
137
  return initializer && ts.isStringLiteral(initializer)