@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
@@ -82,7 +82,7 @@ sap.ui.define([
82
82
  * @extends sap.ui.core.Control
83
83
  *
84
84
  * @author SAP SE
85
- * @version 1.103.1
85
+ * @version 1.106.0
86
86
  *
87
87
  * @constructor
88
88
  * @public
@@ -115,6 +115,14 @@ sap.ui.define([
115
115
  */
116
116
  enableFormattedText: { type: "boolean", group: "Appearance", defaultValue: false },
117
117
 
118
+ /**
119
+ * Defines whether the <code>IllustratedMessage</code> would resize itself according to it's height
120
+ * if <code>illustrationSize</code> property is set to <code>IllustratedMessageSize.Auto</code>.
121
+ *
122
+ * @since 1.104
123
+ */
124
+ enableVerticalResponsiveness: { type: "boolean", group: "Appearance", defaultValue: false },
125
+
118
126
  /**
119
127
  * Determines which illustration breakpoint variant is used.
120
128
  *
@@ -194,6 +202,13 @@ sap.ui.define([
194
202
  */
195
203
  _title: {type: "sap.m.Title", multiple: false, visibility: "hidden"}
196
204
  },
205
+ associations : {
206
+ /**
207
+ * Association to controls / IDs which label those controls (see WAI-ARIA attribute aria-labelledBy).
208
+ * @since 1.106.0
209
+ */
210
+ illustrationAriaLabelledBy: {type : "sap.ui.core.Control", multiple : true, singularName : "illustrationAriaLabelledBy"}
211
+ },
197
212
  dnd: { draggable: false, droppable: true }
198
213
  }
199
214
  });
