@openui5/sap.m 1.103.1 → 1.106.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.
Files changed (494) hide show
  1. package/.eslintrc.json +2 -3
  2. package/.reuse/dep5 +35 -15
  3. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  4. package/THIRDPARTY.txt +64 -21
  5. package/package.json +4 -4
  6. package/src/sap/m/.library +17 -1
  7. package/src/sap/m/AccButton.js +1 -1
  8. package/src/sap/m/ActionListItem.js +1 -1
  9. package/src/sap/m/ActionSelect.js +1 -1
  10. package/src/sap/m/ActionSheet.js +1 -1
  11. package/src/sap/m/App.js +2 -3
  12. package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
  13. package/src/sap/m/Avatar.js +2 -2
  14. package/src/sap/m/BadgeEnabler.js +1 -2
  15. package/src/sap/m/Bar.js +11 -10
  16. package/src/sap/m/Breadcrumbs.js +2 -2
  17. package/src/sap/m/BusyDialog.js +1 -1
  18. package/src/sap/m/BusyIndicator.js +1 -1
  19. package/src/sap/m/Button.js +49 -10
  20. package/src/sap/m/ButtonRenderer.js +10 -2
  21. package/src/sap/m/Carousel.js +3 -4
  22. package/src/sap/m/CarouselLayout.js +1 -1
  23. package/src/sap/m/CarouselRenderer.js +3 -3
  24. package/src/sap/m/CheckBox.js +46 -6
  25. package/src/sap/m/CheckBoxRenderer.js +1 -0
  26. package/src/sap/m/ColorPalette.js +1 -1
  27. package/src/sap/m/ColorPalettePopover.js +1 -1
  28. package/src/sap/m/Column.js +5 -5
  29. package/src/sap/m/ColumnHeaderPopover.js +5 -7
  30. package/src/sap/m/ColumnListItem.js +1 -4
  31. package/src/sap/m/ColumnListItemRenderer.js +1 -2
  32. package/src/sap/m/ColumnPopoverActionItem.js +3 -3
  33. package/src/sap/m/ColumnPopoverCustomItem.js +3 -3
  34. package/src/sap/m/ColumnPopoverItem.js +3 -3
  35. package/src/sap/m/ColumnPopoverSelectListItem.js +3 -5
  36. package/src/sap/m/ColumnPopoverSortItem.js +3 -3
  37. package/src/sap/m/ComboBox.js +6 -5
  38. package/src/sap/m/ComboBoxBase.js +3 -7
  39. package/src/sap/m/ComboBoxBaseRenderer.js +2 -2
  40. package/src/sap/m/ComboBoxTextField.js +1 -7
  41. package/src/sap/m/ComboBoxTextFieldRenderer.js +19 -4
  42. package/src/sap/m/CustomDynamicDateOption.js +1 -1
  43. package/src/sap/m/CustomListItem.js +1 -1
  44. package/src/sap/m/CustomTile.js +1 -1
  45. package/src/sap/m/CustomTreeItem.js +3 -3
  46. package/src/sap/m/CustomTreeItemRenderer.js +2 -2
  47. package/src/sap/m/DatePicker.js +16 -26
  48. package/src/sap/m/DateRangeSelection.js +45 -38
  49. package/src/sap/m/DateTimeField.js +87 -20
  50. package/src/sap/m/DateTimeInput.js +1 -1
  51. package/src/sap/m/DateTimePicker.js +58 -32
  52. package/src/sap/m/DateTimePickerRenderer.js +1 -1
  53. package/src/sap/m/Dialog.js +44 -2
  54. package/src/sap/m/DisplayListItem.js +1 -1
  55. package/src/sap/m/DraftIndicator.js +1 -1
  56. package/src/sap/m/DynamicDate.js +1 -1
  57. package/src/sap/m/DynamicDateFormat.js +2 -5
  58. package/src/sap/m/DynamicDateOption.js +43 -16
  59. package/src/sap/m/DynamicDateRange.js +49 -7
  60. package/src/sap/m/DynamicDateRangeRenderer.js +5 -2
  61. package/src/sap/m/DynamicDateUtil.js +23 -2
  62. package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
  63. package/src/sap/m/ExpandableText.js +1 -1
  64. package/src/sap/m/FacetFilter.js +2 -2
  65. package/src/sap/m/FacetFilterItem.js +1 -1
  66. package/src/sap/m/FacetFilterList.js +4 -4
  67. package/src/sap/m/FeedContent.js +1 -1
  68. package/src/sap/m/FeedInput.js +1 -1
  69. package/src/sap/m/FeedListItem.js +1 -1
  70. package/src/sap/m/FeedListItemAction.js +1 -1
  71. package/src/sap/m/Fiori20Adapter.js +2 -2
  72. package/src/sap/m/FlexBox.js +1 -1
  73. package/src/sap/m/FlexItemData.js +1 -1
  74. package/src/sap/m/FormattedText.js +1 -1
  75. package/src/sap/m/GenericTag.js +1 -1
  76. package/src/sap/m/GenericTile.js +116 -23
  77. package/src/sap/m/GenericTileLineModeRenderer.js +4 -4
  78. package/src/sap/m/GenericTileRenderer.js +23 -10
  79. package/src/sap/m/GroupHeaderListItem.js +1 -1
  80. package/src/sap/m/GrowingEnablement.js +60 -36
  81. package/src/sap/m/GrowingList.js +1 -1
  82. package/src/sap/m/HBox.js +1 -1
  83. package/src/sap/m/HeaderContainer.js +34 -32
  84. package/src/sap/m/HeaderContainerItemNavigator.js +3 -6
  85. package/src/sap/m/IconTabBar.js +54 -22
  86. package/src/sap/m/IconTabBarSelectList.js +1 -1
  87. package/src/sap/m/IconTabFilter.js +1 -1
  88. package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
  89. package/src/sap/m/IconTabHeader.js +6 -19
  90. package/src/sap/m/IconTabSeparator.js +1 -1
  91. package/src/sap/m/IllustratedMessage.js +98 -25
  92. package/src/sap/m/IllustratedMessageRenderer.js +10 -6
  93. package/src/sap/m/Illustration.js +8 -1
  94. package/src/sap/m/IllustrationPool.js +1 -0
  95. package/src/sap/m/IllustrationRenderer.js +2 -1
  96. package/src/sap/m/Image.js +73 -3
  97. package/src/sap/m/ImageContent.js +1 -1
  98. package/src/sap/m/ImageRenderer.js +66 -2
  99. package/src/sap/m/Input.js +62 -7
  100. package/src/sap/m/InputBase.js +1 -1
  101. package/src/sap/m/InputBaseRenderer.js +2 -2
  102. package/src/sap/m/InputListItem.js +1 -1
  103. package/src/sap/m/InputRenderer.js +4 -0
  104. package/src/sap/m/InstanceManager.js +6 -6
  105. package/src/sap/m/Label.js +34 -4
  106. package/src/sap/m/LabelRenderer.js +7 -2
  107. package/src/sap/m/LightBox.js +2 -2
  108. package/src/sap/m/LightBoxItem.js +1 -1
  109. package/src/sap/m/Link.js +74 -10
  110. package/src/sap/m/LinkRenderer.js +26 -12
  111. package/src/sap/m/List.js +38 -1
  112. package/src/sap/m/ListBase.js +109 -44
  113. package/src/sap/m/ListBaseRenderer.js +7 -15
  114. package/src/sap/m/ListItemBase.js +40 -11
  115. package/src/sap/m/ListItemBaseRenderer.js +17 -6
  116. package/src/sap/m/ListRenderer.js +2 -2
  117. package/src/sap/m/MaskEnabler.js +52 -2
  118. package/src/sap/m/MaskInput.js +23 -1
  119. package/src/sap/m/MaskInputRule.js +1 -1
  120. package/src/sap/m/Menu.js +1 -1
  121. package/src/sap/m/MenuButton.js +1 -1
  122. package/src/sap/m/MenuItem.js +1 -1
  123. package/src/sap/m/MenuListItem.js +1 -1
  124. package/src/sap/m/MessageBox.js +1 -1
  125. package/src/sap/m/MessageItem.js +3 -4
  126. package/src/sap/m/MessageListItem.js +10 -6
  127. package/src/sap/m/MessagePage.js +1 -1
  128. package/src/sap/m/MessagePopover.js +4 -1
  129. package/src/sap/m/MessagePopoverItem.js +1 -1
  130. package/src/sap/m/MessageStrip.js +1 -1
  131. package/src/sap/m/MessageToast.js +1 -1
  132. package/src/sap/m/MessageView.js +1 -1
  133. package/src/sap/m/MultiComboBox.js +5 -16
  134. package/src/sap/m/MultiEditField.js +1 -1
  135. package/src/sap/m/MultiInput.js +1 -15
  136. package/src/sap/m/NavContainer.js +21 -19
  137. package/src/sap/m/NewsContent.js +2 -3
  138. package/src/sap/m/NotificationList.js +1 -1
  139. package/src/sap/m/NotificationListBase.js +1 -1
  140. package/src/sap/m/NotificationListGroup.js +3 -7
  141. package/src/sap/m/NotificationListGroupRenderer.js +1 -1
  142. package/src/sap/m/NotificationListItem.js +1 -1
  143. package/src/sap/m/NumericContent.js +1 -1
  144. package/src/sap/m/NumericInput.js +1 -1
  145. package/src/sap/m/ObjectAttribute.js +1 -1
  146. package/src/sap/m/ObjectHeader.js +3 -3
  147. package/src/sap/m/ObjectIdentifier.js +8 -5
  148. package/src/sap/m/ObjectListItem.js +7 -1
  149. package/src/sap/m/ObjectMarker.js +1 -1
  150. package/src/sap/m/ObjectNumber.js +2 -3
  151. package/src/sap/m/ObjectNumberRenderer.js +10 -3
  152. package/src/sap/m/ObjectStatus.js +2 -3
  153. package/src/sap/m/ObjectStatusRenderer.js +2 -2
  154. package/src/sap/m/OverflowToolbar.js +3 -8
  155. package/src/sap/m/OverflowToolbarAssociativePopover.js +1 -1
  156. package/src/sap/m/OverflowToolbarAssociativePopoverControls.js +3 -8
  157. package/src/sap/m/OverflowToolbarAssociativePopoverRenderer.js +2 -2
  158. package/src/sap/m/OverflowToolbarButton.js +2 -2
  159. package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
  160. package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
  161. package/src/sap/m/P13nAnyFilterItem.js +3 -3
  162. package/src/sap/m/P13nColumnsItem.js +3 -3
  163. package/src/sap/m/P13nColumnsPanel.js +3 -3
  164. package/src/sap/m/P13nConditionPanel.js +10 -3
  165. package/src/sap/m/P13nDialog.js +3 -3
  166. package/src/sap/m/P13nDimMeasureItem.js +3 -3
  167. package/src/sap/m/P13nDimMeasurePanel.js +3 -3
  168. package/src/sap/m/P13nFilterItem.js +3 -3
  169. package/src/sap/m/P13nFilterPanel.js +3 -3
  170. package/src/sap/m/P13nGroupItem.js +3 -3
  171. package/src/sap/m/P13nGroupPanel.js +3 -3
  172. package/src/sap/m/P13nItem.js +3 -3
  173. package/src/sap/m/P13nOperationsHelper.js +2 -2
  174. package/src/sap/m/P13nPanel.js +3 -3
  175. package/src/sap/m/P13nSelectionItem.js +3 -3
  176. package/src/sap/m/P13nSelectionPanel.js +3 -3
  177. package/src/sap/m/P13nSortItem.js +3 -3
  178. package/src/sap/m/P13nSortPanel.js +3 -3
  179. package/src/sap/m/PDFViewer.js +2 -2
  180. package/src/sap/m/PDFViewerRenderer.js +1 -0
  181. package/src/sap/m/Page.js +1 -3
  182. package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
  183. package/src/sap/m/PagingButton.js +1 -1
  184. package/src/sap/m/Panel.js +1 -1
  185. package/src/sap/m/PlanningCalendar.js +4 -16
  186. package/src/sap/m/PlanningCalendarHeader.js +1 -5
  187. package/src/sap/m/PlanningCalendarLegend.js +1 -1
  188. package/src/sap/m/PlanningCalendarRow.js +1 -1
  189. package/src/sap/m/PlanningCalendarView.js +1 -1
  190. package/src/sap/m/Popover.js +11 -4
  191. package/src/sap/m/ProgressIndicator.js +1 -1
  192. package/src/sap/m/ProgressIndicatorRenderer.js +6 -3
  193. package/src/sap/m/PullToRefresh.js +1 -1
  194. package/src/sap/m/QuickView.js +3 -3
  195. package/src/sap/m/QuickViewBase.js +3 -3
  196. package/src/sap/m/QuickViewCard.js +3 -3
  197. package/src/sap/m/QuickViewGroup.js +1 -1
  198. package/src/sap/m/QuickViewGroupElement.js +3 -3
  199. package/src/sap/m/QuickViewPage.js +3 -3
  200. package/src/sap/m/RadioButton.js +47 -20
  201. package/src/sap/m/RadioButtonGroup.js +29 -26
  202. package/src/sap/m/RangeSlider.js +1 -3
  203. package/src/sap/m/RatingIndicator.js +8 -1
  204. package/src/sap/m/RatingIndicatorRenderer.js +13 -4
  205. package/src/sap/m/ResponsivePopover.js +3 -3
  206. package/src/sap/m/ResponsiveScale.js +1 -1
  207. package/src/sap/m/ScrollBar.js +1 -1
  208. package/src/sap/m/ScrollContainer.js +1 -1
  209. package/src/sap/m/SearchField.js +1 -1
  210. package/src/sap/m/SearchFieldRenderer.js +1 -0
  211. package/src/sap/m/SegmentedButton.js +1 -1
  212. package/src/sap/m/SegmentedButtonItem.js +1 -1
  213. package/src/sap/m/Select.js +8 -14
  214. package/src/sap/m/SelectDialog.js +2 -1
  215. package/src/sap/m/SelectDialogBase.js +1 -1
  216. package/src/sap/m/SelectList.js +1 -1
  217. package/src/sap/m/SelectListRenderer.js +2 -2
  218. package/src/sap/m/SelectionDetails.js +2 -2
  219. package/src/sap/m/SelectionDetailsFacade.js +2 -2
  220. package/src/sap/m/SelectionDetailsItem.js +1 -1
  221. package/src/sap/m/SelectionDetailsItemLine.js +1 -1
  222. package/src/sap/m/Shell.js +1 -1
  223. package/src/sap/m/SimpleFixFlex.js +1 -1
  224. package/src/sap/m/SinglePlanningCalendar.js +7 -9
  225. package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
  226. package/src/sap/m/SinglePlanningCalendarGrid.js +1 -7
  227. package/src/sap/m/SinglePlanningCalendarMonthGrid.js +1 -1
  228. package/src/sap/m/SinglePlanningCalendarMonthGridRenderer.js +0 -2
  229. package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
  230. package/src/sap/m/SinglePlanningCalendarView.js +1 -1
  231. package/src/sap/m/SinglePlanningCalendarWeekView.js +12 -13
  232. package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
  233. package/src/sap/m/SlideTile.js +30 -5
  234. package/src/sap/m/Slider.js +1 -1
  235. package/src/sap/m/SliderTooltip.js +1 -3
  236. package/src/sap/m/SliderTooltipBase.js +1 -1
  237. package/src/sap/m/SliderTooltipBaseRenderer.js +2 -2
  238. package/src/sap/m/SliderTooltipContainer.js +1 -1
  239. package/src/sap/m/SliderTooltipContainerRenderer.js +2 -2
  240. package/src/sap/m/SliderTooltipRenderer.js +2 -2
  241. package/src/sap/m/SplitApp.js +1 -1
  242. package/src/sap/m/SplitButton.js +1 -3
  243. package/src/sap/m/SplitContainer.js +3 -7
  244. package/src/sap/m/StandardDynamicDateOption.js +9 -15
  245. package/src/sap/m/StandardListItem.js +1 -1
  246. package/src/sap/m/StandardListItemRenderer.js +2 -2
  247. package/src/sap/m/StandardTile.js +1 -1
  248. package/src/sap/m/StandardTreeItem.js +1 -1
  249. package/src/sap/m/StepInput.js +1 -1
  250. package/src/sap/m/SuggestionItem.js +1 -1
  251. package/src/sap/m/SuggestionsPopover.js +4 -2
  252. package/src/sap/m/Switch.js +1 -1
  253. package/src/sap/m/TabContainer.js +1 -1
  254. package/src/sap/m/TabContainerItem.js +1 -1
  255. package/src/sap/m/TabStrip.js +1 -1
  256. package/src/sap/m/TabStripItem.js +1 -1
  257. package/src/sap/m/Table.js +11 -9
  258. package/src/sap/m/TablePersoController.js +1 -1
  259. package/src/sap/m/TablePersoDialog.js +6 -15
  260. package/src/sap/m/TablePersoProvider.js +1 -1
  261. package/src/sap/m/TableRenderer.js +2 -9
  262. package/src/sap/m/TableSelectDialog.js +1 -1
  263. package/src/sap/m/Text.js +1 -1
  264. package/src/sap/m/TextArea.js +1 -1
  265. package/src/sap/m/TextAreaRenderer.js +1 -2
  266. package/src/sap/m/Tile.js +1 -1
  267. package/src/sap/m/TileContainer.js +1 -1
  268. package/src/sap/m/TileContent.js +8 -9
  269. package/src/sap/m/TileContentRenderer.js +3 -3
  270. package/src/sap/m/TimePicker.js +45 -8
  271. package/src/sap/m/TimePickerClock.js +2 -3
  272. package/src/sap/m/TimePickerClocks.js +5 -3
  273. package/src/sap/m/TimePickerClocksRenderer.js +4 -2
  274. package/src/sap/m/TimePickerInputs.js +1 -1
  275. package/src/sap/m/TimePickerInputsRenderer.js +1 -1
  276. package/src/sap/m/TimePickerInternals.js +1 -1
  277. package/src/sap/m/TimePickerSlider.js +1 -1
  278. package/src/sap/m/TimePickerSliders.js +3 -5
  279. package/src/sap/m/Title.js +1 -1
  280. package/src/sap/m/TitlePropagationSupport.js +1 -1
  281. package/src/sap/m/ToggleButton.js +2 -2
  282. package/src/sap/m/Token.js +1 -3
  283. package/src/sap/m/Tokenizer.js +1 -1
  284. package/src/sap/m/Toolbar.js +1 -1
  285. package/src/sap/m/ToolbarLayoutData.js +1 -1
  286. package/src/sap/m/ToolbarSeparator.js +1 -1
  287. package/src/sap/m/ToolbarSpacer.js +1 -1
  288. package/src/sap/m/Tree.js +8 -1
  289. package/src/sap/m/TreeItemBase.js +1 -1
  290. package/src/sap/m/TreeRenderer.js +0 -10
  291. package/src/sap/m/UploadCollection.js +2 -2
  292. package/src/sap/m/UploadCollectionItem.js +1 -1
  293. package/src/sap/m/UploadCollectionParameter.js +1 -1
  294. package/src/sap/m/UploadCollectionToolbarPlaceholder.js +1 -1
  295. package/src/sap/m/VBox.js +1 -1
  296. package/src/sap/m/ValueStateHeader.js +1 -1
  297. package/src/sap/m/VariantItem.js +160 -0
  298. package/src/sap/m/VariantManagement.js +717 -571
  299. package/src/sap/m/ViewSettingsCustomItem.js +1 -1
  300. package/src/sap/m/ViewSettingsCustomTab.js +1 -1
  301. package/src/sap/m/ViewSettingsDialog.js +1 -1
  302. package/src/sap/m/ViewSettingsFilterItem.js +1 -1
  303. package/src/sap/m/ViewSettingsItem.js +1 -1
  304. package/src/sap/m/VisibleItem.js +1 -1
  305. package/src/sap/m/WheelSlider.js +1 -1
  306. package/src/sap/m/WheelSliderContainer.js +1 -1
  307. package/src/sap/m/Wizard.js +10 -3
  308. package/src/sap/m/WizardProgressNavigator.js +1 -1
  309. package/src/sap/m/WizardStep.js +3 -1
  310. package/src/sap/m/_thirdparty/purify.js +1622 -0
  311. package/src/sap/m/changeHandler/AddTableColumn.js +12 -13
  312. package/src/sap/m/changeHandler/ChangeLinkTarget.js +2 -3
  313. package/src/sap/m/changeHandler/CombineButtons.js +19 -22
  314. package/src/sap/m/changeHandler/MoveTableColumns.js +6 -6
  315. package/src/sap/m/changeHandler/SelectIconTabBarFilter.js +5 -5
  316. package/src/sap/m/changeHandler/SplitMenuButton.js +7 -6
  317. package/src/sap/m/delegate/DateNavigation.js +0 -4
  318. package/src/sap/m/designtime/Link.designtime.js +19 -11
  319. package/src/sap/m/designtime/VariantManagement.designtime.js +36 -26
  320. package/src/sap/m/flexibility/EngineFlex.js +48 -0
  321. package/src/sap/m/inputUtils/selectionRange.js +1 -2
  322. package/src/sap/m/library.js +60 -7
  323. package/src/sap/m/messagebundle.properties +57 -6
  324. package/src/sap/m/messagebundle_ar.properties +39 -9
  325. package/src/sap/m/messagebundle_bg.properties +33 -3
  326. package/src/sap/m/messagebundle_ca.properties +32 -2
  327. package/src/sap/m/messagebundle_cs.properties +32 -2
  328. package/src/sap/m/messagebundle_cy.properties +34 -4
  329. package/src/sap/m/messagebundle_da.properties +32 -2
  330. package/src/sap/m/messagebundle_de.properties +32 -2
  331. package/src/sap/m/messagebundle_el.properties +35 -5
  332. package/src/sap/m/messagebundle_en.properties +34 -4
  333. package/src/sap/m/messagebundle_en_GB.properties +34 -4
  334. package/src/sap/m/messagebundle_en_US_sappsd.properties +33 -3
  335. package/src/sap/m/messagebundle_en_US_saprigi.properties +31 -3
  336. package/src/sap/m/messagebundle_en_US_saptrc.properties +33 -3
  337. package/src/sap/m/messagebundle_es.properties +33 -3
  338. package/src/sap/m/messagebundle_es_MX.properties +32 -2
  339. package/src/sap/m/messagebundle_et.properties +32 -2
  340. package/src/sap/m/messagebundle_fi.properties +36 -6
  341. package/src/sap/m/messagebundle_fr.properties +33 -3
  342. package/src/sap/m/messagebundle_fr_CA.properties +34 -4
  343. package/src/sap/m/messagebundle_hi.properties +34 -4
  344. package/src/sap/m/messagebundle_hr.properties +36 -6
  345. package/src/sap/m/messagebundle_hu.properties +34 -4
  346. package/src/sap/m/messagebundle_id.properties +34 -4
  347. package/src/sap/m/messagebundle_it.properties +33 -3
  348. package/src/sap/m/messagebundle_iw.properties +34 -4
  349. package/src/sap/m/messagebundle_ja.properties +33 -3
  350. package/src/sap/m/messagebundle_kk.properties +32 -2
  351. package/src/sap/m/messagebundle_ko.properties +40 -10
  352. package/src/sap/m/messagebundle_lt.properties +32 -2
  353. package/src/sap/m/messagebundle_lv.properties +32 -2
  354. package/src/sap/m/messagebundle_ms.properties +33 -3
  355. package/src/sap/m/messagebundle_nl.properties +46 -16
  356. package/src/sap/m/messagebundle_no.properties +34 -4
  357. package/src/sap/m/messagebundle_pl.properties +33 -3
  358. package/src/sap/m/messagebundle_pt.properties +37 -7
  359. package/src/sap/m/messagebundle_pt_PT.properties +32 -2
  360. package/src/sap/m/messagebundle_ro.properties +33 -3
  361. package/src/sap/m/messagebundle_ru.properties +33 -3
  362. package/src/sap/m/messagebundle_sh.properties +33 -3
  363. package/src/sap/m/messagebundle_sk.properties +32 -2
  364. package/src/sap/m/messagebundle_sl.properties +33 -3
  365. package/src/sap/m/messagebundle_sv.properties +32 -2
  366. package/src/sap/m/messagebundle_th.properties +65 -35
  367. package/src/sap/m/messagebundle_tr.properties +36 -6
  368. package/src/sap/m/messagebundle_uk.properties +33 -3
  369. package/src/sap/m/messagebundle_vi.properties +33 -3
  370. package/src/sap/m/messagebundle_zh_CN.properties +33 -3
  371. package/src/sap/m/messagebundle_zh_TW.properties +32 -2
  372. package/src/sap/m/p13n/AbstractContainer.js +7 -7
  373. package/src/sap/m/p13n/AbstractContainerItem.js +4 -4
  374. package/src/sap/m/p13n/BasePanel.js +24 -13
  375. package/src/sap/m/p13n/Container.js +3 -3
  376. package/src/sap/m/p13n/Engine.js +1254 -0
  377. package/src/sap/m/p13n/FlexUtil.js +161 -0
  378. package/src/sap/m/p13n/GroupController.js +145 -0
  379. package/src/sap/m/p13n/GroupPanel.js +12 -5
  380. package/src/sap/m/p13n/MetadataHelper.js +35 -0
  381. package/src/sap/m/p13n/PersistenceProvider.js +160 -0
  382. package/src/sap/m/p13n/Popup.js +49 -12
  383. package/src/sap/m/p13n/QueryPanel.js +3 -3
  384. package/src/sap/m/p13n/SelectionController.js +548 -0
  385. package/src/sap/m/p13n/SelectionPanel.js +23 -5
  386. package/src/sap/m/p13n/SortController.js +153 -0
  387. package/src/sap/m/p13n/SortPanel.js +15 -5
  388. package/src/sap/m/p13n/enum/PersistenceMode.js +43 -0
  389. package/src/sap/m/p13n/handler/xConfigHandler.js +166 -0
  390. package/src/sap/m/p13n/modification/FlexModificationHandler.js +90 -0
  391. package/src/sap/m/p13n/modification/LocalStorageModificationHandler.js +75 -0
  392. package/src/sap/m/p13n/modification/ModificationHandler.js +143 -0
  393. package/src/sap/m/p13n/modules/AdaptationProvider.js +67 -0
  394. package/src/sap/m/p13n/modules/DefaultProviderRegistry.js +147 -0
  395. package/src/sap/m/p13n/modules/StateHandlerRegistry.js +101 -0
  396. package/src/sap/m/p13n/modules/UIManager.js +230 -0
  397. package/src/sap/m/p13n/modules/xConfigAPI.js +288 -0
  398. package/src/sap/m/plugins/CellSelector.js +741 -0
  399. package/src/sap/m/plugins/ColumnResizer.js +15 -1
  400. package/src/sap/m/plugins/DataStateIndicator.js +2 -2
  401. package/src/sap/m/plugins/PasteProvider.js +1 -1
  402. package/src/sap/m/plugins/PluginBase.js +4 -3
  403. package/src/sap/m/rules/CheckBox.support.js +1 -1
  404. package/src/sap/m/rules/Image.support.js +1 -1
  405. package/src/sap/m/rules/Link.support.js +1 -1
  406. package/src/sap/m/rules/MessagePage.support.js +1 -1
  407. package/src/sap/m/rules/ObjectHeader.support.js +6 -6
  408. package/src/sap/m/rules/ObjectListItem.support.js +1 -1
  409. package/src/sap/m/rules/ObjectMarker.support.js +1 -1
  410. package/src/sap/m/rules/ObjectStatus.support.js +1 -1
  411. package/src/sap/m/rules/Panel.support.js +1 -1
  412. package/src/sap/m/rules/Select.support.js +1 -1
  413. package/src/sap/m/rules/Table.support.js +3 -3
  414. package/src/sap/m/semantic/AddAction.js +1 -1
  415. package/src/sap/m/semantic/CancelAction.js +1 -1
  416. package/src/sap/m/semantic/DeleteAction.js +1 -1
  417. package/src/sap/m/semantic/DetailPage.js +1 -1
  418. package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
  419. package/src/sap/m/semantic/EditAction.js +1 -1
  420. package/src/sap/m/semantic/FavoriteAction.js +1 -1
  421. package/src/sap/m/semantic/FilterAction.js +1 -1
  422. package/src/sap/m/semantic/FilterSelect.js +1 -1
  423. package/src/sap/m/semantic/FlagAction.js +1 -1
  424. package/src/sap/m/semantic/ForwardAction.js +1 -1
  425. package/src/sap/m/semantic/FullscreenPage.js +1 -1
  426. package/src/sap/m/semantic/GroupAction.js +1 -1
  427. package/src/sap/m/semantic/GroupSelect.js +1 -1
  428. package/src/sap/m/semantic/MainAction.js +1 -1
  429. package/src/sap/m/semantic/MasterPage.js +1 -1
  430. package/src/sap/m/semantic/MessagesIndicator.js +1 -1
  431. package/src/sap/m/semantic/MultiSelectAction.js +1 -1
  432. package/src/sap/m/semantic/NegativeAction.js +1 -1
  433. package/src/sap/m/semantic/OpenInAction.js +1 -1
  434. package/src/sap/m/semantic/PositiveAction.js +1 -1
  435. package/src/sap/m/semantic/PrintAction.js +1 -1
  436. package/src/sap/m/semantic/SaveAction.js +1 -1
  437. package/src/sap/m/semantic/Segment.js +1 -1
  438. package/src/sap/m/semantic/SegmentedContainer.js +1 -1
  439. package/src/sap/m/semantic/SemanticButton.js +1 -1
  440. package/src/sap/m/semantic/SemanticConfiguration.js +3 -4
  441. package/src/sap/m/semantic/SemanticControl.js +1 -1
  442. package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +1 -1
  443. package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +1 -1
  444. package/src/sap/m/semantic/SemanticPage.js +1 -1
  445. package/src/sap/m/semantic/SemanticSelect.js +1 -1
  446. package/src/sap/m/semantic/SemanticToggleButton.js +1 -3
  447. package/src/sap/m/semantic/SendEmailAction.js +1 -1
  448. package/src/sap/m/semantic/SendMessageAction.js +1 -1
  449. package/src/sap/m/semantic/ShareInJamAction.js +1 -1
  450. package/src/sap/m/semantic/ShareMenu.js +1 -1
  451. package/src/sap/m/semantic/ShareMenuPage.js +1 -1
  452. package/src/sap/m/semantic/SortAction.js +1 -1
  453. package/src/sap/m/semantic/SortSelect.js +1 -1
  454. package/src/sap/m/table/Util.js +30 -11
  455. package/src/sap/m/table/columnmenu/ActionItem.js +1 -1
  456. package/src/sap/m/table/columnmenu/Entry.js +1 -1
  457. package/src/sap/m/table/columnmenu/Item.js +1 -1
  458. package/src/sap/m/table/columnmenu/ItemBase.js +1 -1
  459. package/src/sap/m/table/columnmenu/Menu.js +50 -13
  460. package/src/sap/m/table/columnmenu/QuickAction.js +16 -8
  461. package/src/sap/m/table/columnmenu/QuickActionBase.js +18 -3
  462. package/src/sap/m/table/columnmenu/QuickActionItem.js +5 -6
  463. package/src/sap/m/table/columnmenu/QuickGroup.js +29 -5
  464. package/src/sap/m/table/columnmenu/QuickGroupItem.js +13 -1
  465. package/src/sap/m/table/columnmenu/QuickSort.js +1 -3
  466. package/src/sap/m/table/columnmenu/QuickSortItem.js +8 -7
  467. package/src/sap/m/table/columnmenu/QuickTotal.js +29 -5
  468. package/src/sap/m/table/columnmenu/QuickTotalItem.js +13 -1
  469. package/src/sap/m/themes/base/Breadcrumbs.less +6 -0
  470. package/src/sap/m/themes/base/Button.less +0 -1
  471. package/src/sap/m/themes/base/Carousel.less +8 -8
  472. package/src/sap/m/themes/base/CellSelector.less +9 -0
  473. package/src/sap/m/themes/base/CheckBox.less +1 -0
  474. package/src/sap/m/themes/base/Dialog.less +1 -0
  475. package/src/sap/m/themes/base/DisplayListItem.less +3 -3
  476. package/src/sap/m/themes/base/DynamicDateRange.less +4 -0
  477. package/src/sap/m/themes/base/FeedContent.less +13 -5
  478. package/src/sap/m/themes/base/GenericTile.less +56 -9
  479. package/src/sap/m/themes/base/IllustratedMessage.less +7 -0
  480. package/src/sap/m/themes/base/NewsContent.less +6 -0
  481. package/src/sap/m/themes/base/NumericContent.less +1 -1
  482. package/src/sap/m/themes/base/ObjectStatus.less +2 -1
  483. package/src/sap/m/themes/base/OverflowToolbarAssociativePopover.less +5 -1
  484. package/src/sap/m/themes/base/SelectList.less +0 -5
  485. package/src/sap/m/themes/base/SinglePlanningCalendarGrid.less +7 -0
  486. package/src/sap/m/themes/base/SlideTile.less +35 -4
  487. package/src/sap/m/themes/base/Table.less +11 -2
  488. package/src/sap/m/themes/base/TileContent.less +17 -0
  489. package/src/sap/m/themes/base/library.source.less +1 -0
  490. package/src/sap/m/upload/UploadSet.js +300 -23
  491. package/src/sap/m/upload/UploadSetItem.js +18 -7
  492. package/src/sap/m/upload/UploadSetRenderer.js +8 -16
  493. package/src/sap/m/upload/UploadSetToolbarPlaceholder.js +1 -1
  494. package/src/sap/m/upload/Uploader.js +1 -2
