49.6.0 (2026-04-13)
- schematics: add migration schematic for modal options from
initialStatetoinputValues(37401de)
- datepicker: set correct range preview on dateRange input changes (d34bd15)
- live-preview: code editor cursor position misaligned (25ce952)
- theme: align checkbox and radio inputs (0332eb4)
- toast-notification: fix missing toasts when called during bootstrap (bfa89b8)
- tooltip: remove min-width constraint from tooltip (548b313)
49.5.0 (2026-04-09)
- element-theme: introduce btn ghost style (63dcabb)
- microchart-progress: improve accessibility (f0de43a)
- modal: migrate .modal-backdrop to use CSS starting-style instead of using timers (abf3119)
- navbar-vertical-next: add navbar-vertical-next component (5a378b6)
- buttons: selection buttons hover state (5bbba31)
- charts: import missing echarts imports (fd1a5e0)
- charts: visualize datasets in si-chart-cartesian and si-chart (233009b), closes #1761
- chat-messages: improve chat container layout (b9c27b4)
- dashbaords-ng: use square icon style for edit button (daf06ee)
- dashboards-ng: use siTooltip over html native tooltip (712e77b)
- datatable: use correct header-height (4d96425)
- element-theme: reduce button padding to align with design specs (b98ef66), closes #1801
- file-uploader: fix icon and text alignment (0ebca28)
- filtered-search: only emit criteriaValueChange once after option selection (cf8fbd8)
- live-preview: hide StackBlitz button without element-theme dependency (d885f54)
- tooltip: remove aria-describedby when tooltip is disabled (d204337)
- tree-view: ensure contextMenuItems input changes are automatically applied (1a0f1c4)
- typography: align
codeandpretags with UX (81de50b)
-
element-theme: The ghost button naming deviates from the usual button naming convention to avoid breaking changes. The
.btn-primary-ghostclass has been added to represent the updated ghost button style, while the.btn-ghostclass continues to represent the tertiary ghost style buttons.With the next major release, the ghost button naming will be updated to match the button naming conventions.
49.4.0 (2026-03-26)
- threshold: add useAliasForStepValues input to display alias labels (1dadebc)
- application-header: highlight active route on mobile (4d25237)
49.3.0 (2026-03-25)
- card: add support for
card-outline(2ef16f9) - dashboards-ng: extend module-federation version range to include v21 (e669f31)
- navbar-vertical: allow to customize search debounce time (fe05c29)
- side-panel: extract status actions into new component (f796850)
- form: align
col-form-labelwithform-controlandform-check(bd1e763) - form: prevent feedback icon from disappearing on hover in readonly inputs (52a3441)
- header-dropdown: use correct icon size for checked item (047ded0)
- side-panel: use correct spacing in collapse mode (5c1fd2b)
-
side-panel: The input
SiSidePanelContentComponent.statusActionsshould no longer be used. Use the new<si-side-panel-actions>instead:<si-side-panel-content> <si-side-panel-actions> <button type="button" si-side-panel-action icon="element-alarm-background-filled" iconColor="status-danger" stackedIcon="element-alarm-tick" stackedIconColor="text-body" (click)="action()" > Action </button> </si-side-panel-actions> </si-side-panel-content>
49.2.0 (2026-03-18)
- live-preview: support creating a stackblitz based on an example (e5a6877)
- ngx-datatable: support
@siemens/ngx-datatablev26 (a872638) - typeahead: make overlay scroll strategy configurable (3bd1e5a)
- maps: add extraProperties to map feature point to match MapPointMetaData interface (a337170)
- map: show popover with name and description on click (21b9d2e)
- select: optimize single selection rendering (2873d0b)
49.1.0 (2026-03-13)
- Revert "chore(element-ng): narrow @siemens/ngx-datatable peer dependency to v25" (cc760f1)
- datatable: add theming for the datatable summary row (9f5a354)
- landing-page: add default texts for forgot password and register now links (b4dc71a)
- live-preview: allow apps to use AOT compilation with live preview (240ed53)
- tabs: add contentOverflowAuto attribute to si-tabset for auto-scrolling (b4d22b8)
- tabs: provide the ability to render a tabpanel outside the tabset via CDK DOM Portal (3c6a39e)
- typeahead: experimental option source with loading state (a673a56)
- card: use correct spacing in
si-action-card(4c15dad) - dashboards-ng: prevent unnecessary widgetRef config updates (9032307)
- filtered-search: only emit
doSearchonce for each change (c75bde8) - landing-page: pass loginAlert action and translationParams (71854e6), closes #1555
- landing-page: prevent initial animation (0c9ce58)
- launchpad: align external icon size and spacing with design specs (d04db2a)
- navbar-vertical: remove absolute positioning from title (b45b7a3)
- schematics: distinguish files from directories during ts compilation (e010e2c)
- side-panel: hide fullscreen button on smaller breakpoints (282005b), closes #1529
- typography: align
leadwithbody-lg(95cc743)
49.0.0 (2026-02-18)
Release blog post: "Welcome Element v49!"
- ag-grid: add Element theme for AG Grid (0c6ad96)
- angular: update to Angular 21 (1f6ff72)
- buttons: add square icon buttons (acb4069)
- buttons: unify sizing across text and icon variants (d3c42ba)
- buttons: update selection buttons to support tooltips (4893864)
- charts: theme change without reloading the chart (48aee8e)
- charts: split into separate entry point (06ca45e)
- chat-messages: add ai-welcome-screen component (1aaaf7c)
- content-action-bar: add tooltip support (8a153c3)
- dashboards-ng: custom id provider for widget instance (f815092)
- dashboards: add support for primary and secondary toolbar actions via component inputs (bc4d0d2)
- dashboards: native federation (f81c5a4)
- element-ng: replace
@angular/animationswith native CSS (4ae0b79) - element-theme: introduce new active states (d917006)
- file-uploader: provide translation params to uploader messages (d6dfadf), closes #1447
- form: extend and align validation messages with UX guidelines (13f8c88), closes #1373
- forms: derive validation border via CSS on
.form-control-wrapper(85bcfb3), closes #1339 - icon: enable svg icons by default (9093f59)
- icons: use open source icons (be23170)
- landing-page: remove registration introduction text due to ux guidelines (10c08f8)
- launchpad: align to new style and responsive design (643f66c)
- list-details: stabilize APIs and remove experimental flag (cb3ad59)
- live-preview: use siemens syntax highlighting colors (f2b77a8)
- navbar-vertical: update badges visibility logic (acd4456)
- navbar-vertical: use
siTooltipfor collapsed items (515137a) - npm: add support for ngx-translate v17 (56e04bf)
- password-toggle: support form validation for si-password-toggle (caca09e)
- schematics: add class member replacement functionality (f31da29)
- schematics: add element class migration for element styling changes (94d9bcf)
- schematics: add icon path migration schematic to update icon imports (0d99124)
- schematics: add migration for Simpl* to Si* module renamings (2b28daf)
- schematics: add new schematics data for version 49 (41535ca)
- schematics: add ng-update schematic (4622b60)
- schematics: remove OSS migration schematics (8bfc8bf)
- schematics: rename output-names and component-names model (ebbf217)
- schematics: update schematics for dashboards config token migration (ea54afb)
- side-panel: add backdrop support (fb9fefd)
- tooltip: add animation (a3e09ea)
- breadcrumb: align with Figma component (36147b6)
- buttons: button group sizing (f928791)
- charts: update progress chart colors on theme change (be0defc)
- chat-messages: improve scroll responsiveness and expose scroll methods on si-chat-container (58b6c2e)
- dashboards-ng: correctly overlap gridstack resize icon on custom resize icon (0db47e7)
- dashboards-ng: drop ngx-translate peerDependency (b5fa436)
- dashboards-ng: use consistent spacing for draggable-overlay (d73d785)
- date-range-filter: correctly update range when toggling advanced mode (287dedb)
- datepicker: update date even on changing only time (b3b3c8f), closes #1431
- deps: add missing peer dependencies for dashboards-ng, maps-ng and native-charts-ng (1c8b49a)
- file-uploader: center file types text in si-file-dropzone (e12fff8)
- filtered-search: avoid expression change errors in zoneless apps (025ccf9)
- icon: ng-deep styles not getting applied with webpack builds (5bbf233)
- inline-notification: remove colon from heading (800ee01)
- ip-input: retain cursor position when inserting characters (2084039)
- list-details: prevent half visible content (9b43b9d)
- live-preview: support zoneless (6d83417)
- navbar-vertical: focus and active state handling (2edbcc9)
- pills-input: only show placeholder text when a string is provided (4e1ccdf)
- schematics: remove unused simpl-siemens-migration schematic (56d5c79)
- select: maintain filtered rows when updating all rows (769a8f7)
- side-panel: set default display to inline-flex (5317335)
- toast-notification: restore RTL for toast notification (a4732be)
- tooltip: always show if hovered or focused (b55e175)
- tooltip: update content while tooltip is open (f279709)
- tree-view: use hasAnyChildren from parent to determine inline padding (9d37335)
- typeahead: treat
spaceas normal search text in multi select (75f293d) - wizard: align save button correctly when hideNavigation is true (4a1ec89)
- icons: We updated the icons’ underlying grid. The geometry has been improved to allow proportional scaling at 16, 20, and 24 px, with line thickness adjusted accordingly. This also allows scaling up, if needed, in 4 px increments. The new icon set also has reduced built-in margins around the icons, improving visual balance with surrounding elements.
- navbar-vertical: The badge behavior in the vertical navbar has been updated. Badge
colors are now consistent in both collapsed and expanded states, text-only
badges are detected and rendered as a simple dot in collapsed mode.
In addition, a new input property
hideBadgeWhenCollapsedallows to optionally hide the badge when the navbar is collapsed (by default, badges remain visible in both states), improving flexibility and visual consistency. - launchpad: The
subtitleTextinput no longer shows "Access all your apps" by default. To maintain the previous behavior, explicitly set the input. - buttons: The new square icon buttons (
.btn-icon) are introduced as the new default style for icon buttons. The existing circle buttons (.btn-circle) are now reserved for cases where a circular shape is explicitly required. - buttons: The minimum inline size for standard buttons (excluding circle, link, close, and icon variants) has been reduced from
100pxto80px. This provides more flexibility for compact layouts and the buttons appear narrower compared to earlier versions. - side-panel: Backdrop support has been added to the side-panel. By default, the side-panel will now render a modal backdrop that blocks background interactions
and closes the panel on click. To restore the previous behavior (without a backdrop), set
disableBackdroptotrue. - typeahead: The typeahead multi selection which is also used in the
filtered-searchno longer selects values when pressingspace. Insteadspaceis treated as a normal search value. - angular: The whitespace character between time and meridian in date/time formats has changed with Angular 21. The format now uses a narrow no-break space (U+202F) instead of a regular space. See angular/angular#65707 for more details.
-
icon:
<si-icon>now renders icons by default as SVG instead of using the icon-font.element-*icon classes are not affected by this change.SVG icons render slightly differently so VRT snapshots may need to be updated.
To restore the previous behavior, opt-out SVG icons.
provideIconConfig({ disableSvgIcons: true })
-
landing-page: The
registerNowIntroTextinput has been removed to align with UX guidelines. Remove all usages. -
file-uploader: File uploader translation strings now require interpolation placeholders.
The
SiFileUploaderComponentandSiFileDropzoneComponentinputs:maxFileSizeTextrequires the placeholder{{maxFileSize}}to display the maximum file size.acceptTextrequires the placeholder{{accept}}to display the accepted file types.maxFilesReachedTextrequires the placeholder{{maxFiles}}to display the maximum number of files allowed.
Migration guide for english default translation keys:
Before:
{ "SI_FILE_UPLOADER.MAX_SIZE": "Maximum upload size", "SI_FILE_UPLOADER.ACCEPTED_FILE_TYPES": "Accepted file types", "SI_FILE_UPLOADER.MAX_FILE_REACHED": "Maximum number of files reached" }After:
{ "SI_FILE_UPLOADER.MAX_SIZE": "Max. {{maxFileSize}} upload size.", "SI_FILE_UPLOADER.ACCEPTED_FILE_TYPES": "Accepted file types: {{accept}}.", "SI_FILE_UPLOADER.MAX_FILE_REACHED": "Max. {{maxFiles}} files" } -
element-ng: Animations can no longer be disabled using
@angular/animationsspecific features like:NoopAnimationsModuleBrowserAnimationsModule.withConfig({disableAnimations: false})provideNoopAnimationsprovideAnimationsAsync('noop')
Use CSS to disable animations. See: https://element.siemens.io/architecture/motion-animation/
-
icons:
@simpl/element-iconspackage replaced by@siemens/element-icons.The new icon set implements the new icon style, which has a reduced margin around the icons.
Replace the package:
- Uninstall
@simpl/element-icons - Install
@siemens/element-icons - Adjust import in style sheet.
Before:
@use '@simpl/element-icons/dist/style/simpl-element-icons';After:@use '@siemens/element-icons/dist/style/siemens-element-icons'; - Adjust SVG imports:
Before:
import { ... } from '@simpl/element-ng/ionic';Before:import { ... } from '@simpl/element-ng/svg';After:import { ... } from '@siemens/element-icons';
Adjust styles: Always use the correct classes for sizing an icon:
- (small: 16px):
<si-icon class="icon-sm" icon="..." /> - (default: 20px):
<si-icon class="icon" icon="..." /> - (large: 24px):
<si-icon class="icon-lg" icon="..." />
As the icons new have a reduced built-in margin, spacings must be adjusted:
- remove negative margins, which previously were needed to remove the spacing overhead
- add extra spacing-1 between icons and inline-text
Element components have those changes automatically applied (including buttons). When updating follow Element recommendations, always use the
iconclasses and remove custom overrides. - Uninstall
-
tooltip: The
triggersinput has been removed to align the behavior with accessibility guidelines. Remove all usages. The tooltip will always be shown if the target element is focused or hovered. -
buttons: Removed the class
btn-xs, use insteadbtn-smfor icon buttons.Button heights has been standardized to fix misalignment between text buttons and icon buttons.
All button sizes now follow the same specifications:
- Default: 32px
- Large (btn-lg): 40px
- Small (btn-sm): 24px (reduced from 28px for text buttons)
Changes:
- btn-sm reduced to 24px to preserve the 8px increment scale (24 → 32 → 40)
- icon buttons now match text button heights
Update your code if it relies on previous
.btn-circlesizing:Before:
<!-- Circle buttons had inconsistent height mapping --> <button class="btn btn-circle">...</button> <!-- was 40px --> <button class="btn btn-circle btn-sm">...</button> <!-- was 32px --> <button class="btn btn-circle btn-xs">...</button> <!-- was 24px -->
After:
<!-- Circle buttons now align with text button sizes --> <button class="btn btn-circle btn-lg">...</button> <!-- 40px - add btn-lg --> <button class="btn btn-circle">...</button> <!-- 32px - now default --> <button class="btn btn-circle btn-sm">...</button> <!-- 24px - now matches text btn-sm --> <!-- btn-xs has been removed - use btn-sm for 24px buttons -->
If you were using
btn-xs, replace it withbtn-smto maintain the same 24px size. -
npm:
ngx-translatenow requires an explicitmissingTranslationHandlerto provide default translations for Element.Add
provideMissingTranslationHandlerForElement()to yourTranslateModuleor provider configuration:<!-- Before with TranslateModule --> TranslateModule.forRoot({ ... }); <!-- After --> TranslateModule.forRoot({ // Translate configuration ..., missingTranslationHandler: provideMissingTranslationHandlerForElement() }); <!-- Before with TranslateModule and missing translation handler --> TranslateModule.forRoot({ ..., missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler } }); <!-- After --> TranslateModule.forRoot({ // Translate configuration ..., missingTranslationHandler: provideMissingTranslationHandlerForElement({ provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler }) }); <!-- Before with provider function --> provideTranslateService({ // Translate configuration ... }); <!-- After --> provideTranslateService({ ..., missingTranslationHandler: provideMissingTranslationHandlerForElement() });
-
angular: Angular 21+ is required. Follow the Angular update guide to update your app: https://angular.dev/update-guide?v=20.0-21.0
-
dashboards-ng: New widgets are now assigned IDs upon creation using the
SiWidgetIdProvider.generateWidgetId, rather than using temporaryNEW_WIDGET_PREFIXIDs that are replaced on save.The
save()method signature in the abstract classSiWidgetStoragehas been modified to separate existing widgets from new widgets:Before:
abstract save( widgets: (WidgetConfig | Omit<WidgetConfig, 'id'>)[], removedWidgets?: WidgetConfig[], dashboardId?: string ): Observable<WidgetConfig[]>;
After:
abstract save( modifiedWidgets: WidgetConfig[], addedWidgets: WidgetConfig[], removedWidgets?: WidgetConfig[], dashboardId?: string ): Observable<WidgetConfig[]>;
addedWidgetsarray will contain new widgets with ids generated bySiWidgetIdProvider.generateWidgetId. -
element-ng: Dropped support for @siemens/ngx-datatable versions 22-24. Only version 25 is now supported as a peer dependency.
-
filtered-search: Empty
valuefields of criterion options are no longer replaced with the value from thelabel.Always provide a correct
value. -
typescript: Element now requires ECMA script 2024 or newer. This is implemented by all evergreen browsers for more than two years.
-
form: The input
SiFormItemComponent.labelis now required. This change ensures thatsi-form-itemcomponents meet accessibility standards as inputs always require a label. Provide a label that describes the input properly. Do NOT provide an empty string. -
form: The property
SiFormItemControl.errormessageIdis now required. All implementations ofSiFormItemControlmust provide this property to ensure proper accessibility support for error messages. -
split: The default value of
SiSplitPartComponent.collapseOthersinput has been changed fromtruetofalse. Previously, when a split part was collapsed, all split parts between it and the end of the split in the respective direction would also collapse automatically. Now, by default, only the individual split part will collapse. -
toast-notification: Removed type
ToastStateName, use typeStatusTypewhich can be imported from@siemens/element-ng/commoninstead. TheStatusTypeomits theconnectionstate which was legacy code and should not be used anymore. This change affects below interfaces/apis where the above type should be adapted accordingly.SiToastNotificationService.queueToastNotificationSiToastinterfaceSiToastNotificationService.showToastNotificationSiToastNotificationService.hideToastNotification
-
filtered-search: Removed type
Criterion. Use more specific typesCriterionValueorCriterionDefinitioninstead for below inputs and output.SiFilteredSearchComponent.lazyCriterionProviderSiFilteredSearchComponent.criteriaSiFilteredSearchComponent.doSearch
<!-- Before --> readonly lazyCriterionProvider = input<(typed: string, searchCriteria?: SearchCriteria) => Observable<Criterion[] | CriterionDefinition[]>>(); <!-- After --> readonly lazyCriterionProvider = input<(typed: string, searchCriteria?: SearchCriteria) => Observable<CriterionDefinition[]>>();
<!-- Before --> readonly criteria = input<Criterion[] | CriterionDefinition[]>([]); <!-- After --> readonly criteria = input<CriterionDefinition[]>([]);
<!-- Before --> onSearch(searchCriteria: SearchCriteria) { const criterionValues: Criterion[] = searchCriteria.criteria; } <!-- After --> onSearch(searchCriteria: SearchCriteria) { const criterionValues: CriterionValue[] = searchCriteria.criteria; }
-
filtered-search: Removed
SiFilteredSearchComponent.readonlyinput. UseSiFilteredSearchComponent.disabledinstead. -
select: Removed deprecated interface
SelectOptionLegacy. Use interfaceSelectOptioninstead.The options can be converted like below:
Before:
const options: SelectOptionLegacy[] = [ { id: '1', title: 'Option 1' }, { id: '2', title: 'Option 2', icon: 'check', color: 'text-success', disabled: false } ];
After:
const options: SelectOption<string>[] = [ { type: 'option', value: '1', label: 'Option 1' }, { type: 'option', value: '2', label: 'Option 2', icon: 'check', iconColor: 'text-success', disabled: false } ];
-
select: Removed deprecated output
SiSelectComponent.dropdownClose. Use outputSiSelectComponent.openChangeinstead. -
unauthorized-page: Removed the deprecated
SiUnauthorizedPageComponentcomponent. Use theSiInfoPageComponentcomponent with thesi-info-pageelement instead. TheSiInfoPageComponentis a superset of this component and supports the same use cases and more.Before:
<si-unauthorized-page heading="Access denied" subHeading="You are not authorized to access this section." description="Contact your administrator" [link]="{ title: 'Go back', link: '/' }" />
After:
<si-info-page icon="element-warning-filled" iconColor="status-warning" titleText="Access denied" copyText="You are not authorized to access this section." instructions="Contact your administrator" [link]="{ title: 'Go back', link: '/' }" />
-
dashboards: Removed injection token
CONFIG_TOKEN. UseSI_DASHBOARD_CONFIGURATIONinjection token instead. -
dashboards-ng: Removed property
WidgetConfig.invalid. UseWidgetInstanceEditor.statusChangesemitter instead.Example usage:
this.statusChanges.emit({ invalid: this.isInvalid });
-
dashboards-ng: Removed module configuration
SiDashboardsNgModule.forRoot. Use injection tokensSI_DASHBOARD_CONFIGURATIONandSI_WIDGET_STOREdirectly in your app configuration.Before:
imports: [ SiDashboardsNgModule.forRoot({ config: {}, dashboardApi: { provide: SiWidgetStorage, useClass: CustomWidgetStorage } }) ]
After:
imports: [SiDashboardsNgModule], providers: [ { provide: SI_WIDGET_STORE, useClass: AppWidgetStorage }, { provide: SI_DASHBOARD_CONFIGURATION, useValue: config } ]
-
modal: Removed property
ModalOptions.initialState. UseModalOptions.inputValuesinstead. Note thatinputValuesonly binds to component inputs, unlikeinitialState, which could set any property on the component instance. -
dashboards/grid: Removed property
SiGridComponent.loadingService. UseSiGridComponent.isLoadinginstead to indicate load and save operations. -
common: Removed
buildTrackByIdentity()function. Use Angular's new control-flow syntax instead. -
common: Removed
buildTrackByIndex()function. Use Angular's new control-flow syntax instead. -
buttons: Changed selection-buttons sizing.
The sizing has been aligned with regular buttons. The sizing classes are now consistent with standard button classes:
- Use
btn-lgfor large selection buttons - Use
btn(no modifier) for default size selection buttons - Use
btn-smfor small selection buttons
This change affects the HTML structure of selection button groups. Previously, selection buttons had different size mappings compared to regular buttons.
Before:
<!-- Small selection buttons (visually same as default regular buttons) --> <div class="btn-group"> <label> <input type="radio" class="btn-check" name="example" /> <span class="btn btn-sm">Option 1</span> </label> </div>
After:
<!-- Default selection buttons (now visually same as default regular buttons) --> <div class="btn-group"> <label> <input type="radio" class="btn-check" name="example" /> <span class="btn">Option 1</span> </label> </div>
- Use
-
maps: Removed the deprecated
SiMapComponent.onResize()method. It had no impact. -
resize-observer: Removed following deprecated properties from
SiResponsiveContainerDirectivein favor of signal-based properties:isXs-> UsexsinsteadisSm-> UsesminsteadisMd-> UsemdinsteadisLg-> UselginsteadisXl-> UsexlinsteadisXxl-> Usexxlinstead -
select: Removed the
[complexOptions]input ofsi-select. Instead use the[options]input which supports- grouping of options
- providing values of any type
Complex options can be converted like below:
<!-- Before --> <si-select [complexOptions]="{group1: [{myLabel: 'My Label', uniqueData: uniqueData}]}" [valueProvider]="valueProvider" [groupProvider]="groupProvider" [optionEqualCheckFn]="uniqueDataEqual" /> <!-- After --> <si-select [options]="[ { type: 'group', label: 'Group-1', key: 'group1 (optional)', options: [{type: 'option', label: 'My Label', value: uniqueData}] } ]" [optionEqualCheckFn]="uniqueDataEqual" />
-
charts/gauge: Removed input
SiChartGaugeComponent.numberOfDecimals. UseSiChartGaugeComponent.minNumberOfDecimalsorSiChartGaugeComponent.maxNumberOfDecimalsinputs instead. -
tour: Removed property
attachTo.onofTourStepinterface. It has no effect, position is automatic.
-
dashboards:
SiWidgetStorage.getToolbarMenuItemsis deprecated. UseprovideDashboardToolbarItemsin your app configuration for global toolbar items, and/or use theprimaryEditActionsandsecondaryEditActionsinputs onSiFlexibleDashboardComponentfor dashboard specific toolbar items.Before (deprecated approach):
export class AppWidgetStorage extends SiDefaultWidgetStorage { override getToolbarMenuItems = (dashboardId?: string) => ({ primary: of([{ type: 'action', label: 'Custom Action', action: (grid) => alert('Action!') }]), secondary: of([{ type: 'action', label: 'Settings', action: (grid) => this.openSettings() }]) }); }
After
// For global toolbar items (shared across all dashboards): // standalone setup export const appConfig: ApplicationConfig = { providers: [ provideDashboardToolbarItems({ primary: [{ type: 'action', label: 'Custom Action', action: (grid) => alert('Action!') }], secondary: [{ type: 'action', label: 'Settings', action: (grid) => this.openSettings() }] }) ] }; // For module-based apps: @NgModule({ providers: [ provideDashboardToolbarItems({ primary: [{ type: 'action', label: 'Custom Action', action: (grid) => alert('Action!') }], secondary: [{ type: 'action', label: 'Settings', action: (grid) => this.openSettings() }] }) ] }) export class AppModule { } // For dashboard-specific toolbar items: <si-flexible-dashboard [primaryEditActions]="primaryActions" [secondaryEditActions]="secondaryActions" />
-
sort-bar:
SiSortBarComponentandSiSortBarModuleare deprecated. They originate from the older design system and do not align with current design guidelines. No known use case exists for this component. Both will be removed in v50. -
The type alias with
Simplprefix are deprecated, use types withSiprefix instead as per belowSimplLineSeriesOption-> UseSiLineSeriesOptioninsteadSimplBarSeriesOption-> UseSiBarSeriesOptioninsteadSimplHeatmapSeriesOption-> UseSiHeatmapSeriesOptioninsteadSimplScatterSeriesOption-> UseSiScatterSeriesOptioninsteadSimplCandlestickSeriesOption-> UseSiCandlestickSeriesOptioninstead
-
buttons: The
NotificationItemActionCircleButtoninterface and 'action-circle-button' type are deprecated. UseNotificationItemActionIconButtonand 'action-icon-button' instead. Both interfaces render square icon buttons (.btn-icon) and remain fully backward compatible. -
The type alias with
Simplprefix are deprecated, use types withSiprefix instead as per belowSimplChartsNgModule-> UseSiChartsNgModuleinsteadSimplSeriesOption-> UseSiSeriesOptioninsteadSimplLivePreviewRoutingModule-> UseSiLivePreviewRoutingModuleinsteadSimplLivePreviewModule-> UseSiLivePreviewModuleinsteadSimplMapsNgModule-> UseSiMapsNgModuleinsteadSimplNativeChartsNgModule-> UseSiNativeChartsNgModuleinstead -
charts:
SiChartsNgModuleis deprecated, import individual components instead. Starting with v49, separate entry points are available for each component, allowing applications to import components from specific entry points, which helps reduce the application bundle size. -
chart: The method
SiChartComponent.resetChartis deprecated and should not be used by the consumer directly.
48.9.0 (2025-12-19)
- angular: add support for Angular 21 (11fce52)
- dashboards-ng: support widgets as standalone component (5dad1d4)
- filtered-search: support free text as pills (1970897)
- charts/circle: align with figma specs (75157e7)
- side-panel: ensure search bar focus outline is visible (32d3959), closes #1204
- angular: Angular without ZoneJS (Zoneless) is generally supported but due to incomplete of testing, it might not work in all cases.
48.8.0 (2025-12-17)
- side-panel: add extended size option (199e451)
- side-panel: enhance navigation with router-link and link support (3f8679a)
- side-panel: implement fullscreen overlay and navigation modes (526773f)
- date-range-filter: update datepicker date-range on preset selection (70433ae)
- datepicker: convert 12 AM to 0 hours for 12-hour clock (1f2eb16)
- icon: render font icons when name contains kebab-case with numbers (8684c7f)
- password-toggle: hide MS Edge built-in reveal toggle icon (fdba859)
48.7.0 (2025-12-10)
- chat-messages: allow asterisk lists and simple images for markdown renderer (7559fce)
- typeahead: introduce experimental create option (a2b2ae9)
- charts/cartesian: confine tooltip for cartesian (f3dc55f)
- datatable: support compatibility with datatable v22 (bedc4ec)
- loading-spinner: should work in zoneless environment (09b6530)
48.6.0 (2025-12-02)
- icon: don't use hardcoded id on svg (8b0792f)
- microchart-line: fix gradient ID not unique (0a1ceb0)
- schematics: ignore dot files and node_modules in directory traversal (b97e4ce)
- schematics: remove simpl-element-ng token from scss files and support single and double quotes (8500e73)
- summary-chip: make value attribute optional (ea69015)
48.5.2 (2025-11-26)
- map: avoid TypeError when clicking point without handler (b8f36b4)
- schematics: scss migration should not modify node_modules (e521c20)
- translate-ng: prevent unwanted import of ngx-translate (d8a636c)
48.5.1 (2025-11-26)
- application-header: replace ngx-translate dependency with element translate pipe (8a8022c)
- badges: prevent misaligned icons (452db9a)
- datepicker: fix incorrect week numbers (c84fceb)
- schematics: add symbols in exports as well for NgModule (ac2fd82)
48.5.0 (2025-11-24)
- schematics: add mappings for native charts components and module (fe9fea5)
- application-header: truncate heading if needed in collapsed mode (32f270a)
- charts/custom-legend: align symbol spacing with design specs (778b889)
- chat-messages: allow dragging on files to chat-input (40019e0)
- chat-messages: allow interrupting with enter (19112a6)
- loading-spinner: slow down animation isof stopping for reduced-motion (0c8371c)
- schematics: add support for SimplElementNgModule imports and update mappings (5260687)
- schematics: add translation mapping in element-ng case and update mappings (8b9df33)
- schematics: update path imports for cross-platform compatibility and update mapping file (2e7a2dc)
- dashboards-ng: optimize lookups (fb3da90)
48.4.0 (2025-11-13)
- chat-messages: add chat container (bb5ef0c)
- select: add template context guard for select actions directive (d16b4b8)
- chat-messages: auto-collapse smaller left-aligned chat-messages (52cde0a)
- datepicker: add translation key for today button default text (fb082e5)
- schematics: remove unused imports after action-modal migration (d79cb07)
48.3.0 (2025-11-05)
- buttons: introduce button group with sub variants (bd261ba)
- chat-messages: add base chat components (b32133e)
- chat-messages: add chat input (0f10739)
- file-uploader: provide standalone file-upload directive (03c2dd1)
- header-dropdown: provide account item component (1b5cd8f)
- markdown-renderer: add markdown renderer and styles (62666a0)
- native-charts/gauge: add support for label and value formatter (ec1b1b0)
- schematics: implement migration rule for wizard API and add related test files (4a7f527)
- schematics: remove the deprecated API usages in various components (b9dee69)
- charts/gauge: align with figma specs (19d32c9)
- ip-input: shift remaining numbers to the right when inserting in middle of an ipv4 input (e8db6bd)
- ip-input: trim leading zeros from IPv4 on focus lost (d7f0e4f)
- theme: fix unintended alignment change for icons in card header (5fc8dc4)
-
accordion:
SiCollapsiblePanelComponent.colorVariantinput has no effect and is deprecated. -
tree-view:
siTreeViewItemTemplateis deprecated in favor ofsiTreeViewItem.Currently there are 2 directives
siTreeViewItemTemplatefor providing custom template andsiTreeViewItemfor applying custom directives (e.g cdkDrag) on tree item.the
siTreeViewItemTemplatehas 2 main DX problems:- Every tree item needs to specify templateName in its json structure.
- For every unique custom template there needs a separate ng-template with exact mapping of that templateName which doesn't provide type safety.
Migration Guide:
Before (deprecated):
<si-tree-view> <ng-template siTreeViewItemTemplate="root" let-item> <div class="custom-item">Root {{ item.name }}</div> </ng-template> <ng-template siTreeViewItemTemplate="child" let-item> <div class="custom-item">Child {{ item.name }}</div> </ng-template> </si-tree-view>
After (recommended):
<si-tree-view> <ng-template siTreeViewItem let-item="treeItem"> <si-tree-view-item> <div class="custom-item"> @if (item.level === 0) { Root {{ item.name }} } @else { Child {{ item.name }} } </div> </si-tree-view-item> </ng-template> </si-tree-view>
-
resize-observer:
ResizeObserverService._checkAllmethod is deprecated without replacement.
48.2.0 (2025-10-27)
- card: introduce si-action-card component (7732ec0)
- charts/circle: support start and end angle (261ea86)
- datatable: separator line between pinned and scrollable columns (80e9522)
- datepicker: expose form control validation for si-timepicker (74b95ea), closes #739
- datepicker: show error border on invalid time input (192104a), closes #739
- datepicker: support 12 hours clock for date-ranges (47b862b)
- header-dropdown: add class
header-dropdown-overlaywhen rendered as overlay (1c30d4c) - micro-line-chart: support markers (2f05c49)
- migration: add schematics for simpl to siemens migration (5b5144d)
- schematics: add migration for legacy component updates (bceb6c8)
- schematics: add migration schematic for updating action-modal from v47 to v48 (4c33b5b)
- schematics: migrate style imports to siemens (35645bb)
- search-bar: translatable aria label for clear button (0db4cf8)
- charts/sankey: add new
tooltipinput to replace misspelledtoolTipinput (0ed875e) - charts/sunburst: add new
tooltipinput to replace misspelledtoolTipinput (eded236) - dashboard: ignore icons on screen reader (06c3a0a)
- dashboards-ng: align drag cursor style with figma (09e3c3e)
- datepicker: correct si-timepicker input field validation (818b9d8)
- element-theme: update default
$nav-link-colortoelement-text-primary(3401ec3) - filtered-search: visually clear input text in active mode if clear is pressed (2b51b09)
- ip-input: ensure validation verifies the entire input string (9fcacb1)
- list-details: align details-header with design specs (f2cef2f)
- list-details: hide empty header (c75ae23)
- list-details: ignore icon with screen reader (b18b63f)
- textarea: align spacing and line height with design specs (a1b2171)
- tooltip: unsubscribe from observable to avoid memory leaks (3f05889)
- tree-view: use aria label for expand collapse icons (d2eacf0)
- typeahead: remove
iconcomponent if no icon is provided (5943e8d)
- charts/sunburst:
SiChartSunburstComponent.toolTipinput is deprecated. UseSiChartSunburstComponent.tooltipinstead. - charts/sankey:
SiChartSankeyComponent.toolTipinput is deprecated. UseSiChartSankeyComponent.tooltipinstead. - filter-bar:
Filter.statusandFilterStatusTypeare deprecated as they have no visual effect.
48.1.0 (2025-09-29)
- datepicker: allow only digits to be entered in si-timepicker (3de8109)
- notification-item: introduce new component (ed52f95)
- tabs: provide canActivate and canDeactivate guards (1d33374)
- column-dialog: align row icons in case of long title (c7441c2)
- dashboard: consistently translate labels (bd04c6b)
- datepicker: update the AM/PM meridian for 12-hour clock (9da7f15)
- file-uploader: allow concurrent uploads in auto-upload mode (fb97873)
- filtered-search: filter pill overlay stays open opn focus out scenario (6571588)
- filtered-search: handle invalid date (d9871d6)
- filtered-search: multi select options should call the lazyValueProvider on input event (a6e1d05)
- list-details: unsubscribe observables to avoid memory leaks (e0d3c91)
- navbar-vertical-item: align badge in collapse state correctly (2acaf4d)
- tabs: always scroll active tab into view (d557f9a), closes #772
48.0.3 (2025-09-10)
- list-details: load route details state on initial load (419a3d1)
48.0.2 (2025-09-10)
- microchart-bar: handle negative values (3e32a33)
48.0.1 (2025-09-05)
- card: show ellipsis on heading text overflow (2d772a1), closes #689
- datatable: not possible to tab out from table (9869db1)
- datatable: use
NgxDatatableConfigfrom upstream (2fb7903) - icon: handle undefined icon use case (7c52855)
- modal-dialogs: update confirmation dialog text and update snapshots (2d69d63)
- threshold: ensure number input and buttons are above other elements (6d8f3bf)
-
datatable:
INgxDatatableConfigis deprecated in favor of upstreamNgxDatatableConfig.Replace
INgxDatatableConfigimports withNgxDatatableConfigfrom @siemens/ngx-datatable:// Before import { INgxDatatableConfig } from '@siemens/element-ng/datatable';
// After import { NgxDatatableConfig } from '@siemens/ngx-datatable';
48.0.0 (2025-08-26)
- 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)
- 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)
-
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 main
styles.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}; }
-
accordion: Removed
SiAccordionComponent.colorVariantinput without any replacement. -
action-modal: Removed
AlertDialogResult,EditDiscardDialogResult,ConfirmationDialogResultandDeleteConfirmationDialogResultas 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-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 of
gridstack-extra.cssinangular.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* action-modal: Removed deprecated methods:SiActionDialogService.showAlertDialogSiActionDialogService.showConfirmationDialogSiActionDialogService.showEditDiscardDialogSiActionDialogService.showDeleteConfirmationDialog
Use
SiActionDialogService.showActionDialoginstead. -
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 classiconto 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-stackclass 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 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.
<!-- 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 withvisibilityChangeand 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.
-
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 tosi-status-counter. The class name changes fromSiIconStatusComponenttoSiStatusCounterComponent. The old names still work and will be removed in future release.To migrate to the new names, change imports from
SiIconStatusComponentorSiIconStatusModuletoSiStatusCounterComponentand replacesi-icon-statuswithsi-status-counterin all templates.
47.8.0 (2025-07-22)
- dashboard: add dashboard (c4288e4)
- dashboards-ng: add dashboards-ng components (8c5398c)
- patterns: add drag drop patterns (3ebd6be)
- themes: add experimental new tokens for AI patterns (4719ee2)
- charts: empty series name in tooltip (ad1be3d)
- datatable: align group header to match row styles (00af856)
- photo-upload: remove padding from the sides when a rounded mask is applied (6ad9894)
- select: match selected item icon size with figma specs (087bfcb)
- theme: add missing
base-4to utility CSS classes (2407b1c) - wizard: update disabled styles to match with figma (7de558e)
47.7.0 (2025-07-14)
- about: add about (86b562a)
- content-action-bar: support checkbox items (9cc6a5f)
- landing-page: add landing page component (76731fc)
- translate: use provider function to create service instances (b76324c)
- translate: prevent missing $localize errors (2098eb1)
47.6.0 (2025-07-08)
- breadcrumb-router: add breadcrumb router component and resolver service (7a23ea8)
- charts: add si chart (76d3e8a)
- date-range-filter: improve layout for smaller screens (07e2ef8)
- main-detail-container: add main-detail-container (7171549)
- navbar-vertical: add navbar-vertical (ade96f8)
- resize-observer: add emitInitial input to control initial resize emit (f512259)
- theme: add a .text-link class for link in text (ea7f7a4)
- theme: introduce base-4, updated base colors (0712c41)
- threshold: add threshold component with customizable thresholds and validation (c395815)
- tour: add tour (3c4b151)
- formly: add support for placeholder for select (830608e)
- tabs-next: calculate scroll container width correctly on load (b93396d)
- tabs-next: drop only showing fully visible tabs in responsive mode (0eb49f6)
47.5.0 (2025-06-26)
- angular: add support for Angular 20 (ca6275f)
- datatable: add datatable config and interaction (4134ac1)
- datatable: support @siemens/datatable 23 (bd19350)
- element: add list-details component (6b8503b)
- filtered-search: add filtered search (766db4b)
- form: add form examples (8d217f6)
- formly: add formly wrappers and components (6c4f12f)
- loading-spinner: ensure compatibility to Angular CDK 20 (c236c30)
- modal: ensure compatibility to Angular CDK 20 (67382c5)
- native-charts: add native charts (ec19393)
- password-strength: add option to allow whitespaces (b18c232)
- password-strength: allow setting minRequiredPolicies (776b47c)
- phone-number: add phone number (66589d2)
- result-details-list: add result details list (f4842f5)
- shadow-root: add shadow-root (5e0d1cb)
- side-panel: add side-panel (78a75a0)
- status-bar: add status bar (8328095)
- tabs-next: add si-tabs-next (a1e87ee)
- tree-view: add tree view component (203edbd)
- status-icon: add aria label for status icons (b202fd7)
- wizard: improve vertical wizard button positioning on small screens (fa6f486)
47.4.0 (2025-06-20)
- add photo upload component with cropping functionality (40c1491)
- badge: introduce critical badge (8a1f9c0)
- breadcrumb: add breadcrumb component (a8b3a90)
- card: add card component (bf05edb)
- card: introduce critical accent (69cf124)
- circle-status: add circle status component (5448a6f)
- column-selection-dialog: add column selection dialog (85bb1fc)
- common: move caution and critical to the base status types (e7eed49)
- date-range-filter: add date range filter component (798dcd0)
- datepicker: add datepicker components and directives (928b5cc)
- electron-titlebar: add electron titlebar component (1f53bb5)
- file-uploader: add file uploader (afea528)
- filter-bar: add filter bar (55b2c14)
- info-page: add info page component (89aeb11)
- inline-notification: introduce critical notification (c741a52)
- ip-input: implement IPv4 and IPv6 input directives with validation and masking (fc94b0d)
- localization: add localization service and related components (609f67c)
- search-bar: add search bar (ca68d76)
- slider: add slider (7d07906)
- sort-bar: add sort bar component with sorting functionality and documentation (9fc833d)
- split: add split (b78f847)
- status-toggle: add status toggle (c60fc38)
- system-banner: add system banner (fefc1ee)
- tabs: add tabs component (bbd73d5)
- theme: introduce text-critical token (11ef127)
- unauthorized-page: add unauthorized page component (96ce204)
47.3.0 (2025-06-10)
- autocomplete: add autocomplete directives and module (a478cd6)
- badges: badges with icons and emphasis (175b375)
- content-action-bar: add content action bar component (06de114)
- forms: add si-form (d771de6)
- icon-status: add icon status component with styling and examples (e2cdd3f)
- input: add radio, checkbox,switch input type and textarea (2df0b9d)
- language-switcher: add language switcher component (032b8c2)
- launchpad: add tokens for application icon color/background (d31db92)
- number-input: add number input (bcadbe7)
- password-strength: add password strength component with validation and UI integration (19a38fb)
- pills-input: add pills Input component (af0486d)
- popover-next: add si-popover-next component with directives and templates (291ca35)
- popover: add popover component (87312d3)
- progress-bar: add progress bar component with dynamic functionality (b6c5405)
- progress-bar: add progress bar component with dynamic functionality (12051f8)
- select: add select component with multi-select and filtering capabilities (c1a1837)
- select: add support for stacked icons (9c6f052)
- summary-widget: add summary widget (44a540c)
- theme: introduce base-critical token and class (a7692e7)
- toast-notification: add toast notification component and service (70f23b5)
- typeahead: add typeahead directive and components (754a60e)
- wizard: add wizard component with dynamic steps and navigation (944c13b)
- live-previewer: make initialization more reliable (3219d17)
- live-preview: fix recompile on template change in viewer (af70347)
- tsdoc: add default ref (ef9377d)
47.2.0 (2025-05-28)
- accordion: add accordion (6115492)
- action-modal: add action modal service and components (ac54c88)
- auto-collapsable-list: add auto-collapsable list components and directives (95c27fe)
- color-picker: add color picker (1811d08)
- connection-strength: add connection strength (50b746e)
- copyright-notice: introduce copyright notice (c053f5f)
- empty-state: add empty state (7b382af)
- footer: add footer component (4b14465)
- inline-notification: add inline notification (592c7b9)
- loading-spinner: add loading spinner component (ec94faa)
- menu: add menu component (27020af)
- modal: add modal component (2c05627)
- pagination: add pagination component (6cadaba)
- password-toggle: add password toggle component (6f9b405)
- summary-chip: add summary chip (7f6d187)
- tooltip: add tooltip component (151809b)
- examples: update navbar examples to use element prefix (92b0ee7)
- live-preview: automatic dark/light theme for overview (31d0376)
47.1.0 (2025-05-21)
- application-header: announce logo text in Safari / VoiceOver (71d02a7)
- datatable: respect content 100% width (c0fa7fc)
- live-preview: accept legacy component loader import (452cd56)
- theme: fix card spacing for focus outline (ec3d92f)
- element-translation-ng: move key extraction CLI into a separate package (3c5cd72)
- icon: introduce status icon (5ce6727)
- icon: support stacking in template with si-icon (87d2a02)
- navbar: add legacy navbar primary (a62fe11)
- typography: add title bold styles (34c16ff)
47.0.0 (2025-05-19)
- harmonize package versions to 47.0.0 (6b088b5)
- Set the correct version in every package.