- accordion: Removed
SiAccordionComponent.colorVariant
input without any replacement.
- action-modal: Removed
AlertDialogResult
, EditDiscardDialogResult
, ConfirmationDialogResult
and DeleteConfirmationDialogResult
as const objects. Use them only as type.
- angular: Angular 20+ is required.
Follow the Angular update guide to update your app: https://angular.dev/update-guide?v=19.0-20.0
- charts-ng: The
@siemens/charts-ng
package now requires ECharts version 6.0.0 or higher. Please update your dependencies accordingly. For details on ECharts 6, see: https://github.com/apache/echarts/releases/tag/6.0.0
- collapsible-panel: Removed
SiCollapsiblePanelComponent.toggle
output use SiCollapsiblePanelComponent.panelToggle
instead.
- dashboards-ng: gridstack.js v12 is required. To migrate to v12,
update the package and drop the inclusion of
gridstack-extra.css
in angular.json
- datepicker: Removed
SiDatepickerOverlayComponent.isFocused
and SiDatepickerOverlayDirective.isFocused
without any replacement.
- datepicker: Removed
SiDatepickerOverlayDirective.toggleOverlay
method. Use SiDatepickerOverlayDirective.showOverlay
or SiDatepickerOverlayDirective.closeOverlay
methods instead.
- datepicker: Removed
SiDateInputDirective.dateInputDebounceTime
, SiDateRangeComponent .debounceTime
and SiDatepickerDirective.triggeringInput
inputs without any replacement as they had no effect.
- element-theme: The
make-theme
SCSS mixin no longer prefixes
variables with element-
hence custom build-time OEM themes have
to be adapted accordingly, see:
https://element.siemens.io/architecture/theming/#build-time-custom-theme.
filtered-search: Removed following deprecated inputs:
SiFilteredSearchComponent.showIcon
without any replacement.
SiFilteredSearchComponent.selectedCriteriaIndex
. Instead of preselecting the most relevant option, sort the options by relevance.
SiFilteredSearchComponent.noMatchingCriteriaText
without any replacement.
SiFilteredSearchComponent.submitText
. Use SiFilteredSearchComponent.submitButtonLabel
instead.
SiFilteredSearchComponent.items
. Use SiFilteredSearchComponent.itemCountText
instead.
form: Removed deprecated SiFormContainerComponent.getValidationErrors
method.
Use the built-in mechanism of the si-form-item
to show validation errors.
See: https://element.siemens.io/components/forms-inputs/forms/#error-messages* action-modal: Removed deprecated methods:
SiActionDialogService.showAlertDialog
SiActionDialogService.showConfirmationDialog
SiActionDialogService.showEditDiscardDialog
SiActionDialogService.showDeleteConfirmationDialog
Use SiActionDialogService.showActionDialog
instead.
- form: Removed
SiFormItemComponent.inputId
and SiFormItemComponent.readonly
inputs without any replacement.
form: Removed siFormItemControl
directive.
Replace this directive with either the class form-control or form-check-input:
<input type="checkbox" siFormItemControl>
<input siFormItemControl>
<input type="checkbox" class="form-check-input">
<input class="form-control">
form: Checkboxes and radio inputs (<input type="checkbox">
or <input type="radio">
) must now be wrapped in a .form-check
container.
Additionally, when using Bootstrap’s grid system (bs-grid), each .form-check
must be placed
inside a .col-*
element and cannot be a direct child of a .row
.
This change is necessary to ensure proper alignment and spacing, especially for long or multiline
labels.
Before:
<input type="checkbox" class="form-check-input">
<label class="form-check-label">Label</label>
After:
<div class="form-check">
<input type="checkbox" class="form-check-input">
<label class="form-check-label">Label</label>
</div>
form: Using multiple form-controls within a single si-form-item is no longer supported.
Use si-form-fieldset to group multiple si-form-item components.
Before:
<si-form-item label="Group label">
<div class="form-check">
<input type="checkbox" id="check-1" class="form-check-input" [formControl]="check1" />
<label for="check-1">Label 1</label>
</div>
<div class="form-check">
<input type="checkbox" id="check-2" class="form-check-input" [formControl]="check2" />
<label for="check-2">Label 2</label>
</div>
</si-form-item>
After:
<si-form-fieldset label="Group label">
<si-form-item label="Label 1">
<input type="checkbox" class="form-check-input" [formControl]="check1" />
</si-form-item>
<si-form-item label="Label 2">
<input type="checkbox" class="form-check-input" [formControl]="check2" />
</si-form-item>
</si-form-fieldset>
icon: The si-icon
component has been completely re-implemented
including breaking changes in the API. The main motivation of this change is
support for SVG icons and to ensure a similar behavior compared to the direct
use via CSS classes, making icon usage more interchangeable.
We recommend adjusting your code to the new si-icon
. Alternatively, you may
use si-icon-legacy
to preserve the previous behavior.
The most notable changes are:
- Dropped all inputs other than the
icon
input. Use CSS classes instead.
- Dropped the default size along with the
size
input. Use CSS class icon
to apply the default size via CSS or use any other
text size class.
- The content of this component is hidden in the a11y tree. If needed, set
proper labels e.g.
aria-label="Close"
.
- Dropped support for stacked icons via inputs. Use HTML and the
icon-stack
class to construct layered icons.
Single colored icons can be converted as follows:
<si-icon icon="element-user" color="text-danger" />
<si-icon icon="element-user" class="icon text-danger" />
Important: Previously, the class icon was automatically applied. Unless not needed,
it must now be applied manually.
The icon class sets a fixed size of 1.5rem.
Stacked (composite) icons need to be constructed using HTML.
<si-icon
icon="element-alarm-background-filled"
color="status-danger"
stackedIcon="element-alarm-tick"
stackedColor="text-secondary"
size="display-2"
/>
<span class="icon icon-stack">
<si-icon class="si-display-lg status-danger" icon="element-alarm-background-filled" />
<si-icon class="si-display-lg text-secondary" icon="element-alarm-tick" />
</span>
For status icons, the new si-status-icon
component simplifies usage even more:
<si-icon
icon="element-circle-filled"
color="status-danger"
stackedIcon="element-state-exclamation-mark"
stackedColor="status-danger-contrast"
size="display-2"
/>
<si-status-icon class="si-display-lg" status="danger" />
- maps-ng: The
@siemens/maps-ng
package now requires ol-mapbox-style version 13.1.0 or higher. Please update your dependencies accordingly. For details on ol-mapbox-style 13, see: https://github.com/openlayers/ol-mapbox-style/releases/tag/v13.0.0
- navbar-vertical: Removed
SiNavbarVerticalComponent.autoCollapseDelay
input without any replacement.
popover: The siPopover
directive has been completely re-implemented,
including breaking changes in the API.
The main highlight is a complete accessibility support and
unified interaction.
The most notable changes are:
- the triggers opening or closing a popover can no longer be modified
- instead of having two
shown
/hidden
events there is one visibilityChange
event
- all inputs and outputs are prefixed with
siPopover
to avoid name conflicts
- a popover always receives the focus on open
The new popover was already available as a preview via siPopoverNext
in v47 and is now fully
replacing the old popover with v48. If you are already using siPopoverNext
, you can do a simple
search & replace removing the next
suffix.
The "old" popover is still available with via the legacy entrypoint
@siemens/element-ng/popover-legacy
.
Classes and selectors were renamed accordingly:
siPopover
--> siPopoverLegacy
SiPopoverDirective
--> SiPopoverLegacyDirective
SiPopoverModule
--> SiPopoverLegacyModule
Usually, the migration to new popover is simple.
If the trigger
or outsideClick
was modified, please read the
popover documentation
on how to properly use a popover.
In all other cases, it is sufficient to replace shown
/ hidden
events with visibilityChange
and prefix all input / outputs with siPopover
.
- result-details-list: Removed
ResultDetailStepState
as object. Use ResultDetailStepState
as type with direct string values.
- search-bar:
SiSearchBarComponent.searchChange
is not emitted during initialisation with value
input
- split: Removed unused
SiSplitPartComponent.headerStatusColor
and SiSplitPartComponent.headerStatusIconClass
inputs without any replacement.
tabs: The si-tabs
component has been completely re-implemented
including breaking changes in the API. The main highlights are enhanced
accessibility, improved responsive behavior, and Angular router support.
The most notable changes are:
- replacing the
selectedIndex
with an active
input in the si-tab
- dropping
iconAltText
in favor of enforcing heading
- if an icon is provided, the heading is always visually hidden
- no tab is selected by default
- dropping
deselect
and selectedTabIndexChange
in favor of using activeChange
on the si-tab
The new tabs were already available as a preview via si-tabs-next
in v47 and are now fully
replacing the old tabs with v48. If you are already using si-tabs-next
, you can do a simple
search & replace removing the -next
suffix.
The "old" tabs are still available via legacy entrypoint @siemens/element-ng/tabs-legacy
.
Classes and selectors were renamed accordingly:
si-tabset
--> si-tabset-legacy
SiTabsetComponent
--> SiTabsetLegacyComponent
si-tab
--> si-tab-legacy
SiTabComponent
--> SiTabLegacyComponent
SiTabModule
--> SiTabLegacyModule
When migrating to the new tabs, we recommend checking whether using the
router based approach
is applicable.
Otherwise, code needs to be changed to use the new active
input
and renaming iconAltText
to heading
:
<si-tabset selectedTabIndex="0" (selectedTabIndexChange)="changedTab($event)">
<si-tab iconAltText="Favorites" icon="element-favorite">...</si-tab>
</si-tabset>
<si-tabset>
<si-tab heading="Favorites" icon="element-favorite" [active]="true" (activeChange)="changedTab($event)">...</si-tab>
</si-tabset>
Please note, the implementation of changedTab
must also be adjusted.
tree-view: Removed SiTreeViewComponent.disableFilledIcons
input.
Tree items no longer show a filled icon on selection.
- tree-view: Removed
SiTreeViewComponent.trackByFunction
input which had no effect.
- typeahead: Removed
SiTypeaheadDirective.typeaheadOnMultiselectClose
and SiTypeaheadDirective.typeaheadClosed
output. Use SiTypeaheadDirective.typeaheadOpenChange
instead.
wizard: The si-wizard
now has the navigation buttons by default in the footer.
To restore the old behavior set SiWizardComponent.inlineNavigation
to true
:
<si-wizard inlineNavigation>
...
</si-wizard>
- wizard: Removed
SiWizardComponent.hasNavigation
input and SiWizardComponent.cancel
output. Use SiWizardComponent.hideNavigation
and SiWizardComponent.wizardCancel
respectively instead.