@@ -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.103.1
95
+ * @version 1.106.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"] || [];
@@ -824,9 +811,7 @@ function(
824
811
 
825
812
  ListBase.prototype.setEnableBusyIndicator = function(bEnable) {
826
813
  this.setProperty("enableBusyIndicator", bEnable, true);
827
- if (!this.getEnableBusyIndicator()) {
828
- this._hideBusyIndicator();
829
- }
814
+ this._hideBusyIndicator();
830
815
  return this;
831
816
  };
832
817
 
@@ -1085,7 +1070,7 @@ function(
1085
1070
  * Returns growing information as object with "actual" and "total" keys.
1086
1071
  * Note: This function returns "null" if "growing" feature is disabled.
1087
1072
  *
1088
- * @type object
1073
+ * @returns {{actual: int, total: int} | null}
1089
1074
  * @public
1090
1075
  * @since 1.16
1091
1076
  * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
@@ -1383,7 +1368,10 @@ function(
1383
1368
  if (this._bBusy) {
1384
1369
  // revert busy state
1385
1370
  this._bBusy = false;
1386
- this.setBusy(false, "listUl");
1371
+ if (this.getEnableBusyIndicator()) {
1372
+ // only call the setBusy method if enableBusyIndicator=true
1373
+ this.setBusy(false, "listUl");
1374
+ }
1387
1375
  }
1388
1376
  };
1389
1377
 
@@ -1449,7 +1437,22 @@ function(
1449
1437
  }
1450
1438
  };
1451
1439
 
1440
+ ListBase.prototype.onItemRemoved = function(oItem) {
1441
+ oItem._bGroupHeader = false;
1442
+ if (this._oLastGroupHeader == oItem) {
1443
+ this._oLastGroupHeader = null;
1444
+ }
1445
+ if (this._oSelectedItem == oItem) {
1446
+ this._oSelectedItem = null;
1447
+ }
1448
+ };
1449
+
1452
1450
  ListBase.prototype.onItemInserted = function(oItem, bSelectedDelayed) {
1451
+ // trigger is also an item of the ListBase which should not me mapped to the groupHeaders
1452
+ if (this._oLastGroupHeader && !oItem.isGroupHeader()) {
1453
+ this._oLastGroupHeader.setGroupedItem(oItem);
1454
+ }
1455
+
1453
1456
  if (bSelectedDelayed) {
1454
1457
  // item was already selected before inserted to the list
1455
1458
  this.onItemSelectedChange(oItem, true);
@@ -1523,10 +1526,15 @@ function(
1523
1526
  return;
1524
1527
  }
1525
1528
 
1526
- if (sMode === ListMode.MultiSelect) {
1527
- this._fireSelectionChangeEvent([oListItem]);
1528
- } else if (this._bSelectionMode && bSelected) {
1529
+ if (sMode === ListMode.MultiSelect || (this._bSelectionMode && bSelected)) {
1529
1530
  this._fireSelectionChangeEvent([oListItem]);
1531
+
1532
+ // announce the selection state changes
1533
+ // but only announce if the document.activeElement is the listItem control, else selection control should announce the selection change
1534
+ if (this.getAriaRole() === "list" && document.activeElement === oListItem.getDomRef()) {
1535
+ var oResourceBundle = Core.getLibraryResourceBundle("sap.m");
1536
+ InvisibleMessage.getInstance().announce(bSelected ? oResourceBundle.getText("LIST_ITEM_SELECTED") : oResourceBundle.getText("LIST_ITEM_NOT_SELECTED"), "Assertive");
1537
+ }
1530
1538
  }
1531
1539
  };
1532
1540
 
@@ -1928,17 +1936,31 @@ function(
1928
1936
 
1929
1937
  ListBase.prototype.addItemGroup = function(oGroup, oHeader, bSuppressInvalidate) {
1930
1938
  if (!oHeader) {
1931
- oHeader = new GroupHeaderListItem();
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);
1939
+ oHeader = this.getGroupHeaderTemplate(oGroup);
1935
1940
  }
1936
1941
 
1937
1942
  oHeader._bGroupHeader = true;
1938
1943
  this.addAggregation("items", oHeader, bSuppressInvalidate);
1944
+ this.setLastGroupHeader(oHeader);
1945
+ return oHeader;
1946
+ };
1947
+
1948
+ ListBase.prototype.getGroupHeaderTemplate = function(oGroup) {
1949
+ var oHeader = new GroupHeaderListItem();
1950
+ // setter is used to avoid complex binding parser checks which happens when setting values in constructor (ManagedObject)
1951
+ // i.e., to ignore binding strings "{" "[" from the value being set
1952
+ oHeader.setTitle(oGroup.text || oGroup.key);
1939
1953
  return oHeader;
1940
1954
  };
1941
1955
 
1956
+ ListBase.prototype.setLastGroupHeader = function(oGroupHeader) {
1957
+ this._oLastGroupHeader = oGroupHeader;
1958
+ };
1959
+
1960
+ ListBase.prototype.getLastGroupHeader = function() {
1961
+ return this._oLastGroupHeader;
1962
+ };
1963
+
1942
1964
  ListBase.prototype.removeGroupHeaders = function(bSuppressInvalidate) {
1943
1965
  this.getItems(true).forEach(function(oItem) {
1944
1966
  if (oItem.isGroupHeader()) {
@@ -1990,15 +2012,25 @@ function(
1990
2012
  ListBase.prototype.getAccessbilityPosition = function(oItem) {
1991
2013
  var iSetSize = 0,
1992
2014
  aItems = this.getVisibleItems(),
1993
- iPosInset = aItems.indexOf(oItem) + 1,
2015
+ sAriaRole = this.getAriaRole(),
2016
+ // exclude group headers from item count for role="list" || role="listbox" only
2017
+ bExcludeGroupHeaderFromCount = sAriaRole === "list" || sAriaRole === "listbox";
2018
+
2019
+ if (bExcludeGroupHeaderFromCount) {
2020
+ aItems = aItems.filter(function(oItem) {
2021
+ return !oItem.isGroupHeader();
2022
+ });
2023
+ }
2024
+
2025
+ var iPosInset = aItems.indexOf(oItem) + 1,
1994
2026
  oBinding = this.getBinding("items");
1995
2027
 
1996
2028
  // use binding length if list is in scroll to load growing mode
1997
2029
  if (this.getGrowing() && this.getGrowingScrollToLoad() && oBinding && oBinding.isLengthFinal()) {
1998
2030
  iSetSize = oBinding.getLength();
1999
- if (oBinding.isGrouped()) {
2031
+ if (oBinding.isGrouped() && !bExcludeGroupHeaderFromCount) {
2000
2032
  iSetSize += aItems.filter(function(oItem) {
2001
- return oItem.isGroupHeader() && oItem.getVisible();
2033
+ return oItem.isGroupHeader();
2002
2034
  }).length;
2003
2035
  }
2004
2036
  } else {
@@ -2021,25 +2053,26 @@ function(
2021
2053
  return;
2022
2054
  }
2023
2055
 
2024
- var oItemDomRef = oItem.getDomRef(),
2025
- mPosition = this.getAccessbilityPosition(oItem);
2056
+ var oItemDomRef = oItem.getDomRef();
2026
2057
 
2027
2058
  if (!oItem.getContentAnnouncement) {
2028
2059
  // let the screen reader announce the whole content
2029
2060
  this.getNavigationRoot().setAttribute("aria-activedescendant", oItemDomRef.id);
2030
- oItemDomRef.setAttribute("aria-posinset", mPosition.posInset);
2031
- oItemDomRef.setAttribute("aria-setsize", mPosition.setSize);
2032
2061
  } else {
2033
2062
  // prepare the announcement for the screen reader
2034
2063
  var oAccInfo = oItem.getAccessibilityInfo(),
2035
2064
  oBundle = Core.getLibraryResourceBundle("sap.m"),
2036
- sDescription = oAccInfo.type + " . ";
2065
+ sDescription = "";
2037
2066
 
2038
- if (!Device.browser.chrome || this.isA("sap.m.Table")) {
2067
+ // when items have the role="listitem", aria-roledescription attribute containing the "type" info is already added to DOM,
2068
+ // hence there is no need to add this information again to the custom announcement
2069
+ if (this.getAriaRole() !== "list") {
2070
+ sDescription += oAccInfo.type + " . ";
2071
+ }
2072
+
2073
+ if (this.isA("sap.m.Table")) {
2074
+ var mPosition = this.getAccessbilityPosition(oItem);
2039
2075
  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
2076
  }
2044
2077
 
2045
2078
  sDescription += oAccInfo.description;
@@ -2860,6 +2893,38 @@ function(
2860
2893
  }
2861
2894
  };
2862
2895
 
2896
+ /**
2897
+ * Return the <code>role</code> attribute of the control.
2898
+ * @returns {string} the <code>role</code> attribute of the control
2899
+ * @protected
2900
+ * @ui5-restricted
2901
+ * @since 1.105
2902
+ */
2903
+ ListBase.prototype.getAriaRole = function() {
2904
+ return "list";
2905
+ };
2906
+
2907
+ /**
2908
+ * This method is a hook for the RenderManager that gets called
2909
+ * during the rendering of child Controls. It allows to add,
2910
+ * remove and update existing accessibility attributes (ARIA) of
2911
+ * those controls.
2912
+ *
2913
+ * @param {sap.ui.core.Control} oElement - The Control that gets rendered by the RenderManager
2914
+ * @param {object} mAriaProps - The mapping of "aria-" prefixed attributes
2915
+ * @protected
2916
+ */
2917
+ ListBase.prototype.enhanceAccessibilityState = function(oElement, mAriaProps) {
2918
+ if (!oElement.isA("sap.m.ListItemBase") || oElement.isGroupHeader()) {
2919
+ return;
2920
+ }
2921
+
2922
+ // add aria-posinset & aria-setsize attributes to listitem DOM (not for group headers)
2923
+ var mPosition = this.getAccessbilityPosition(oElement);
2924
+ mAriaProps.posinset = mPosition.posInset;
2925
+ mAriaProps.setsize = mPosition.setSize;
2926
+ };
2927
+
2863
2928
  return ListBase;
2864
2929
 
2865
2930
  });
@@ -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 = this.getAriaRole(oControl);
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
  }
@@ -10,6 +10,7 @@ sap.ui.define([
10
10
  "sap/ui/events/KeyCodes",
11
11
  "sap/ui/model/BindingMode",
12
12
  "sap/ui/Device",
13
+ "sap/ui/core/Core",
13
14
  "sap/ui/core/library",
14
15
  "sap/ui/core/Control",
15
16
  "sap/ui/core/IconPool",
@@ -31,6 +32,7 @@ function(
31
32
  KeyCodes,
32
33
  BindingMode,
33
34
  Device,
35
+ Core,
34
36
  coreLibrary,
35
37
  Control,
36
38
  IconPool,
@@ -76,7 +78,7 @@ function(
76
78
  * @extends sap.ui.core.Control
77
79
  *
78
80
  * @author SAP SE
79
- * @version 1.103.1
81
+ * @version 1.106.0
80
82
  *
81
83
  * @constructor
82
84
  * @public
@@ -188,7 +190,7 @@ function(
188
190
  }});
189
191
 
190
192
  ListItemBase.getAccessibilityText = function(oControl, bDetectEmpty) {
191
- var oBundle = sap.ui.getCore().getLibraryResourceBundle("sap.m");
193
+ var oBundle = Core.getLibraryResourceBundle("sap.m");
192
194
 
193
195
  if (!oControl || !oControl.getVisible || !oControl.getVisible()) {
194
196
  return bDetectEmpty ? oBundle.getText("CONTROL_EMPTY") : "";
@@ -265,6 +267,9 @@ function(
265
267
  // defines the root tag name for rendering purposes
266
268
  ListItemBase.prototype.TagName = "li";
267
269
 
270
+ // enable the ACC announcement for "not selected"
271
+ ListItemBase.prototype._bAnnounceNotSelected = true;
272
+
268
273
  // internal active state of the listitem
269
274
  ListItemBase.prototype.init = function() {
270
275
  this._active = false;
@@ -273,8 +278,15 @@ function(
273
278
  this._bNeedsNavigated = false;
274
279
  };
275
280
 
281
+ ListItemBase.prototype.onBeforeRendering = function() {
282
+ this._oDomRef = this.getDomRef();
283
+ };
284
+
276
285
  ListItemBase.prototype.onAfterRendering = function() {
277
- this.informList("DOMUpdate", true);
286
+ if (!this._oDomRef || this._oDomRef !== this.getDomRef()) {
287
+ this.informList("DOMUpdate", true);
288
+ }
289
+ this._oDomRef = undefined;
278
290
  this._checkHighlight();
279
291
  this._checkNavigated();
280
292
  };
@@ -444,7 +456,7 @@ function(
444
456
  };
445
457
 
446
458
  ListItemBase.prototype.getAccessibilityInfo = function() {
447
- var oBundle = sap.ui.getCore().getLibraryResourceBundle("sap.m");
459
+ var oBundle = Core.getLibraryResourceBundle("sap.m");
448
460
  return {
449
461
  type: this.getAccessibilityType(oBundle),
450
462
  description: this.getAccessibilityDescription(oBundle),
@@ -515,7 +527,7 @@ function(
515
527
  id: this.getId() + "-imgDel",
516
528
  icon: this.DeleteIconURI,
517
529
  type: ButtonType.Transparent,
518
- tooltip: sap.ui.getCore().getLibraryResourceBundle("sap.m").getText("LIST_ITEM_DELETE")
530
+ tooltip: Core.getLibraryResourceBundle("sap.m").getText("LIST_ITEM_DELETE")
519
531
  }).addStyleClass("sapMLIBIconDel sapMLIBSelectD").setParent(this, null, true).attachPress(function(oEvent) {
520
532
  this.informList("Delete");
521
533
  }, this);
@@ -552,7 +564,7 @@ function(
552
564
  id: this.getId() + "-imgDet",
553
565
  icon: this.DetailIconURI,
554
566
  type: ButtonType.Transparent,
555
- tooltip: sap.ui.getCore().getLibraryResourceBundle("sap.m").getText("LIST_ITEM_EDIT")
567
+ tooltip: Core.getLibraryResourceBundle("sap.m").getText("LIST_ITEM_EDIT")
556
568
  }).addStyleClass("sapMLIBType sapMLIBIconDet").setParent(this, null, true).attachPress(function() {
557
569
  this.fireDetailTap();
558
570
  this.fireDetailPress();
@@ -723,6 +735,7 @@ function(
723
735
  };
724
736
 
725
737
  ListItemBase.prototype.exit = function() {
738
+ this._oDomRef = null;
726
739
  this._oLastFocused = null;
727
740
  this._checkHighlight(false);
728
741
  this._checkNavigated(false);
@@ -808,16 +821,18 @@ function(
808
821
  // Updates the selected state of the DOM
809
822
  ListItemBase.prototype.updateSelectedDOM = function(bSelected, $This) {
810
823
  $This.toggleClass("sapMLIBSelected", bSelected);
811
- $This.attr("aria-selected", bSelected);
824
+
825
+ if ($This.attr("role") !== "listitem") {
826
+ $This.attr("aria-selected", bSelected);
827
+ }
812
828
  };
813
829
 
814
830
  ListItemBase.prototype.setParent = function(oParent) {
815
- Control.prototype.setParent.apply(this, arguments);
816
831
  if (!oParent) {
817
- this._bGroupHeader = false;
818
- return;
832
+ this.informList("Removed");
819
833
  }
820
834
 
835
+ Control.prototype.setParent.apply(this, arguments);
821
836
  this.informList("Inserted", this.bSelectedDelayed);
822
837
  return this;
823
838
  };
@@ -837,6 +852,20 @@ function(
837
852
  return this._bGroupHeader;
838
853
  };
839
854
 
855
+ /**
856
+ * This gets called from the ListBase for the GroupHeader items to inform the connected sub items
857
+ *
858
+ * @param {sap.m.ListItemBase} oLI The list item
859
+ */
860
+ ListItemBase.prototype.setGroupedItem = function(oLI) {
861
+ this._aGroupedItems = this._aGroupedItems || [];
862
+ this._aGroupedItems.push(oLI.getId());
863
+ };
864
+
865
+ ListItemBase.prototype.getGroupedItems = function() {
866
+ return this._aGroupedItems;
867
+ };
868
+
840
869
  /**
841
870
  * Determines whether item is in SingleSelectMaster mode or
842
871
  * other selection modes when includeItemInSelection is true
@@ -922,7 +951,7 @@ function(
922
951
  /**
923
952
  * Detect text selection.
924
953
  *
925
- * @param {object} oDomRef DOM element of the control
954
+ * @param {HTMLElement} oDomRef DOM element of the control
926
955
  * @returns {boolean} true if text selection is done within the control else false
927
956
  * @private
928
957
  */
@@ -221,7 +221,7 @@ sap.ui.define(["./library", "sap/ui/core/Core", "sap/ui/Device", "sap/ui/core/In
221
221
  * @protected
222
222
  */
223
223
  ListItemBaseRenderer.getAriaRole = function(oLI) {
224
- return "option";
224
+ return "listitem";
225
225
  };
226
226
 
227
227
  /**
@@ -283,14 +283,12 @@ sap.ui.define(["./library", "sap/ui/core/Core", "sap/ui/Device", "sap/ui/core/In
283
283
  ListItemBaseRenderer.getAccessibilityState = function(oLI) {
284
284
  var sAriaLabelledBy = this.getAriaLabelledBy(oLI),
285
285
  sAriaDescribedBy = this.getAriaDescribedBy(oLI),
286
+ sRole = this.getAriaRole(oLI),
286
287
  mAccessibilityState = {
287
- role: this.getAriaRole(oLI)
288
+ role: sRole,
289
+ roledescription: sRole === "listitem" ? oLI.getAccessibilityType(Core.getLibraryResourceBundle("sap.m")) : null
288
290
  };
289
291
 
290
- if (oLI.isSelectable()) {
291
- mAccessibilityState.selected = oLI.getProperty("selected");
292
- }
293
-
294
292
  if (sAriaLabelledBy) {
295
293
  mAccessibilityState.labelledby = {
296
294
  value: sAriaLabelledBy.trim(),
@@ -309,6 +307,19 @@ sap.ui.define(["./library", "sap/ui/core/Core", "sap/ui/Device", "sap/ui/core/In
309
307
  mAccessibilityState.current = true;
310
308
  }
311
309
 
310
+ if (sRole === "listitem") {
311
+ mAccessibilityState.selected = null;
312
+ if (oLI.isGroupHeader()) {
313
+ mAccessibilityState.role = "group";
314
+ var aGroupedItems = oLI.getGroupedItems();
315
+ if (aGroupedItems && aGroupedItems.length) {
316
+ mAccessibilityState.owns = aGroupedItems.join(" ");
317
+ }
318
+ }
319
+ } else if (oLI.isSelectable()) {
320
+ mAccessibilityState.selected = oLI.getSelected();
321
+ }
322
+
312
323
  return mAccessibilityState;
313
324
  };
314
325
 
@@ -19,8 +19,8 @@ sap.ui.define(["sap/ui/core/Renderer", "./ListBaseRenderer"],
19
19
  var ListRenderer = Renderer.extend(ListBaseRenderer);
20
20
  ListRenderer.apiVersion = 2;
21
21
 
22
- ListRenderer.getNoDataAriaRole = function() {
23
- return "option";
22
+ ListRenderer.getNoDataAriaRole = function(oControl) {
23
+ return oControl.getAriaRole() === "listbox" ? "option" : "listitem";
24
24
  };
25
25
 
26
26
  return ListRenderer;
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * Applies mask support for input controls.
27
27
  * It should should be applied to the prototype of a <code>sap.m.InputBase</code>.
28
28
  *
29
- * @version 1.103.1
29
+ * @version 1.106.0
30
30
  * @private
31
31
  * @mixin
32
32
  * @alias sap.m.MaskEnabler
@@ -164,6 +164,12 @@ sap.ui.define([
164
164
  this._applyMask();
165
165
  this._positionCaret(false);
166
166
  }
167
+
168
+ var sValue = this.getDOMValue();
169
+ if (!this._isMaskEnabled() && sValue !== this._sPreviousValue) {
170
+ this._fireLiveChange(sValue, this._sPreviousValue);
171
+ this._sPreviousValue = sValue;
172
+ }
167
173
  };
168
174
 
169
175
  /**
@@ -231,6 +237,7 @@ sap.ui.define([
231
237
  if (this._oTempValue._aContent.join("") !== this._oTempValue._aInitial.join("")) {
232
238
  InputBase.prototype.onsapescape.call(this, oEvent);
233
239
  }
240
+ this._bCheckForLiveChange = true;
234
241
  };
235
242
 
236
243
  /**
@@ -611,6 +618,28 @@ sap.ui.define([
611
618
  return this._aRules[iIndex].test(sChar);
612
619
  };
613
620
 
621
+ this.updateDomValue = function(sValue) {
622
+ InputBase.prototype.updateDomValue.call(this, sValue);
623
+
624
+ if (this._bCheckForLiveChange && sValue !== this._sPreviousValue) {
625
+ this._fireLiveChange(sValue, this._sPreviousValue);
626
+ this._sPreviousValue = sValue;
627
+ }
628
+
629
+ this._bCheckForLiveChange = false;
630
+ };
631
+
632
+ /**
633
+ * Fires liveChange event.
634
+ * @private
635
+ */
636
+ this._fireLiveChange = function(sNewValue, sPreviousValue) {
637
+ this.fireLiveChange && this.fireLiveChange({
638
+ value: sNewValue,
639
+ previousValue: sPreviousValue
640
+ });
641
+ };
642
+
614
643
  /**
615
644
  * Sets up default mask rules.
616
645
  * @private
@@ -859,6 +888,13 @@ sap.ui.define([
859
888
  * @private
860
889
  */
861
890
  this._applyAndUpdate = function (sMaskInputValue) {
891
+ if (this._oTempValue && (this._sPreviousValue === undefined || this._sPreviousValue === "")) {
892
+ this._sPreviousValue = this._oTempValue.toString();
893
+ this._bCheckForLiveChange = false;
894
+ } else if (!this._bCutInProgress) {
895
+ this._bCheckForLiveChange = true;
896
+ }
897
+
862
898
  this._applyRules(sMaskInputValue);
863
899
  this.updateDomValue(this._oTempValue.toString());
864
900
  };
@@ -984,6 +1020,8 @@ sap.ui.define([
984
1020
  iEnd = iEnd - 1;
985
1021
  this._resetTempValue(iBegin, iEnd);
986
1022
 
1023
+ this._bCutInProgress = true;
1024
+
987
1025
  //oncut happens before the input event fires (before oninput)
988
1026
  //we want to use the values from this point of time
989
1027
  //but set them after the input event is handled (after oninput)
@@ -994,6 +1032,8 @@ sap.ui.define([
994
1032
  //update the temp value back
995
1033
  //because oninput breaks it
996
1034
  this._oTempValue._aContent = aOldTempValueContent;
1035
+ this._bCheckForLiveChange = true;
1036
+ this._bCutInProgress = false;
997
1037
  this.updateDomValue(sValue);
998
1038
 
999
1039
  //we want that shortly after updateDomValue
@@ -1008,6 +1048,14 @@ sap.ui.define([
1008
1048
  ), iMinBrowserDelay);
1009
1049
  };
1010
1050
 
1051
+ /**
1052
+ * Handle paste event.
1053
+ * @private
1054
+ */
1055
+ this.onpaste = function() {
1056
+ this._bCheckForLiveChange = true;
1057
+ };
1058
+
1011
1059
  /**
1012
1060
  * Handles <code>onKeyDown</code> event.
1013
1061
  * @param {jQuery.Event} oEvent The jQuery event object
@@ -1029,7 +1077,6 @@ sap.ui.define([
1029
1077
  iCursorPos = this._getCursorPosition();
1030
1078
  oSelection = this._getTextSelection();
1031
1079
 
1032
-
1033
1080
  // Determine the correct direction based on RTL mode, input characters and selection state
1034
1081
  sDirection = this._determineArrowKeyDirection(oKey, oSelection);
1035
1082
 
@@ -1095,6 +1142,7 @@ sap.ui.define([
1095
1142
  }
1096
1143
 
1097
1144
  this._resetTempValue(iBegin, iEnd);
1145
+ this._bCheckForLiveChange = true;
1098
1146
  this.updateDomValue(this._oTempValue.toString());
1099
1147
  this._setCursorPosition(Math.max(this._iUserInputStartPosition, iBegin));
1100
1148
  };
@@ -1120,6 +1168,7 @@ sap.ui.define([
1120
1168
 
1121
1169
  if (bAtLeastOneSuccessfulCharPlacement) {
1122
1170
  iNextPos = iPos; //because the cycle above already found the next pos
1171
+ this._bCheckForLiveChange = true;
1123
1172
  this.updateDomValue(this._oTempValue.toString());
1124
1173
  this._setCursorPosition(iNextPos);
1125
1174
  }
@@ -1514,6 +1563,7 @@ sap.ui.define([
1514
1563
  */
1515
1564
  // Should be called from within the input handler(not in a delayed call), otherwise a flickering between
1516
1565
  // the old and new value will be observed
1566
+
1517
1567
  this.updateDomValue(this._oKeyDownStateAndroid.sValue);
1518
1568
 
1519
1569
  setTimeout(function(oInputEvent, oKeyDownState, oKey) {