Upgrade to v3.0.0
Removed light and foundation Figma libraries
The following Figma libraries have been replaced by the iX Component library:
- iX Component - Brand Light
- iX Foundation - Brand Light
- iX Foundation - Brand Dark
- iX Helpers
Follow the instructions below to update your Figma files to the new iX Component library:
- On the left panel, click Assets.
- Click on the
icon to open the libraries dialog. - Select a library you want to replace.
- Click Swap library.
- Choose iX Components.
- Confirm and repeat for the other libraries.
Figma libraries for v2.0.0 are in the Archive project (find the link in the main library).
We have also prepared a video showing the process in our internal Siemens learning world here.
Changed loading of icons from package @siemens/ix-icons
Prior to version 3.0.0 of @siemens/ix-icons
the entire icon set was loaded into the client by default, which caused unnecessary usage of bandwidth and memory.
Starting with version 3.0.0, icons can now be loaded individually, providing significant performance optimizations. To enable individual icon loading, the @siemens/ix-icons
package now requires manual bootstrapping.
Please refer to the @siemens/ix-icons
repository for detailed installation instructions. For usage with one of the framework wrappers (@siemens/ix-angular
, @siemens/ix-react
and @siemens/ix-vue
) read the respective section below.
Changed usage of icons inside @siemens/ix-react
and @siemens/ix-vue
Icon imports by name (e.g. <IxIcon name="star" />
) are no longer supported by default.
To import the icon use the following statement:
import { iconStar } from '@siemens/ix-icons/icons';
Use the icon as attribute like this:
React:
<IxIcon name="{iconStar}" />
Vue:
<IxIcon :name="iconStar" />
If you want to use the "legacy" style (<IxIcon name="star" />
), you'll need to do some additional setup tasks.
Create a copy task to ensure that all icons from the @siemens/ix-icons
package are available as a static resource. Below is an example of a vite configuration (build only) example:
export default defineConfig({
plugins: [
react(),
copy({
verbose: true,
targets: [
{
src: 'node_modules/@siemens/ix-icons/svg/*.svg',
dest: 'public/svg',
},
],
}),
],
});
Changed usage of icons inside @siemens/ix-angular
Copy iX icons into your project folder via angular.json
.
"assets": [
"src/favicon.ico",
"src/assets",
{
"glob": "**/*.svg",
"input": "node_modules/@siemens/ix-icons/svg",
"output": "./svg"
}
],
Then you can reference iX icons by name anywhere in your application.
<ix-icon name="star"></ix-icon>
To load individual icons you can also use the addIcons
function during runtime.
import { addIcons } from @siemens/ix-icons;
import { iconStar, iconStarFilled } from @siemens/ix-icons/icons;
addIcons({ iconStar, iconStarFilled });
<ix-icon name="star"></ix-icon> <ix-icon name="star-filled"></ix-icon>
Changed usage of icons in pure HTML
<ix-icon name="star"></ix-icon>
Custom asset path for icons
In order to be able to load custom icons, we need to configure the domain of the asset path. This can either be done via meta
-tag or with the setAssetPath
-function.
With meta
-tag
<html>
<head>
<!-- Some other tags -->
<meta name="ix-icons:path" content="https://some-resource-domain" />
</head>
<body></body>
</html>
<IxIcon name="star"></IxIcon>
Above code will fetch the SVG from https://some-resource-domain/star.svg
.
With setAssetPath
-function
Make sure to call the setAssetPath
-function before using the IxIcon
component (e.g. in the main file).
import { setAssetPath } from '@siemens/ix-icons/components';
setAssetPath('https://some-resource-domain');
<IxIcon name="star"></IxIcon>
Above code will fetch the SVG from https://some-resource-domain/star.svg
This will preload all icons without including the SVGs as assets, which results in a larger bundle size. Therefore, this approach is NOT recommended.
Changed props to @internal
The following component members previously marked as internal by comment have been changed to annotated as @internal
:
ix-menu
:enableMapExpand
ix-menu-about
:show
ix-menu-about-news
:expanded
ix-menu-settings
:show
ix-dropdown-item
:emitItemClick()
Removed Bootstrap
as a peerDependency
We are removing Bootstrap as a dependency to reduce the overall bundle size as well as to become more independent from third party CSS frameworks. Of course you can still use Bootstrap together with @siemens/ix, but you need to add it to you project manually.
HTML table classes .table
and .table-striped
are not based on Bootstrap anymore
Siemens Industrial Experience still offers CSS classes to style HTML tables, but the names have changed:
- The class
.table
is now.ix-table
. - The class
.table-striped
is now.ix-table-striped
.
Please note that they are not based on Bootstrap anymore. If your tables rely on additional Bootstrap functionality (e.g. hoverable rows), you have to install Bootstrap on your own.
Button group is not based on Bootstrap anymore
We replaced the bootstrap button group .btn-group
with .ix-button-group
.
Added namespacing of standard HTML elements
We decided to add the prefix ix-
to our global styles of standard HTML elements like input
, textarea
and label
.
This ensures that you can use other CSS libraries alongside iX to prevent class collisions. To ensure that your styles are not broken after you update to v3, you have to provide the class ix-form-control
to input
and textarea
.
The standard label
element needs the ix-form-label
class.
Example:
Change
<input type="text" /> <input type="text" class="form-control" />
to
<input type="text" class="ix-form-control" /> <input type="text" class="ix-form-control" />
Global style updates
Changed input
width value
We changed the default width of the input
element from width: 100%
to width: auto
Component updates
ix-action-card
- Replaced
insight
andnotification
variants withoutline
andfilled
.
ix-card
- Replaced
insight
andnotification
variants withoutline
andfilled
.
ix-chip
- Replaced
color
property withchipColor
.
ix-date-picker
- Removed
individual
andeventDelimiter
attributes. - Replaced
textSelectedDate
property withi18nDone
. - Replaced
done
event withdateSelect
.
ix-datetime-picker
- Replaced
textSelectedDate
property withi18nDone
. - Replaced
done
event replaced withdateSelect
. - Removed
eventDelimiter
property.
ix-event-list
- Replaced
color
attribute withitemColor
.
ix-icon-button
- Replaced
color
attribute withiconColor
. - Removed option
32
from attributesize
.
ix-menu
- Removed
maxVisibleMenuItems
attribute.
ix-menu-item
- Replaced
tabIcon
attribute withicon
.
ix-modal
- Replaced
keyboard
attribute withcloseOnEscape
.
ix-pill
- Replaced
color
attribute withpillColor
.
ix-push-card
- Replaced
insight
andnotification
variants withoutline
andfilled
.
ix-select
- Replaced
selectedIndices
attribute withvalue
. - Replaced
itemSelectionChange
event withvalueChange
.
ix-select-item
- Changed type of attribute
value
tostring
.
ix-time-picker
- Removed
individual
andshowTimeReference
attributes.
ix-tree
Fix typo in parameter isExpanded
of nodeToggled
-event.
Before:
type NodeToggleEventPayload = { id: string; isExpaned: boolean };
After:
type NodeToggleEventPayload = { id: string; isExpanded: boolean };
ix-typography
- Replaced
color
attribute withtextColor
.
@siemens/ix-echarts
Theme names changed
- From
brand-light
totheme-brand-light
- From
brand-dark
totheme-brand-dark
- From
classic-light
totheme-classic-light
- From
classic-dark
totheme-classic-dark
Utility function convertThemeName
war removed from @siemens/ix-echarts
The convertThemeName
utility function has been removed, because it was not needed anymore after aligning the echarts theme names with iX CSS theme names.
From:
import { convertThemeName, registerTheme } from '@siemens/ix-echarts';
const myEChart = echarts.init(element, convertThemeName(theme));
To:
import { registerTheme } from '@siemens/ix-echarts';
const myEChart = echarts.init(element, theme);
Questions ❓🙋♀️
Check out the Breaking Changes guide and if you have further questions or migration problems contact us.