Major Changes
-
#2514
73a2ed3Thanks @dmytro-halimov! - Breaking (v5): Remove theplacementproperty (andplacementattribute) fromix-split-button. It was not wired to the internal dropdown, so it had no effect; removing it only drops a misleading no-op from the public API. SeeBREAKING_CHANGES/v5.md. -
#2524
f2c8b83Thanks @danielleroux! - RequirebreadcrumbKeyonix-breadcrumb-item, changeix-breadcrumbnextItemsentries from strings to{ label, breadcrumbKey }objects, and export the sharedBreadcrumbClickpayload type so breadcrumb click events expose stable item keys.This change was necessary to identify breadcrumb items in a stable way, as their labels may not be unique and can change over time. The
breadcrumbKeyprovides a consistent identifier for each breadcrumb item, allowing for more reliable event handling and state management in applications using the breadcrumb component. -
#2268
c81324bThanks @danielleroux! - Updateix-date-dropdownquick date selection from a list to a picker, with quick date options displayed on the left side.Removed attributes:
ariaLabelDropdownButton: Providedaria-labelwill be passthrough the component shadow-dom to the actual buttoncustomRangeDisabled(also contain removal ofi18nCustomItem): Removed becauseix-date-dropdownwill be a picker with quick selection on the left side.
-
#2516
91f811aThanks @alexkaduk! - ix-chip: Status-filled hover/active colors and padding use design tokens; custom-color chips keep the overlay behavior.
ix-chip: AddariaLabelIcon, forward host ARIA to the main control, optional hostrole="group", a native close button, and tooltip labeling; React, Angular, and Vue exposeariaLabelIcon. -
#2508
cdae15bThanks @alexkaduk! -ix-time-picker: optionalminTimeandmaxTimeconstrain selectable values (same string shape asformat/time). Values outside the inclusive range are disabled in the picker rings.Breaking (v5): the hour column header attribute is renamed from
i18n-column-headertoi18n-hour-column-header. Thei18nHourColumnHeaderproperty is unchanged—update static HTML or attribute-based markup. Migration:BREAKING_CHANGES/v5.md. -
#2525
7042a10Thanks @danielleroux! - Update the required @siemens/ix-icons peer dependency to ^3.4.0. This is a breaking change that requires consumers to update their @siemens/ix-icons dependency to version 3.4.0 or higher. -
#2268
c81324bThanks @danielleroux! - Refactor keyboard navigation for dropdown-related componentsRefactors keyboard navigation to align with W3C accessibility patterns for dropdown-related components, significantly improving accessibility and user experience:
Component Changes
Date Picker
- Added comprehensive keyboard navigation support:
Home/End: Navigate to first/last day of weekPageUp/PageDown: Navigate to previous/next monthShift+PageUp/Shift+PageDown: Navigate to previous/next yearArrowLeft/ArrowRight/ArrowUp/ArrowDown: Navigate between daysEnter/Space: Select focused dayEscape: Close picker
- Replaced manual year/month dropdown with accessible
ix-dropdown-buttoncomponents - Implemented visual focus mode with
aria-activedescendantfor embedded pickers - Added infinite scrolling for year selection with IntersectionObserver
- Improved ARIA labels:
ariaLabelMonthSelectionandariaLabelYearSelectionprops - Calendar days now have proper
role="button"and descriptivearia-labelattributes
Date Input
- Implemented
aria-activedescendantpattern for combobox interaction - Added keyboard forwarding to embedded date picker
ArrowDownopens picker and activates keyboard navigationEscapecloses picker and returns focus to input- Focus management improved with
delegatesFocusshadow DOM option
Date Dropdown
- Enhanced focus handling with
onFocusoutto close dropdown when focus leaves - Auto-focus date picker when opened via keyboard
- Added
suppressOverflowBehaviorto prevent unwanted repositioning
Dropdown & Dropdown Button
- New props:
disableFocusHandling,disableFocusTrap - New events:
showChange(preventable),showChanged(post-change) - Improved focus proxy for dropdown items with proper
role="menuitem" - Better keyboard navigation with arrow keys, Home, End, Enter, Escape
Breadcrumb
- Complete refactor using
ix-dropdown-buttonfor previous/next items - Added
role="navigation"androle="listitem"for proper semantics - Improved ARIA labels (default: "Show previous breadcrumb items")
- Each breadcrumb item now has
aria-current="page"for the current page - Keyboard navigation now works consistently across all breadcrumb dropdowns
Avatar
- Implemented focus proxy pattern for dropdown menu items
- Added
aria-activedescendantsupport - Button now has
role="combobox"with properaria-controlsandaria-expanded - Menu items properly labeled with
role="menuitem"
Button
- Added
.ix-focusedclass for programmatic focus indication - Fixed focus-visible styles to work consistently
- Disabled buttons now have
tabindex="-1"
Application Header
- Added
role="banner"for proper landmark semantics - Fixed overflow context menu visibility logic for small viewports
Breaking Changes
ix-breadcrumb-item:ariaLabelButtonprop deprecated in favor of directaria-labelattribute- Date picker month/year selection UI completely redesigned (visual breaking change)
- Internal structure for all
ix-dropdownrelated components are changed
- Added comprehensive keyboard navigation support:
-
#2503
8c7fb12Thanks @danielleroux! - Updateix-menu-aboutandix-menu-settingsfor key-based tabs and slottedix-tabsopt-inix-menu-aboutandix-menu-settingskeep their legacyix-menu-about-item/ix-menu-settings-itemrendering by default. To switch to slottedix-tabs/ix-tab-itemmarkup, set the newsuppressLegacyTabsprop on the parent menu component.ix-menu-about-newsstill usesactiveAboutTabKeyinstead ofaboutItemLabel.Breaking Changes
ix-menu-about / ix-menu-settings
- The slotted
ix-tabsintegration path uses the newsuppressLegacyTabsprop on the parent menu component. ix-menu-aboutrenamedactiveTabLabeltoactiveTabKeyfor legacy item-based integrations.
ix-menu-about-item / ix-menu-settings-item
tabKeyis now required when using legacy item-based integrations.ix-menu-about-itemchanged fromshadow: truetoshadow: false.
ix-menu-about-news
- New
activeAboutTabKeyprop replacesaboutItemLabelas the condition for showing the "Show more" footer button. - The
aboutItemLabelprop no longer controls footer visibility. UseactiveAboutTabKeyinstead.
Migration
Use the existing
ix-tabspattern in your application (ix-menu-about/ix-menu-settings), and show the matching slotted content based on the active tab key. SetsuppressLegacyTabson theix-menu-about/ix-menu-settingsandactive-tab-keyon the nestedix-tabs, not onix-menu-aboutorix-menu-settings.<!-- Slotted ix-tabs path --> <ix-menu-about suppress-legacy-tabs> <ix-tabs active-tab-key="tab-1"> <ix-tab-item tab-key="tab-1">Tab 1</ix-tab-item> <ix-tab-item tab-key="tab-2">Tab 2</ix-tab-item> </ix-tabs> <!-- render the matching content in the slot using the active tab key --> </ix-menu-about>
<!-- Legacy item-based path --> <ix-menu-about active-tab-key="tab-1"> <ix-menu-about-item tab-key="tab-1" label="Tab 1" >Content 1</ix-menu-about-item > <ix-menu-about-item tab-key="tab-2" label="Tab 2" >Content 2</ix-menu-about-item > </ix-menu-about>
<!-- Legacy item-based path --> <ix-menu-settings active-tab-key="tab-1"> <ix-menu-settings-item tab-key="tab-1" label="Tab 1" >Content 1</ix-menu-settings-item > </ix-menu-settings>
- The slotted
-
#2541
130df33Thanks @danielleroux! - Breaking (v5):showModalLoading()now returns aPromise<ModalLoadingContext>. Await the call before usingupdate()orfinish()on the returned loading context. -
#2471
e324caaThanks @alexkaduk! - Add non-blocking dialog mode to ix-modal withisNonBlockingandModalConfig.isNonBlocking: opens withdialog.show()so the page stays interactive (no lightbox or focus trap;aria-modalis false). After open,showModal()schedules initial focus on the first light-DOM match for[autofocus]or[auto-focus](withfocusVisible: true).Breaking (v5): Remove
disableEscapeClose. Escape andcancelalways go throughdismissModal(); usebeforeDismissto veto dismissal (e.g. replacedisableEscapeClosewithbeforeDismiss: () => false).showModalLoadingis updated accordingly;closeModalfromfinish()is unchanged. -
#2465
7406be7Thanks @danielleroux! - Remove legacy accessible-name properties from button components. Set the nativearia-labelattribute on the host element instead; it is applied to the inner interactive surface.- ix-button:
ariaLabelButton(aria-label-button) - ix-icon-button:
a11yLabel(a11y-label) - ix-toggle-button:
ariaLabelButton(aria-label-button) - ix-icon-toggle-button:
ariaLabelIconButton(aria-label-icon-button)
See Breaking changes v5 for migration examples.
- ix-button:
-
#2475
834bbbfThanks @nuke-ellington! -ix-card-listbreaking change: selecting the show-all button or show-more card now reveals all hidden cards by default and toggles back to the hidden-overflow state from the show-less button. To keep the previous event-only behavior, callpreventDefault()on the cancelableshowAllClickorshowMoreCardClickevent. -
#2548
3ece658Thanks @alexkaduk! - Remove pre-v5 deprecated components, properties, and theshowModalLoadingstring overload.Removed components:
ix-input-group(useix-input);ix-validation-tooltip(use built-in validation onix-input/ix-select);ix-drawer(useix-pane).Removed properties:
ariaLabelMenuExpandIconButtononix-application-header;a11yLabelonix-avatar;ariaLabelButtononix-breadcrumb-item;ariaLabelChevronDownIconButtononix-select;erroronix-slider(useclass="ix-invalid"andinvalid-textinstead).Removed util overload:
showModalLoading(message: string)— useshowModalLoading({ message: '...' })instead.See
BREAKING_CHANGES/v5.md(section Removed deprecated components and APIs) for migration details. -
#2538
909bb6aThanks @alexkaduk! - Remove no-opModalConfigfieldscontainer,keyboard, andtitlefrom theshowModalAPI. They had no effect in v4; delete them from config objects.See Breaking changes v5 (ModalConfig: removed no-op options) for migration.
-
#2465
7406be7Thanks @danielleroux! - Remove unused i18n-expand-sidebar property from ix-menu
Minor Changes
-
#2279
40cfbe0Thanks @varun-srinivasa! - Add disabled-state support for ix-tree-item, including the exposed disabled property and corresponding tree item state handling.
Improve ix-tree and ix-tree-item accessibility by updating ARIA roles and positional attributes.Fixes #2091
-
#2521
36ce453Thanks @alexkaduk! -ix-datetime-input: AddminTimeandmaxTimeso the combined date-time field can constrain the time portion. -
#2458
a6a5309Thanks @danielleroux! -ix-dropdownnow observes the visibility of the trigger element in the viewport while the dropdown is open. If the trigger element scrolls outside the visible viewport, the dropdown will automatically close to prevent it from remaining visible in an unexpected screen position. To keep the dropdown open regardless of trigger visibility, setsuppressTriggerVisibilityChecktotrue. -
#2437
4161ab9Thanks @danielleroux! - Add new componentix-range-fieldwhich can currently display range related inputs. Supported components:ix-date-input,ix-time-inputandix-datetime-input. -
#2478
4231d51Thanks @khathija-ahamadi! - Support directory upload in ix-upload.
Patch Changes
-
#2268
c81324bThanks @danielleroux! - Hide the overflow context menu inix-application-headerwhen switching from a small to a medium or large viewport. -
#2465
7406be7Thanks @danielleroux! - Set predefinedaria-labelandaria-pressedattributes to theix-menuexpand button -
#2268
c81324bThanks @danielleroux! - Prevent ix-group from crashing during construction -
#2541
130df33Thanks @danielleroux! - Improve React and Vue wrapper tree shaking so bundlers can exclude unused IX components when importing individual framework components. -
Updated dependencies [
8378937,8765757,73a2ed3,ce6cd94,d10b03c,f2c8b83,c97d897,c81324b,40cfbe0,1333ad8,91f811a,60a9728,fdb15b2,3e90786,3964a2a,f9e3802,cbb0716,c81324b,7406be7,2ec2c70,4d35515,36ce453,cdae15b,ba15b50,64e6cfe,7042a10,b00da1c,653f136,4643a65,5f141c1,a6a5309,c81324b,8c7fb12,4161ab9,130df33,130df33,e324caa,4231d51,7406be7,834bbbf,f4f8921,8c7fb12,3ece658,909bb6a,7406be7,f9e3802,b5e7384,c81324b,130df33,22699fa]:- @siemens/ix@5.0.0