v48.0.0
48.0.0 (2025-08-26)
Features
- angular: update to Angular 20 (cf9d3d5)
- card: add support for sub-heading to cards (183dcab)
- charts/gauge: support custom value formatter (5ea6af2)
- copyright-notice: use the company-name provided by the theme (fe2fe9f)
- dashboard-toolbar: add title attribute to edit button (14afc3c)
- element-theme: update to new version of siemens brand package (59d92a1)
- element-translation-ng: add
t-function to locally override $localize (b2916f4), closes #436 - filtered-search: align with theme updates (72f2227)
- form: drop form-item legacy mode (5d83257)
- form: allow overriding of errormessage IDs on custom form controls (3afbc5a)
- form: support context help button in form-items (6bd0863), closes #511
- form: improve visual appearance of long and multiline checkbox and radio labels (32a18ce)
- header-dropdown: remove automatic filled icon when the dropdown is open (d259942)
- help-button: introduce a help button component (29ff865)
- icon: replace current
si-iconwithsi-icon-next(cb06a07) - landing-page: add landing page feature components (26e0066)
- launchpad: support
routerLinkfor launchpad apps (bf78c1f) - list-details: support usage with the Angular router (4731e77)
- maps-ng: open source maps-ng (0d70b10)
- micro-charts: add micro bar chart (89e779f)
- micro-charts: add micro donut chart (5e29b58)
- micro-charts: add micro line chart (e7c8429)
- micro-charts: add micro progress chart (e9333dc)
- popover: replace current
siPopoverwithsiPopoverNext(b96e46f) - search-bar: align with theme updates (709aa53)
- switch: align switch label padding with checkboxes (13cf2f4)
- tabs: align with UX specs (e3280c6)
- tabs: replace current
si-tabswithsi-tabs-next(6fbba15) - theme: update critical status colors to use data-orchid palette (f5e2b3b)
- toast-notification: support pausing of toast-notification (eac9bc3)
- tooltip: support template context with tooltip template (6bfc714)
- tree-view: remove
SiTreeViewComponent.disableFilledIconsinput (97b5aef) - typography: update typography definitions to latest Figma ones (779058e)
- wizard: switch to footer navigation as default (2f07b9c)
Bug Fixes
- accordion: don't switch to cursor pointer in case of disabled panel (bebdc16)
- badge: align default text with design specs (d96cf0b), closes #425
- charts: title and legend overlap on theme change (5daabb5)
- circle-status: correct spacing in aria label generation (ac59ea3)
- datatable: keep focused row in view when using keyboard (e0f3af7)
- datatable: prevent overlapping last row on footer (9a0a9e8)
- date-range-filter: allow empty reference point (2f7748e)
- date-range-filter: stop automatic advanced mode toggle in input mode (6337d0a)
- form: ensure default width of si-form-fieldset labels is 16% in horizontal layout (0f16342)
- formly: link error messages to custom controls (1dfb9ee)
- formly: link error messages to input (11c1b61)
- help-button: don't change color on hover when disabled (5df4d9f)
- live-preview: change initialization order to fix locale change loop (acf2190), closes #451
- maps: use new fonts, fallback to sans-serif (6b17274)
- navbar-vertical: support flexible drop down positioning (24acde0)
- search-bar: do not emit
searchChangeduring initialisation (e2be687) - select: announce readonly flag in screen-reader (ed049b1)
- status-toggle: use correct cursor for disabled state (6cde8c0)
- tabs-next: ensure that the active tab is focussed by default (2b787fb)
- threshold: input is not focused after adding step (6cc6765)
- utilities: apply correct style for
rounded-endutility (295fc49)
NOTES
-
header-dropdown: The
si-header-dropdown-itemno longer shows a filled icon when the dropdown is open. -
theme: The colors for the "critical" status have changed. If this
change is not desired, the old colors can be restored using this snippet in the
application's mainstyles.scss:@use '@siemens/element-theme/src/theme/base-colors'; // load theme here as usual @use '@siemens/element-theme/src/theme'; @use '@siemens/element-ng/element-ng'; // add overrides :root { --element-base-critical: #{base-colors.$color-red-100}; --element-status-critical: #{base-colors.$color-red-900}; --element-text-critical: #{base-colors.$color-red-700}; } :root.app--dark { --element-base-critical: #{base-colors.$color-red-900}; --element-status-critical: #{base-colors.$color-red-700}; --element-text-critical: #{base-colors.$color-red-100}; }
BREAKING CHANGES
-
accordion: Removed
SiAccordionComponent.colorVariantinput without any replacement. -
action-modal: Removed
AlertDialogResult,EditDiscardDialogResult,ConfirmationDialogResultandDeleteConfirmationDialogResultas const objects. Use them only as type. -
action-modal: Removed deprecated methods:
SiActionDialogService.showAlertDialogSiActionDialogService.showConfirmationDialogSiActionDialogService.showEditDiscardDialogSiActionDialogService.showDeleteConfirmationDialog
Use
SiActionDialogService.showActionDialoginstead. -
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-ngpackage 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.toggleoutput useSiCollapsiblePanelComponent.panelToggleinstead. -
dashboards-ng: gridstack.js v12 is required. To migrate to v12,
update the package and drop the inclusion ofgridstack-extra.css
inangular.json -
datepicker: Removed
SiDatepickerOverlayComponent.isFocusedandSiDatepickerOverlayDirective.isFocusedwithout any replacement. -
datepicker: Removed
SiDatepickerOverlayDirective.toggleOverlaymethod. UseSiDatepickerOverlayDirective.showOverlayorSiDatepickerOverlayDirective.closeOverlaymethods instead. -
datepicker: Removed
SiDateInputDirective.dateInputDebounceTime,SiDateRangeComponent .debounceTimeandSiDatepickerDirective.triggeringInputinputs without any replacement as they had no effect. -
element-theme: The
make-themeSCSS mixin no longer prefixes
variables withelement-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.showIconwithout any replacement.SiFilteredSearchComponent.selectedCriteriaIndex. Instead of preselecting the most relevant option, sort the options by relevance.SiFilteredSearchComponent.noMatchingCriteriaTextwithout any replacement.SiFilteredSearchComponent.submitText. UseSiFilteredSearchComponent.submitButtonLabelinstead.SiFilteredSearchComponent.items. UseSiFilteredSearchComponent.itemCountTextinstead.
-
form: Removed deprecated
SiFormContainerComponent.getValidationErrorsmethod.Use the built-in mechanism of the
si-form-itemto show validation errors.
See: https://element.siemens.io/components/forms-inputs/forms/#error-messages -
form: Removed
SiFormItemComponent.inputIdandSiFormItemComponent.readonlyinputs without any replacement. -
form: Removed
siFormItemControldirective.Replace this directive with either the class form-control or form-check-input:
<!-- Before --> <input type="checkbox" siFormItemControl> <input siFormItemControl> <!-- After --> <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-checkcontainer.Additionally, when using Bootstrap’s grid system (bs-grid), each
.form-checkmust 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-iconcomponent 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
usesi-icon-legacyto preserve the previous behavior.The most notable changes are:
- Dropped all inputs other than the
iconinput. Use CSS classes instead. - Dropped the default size along with the
sizeinput. Use CSS classicon
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:
<!-- before --> <si-icon icon="element-user" color="text-danger" /> <!-- after --> <si-icon icon="element-user" class="icon text-danger" />
Important: Previously, the class
iconwas 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.
<!-- before --> <si-icon icon="element-alarm-background-filled" color="status-danger" stackedIcon="element-alarm-tick" stackedColor="text-secondary" size="display-2" /> <!-- after --> <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-iconcomponent simplifies usage even more:<!-- before --> <si-icon icon="element-circle-filled" color="status-danger" stackedIcon="element-state-exclamation-mark" stackedColor="status-danger-contrast" size="display-2" /> <!-- after --> <si-status-icon class="si-display-lg" status="danger" />
- Dropped all inputs other than the
-
maps-ng: The
@siemens/maps-ngpackage 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.autoCollapseDelayinput without any replacement. -
popover: The
siPopoverdirective 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/hiddenevents there is onevisibilityChangeevent - all inputs and outputs are prefixed with
siPopoverto avoid name conflicts - a popover always receives the focus on open
The new popover was already available as a preview via
siPopoverNextin v47 and is now fully
replacing the old popover with v48. If you are already usingsiPopoverNext, you can do a simple
search & replace removing thenextsuffix.The "old" popover is still available with via the legacy entrypoint
@siemens/element-ng/popover-legacy.
Classes and selectors were renamed accordingly:siPopover-->siPopoverLegacySiPopoverDirective-->SiPopoverLegacyDirectiveSiPopoverModule-->SiPopoverLegacyModule
Usually, the migration to new popover is simple.
If the
triggeroroutsideClickwas modified, please read the
popover documentation
on how to properly use a popover.In all other cases, it is sufficient to replace
shown/hiddenevents withvisibilityChange
and prefix all input / outputs withsiPopover. -
result-details-list: Removed
ResultDetailStepStateas object. UseResultDetailStepStateas type with direct string values. -
search-bar:
SiSearchBarComponent.searchChangeis not emitted during initialisation withvalueinput -
split: Removed unused
SiSplitPartComponent.headerStatusColorandSiSplitPartComponent.headerStatusIconClassinputs without any replacement. -
tabs: The
si-tabscomponent 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
selectedIndexwith anactiveinput in thesi-tab - dropping
iconAltTextin favor of enforcingheading - if an icon is provided, the heading is always visually hidden
- no tab is selected by default
- dropping
deselectandselectedTabIndexChangein favor of usingactiveChangeon thesi-tab
The new tabs were already available as a preview via
si-tabs-nextin v47 and are now fully
replacing the old tabs with v48. If you are already usingsi-tabs-next, you can do a simple
search & replace removing the-nextsuffix.The "old" tabs are still available via legacy entrypoint
@siemens/element-ng/tabs-legacy.
Classes and selectors were renamed accordingly:si-tabset-->si-tabset-legacySiTabsetComponent-->SiTabsetLegacyComponentsi-tab-->si-tab-legacySiTabComponent-->SiTabLegacyComponentSiTabModule-->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
activeinput
and renamingiconAltTexttoheading:<!-- before --> <si-tabset selectedTabIndex="0" (selectedTabIndexChange)="changedTab($event)"> <si-tab iconAltText="Favorites" icon="element-favorite">...</si-tab> </si-tabset> <!-- after --> <si-tabset> <si-tab heading="Favorites" icon="element-favorite" [active]="true" (activeChange)="changedTab($event)">...</si-tab> </si-tabset>
Please note, the implementation of
changedTabmust also be adjusted. - replacing the
-
tree-view: Removed
SiTreeViewComponent.disableFilledIconsinput.Tree items no longer show a filled icon on selection.
-
tree-view: Removed
SiTreeViewComponent.trackByFunctioninput which had no effect. -
typeahead: Removed
SiTypeaheadDirective.typeaheadOnMultiselectCloseandSiTypeaheadDirective.typeaheadClosedoutput. UseSiTypeaheadDirective.typeaheadOpenChangeinstead. -
wizard: The
si-wizardnow has the navigation buttons by default in the footer.To restore the old behavior set
SiWizardComponent.inlineNavigationtotrue:<si-wizard inlineNavigation> ... </si-wizard> -
wizard: Removed
SiWizardComponent.hasNavigationinput andSiWizardComponent.canceloutput. UseSiWizardComponent.hideNavigationandSiWizardComponent.wizardCancelrespectively instead.
DEPRECATIONS
-
charts/gauge: Input
labelFormattershould no longer be used to format the value. UsevalueFormatterinstead. -
datepicker:
SiDatepickerComponent.calenderWeekLabelinput is deprecated. UseSiDatepickerComponent.calendarWeekLabelinstead. -
element-theme: All
.si-*typography utility classes were adapted to match the
new typography system. Replace the following matches with their new
counterparts:- Instead of
.si-h1-black, use.si-h1-boldinstead. - Instead of
.si-title-1-bold, use.si-h4-boldinstead. - Instead of
.si-title-1, use.si-h4instead. - Instead of
.si-title-2-bold, use.si-h5-boldinstead. - Instead of
.si-title-2, use.si-h5instead. - Instead of
.si-body-1, use.si-body-lginstead. - Instead of
.si-body-2, use.si-bodyinstead. - Instead of
.si-display-1, use.si-display-xlinstead. - Instead of
.si-display-2, use.si-display-lginstead. - Instead of
.si-display-3, use.si-display-boldinstead. - Instead of
.si-display-4, use.si-displayinstead.
- Instead of
-
element-theme: All
$si-font-size-*,$si-line-height-*, and$si-font-weight-*
variables were adapted to match the new typography system. Replace the following
matches with their new counterparts:- Instead of
$si-*-h1-black, use$si-*-h1-boldinstead. - Instead of
$si-*-title-1-bold, use$si-*-h4-boldinstead. - Instead of
$si-*-title-1, use$si-*-h4instead. - Instead of
$si-*-title-2-bold, use$si-*-h5-boldinstead. - Instead of
$si-*-title-2, use$si-*-h5instead. - Instead of
$si-*-body-1, use$si-*-body-lginstead. - Instead of
$si-*-body-2, use$si-*-bodyinstead. - Instead of
$si-*-caption-1, use$si-*-captioninstead. - Instead of
$si-*-display-1, use$si-*-display-xlinstead. - Instead of
$si-*-display-2, use$si-*-display-lginstead. - Instead of
$si-*-display-3, use$si-*-display-boldinstead. - Instead of
$si-*-display-4, use$si-*-displayinstead.
- Instead of
-
status-counter: The component
si-icon-statushas been renamed to
si-status-counter. The class name changes fromSiIconStatusComponent
toSiStatusCounterComponent. The old names still work and will
be removed in future release.To migrate to the new names, change imports from
SiIconStatusComponent
orSiIconStatusModuletoSiStatusCounterComponentand replace
si-icon-statuswithsi-status-counterin all templates.