v2.0.0
2.0.0 (2024-08-23)
Migration Guide
BREAKING CHANGES
General Changes
- ❗ Updated UI5 Web Components to v2. All breaking changes apply to this project as well. ❗
- ❗ The minimum required react and react-dom version is now 18.0.0 ❗
- UI5 Web Components Enums are no longer exported
- the dedicated build for Server Side Rendering in the
ssrfolder has been removed as the UI5 Web Components now natively support being imported in Node.js environments. You can import all components from@ui5/webcomponents-react. - UI5 Web Components for React is no longer relying on
react-jssinternally, hence the dependency is now removed and thereact-jssThemeProvider is no longer rendered as part of ourThemeProvider. If you are relying onreact-jssin your application, please make sure to render your ownreact-jssThemeProvider. - We stopped recommending
jestas a testing framework over a year ago, thus thejestSetupfile is removed. We recommend using cypress instead.
Component Changes
ActionSheet
- ActionSheet:
a11yConfighas been renamed toaccessibilityAttributes. - ActionSheet: the
portalContainerprop has been removed as it's not needed anymore - ActionSheet: the
showCancelButtonhas been renamed tohideCancelButtonand the logic has been inverted. - ActionSheet: prop
placementTypehas been renamed toplacement,onAfterClosetoonCloseandonAfterOpentoonOpen
AnalyticalCard
- AnalyticalCard: The
AnalyticalCardcomponent has been removed. Please use theCardcomponent instead.
AnalyticalTable
- AnalyticalTable - TypeScript: The internal table instance types were updated, leading to stricter types, so depending on your implementation, you might encounter ts-errors.
- AnalyticalTable:
selectedFlatRowshas been removed from thedetailobject ofonRowSelect. - AnalyticalTable: The properties and values for the
AnalyticalTableSelectionModeenum has been changed.SingleSelectis nowSingleandMultiSelectis nowMultiple. - AnalyticalTable:
a11yConfighas been renamed toaccessibilityAttributes. - AnalyticalTable: The
TableScaleWidthModeenum has been removed, please useAnalyticalTableScaleWidthModeinstead. - AnalyticalTable: The
TableSelectionBehaviorenum has been removed, please useAnalyticalTableSelectionBehaviorinstead. - AnalyticalTable: The
TableSelectionModeenum has been removed, please useAnalyticalTableSelectionModeinstead. - AnalyticalTable: The
TableVisibleRowCountModeenum has been removed, please useAnalyticalTableVisibleRowCountModeinstead. - AnalyticalTable: The
alwaysShowSubComponentprop has been removed, please usesubComponentsBehaviorinstead. - AnalyticalTable: The default value (
true) of thesortableprop has been removed, it is now required to explicitly set this prop, if the table should be sortable. - AnalyticalTable: The
canReordercolumn property has been removed, please usedisableDragAndDropinstead. - AnalyticalTable: When selecting or pressing a row by using the Space key,
onRowClickandonRowSelectare now fired onkeyupinstead ofkeydown. - AnalyticalTable:
portalContainerhas been removed as it's no longer needed due to the Popover API.
Badge
- Badge: the
Badgecomponent has been renamed toTag
ComboBoxGroupItem
- ComboBoxGroupItem: the
ComboBoxGroupItemcomponent has been renamed toComboBoxItemGroup
CustomListItem
- CustomListItem: the
CustomListItemhas been replaced with theListItemCustomcomponent
DynamicPage
- DynamicPage The
DynamicPagecomponent has been replaced with theui5-dynamic-pageUI5 Web Component, please visit our Migration Guide for more details. - DynamicPage The
DynamicPageHeadercomponent has been replaced with theui5-dynamic-page-headerUI5 Web Component. - DynamicPage The
DynamicPageTitlecomponent has been replaced with theui5-dynamic-page-titleUI5 Web Component.
ExpandableText
- ExpandableText: the inherited props
hyphenatedandemptyIndicatorfrom theTexthave been removed. - ExpandableText: the
portalContainerprop has been removed as it's not needed anymore
FilterBar & FilterGroupItem
-
FilterBar: The
FilterBarcomponent was completely overhauled and references of input elements aren’t copied to the filters dialog anymore, also internal logic for reordering and selection has been removed, meaning it’s necessary to control their values manually (e.g. via React state). -
FilterBar:
onToggleFilters: Thedetailproperty of the event now only includesvisibleandnativeDetailproperties.filtersandsearchhave been removed. -
FilterBar:
onFiltersDialogSave: Thedetailproperty of the event now only includesselectedFilterKeys,reorderedFilterKeysandnativeDetailproperties.elements,toggledElements,filters,search,orderIdshave been removed. -
FilterBar:
onFiltersDialogCancel: The event is now a callback instead of aUi5CustomEvent. It implements theescPressedparameter. -
FilterBar:
onFiltersDialogClose: The event is now a callback instead of aUi5CustomEvent. It implements thecloseTriggerparameter. -
FilterBar:
onFiltersDialogSelectionChange: The event is now a callback instead of aUi5CustomEvent. It implements a payload object as parameter. -
FilterBar:
onFiltersDialogSearch: The event is now a standardInputonInputevent. Thedetailpropertiesvalueandelementhave been removed. -
FilterBar:
onClear: The event is now a standardToolbarButtononClickevent. Thedetailpropertiesfiltersandsearchhave been removed. -
FilterBar:
onGo: The event is now a standardToolbarButtononClickevent. Thedetailpropertieselements,filters,search,nativeDetailhave been removed. -
FilterBar:
onRestore: The event is now a callback instead of aCustomEvent. It implements a payload object as parameter. -
FilterBar:
onFiltersDialogOpen (TypeScript): The target of the event is now aToolbarButton. -
FilterBar:
portalContainerhas been removed as it's no longer needed due to the Popover API used in thePopoverui5 web component. -
FilterGroupItem:
orderIdhas been removed. Please usefilterKeyinstead. -
FilterGroupItem: For a better aligned API, the
visibleandvisibleInFilterBar(default:true) props have been replaced withhiddenandhiddenInFilterBar(no default value).
Form
- Form: The
Formcomponent has been replaced with theui5-formUI5 Web Component, please visit our Migration Guide for more details.
GroupHeaderListItem
- GroupHeaderListItem: the
GroupHeaderListItemcomponent has been renamed toListItemGroup
Loader
- Loader: The deprecated
Loadercomponent has been moved to the@ui5/webcomponents-react-compatpackage. Please use theBusyIndicatorinstead, as it's now the only loading indicator that is supported by our UX guidelines. Please visit our Migration Guide for more details.
MessageBox
- MessageBox:
onCloseis now a plain callback and not aCustomEventevent anymore. It now receives two params:action&escPressed.
Modals
- Modals: modals are now rendered as children of the
Modalscomponent instead of being rendered intodocument.body - Modals: ThemeProvider: the prop
withoutModalsProviderhas been removed. For more information, please refer to our Migration Guide. - Modals: the hooks
useShowDialog,useShowPopover,useShowResponsivePopover,useShowMenu,useShowMessageBoxanduseShowToasthave been removed. For more information, please refer to our Migration Guide.
MultiComboBoxGroupItem
- MultiComboBoxGroupItem: the
MultiComboBoxGroupItemhas been replaced with theMultiComboBoxItemGroupcomponent
NotificationAction
- NotificationAction: the
NotificationActioncomponent has been removed. You can use theMenucomponent instead.
ObjectPage, ObjectPageSection, ObjectPageSubSection & ObjectPageTitle
-
ObjectPage:
headerContenthas been renamed toheaderAreaand now only accepts theObjectPageHeadercomponent. -
ObjectPage:
headerTitlehas been renamed totitleAreaand now only accepts theObjectPageTitlecomponent. -
ObjectPage:
footerhas been renamed tofooterArea. -
ObjectPage:
onToggleHeaderContenthas been renamed toonToggleHeaderArea -
ObjectPage:
onPinnedStateChangehas been renamed toonPinButtonToggle -
ObjectPage:
headerTitlenow only accepts theObjectPageTitlecomponent instead of theDynamicPageTitle. -
ObjectPage:
headerContentnow only accepts theObjectPageHeadercomponent instead of theDynamicPageTitle. -
ObjectPage:
a11yConfig.dynamicPageAnchorBarhas been renamed toa11yConfig.objectPageAnchorBar -
ObjectPage: the props
showHideHeaderButtonandshowTitleInHeaderContenthave been removed. -
ObjectPage: the prop
alwaysShowContentHeaderhas been renamed toheaderPinned -
ObjectPage: the prop
headerContentPinnablehas been renamed tohidePinButtonand its logic has been inverted. The pin button is now shown by default. -
ObjectPage: the prop
showSubHeaderRighthas been removed as it's not defined by design anymore. -
ObjectPage:
a11yConfighas been renamed toaccessibilityAttributes. -
ObjectPage (TypeScript): replace
headerTitletype withReactElement<DynamicPageTitlePropTypes> -
ObjectPage (TypeScript): replace
headerContenttype withReactElement<DynamicPageHeaderPropTypes> -
ObjectPage (TypeScript): replace
imagetype withstring | ReactElement<AvatarPropTypes> -
ObjectPageSection: the prop
titleTextis now required. -
ObjectPageSection: the default value
truefor the proptitleTextUppercasehas been removed. -
ObjectPageSubSection: the prop
titleTextis now required. -
ObjectPageTitle:
actionshas been renamed toactionsBar. Instead of single actions, theToolbarcomponent should now be passed. -
ObjectPageTitle:
navigationActionshas been renamed tonavigationBar. Instead of single actions, theToolbarcomponent should now be passed. -
ObjectPageTitle:
actionsToolbarProps: Since it's now recommended passing theToolbarcomponent directly, this prop is redundant. -
ObjectPageTitle:
navigationActionsToolbarProps: Since it's now recommended passing theToolbarcomponent directly, this prop is redundant.
ObjectStatus
- ObjectStatus:
activehas been renamed tointeractive. - ObjectStatus (TypeScript):: the
HTMLDivElementtype has been removed from theonClickhandler.
SelectDialog
- SelectDialog: renamed prop
modetoselectionModeto be aligned with new List API,onAfterClosetoonCloseandonAfterOpentoonOpen
SelectMenu
- SelectMenu: the
SelectMenuandSelectMenuOptioncomponents have been removed. TheSelectandOptionnow allow custom content.
StandardListItem
- StandardListItem: the
StandardListItemhas been replaced with theListItemStandardcomponent
SuggestionGroupItem
- SuggestionGroupItem: the
SuggestionGroupItemcomponent has been replaced by theSuggestionItemGroupcomponent
TableColumn
- TableColumn: the
TableColumncomponent has been replaced with theTableHeaderCellcomponent
TableGroupRow
- TableGroupRow: the
TableGroupRowcomponent has been deleted
Text
- Text: the
Textcomponent has been replaced with theui5-textweb component, please visit our Migration Guide for more details.
ThemeProvider
- ThemeProvider: the
GlobalStyleClassesenum has been removed
Toolbar
- Toolbar: the
Toolbarcomponent and its related components have been moved to the@ui5/webcomponents-react-compatpackage.
ToolbarV2, ToolbarSpacerV2 & ToolbarSeparatorV2
- ToolbarV2: the
ToolbarV2component has been renamed toToolbar - ToolbarSpacerV2: the
ToolbarSpacerV2component has been renamed toToolbarSpacer - ToolbarSeparatorV2: the
ToolbarSeparatorV2component has been renamed toToolbarSeparator
VariantManagement
- VariantManagement: the
portalContainerprop has been removed as it is no longer needed.
Enums
- enums: the
MessageBoxActionsenum has been renamed toMessageBoxAction - enums: the
MessageBoxTypesenum has been renamed toMessageBoxType - enums: the
Themesenum has been renamed toThemeand the deprecated "Belize" (sap_belize) theme family has been removed
Types
- CommonProps - TypeScript:
dangerouslySetInnerHTMLtype has been removed
Charts
- charts: the
MicroBarChartcomponent as been removed as this is a legacy component which is not covered by design specs anymore.
Base
- useResponsiveContentPadding: The
useResponsiveContentPaddinghas been removed. You can achieve the same look and feel by using the responsive content padding from Common CSS. - All
spacingvariables have been removed. You can use common CSS classes as a substitute for most variables. For more information, please refer to our Migration Guide.
Changes
Bug Fixes
-
AnalyticalTable -
useRowDisableSelection: removetitlefrom select-all cell (#5955) (c731554), closes #5953 -
AnalyticalTable: don't wrap custom header content in
Textcomponent (#6022) (455acc1) -
AnalyticalTable: fire row select & click events on
keyupinstead ofkeydown(#6013) (f1386f8), closes #4388 -
AnalyticalTable: fix custom header alignment (#6068) (c4a49e4)
-
AnalyticalTable: improve focus border alignment (#5944) (18aeb52), closes #5898
-
apply correct scoping for internal ui5wc CSS vars (#6057) (3822bee), closes #6051
-
CommonProps - TypeScript: remove
dangerouslySetInnerHTMLfrom types (#6002) (f5f9101) -
deps: update dependency @tanstack/react-virtual to v3.5.1 (#5883) (2db3ca9)
-
deps: update dependency react-content-loader to v7.0.1 (#5899) (5ed11e9)
-
deps: update dependency react-content-loader to v7.0.2 (#5909) (cb79434)
-
deps: update react monorepo to v19.0.0-rc-fb9a90fa48-20240614 (patch) (#5928) (863055a)
-
MessageBox - TypeScript: adjust
onClosetype (#5975) (a30867a) -
MessageViewItem: enable details view if
titleTextis overflowing (#6015) (dba28ce), closes #5990 -
MessageView: use correct icon and color for default type (#6016) (0018bba)
-
ObjectStatus: remove
HTMLDivElementfromonClicktype (#6011) (671cfaa) -
use new JSX transform in preparation for React 19 (#5837) (7dcad64)
-
codemod: fix import statment for UI5 Web Component enums (#6084) (b3a5aed)
-
AnalyticalTable: add "Filter" text to column popover (#6164) (c035703), closes #6132
-
AnalyticalTable: add
aria-hiddento multi selection checkboxes (#6134) (082d1c0), closes #6133 -
AnalyticalTable: allow selecting all rows via keyboard (#6168) (65de580), closes #6110
-
AnalyticalTable: fix pop-in content styles (#6170) (5f7d56b), closes #5977
-
deps: update dependency @tanstack/react-virtual to v3.8.4 (main) (#6137) (ef1650b)
-
ObjectPage: increase header z-index (#6117) (e9aeb63), closes #6116
-
ObjectPageTitle: prevent styling race condition when using static css bundle (#6115) (f4c4ebb)
-
UI5CustomEvent - TypeScript: correctly
currentTargettype (#6167) (656ad5a), closes #6136 -
AnalyticalTable: correct
CustomElementsScopeimport path (#6184) (de68b2d), closes #6183 -
MessageBox: don't throw error if
onCloseis not passed (#6226) (7981491), closes #6215 -
VariantManagement: apply correct header size for "Manage Views" dialog (#6185) (8b01af4)
-
add runtime index to global Modal and Style store (#6248) (8184b4e)
-
AnalyticalTable: ensure loading indicator displays correctly across all browsers (#6244) (4fb6008), closes #6243
chore
Code Refactoring
-
AnalyticalTable: remove deprecated props & enums (#6021) (ca13875)
-
AnalyticalTable: remove unnecessary
portalContainerprop (#6039) (7e19fbb) -
make titleText required for object page sections (#6014) (10e50a2)
-
Modals: replace context with use-sync-external-store (#6042) (e0818c4)
-
FilterBar: remove reference copying of filter/input elements (#6214) (4473118), closes #5652
-
Modals: avoid unnecessary use of
createPortal(#6242) (a571981) -
AnalyticalTable: remove
selectedFlatRows& addrowsByIdtoonRowSelect(#6255) (ee2785c)
Features
-
AnalyticalTable: introduce
loadingDelayprop (#6025) (6d80fd8) -
cli: create codemod for UI5 Web Components React v2 migration (#5908) (9f65c98)
-
DynamicPage & ObjectPage: use ui5wc
DynamicPage& renameObjectPagecomponents (#5939) (cb684cd) -
move
Loadertocompatpackage & replace withBusyIndicator(#6020) (80d8c0b) -
ObjectPage: introduce
preserveHeaderStateOnClickprop (#6049) (c3c6f06) -
RadialChart: introduce
loading&loadingDelayprops (#6028) (3891437) -
support objects and references as Web Component props (#5957) (f41d32b)
-
ThemeProvider: apply Fiori scrollbar styling to all scroll containers (#5978) (9a611fd)
-
codemod: basic replacements for
DynamicPage(#6086) (93819a9) -
codemod: transform Text
wrappingtomaxLines(#6085) (a879a9b) -
ObjectPage: refactor component to support ui5wc v2 (#6089) (105b2da)
-
update to UI5 Web Components ~2.1.1 (#6151) (80c9a65), closes #5971
-
VariantManagement: introduce
sizeprop & improve docs (#6166) (c0184cc) -
expose CLI package for creating web component wrappers (#6212) (28b14d9), closes #5046
-
react 19: bind web components event handlers using react lifecycle (#6169) (70f9f27)
-
register current runtime version in window (#6222) (367628c), closes #6210
-
AnalyticalTable - TypeScript: improve instance & prop types (#6256) (796f7c1)