@@ -258,6 +273,12 @@ sap.ui.define([
258
273
  BASE: 259
259
274
  };
260
275
 
276
+ IllustratedMessage.BREAK_POINTS_HEIGHT = {
277
+ DIALOG: 451,
278
+ SPOT: 296,
279
+ BASE: 154
280
+ };
281
+
261
282
  IllustratedMessage.MEDIA = {
262
283
  BASE: "sapMIllustratedMessage-Base",
263
284
  SPOT: "sapMIllustratedMessage-Spot",
@@ -274,6 +295,7 @@ sap.ui.define([
274
295
  */
275
296
 
276
297
  IllustratedMessage.prototype.init = function () {
298
+ this._sLastKnownMedia = null;
277
299
  this._updateInternalIllustrationSetAndType(this.getIllustrationType());
278
300
  };
279
301
 
@@ -452,7 +474,7 @@ sap.ui.define([
452
474
  /**
453
475
  * Helper function which ensures that there is non-breaking space between the last two words
454
476
  * of a given DOM content. By adding it, we prevent one word (widow) on the last row of a text node.
455
- * @param {DOMRef} oDomRef - the DOM object which will be checked against
477
+ * @param {HTMLElement} oDomRef - the DOM object which will be checked against
456
478
  * @private
457
479
  */
458
480
  IllustratedMessage.prototype._preventWidowWords = function(oDomRef) {
@@ -477,14 +499,16 @@ sap.ui.define([
477
499
  */
478
500
  IllustratedMessage.prototype._updateDomSize = function () {
479
501
  var oDomRef = this.getDomRef(),
480
- sSize;
502
+ sSize, sCustomSize;
481
503
 
482
504
  if (oDomRef) {
483
505
  sSize = this.getIllustrationSize();
484
506
  if (sSize === IllustratedMessageSize.Auto) {
485
- this._updateMedia(oDomRef.getBoundingClientRect().width);
507
+ this._updateMedia(oDomRef.getBoundingClientRect().width, oDomRef.getBoundingClientRect().height);
486
508
  } else {
487
- this._updateMediaStyle(IllustratedMessage.MEDIA[sSize.toUpperCase()]);
509
+ sCustomSize = IllustratedMessage.MEDIA[sSize.toUpperCase()];
510
+ this._updateMediaStyle(sCustomSize);
511
+ this._updateSymbol(sCustomSize);
488
512
  }
489
513
  }
490
514
 
@@ -507,50 +531,72 @@ sap.ui.define([
507
531
  * @private
508
532
  */
509
533
  IllustratedMessage.prototype._onResize = function (oEvent) {
510
- var iCurrentWidth = oEvent.size.width;
534
+ var iCurrentWidth = oEvent.size.width,
535
+ iCurrentHeight = oEvent.size.height;
511
536
 
512
- this._updateMedia(iCurrentWidth);
537
+ this._updateMedia(iCurrentWidth, iCurrentHeight);
513
538
  };
514
539
 
515
540
  /**
516
- * Updates the media size of the control based on its own width, not on the entire screen size (which media query does).
541
+ * Updates the media size of the control based on its own width and height, not on the entire screen size (which media query does).
517
542
  * @param {number} iWidth - the actual width of the control
543
+ * @param {number} iHeight - the actual height of the control
518
544
  * @private
519
545
  */
520
- IllustratedMessage.prototype._updateMedia = function (iWidth) {
521
- if (!iWidth) {
546
+ IllustratedMessage.prototype._updateMedia = function (iWidth, iHeight) {
547
+ var bVertical = this.getEnableVerticalResponsiveness(),
548
+ sNewMedia;
549
+
550
+ if (!iWidth && !iHeight) {
522
551
  return;
523
552
  }
524
553
 
525
- if (iWidth <= IllustratedMessage.BREAK_POINTS.BASE) {
526
- this._updateMediaStyle(IllustratedMessage.MEDIA.BASE);
527
- } else if (iWidth <= IllustratedMessage.BREAK_POINTS.SPOT) {
528
- this._updateMediaStyle(IllustratedMessage.MEDIA.SPOT);
529
- } else if (iWidth <= IllustratedMessage.BREAK_POINTS.DIALOG) {
530
- this._updateMediaStyle(IllustratedMessage.MEDIA.DIALOG);
554
+ if (iWidth <= IllustratedMessage.BREAK_POINTS.BASE || (iHeight <= IllustratedMessage.BREAK_POINTS_HEIGHT.BASE && bVertical)) {
555
+ sNewMedia = IllustratedMessage.MEDIA.BASE;
556
+ } else if (iWidth <= IllustratedMessage.BREAK_POINTS.SPOT || (iHeight <= IllustratedMessage.BREAK_POINTS_HEIGHT.SPOT && bVertical)) {
557
+ sNewMedia = IllustratedMessage.MEDIA.SPOT;
558
+ } else if (iWidth <= IllustratedMessage.BREAK_POINTS.DIALOG || (iHeight <= IllustratedMessage.BREAK_POINTS_HEIGHT.DIALOG && bVertical)) {
559
+ sNewMedia = IllustratedMessage.MEDIA.DIALOG;
531
560
  } else {
532
- this._updateMediaStyle(IllustratedMessage.MEDIA.SCENE);
561
+ sNewMedia = IllustratedMessage.MEDIA.SCENE;
533
562
  }
563
+
564
+ this._updateMediaStyle(sNewMedia);
565
+ this._updateSymbol(sNewMedia);
534
566
  };
535
567
 
536
568
  /**
537
- * It puts the appropriate classes on the control and updates illustration's symbol based on the current media size.
569
+ * It puts the appropriate classes on the control based on the current media size.
538
570
  * @param {string} sCurrentMedia
539
571
  * @private
540
572
  */
541
573
  IllustratedMessage.prototype._updateMediaStyle = function (sCurrentMedia) {
574
+ if (this._sLastKnownMedia !== sCurrentMedia) {
575
+ this._sLastKnownMedia = sCurrentMedia;
576
+ } else {
577
+ return; // No need to iterate over the media classes if the media is the same as the one previously used
578
+ }
542
579
  Object.keys(IllustratedMessage.MEDIA).forEach(function (sMedia) {
543
- var bEnable = sCurrentMedia === IllustratedMessage.MEDIA[sMedia],
544
- sIdMedia = sMedia.charAt(0) + sMedia.slice(1).toLowerCase();
580
+ var bEnable = sCurrentMedia === IllustratedMessage.MEDIA[sMedia];
545
581
  this.toggleStyleClass(IllustratedMessage.MEDIA[sMedia], bEnable);
546
- if (bEnable && sCurrentMedia !== IllustratedMessage.MEDIA.BASE) { // No need to require a resource for BASE illustrationSize, since there is none
547
- this._getIllustration().setSet(this._sIllustrationSet, true)
548
- .setMedia(sIdMedia, true)
549
- .setType(this._sIllustrationType);
550
- }
551
582
  }, this);
552
583
  };
553
584
 
585
+ /**
586
+ * Updates illustration's symbol based on the current media size.
587
+ * @param {string} sCurrentMedia
588
+ * @private
589
+ */
590
+ IllustratedMessage.prototype._updateSymbol = function (sCurrentMedia) {
591
+ var sIdMedia = sCurrentMedia.substring(sCurrentMedia.indexOf('-') + 1);
592
+
593
+ if (sCurrentMedia !== IllustratedMessage.MEDIA.BASE) { // No need to require a resource for BASE illustrationSize, since there is none
594
+ this._getIllustration().setSet(this._sIllustrationSet, true)
595
+ .setMedia(sIdMedia, true)
596
+ .setType(this._sIllustrationType);
597
+ }
598
+ };
599
+
554
600
  /**
555
601
  * ATTACH/DETACH HANDLERS
556
602
  */
@@ -634,6 +680,33 @@ sap.ui.define([
634
680
  };
635
681
  };
636
682
 
683
+ IllustratedMessage.prototype.addIllustrationAriaLabelledBy = function(sID) {
684
+ this.addAssociation("ariaLabelledBy", sID, true);
685
+
686
+ var oIllustratedMessageIllustration = this._getIllustration();
687
+ oIllustratedMessageIllustration.addAriaLabelledBy(sID);
688
+
689
+ return this;
690
+ };
691
+
692
+ IllustratedMessage.prototype.removeIllustrationAriaLabelledBy = function(sID) {
693
+ this.removeAssociation("ariaLabelledBy", sID, true);
694
+
695
+ var oIllustratedMessageIllustration = this._getIllustration();
696
+ oIllustratedMessageIllustration.removeAriaLabelledBy(sID);
697
+
698
+ return this;
699
+ };
700
+
701
+ IllustratedMessage.prototype.removeAllAriaLabelledBy = function(sID) {
702
+ this.removeAssociation("ariaLabelledBy", sID, true);
703
+
704
+ var oIllustratedMessageIllustration = this._getIllustration();
705
+ oIllustratedMessageIllustration.removeAllAriaLabelledBy(sID);
706
+
707
+ return this;
708
+ };
709
+
637
710
 
638
711
  return IllustratedMessage;
639
712
 
@@ -23,26 +23,30 @@ sap.ui.define([], function () {
23
23
  */
24
24
  IllustratedMessageRenderer.render = function (oRm, oIllustratedMessage) {
25
25
  var oIllustratedMessageIllustration = oIllustratedMessage._getIllustration(),
26
- oIllustratedMessageTitle = oIllustratedMessage._getTitle(),
27
- oIllustratedMessageDescription = oIllustratedMessage._getDescription(),
28
- oIllustratedMessageAdditionalContent = oIllustratedMessage.getAdditionalContent();
26
+ sIllustratedMessageTitle = oIllustratedMessage._getTitle(),
27
+ sIllustratedMessageDescription = oIllustratedMessage._getDescription(),
28
+ aIllustratedMessageAdditionalContent = oIllustratedMessage.getAdditionalContent(),
29
+ bIllustratedMessageEnableVerticalResponsiveness = oIllustratedMessage.getEnableVerticalResponsiveness();
29
30
 
30
31
  // IllustratedMessage's Root DOM Element.
31
32
  oRm.openStart("figure", oIllustratedMessage);
32
33
  oRm.class("sapMIllustratedMessage");
34
+ if (bIllustratedMessageEnableVerticalResponsiveness) {
35
+ oRm.class("sapMIllustratedMessageScalable");
36
+ }
33
37
  oRm.openEnd();
34
38
 
35
39
  oRm.renderControl(oIllustratedMessageIllustration);
36
40
 
37
41
  oRm.openStart("figcaption").openEnd();
38
- oRm.renderControl(oIllustratedMessageTitle);
39
- oRm.renderControl(oIllustratedMessageDescription.addStyleClass("sapMIllustratedMessageDescription"));
42
+ oRm.renderControl(sIllustratedMessageTitle);
43
+ oRm.renderControl(sIllustratedMessageDescription.addStyleClass("sapMIllustratedMessageDescription"));
40
44
  oRm.close("figcaption");
41
45
 
42
46
  oRm.openStart("div");
43
47
  oRm.class("sapMIllustratedMessageAdditionalContent"); // helper class in order to hide the additional content when on Base breakpoint
44
48
  oRm.openEnd();
45
- oIllustratedMessageAdditionalContent.forEach(function (oControl) {
49
+ aIllustratedMessageAdditionalContent.forEach(function (oControl) {
46
50
  oRm.renderControl(oControl);
47
51
  });
48
52
  oRm.close("div");
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.core.Control
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.103.1
35
+ * @version 1.106.0
36
36
  *
37
37
  * @constructor
38
38
  * @public
@@ -65,6 +65,13 @@ sap.ui.define([
65
65
  */
66
66
  type: {type: "string", defaultValue: null}
67
67
  },
68
+ associations : {
69
+ /**
70
+ * Association to controls / IDs which label those controls (see WAI-ARIA attribute aria-labelledBy).
71
+ * @since 1.106.0
72
+ */
73
+ ariaLabelledBy: {type : "sap.ui.core.Control", multiple : true, singularName : "ariaLabelledBy"}
74
+ },
68
75
  dnd: { draggable: true, droppable: false }
69
76
  }
70
77
  });
@@ -211,6 +211,7 @@ sap.ui.define([
211
211
  if (oDOMPool === null) {
212
212
  oDOMPool = document.createElement("div");
213
213
  oDOMPool.id = SAP_ILLUSTRATION_POOL_ID;
214
+ oDOMPool.setAttribute("aria-hidden", "true");
214
215
 
215
216
  Core.getStaticAreaRef().appendChild(oDOMPool);
216
217
 
@@ -4,7 +4,7 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- sap.ui.define(["sap/ui/Device"], function (Device) {
7
+ sap.ui.define([], function () {
8
8
  "use strict";
9
9
 
10
10
  /**
@@ -26,6 +26,7 @@ sap.ui.define(["sap/ui/Device"], function (Device) {
26
26
 
27
27
  oRm.openStart("svg", oIllustration);
28
28
  oRm.class("sapMIllustration");
29
+ oRm.accessibilityState(oIllustration);
29
30
  oRm.openEnd();
30
31
 
31
32
  oRm.openStart("use");
@@ -9,13 +9,14 @@ sap.ui.define([
9
9
  './library',
10
10
  'sap/ui/core/Control',
11
11
  'sap/ui/base/DataType',
12
+ 'sap/base/security/URLListValidator',
12
13
  './ImageRenderer',
13
14
  "sap/ui/events/KeyCodes",
14
15
  "sap/ui/thirdparty/jquery",
15
16
  "sap/base/security/encodeCSS",
16
17
  "sap/ui/core/library"
17
18
  ],
18
- function(library, Control, DataType, ImageRenderer, KeyCodes, jQuery, encodeCSS, coreLibrary) {
19
+ function(library, Control, DataType, URLListValidator, ImageRenderer, KeyCodes, jQuery, encodeCSS, coreLibrary) {
19
20
  "use strict";
20
21
 
21
22
 
@@ -57,7 +58,7 @@ sap.ui.define([
57
58
  * @implements sap.ui.core.IFormContent
58
59
  *
59
60
  * @author SAP SE
60
- * @version 1.103.1
61
+ * @version 1.106.0
61
62
  *
62
63
  * @public
63
64
  * @alias sap.m.Image
@@ -282,6 +283,10 @@ sap.ui.define([
282
283
  return ratio;
283
284
  }());
284
285
 
286
+ Image.prototype.init = function () {
287
+ this._oSvgCachedData = {};
288
+ };
289
+
285
290
  /**
286
291
  * Function is called when image is loaded successfully.
287
292
  *
@@ -388,7 +393,7 @@ sap.ui.define([
388
393
  /**
389
394
  * Sets the <code>detailBox</code> aggregation.
390
395
  * @param {sap.m.LightBox|undefined} oLightBox - Instance of the <code>LightBox</code> control or undefined
391
- * @returns {object} <code>this</code> for chaining
396
+ * @returns {this} <code>this</code> for chaining
392
397
  * @override
393
398
  * @public
394
399
  */
@@ -418,6 +423,17 @@ sap.ui.define([
418
423
  return this.setAggregation("detailBox", oLightBox);
419
424
  };
420
425
 
426
+ Image.prototype.setSrc = function (sSrc) {
427
+ var oPreviousSrc = this.getSrc(),
428
+ oResult = this.setProperty("src", sSrc);
429
+
430
+ if (sSrc && oPreviousSrc !== this.getSrc() && this.getMode() === ImageMode.InlineSvg) {
431
+ sSrc.endsWith("svg") && this._loadSvg();
432
+ }
433
+
434
+ return oResult;
435
+ };
436
+
421
437
  /*
422
438
  * @override
423
439
  */
@@ -450,6 +466,10 @@ sap.ui.define([
450
466
  var $DomNode = this.getDetailBox() ? this.$().find(".sapMImg") : this.$();
451
467
  $DomNode.off("load").off("error");
452
468
  }
469
+
470
+ if (this.getMode() === ImageMode.InlineSvg) {
471
+ this._loadSvg();
472
+ }
453
473
  };
454
474
 
455
475
  /**
@@ -501,6 +521,8 @@ sap.ui.define([
501
521
  if (this._fnLightBoxOpen) {
502
522
  this._fnLightBoxOpen = null;
503
523
  }
524
+
525
+ this._oSvgCachedData = null;
504
526
  };
505
527
 
506
528
  /**
@@ -600,6 +622,54 @@ sap.ui.define([
600
622
  oEvent.preventDefault();
601
623
  };
602
624
 
625
+ /**
626
+ * Loads "svg"
627
+ * @private
628
+ */
629
+ Image.prototype._loadSvg = function() {
630
+ var that = this,
631
+ sSrc = this.getSrc(),
632
+ oSvg;
633
+
634
+ if (!this._oSvgCachedData[sSrc]) {
635
+ that._oSvgCachedData[sSrc] = {};
636
+ jQuery.get(this.getSrc(), function(data) {
637
+ oSvg = jQuery(data).find('svg')[0];
638
+
639
+ if (oSvg) {
640
+ sap.ui.require(["sap/m/_thirdparty/purify"],
641
+ function(DOMPurify) {
642
+ that._oSvgCachedData[sSrc].oSvgDomRef = DOMPurify.sanitize(oSvg, {RETURN_DOM: true});
643
+ that.invalidate();
644
+ });
645
+ }
646
+ })
647
+ .done(function() {
648
+ that.fireLoad();
649
+ })
650
+ .fail(function() {
651
+ that.fireError();
652
+ });
653
+ }
654
+ };
655
+
656
+ Image.prototype._getSvgCachedData = function () {
657
+ var sSrc = this.getSrc();
658
+
659
+ if (this._oSvgCachedData[sSrc]
660
+ && typeof this._oSvgCachedData[sSrc].oSvgDomRef === "object") {
661
+ return this._oSvgCachedData[sSrc].oSvgDomRef;
662
+ }
663
+ };
664
+
665
+ /**
666
+ * Checks if href is valid
667
+ * @private
668
+ */
669
+ Image.prototype._isHrefValid = function (sURL) {
670
+ return URLListValidator.validate(sURL);
671
+ };
672
+
603
673
  /**
604
674
  * Update the source image either on the output DOM element (when in sap.m.ImageMode.Image mode) or on the window.Image object (when in sap.m.ImageMode.Background mode)
605
675
  * @private
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @extends sap.ui.core.Control
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.103.1
36
+ * @version 1.106.0
37
37
  * @since 1.38
38
38
  *
39
39
  * @public
@@ -42,6 +42,8 @@ sap.ui.define(['sap/m/library', "sap/base/security/encodeCSS", "sap/ui/core/libr
42
42
  aDescribedBy = oImage.getAriaDescribedBy(),
43
43
  aDetails = oImage.getAriaDetails(),
44
44
  bIsImageMode = sMode === ImageMode.Image,
45
+ bIsSvgMode = sMode === ImageMode.InlineSvg,
46
+ bIsBackGroundMode = sMode === ImageMode.Background,
45
47
  bLazyLoading = oImage.getLazyLoading(),
46
48
  sAriaHasPopup = oImage.getAriaHasPopup();
47
49
 
@@ -61,6 +63,8 @@ sap.ui.define(['sap/m/library', "sap/base/security/encodeCSS", "sap/ui/core/libr
61
63
  oRm.attr("loading", "lazy");
62
64
  }
63
65
 
66
+ } else if (bIsSvgMode) {
67
+ oRm.openStart("div", oImage);
64
68
  } else {
65
69
  oRm.openStart("span", !oLightBox ? oImage : oImage.getId() + "-inner");
66
70
  }
@@ -84,7 +88,7 @@ sap.ui.define(['sap/m/library', "sap/base/security/encodeCSS", "sap/ui/core/libr
84
88
 
85
89
  if (bIsImageMode) {
86
90
  oRm.attr("src", oImage._getDensityAwareSrc());
87
- } else {
91
+ } else if (bIsBackGroundMode) {
88
92
  // preload the image with a window.Image instance. The source uri is set to the output DOM node via CSS style 'background-image' after the source image is loaded (in onload function)
89
93
  oImage._preLoadImage(oImage._getDensityAwareSrc());
90
94
  if (oImage._isValidBackgroundSizeValue(oImage.getBackgroundSize())) {
@@ -141,12 +145,72 @@ sap.ui.define(['sap/m/library', "sap/base/security/encodeCSS", "sap/ui/core/libr
141
145
  oRm.style("width", oImage.getWidth());
142
146
  oRm.style("height", oImage.getHeight());
143
147
 
144
- bIsImageMode ? oRm.voidEnd() : oRm.openEnd().close("span"); // close the <img>/<span> element
148
+ if (bIsImageMode) {
149
+ oRm.voidEnd();
150
+ } else if (bIsSvgMode) {
151
+ oRm.openEnd();
152
+ this._renderSvg(oRm, oImage);
153
+ oRm.close("div");
154
+ } else {
155
+ oRm.openEnd().close("span");
156
+ }
145
157
 
146
158
  if (oLightBox) {
147
159
  oRm.close("span");
148
160
  }
149
161
  };
150
162
 
163
+ ImageRenderer._renderSvg = function(oRm, oImage) {
164
+ var oSvg = oImage._getSvgCachedData(),
165
+ oChildren;
166
+
167
+ if (!oSvg) {
168
+ return;
169
+ }
170
+
171
+ oChildren = oSvg.children;
172
+ this._renderSvgChildren(oRm, oChildren, oImage);
173
+ };
174
+
175
+ ImageRenderer._renderSvgAttributes = function (oRm, aAttributes, oImage) {
176
+ for (var i = 0; i < aAttributes.length; i++) {
177
+ var oAttr = aAttributes[i],
178
+ iNamespaceIndex = oAttr.name.indexOf(":"),
179
+ sAttributeName = iNamespaceIndex < 0 ? oAttr.name : oAttr.name.slice(iNamespaceIndex + 1);
180
+
181
+ if (sAttributeName === "href" && !oImage._isHrefValid(oAttr.value)) {
182
+ continue;
183
+ }
184
+
185
+ oRm.attr(sAttributeName, oAttr.value);
186
+ }
187
+ };
188
+
189
+ ImageRenderer._renderSvgChildren = function (oRm, oChildren, oImage) {
190
+ var aChildren = [].slice.call(oChildren).filter(function (oChild) {
191
+ return (oChild.nodeType !== Node.TEXT_NODE)
192
+ // Do not return empty textContent -> line spaces/endings
193
+ || (oChild.nodeType === Node.TEXT_NODE && oChild.textContent.trim() !== "");
194
+ });
195
+
196
+ aChildren.forEach(function (oChild) {
197
+ var sTagName = oChild.tagName,
198
+ aAttributes = oChild.attributes,
199
+ oChildren = oChild.childNodes;
200
+
201
+ if (oChild.nodeType !== Node.TEXT_NODE) {
202
+ oRm.openStart(sTagName);
203
+ this._renderSvgAttributes(oRm, aAttributes, oImage);
204
+ oRm.openEnd();
205
+
206
+ oChildren.length && this._renderSvgChildren(oRm, oChildren, oImage);
207
+ oRm.close(sTagName);
208
+
209
+ } else {
210
+ oChild.textContent.length && oRm.text(oChild.textContent.trim());
211
+ }
212
+ }, this);
213
+ };
214
+
151
215
  return ImageRenderer;
152
216
  }, /* bExport= */ true);
@@ -8,6 +8,9 @@
8
8
  sap.ui.define([
9
9
  './InputBase',
10
10
  'sap/ui/core/Item',
11
+ 'sap/ui/core/Core',
12
+ 'sap/ui/core/LabelEnablement',
13
+ 'sap/ui/core/AccessKeysEnablement',
11
14
  './ColumnListItem',
12
15
  './GroupHeaderListItem',
13
16
  'sap/ui/core/SeparatorItem',
@@ -40,6 +43,9 @@ sap.ui.define([
40
43
  function(
41
44
  InputBase,
42
45
  Item,
46
+ Core,
47
+ LabelEnablement,
48
+ AccessKeysEnablement,
43
49
  ColumnListItem,
44
50
  GroupHeaderListItem,
45
51
  SeparatorItem,
@@ -149,8 +155,9 @@ function(
149
155
  * </ul>
150
156
  *
151
157
  * @extends sap.m.InputBase
158
+ * @implements sap.ui.core.IAccessKeySupport
152
159
  * @author SAP SE
153
- * @version 1.103.1
160
+ * @version 1.106.0
154
161
  *
155
162
  * @constructor
156
163
  * @public
@@ -159,7 +166,9 @@ function(
159
166
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
160
167
  */
161
168
  var Input = InputBase.extend("sap.m.Input", /** @lends sap.m.Input.prototype */ { metadata : {
162
-
169
+ interfaces : [
170
+ "sap.ui.core.IAccessKeySupport"
171
+ ],
163
172
  library : "sap.m",
164
173
  properties : {
165
174
 
@@ -178,6 +187,8 @@ function(
178
187
  * Maximum number of characters. Value '0' means the feature is switched off.
179
188
  * This parameter is not compatible with the input type <code>sap.m.InputType.Number</code>.
180
189
  * If the input type is set to <code>Number</code>, the <code>maxLength</code> value is ignored.
190
+ * If the <code>maxLength</code> is set after there is already a longer value, this value will not get truncated.
191
+ * The <code>maxLength</code> property has effect only when the value is modified by user interaction.
181
192
  */
182
193
  maxLength : {type : "int", group : "Behavior", defaultValue : 0},
183
194
 
@@ -326,7 +337,23 @@ function(
326
337
  * Specifies whether to display separators in tabular suggestions.
327
338
  * @private
328
339
  */
329
- separateSuggestions: { type: "boolean", defaultValue: false, visibility: "hidden" }
340
+ separateSuggestions: { type: "boolean", defaultValue: false, visibility: "hidden" },
341
+
342
+ /**
343
+ * Indicates whether the access keys ref of the control should be highlighted.
344
+ * NOTE: this property is used only when access keys feature is turned on.
345
+ *
346
+ * @private
347
+ */
348
+ highlightAccKeysRef: { type: "boolean", defaultValue: false, visibility: "hidden" },
349
+
350
+ /**
351
+ * Indicates which keyboard key should be pressed to focus the access key ref
352
+ * NOTE: this property is used only when access keys feature is turned on.
353
+ *
354
+ * @private
355
+ */
356
+ accesskey: { type: "string", defaultValue: "", visibility: "hidden" }
330
357
  },
331
358
  defaultAggregation : "suggestionItems",
332
359
  aggregations : {
@@ -398,7 +425,7 @@ function(
398
425
  /**
399
426
  * Fired when the value of the input is changed by user interaction - each keystroke, delete, paste, etc.
400
427
  *
401
- * <b>Note:</b> Browsing autocomplete suggestions does not fires the event.
428
+ * <b>Note:</b> Browsing autocomplete suggestions does not fire the event.
402
429
  */
403
430
  liveChange : {
404
431
  parameters : {
@@ -588,6 +615,28 @@ function(
588
615
  // indicates whether input's popover has finished opening
589
616
  // we asume that after open its content has been rendered => we don't have the power user scenario
590
617
  this._bAfterOpenFinisihed = false;
618
+
619
+ AccessKeysEnablement.registerControl(this);
620
+ };
621
+
622
+ var setRefLabelsHighlightAccKeysRef = function (bHighlightAccKeysRef) {
623
+ var aRefLabels = LabelEnablement.getReferencingLabels(this);
624
+
625
+ aRefLabels.forEach(function(sLabelId) {
626
+ Core.byId(sLabelId).setProperty("highlightAccKeysRef", bHighlightAccKeysRef);
627
+ }, this);
628
+ };
629
+
630
+ Input.prototype.getAccessKeysFocusTarget = function () {
631
+ return this.getFocusDomRef();
632
+ };
633
+
634
+ Input.prototype.onAccKeysHighlightStart = function () {
635
+ setRefLabelsHighlightAccKeysRef.call(this, true);
636
+ };
637
+
638
+ Input.prototype.onAccKeysHighlightEnd = function () {
639
+ setRefLabelsHighlightAccKeysRef.call(this, false);
591
640
  };
592
641
 
593
642
  /**
@@ -1327,9 +1376,6 @@ function(
1327
1376
  * @returns {this} this Input instance for chaining.
1328
1377
  */
1329
1378
  Input.prototype._doSelect = function(iStart, iEnd) {
1330
- if (Device.support.touch) {
1331
- return this;
1332
- }
1333
1379
  var oDomRef = this._$input[0];
1334
1380
  if (oDomRef) {
1335
1381
  // if no Dom-Ref - no selection (Maybe popup closed)
@@ -2139,6 +2185,11 @@ function(
2139
2185
  Input.prototype._handleTypeAhead = function (oInput) {
2140
2186
  var sValue = this.getValue();
2141
2187
 
2188
+ // check if typeahead is already performed
2189
+ if ((oInput && oInput.getValue().toLowerCase()) === (this._sProposedItemText && this._sProposedItemText.toLowerCase())) {
2190
+ return;
2191
+ }
2192
+
2142
2193
  this._setTypedInValue(sValue);
2143
2194
  oInput._sProposedItemText = null;
2144
2195
 
@@ -2860,6 +2911,10 @@ function(
2860
2911
  this._updateSuggestionsPopoverValueState();
2861
2912
  }, this);
2862
2913
 
2914
+ oPopover.attachAfterOpen(function () {
2915
+ this._handleTypeAhead(this);
2916
+ }, this);
2917
+
2863
2918
  if (this.isMobileDevice()) {
2864
2919
  oPopover
2865
2920
  .attachBeforeClose(function () {