You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discussion: Decide on header/subHeader vs heading/subHeading vs title/subtitle vs text/description vs default slot/description vs heading/subtitle vs primaryTitle/SecondaryTitle.
Solution:
All: use titleText and subtitleText in all components where the text has meaning of title and subtitle
All: use headerText and footerText in all components where header and footer slots are present.
Reason: The titleText and subtitleText are closest to title and subtitle and we preferred this pair over the heading and subheading, as headings are usually meant for entire page or section. Where header and footer element are present, we would like to to have headerText and footerText. When it comes to the ShellBar's primaryTitle and seconadaryTitle, we think that they have special meaning and both are titles, not title and subtitle and this is the reason to keep them as they are.
1.2
Discussion: Decide on disabled/readonly states for all components. Is readonly needed?
Solution: Keep readonly
Reason: The readonly state is an important state of the components, both disabled and readonly should remain.
1.3
Discussion: Remove busy property where a user can use the default slot of the ui5-busy-indicator(NotificationListItemBase, List, Table, TableRow)
Solution: Keep the current implementation.
Reason: The app devs can't use the ui5-busy-indicator, because the List, Table has too complex UX related to the growing feature, that requires special handling of the indicator positioning.
1.4
Discussion: Don't use the component tag name in the JS Doc of properties, events, etc.
Solution: Use "component" everywhere in the JSDoc, instead of mentioning the component tag name. (Fix).
Reason: The tag names that belong to base classes will appear in derived classes and will confuse the readers.
Avatar
1.1
Discussion: Replace image property with image slot (currently people can't pass properties to the img tag - that's why we added image-fit-type).
Reason: Adds more flexibility and option to use different types of images, custom icons, etc. + styling using standard CSS.
1.2
Discussion: Replace icon property with icon slot and initials property with initials slot (if we have slots only as an external API, then we can get rid of the properties background-color, size and shape, which are CSS properties as well).
Solution: Keep the current implementation.
Reason: We will introduce too much overhead for the developer to display and position an icon or initials.
1.3
Discussion: the backgroundColor property sounds like the CSS style property and might mislead users that all types of colors are accepted, such as: "red", "green", "#d34343", etc.
Reason: In frameworks like Angular, React, a loop of items is rendered based on single item template, that's why avatarSize on AvatarGroup is not so valuable, as the Avatar has already avatarSize property that can be used.
Button
Discussion: Replace iconSize property with a CSS Shadow part (only used internally by MessageStrip).
Solution: Remove the property and introduce a CSS Shadow Part (Fix) and later adopt the part in the MessageStrip.
Reason: It's an obsolete API, that otherwise has to be supported.
Carousel
Discussion:hideNavigation property -> two separate properties (Carousel: Behavior improvement #3136) - one that shows/hides the dots
and one that shows/hides the arrows (If arrows are in the navigation, then this property would be needed if only the previous is set to true, otherwise the whole navigation will be hidden, containing the arrows).
Solution: rename hideNavigation to hideNavigationArrows(Fix).
Reason: more specific name to emphasise that the arrows visibility is determined by this property, while the "dots" visibility is controlled by another property.
CheckBox
Discussion: Renametext property to default slot.
Solution: Keep the current implementation.
ColorPalette
Discussion: Unification of moreColors(previously called showMore) & showRecentColors properties.
Reason: The method checks if the value state popover is open.
SuggestionItem
Discussion: Remove group property and introduce a separate component, which has default slot for SuggestionItem (As NotificationListGroupItem & NotificationListItem).
Reason: The term info is too generic as everything is info in some form and additionalText is used in openUI5 as text that is complimentary to the main text.
MultiComboBoxItem
Discussion: Rename additionalText property to info
Solution: keep theadditionalText property
Reason: The term info is too generic as everything is info in some form and additionalText is used in openUI5 as text that is complimentary to the main text.
NotificationListItems
Discussion:footnotes slot -> footer
Solution:footnotes is ok for a name. If for some reason the UX/VD can't be full-filled because of the slot, we can always introduce 2 properties in addition.
ResponsivePopover
Discussion: Should not have openBy method in the docs.
Solution: Remove open and use openBy by overriding it to handle the mobile use-case. Fix
Reason: To be more consistent with the Popover's openBy, it's better to have openBy.
ShellBar
Discussion: Rename notificationCount property to notificationsCount property.
Reason: To have consistency with showNotifications property.
Switch
Discussion: Replace graphical property (boolean) with enum property.
Solution: Change to design="Textual, Graphical(Fix).
Reason: More future proof - other options can be easily added in future.
TabContainer
Discussion: The tabLayout property is NOT about the layout of the tab. It is about the layout of the header of the tab. Think of more accurate name.
Solution: Keep the current implementation
Reason: In fact, the tabLayout targets the layout of each tab - the position of the text, icon and additional-text.
Table
1.1
Discussion: Replace moreText property with a slot (we already had this use case, it works fine, until developers need to change a couple of attribute of the button)
Discussion: The slot names are camelCase, shouldn't they be kebab-case as the events and attributes?
Solution: Keep the current implementation.
Reason: The slot names are the values of the slot attribute so they do not have to be kebab-case, but more important the internal usage would become a bit uglier - Instead of this.suggestionItems, developers will have to write this["suggestion-items"].
1.2
Discussion: Some CSS Shadow Part names are camelCase, we have to use kebab-case.
Solution: Rename CSS Shadow Part names to kebab-case.
Reason: In the Web, all CSS Shadow Parts are kebab-case.
1.3
Discussion: Some of the components have subheading, some have "subtitle-text", others subtitle. Should be unified (keep in mind that title is a reserved word).
Solution:
All: use titleText and subtitleText in all components where the text has meaning of title and subtitle
All: use headerText and footerText in all components where header and footer slots are present.
Reason: The titleText and subtitleText are closest to title and subtitle and we preferred this pair over the heading and subheading, as headings are usually meant for entire page or section. Where header and footer element are present, we would like to to have headerText and footerText. When it comes to the ShellBar's primaryTitle and secondaryTitle, we think that they have special meaning and both are titles, not title and subtitle and this is the reason to keep them as they are.
1.4
Discussion: The properties type and design sound generic, we need to be consistent in using the one or the other. The Bar, Page, Button and Link use design, while the AvatarGroup, Input, ListItem, TableRow, MessageStrip use type.
Solution: Use design for visual appearance, while type for functional modes. From the components above, only the MessageStrip's type has to be renamed to design (Fix)
1.5
Discussion: The properties hide-something and no-something are both used and in most of the case they are interchangeable.
Solution: Use "hide-" and rename no-* ones, described above
show/hide sounds better than show/no)
Button
Discussion: The iconSize property seems to be added for the purpose of the MessageStrip's close button,
it is currently public, perhaps we should make it protected/private. Or, if really needed perhaps we need to introduce a slot / CSS Shadow Part
Solution: Remove the property and introduce a CSS Shadow Part (Fix) and later adopt the part in the MessageStrip.
Reason: It's an obsolete API, that otherwise has to be supported.
ComboBox
1.1
Discussion:loading property should be renamed to busy.
Solution: Keep the current implementation.
Reason: The loading serves different purpose, it shows a loading indicator over the items in the popover, the user can keep typing. While busy is showing over the component and prevents typing.
Solution: The component is implemented by spec, just the docs should be more clear. Add more description about the UX of the component when it comes to navigation on desktop and mobile:
On desktop - the user can navigation with LEFT/RIGHT Arrows or via the navigation arrows
On touch devices, the user can use the swipe gesture to navigate through the items. By spec, the navigation arrows are not displayed on touch devices. Fix docs(Switch, Carousel): improve docs #3395
Card [discuss with team Rodopi]
Discussion: Discuss the slot "action", could be be removed in favour of slot "header".
Solution: Introduce a new slot "header" for the Card and new component CardHeader to serve as a header (with all the props/slot related to the header part) refactor(ui5-card): header slot is added #3490
ProductSwitchItem
Discussion: The component have "heading" property, and at the same time "subtitle".
Solution: Use titleText and subtitleText
RangeSlider
Discussion: We have "starValue" and "endValue", but at the same time "min" (the min value) and "max" (the max value). Isn't more consistent to have either "start, end, min, max", or "startValue, endValue, minValue and maxValue"
Solution: Use startValue, endValue, min and maxFix
Discussion: RatingIndicator, Slider and StepInput components all have "value" property.
But, the RatingIndicator has "maxValue" in addition, while the Slider and StepInput has "max" property in addition.
We have to unify those by naming them both "max" or "maxValue" (the Slider/StepInput have also "min").
Solution: RatingIndicator maxValue to become "max" Fix
Discussion: Rename the "select" event to "change", f.e. the CheckBox (Switch, RatingIndicator, ColorPalette) has "change" event, and in general it's more used name.
Solution: Rename the "select" event to "change"Fix
1.2
Discussion: Rename the "selected" property to "checked" in order to be consistent with CheckBox, Switch and the HTML terminology.
Solution: Rename the "selected" event to `"checked" Fix
Discussion: To be more consistent to other components, consider renaming "semanticColor" to "design"
as the property controls several colors of the tab's visual appearance
Discussion: Think about replacing ui5-avatar with ui5-avatar-group-item (or something else). To many properties were introduced into the API of ui5-avatar so it can have correct interaction and accessibility behavior so it can fit as item in ui5-avatar-group. Previously it was display only control.
Exmples
The Interactive and focus properties. They were added because ui5-avatar should be accessed via keyboard in ui5-avatar-group context and it should have click event
Duplication of size and backgroundColor property. They gives the possibility to managed ui5-avatar internally in ui5-avatar-group
Solution: Keep the current implementation.
2
Discussion:
Solution: Remove avatar-size, make use of Avatar size and define the size of the overflow btn according to the first slotted item.
Activity
fifoosid commentedon Apr 8, 2021
Global
1.1
titleTextandsubtitleTextin all components where the text has meaning oftitleandsubtitleheaderTextandfooterTextin all components whereheaderandfooterslots are present.headerTextandheaderLevel(FIX: refactor(ui5-panel): use heading and headingLevel #3271)titleTextandsubtitleText(FIX: refactor(ui5-product-switch-item): rename heading/subtitle to titleText/subtitleText #3270)titleTextandsubtitleTextprimaryTitleandsecondaryTitletitleTextandsubtitleTextare closest totitleandsubtitleand we preferred this pair over theheadingandsubheading, as headings are usually meant for entire page or section. Where header and footer element are present, we would like to to haveheaderTextandfooterText. When it comes to the ShellBar'sprimaryTitleandseconadaryTitle, we think that they have special meaning and both are titles, not title and subtitle and this is the reason to keep them as they are.1.2
disabled/readonlystates for all components. Is readonly needed?disabledandreadonlyshould remain.1.3
busyproperty where a user can use the default slot of theui5-busy-indicator(NotificationListItemBase,List,Table,TableRow)ui5-busy-indicator, because the List, Table has too complex UX related to thegrowingfeature, that requires special handling of the indicator positioning.1.4
component tag namein the JS Doc of properties, events, etc.Avatar
1.1
imageproperty withimageslot (currently people can't pass properties to the img tag - that's why we addedimage-fit-type).imgslot (Fix).1.2
iconproperty withiconslot andinitialsproperty withinitialsslot (if we have slots only as an external API, then we can get rid of the propertiesbackground-color,sizeandshape, which are CSS properties as well).1.3
Avatar Group
avatarSizeneeded? The size can be set on each item passed in the default slot.avatarSizeon AvatarGroup is not so valuable, as the Avatar has alreadyavatarSizeproperty that can be used.Button
iconSizeproperty with a CSS Shadow part (only used internally by MessageStrip).Carousel
hideNavigationproperty -> two separate properties (Carousel: Behavior improvement #3136) - one that shows/hides the dotsand one that shows/hides the arrows (If arrows are in the navigation, then this property would be needed if only the previous is set to true, otherwise the whole navigation will be hidden, containing the arrows).
hideNavigationtohideNavigationArrows(Fix).CheckBox
textproperty todefaultslot.ColorPalette
moreColors(previously calledshowMore) &showRecentColorsproperties.moreColorsdoes not sound as a config, but more like an array of elements that has to be provided.ComboBox: @MapTo0 assigned
filterValueproperty toliveValue.DatePicker/DateRangePicker/TimePicker:
oDateparameter in theformatValuemethod ->dateparameter (No Hungarian Notation).dateFix.Duration Picker @vladitasev assigned [refactor Duration Picker API]
formatPatternproperty (inherited from TimePickerBase).formatValuemethod (also inherited).Icon
interactiveproperty is not enough in order to set all ACC attributes (see A11Y issue with ui5-icon when role="presentation" or aria-hidden="true" provided #3039).Fix feat(ui5-icon): add accessibility role #3407
Input
1.1
maxlengthproperty tomaxLength.maxlengthis the term used for native HTML elements.1.2
isOpenmethod toisValueStateOpened.SuggestionItem
groupproperty and introduce a separate component, which has default slot forSuggestionItem(As NotificationListGroupItem & NotificationListItem).Link
1.1
aelement & the Link control in UI5).1.2
designproperty needed? It is basically changing 2 CSS properties.List
insetproperty toindent.insetmeans when something is part of, inside something bigger,indentis more accurate.ListItem (and derived components)
infotoadditionalText.infois too generic as everything is info in some form andadditionalTextis used in openUI5 as text that is complimentary to the main text.MultiComboBoxItem
additionalTextproperty toinfoadditionalTextpropertyinfois too generic as everything is info in some form andadditionalTextis used in openUI5 as text that is complimentary to the main text.NotificationListItems
footnotes slot->footerfootnotesis ok for a name. If for some reason the UX/VD can't be full-filled because of the slot, we can always introduce 2 properties in addition.ResponsivePopover
openBymethod in the docs.openand useopenByby overriding it to handle themobileuse-case. FixopenBy, it's better to haveopenBy.ShellBar
notificationCountproperty tonotificationsCountproperty.showNotificationsproperty.Switch
graphicalproperty (boolean) with enum property.design="Textual, Graphical(Fix).TabContainer
tabLayoutproperty is NOT about the layout of the tab. It is about the layout of the header of the tab. Think of more accurate name.tabLayouttargets the layout of each tab - the position of thetext,iconandadditional-text.Table
1.1
moreTextproperty with a slot (we already had this use case, it works fine, until developers need to change a couple of attribute of the button)growingButtonText(Fix refactor(ui5-table): more(sub)Text replaced by growingButton(sub)Text #3273)1.2
moreSubtextproperty sounds weird, rename togrowingButtonSubtext.growingButtonSubtext(Fix refactor(ui5-table): more(sub)Text replaced by growingButton(sub)Text #3273)1.3
showNoDataproperty tohideNoDataproperty (this way, by default, the no data text will be shown)TextArea
maxlengthproperty tomaxLength.maxlengthis the term used for native HTML elements.TimeLineItem:
titleName,titleText,itemNameClickableproperties &item-name-clickevent -> single slotitemNametoname,itemNameClickabletonameClickableilhan007 commentedon Apr 13, 2021
All Components
1.1
slotnames are camelCase, shouldn't they be kebab-case as the events and attributes?slotattribute so they do not have to be kebab-case, but more important the internal usage would become a bit uglier - Instead ofthis.suggestionItems, developers will have to writethis["suggestion-items"].1.2
CSS Shadow Partnames are camelCase, we have to use kebab-case.1.3
subheading, some have "subtitle-text", otherssubtitle. Should be unified (keep in mind thattitleis a reserved word).titleTextandsubtitleTextin all components where the text has meaning oftitleandsubtitleheaderTextandfooterTextin all components whereheaderandfooterslots are present.headerTextandheaderLevel(FIX: refactor(ui5-panel): use heading and headingLevel #3271)titleTextandsubtitleText(FIX: refactor(ui5-product-switch-item): rename heading/subtitle to titleText/subtitleText #3270)titleTextandsubtitleTextprimaryTitleandsecondaryTitletitleTextandsubtitleTextare closest totitleandsubtitleand we preferred this pair over theheadingandsubheading, as headings are usually meant for entire page or section. Where header and footer element are present, we would like to to haveheaderTextandfooterText. When it comes to the ShellBar'sprimaryTitleandsecondaryTitle, we think that they have special meaning and both are titles, not title and subtitle and this is the reason to keep them as they are.1.4
typeanddesignsound generic, we need to be consistent in using the one or the other. The Bar, Page, Button and Link usedesign, while the AvatarGroup, Input, ListItem, TableRow, MessageStrip usetype.designfor visual appearance, whiletypefor functional modes. From the components above, only the MessageStrip'stypehas to be renamed to design (Fix)1.5
hide-somethingandno-somethingare both used and in most of the case they are interchangeable.hideFooter (Page)
hideWeekNumbers (Calendar, DatePicker)
hideNavigationArrows (Carousel)
hideSeconds/Min/H (DurationPicker)
hideInput (FileUploader)
hideBackdrop (Popover)
hideValue(ProgressIndicator)
noIcon (MessageStrip) Fix
noCloseButton (MessageStrip) Fix
noArrow (Popover) Fix
noArrows(FCL) Fix
noDnd (UploadCollection) [Fix] refactor(ui5-upload-collection): rename properties #3404
noDelete (UploadCollectionItem) [Fix] refactor(ui5-upload-collection): rename properties #3404
noRetry (UploadCollectionItem) [Fix] refactor(ui5-upload-collection): rename properties #3404
noTerminate (UploadCollectionItem) [Fix] refactor(ui5-upload-collection): rename properties #3404
Button
iconSizeproperty seems to be added for the purpose of the MessageStrip's close button,it is currently public, perhaps we should make it protected/private. Or, if really needed perhaps we need to introduce a slot / CSS Shadow Part
ComboBox
1.1
loadingproperty should be renamed tobusy.loadingserves different purpose, it shows a loading indicator over the items in the popover, the user can keep typing. Whilebusyis showing over the component and prevents typing.1.2
ColorPalette
"more-colors"and"show-recent-colors"- either we should name both withshow-or withoutshow-moreColorsdoes not sound as a property, but more like an array of elements that has to be provided.Carousel [discuss with team Rodopi]
hide-navigationproperty is confusing.On desktop - the user can navigation with LEFT/RIGHT Arrows or via the navigation arrows
On touch devices, the user can use the swipe gesture to navigate through the items. By spec, the navigation arrows are not displayed on touch devices. Fix docs(Switch, Carousel): improve docs #3395
Card [discuss with team Rodopi]
"action", could be be removed in favour of slot "header".ProductSwitchItem
"heading"property, and at the same time"subtitle".titleTextandsubtitleTextRangeSlider
"starValue"and"endValue", but at the same time"min"(the min value) and"max"(the max value). Isn't more consistent to have either"start, end, min, max", or"startValue, endValue, minValue and maxValue"startValue, endValue, min and maxFixRatingIndicator, Slider and StepInput
"value"property.But, the RatingIndicator has
"maxValue"in addition, while the Slider and StepInput has"max"property in addition.We have to unify those by naming them both
"max"or"maxValue"(the Slider/StepInput have also"min").maxValueto become "max" FixRadioButton
1.1
"select"event to"change", f.e. the CheckBox (Switch, RatingIndicator, ColorPalette) has"change"event, and in general it's more used name."select"event to"change"Fix1.2
"selected"property to"checked"in order to be consistent with CheckBox, Switch and the HTML terminology."selected"event to `"checked" FixSelect
SegmentedButton
Tab
"semanticColor"to"design"as the property controls several colors of the tab's visual appearance
"semanticColor"to"design". Fix fix(ui5-tab): rename semanticColor property to design #3336ToggleButton
Popover/ResponsivePopover
openBy(opener), ResponsivePopover hasopen(opener)- should be unifiedopenByfor both components FixToast
"show()"can be renamed to"open()"to be more consistent to Popover's openBy, ResponsivePopoveropentoshow, this should remain.TimelineItem
"itemName"to"name"and"itemNameClickable"to"nameClickable""itemName"to"name"and"itemNameClickable"to"nameClickable"Fix refactor(ui5-timeline-item): rename API #3387itemis obsolete as the component hasitemin its name.nnaydenow commentedon Apr 21, 2021
AvatarGroup
1
Discussion: Think about replacing ui5-avatar with ui5-avatar-group-item (or something else). To many properties were introduced into the API of ui5-avatar so it can have correct interaction and accessibility behavior so it can fit as item in ui5-avatar-group. Previously it was display only control.
Exmples
The
Interactiveandfocusproperties. They were added because ui5-avatar should be accessed via keyboard in ui5-avatar-group context and it should have click eventDuplication of
sizeandbackgroundColorproperty. They gives the possibility to managed ui5-avatar internally in ui5-avatar-groupSolution: Keep the current implementation.
2
avatar-size, make use of Avatarsizeand define the size of the overflow btn according to the first slotted item.refactor(ui5-color-palette): rename moreColors to showMoreColors (#3225)
91 remaining items
refactor(ui5-responsive-popover): API enhancements (#3363)
refactor(ui5-radio-button): change tag name (#3405)
fix(ui5-bar): rename middleContent slot (#3440)
refactor(ui5-list): introduce accessibleRole prop (#3477)
refactor(ui5-list): introduce accessibleRole prop (UI5#3477)
ilhan007 commentedon Jul 21, 2021
Component API Review has been completed.
Moreover, most of the required changes (~60+) are already merged (2 in review at the of writing) and 1 still not started: #3519
You can track all the breaking changes, that are result from the major API Review here:
https://github.com/SAP/ui5-webcomponents/pulls?q=is%3Apr+is%3Aopen+label%3ABREAKING_CHANGE
feat: implement assessibleNameRef for many components (#3442)
refactor(ui5-segmented-button): rename tag name (#3345)
refactor(ui5-list): introduce accessibleRole prop (#3477)