@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.
- package/README.md +1 -1
- package/fesm2022/siemens-element-ng-about.mjs +41 -25
- package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-accordion.mjs +58 -40
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-action-modal.mjs +83 -53
- package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ag-grid.mjs +15 -12
- package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +176 -166
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +34 -28
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-autocomplete.mjs +27 -22
- package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-avatar.mjs +31 -21
- package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-badge.mjs +9 -8
- package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +17 -14
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +21 -17
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +71 -46
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-carousel.mjs +57 -33
- package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-chat-messages.mjs +181 -117
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs +39 -25
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-color-picker.mjs +26 -17
- package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +56 -35
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +12 -12
- package/fesm2022/siemens-element-ng-connection-strength.mjs +14 -12
- package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +36 -27
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-copyright-notice.mjs +19 -14
- package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +335 -221
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +8 -8
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +119 -72
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +376 -244
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs +22 -17
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs +15 -12
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +105 -91
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +32 -24
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +251 -153
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs +12 -10
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +345 -113
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly-legacy.mjs +99 -0
- package/fesm2022/siemens-element-ng-formly-legacy.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-formly.mjs +222 -316
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +40 -30
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-help-button.mjs +5 -5
- package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs +46 -47
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-info-page.mjs +17 -11
- package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs +19 -14
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +25 -25
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-landing-page.mjs +120 -74
- package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs +16 -12
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-link.mjs +31 -21
- package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs +76 -56
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-loading-spinner.mjs +46 -63
- package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-localization.mjs +14 -12
- package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs +47 -30
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-maplibre.mjs +42 -0
- package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs +6 -5
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-menu.mjs +56 -48
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-modal.mjs +14 -11
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +249 -204
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +120 -83
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar.mjs +72 -45
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-notification-item.mjs +19 -11
- package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-number-input.mjs +40 -28
- package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +31 -20
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-strength.mjs +32 -23
- package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs +18 -13
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs +123 -139
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs +84 -51
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs +63 -58
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-legacy.mjs +43 -28
- package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +35 -27
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-progressbar.mjs +23 -16
- package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +32 -43
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +12 -10
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs +38 -31
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-select.mjs +218 -163
- package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs +3 -3
- package/fesm2022/siemens-element-ng-side-panel.mjs +128 -86
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-skip-links.mjs +21 -24
- package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-slider.mjs +44 -29
- package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs +273 -293
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +65 -51
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-counter.mjs +15 -11
- package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-toggle.mjs +26 -16
- package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-chip.mjs +25 -16
- package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-widget.mjs +27 -17
- package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-system-banner.mjs +11 -8
- package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs +20 -17
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +73 -70
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-theme.mjs +29 -6
- package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs +60 -41
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-toast-notification.mjs +45 -40
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +105 -82
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tour.mjs +24 -18
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs +0 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +96 -75
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +76 -70
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-wizard.mjs +72 -48
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/formly-legacy/package.json +4 -0
- package/maplibre/package.json +4 -0
- package/maplibre/styles/_index.scss +1 -0
- package/maplibre/styles/maplibre-gl.scss +715 -0
- package/package.json +37 -23
- package/schematics/migration.json +4 -4
- package/schematics/migrations/data/class-member-replacement.js +1 -19
- package/schematics/migrations/data/component-property-names.js +1 -25
- package/schematics/migrations/data/element-class-changes.js +1 -28
- package/schematics/migrations/data/element-migration-data.js +2 -0
- package/schematics/migrations/data/element-selectors.js +1 -11
- package/schematics/migrations/data/index.js +0 -4
- package/schematics/migrations/data/migration-test-data.js +9 -6
- package/schematics/migrations/data/provider-function-removals.js +7 -0
- package/schematics/migrations/data/symbol-removals.js +7 -7
- package/schematics/migrations/data/symbol-renaming.js +1 -48
- package/schematics/migrations/element-migration/element-migration.js +3 -6
- package/schematics/migrations/utilities/import-removal.js +39 -0
- package/schematics/migrations/utilities/index.js +2 -0
- package/schematics/migrations/utilities/provider-function-removal.migration.js +116 -0
- package/schematics/ng-update/index.js +1 -1
- package/schematics/ng-update/migrate-split-sizes.js +105 -0
- package/schematics/ng-update/{migrate-to-v49.js → migrate-to-v51.js} +5 -3
- package/template-i18n.json +45 -47
- package/types/siemens-element-ng-application-header.d.ts +8 -28
- package/types/siemens-element-ng-breadcrumb.d.ts +1 -1
- package/types/siemens-element-ng-chat-messages.d.ts +11 -9
- package/types/siemens-element-ng-circle-status.d.ts +1 -1
- package/types/siemens-element-ng-content-action-bar.d.ts +1 -1
- package/types/siemens-element-ng-dashboard.d.ts +2 -2
- package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
- package/types/siemens-element-ng-datepicker.d.ts +3 -14
- package/types/siemens-element-ng-electron-titlebar.d.ts +1 -1
- package/types/siemens-element-ng-file-uploader.d.ts +13 -31
- package/types/siemens-element-ng-filter-bar.d.ts +1 -1
- package/types/siemens-element-ng-filtered-search.d.ts +4 -4
- package/types/siemens-element-ng-form.d.ts +180 -44
- package/types/siemens-element-ng-formly-legacy.d.ts +40 -0
- package/types/siemens-element-ng-formly.d.ts +34 -167
- package/types/siemens-element-ng-icon.d.ts +2 -19
- package/types/siemens-element-ng-ip-input.d.ts +1 -1
- package/types/siemens-element-ng-landing-page.d.ts +2 -2
- package/types/siemens-element-ng-loading-spinner.d.ts +7 -17
- package/types/siemens-element-ng-maplibre.d.ts +26 -0
- package/types/siemens-element-ng-navbar-vertical-next.d.ts +86 -38
- package/types/siemens-element-ng-navbar-vertical.d.ts +1 -1
- package/types/siemens-element-ng-navbar.d.ts +3 -3
- package/types/siemens-element-ng-notification-item.d.ts +12 -0
- package/types/siemens-element-ng-phone-number.d.ts +5 -8
- package/types/siemens-element-ng-photo-upload.d.ts +4 -4
- package/types/siemens-element-ng-resize-observer.d.ts +0 -17
- package/types/siemens-element-ng-search-bar.d.ts +1 -1
- package/types/siemens-element-ng-select.d.ts +1 -1
- package/types/siemens-element-ng-side-panel.d.ts +3 -3
- package/types/siemens-element-ng-split.d.ts +99 -70
- package/types/siemens-element-ng-status-bar.d.ts +5 -13
- package/types/siemens-element-ng-status-counter.d.ts +1 -1
- package/types/siemens-element-ng-tabs.d.ts +1 -2
- package/types/siemens-element-ng-theme.d.ts +12 -2
- package/types/siemens-element-ng-threshold.d.ts +1 -1
- package/types/siemens-element-ng-toast-notification.d.ts +0 -1
- package/types/siemens-element-ng-tooltip.d.ts +7 -7
- package/types/siemens-element-ng-translate.d.ts +2 -5
- package/fesm2022/siemens-element-ng-icon-status.mjs +0 -46
- package/fesm2022/siemens-element-ng-icon-status.mjs.map +0 -1
- package/fesm2022/siemens-element-ng-sort-bar.mjs +0 -99
- package/fesm2022/siemens-element-ng-sort-bar.mjs.map +0 -1
- package/icon-status/package.json +0 -4
- package/schematics/vitest-setup.js +0 -5
- package/sort-bar/package.json +0 -4
- package/types/siemens-element-ng-icon-status.d.ts +0 -25
- package/types/siemens-element-ng-sort-bar.d.ts +0 -59
- /package/{LICENSE.md → LICENSE} +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@siemens/element-ng",
|
|
3
3
|
"description": "Element Angular component library, implementing the Siemens Design Language",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "51.0.0-rc.5",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"homepage": "https://github.com/siemens/element",
|
|
15
15
|
"bugs": "https://github.com/siemens/element/issues/new",
|
|
16
16
|
"publishConfig": {
|
|
17
|
-
"access": "public"
|
|
17
|
+
"access": "public",
|
|
18
|
+
"directory": "../../dist/@siemens/element-ng"
|
|
18
19
|
},
|
|
19
20
|
"type": "module",
|
|
20
21
|
"schematics": "./schematics/collection.json",
|
|
@@ -35,23 +36,29 @@
|
|
|
35
36
|
"migrations": "./schematics/migration.json"
|
|
36
37
|
},
|
|
37
38
|
"peerDependencies": {
|
|
38
|
-
"@angular/cdk": "
|
|
39
|
-
"@angular/common": "
|
|
40
|
-
"@angular/core": "
|
|
41
|
-
"@angular/forms": "
|
|
42
|
-
"@angular/router": "
|
|
43
|
-
"@ngx-formly/bootstrap": "^6.2.2",
|
|
44
|
-
"@ngx-formly/core": "^6.2.2",
|
|
39
|
+
"@angular/cdk": "22",
|
|
40
|
+
"@angular/common": "22",
|
|
41
|
+
"@angular/core": "22",
|
|
42
|
+
"@angular/forms": "22",
|
|
43
|
+
"@angular/router": "22",
|
|
44
|
+
"@ngx-formly/bootstrap": "^6.2.2 || ^7.0.1",
|
|
45
|
+
"@ngx-formly/core": "^6.2.2 || ^7.0.1",
|
|
46
|
+
"@maplibre/ngx-maplibre-gl": "21 - 22",
|
|
47
|
+
"maplibre-gl": "5 - 6",
|
|
45
48
|
"@siemens/element-icons": "1",
|
|
46
|
-
"@siemens/
|
|
47
|
-
"
|
|
48
|
-
"@siemens/ngx-datatable": "22 - 26",
|
|
49
|
-
"ag-grid-community": "^34.3.1 || ^35.0.0",
|
|
49
|
+
"@siemens/ngx-datatable": "26 - 27",
|
|
50
|
+
"ag-grid-community": "^34.3.1 || ^35.0.0 || ^36.0.0",
|
|
50
51
|
"flag-icons": "^7.3.2",
|
|
51
52
|
"google-libphonenumber": "^3.2.40",
|
|
52
|
-
"ngx-image-cropper": "^9.0.0"
|
|
53
|
+
"ngx-image-cropper": "^9.0.0",
|
|
54
|
+
"@siemens/element-theme": "51.0.0-rc.5",
|
|
55
|
+
"@siemens/map-styles": "51.0.0-rc.5",
|
|
56
|
+
"@siemens/element-translate-ng": "51.0.0-rc.5"
|
|
53
57
|
},
|
|
54
58
|
"peerDependenciesMeta": {
|
|
59
|
+
"@maplibre/ngx-maplibre-gl": {
|
|
60
|
+
"optional": true
|
|
61
|
+
},
|
|
55
62
|
"@ngx-formly/bootstrap": {
|
|
56
63
|
"optional": true
|
|
57
64
|
},
|
|
@@ -61,6 +68,9 @@
|
|
|
61
68
|
"@siemens/ngx-datatable": {
|
|
62
69
|
"optional": true
|
|
63
70
|
},
|
|
71
|
+
"@siemens/map-styles": {
|
|
72
|
+
"optional": true
|
|
73
|
+
},
|
|
64
74
|
"ngx-image-cropper": {
|
|
65
75
|
"optional": true
|
|
66
76
|
},
|
|
@@ -72,6 +82,9 @@
|
|
|
72
82
|
},
|
|
73
83
|
"ag-grid-community": {
|
|
74
84
|
"optional": true
|
|
85
|
+
},
|
|
86
|
+
"maplibre-gl": {
|
|
87
|
+
"optional": true
|
|
75
88
|
}
|
|
76
89
|
},
|
|
77
90
|
"module": "fesm2022/siemens-element-ng.mjs",
|
|
@@ -216,6 +229,10 @@
|
|
|
216
229
|
"types": "./types/siemens-element-ng-formly.d.ts",
|
|
217
230
|
"default": "./fesm2022/siemens-element-ng-formly.mjs"
|
|
218
231
|
},
|
|
232
|
+
"./formly-legacy": {
|
|
233
|
+
"types": "./types/siemens-element-ng-formly-legacy.d.ts",
|
|
234
|
+
"default": "./fesm2022/siemens-element-ng-formly-legacy.mjs"
|
|
235
|
+
},
|
|
219
236
|
"./header-dropdown": {
|
|
220
237
|
"types": "./types/siemens-element-ng-header-dropdown.d.ts",
|
|
221
238
|
"default": "./fesm2022/siemens-element-ng-header-dropdown.mjs"
|
|
@@ -228,10 +245,6 @@
|
|
|
228
245
|
"types": "./types/siemens-element-ng-icon.d.ts",
|
|
229
246
|
"default": "./fesm2022/siemens-element-ng-icon.mjs"
|
|
230
247
|
},
|
|
231
|
-
"./icon-status": {
|
|
232
|
-
"types": "./types/siemens-element-ng-icon-status.d.ts",
|
|
233
|
-
"default": "./fesm2022/siemens-element-ng-icon-status.mjs"
|
|
234
|
-
},
|
|
235
248
|
"./info-page": {
|
|
236
249
|
"types": "./types/siemens-element-ng-info-page.d.ts",
|
|
237
250
|
"default": "./fesm2022/siemens-element-ng-info-page.mjs"
|
|
@@ -272,6 +285,10 @@
|
|
|
272
285
|
"types": "./types/siemens-element-ng-main-detail-container.d.ts",
|
|
273
286
|
"default": "./fesm2022/siemens-element-ng-main-detail-container.mjs"
|
|
274
287
|
},
|
|
288
|
+
"./maplibre": {
|
|
289
|
+
"types": "./types/siemens-element-ng-maplibre.d.ts",
|
|
290
|
+
"default": "./fesm2022/siemens-element-ng-maplibre.mjs"
|
|
291
|
+
},
|
|
275
292
|
"./markdown-renderer": {
|
|
276
293
|
"types": "./types/siemens-element-ng-markdown-renderer.d.ts",
|
|
277
294
|
"default": "./fesm2022/siemens-element-ng-markdown-renderer.mjs"
|
|
@@ -372,10 +389,6 @@
|
|
|
372
389
|
"types": "./types/siemens-element-ng-slider.d.ts",
|
|
373
390
|
"default": "./fesm2022/siemens-element-ng-slider.mjs"
|
|
374
391
|
},
|
|
375
|
-
"./sort-bar": {
|
|
376
|
-
"types": "./types/siemens-element-ng-sort-bar.d.ts",
|
|
377
|
-
"default": "./fesm2022/siemens-element-ng-sort-bar.mjs"
|
|
378
|
-
},
|
|
379
392
|
"./split": {
|
|
380
393
|
"types": "./types/siemens-element-ng-split.d.ts",
|
|
381
394
|
"default": "./fesm2022/siemens-element-ng-split.mjs"
|
|
@@ -452,5 +465,6 @@
|
|
|
452
465
|
"sideEffects": false,
|
|
453
466
|
"dependencies": {
|
|
454
467
|
"tslib": "^2.3.0"
|
|
455
|
-
}
|
|
468
|
+
},
|
|
469
|
+
"readme": "<p align=\"center\">\n <a href=\"https://element.siemens.io\" target=\"_blank\">\n <img src=\"https://raw.githubusercontent.com/siemens/element/refs/heads/main/element-logo.svg\" alt=\"Element Website\" height=\"132\" width=\"132\">\n </a>\n</p>\n\n<h1 align=\"center\">Siemens Element</h1>\n\n<p align=\"center\">\n <a href=\"https://www.npmjs.com/@siemens/element-ng\">\n <img src=\"https://img.shields.io/npm/v/@siemens/element-ng.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen\" alt=\"Element on npm\" />\n </a>\n <a href=\"https://element.siemens.io/coverage/element-ng/index.html\">\n <img src=\"https://img.shields.io/endpoint?url=https://element.siemens.io/coverage-summary.json\" alt=\"Code Coverage\">\n </a>\n</p>\n\n<p></p>\n<p align=\"center\">\n Siemens Element is a design system of the smart infrastructure domain\n that implements the Siemens Design Language in Angular. It includes UI\n components, design tools and resources, human interface guidelines, and a\n vibrant community of contributors.\n</p>\n<p></p>\n\n<hr>\n\n## Contributing\n\nImprovements are always welcome! Feel free to log a bug,\nwrite a suggestion, or contribute code by creating a pull request.\nAll details are listed in our contribution guide.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nThe following applies for code and documentation of the git repository,\nunless explicitly mentioned.\n\nCopyright (c) Siemens 2016 - 2026\n\nMIT, see [LICENSE](LICENSE).\n\n### Bootstrap\n\nThe source code in the folder [bootstrap](./projects/element-theme/src/styles/bootstrap/)\nis based on [Bootstrap (v5.1.3)](https://github.com/twbs/bootstrap). We changed and adapted\nthe SASS component files to our needs. At that point in time, it was under _MIT License_\nand _Copyright (c) 2011-2024 The Bootstrap Authors_.\n\n### API Goldens\n\nThe source code in the folder [tools/api-goldens](./tools/api-goldens/) is based on [dev-infra-private-build-tooling-builds](https://github.com/angular/dev-infra-private-build-tooling-builds/tree/main/bazel/api-golden).\nWe changed and adapted the code to our needs. At that point in time it was under _MIT License_ and _Copyright Google LLC_.\n"
|
|
456
470
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
|
|
3
3
|
"schematics": {
|
|
4
|
-
"migration-
|
|
5
|
-
"version": "
|
|
6
|
-
"description": "Updates Siemens element to
|
|
7
|
-
"factory": "./ng-update/index#
|
|
4
|
+
"migration-v51": {
|
|
5
|
+
"version": "51.0.0",
|
|
6
|
+
"description": "Updates Siemens element to v51",
|
|
7
|
+
"factory": "./ng-update/index#migrateToV51"
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -2,22 +2,4 @@
|
|
|
2
2
|
* Copyright (c) Siemens 2016 - 2026
|
|
3
3
|
* SPDX-License-Identifier: MIT
|
|
4
4
|
*/
|
|
5
|
-
export const CLASS_MEMBER_REPLACEMENTS_MIGRATION = [
|
|
6
|
-
{
|
|
7
|
-
module: /@(siemens|simpl)\/element-ng(\/resize-observer)?/,
|
|
8
|
-
typeNames: ['SiResponsiveContainerDirective'],
|
|
9
|
-
propertyReplacements: [
|
|
10
|
-
{ property: 'isXs', replacement: '${expression}.xs()' },
|
|
11
|
-
{ property: 'isSm', replacement: '${expression}.sm()' },
|
|
12
|
-
{ property: 'isMd', replacement: '${expression}.md()' },
|
|
13
|
-
{ property: 'isLg', replacement: '${expression}.lg()' },
|
|
14
|
-
{ property: 'isXl', replacement: '${expression}.xl()' },
|
|
15
|
-
{ property: 'isXxl', replacement: '${expression}.xxl()' }
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
module: /@(siemens|simpl)\/element-ng(\/modal)?/,
|
|
20
|
-
typeNames: ['ModalOptions'],
|
|
21
|
-
propertyReplacements: [{ property: 'initialState', replacement: '${expression}.inputValues' }]
|
|
22
|
-
}
|
|
23
|
-
];
|
|
5
|
+
export const CLASS_MEMBER_REPLACEMENTS_MIGRATION = [];
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
export const COMPONENT_PROPERTY_NAMES_MIGRATION = [
|
|
2
|
-
// Input name changes
|
|
3
|
-
// v48 to v49
|
|
4
|
-
{
|
|
5
|
-
module: /@(siemens|simpl)\/element-ng/,
|
|
6
|
-
elementSelector: 'si-filtered-search',
|
|
7
|
-
propertyMappings: [{ replace: 'readonly', replaceWith: 'disabled' }]
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
module: /@(siemens|simpl)\/charts-ng/,
|
|
11
|
-
elementSelector: 'si-chart-gauge',
|
|
12
|
-
propertyMappings: [
|
|
13
|
-
{ replace: 'numberOfDecimals', replaceWith: ['minNumberOfDecimals', 'maxNumberOfDecimals'] }
|
|
14
|
-
]
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
module: /@(siemens|simpl)\/element-ng(\/(info-page|unauthorized-page))?/,
|
|
18
|
-
elementSelector: 'si-unauthorized-page',
|
|
19
|
-
propertyMappings: [
|
|
20
|
-
{ replace: 'heading', replaceWith: 'titleText' },
|
|
21
|
-
{ replace: 'subHeading', replaceWith: 'copyText' },
|
|
22
|
-
{ replace: 'description', replaceWith: 'instructions' }
|
|
23
|
-
]
|
|
24
|
-
}
|
|
25
|
-
];
|
|
1
|
+
export const COMPONENT_PROPERTY_NAMES_MIGRATION = [];
|
|
@@ -2,31 +2,4 @@
|
|
|
2
2
|
* Copyright (c) Siemens 2016 - 2026
|
|
3
3
|
* SPDX-License-Identifier: MIT
|
|
4
4
|
*/
|
|
5
|
-
export const ELEMENT_CLASS_CHANGES_MIGRATION = [
|
|
6
|
-
// btn-circle with btn-sm should have btn-sm removed
|
|
7
|
-
{
|
|
8
|
-
requiredClasses: ['btn', 'btn-circle', 'btn-sm'],
|
|
9
|
-
removeClasses: ['btn-sm'],
|
|
10
|
-
addClasses: []
|
|
11
|
-
},
|
|
12
|
-
// btn-circle with btn-xs should migrate to btn-sm
|
|
13
|
-
{
|
|
14
|
-
requiredClasses: ['btn', 'btn-circle', 'btn-xs'],
|
|
15
|
-
removeClasses: ['btn-xs'],
|
|
16
|
-
addClasses: ['btn-sm']
|
|
17
|
-
},
|
|
18
|
-
// btn-circle without size modifier should get btn-lg
|
|
19
|
-
{
|
|
20
|
-
requiredClasses: ['btn', 'btn-circle'],
|
|
21
|
-
excludedClasses: ['btn-lg', 'btn-sm', 'btn-xs'],
|
|
22
|
-
removeClasses: [],
|
|
23
|
-
addClasses: ['btn-lg']
|
|
24
|
-
},
|
|
25
|
-
// Non-circle buttons with btn-xs should migrate to btn-sm
|
|
26
|
-
{
|
|
27
|
-
requiredClasses: ['btn', 'btn-xs'],
|
|
28
|
-
excludedClasses: ['btn-circle'],
|
|
29
|
-
removeClasses: ['btn-xs'],
|
|
30
|
-
addClasses: ['btn-sm']
|
|
31
|
-
}
|
|
32
|
-
];
|
|
5
|
+
export const ELEMENT_CLASS_CHANGES_MIGRATION = [];
|
|
@@ -7,6 +7,7 @@ import { CLASS_MEMBER_REPLACEMENTS_MIGRATION } from './class-member-replacement.
|
|
|
7
7
|
import { COMPONENT_PROPERTY_NAMES_MIGRATION } from './component-property-names.js';
|
|
8
8
|
import { ELEMENT_CLASS_CHANGES_MIGRATION } from './element-class-changes.js';
|
|
9
9
|
import { ELEMENT_SELECTORS_MIGRATION } from './element-selectors.js';
|
|
10
|
+
import { PROVIDER_FUNCTION_REMOVALS_MIGRATION } from './provider-function-removals.js';
|
|
10
11
|
import { SYMBOL_REMOVALS_MIGRATION } from './symbol-removals.js';
|
|
11
12
|
import { SYMBOL_RENAMING_MIGRATION } from './symbol-renaming.js';
|
|
12
13
|
export const getElementMigrationData = () => ({
|
|
@@ -15,6 +16,7 @@ export const getElementMigrationData = () => ({
|
|
|
15
16
|
componentPropertyNameChanges: COMPONENT_PROPERTY_NAMES_MIGRATION,
|
|
16
17
|
elementClassChanges: ELEMENT_CLASS_CHANGES_MIGRATION,
|
|
17
18
|
elementSelectorChanges: ELEMENT_SELECTORS_MIGRATION,
|
|
19
|
+
providerFunctionRemovalChanges: PROVIDER_FUNCTION_REMOVALS_MIGRATION,
|
|
18
20
|
symbolRemovalChanges: SYMBOL_REMOVALS_MIGRATION,
|
|
19
21
|
symbolRenamingChanges: SYMBOL_RENAMING_MIGRATION
|
|
20
22
|
});
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
export const ELEMENT_SELECTORS_MIGRATION = [
|
|
2
|
-
// v48 to v49
|
|
3
|
-
{
|
|
4
|
-
replace: 'si-unauthorized-page',
|
|
5
|
-
replaceWith: 'si-info-page',
|
|
6
|
-
defaultAttributes: [
|
|
7
|
-
{ name: 'icon', value: 'element-warning-filled' },
|
|
8
|
-
{ name: 'iconColor', value: 'status-warning' }
|
|
9
|
-
]
|
|
10
|
-
}
|
|
11
|
-
];
|
|
1
|
+
export const ELEMENT_SELECTORS_MIGRATION = [];
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Siemens 2016 - 2026
|
|
3
|
-
* SPDX-License-Identifier: MIT
|
|
4
|
-
*/
|
|
5
1
|
const SYMBOL_RENAMING_MIGRATION = [
|
|
6
2
|
{
|
|
7
3
|
module: /@(siemens|simpl)\/element-ng(\/icon)?/,
|
|
@@ -103,7 +99,7 @@ const ELEMENT_SELECTORS_MIGRATION = [
|
|
|
103
99
|
{ replace: 'si-icon-next', replaceWith: 'si-icon' },
|
|
104
100
|
{ replace: 'si-tabset-next', replaceWith: 'si-tabset' },
|
|
105
101
|
{ replace: 'si-tab-next', replaceWith: 'si-tab' },
|
|
106
|
-
//
|
|
102
|
+
// v49 to v51
|
|
107
103
|
{
|
|
108
104
|
replace: 'si-unauthorized-page',
|
|
109
105
|
replaceWith: 'si-info-page',
|
|
@@ -175,7 +171,7 @@ const COMPONENT_PROPERTY_NAMES_MIGRATION = [
|
|
|
175
171
|
propertyMappings: [{ replace: '(toggle)', replaceWith: '(panelToggle)' }]
|
|
176
172
|
},
|
|
177
173
|
// Input name changes
|
|
178
|
-
//
|
|
174
|
+
// v49 to v51
|
|
179
175
|
{
|
|
180
176
|
module: /@(siemens|simpl)\/element-ng/,
|
|
181
177
|
elementSelector: 'si-filtered-search',
|
|
@@ -245,6 +241,12 @@ const ELEMENT_CLASS_CHANGES_MIGRATION = [
|
|
|
245
241
|
addClasses: ['btn-sm']
|
|
246
242
|
}
|
|
247
243
|
];
|
|
244
|
+
const PROVIDER_FUNCTION_REMOVALS_MIGRATION = [
|
|
245
|
+
{
|
|
246
|
+
module: /@(siemens)\/element-ng(\/icon)?/,
|
|
247
|
+
names: ['provideIconConfig']
|
|
248
|
+
}
|
|
249
|
+
];
|
|
248
250
|
/**
|
|
249
251
|
* Stable migration data for testing.
|
|
250
252
|
* This data is frozen and used for testing to ensure test stability.
|
|
@@ -256,6 +258,7 @@ export const getElementMigrationTestData = () => ({
|
|
|
256
258
|
componentPropertyNameChanges: COMPONENT_PROPERTY_NAMES_MIGRATION,
|
|
257
259
|
elementClassChanges: ELEMENT_CLASS_CHANGES_MIGRATION,
|
|
258
260
|
elementSelectorChanges: ELEMENT_SELECTORS_MIGRATION,
|
|
261
|
+
providerFunctionRemovalChanges: PROVIDER_FUNCTION_REMOVALS_MIGRATION,
|
|
259
262
|
symbolRemovalChanges: SYMBOL_REMOVALS_MIGRATION,
|
|
260
263
|
symbolRenamingChanges: SYMBOL_RENAMING_MIGRATION
|
|
261
264
|
});
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export const SYMBOL_REMOVALS_MIGRATION = [
|
|
2
|
-
//
|
|
2
|
+
// v49 to v51
|
|
3
3
|
{
|
|
4
|
-
module: /@
|
|
5
|
-
elementSelector: 'si-
|
|
6
|
-
names: ['
|
|
4
|
+
module: /@siemens\/element-ng\/file-uploader/,
|
|
5
|
+
elementSelector: 'si-file-uploader',
|
|
6
|
+
names: ['uploadTextFileSelect']
|
|
7
7
|
},
|
|
8
8
|
{
|
|
9
|
-
module: /@
|
|
10
|
-
elementSelector: 'si-
|
|
11
|
-
names: ['
|
|
9
|
+
module: /@siemens\/element-ng\/file-uploader/,
|
|
10
|
+
elementSelector: 'si-file-dropzone',
|
|
11
|
+
names: ['uploadTextFileSelect']
|
|
12
12
|
}
|
|
13
13
|
];
|
|
@@ -1,48 +1 @@
|
|
|
1
|
-
export const SYMBOL_RENAMING_MIGRATION = [
|
|
2
|
-
// v48 to v49
|
|
3
|
-
{
|
|
4
|
-
module: /@(siemens|simpl)\/dashboards-ng/,
|
|
5
|
-
symbolRenamings: [{ replace: 'CONFIG_TOKEN', replaceWith: 'SI_DASHBOARD_CONFIGURATION' }]
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
module: /@(siemens|simpl)\/element-ng(\/toast-notification)?/,
|
|
9
|
-
symbolRenamings: [{ replace: 'ToastStateName', replaceWith: 'StatusType' }],
|
|
10
|
-
toModule: '@siemens/element-ng/common'
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
module: /@(siemens|simpl)\/element-ng(\/(info-page|unauthorized-page))?/,
|
|
14
|
-
symbolRenamings: [
|
|
15
|
-
{ replace: 'SiUnauthorizedPageComponent', replaceWith: 'SiInfoPageComponent' }
|
|
16
|
-
],
|
|
17
|
-
toModule: '@siemens/element-ng/info-page'
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
module: /@siemens\/charts-ng/,
|
|
21
|
-
symbolRenamings: [
|
|
22
|
-
{ replace: 'SimplChartsNgModule', replaceWith: 'SiChartsNgModule' },
|
|
23
|
-
{ replace: 'SimplSeriesOption', replaceWith: 'SiSeriesOption' },
|
|
24
|
-
{ replace: 'SimplLineSeriesOption', replaceWith: 'SiLineSeriesOption' },
|
|
25
|
-
{ replace: 'SimplBarSeriesOption', replaceWith: 'SiBarSeriesOption' },
|
|
26
|
-
{ replace: 'SimplHeatmapSeriesOption', replaceWith: 'SiHeatmapSeriesOption' },
|
|
27
|
-
{ replace: 'SimplScatterSeriesOption', replaceWith: 'SiScatterSeriesOption' },
|
|
28
|
-
{ replace: 'SimplCandlestickSeriesOption', replaceWith: 'SiCandlestickSeriesOption' }
|
|
29
|
-
]
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
module: /@siemens\/live-preview/,
|
|
33
|
-
symbolRenamings: [
|
|
34
|
-
{ replace: 'SimplLivePreviewRoutingModule', replaceWith: 'SiLivePreviewRoutingModule' },
|
|
35
|
-
{ replace: 'SimplLivePreviewModule', replaceWith: 'SiLivePreviewModule' }
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
module: /@siemens\/maps-ng/,
|
|
40
|
-
symbolRenamings: [{ replace: 'SimplMapsNgModule', replaceWith: 'SiMapsNgModule' }]
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
module: /@siemens\/native-charts-ng/,
|
|
44
|
-
symbolRenamings: [
|
|
45
|
-
{ replace: 'SimplNativeChartsNgModule', replaceWith: 'SiNativeChartsNgModule' }
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
];
|
|
1
|
+
export const SYMBOL_RENAMING_MIGRATION = [];
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Siemens 2016 - 2026
|
|
3
|
-
* SPDX-License-Identifier: MIT
|
|
4
|
-
*/
|
|
5
1
|
import { discoverSourceFiles } from '../../utils/index.js';
|
|
6
|
-
import { applyAttributeSelectorMigration, applyElementClassMigration, applyClassMemberReplacementMigration, applyComponentPropertyNameMigration, applyElementSelectorMigration, applySymbolRemovalMigration, applySymbolRenamingMigration } from '../utilities/index.js';
|
|
2
|
+
import { applyAttributeSelectorMigration, applyElementClassMigration, applyClassMemberReplacementMigration, applyComponentPropertyNameMigration, applyElementSelectorMigration, applyProviderFunctionRemovalMigration, applySymbolRemovalMigration, applySymbolRenamingMigration } from '../utilities/index.js';
|
|
7
3
|
export const elementMigrationRule = (options, migrationData) => {
|
|
8
4
|
return async (tree, context) => {
|
|
9
5
|
for await (const discoveredSourceFile of discoverSourceFiles(tree, context, options.path)) {
|
|
@@ -16,7 +12,7 @@ export const elementMigrationRule = (options, migrationData) => {
|
|
|
16
12
|
discoveredSourceFile,
|
|
17
13
|
recorder
|
|
18
14
|
};
|
|
19
|
-
const { componentPropertyNameChanges, symbolRenamingChanges, attributeSelectorChanges, elementSelectorChanges, symbolRemovalChanges, elementClassChanges, classMemberReplacementChanges } = migrationData;
|
|
15
|
+
const { componentPropertyNameChanges, symbolRenamingChanges, attributeSelectorChanges, elementSelectorChanges, symbolRemovalChanges, elementClassChanges, classMemberReplacementChanges, providerFunctionRemovalChanges } = migrationData;
|
|
20
16
|
applyComponentPropertyNameMigration(migrationContext, componentPropertyNameChanges);
|
|
21
17
|
applySymbolRenamingMigration(migrationContext, symbolRenamingChanges);
|
|
22
18
|
applyAttributeSelectorMigration(migrationContext, attributeSelectorChanges);
|
|
@@ -24,6 +20,7 @@ export const elementMigrationRule = (options, migrationData) => {
|
|
|
24
20
|
applySymbolRemovalMigration(migrationContext, symbolRemovalChanges);
|
|
25
21
|
applyElementClassMigration(migrationContext, elementClassChanges);
|
|
26
22
|
applyClassMemberReplacementMigration(migrationContext, classMemberReplacementChanges);
|
|
23
|
+
applyProviderFunctionRemovalMigration(migrationContext, providerFunctionRemovalChanges);
|
|
27
24
|
tree.commitUpdate(recorder);
|
|
28
25
|
}
|
|
29
26
|
return tree;
|
|
@@ -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
|
+
};
|