@openui5/sap.m 1.103.0 → 1.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +2 -3
- package/.reuse/dep5 +18 -1
- package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
- package/THIRDPARTY.txt +36 -3
- package/package.json +4 -4
- package/src/sap/m/.library +1 -1
- package/src/sap/m/AccButton.js +1 -1
- package/src/sap/m/ActionListItem.js +1 -1
- package/src/sap/m/ActionSelect.js +1 -1
- package/src/sap/m/ActionSheet.js +1 -1
- package/src/sap/m/App.js +2 -3
- package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
- package/src/sap/m/Avatar.js +2 -2
- package/src/sap/m/BadgeEnabler.js +1 -2
- package/src/sap/m/Bar.js +11 -10
- package/src/sap/m/Breadcrumbs.js +2 -2
- package/src/sap/m/BusyDialog.js +1 -1
- package/src/sap/m/BusyIndicator.js +1 -1
- package/src/sap/m/Button.js +49 -10
- package/src/sap/m/ButtonRenderer.js +10 -2
- package/src/sap/m/Carousel.js +3 -4
- package/src/sap/m/CarouselLayout.js +1 -1
- package/src/sap/m/CheckBox.js +46 -6
- package/src/sap/m/CheckBoxRenderer.js +1 -0
- package/src/sap/m/ColorPalette.js +1 -1
- package/src/sap/m/ColorPalettePopover.js +1 -1
- package/src/sap/m/Column.js +1 -1
- package/src/sap/m/ColumnHeaderPopover.js +5 -7
- package/src/sap/m/ColumnListItem.js +1 -4
- package/src/sap/m/ColumnListItemRenderer.js +1 -2
- package/src/sap/m/ColumnPopoverActionItem.js +3 -3
- package/src/sap/m/ColumnPopoverCustomItem.js +3 -3
- package/src/sap/m/ColumnPopoverItem.js +3 -3
- package/src/sap/m/ColumnPopoverSelectListItem.js +3 -5
- package/src/sap/m/ColumnPopoverSortItem.js +3 -3
- package/src/sap/m/ComboBox.js +6 -5
- package/src/sap/m/ComboBoxBase.js +1 -5
- package/src/sap/m/ComboBoxBaseRenderer.js +2 -2
- package/src/sap/m/ComboBoxTextField.js +1 -7
- package/src/sap/m/ComboBoxTextFieldRenderer.js +19 -4
- package/src/sap/m/CustomDynamicDateOption.js +1 -1
- package/src/sap/m/CustomListItem.js +1 -1
- package/src/sap/m/CustomTile.js +1 -1
- package/src/sap/m/CustomTreeItem.js +3 -3
- package/src/sap/m/CustomTreeItemRenderer.js +2 -2
- package/src/sap/m/DatePicker.js +14 -24
- package/src/sap/m/DateRangeSelection.js +45 -38
- package/src/sap/m/DateTimeField.js +87 -20
- package/src/sap/m/DateTimeInput.js +1 -1
- package/src/sap/m/DateTimePicker.js +52 -28
- package/src/sap/m/Dialog.js +38 -1
- package/src/sap/m/DisplayListItem.js +1 -1
- package/src/sap/m/DraftIndicator.js +1 -1
- package/src/sap/m/DynamicDate.js +1 -1
- package/src/sap/m/DynamicDateFormat.js +2 -5
- package/src/sap/m/DynamicDateOption.js +43 -16
- package/src/sap/m/DynamicDateRange.js +49 -7
- package/src/sap/m/DynamicDateRangeRenderer.js +5 -2
- package/src/sap/m/DynamicDateUtil.js +23 -2
- package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
- package/src/sap/m/ExpandableText.js +1 -1
- package/src/sap/m/FacetFilter.js +2 -2
- package/src/sap/m/FacetFilterItem.js +1 -1
- package/src/sap/m/FacetFilterList.js +4 -4
- package/src/sap/m/FeedContent.js +1 -1
- package/src/sap/m/FeedInput.js +1 -1
- package/src/sap/m/FeedListItem.js +1 -1
- package/src/sap/m/FeedListItemAction.js +1 -1
- package/src/sap/m/Fiori20Adapter.js +2 -2
- package/src/sap/m/FlexBox.js +1 -1
- package/src/sap/m/FlexItemData.js +1 -1
- package/src/sap/m/FormattedText.js +1 -1
- package/src/sap/m/GenericTag.js +1 -1
- package/src/sap/m/GenericTile.js +67 -16
- package/src/sap/m/GenericTileLineModeRenderer.js +4 -4
- package/src/sap/m/GenericTileRenderer.js +16 -4
- package/src/sap/m/GroupHeaderListItem.js +1 -1
- package/src/sap/m/GrowingEnablement.js +37 -11
- package/src/sap/m/GrowingList.js +1 -1
- package/src/sap/m/HBox.js +1 -1
- package/src/sap/m/HeaderContainer.js +3 -3
- package/src/sap/m/HeaderContainerItemNavigator.js +3 -6
- package/src/sap/m/IconTabBar.js +54 -22
- package/src/sap/m/IconTabBarSelectList.js +1 -1
- package/src/sap/m/IconTabFilter.js +1 -1
- package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
- package/src/sap/m/IconTabHeader.js +5 -1
- package/src/sap/m/IconTabSeparator.js +1 -1
- package/src/sap/m/IllustratedMessage.js +64 -25
- package/src/sap/m/IllustratedMessageRenderer.js +10 -6
- package/src/sap/m/Illustration.js +1 -1
- package/src/sap/m/IllustrationPool.js +1 -0
- package/src/sap/m/IllustrationRenderer.js +1 -1
- package/src/sap/m/Image.js +2 -2
- package/src/sap/m/ImageContent.js +1 -1
- package/src/sap/m/Input.js +51 -7
- package/src/sap/m/InputBase.js +1 -1
- package/src/sap/m/InputBaseRenderer.js +2 -2
- package/src/sap/m/InputListItem.js +1 -1
- package/src/sap/m/InputRenderer.js +4 -0
- package/src/sap/m/Label.js +34 -4
- package/src/sap/m/LabelRenderer.js +7 -2
- package/src/sap/m/LightBox.js +1 -1
- package/src/sap/m/LightBoxItem.js +1 -1
- package/src/sap/m/Link.js +95 -10
- package/src/sap/m/LinkRenderer.js +26 -12
- package/src/sap/m/List.js +38 -1
- package/src/sap/m/ListBase.js +104 -40
- package/src/sap/m/ListBaseRenderer.js +7 -15
- package/src/sap/m/ListItemBase.js +40 -11
- package/src/sap/m/ListItemBaseRenderer.js +17 -6
- package/src/sap/m/ListRenderer.js +2 -2
- package/src/sap/m/MaskEnabler.js +52 -2
- package/src/sap/m/MaskInput.js +23 -1
- package/src/sap/m/MaskInputRule.js +1 -1
- package/src/sap/m/Menu.js +1 -1
- package/src/sap/m/MenuButton.js +1 -1
- package/src/sap/m/MenuItem.js +1 -1
- package/src/sap/m/MenuListItem.js +1 -1
- package/src/sap/m/MessageBox.js +1 -1
- package/src/sap/m/MessageItem.js +3 -4
- package/src/sap/m/MessageListItem.js +8 -4
- package/src/sap/m/MessagePage.js +1 -1
- package/src/sap/m/MessagePopover.js +4 -1
- package/src/sap/m/MessagePopoverItem.js +1 -1
- package/src/sap/m/MessageStrip.js +1 -1
- package/src/sap/m/MessageToast.js +1 -1
- package/src/sap/m/MessageView.js +1 -1
- package/src/sap/m/MultiComboBox.js +5 -16
- package/src/sap/m/MultiEditField.js +1 -1
- package/src/sap/m/MultiInput.js +1 -15
- package/src/sap/m/NavContainer.js +21 -19
- package/src/sap/m/NewsContent.js +2 -3
- package/src/sap/m/NotificationList.js +1 -1
- package/src/sap/m/NotificationListBase.js +1 -1
- package/src/sap/m/NotificationListGroup.js +3 -7
- package/src/sap/m/NotificationListGroupRenderer.js +1 -1
- package/src/sap/m/NotificationListItem.js +1 -1
- package/src/sap/m/NumericContent.js +1 -1
- package/src/sap/m/NumericInput.js +1 -1
- package/src/sap/m/ObjectAttribute.js +1 -1
- package/src/sap/m/ObjectHeader.js +3 -3
- package/src/sap/m/ObjectIdentifier.js +3 -3
- package/src/sap/m/ObjectListItem.js +7 -1
- package/src/sap/m/ObjectMarker.js +1 -1
- package/src/sap/m/ObjectNumber.js +2 -3
- package/src/sap/m/ObjectNumberRenderer.js +10 -3
- package/src/sap/m/ObjectStatus.js +2 -3
- package/src/sap/m/ObjectStatusRenderer.js +2 -2
- package/src/sap/m/OverflowToolbar.js +3 -8
- package/src/sap/m/OverflowToolbarAssociativePopover.js +1 -1
- package/src/sap/m/OverflowToolbarAssociativePopoverControls.js +3 -3
- package/src/sap/m/OverflowToolbarAssociativePopoverRenderer.js +2 -2
- package/src/sap/m/OverflowToolbarButton.js +1 -1
- package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
- package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
- package/src/sap/m/P13nAnyFilterItem.js +3 -3
- package/src/sap/m/P13nColumnsItem.js +3 -3
- package/src/sap/m/P13nColumnsPanel.js +3 -3
- package/src/sap/m/P13nConditionPanel.js +10 -3
- package/src/sap/m/P13nDialog.js +3 -3
- package/src/sap/m/P13nDimMeasureItem.js +3 -3
- package/src/sap/m/P13nDimMeasurePanel.js +3 -3
- package/src/sap/m/P13nFilterItem.js +3 -3
- package/src/sap/m/P13nFilterPanel.js +3 -3
- package/src/sap/m/P13nGroupItem.js +3 -3
- package/src/sap/m/P13nGroupPanel.js +3 -3
- package/src/sap/m/P13nItem.js +3 -3
- package/src/sap/m/P13nOperationsHelper.js +2 -2
- package/src/sap/m/P13nPanel.js +3 -3
- package/src/sap/m/P13nSelectionItem.js +3 -3
- package/src/sap/m/P13nSelectionPanel.js +3 -3
- package/src/sap/m/P13nSortItem.js +3 -3
- package/src/sap/m/P13nSortPanel.js +3 -3
- package/src/sap/m/PDFViewer.js +2 -2
- package/src/sap/m/PDFViewerRenderer.js +1 -0
- package/src/sap/m/Page.js +1 -3
- package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
- package/src/sap/m/PagingButton.js +1 -1
- package/src/sap/m/Panel.js +1 -1
- package/src/sap/m/PlanningCalendar.js +4 -16
- package/src/sap/m/PlanningCalendarHeader.js +1 -5
- package/src/sap/m/PlanningCalendarLegend.js +1 -1
- package/src/sap/m/PlanningCalendarRow.js +1 -1
- package/src/sap/m/PlanningCalendarView.js +1 -1
- package/src/sap/m/Popover.js +11 -4
- package/src/sap/m/ProgressIndicator.js +1 -1
- package/src/sap/m/ProgressIndicatorRenderer.js +6 -3
- package/src/sap/m/PullToRefresh.js +1 -1
- package/src/sap/m/QuickView.js +3 -3
- package/src/sap/m/QuickViewBase.js +3 -3
- package/src/sap/m/QuickViewCard.js +3 -3
- package/src/sap/m/QuickViewGroup.js +1 -1
- package/src/sap/m/QuickViewGroupElement.js +3 -3
- package/src/sap/m/QuickViewPage.js +3 -3
- package/src/sap/m/RadioButton.js +47 -20
- package/src/sap/m/RadioButtonGroup.js +29 -19
- package/src/sap/m/RangeSlider.js +1 -3
- package/src/sap/m/RatingIndicator.js +8 -1
- package/src/sap/m/RatingIndicatorRenderer.js +13 -4
- package/src/sap/m/ResponsivePopover.js +3 -3
- package/src/sap/m/ResponsiveScale.js +1 -1
- package/src/sap/m/ScrollBar.js +1 -1
- package/src/sap/m/ScrollContainer.js +1 -1
- package/src/sap/m/SearchField.js +1 -1
- package/src/sap/m/SegmentedButton.js +1 -1
- package/src/sap/m/SegmentedButtonItem.js +1 -1
- package/src/sap/m/Select.js +7 -13
- package/src/sap/m/SelectDialog.js +2 -1
- package/src/sap/m/SelectDialogBase.js +1 -1
- package/src/sap/m/SelectList.js +1 -1
- package/src/sap/m/SelectListRenderer.js +2 -2
- package/src/sap/m/SelectionDetails.js +2 -2
- package/src/sap/m/SelectionDetailsFacade.js +2 -2
- package/src/sap/m/SelectionDetailsItem.js +1 -1
- package/src/sap/m/SelectionDetailsItemLine.js +1 -1
- package/src/sap/m/Shell.js +1 -1
- package/src/sap/m/SimpleFixFlex.js +1 -1
- package/src/sap/m/SinglePlanningCalendar.js +5 -7
- package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
- package/src/sap/m/SinglePlanningCalendarGrid.js +1 -7
- package/src/sap/m/SinglePlanningCalendarMonthGrid.js +1 -1
- package/src/sap/m/SinglePlanningCalendarMonthGridRenderer.js +0 -2
- package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
- package/src/sap/m/SinglePlanningCalendarView.js +1 -1
- package/src/sap/m/SinglePlanningCalendarWeekView.js +1 -1
- package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
- package/src/sap/m/SlideTile.js +30 -5
- package/src/sap/m/Slider.js +1 -1
- package/src/sap/m/SliderTooltip.js +1 -3
- package/src/sap/m/SliderTooltipBase.js +1 -1
- package/src/sap/m/SliderTooltipBaseRenderer.js +2 -2
- package/src/sap/m/SliderTooltipContainer.js +1 -1
- package/src/sap/m/SliderTooltipContainerRenderer.js +2 -2
- package/src/sap/m/SliderTooltipRenderer.js +2 -2
- package/src/sap/m/SplitApp.js +1 -1
- package/src/sap/m/SplitButton.js +1 -3
- package/src/sap/m/SplitContainer.js +1 -5
- package/src/sap/m/StandardDynamicDateOption.js +9 -15
- package/src/sap/m/StandardListItem.js +1 -1
- package/src/sap/m/StandardListItemRenderer.js +2 -2
- package/src/sap/m/StandardTile.js +1 -1
- package/src/sap/m/StandardTreeItem.js +1 -1
- package/src/sap/m/StepInput.js +1 -1
- package/src/sap/m/SuggestionItem.js +1 -1
- package/src/sap/m/SuggestionsPopover.js +4 -2
- package/src/sap/m/Switch.js +1 -1
- package/src/sap/m/TabContainer.js +1 -1
- package/src/sap/m/TabContainerItem.js +1 -1
- package/src/sap/m/TabStrip.js +1 -1
- package/src/sap/m/TabStripItem.js +1 -1
- package/src/sap/m/Table.js +11 -9
- package/src/sap/m/TablePersoController.js +1 -1
- package/src/sap/m/TablePersoDialog.js +6 -15
- package/src/sap/m/TablePersoProvider.js +1 -1
- package/src/sap/m/TableRenderer.js +2 -9
- package/src/sap/m/TableSelectDialog.js +1 -1
- package/src/sap/m/Text.js +1 -1
- package/src/sap/m/TextArea.js +1 -1
- package/src/sap/m/TextAreaRenderer.js +1 -2
- package/src/sap/m/Tile.js +1 -1
- package/src/sap/m/TileContainer.js +1 -1
- package/src/sap/m/TileContent.js +8 -9
- package/src/sap/m/TileContentRenderer.js +3 -3
- package/src/sap/m/TimePicker.js +43 -6
- package/src/sap/m/TimePickerClock.js +2 -3
- package/src/sap/m/TimePickerClocks.js +5 -3
- package/src/sap/m/TimePickerClocksRenderer.js +1 -1
- package/src/sap/m/TimePickerInputs.js +1 -1
- package/src/sap/m/TimePickerInputsRenderer.js +1 -1
- package/src/sap/m/TimePickerInternals.js +1 -1
- package/src/sap/m/TimePickerSlider.js +1 -1
- package/src/sap/m/TimePickerSliders.js +3 -5
- package/src/sap/m/Title.js +1 -1
- package/src/sap/m/TitlePropagationSupport.js +1 -1
- package/src/sap/m/ToggleButton.js +2 -2
- package/src/sap/m/Token.js +1 -3
- package/src/sap/m/Tokenizer.js +1 -1
- package/src/sap/m/Toolbar.js +1 -1
- package/src/sap/m/ToolbarLayoutData.js +1 -1
- package/src/sap/m/ToolbarSeparator.js +1 -1
- package/src/sap/m/ToolbarSpacer.js +1 -1
- package/src/sap/m/Tree.js +8 -1
- package/src/sap/m/TreeItemBase.js +1 -1
- package/src/sap/m/TreeRenderer.js +0 -10
- package/src/sap/m/UploadCollection.js +2 -2
- package/src/sap/m/UploadCollectionItem.js +1 -1
- package/src/sap/m/UploadCollectionParameter.js +1 -1
- package/src/sap/m/UploadCollectionToolbarPlaceholder.js +1 -1
- package/src/sap/m/VBox.js +1 -1
- package/src/sap/m/ValueStateHeader.js +1 -1
- package/src/sap/m/VariantItem.js +160 -0
- package/src/sap/m/VariantManagement.js +665 -570
- package/src/sap/m/ViewSettingsCustomItem.js +1 -1
- package/src/sap/m/ViewSettingsCustomTab.js +1 -1
- package/src/sap/m/ViewSettingsDialog.js +1 -1
- package/src/sap/m/ViewSettingsFilterItem.js +1 -1
- package/src/sap/m/ViewSettingsItem.js +1 -1
- package/src/sap/m/VisibleItem.js +1 -1
- package/src/sap/m/WheelSlider.js +1 -1
- package/src/sap/m/WheelSliderContainer.js +1 -1
- package/src/sap/m/Wizard.js +1 -3
- package/src/sap/m/WizardProgressNavigator.js +1 -1
- package/src/sap/m/WizardStep.js +1 -1
- package/src/sap/m/changeHandler/AddTableColumn.js +12 -13
- package/src/sap/m/changeHandler/ChangeLinkTarget.js +2 -3
- package/src/sap/m/changeHandler/CombineButtons.js +19 -22
- package/src/sap/m/changeHandler/MoveTableColumns.js +6 -6
- package/src/sap/m/changeHandler/SelectIconTabBarFilter.js +5 -5
- package/src/sap/m/changeHandler/SplitMenuButton.js +7 -6
- package/src/sap/m/delegate/DateNavigation.js +0 -4
- package/src/sap/m/designtime/Link.designtime.js +19 -11
- package/src/sap/m/designtime/VariantManagement.designtime.js +36 -26
- package/src/sap/m/flexibility/EngineFlex.js +48 -0
- package/src/sap/m/inputUtils/selectionRange.js +1 -2
- package/src/sap/m/library.js +30 -6
- package/src/sap/m/messagebundle.properties +30 -3
- package/src/sap/m/messagebundle_ar.properties +26 -8
- package/src/sap/m/messagebundle_bg.properties +20 -2
- package/src/sap/m/messagebundle_ca.properties +19 -1
- package/src/sap/m/messagebundle_cs.properties +20 -2
- package/src/sap/m/messagebundle_cy.properties +21 -3
- package/src/sap/m/messagebundle_da.properties +19 -1
- package/src/sap/m/messagebundle_de.properties +19 -1
- package/src/sap/m/messagebundle_el.properties +22 -4
- package/src/sap/m/messagebundle_en.properties +21 -3
- package/src/sap/m/messagebundle_en_GB.properties +21 -3
- package/src/sap/m/messagebundle_en_US_sappsd.properties +20 -2
- package/src/sap/m/messagebundle_en_US_saprigi.properties +18 -2
- package/src/sap/m/messagebundle_en_US_saptrc.properties +20 -2
- package/src/sap/m/messagebundle_es.properties +20 -2
- package/src/sap/m/messagebundle_es_MX.properties +19 -1
- package/src/sap/m/messagebundle_et.properties +19 -1
- package/src/sap/m/messagebundle_fi.properties +23 -5
- package/src/sap/m/messagebundle_fr.properties +20 -2
- package/src/sap/m/messagebundle_fr_CA.properties +21 -3
- package/src/sap/m/messagebundle_hi.properties +21 -3
- package/src/sap/m/messagebundle_hr.properties +23 -5
- package/src/sap/m/messagebundle_hu.properties +21 -3
- package/src/sap/m/messagebundle_id.properties +21 -3
- package/src/sap/m/messagebundle_it.properties +20 -2
- package/src/sap/m/messagebundle_iw.properties +21 -3
- package/src/sap/m/messagebundle_ja.properties +20 -2
- package/src/sap/m/messagebundle_kk.properties +19 -1
- package/src/sap/m/messagebundle_ko.properties +27 -9
- package/src/sap/m/messagebundle_lt.properties +19 -1
- package/src/sap/m/messagebundle_lv.properties +19 -1
- package/src/sap/m/messagebundle_ms.properties +20 -2
- package/src/sap/m/messagebundle_nl.properties +33 -15
- package/src/sap/m/messagebundle_no.properties +21 -3
- package/src/sap/m/messagebundle_pl.properties +20 -2
- package/src/sap/m/messagebundle_pt.properties +24 -6
- package/src/sap/m/messagebundle_pt_PT.properties +19 -1
- package/src/sap/m/messagebundle_ro.properties +20 -2
- package/src/sap/m/messagebundle_ru.properties +20 -2
- package/src/sap/m/messagebundle_sh.properties +20 -2
- package/src/sap/m/messagebundle_sk.properties +19 -1
- package/src/sap/m/messagebundle_sl.properties +20 -2
- package/src/sap/m/messagebundle_sv.properties +19 -1
- package/src/sap/m/messagebundle_th.properties +52 -34
- package/src/sap/m/messagebundle_tr.properties +23 -5
- package/src/sap/m/messagebundle_uk.properties +20 -2
- package/src/sap/m/messagebundle_vi.properties +20 -2
- package/src/sap/m/messagebundle_zh_CN.properties +20 -2
- package/src/sap/m/messagebundle_zh_TW.properties +19 -1
- package/src/sap/m/p13n/AbstractContainer.js +7 -7
- package/src/sap/m/p13n/AbstractContainerItem.js +4 -4
- package/src/sap/m/p13n/BasePanel.js +8 -7
- package/src/sap/m/p13n/Container.js +3 -3
- package/src/sap/m/p13n/Engine.js +1254 -0
- package/src/sap/m/p13n/FlexUtil.js +161 -0
- package/src/sap/m/p13n/GroupController.js +145 -0
- package/src/sap/m/p13n/GroupPanel.js +12 -5
- package/src/sap/m/p13n/MetadataHelper.js +35 -0
- package/src/sap/m/p13n/PersistenceProvider.js +160 -0
- package/src/sap/m/p13n/Popup.js +49 -12
- package/src/sap/m/p13n/QueryPanel.js +3 -3
- package/src/sap/m/p13n/SelectionController.js +548 -0
- package/src/sap/m/p13n/SelectionPanel.js +15 -3
- package/src/sap/m/p13n/SortController.js +153 -0
- package/src/sap/m/p13n/SortPanel.js +13 -3
- package/src/sap/m/p13n/enum/PersistenceMode.js +43 -0
- package/src/sap/m/p13n/handler/xConfigHandler.js +166 -0
- package/src/sap/m/p13n/modification/FlexModificationHandler.js +90 -0
- package/src/sap/m/p13n/modification/LocalStorageModificationHandler.js +75 -0
- package/src/sap/m/p13n/modification/ModificationHandler.js +143 -0
- package/src/sap/m/p13n/modules/AdaptationProvider.js +67 -0
- package/src/sap/m/p13n/modules/DefaultProviderRegistry.js +147 -0
- package/src/sap/m/p13n/modules/StateHandlerRegistry.js +101 -0
- package/src/sap/m/p13n/modules/UIManager.js +230 -0
- package/src/sap/m/p13n/modules/xConfigAPI.js +288 -0
- package/src/sap/m/plugins/CellSelector.js +741 -0
- package/src/sap/m/plugins/ColumnResizer.js +15 -1
- package/src/sap/m/plugins/DataStateIndicator.js +2 -2
- package/src/sap/m/plugins/PasteProvider.js +1 -1
- package/src/sap/m/plugins/PluginBase.js +4 -3
- package/src/sap/m/semantic/AddAction.js +1 -1
- package/src/sap/m/semantic/CancelAction.js +1 -1
- package/src/sap/m/semantic/DeleteAction.js +1 -1
- package/src/sap/m/semantic/DetailPage.js +1 -1
- package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
- package/src/sap/m/semantic/EditAction.js +1 -1
- package/src/sap/m/semantic/FavoriteAction.js +1 -1
- package/src/sap/m/semantic/FilterAction.js +1 -1
- package/src/sap/m/semantic/FilterSelect.js +1 -1
- package/src/sap/m/semantic/FlagAction.js +1 -1
- package/src/sap/m/semantic/ForwardAction.js +1 -1
- package/src/sap/m/semantic/FullscreenPage.js +1 -1
- package/src/sap/m/semantic/GroupAction.js +1 -1
- package/src/sap/m/semantic/GroupSelect.js +1 -1
- package/src/sap/m/semantic/MainAction.js +1 -1
- package/src/sap/m/semantic/MasterPage.js +1 -1
- package/src/sap/m/semantic/MessagesIndicator.js +1 -1
- package/src/sap/m/semantic/MultiSelectAction.js +1 -1
- package/src/sap/m/semantic/NegativeAction.js +1 -1
- package/src/sap/m/semantic/OpenInAction.js +1 -1
- package/src/sap/m/semantic/PositiveAction.js +1 -1
- package/src/sap/m/semantic/PrintAction.js +1 -1
- package/src/sap/m/semantic/SaveAction.js +1 -1
- package/src/sap/m/semantic/Segment.js +1 -1
- package/src/sap/m/semantic/SegmentedContainer.js +1 -1
- package/src/sap/m/semantic/SemanticButton.js +1 -1
- package/src/sap/m/semantic/SemanticConfiguration.js +3 -4
- package/src/sap/m/semantic/SemanticControl.js +1 -1
- package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +1 -1
- package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +1 -1
- package/src/sap/m/semantic/SemanticPage.js +1 -1
- package/src/sap/m/semantic/SemanticSelect.js +1 -1
- package/src/sap/m/semantic/SemanticToggleButton.js +1 -3
- package/src/sap/m/semantic/SendEmailAction.js +1 -1
- package/src/sap/m/semantic/SendMessageAction.js +1 -1
- package/src/sap/m/semantic/ShareInJamAction.js +1 -1
- package/src/sap/m/semantic/ShareMenu.js +1 -1
- package/src/sap/m/semantic/ShareMenuPage.js +1 -1
- package/src/sap/m/semantic/SortAction.js +1 -1
- package/src/sap/m/semantic/SortSelect.js +1 -1
- package/src/sap/m/table/Util.js +14 -7
- package/src/sap/m/table/columnmenu/ActionItem.js +1 -1
- package/src/sap/m/table/columnmenu/Entry.js +1 -1
- package/src/sap/m/table/columnmenu/Item.js +1 -1
- package/src/sap/m/table/columnmenu/ItemBase.js +1 -1
- package/src/sap/m/table/columnmenu/Menu.js +8 -2
- package/src/sap/m/table/columnmenu/QuickAction.js +1 -1
- package/src/sap/m/table/columnmenu/QuickActionBase.js +1 -1
- package/src/sap/m/table/columnmenu/QuickActionItem.js +1 -1
- package/src/sap/m/table/columnmenu/QuickGroup.js +21 -3
- package/src/sap/m/table/columnmenu/QuickGroupItem.js +13 -1
- package/src/sap/m/table/columnmenu/QuickSort.js +1 -3
- package/src/sap/m/table/columnmenu/QuickSortItem.js +1 -3
- package/src/sap/m/table/columnmenu/QuickTotal.js +21 -3
- package/src/sap/m/table/columnmenu/QuickTotalItem.js +13 -1
- package/src/sap/m/themes/base/Breadcrumbs.less +6 -0
- package/src/sap/m/themes/base/Button.less +0 -1
- package/src/sap/m/themes/base/CellSelector.less +9 -0
- package/src/sap/m/themes/base/CheckBox.less +1 -0
- package/src/sap/m/themes/base/Dialog.less +1 -0
- package/src/sap/m/themes/base/DynamicDateRange.less +4 -0
- package/src/sap/m/themes/base/FeedContent.less +13 -5
- package/src/sap/m/themes/base/GenericTile.less +49 -9
- package/src/sap/m/themes/base/IllustratedMessage.less +7 -0
- package/src/sap/m/themes/base/NewsContent.less +6 -0
- package/src/sap/m/themes/base/NumericContent.less +1 -1
- package/src/sap/m/themes/base/ObjectStatus.less +2 -1
- package/src/sap/m/themes/base/OverflowToolbarAssociativePopover.less +5 -1
- package/src/sap/m/themes/base/SelectList.less +0 -5
- package/src/sap/m/themes/base/SinglePlanningCalendarGrid.less +7 -0
- package/src/sap/m/themes/base/SlideTile.less +35 -4
- package/src/sap/m/themes/base/Table.less +11 -2
- package/src/sap/m/themes/base/TileContent.less +17 -0
- package/src/sap/m/themes/base/library.source.less +1 -0
- package/src/sap/m/upload/UploadSet.js +110 -21
- package/src/sap/m/upload/UploadSetItem.js +18 -7
- package/src/sap/m/upload/UploadSetRenderer.js +8 -16
- package/src/sap/m/upload/UploadSetToolbarPlaceholder.js +1 -1
- package/src/sap/m/upload/Uploader.js +1 -2
package/src/sap/m/Link.js
CHANGED
|
@@ -7,28 +7,30 @@
|
|
|
7
7
|
// Provides control sap.m.Link.
|
|
8
8
|
sap.ui.define([
|
|
9
9
|
"./library",
|
|
10
|
+
"sap/ui/core/Core",
|
|
10
11
|
"sap/ui/core/Control",
|
|
11
12
|
"sap/ui/core/InvisibleText",
|
|
12
13
|
"sap/ui/core/EnabledPropagator",
|
|
14
|
+
"sap/ui/core/AccessKeysEnablement",
|
|
13
15
|
"sap/ui/core/LabelEnablement",
|
|
14
16
|
"sap/ui/core/library",
|
|
15
17
|
"sap/ui/Device",
|
|
16
18
|
"./LinkRenderer",
|
|
17
19
|
"sap/ui/events/KeyCodes",
|
|
18
|
-
"sap/base/Log",
|
|
19
20
|
"sap/base/security/URLListValidator"
|
|
20
21
|
],
|
|
21
22
|
function(
|
|
22
23
|
library,
|
|
24
|
+
Core,
|
|
23
25
|
Control,
|
|
24
26
|
InvisibleText,
|
|
25
27
|
EnabledPropagator,
|
|
28
|
+
AccessKeysEnablement,
|
|
26
29
|
LabelEnablement,
|
|
27
30
|
coreLibrary,
|
|
28
31
|
Device,
|
|
29
32
|
LinkRenderer,
|
|
30
33
|
KeyCodes,
|
|
31
|
-
Log,
|
|
32
34
|
URLListValidator
|
|
33
35
|
) {
|
|
34
36
|
"use strict";
|
|
@@ -42,6 +44,9 @@ function(
|
|
|
42
44
|
// shortcut for sap.ui.core.aria.HasPopup
|
|
43
45
|
var AriaHasPopup = coreLibrary.aria.HasPopup;
|
|
44
46
|
|
|
47
|
+
// shortcut for sap.m.LinkAccessibleRole
|
|
48
|
+
var LinkAccessibleRole = library.LinkAccessibleRole;
|
|
49
|
+
|
|
45
50
|
// shortcut for sap.m.EmptyIndicator
|
|
46
51
|
var EmptyIndicatorMode = library.EmptyIndicatorMode;
|
|
47
52
|
|
|
@@ -78,10 +83,10 @@ function(
|
|
|
78
83
|
* @see {@link fiori:https://experience.sap.com/fiori-design-web/link/ Link}
|
|
79
84
|
*
|
|
80
85
|
* @extends sap.ui.core.Control
|
|
81
|
-
* @implements sap.ui.core.IShrinkable, sap.ui.core.IFormContent, sap.ui.core.ITitleContent
|
|
86
|
+
* @implements sap.ui.core.IShrinkable, sap.ui.core.IFormContent, sap.ui.core.ITitleContent, sap.ui.core.IAccessKeySupport
|
|
82
87
|
*
|
|
83
88
|
* @author SAP SE
|
|
84
|
-
* @version 1.
|
|
89
|
+
* @version 1.105.0
|
|
85
90
|
*
|
|
86
91
|
* @constructor
|
|
87
92
|
* @public
|
|
@@ -94,7 +99,8 @@ function(
|
|
|
94
99
|
interfaces : [
|
|
95
100
|
"sap.ui.core.IShrinkable",
|
|
96
101
|
"sap.ui.core.IFormContent",
|
|
97
|
-
"sap.ui.core.ITitleContent"
|
|
102
|
+
"sap.ui.core.ITitleContent",
|
|
103
|
+
"sap.ui.core.IAccessKeySupport"
|
|
98
104
|
],
|
|
99
105
|
library : "sap.m",
|
|
100
106
|
designtime: "sap/m/designtime/Link.designtime",
|
|
@@ -135,8 +141,9 @@ function(
|
|
|
135
141
|
width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null},
|
|
136
142
|
|
|
137
143
|
/**
|
|
138
|
-
* Defines the link target URI. Supports standard hyperlink behavior.
|
|
139
|
-
*
|
|
144
|
+
* Defines the link target URI. Supports standard hyperlink behavior.
|
|
145
|
+
* <b>Note:</b> Don't set <code>href</code> property if an action should be triggered by the link. Instead set <code>accessibleRole</code>
|
|
146
|
+
* property to <code>LinkAccessibleRole.Button</code> and register a <code>press</code> event handler.
|
|
140
147
|
*/
|
|
141
148
|
href : {type : "sap.ui.core.URI", group : "Data", defaultValue : null},
|
|
142
149
|
|
|
@@ -194,12 +201,38 @@ function(
|
|
|
194
201
|
*/
|
|
195
202
|
ariaHasPopup : {type : "sap.ui.core.aria.HasPopup", group : "Accessibility", defaultValue : AriaHasPopup.None},
|
|
196
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Describes the accessibility role of the link:<ul>
|
|
206
|
+
* <li><code>LinkAccessibleRole.Default</code> - a navagation is expected to the location given in <code>href</code> property</li>
|
|
207
|
+
* <li><code>LinkAccessibleRole.Button</code> - there will be <code>role</code> attribute with value "Button" rendered. In this scenario the <code>href</code>
|
|
208
|
+
* property value shouldn't be set as navigation isn't expected to occur.</li></ul>
|
|
209
|
+
*
|
|
210
|
+
* @since 1.104.0
|
|
211
|
+
*/
|
|
212
|
+
accessibleRole : {type : "sap.m.LinkAccessibleRole", group : "Accessibility", defaultValue : LinkAccessibleRole.Default},
|
|
213
|
+
|
|
197
214
|
/**
|
|
198
215
|
* Specifies if an empty indicator should be displayed when there is no text.
|
|
199
216
|
*
|
|
200
217
|
* @since 1.89
|
|
201
218
|
*/
|
|
202
|
-
emptyIndicatorMode: { type: "sap.m.EmptyIndicatorMode", group: "Appearance", defaultValue: EmptyIndicatorMode.Off }
|
|
219
|
+
emptyIndicatorMode: { type: "sap.m.EmptyIndicatorMode", group: "Appearance", defaultValue: EmptyIndicatorMode.Off },
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Indicates whether the access keys ref of the control should be highlighted.
|
|
223
|
+
* NOTE: this property is used only when access keys feature is turned on.
|
|
224
|
+
*
|
|
225
|
+
* @private
|
|
226
|
+
*/
|
|
227
|
+
highlightAccKeysRef: { type: "boolean", defaultValue: false, visibility: "hidden" },
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Indicates which keyboard key should be pressed to focus the access key ref
|
|
231
|
+
* NOTE: this property is used only when access keys feature is turned on.
|
|
232
|
+
*
|
|
233
|
+
* @private
|
|
234
|
+
*/
|
|
235
|
+
accesskey: { type: "string", defaultValue: "", visibility: "hidden" }
|
|
203
236
|
},
|
|
204
237
|
associations : {
|
|
205
238
|
|
|
@@ -245,6 +278,10 @@ function(
|
|
|
245
278
|
|
|
246
279
|
EnabledPropagator.call(Link.prototype); // inherit "disabled" state from parent controls
|
|
247
280
|
|
|
281
|
+
Link.prototype.init = function () {
|
|
282
|
+
AccessKeysEnablement.registerControl(this);
|
|
283
|
+
};
|
|
284
|
+
|
|
248
285
|
/**
|
|
249
286
|
* Required adaptations before rendering.
|
|
250
287
|
*
|
|
@@ -252,6 +289,39 @@ function(
|
|
|
252
289
|
*/
|
|
253
290
|
Link.prototype.onBeforeRendering = function() {};
|
|
254
291
|
|
|
292
|
+
Link.prototype.onAfterRendering = function() {
|
|
293
|
+
var oLinkElement = this.getDomRef(),
|
|
294
|
+
oTextBinding = this.getBinding("text");
|
|
295
|
+
|
|
296
|
+
if (!oLinkElement) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Update the default no-navigation href attribute value via JS,
|
|
301
|
+
// so we don't confuse the Chrome browser accessibility mappings,
|
|
302
|
+
// in case there is double rendering resulting from a "text" property binding.
|
|
303
|
+
// Remove the href if there's no text. Otherwise virtual cursor would stop on the empty link. BCP 2070055617
|
|
304
|
+
if (oTextBinding) {
|
|
305
|
+
if (!oTextBinding.bInitial && !oTextBinding.getValue()) {
|
|
306
|
+
this.getDomRef().removeAttribute("href");
|
|
307
|
+
}
|
|
308
|
+
} else if (!this.getText()) {
|
|
309
|
+
this.getDomRef().removeAttribute("href");
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
Link.prototype.getAccessKeysFocusTarget = function () {
|
|
314
|
+
return this.getFocusDomRef();
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
Link.prototype.onAccKeysHighlightStart = function () {
|
|
318
|
+
setRefLabelsHighlightAccKeysRef.call(this, true);
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
Link.prototype.onAccKeysHighlightEnd = function () {
|
|
322
|
+
setRefLabelsHighlightAccKeysRef.call(this, false);
|
|
323
|
+
};
|
|
324
|
+
|
|
255
325
|
/**
|
|
256
326
|
* Handle the key down event for SPACE
|
|
257
327
|
* SHIFT or ESCAPE on pressed SPACE cancels the action
|
|
@@ -405,7 +475,8 @@ function(
|
|
|
405
475
|
sEmphasizedInfo = this.getEmphasized() ? oResourceBundle.getText("LINK_EMPHASIZED") : "",
|
|
406
476
|
sSubtleInfo = this.getSubtle() ? oResourceBundle.getText("LINK_SUBTLE") : "",
|
|
407
477
|
sText = this.getText(),
|
|
408
|
-
sDescription = sText
|
|
478
|
+
sDescription = sText,
|
|
479
|
+
sAccessibleRole = this.getAccessibleRole();
|
|
409
480
|
|
|
410
481
|
if (sText) {
|
|
411
482
|
sEmphasizedInfo && (sDescription += " " + sEmphasizedInfo);
|
|
@@ -413,7 +484,7 @@ function(
|
|
|
413
484
|
}
|
|
414
485
|
|
|
415
486
|
return {
|
|
416
|
-
role: "link",
|
|
487
|
+
role: sAccessibleRole === LinkAccessibleRole.Default ? "link" : sAccessibleRole,
|
|
417
488
|
type: sText ? oResourceBundle.getText("ACC_CTR_TYPE_LINK") : undefined,
|
|
418
489
|
description: sDescription,
|
|
419
490
|
focusable: this.getEnabled(),
|
|
@@ -454,6 +525,20 @@ function(
|
|
|
454
525
|
return !bAlreadyHasSelfReference && (aAriaLabelledBy.length > 0 || bHasReferencingLabels || bAllowEnhancingByParent);
|
|
455
526
|
};
|
|
456
527
|
|
|
528
|
+
var setRefLabelsHighlightAccKeysRef = function (bHighlightAccKeysRef) {
|
|
529
|
+
var aLabels = this.getAriaLabelledBy();
|
|
530
|
+
|
|
531
|
+
if (aLabels.length) {
|
|
532
|
+
var oLabel = Core.byId(aLabels[0]);
|
|
533
|
+
|
|
534
|
+
oLabel.setProperty("highlightAccKeysRef", bHighlightAccKeysRef);
|
|
535
|
+
|
|
536
|
+
if (oLabel.getText && oLabel.getText()) {
|
|
537
|
+
this.setProperty("accesskey", oLabel.getText()[0].toLowerCase());
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
};
|
|
541
|
+
|
|
457
542
|
return Link;
|
|
458
543
|
|
|
459
544
|
});
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/core/Renderer",
|
|
9
9
|
"sap/ui/core/library",
|
|
10
|
+
'sap/ui/core/AccessKeysEnablement',
|
|
10
11
|
"sap/ui/util/defaultLinkTypes",
|
|
11
12
|
'./library',
|
|
12
13
|
'sap/ui/core/Core'
|
|
13
14
|
],
|
|
14
|
-
function(Renderer, coreLibrary, defaultLinkTypes, mobileLibrary, Core) {
|
|
15
|
+
function(Renderer, coreLibrary, AccessKeysEnablement, defaultLinkTypes, mobileLibrary, Core) {
|
|
15
16
|
"use strict";
|
|
16
17
|
|
|
17
18
|
// shortcut for sap.ui.core.TextDirection
|
|
@@ -20,6 +21,9 @@
|
|
|
20
21
|
// shortcut for sap.ui.core.aria.HasPopup
|
|
21
22
|
var AriaHasPopup = coreLibrary.aria.HasPopup;
|
|
22
23
|
|
|
24
|
+
// shortcut for sap.m.LinkAccessibleRole
|
|
25
|
+
var LinkAccessibleRole = mobileLibrary.LinkAccessibleRole;
|
|
26
|
+
|
|
23
27
|
/**
|
|
24
28
|
* Link renderer
|
|
25
29
|
* @namespace
|
|
@@ -46,15 +50,16 @@
|
|
|
46
50
|
sTextAlign = Renderer.getTextAlign(oControl.getTextAlign(), sTextDir),
|
|
47
51
|
bShouldHaveOwnLabelledBy = oControl._determineSelfReferencePresence(),
|
|
48
52
|
sHasPopupType = oControl.getAriaHasPopup(),
|
|
49
|
-
sHref = oControl.getHref(),
|
|
50
53
|
sRel = defaultLinkTypes(oControl.getRel(), oControl.getTarget()),
|
|
54
|
+
sHref = oControl.getHref(),
|
|
55
|
+
sAccessibleRole = oControl.getAccessibleRole(),
|
|
51
56
|
oAccAttributes = {
|
|
52
57
|
labelledby: bShouldHaveOwnLabelledBy ? {value: oControl.getId(), append: true } : undefined,
|
|
53
58
|
haspopup: (sHasPopupType === AriaHasPopup.None) ? null : sHasPopupType.toLowerCase()
|
|
54
59
|
},
|
|
55
|
-
bIsValid = sHref && oControl._isHrefValid(sHref),
|
|
56
60
|
bEnabled = oControl.getEnabled(),
|
|
57
|
-
sTypeSemanticInfo = ""
|
|
61
|
+
sTypeSemanticInfo = "",
|
|
62
|
+
sAcccessKey = oControl.getProperty("accesskey");
|
|
58
63
|
|
|
59
64
|
// Link is rendered as a "<a>" element
|
|
60
65
|
oRm.openStart("a", oControl);
|
|
@@ -70,6 +75,23 @@
|
|
|
70
75
|
sTypeSemanticInfo += " " + oControl._sAriaLinkEmphasizedId;
|
|
71
76
|
}
|
|
72
77
|
|
|
78
|
+
if (sAcccessKey) {
|
|
79
|
+
oRm.attr("data-ui5-accesskey", sAcccessKey);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
switch (sAccessibleRole) {
|
|
83
|
+
case LinkAccessibleRole.Button:
|
|
84
|
+
oAccAttributes.role = LinkAccessibleRole.Button;
|
|
85
|
+
break;
|
|
86
|
+
default:
|
|
87
|
+
// Set a valid non empty value for the href attribute representing that there is no navigation,
|
|
88
|
+
// so we don't confuse the screen readers.
|
|
89
|
+
/*eslint-disable no-script-url */
|
|
90
|
+
sHref = sHref && oControl._isHrefValid(sHref) && oControl.getEnabled() ? sHref : "javascript:void(0)";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
sHref && oRm.attr("href", sHref);
|
|
94
|
+
|
|
73
95
|
oAccAttributes.describedby = sTypeSemanticInfo ? {value: sTypeSemanticInfo.trim(), append: true} : undefined;
|
|
74
96
|
|
|
75
97
|
if (!bEnabled) {
|
|
@@ -86,14 +108,6 @@
|
|
|
86
108
|
oRm.attr("title", oControl.getTooltip_AsString());
|
|
87
109
|
}
|
|
88
110
|
|
|
89
|
-
/* set href only if link is enabled - BCP incident 1570020625 */
|
|
90
|
-
if (bIsValid && bEnabled) {
|
|
91
|
-
oRm.attr("href", sHref);
|
|
92
|
-
} else if (oControl.getText()) {
|
|
93
|
-
// Add href only if there's text. Otherwise virtual cursor would stop on the empty link. BCP 2070055617
|
|
94
|
-
oRm.attr("href", "");
|
|
95
|
-
}
|
|
96
|
-
|
|
97
111
|
if (oControl.getTarget()) {
|
|
98
112
|
oRm.attr("target", oControl.getTarget());
|
|
99
113
|
}
|
package/src/sap/m/List.js
CHANGED
|
@@ -30,7 +30,7 @@ sap.ui.define(["./library", "./ListBase", "./ListRenderer"],
|
|
|
30
30
|
* @extends sap.m.ListBase
|
|
31
31
|
*
|
|
32
32
|
* @author SAP SE
|
|
33
|
-
* @version 1.
|
|
33
|
+
* @version 1.105.0
|
|
34
34
|
*
|
|
35
35
|
* @constructor
|
|
36
36
|
* @public
|
|
@@ -51,6 +51,43 @@ sap.ui.define(["./library", "./ListBase", "./ListRenderer"],
|
|
|
51
51
|
}
|
|
52
52
|
}});
|
|
53
53
|
|
|
54
|
+
List.prototype.getAriaRole = function() {
|
|
55
|
+
return this._sAriaRole || "list";
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Applies the aria <code>role</code> attribute to the control.
|
|
60
|
+
*
|
|
61
|
+
* Supported values are:
|
|
62
|
+
* <ul>
|
|
63
|
+
* <li><code>list</code>: This is the default since version 1.105. The rendered items will have the <code>role="listitem"</code>.</li>
|
|
64
|
+
* <li><code>listbox</code>: Legacy support. The rendererd items will have the <code>role="option"</code>.</li>
|
|
65
|
+
* </ul>
|
|
66
|
+
* <b>Note:</b> This method must be called before the control renders.
|
|
67
|
+
* @param {string} sRole role attribute for the control
|
|
68
|
+
* @protected
|
|
69
|
+
* @ui5-restricted
|
|
70
|
+
* @since 1.105
|
|
71
|
+
*/
|
|
72
|
+
List.prototype.applyAriaRole = function(sRole) {
|
|
73
|
+
this._sAriaRole = sRole;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
List.prototype.enhanceAccessibilityState = function(oElement, mAriaProps) {
|
|
77
|
+
ListBase.prototype.enhanceAccessibilityState.apply(this, arguments);
|
|
78
|
+
|
|
79
|
+
// update listitem Accessibility state according to the list's role attribute
|
|
80
|
+
if (this.getAriaRole() === "listbox" && oElement.isA("sap.m.ListItemBase")) {
|
|
81
|
+
mAriaProps.roledescription = null;
|
|
82
|
+
mAriaProps.role = "option";
|
|
83
|
+
mAriaProps.owns = null;
|
|
84
|
+
|
|
85
|
+
if (oElement.isSelectable()) {
|
|
86
|
+
mAriaProps.selected = oElement.getSelected();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
54
91
|
return List;
|
|
55
92
|
|
|
56
93
|
});
|
package/src/sap/m/ListBase.js
CHANGED
|
@@ -22,6 +22,7 @@ sap.ui.define([
|
|
|
22
22
|
"sap/base/strings/capitalize",
|
|
23
23
|
"sap/ui/thirdparty/jquery",
|
|
24
24
|
"sap/base/Log",
|
|
25
|
+
"sap/ui/core/InvisibleMessage",
|
|
25
26
|
"sap/ui/dom/jquery/control", // jQuery Plugin "control"
|
|
26
27
|
"sap/ui/dom/jquery/Selectors", // jQuery custom selectors ":sapTabbable"
|
|
27
28
|
"sap/ui/dom/jquery/Aria" // jQuery Plugin "addAriaLabelledBy", "removeAriaLabelledBy"
|
|
@@ -42,7 +43,8 @@ function(
|
|
|
42
43
|
ListBaseRenderer,
|
|
43
44
|
capitalize,
|
|
44
45
|
jQuery,
|
|
45
|
-
Log
|
|
46
|
+
Log,
|
|
47
|
+
InvisibleMessage
|
|
46
48
|
) {
|
|
47
49
|
"use strict";
|
|
48
50
|
|
|
@@ -90,7 +92,7 @@ function(
|
|
|
90
92
|
* @extends sap.ui.core.Control
|
|
91
93
|
*
|
|
92
94
|
* @author SAP SE
|
|
93
|
-
* @version 1.
|
|
95
|
+
* @version 1.105.0
|
|
94
96
|
*
|
|
95
97
|
* @constructor
|
|
96
98
|
* @public
|
|
@@ -590,7 +592,6 @@ function(
|
|
|
590
592
|
};
|
|
591
593
|
|
|
592
594
|
ListBase.prototype.exit = function () {
|
|
593
|
-
this._oSelectedItem = null;
|
|
594
595
|
this._aNavSections = [];
|
|
595
596
|
this._aSelectedPaths = [];
|
|
596
597
|
this._destroyGrowingDelegate();
|
|
@@ -624,6 +625,9 @@ function(
|
|
|
624
625
|
// Special handling for "AutoExpandSelect" of the V4 ODataModel.
|
|
625
626
|
if (oEventInfo && oEventInfo.detailedReason === "AddVirtualContext") {
|
|
626
627
|
createVirtualItem(this);
|
|
628
|
+
if (this._oGrowingDelegate) {
|
|
629
|
+
this._oGrowingDelegate.reset(true);
|
|
630
|
+
}
|
|
627
631
|
return;
|
|
628
632
|
} else if (oEventInfo && oEventInfo.detailedReason === "RemoveVirtualContext") {
|
|
629
633
|
destroyVirtualItem(this);
|
|
@@ -759,9 +763,6 @@ function(
|
|
|
759
763
|
return this;
|
|
760
764
|
}
|
|
761
765
|
|
|
762
|
-
// clean up the selection
|
|
763
|
-
this._oSelectedItem = null;
|
|
764
|
-
|
|
765
766
|
// suppress the synchronous DOM removal of the aggregation destroy
|
|
766
767
|
this.destroyAggregation("items", "KeepDom");
|
|
767
768
|
|
|
@@ -777,20 +778,6 @@ function(
|
|
|
777
778
|
return this;
|
|
778
779
|
};
|
|
779
780
|
|
|
780
|
-
|
|
781
|
-
ListBase.prototype.removeAllItems = function(sAggregationName) {
|
|
782
|
-
this._oSelectedItem = null;
|
|
783
|
-
return this.removeAllAggregation("items");
|
|
784
|
-
};
|
|
785
|
-
|
|
786
|
-
ListBase.prototype.removeItem = function(vItem) {
|
|
787
|
-
var oItem = this.removeAggregation("items", vItem);
|
|
788
|
-
if (oItem && oItem === this._oSelectedItem) {
|
|
789
|
-
this._oSelectedItem = null;
|
|
790
|
-
}
|
|
791
|
-
return oItem;
|
|
792
|
-
};
|
|
793
|
-
|
|
794
781
|
ListBase.prototype.getItems = function(bReadOnly) {
|
|
795
782
|
if (bReadOnly) {
|
|
796
783
|
return this.mAggregations["items"] || [];
|
|
@@ -1085,7 +1072,7 @@ function(
|
|
|
1085
1072
|
* Returns growing information as object with "actual" and "total" keys.
|
|
1086
1073
|
* Note: This function returns "null" if "growing" feature is disabled.
|
|
1087
1074
|
*
|
|
1088
|
-
* @
|
|
1075
|
+
* @returns {{actual: int, total: int} | null}
|
|
1089
1076
|
* @public
|
|
1090
1077
|
* @since 1.16
|
|
1091
1078
|
* @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
|
|
@@ -1449,7 +1436,22 @@ function(
|
|
|
1449
1436
|
}
|
|
1450
1437
|
};
|
|
1451
1438
|
|
|
1439
|
+
ListBase.prototype.onItemRemoved = function(oItem) {
|
|
1440
|
+
oItem._bGroupHeader = false;
|
|
1441
|
+
if (this._oLastGroupHeader == oItem) {
|
|
1442
|
+
this._oLastGroupHeader = null;
|
|
1443
|
+
}
|
|
1444
|
+
if (this._oSelectedItem == oItem) {
|
|
1445
|
+
this._oSelectedItem = null;
|
|
1446
|
+
}
|
|
1447
|
+
};
|
|
1448
|
+
|
|
1452
1449
|
ListBase.prototype.onItemInserted = function(oItem, bSelectedDelayed) {
|
|
1450
|
+
// trigger is also an item of the ListBase which should not me mapped to the groupHeaders
|
|
1451
|
+
if (this._oLastGroupHeader && !oItem.isGroupHeader()) {
|
|
1452
|
+
this._oLastGroupHeader.setGroupedItem(oItem);
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1453
1455
|
if (bSelectedDelayed) {
|
|
1454
1456
|
// item was already selected before inserted to the list
|
|
1455
1457
|
this.onItemSelectedChange(oItem, true);
|
|
@@ -1523,10 +1525,15 @@ function(
|
|
|
1523
1525
|
return;
|
|
1524
1526
|
}
|
|
1525
1527
|
|
|
1526
|
-
if (sMode === ListMode.MultiSelect) {
|
|
1527
|
-
this._fireSelectionChangeEvent([oListItem]);
|
|
1528
|
-
} else if (this._bSelectionMode && bSelected) {
|
|
1528
|
+
if (sMode === ListMode.MultiSelect || (this._bSelectionMode && bSelected)) {
|
|
1529
1529
|
this._fireSelectionChangeEvent([oListItem]);
|
|
1530
|
+
|
|
1531
|
+
// announce the selection state changes
|
|
1532
|
+
// but only announce if the document.activeElement is the listItem control, else selection control should announce the selection change
|
|
1533
|
+
if (this.getAriaRole() === "list" && document.activeElement === oListItem.getDomRef()) {
|
|
1534
|
+
var oResourceBundle = Core.getLibraryResourceBundle("sap.m");
|
|
1535
|
+
InvisibleMessage.getInstance().announce(bSelected ? oResourceBundle.getText("LIST_ITEM_SELECTED") : oResourceBundle.getText("LIST_ITEM_NOT_SELECTED"), "Assertive");
|
|
1536
|
+
}
|
|
1530
1537
|
}
|
|
1531
1538
|
};
|
|
1532
1539
|
|
|
@@ -1928,17 +1935,31 @@ function(
|
|
|
1928
1935
|
|
|
1929
1936
|
ListBase.prototype.addItemGroup = function(oGroup, oHeader, bSuppressInvalidate) {
|
|
1930
1937
|
if (!oHeader) {
|
|
1931
|
-
oHeader =
|
|
1932
|
-
// setter is used to avoid complex binding parser checks which happens when setting values in constructor (ManagedObject)
|
|
1933
|
-
// i.e., to ignore binding strings "{" "[" from the value being set
|
|
1934
|
-
oHeader.setTitle(oGroup.text || oGroup.key);
|
|
1938
|
+
oHeader = this.getGroupHeaderTemplate(oGroup);
|
|
1935
1939
|
}
|
|
1936
1940
|
|
|
1937
1941
|
oHeader._bGroupHeader = true;
|
|
1938
1942
|
this.addAggregation("items", oHeader, bSuppressInvalidate);
|
|
1943
|
+
this.setLastGroupHeader(oHeader);
|
|
1944
|
+
return oHeader;
|
|
1945
|
+
};
|
|
1946
|
+
|
|
1947
|
+
ListBase.prototype.getGroupHeaderTemplate = function(oGroup) {
|
|
1948
|
+
var oHeader = new GroupHeaderListItem();
|
|
1949
|
+
// setter is used to avoid complex binding parser checks which happens when setting values in constructor (ManagedObject)
|
|
1950
|
+
// i.e., to ignore binding strings "{" "[" from the value being set
|
|
1951
|
+
oHeader.setTitle(oGroup.text || oGroup.key);
|
|
1939
1952
|
return oHeader;
|
|
1940
1953
|
};
|
|
1941
1954
|
|
|
1955
|
+
ListBase.prototype.setLastGroupHeader = function(oGroupHeader) {
|
|
1956
|
+
this._oLastGroupHeader = oGroupHeader;
|
|
1957
|
+
};
|
|
1958
|
+
|
|
1959
|
+
ListBase.prototype.getLastGroupHeader = function() {
|
|
1960
|
+
return this._oLastGroupHeader;
|
|
1961
|
+
};
|
|
1962
|
+
|
|
1942
1963
|
ListBase.prototype.removeGroupHeaders = function(bSuppressInvalidate) {
|
|
1943
1964
|
this.getItems(true).forEach(function(oItem) {
|
|
1944
1965
|
if (oItem.isGroupHeader()) {
|
|
@@ -1990,15 +2011,25 @@ function(
|
|
|
1990
2011
|
ListBase.prototype.getAccessbilityPosition = function(oItem) {
|
|
1991
2012
|
var iSetSize = 0,
|
|
1992
2013
|
aItems = this.getVisibleItems(),
|
|
1993
|
-
|
|
2014
|
+
sAriaRole = this.getAriaRole(),
|
|
2015
|
+
// exclude group headers from item count for role="list" || role="listbox" only
|
|
2016
|
+
bExcludeGroupHeaderFromCount = sAriaRole === "list" || sAriaRole === "listbox";
|
|
2017
|
+
|
|
2018
|
+
if (bExcludeGroupHeaderFromCount) {
|
|
2019
|
+
aItems = aItems.filter(function(oItem) {
|
|
2020
|
+
return !oItem.isGroupHeader();
|
|
2021
|
+
});
|
|
2022
|
+
}
|
|
2023
|
+
|
|
2024
|
+
var iPosInset = aItems.indexOf(oItem) + 1,
|
|
1994
2025
|
oBinding = this.getBinding("items");
|
|
1995
2026
|
|
|
1996
2027
|
// use binding length if list is in scroll to load growing mode
|
|
1997
2028
|
if (this.getGrowing() && this.getGrowingScrollToLoad() && oBinding && oBinding.isLengthFinal()) {
|
|
1998
2029
|
iSetSize = oBinding.getLength();
|
|
1999
|
-
if (oBinding.isGrouped()) {
|
|
2030
|
+
if (oBinding.isGrouped() && !bExcludeGroupHeaderFromCount) {
|
|
2000
2031
|
iSetSize += aItems.filter(function(oItem) {
|
|
2001
|
-
return oItem.isGroupHeader()
|
|
2032
|
+
return oItem.isGroupHeader();
|
|
2002
2033
|
}).length;
|
|
2003
2034
|
}
|
|
2004
2035
|
} else {
|
|
@@ -2021,25 +2052,26 @@ function(
|
|
|
2021
2052
|
return;
|
|
2022
2053
|
}
|
|
2023
2054
|
|
|
2024
|
-
var oItemDomRef = oItem.getDomRef()
|
|
2025
|
-
mPosition = this.getAccessbilityPosition(oItem);
|
|
2055
|
+
var oItemDomRef = oItem.getDomRef();
|
|
2026
2056
|
|
|
2027
2057
|
if (!oItem.getContentAnnouncement) {
|
|
2028
2058
|
// let the screen reader announce the whole content
|
|
2029
2059
|
this.getNavigationRoot().setAttribute("aria-activedescendant", oItemDomRef.id);
|
|
2030
|
-
oItemDomRef.setAttribute("aria-posinset", mPosition.posInset);
|
|
2031
|
-
oItemDomRef.setAttribute("aria-setsize", mPosition.setSize);
|
|
2032
2060
|
} else {
|
|
2033
2061
|
// prepare the announcement for the screen reader
|
|
2034
2062
|
var oAccInfo = oItem.getAccessibilityInfo(),
|
|
2035
2063
|
oBundle = Core.getLibraryResourceBundle("sap.m"),
|
|
2036
|
-
sDescription =
|
|
2064
|
+
sDescription = "";
|
|
2065
|
+
|
|
2066
|
+
// when items have the role="listitem", aria-roledescription attribute containing the "type" info is already added to DOM,
|
|
2067
|
+
// hence there is no need to add this information again to the custom announcement
|
|
2068
|
+
if (this.getAriaRole() !== "list") {
|
|
2069
|
+
sDescription += oAccInfo.type + " . ";
|
|
2070
|
+
}
|
|
2037
2071
|
|
|
2038
|
-
if (
|
|
2072
|
+
if (this.isA("sap.m.Table")) {
|
|
2073
|
+
var mPosition = this.getAccessbilityPosition(oItem);
|
|
2039
2074
|
sDescription += oBundle.getText("LIST_ITEM_POSITION", [mPosition.posInset, mPosition.setSize]) + " . ";
|
|
2040
|
-
} else {
|
|
2041
|
-
oItemDomRef.setAttribute("aria-posinset", mPosition.posInset);
|
|
2042
|
-
oItemDomRef.setAttribute("aria-setsize", mPosition.setSize);
|
|
2043
2075
|
}
|
|
2044
2076
|
|
|
2045
2077
|
sDescription += oAccInfo.description;
|
|
@@ -2860,6 +2892,38 @@ function(
|
|
|
2860
2892
|
}
|
|
2861
2893
|
};
|
|
2862
2894
|
|
|
2895
|
+
/**
|
|
2896
|
+
* Return the <code>role</code> attribute of the control.
|
|
2897
|
+
* @returns {string} the <code>role</code> attribute of the control
|
|
2898
|
+
* @protected
|
|
2899
|
+
* @ui5-restricted
|
|
2900
|
+
* @since 1.105
|
|
2901
|
+
*/
|
|
2902
|
+
ListBase.prototype.getAriaRole = function() {
|
|
2903
|
+
return "list";
|
|
2904
|
+
};
|
|
2905
|
+
|
|
2906
|
+
/**
|
|
2907
|
+
* This method is a hook for the RenderManager that gets called
|
|
2908
|
+
* during the rendering of child Controls. It allows to add,
|
|
2909
|
+
* remove and update existing accessibility attributes (ARIA) of
|
|
2910
|
+
* those controls.
|
|
2911
|
+
*
|
|
2912
|
+
* @param {sap.ui.core.Control} oElement - The Control that gets rendered by the RenderManager
|
|
2913
|
+
* @param {object} mAriaProps - The mapping of "aria-" prefixed attributes
|
|
2914
|
+
* @protected
|
|
2915
|
+
*/
|
|
2916
|
+
ListBase.prototype.enhanceAccessibilityState = function(oElement, mAriaProps) {
|
|
2917
|
+
if (!oElement.isA("sap.m.ListItemBase") || oElement.isGroupHeader()) {
|
|
2918
|
+
return;
|
|
2919
|
+
}
|
|
2920
|
+
|
|
2921
|
+
// add aria-posinset & aria-setsize attributes to listitem DOM (not for group headers)
|
|
2922
|
+
var mPosition = this.getAccessbilityPosition(oElement);
|
|
2923
|
+
mAriaProps.posinset = mPosition.posInset;
|
|
2924
|
+
mAriaProps.setsize = mPosition.setSize;
|
|
2925
|
+
};
|
|
2926
|
+
|
|
2863
2927
|
return ListBase;
|
|
2864
2928
|
|
|
2865
2929
|
});
|
|
@@ -236,22 +236,13 @@ sap.ui.define(["sap/m/library", "sap/ui/Device", "sap/ui/core/InvisibleText", ".
|
|
|
236
236
|
rm.accessibilityState(oControl, this.getAccessibilityState(oControl));
|
|
237
237
|
};
|
|
238
238
|
|
|
239
|
-
/**
|
|
240
|
-
* Returns aria accessibility role
|
|
241
|
-
*
|
|
242
|
-
* @param {sap.m.ListBase} oControl an object representation of the control
|
|
243
|
-
* @returns {string}
|
|
244
|
-
*/
|
|
245
|
-
ListBaseRenderer.getAriaRole = function(oControl) {
|
|
246
|
-
return "listbox";
|
|
247
|
-
};
|
|
248
|
-
|
|
249
239
|
/**
|
|
250
240
|
* Returns aria accessibility role for the no data entry.
|
|
241
|
+
* @param {sap.m.ListBase} oControl the control instance
|
|
251
242
|
*
|
|
252
|
-
* @returns {string}
|
|
243
|
+
* @returns {string|null} the no data role attribute
|
|
253
244
|
*/
|
|
254
|
-
ListBaseRenderer.getNoDataAriaRole = function() {
|
|
245
|
+
ListBaseRenderer.getNoDataAriaRole = function(oControl) {
|
|
255
246
|
return null;
|
|
256
247
|
};
|
|
257
248
|
|
|
@@ -292,12 +283,13 @@ sap.ui.define(["sap/m/library", "sap/ui/Device", "sap/ui/core/InvisibleText", ".
|
|
|
292
283
|
* Returns the accessibility state of the control
|
|
293
284
|
*
|
|
294
285
|
* @param {sap.m.ListBase} oControl an object representation of the control
|
|
286
|
+
* @returns {object} the accessibility state object
|
|
295
287
|
*/
|
|
296
288
|
ListBaseRenderer.getAccessibilityState = function(oControl) {
|
|
297
|
-
var sRole =
|
|
289
|
+
var sRole = oControl.getAriaRole();
|
|
298
290
|
return {
|
|
299
291
|
role : sRole,
|
|
300
|
-
multiselectable : (sRole && oControl._bSelectionMode) ? oControl.getMode() == "MultiSelect" : undefined,
|
|
292
|
+
multiselectable : (sRole === "listbox" && oControl._bSelectionMode) ? oControl.getMode() == "MultiSelect" : undefined,
|
|
301
293
|
labelledby : {
|
|
302
294
|
value : this.getAriaLabelledBy(oControl),
|
|
303
295
|
append : true
|
|
@@ -328,7 +320,7 @@ sap.ui.define(["sap/m/library", "sap/ui/Device", "sap/ui/core/InvisibleText", ".
|
|
|
328
320
|
ListBaseRenderer.renderNoData = function(rm, oControl) {
|
|
329
321
|
rm.openStart("li", oControl.getId("nodata"));
|
|
330
322
|
rm.attr("tabindex", oControl.getKeyboardMode() == ListKeyboardMode.Navigation ? -1 : 0);
|
|
331
|
-
var sAriaRole = this.getNoDataAriaRole();
|
|
323
|
+
var sAriaRole = this.getNoDataAriaRole(oControl);
|
|
332
324
|
if (sAriaRole) {
|
|
333
325
|
rm.attr("role", sAriaRole);
|
|
334
326
|
}
|