2.0.0-rc.3 (2024-05-10)
Bug Fixes
- ui5-cb-item: return the DOM reference of the list item (#8872) (2553213), closes #8841
- ui5-dialog: state icon no longer shrinks when title is too long (#8839) (9b7fa49)
- ui5-file-uploader: adjust drop area (56bcab5), closes #8572
- ui5-illustrated-message: typo in the UnsuccessfulAuth name (#8873) (b64d76f)
- ui5-link: remove unnecessary transparent border (aa27032), closes #8512
- ui5-multi-combobox: correct unstable tests (#8867) (b2d004b)
- ui5-multi-combobox: remove value state header on validation reset (#8832) (5cad77b), closes #8674
- ui5-multi-input: focus tokens on BACKSPACE for inputs of type 'Number' and 'Email' (#8866) (7b5645d), closes #8712
- ui5-progress-indicator: removed redundant z-index (#8797) (4763637), closes #8303
- ui5-split-button: restrict height manipulation from outside wrapper (#8780) (691c68e)
- ui5-step-input: remove value rounding, apply value-state (#8293) (0c0aa1d)
- ui5-tabcontainer: avoid multiple selected tabs when there is no explicit selection (#8808) (ae8d969)
- ui5-tab: focus() now works if tab is currently displayed in the overflow (#8796) (52c3ea8)
- ui5-time-picker: fix buttons announcements in value help dialog (#8848) (d5f25fb)
- ui5-toolbar: prevent closing of overflow on interaction (#8924) (9fb21bf)
chore
Code Refactoring
- rename ValueState values (#8864) (ef9304d)
- theming: remove Belize theme (#8519) (990313f), closes #8461
- ui5-*: use unified API to define a11y attributes via
accessibilityAttributes(#8810) (49d587c) - ui5-badge: change default values of properties (#8601) (6d1df02)
- ui5-badge: rename Badge
ui5-badgeto Tagui5-tag(#8884) (4b8c1ee) - ui5-carousel: replace items-per-page-s, items-per-page-m, items-per-page-l properties (#8635) (fc8d15a), closes #8494 #8496 #8461 #8497 #8461 #8504 #8509 #8507 #8511 #8501 #8461 #8503 #8461 #8506 #8502 #8524 #8461 #8525 #8461 #8518 #8461 #8526 #8529 #8528 #8531 #8532 #8534 #8163 #8527 #8538 #8521 #8461 #8542 #8461 #8548 #8555 #8559 #8565 #8570 #8558 #8568 #8596 #8192 #8606 #8605 #8600 #8602
- ui5-icon: add mode property (#8834) (446483d)
- ui5-illustrated-message: remove titleLevel property (#8700) (9fe199c)
- ui5-input: events changes (#8769) (9f5c8a4)
- ui5-li, ui5-list: changes accessibleRole type (#8825) (8235159)
- ui5-list: enable hierarchical groups (#8632) (193ed52), closes #8461
- ui5-menu: rename the busy and busy delay properties (#8778) (3a4be3a), closes #8764
- ui5-page: rename disableScrolling and floatingFooter properties (#8816) (2f6fe6c)
- ui5-segmented-button-item: implement segmented button item independently from button (#8669) (7b5f751)
- ui5-segmented-button: rename
modetoselectionMode(#8761) (4be1540) - ui5-split-button: remove
activeIconproperty (#8803) (f2bcfc1), closes #8461 - ui5-table: move Table to
@ui5/webcomponents-compat(#8849) (779bcdc) - ui5-title: wrap text by default (#8916) (f267f50)
- ui5-toast: replace
showmethod withopenproperty (#8855) (372d27d), closes #8461 - ui5-wizard: rename event parameter (#8845) (9882144), closes #8461
Features
- ui5-badge: new property added (#8714) (a60c5ee)
- ui5-date-picker: Replace
openPickermethod withopenproperty (#8749) (d283984)
Reverts
BREAKING CHANGES
-
ui5-title: wrapping-type property default value has changed from
NonetoNormal.
Previously long texts would truncate if there is not enough space. Now, long texts would wrap. -
ui5-input:
- Input event 'suggestion-item-preview' was renamed to 'selection-change'
If you have previously attached to 'suggestion-item-preview' event:
input.addEventListener("suggestion-item-preview", event => { const { item, targetRef } = event.detail;});Now you should attach to 'selection-change' event:
input.addEventListener("selection-change", event => { const { item, targetRef } = event.detail;});The event details remain the same. The only difference is that item and targetRef may be null, because 'selection-change' event is also fired when the input value no longer matches a selected suggestion.
- Deleted event 'suggestion-item-select'
If you have previously listened to 'suggestion-item-select' event to detect which suggestion item has been selected by the user:
input.addEventListener("suggestion-item-select", event => {
const suggestionItem = event.detail.item;
// do something with the suggestion item
});Now you can detect which suggestion item was selected if you attach to 'selection-change event', keep the selected item in a variable and during 'change' event check if the input value matches the last selected item:
let suggestionItem;
input.addEventListener("selection-change", (event) => {
suggestionItem = event.detail.item;
});
input.addEventListener("change", (event) => {
if(event.target.value && suggestionItem &&
(event.target.value === suggestionItem.text)){
// do something with the suggestion item
console.log(suggestionItem);
}
});- Removed property 'previewItem'
Accessing the suggestion item under preview was done like this:
const suggestionItemOnPreview = input.previewItem;Now you can attach to 'selection-change' event and get the previewed suggestion item from the event detail:
input.addEventListener("selection-change", event => {
const suggestionItemOnPreview = event.detail.item;
});- ui5-date-picker: removed
openPicker(),closePicker()andisOpen()methods. If you previously usedopenPicker()andclosePicker():
const datePicker = document.getElementById("exampleID");
datePicker.openPicker();
datePicker.closePicker();Now use the open property respectively:
const datePicker = document.getElementById("exampleID");
datePicker.open = true;
datePicker.open = false;Related to: #8461
- ui5-*: FlexibleLayout's
accessibilityTextsandaccessibilityRolesproperties are removed. If you have previously used theaccessibilityTextsoraccessibilityRolesproperties:
fcl.accessibilityTexts = {
startColumnAccessibleName: "Products list",
midColumnAccessibleName: "Product information",
endColumnAccessibleName: "Product detailed information",
startArrowLeftText: "Collapse products list",
startArrowRightText: "Expand products list",
endArrowLeftText: "Expand product detailed information",
endArrowRightText: "Collapse product detailed information",
startArrowContainerAccessibleName: "Start Arrow Container",
endArrowContainerAccessibleName: "End Arrow Container",
}
fcl.accessibilityRoles = {
startColumnRole: "complementary",
startArrowContainerRole: "navigation",
midColumnRole: "main",
endArrowContainerRole: "navigation",
endColumnRole: "complementary".
}Now use accessibilityAttributes instead:
fcl.accessibilityAttributes = {
startColumn: {
role: "complementary",
name: "Products list",
},
midColumn: {
role: "main",
name: "Product information",
},
endColumn: {
role: "complementary",
name: "Product detailed information",
},
startArrowLeft: {
name: "Collapse products list",
},
startArrowRight: {
name: "Expand products list",
},
endArrowLeft: {
name: "Expand product detailed information",
},
endArrowRight: {
name: "Collapse product detailed information",
},
startArrowContainer: {
role: "navigation",
name: "Start Arrow Container",
},
endArrowContainer: {
role: "navigation",
name: "End Arrow Container",
},
};ShellBar's accessibilityTexts and accessibilityRoles properties are removed. If you have previously used the accessibilityTexts or accessibilityRoles properties:
shellbar.accessibilityTexts = {
profileButtonTitle: "John Dow",
logoTitle: "Custom logo title",
}
shellbar.accessibilityRoles = {
logoRole: "link"
};Now use accessibilityAttributes instead:
shellbar.accessibilityAttributes = {
profile: {
name: "John Dow",
},
logo: {
role: "link"
name: "Custom logo title"
},
};Related to: #8461
- ui5-badge: Badge web component has been renamed to Tag. If you have previously used the
ui5-badge:
<ui5-badge></ui5-badge>Now use ui5-tag instead:
<ui5-tag></ui5-tag>Related to: #8461
- ui5-icon: The properties
ariaHidden,interactiveandaccessibleRole, previously available in theui5-iconcomponent, have been removed. They are replaced by a new property namedmodethat specifies the component's mode.
Alongside this update, a new enumerationIconMode, has been introduced to outline the available options for this property:
Image: This is the default setting. It configures the component to internally render role="img".
Interactive: Configures the component to internally render role="button". This mode also supports focus and press handling to enhance interactivity.
Decorative: In this mode, the component internally renders role="presentation" and aria-hidden="true", making it purely decorative without semantic content or interactivity.
Now, you can set the mode of the ui5-icon as it follows:
<ui5-icon id="imageIcon" mode="Image" name="add-equipment"></ui5-icon>
<ui5-icon id="myInteractiveIcon" mode="Interactive" name="add-equipment"></ui5-icon>
<ui5-icon id="decorativeIcon" mode="Decorative" name="add-equipment"></ui5-icon>- ui5-li, ui5-list: The
accessibleRoleproperty for bothui5-liandui5-listhas been updated from a string type to an enum type.
Additionally, the new enumsListItemAccessibleRoleandListAccessibleRolehave been introduced for these properties respectively.
The available options for theui5-li:
ListItem- Represents the ARIA role "listitem". (by default)
MenuItem- Represents the ARIA role "menuitem".
TreeItem- Represents the ARIA role "treeitem".
Option- Represents the ARIA role "option".
None- Represents the ARIA role "none".
The available options for the ui5-list:
List- Represents the ARIA role "list". (by default)
Menu - Represents the ARIA role "menu".
Tree - Represents the ARIA role "tree".
ListBox - Represents the ARIA role "listbox".
If you have previously used:
<ui5-li accessible-role="menuitem"> List Item</ui5-li>
<ui5-list accessible-role="tree"> List </ui5-list>Now use:
<ui5-li accessible-role="MenuItem"> List Item</ui5-li>
<ui5-list accessible-role="Tree"> List </ui5-list>- ui5-table: If you previously used the Table from
@ui5/webcomponents, you need to import it from @ui5/webcomponents-compat:
import "@ui5/webcomponents-compat/dist/Table.js"; // ui5-table
import "@ui5/webcomponents-compat/dist/TableColumn.js"; // ui5-table-column
import "@ui5/webcomponents-compat/dist/TableRow.js"; // ui5-table-row`
import "@ui5/webcomponents-compat/dist/TableGroupRow.js";` // ui5-table-group-row
import "@ui5/webcomponents-compat/dist/TableCell.js"; // ui5-table-cellRelated to: #8461
- If you previously used ValueState.Warning, ValueState.Error or ValueState.Success, start using ValueState.Critical, ValueState.Negative and ValueState.Positive respectively.
All components with valueState property are also affected. For example:
<ui5-input value-state="Success"></ui5-input>
<ui5-input value-state="Warning"></ui5-input>
<ui5-input value-state="Error"></ui5-input><ui5-input value-state="Positive"></ui5-input>
<ui5-input value-state="Critical"></ui5-input>
<ui5-input value-state="Negative"></ui5-input>Related to: #8461
- ui5-toast: The Toast#show method has been replaced by
openproperty. If you previously usedtoast.show()to show the toast, you must now setoast.open=true. - ui5-segmented-button-item: The
ui5-segmentedbutton-itempressedproperty is calledselectednow.
Previously the application developers could use the ui5-segmentedbutton-item as follows:
<ui5-segmented-button>
<ui5-segmented-button-item pressed> Option 1</ui5-segmented-button-item>
<ui5-segmented-button-item>Option 2</ui5-segmented-button-item>
<ui5-segmented-button-item>Option 3</ui5-segmented-button-item>
</ui5-segmented-button>Now the application developers should use the ui5-segmentedbutton-item as follows:
<ui5-segmented-button>
<ui5-segmented-button-item selected> Option 1</ui5-segmented-button-item>
<ui5-segmented-button-item>Option 2</ui5-segmented-button-item>
<ui5-segmented-button-item>Option 3</ui5-segmented-button-item>
</ui5-segmented-button>Related to: #8461
- ui5-wizard:
changeWithClickwas renamed towithScrollin theWizardStepChangeEventDetail.
JIRA: BGSOFUIRILA-3867
- theming: Remove SAP Belize theme
- ui5-illustrated-message: The
titleLevelproperty of theui5-illustrated-messageis removed.
If you have previously used thetitleLevelproperty:
<ui5-illustrated-message title-level="H6>
it will no longer work for the component.
Instead, you could set the title of the ui5-illustrated-message on the title slot, as it follows
<ui5-illustrated-message>
<ui5-title slot="title" level="H3">This is a slotted title</ui5-title>
</ui5-illustrated-message>- ui5-segmented-button: The mode property is changed to
SelectionModeand the values it take fromSingleSelectandMultiSelecttoSingleandMultiple. Also deleted deprecated getter -selectedItemand deprecated event detailselectedItemand now can be used with theselectedItemsgetter andselectedItemsevent detail.
Previously the application developers could set the selection mode as follows:
<ui5-segmented-button id="segButtonMulti" mode="MultiSelect">
<ui5-segmented-button-item>Item</ui5-segmented-button-item>
<ui5-segmented-button-item>Item</ui5-segmented-button-item>
<ui5-segmented-button-item>Click</ui5-segmented-button-item>
<ui5-segmented-button-item>SegmentedButtonItem</ui5-segmented-button-item>
</ui5-segmented-button>Now the application developers could set the selection mode as follows:
<ui5-segmented-button id="segButtonMulti" selection-mode="Multiple">
<ui5-segmented-button-item>Item</ui5-segmented-button-item>
<ui5-segmented-button-item>Item</ui5-segmented-button-item>
<ui5-segmented-button-item>Click</ui5-segmented-button-item>
<ui5-segmented-button-item>SegmentedButtonItem</ui5-segmented-button-item>
</ui5-segmented-button>Related to: #8461
- ui5-page:
disableScrollinghas been renamed,floatingFooterproperty has been removed andfixedFooterproperty has been added instead.
Related to: #8461
- ui5-split-button: The
activeIconproperty ha been remove, as the interaction is considered obsolete by the UX design team. if you previously usedactive-icon:
<ui5-split-button id="sbTextActiveIcon" active-icon="accept">Active Icon</ui5-split-button>it's wont take effect anymore even if set.
- ui5-menu: The busy and busyDelay and properties of the ui5-menu and ui5-menu-item are renamed.
If you have previously used the busy, busyDelay properties:
now you should use loading and loadingDelay properties:
- ui5-carousel: "Device#isIE" method has been removed and no longer available
Related to #8461
- ui5-carousel: Removed the
CSP.jsmodule and the creation of<style>and<link>tags, as all browsers now support adoptedStyleSheets. The following APIs are not available any more and should not be used:
import { setUseLinks } from "@ui5/webcomponents-base/dist/CSP.js"
import { setPackageCSSRoot } from "@ui5/webcomponents-base/dist/CSP.js"
import { setPreloadLinks } from "@ui5/webcomponents-base/dist/CSP.js"- ui5-carousel: Removed the
ICardHeaderinterface. If you previously used the interface
import type { ICardHeader } from "@ui5/webcomponents-base/dist/Card.js"Use the CardHeader type instead:
import type CardHeader from "@ui5/webcomponents-base/dist/CardHeader.js"- ui5-carousel: Removed the
IUploadCollectionIteminterface. If you previously used the interface:
import type { IUploadCollectionItem} from "@ui5/webcomponents-fiori/dist/UploadCollection.js"Use the UploadCollectionItem type instead:
import type UploadCollectionItem from "@ui5/webcomponents-fiori/dist/UploadCollectionItem.js"Related to #8461
- ui5-carousel: The
sizeproperty now accepts different values. If you previously used it like:
<ui5-busy-indicator size="Small"></ui5-busy-indicator>Now use the new values instead:
<ui5-busy-indicator size="S"></ui5-busy-indicator>Related to #8461
- ui5-carousel: The
statusproperty and its shadow part have been renamed. If you previously used them:
<style>
.cardHeader::part(status) { ... }
</style>
<ui5-card-header status="3 of 10"></ui5-popover>Now use additionalText instead:
<style>
.cardHeader::part(additional-text) { ... }
</style>
<ui5-card-header class="cardHeader" additional-text="3 of 10"></ui5-card-header>Related to #8461
- ui5-carousel: The
pageIndicatorStyleno longer exists. If you previously used it like:
<ui5-carousel page-indicator-style="Numeric"></ui5-carousel>Now you should use pageIndicatorType instead:
<ui5-carousel page-indicator-type="Numeric"></ui5-carousel>Related to #8461
- ui5-carousel: Removed
UI5Element#rendermethod in favour ofUI5Element#renderer. If you previously used "render"
class MyClass extends UI5Element {
static get render() {
return litRenderer;
}
}start using "renderer"
class MyClass extends UI5Element {
static get renderer() {
return litRenderer;
}
}- ui5-carousel: Remove JavaScript template option from @ui5/create-webcomponents-package
Previouslynpm init @ui5/webcomponents-packageused to create JS-based project, however now it will be TypeScript-based project.
If you previously usednpm init @ui5/webcomponents-package --enable-typescriptto create TypeScript-based project, now it's by default, e.gnpm init @ui5/webcomponents-packageand--enable-typescriptis removed. - ui5-carousel: The
LeftandRightoptions option have been renamed. If you previously used them to set the placement or the alignment of the popover:
<ui5-popover horizontal-align="Left" placement-type="Left"></ui5-popover>Now use Start or End instead:
<ui5-popover horizontal-align="Start" placement-type="Start"></ui5-popover>Related to #8461
- docs: deploy v2 preview
- ui5-carousel: Remove
soccoricon. Usesoccerinstead. - ui5-carousel: Remove
add-polygoneicon. Useadd-polygoninstead. - ui5-carousel: The JSDoc plugin has been removed, and the generation of api.json has stopped. If you previously relied on the
ui5-package/dist/api.json file, you can now useui5-package/dist/custom-elements.json - ui5-carousel: All Assets-static.js modules are removed. If you previously imported any Assets-static.js module from any package:
import "@ui5/webcomponents/dist/Assets-static.js";
import "@ui5/webcomponents-icons/dist/Assets-static.js"use the dynamic equivalent of it:
import "@ui5/webcomponents/dist/Assets.js";
import "@ui5/webcomponents-icons/dist/Assets.js"Related to: #8461
- ui5-carousel: The event
selected-dates-changeis renamed toselection-change. In addition the event details
valuesanddatesare renamed toselectedValuesandselectedDateValues. If you previously used the Calendar event as follows:
myCalendar.addEventListener("selected-dates-change", () => {
const values = e.detail.values;
const dates = e.detail.dates;
})Now you have to use the new event name and details:
myCalendar.addEventListener("selection-change", () => {
const values = event.detail.selectedValues;
const dates = event.detail.selectedDateValues;
})Related to: #8461
- ui5-carousel: The property
coloris renamed tovalue. If you previously used the change event of the ColorPicker as follows:
<ui5-color-picker color="red"></ui5-color-picker>Now you have to use it like this:
<ui5-color-picker value="red"></ui5-color-picker>Related to: #8461
- ui5-carousel: JavaScript projects may not function properly with the tools package.
- ui5-carousel: The
openPopoverandshowAtmethods are removed in favor ofopenandopenerproperties. If you previously used the imperative API:
button.addEventListener("click", function(event) {
colorPalettePopover.showAt(this);
});Now the declarative API should be used instead:
<ui5-button id="opener">Open</ui5-button>
<ui5-color-palette-popover opener="opener">button.addEventListener("click", function(event) {
colorPalettePopover.open = !colorPalettePopover.open;
});- ui5-carousel: The
ui5-barcomponent is now inmainlibrary. If you previously imported theui5-barfromfiori:
import "@ui5/webcomponents-fiori/dist/Bar.js;Now, import the ui5-bar from main:
import "@ui5/webcomponents/dist/Bar.js";Related to: #8461
- ui5-carousel: If you have previously used:
<ui5-tab id="nestedTab" slot="subTabs"></ui5-tab>Now use:
<ui5-tab id="nestedTab" slot="items"></ui5-tab>Relates to #8461
- ui5-carousel: If you have previously used:
<ui5-tabcontainer tabs-overflow-mode="StartAndEnd"></ui5-tabcontainer>Now use:
<ui5-tabcontainer overflow-mode="StartAndEnd"></ui5-tabcontainer>Relates to #8461
- ui5-carousel: If you previously imported
TabContainerBackgroundDesign, useBackgroundDesigninstead.
Relates to #8461
- ui5-carousel: The showOverflow property is removed. If previously you have used:
<ui5-tabcontainer show-overflow></ui5-tabcontainer>now use the overflowButton slot:
<ui5-tabcontainer>
<ui5-button slot="startOverflowButton" id="startOverflowButton">Start</ui5-button>
<ui5-button slot="overflowButton" id="endOverflowButton">End</ui5-button>
</ui5-tabcontainer>Relates to #8461
- ui5-carousel: The
placementTypeproperty and thePopoverPlacementTypeenum have been renamed.
If you have previously used theplacementTypeproperty and thePopoverPlacementType
<ui5-popover placement-type="Bottom"></ui5-popover>import PopoverPlacementType from "@ui5/webcomponents/dist/types/PopoverPlacementType.js";Now use placement instead:
<ui5-placement="Bottom"></ui5-popover>import PopoverPlacementType from "@ui5/webcomponents/dist/types/PopoverPlacement.js";Related to #8461
- ui5-carousel: The
sizeproperty of theui5--illustrated-messageis renamed todesign.
If you have previously used thesizeproperty:
<ui5-illustrated-message size="Dialog">Now use design instead:
<ui5-illustrated-message design="Dialog">- ui5-carousel: The
separator-styleproperty is renamed toseparatorsand theBreadcrumbsSeparatorStyleenum is renamed toBreadcrumbsSeparator.
If you have previously used theseparator-styleproperty:
<ui5-breadcrumbs separator-style="Slash">Now use separators instead:
<ui5-breadcrumbs separators="Slash">- ui5-carousel: The
disabledproperty of theui5-optionis removed.
If you have previously used thedisabledproperty:
<ui5-option disabled>Option</ui5-option>it will no longer work for the component.
- refactor(ui5-upload-collection): introduce items-per-page property
The items-per-page-s, items-per-page-m, items-per-page-l properties
are replaced by a single property items-per-page
with value in the following format "S1 M2 L3"
- refactor(ui5-carousel): replace items-per-page-s, items-per-page-m, items-per-page-l properties
Add XL size and refactor
-
chore: tests added
-
fix: xl test
-
refactor(ui5-carousel): replace items-per-page-s, items-per-page-m, items-per-page-l properties
Address code review coments
- refactor(ui5-carousel): replace items-per-page-s, items-per-page-m, items-per-page-l properties
Address code review comments
- refactor(ui5-carousel): replace items-per-page-s, items-per-page-m, items-per-page-l properties
Updates documentation
- Icons: UI5 Web Components Icons now export
getPathData(function) instead ofpathData(string)
If you used icons like this:
import "@ui5/webcomponents-icons/dist/accept.js";or like this:
import accept from "@ui5/webcomponents-icons/dist/accept.js";there is no change and no adaptations are required.
In the rare case you imported pathData from icons, for example:
import { pathData, ltr, accData } from "@ui5/webcomponents-icons/dist/accept.js";
console.log(pathData); // String containing the SVG pathyou must change your code to, for example:
import { getPathData, ltr, accData } from "@ui5/webcomponents-icons/dist/accept.js";
getPathData().then(pathData => {
console.log(pathData); // String containing the SVG path
});- ui5-list: The ui5-li-groupheader component is removed. Groups can now be created with the ui5-li-group. Instead of using ui5-li-groupheader as separator in a flat structure:
Related to #8461