@openui5/sap.m 1.102.2 → 1.104.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 (460) hide show
  1. package/.eslintrc.json +2 -3
  2. package/.reuse/dep5 +17 -0
  3. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  4. package/THIRDPARTY.txt +35 -2
  5. package/package.json +4 -4
  6. package/src/sap/m/.library +1 -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 +4 -4
  10. package/src/sap/m/ActionSheet.js +1 -1
  11. package/src/sap/m/App.js +1 -1
  12. package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
  13. package/src/sap/m/Avatar.js +1 -1
  14. package/src/sap/m/Bar.js +11 -10
  15. package/src/sap/m/BarInPageEnabler.js +1 -1
  16. package/src/sap/m/Breadcrumbs.js +27 -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 +6 -5
  20. package/src/sap/m/Carousel.js +1 -1
  21. package/src/sap/m/CarouselLayout.js +1 -1
  22. package/src/sap/m/CheckBox.js +1 -1
  23. package/src/sap/m/ColorPalette.js +1 -1
  24. package/src/sap/m/ColorPalettePopover.js +1 -1
  25. package/src/sap/m/Column.js +1 -1
  26. package/src/sap/m/ColumnHeaderPopover.js +1 -1
  27. package/src/sap/m/ColumnListItem.js +1 -1
  28. package/src/sap/m/ColumnPopoverActionItem.js +1 -1
  29. package/src/sap/m/ColumnPopoverCustomItem.js +1 -1
  30. package/src/sap/m/ColumnPopoverItem.js +1 -1
  31. package/src/sap/m/ColumnPopoverSelectListItem.js +1 -1
  32. package/src/sap/m/ColumnPopoverSortItem.js +1 -1
  33. package/src/sap/m/ComboBox.js +1 -1
  34. package/src/sap/m/ComboBoxBase.js +7 -7
  35. package/src/sap/m/ComboBoxTextField.js +1 -1
  36. package/src/sap/m/CustomDynamicDateOption.js +1 -1
  37. package/src/sap/m/CustomListItem.js +1 -1
  38. package/src/sap/m/CustomTile.js +1 -1
  39. package/src/sap/m/CustomTreeItem.js +1 -1
  40. package/src/sap/m/DatePicker.js +15 -23
  41. package/src/sap/m/DateRangeSelection.js +48 -41
  42. package/src/sap/m/DateTimeField.js +87 -20
  43. package/src/sap/m/DateTimeInput.js +1 -1
  44. package/src/sap/m/DateTimePicker.js +54 -24
  45. package/src/sap/m/DateTimePickerRenderer.js +1 -1
  46. package/src/sap/m/Dialog.js +3 -10
  47. package/src/sap/m/DisplayListItem.js +1 -1
  48. package/src/sap/m/DraftIndicator.js +1 -1
  49. package/src/sap/m/DynamicDate.js +1 -1
  50. package/src/sap/m/DynamicDateFormat.js +31 -13
  51. package/src/sap/m/DynamicDateOption.js +6 -4
  52. package/src/sap/m/DynamicDateRange.js +20 -3
  53. package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
  54. package/src/sap/m/ExpandableText.js +1 -1
  55. package/src/sap/m/FacetFilter.js +29 -28
  56. package/src/sap/m/FacetFilterItem.js +1 -1
  57. package/src/sap/m/FacetFilterList.js +1 -1
  58. package/src/sap/m/FeedContent.js +1 -1
  59. package/src/sap/m/FeedInput.js +1 -1
  60. package/src/sap/m/FeedListItem.js +1 -1
  61. package/src/sap/m/FeedListItemAction.js +1 -1
  62. package/src/sap/m/Fiori20Adapter.js +2 -2
  63. package/src/sap/m/FlexBox.js +1 -1
  64. package/src/sap/m/FlexItemData.js +2 -2
  65. package/src/sap/m/FormattedText.js +1 -1
  66. package/src/sap/m/GenericTag.js +5 -5
  67. package/src/sap/m/GenericTile.js +11 -7
  68. package/src/sap/m/GenericTileLineModeRenderer.js +4 -5
  69. package/src/sap/m/GenericTileRenderer.js +18 -6
  70. package/src/sap/m/GroupHeaderListItem.js +1 -1
  71. package/src/sap/m/GrowingEnablement.js +59 -10
  72. package/src/sap/m/GrowingList.js +1 -1
  73. package/src/sap/m/HBox.js +1 -1
  74. package/src/sap/m/HeaderContainer.js +5 -24
  75. package/src/sap/m/HeaderContainerItemNavigator.js +1 -1
  76. package/src/sap/m/IconTabBar.js +2 -1
  77. package/src/sap/m/IconTabBarSelectList.js +1 -1
  78. package/src/sap/m/IconTabFilter.js +4 -4
  79. package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
  80. package/src/sap/m/IconTabHeader.js +14 -3
  81. package/src/sap/m/IconTabSeparator.js +1 -1
  82. package/src/sap/m/IllustratedMessage.js +63 -24
  83. package/src/sap/m/IllustratedMessageRenderer.js +10 -6
  84. package/src/sap/m/Illustration.js +1 -1
  85. package/src/sap/m/IllustrationPool.js +1 -0
  86. package/src/sap/m/Image.js +1 -1
  87. package/src/sap/m/ImageContent.js +1 -1
  88. package/src/sap/m/Input.js +2 -17
  89. package/src/sap/m/InputBase.js +12 -5
  90. package/src/sap/m/InputListItem.js +1 -1
  91. package/src/sap/m/InstanceManager.js +14 -19
  92. package/src/sap/m/Label.js +1 -1
  93. package/src/sap/m/LightBox.js +1 -1
  94. package/src/sap/m/LightBoxItem.js +1 -1
  95. package/src/sap/m/Link.js +41 -5
  96. package/src/sap/m/LinkRenderer.js +18 -10
  97. package/src/sap/m/List.js +1 -1
  98. package/src/sap/m/ListBase.js +4 -1
  99. package/src/sap/m/ListItemBase.js +10 -2
  100. package/src/sap/m/MaskEnabler.js +52 -2
  101. package/src/sap/m/MaskInput.js +23 -1
  102. package/src/sap/m/MaskInputRenderer.js +10 -0
  103. package/src/sap/m/MaskInputRule.js +1 -1
  104. package/src/sap/m/Menu.js +1 -1
  105. package/src/sap/m/MenuButton.js +2 -1
  106. package/src/sap/m/MenuItem.js +1 -1
  107. package/src/sap/m/MenuListItem.js +3 -3
  108. package/src/sap/m/MessageBox.js +1020 -908
  109. package/src/sap/m/MessageItem.js +1 -1
  110. package/src/sap/m/MessageListItem.js +1 -1
  111. package/src/sap/m/MessagePage.js +1 -1
  112. package/src/sap/m/MessagePopover.js +4 -1
  113. package/src/sap/m/MessagePopoverItem.js +1 -1
  114. package/src/sap/m/MessageStrip.js +1 -1
  115. package/src/sap/m/MessageToast.js +1 -1
  116. package/src/sap/m/MessageView.js +1 -1
  117. package/src/sap/m/MultiComboBox.js +4 -4
  118. package/src/sap/m/MultiEditField.js +1 -1
  119. package/src/sap/m/MultiInput.js +8 -8
  120. package/src/sap/m/NavContainer.js +23 -19
  121. package/src/sap/m/NewsContent.js +1 -1
  122. package/src/sap/m/NotificationList.js +1 -1
  123. package/src/sap/m/NotificationListBase.js +1 -1
  124. package/src/sap/m/NotificationListGroup.js +1 -1
  125. package/src/sap/m/NotificationListItem.js +1 -1
  126. package/src/sap/m/NumericContent.js +1 -1
  127. package/src/sap/m/NumericInput.js +1 -1
  128. package/src/sap/m/ObjectAttribute.js +14 -1
  129. package/src/sap/m/ObjectAttributeRenderer.js +5 -4
  130. package/src/sap/m/ObjectHeader.js +4 -4
  131. package/src/sap/m/ObjectHeaderRenderer.js +11 -11
  132. package/src/sap/m/ObjectIdentifier.js +3 -3
  133. package/src/sap/m/ObjectListItem.js +1 -1
  134. package/src/sap/m/ObjectMarker.js +7 -4
  135. package/src/sap/m/ObjectNumber.js +1 -1
  136. package/src/sap/m/ObjectNumberRenderer.js +10 -3
  137. package/src/sap/m/ObjectStatus.js +1 -1
  138. package/src/sap/m/OverflowToolbar.js +35 -12
  139. package/src/sap/m/OverflowToolbarAssociativePopover.js +1 -1
  140. package/src/sap/m/OverflowToolbarAssociativePopoverControls.js +5 -0
  141. package/src/sap/m/OverflowToolbarButton.js +1 -1
  142. package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
  143. package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
  144. package/src/sap/m/P13nAnyFilterItem.js +1 -1
  145. package/src/sap/m/P13nColumnsItem.js +1 -1
  146. package/src/sap/m/P13nColumnsPanel.js +1 -1
  147. package/src/sap/m/P13nConditionPanel.js +24 -24
  148. package/src/sap/m/P13nDialog.js +3 -1
  149. package/src/sap/m/P13nDimMeasureItem.js +1 -1
  150. package/src/sap/m/P13nDimMeasurePanel.js +1 -1
  151. package/src/sap/m/P13nFilterItem.js +1 -1
  152. package/src/sap/m/P13nFilterPanel.js +1 -1
  153. package/src/sap/m/P13nGroupItem.js +1 -1
  154. package/src/sap/m/P13nGroupPanel.js +1 -1
  155. package/src/sap/m/P13nItem.js +1 -1
  156. package/src/sap/m/P13nPanel.js +1 -1
  157. package/src/sap/m/P13nSelectionItem.js +1 -1
  158. package/src/sap/m/P13nSelectionPanel.js +1 -1
  159. package/src/sap/m/P13nSortItem.js +1 -1
  160. package/src/sap/m/P13nSortPanel.js +1 -1
  161. package/src/sap/m/PDFViewer.js +1 -1
  162. package/src/sap/m/PDFViewerRenderer.js +1 -0
  163. package/src/sap/m/Page.js +1 -1
  164. package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
  165. package/src/sap/m/PagingButton.js +1 -1
  166. package/src/sap/m/Panel.js +1 -1
  167. package/src/sap/m/PlanningCalendar.js +1 -1
  168. package/src/sap/m/PlanningCalendarHeader.js +2 -2
  169. package/src/sap/m/PlanningCalendarLegend.js +1 -1
  170. package/src/sap/m/PlanningCalendarRow.js +1 -1
  171. package/src/sap/m/PlanningCalendarView.js +1 -1
  172. package/src/sap/m/Popover.js +5 -5
  173. package/src/sap/m/PopoverRenderer.js +2 -2
  174. package/src/sap/m/ProgressIndicator.js +15 -29
  175. package/src/sap/m/ProgressIndicatorRenderer.js +12 -3
  176. package/src/sap/m/PullToRefresh.js +1 -1
  177. package/src/sap/m/QuickView.js +2 -2
  178. package/src/sap/m/QuickViewBase.js +1 -1
  179. package/src/sap/m/QuickViewCard.js +1 -1
  180. package/src/sap/m/QuickViewGroup.js +1 -1
  181. package/src/sap/m/QuickViewGroupElement.js +2 -1
  182. package/src/sap/m/QuickViewPage.js +1 -1
  183. package/src/sap/m/RadioButton.js +1 -1
  184. package/src/sap/m/RadioButtonGroup.js +2 -2
  185. package/src/sap/m/RangeSlider.js +75 -55
  186. package/src/sap/m/RangeSliderRenderer.js +34 -2
  187. package/src/sap/m/RatingIndicator.js +8 -1
  188. package/src/sap/m/RatingIndicatorRenderer.js +13 -4
  189. package/src/sap/m/ResponsivePopover.js +7 -6
  190. package/src/sap/m/ResponsiveScale.js +1 -1
  191. package/src/sap/m/ScrollBar.js +1 -1
  192. package/src/sap/m/ScrollContainer.js +1 -1
  193. package/src/sap/m/SearchField.js +1 -1
  194. package/src/sap/m/SegmentedButton.js +1 -1
  195. package/src/sap/m/SegmentedButtonItem.js +1 -1
  196. package/src/sap/m/Select.js +16 -18
  197. package/src/sap/m/SelectDialog.js +2 -2
  198. package/src/sap/m/SelectDialogBase.js +1 -1
  199. package/src/sap/m/SelectList.js +8 -8
  200. package/src/sap/m/SelectListRenderer.js +2 -2
  201. package/src/sap/m/SelectRenderer.js +37 -13
  202. package/src/sap/m/SelectionDetails.js +1 -1
  203. package/src/sap/m/SelectionDetailsFacade.js +2 -2
  204. package/src/sap/m/SelectionDetailsItem.js +1 -1
  205. package/src/sap/m/SelectionDetailsItemLine.js +1 -1
  206. package/src/sap/m/Shell.js +1 -1
  207. package/src/sap/m/SimpleFixFlex.js +5 -6
  208. package/src/sap/m/SimpleFixFlexRenderer.js +1 -0
  209. package/src/sap/m/SinglePlanningCalendar.js +1 -1
  210. package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
  211. package/src/sap/m/SinglePlanningCalendarGrid.js +1 -1
  212. package/src/sap/m/SinglePlanningCalendarMonthGrid.js +1 -1
  213. package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
  214. package/src/sap/m/SinglePlanningCalendarView.js +1 -1
  215. package/src/sap/m/SinglePlanningCalendarWeekView.js +1 -1
  216. package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
  217. package/src/sap/m/SlideTile.js +1 -1
  218. package/src/sap/m/Slider.js +14 -5
  219. package/src/sap/m/SliderRenderer.js +27 -2
  220. package/src/sap/m/SliderTooltip.js +1 -1
  221. package/src/sap/m/SliderTooltipBase.js +1 -1
  222. package/src/sap/m/SliderTooltipContainer.js +3 -3
  223. package/src/sap/m/SplitApp.js +1 -1
  224. package/src/sap/m/SplitButton.js +1 -1
  225. package/src/sap/m/SplitContainer.js +3 -11
  226. package/src/sap/m/StandardDynamicDateOption.js +1 -1
  227. package/src/sap/m/StandardListItem.js +1 -1
  228. package/src/sap/m/StandardTile.js +1 -1
  229. package/src/sap/m/StandardTreeItem.js +1 -1
  230. package/src/sap/m/StepInput.js +1 -1
  231. package/src/sap/m/SuggestionItem.js +1 -1
  232. package/src/sap/m/SuggestionsPopover.js +1 -1
  233. package/src/sap/m/Switch.js +1 -1
  234. package/src/sap/m/TabContainer.js +3 -2
  235. package/src/sap/m/TabContainerItem.js +1 -1
  236. package/src/sap/m/TabStrip.js +2 -2
  237. package/src/sap/m/TabStripItem.js +1 -1
  238. package/src/sap/m/Table.js +1 -1
  239. package/src/sap/m/TablePersoController.js +2 -2
  240. package/src/sap/m/TablePersoDialog.js +2 -2
  241. package/src/sap/m/TablePersoProvider.js +2 -2
  242. package/src/sap/m/TableSelectDialog.js +2 -2
  243. package/src/sap/m/Text.js +2 -2
  244. package/src/sap/m/TextArea.js +4 -3
  245. package/src/sap/m/TextRenderer.js +2 -0
  246. package/src/sap/m/Tile.js +1 -1
  247. package/src/sap/m/TileContainer.js +6 -6
  248. package/src/sap/m/TileContent.js +9 -9
  249. package/src/sap/m/TileContentRenderer.js +1 -1
  250. package/src/sap/m/TimePicker.js +73 -18
  251. package/src/sap/m/TimePickerClock.js +1 -1
  252. package/src/sap/m/TimePickerClocks.js +5 -3
  253. package/src/sap/m/TimePickerClocksRenderer.js +1 -0
  254. package/src/sap/m/TimePickerInputs.js +1 -1
  255. package/src/sap/m/TimePickerInternals.js +1 -1
  256. package/src/sap/m/TimePickerSlider.js +1 -1
  257. package/src/sap/m/TimePickerSliders.js +1 -1
  258. package/src/sap/m/Title.js +2 -2
  259. package/src/sap/m/TitlePropagationSupport.js +1 -1
  260. package/src/sap/m/ToggleButton.js +2 -2
  261. package/src/sap/m/Token.js +1 -1
  262. package/src/sap/m/Tokenizer.js +1 -1
  263. package/src/sap/m/Toolbar.js +1 -1
  264. package/src/sap/m/ToolbarLayoutData.js +6 -2
  265. package/src/sap/m/ToolbarSeparator.js +1 -1
  266. package/src/sap/m/ToolbarSpacer.js +1 -1
  267. package/src/sap/m/Tree.js +1 -1
  268. package/src/sap/m/TreeItemBase.js +1 -1
  269. package/src/sap/m/UploadCollection.js +6 -6
  270. package/src/sap/m/UploadCollectionItem.js +1 -1
  271. package/src/sap/m/UploadCollectionParameter.js +1 -1
  272. package/src/sap/m/UploadCollectionToolbarPlaceholder.js +1 -1
  273. package/src/sap/m/VBox.js +1 -1
  274. package/src/sap/m/ValueStateHeader.js +1 -1
  275. package/src/sap/m/VariantItem.js +160 -0
  276. package/src/sap/m/VariantManagement.js +610 -547
  277. package/src/sap/m/ViewSettingsCustomItem.js +1 -1
  278. package/src/sap/m/ViewSettingsCustomTab.js +1 -1
  279. package/src/sap/m/ViewSettingsDialog.js +3 -3
  280. package/src/sap/m/ViewSettingsFilterItem.js +1 -1
  281. package/src/sap/m/ViewSettingsItem.js +1 -1
  282. package/src/sap/m/VisibleItem.js +1 -1
  283. package/src/sap/m/WheelSlider.js +1 -1
  284. package/src/sap/m/WheelSliderContainer.js +1 -1
  285. package/src/sap/m/Wizard.js +1 -1
  286. package/src/sap/m/WizardProgressNavigator.js +1 -1
  287. package/src/sap/m/WizardStep.js +1 -1
  288. package/src/sap/m/changeHandler/AddTableColumn.js +1 -1
  289. package/src/sap/m/changeHandler/ChangeLinkTarget.js +1 -1
  290. package/src/sap/m/changeHandler/CombineButtons.js +1 -1
  291. package/src/sap/m/changeHandler/MoveTableColumns.js +2 -2
  292. package/src/sap/m/changeHandler/SelectIconTabBarFilter.js +1 -1
  293. package/src/sap/m/changeHandler/SplitMenuButton.js +1 -1
  294. package/src/sap/m/designtime/VariantManagement.designtime.js +34 -24
  295. package/src/sap/m/designtime/messagebundle_de.properties +2 -2
  296. package/src/sap/m/flexibility/EngineFlex.js +48 -0
  297. package/src/sap/m/inputUtils/forwardItemProperties.js +4 -0
  298. package/src/sap/m/library.js +32 -9
  299. package/src/sap/m/messagebundle.properties +33 -2
  300. package/src/sap/m/messagebundle_ar.properties +27 -12
  301. package/src/sap/m/messagebundle_bg.properties +22 -7
  302. package/src/sap/m/messagebundle_ca.properties +22 -7
  303. package/src/sap/m/messagebundle_cs.properties +24 -9
  304. package/src/sap/m/messagebundle_cy.properties +22 -7
  305. package/src/sap/m/messagebundle_da.properties +22 -7
  306. package/src/sap/m/messagebundle_de.properties +23 -8
  307. package/src/sap/m/messagebundle_el.properties +23 -8
  308. package/src/sap/m/messagebundle_en.properties +22 -7
  309. package/src/sap/m/messagebundle_en_GB.properties +22 -7
  310. package/src/sap/m/messagebundle_en_US_sappsd.properties +22 -7
  311. package/src/sap/m/messagebundle_en_US_saprigi.properties +22 -7
  312. package/src/sap/m/messagebundle_en_US_saptrc.properties +22 -7
  313. package/src/sap/m/messagebundle_es.properties +22 -7
  314. package/src/sap/m/messagebundle_es_MX.properties +22 -7
  315. package/src/sap/m/messagebundle_et.properties +22 -7
  316. package/src/sap/m/messagebundle_fi.properties +22 -7
  317. package/src/sap/m/messagebundle_fr.properties +35 -20
  318. package/src/sap/m/messagebundle_fr_CA.properties +22 -7
  319. package/src/sap/m/messagebundle_hi.properties +22 -7
  320. package/src/sap/m/messagebundle_hr.properties +26 -11
  321. package/src/sap/m/messagebundle_hu.properties +24 -9
  322. package/src/sap/m/messagebundle_id.properties +22 -7
  323. package/src/sap/m/messagebundle_it.properties +29 -14
  324. package/src/sap/m/messagebundle_iw.properties +23 -8
  325. package/src/sap/m/messagebundle_ja.properties +22 -7
  326. package/src/sap/m/messagebundle_kk.properties +22 -7
  327. package/src/sap/m/messagebundle_ko.properties +39 -24
  328. package/src/sap/m/messagebundle_lt.properties +22 -7
  329. package/src/sap/m/messagebundle_lv.properties +22 -7
  330. package/src/sap/m/messagebundle_ms.properties +22 -7
  331. package/src/sap/m/messagebundle_nl.properties +36 -21
  332. package/src/sap/m/messagebundle_no.properties +27 -12
  333. package/src/sap/m/messagebundle_pl.properties +23 -8
  334. package/src/sap/m/messagebundle_pt.properties +27 -12
  335. package/src/sap/m/messagebundle_pt_PT.properties +22 -7
  336. package/src/sap/m/messagebundle_ro.properties +23 -8
  337. package/src/sap/m/messagebundle_ru.properties +22 -7
  338. package/src/sap/m/messagebundle_sh.properties +23 -8
  339. package/src/sap/m/messagebundle_sk.properties +22 -7
  340. package/src/sap/m/messagebundle_sl.properties +24 -9
  341. package/src/sap/m/messagebundle_sv.properties +22 -7
  342. package/src/sap/m/messagebundle_th.properties +45 -30
  343. package/src/sap/m/messagebundle_tr.properties +23 -8
  344. package/src/sap/m/messagebundle_uk.properties +23 -8
  345. package/src/sap/m/messagebundle_vi.properties +22 -7
  346. package/src/sap/m/messagebundle_zh_CN.properties +24 -9
  347. package/src/sap/m/messagebundle_zh_TW.properties +26 -11
  348. package/src/sap/m/p13n/AbstractContainer.js +5 -5
  349. package/src/sap/m/p13n/AbstractContainerItem.js +2 -2
  350. package/src/sap/m/p13n/BasePanel.js +4 -3
  351. package/src/sap/m/p13n/Container.js +1 -1
  352. package/src/sap/m/p13n/Engine.js +1253 -0
  353. package/src/sap/m/p13n/FlexUtil.js +162 -0
  354. package/src/sap/m/p13n/GroupController.js +145 -0
  355. package/src/sap/m/p13n/GroupPanel.js +10 -3
  356. package/src/sap/m/p13n/MetadataHelper.js +35 -0
  357. package/src/sap/m/p13n/PersistenceProvider.js +135 -0
  358. package/src/sap/m/p13n/Popup.js +46 -9
  359. package/src/sap/m/p13n/QueryPanel.js +1 -1
  360. package/src/sap/m/p13n/SelectionController.js +563 -0
  361. package/src/sap/m/p13n/SelectionPanel.js +13 -1
  362. package/src/sap/m/p13n/SortController.js +153 -0
  363. package/src/sap/m/p13n/SortPanel.js +11 -1
  364. package/src/sap/m/p13n/enum/PersistenceMode.js +43 -0
  365. package/src/sap/m/p13n/handler/xConfigHandler.js +166 -0
  366. package/src/sap/m/p13n/modification/FlexModificationHandler.js +90 -0
  367. package/src/sap/m/p13n/modification/LocalStorageModificationHandler.js +75 -0
  368. package/src/sap/m/p13n/modification/ModificationHandler.js +133 -0
  369. package/src/sap/m/p13n/modules/AdaptationProvider.js +67 -0
  370. package/src/sap/m/p13n/modules/DefaultProviderRegistry.js +124 -0
  371. package/src/sap/m/p13n/modules/StateHandlerRegistry.js +101 -0
  372. package/src/sap/m/p13n/modules/UIManager.js +230 -0
  373. package/src/sap/m/p13n/modules/xConfigAPI.js +286 -0
  374. package/src/sap/m/plugins/ColumnResizer.js +15 -1
  375. package/src/sap/m/plugins/DataStateIndicator.js +12 -4
  376. package/src/sap/m/plugins/PasteProvider.js +1 -1
  377. package/src/sap/m/plugins/PluginBase.js +2 -2
  378. package/src/sap/m/rules/DatePicker.support.js +4 -3
  379. package/src/sap/m/semantic/AddAction.js +1 -1
  380. package/src/sap/m/semantic/CancelAction.js +1 -1
  381. package/src/sap/m/semantic/DeleteAction.js +1 -1
  382. package/src/sap/m/semantic/DetailPage.js +1 -1
  383. package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
  384. package/src/sap/m/semantic/EditAction.js +1 -1
  385. package/src/sap/m/semantic/FavoriteAction.js +1 -1
  386. package/src/sap/m/semantic/FilterAction.js +1 -1
  387. package/src/sap/m/semantic/FilterSelect.js +1 -1
  388. package/src/sap/m/semantic/FlagAction.js +1 -1
  389. package/src/sap/m/semantic/ForwardAction.js +1 -1
  390. package/src/sap/m/semantic/FullscreenPage.js +1 -1
  391. package/src/sap/m/semantic/GroupAction.js +1 -1
  392. package/src/sap/m/semantic/GroupSelect.js +1 -1
  393. package/src/sap/m/semantic/MainAction.js +1 -1
  394. package/src/sap/m/semantic/MasterPage.js +1 -1
  395. package/src/sap/m/semantic/MessagesIndicator.js +1 -1
  396. package/src/sap/m/semantic/MultiSelectAction.js +1 -1
  397. package/src/sap/m/semantic/NegativeAction.js +1 -1
  398. package/src/sap/m/semantic/OpenInAction.js +1 -1
  399. package/src/sap/m/semantic/PositiveAction.js +1 -1
  400. package/src/sap/m/semantic/PrintAction.js +1 -1
  401. package/src/sap/m/semantic/SaveAction.js +1 -1
  402. package/src/sap/m/semantic/Segment.js +1 -1
  403. package/src/sap/m/semantic/SegmentedContainer.js +1 -1
  404. package/src/sap/m/semantic/SemanticButton.js +1 -1
  405. package/src/sap/m/semantic/SemanticConfiguration.js +1 -1
  406. package/src/sap/m/semantic/SemanticControl.js +1 -1
  407. package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +3 -3
  408. package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +3 -3
  409. package/src/sap/m/semantic/SemanticPage.js +1 -1
  410. package/src/sap/m/semantic/SemanticSelect.js +1 -1
  411. package/src/sap/m/semantic/SemanticToggleButton.js +1 -1
  412. package/src/sap/m/semantic/SendEmailAction.js +1 -1
  413. package/src/sap/m/semantic/SendMessageAction.js +1 -1
  414. package/src/sap/m/semantic/ShareInJamAction.js +1 -1
  415. package/src/sap/m/semantic/ShareMenu.js +1 -1
  416. package/src/sap/m/semantic/ShareMenuPage.js +1 -1
  417. package/src/sap/m/semantic/SortAction.js +1 -1
  418. package/src/sap/m/semantic/SortSelect.js +1 -1
  419. package/src/sap/m/table/Util.js +8 -3
  420. package/src/sap/m/table/columnmenu/ActionItem.js +1 -1
  421. package/src/sap/m/table/columnmenu/Entry.js +1 -1
  422. package/src/sap/m/table/columnmenu/Item.js +1 -1
  423. package/src/sap/m/table/columnmenu/ItemBase.js +1 -1
  424. package/src/sap/m/table/columnmenu/Menu.js +9 -3
  425. package/src/sap/m/table/columnmenu/QuickAction.js +1 -1
  426. package/src/sap/m/table/columnmenu/QuickActionBase.js +1 -1
  427. package/src/sap/m/table/columnmenu/QuickActionItem.js +1 -1
  428. package/src/sap/m/table/columnmenu/QuickGroup.js +21 -1
  429. package/src/sap/m/table/columnmenu/QuickGroupItem.js +13 -1
  430. package/src/sap/m/table/columnmenu/QuickSort.js +1 -1
  431. package/src/sap/m/table/columnmenu/QuickSortItem.js +1 -1
  432. package/src/sap/m/table/columnmenu/QuickTotal.js +21 -1
  433. package/src/sap/m/table/columnmenu/QuickTotalItem.js +13 -1
  434. package/src/sap/m/themes/base/ActionListItem.less +1 -1
  435. package/src/sap/m/themes/base/Breadcrumbs.less +17 -0
  436. package/src/sap/m/themes/base/CheckBox.less +2 -0
  437. package/src/sap/m/themes/base/Dialog.less +1 -2
  438. package/src/sap/m/themes/base/FeedContent.less +13 -5
  439. package/src/sap/m/themes/base/GenericTag.less +5 -3
  440. package/src/sap/m/themes/base/GenericTile.less +13 -9
  441. package/src/sap/m/themes/base/IllustratedMessage.less +7 -0
  442. package/src/sap/m/themes/base/LightBox.less +0 -12
  443. package/src/sap/m/themes/base/MessageBox.less +4 -3
  444. package/src/sap/m/themes/base/NumericContent.less +1 -1
  445. package/src/sap/m/themes/base/ObjectNumber.less +5 -0
  446. package/src/sap/m/themes/base/ObjectStatus.less +2 -1
  447. package/src/sap/m/themes/base/OverflowToolbarAssociativePopover.less +5 -1
  448. package/src/sap/m/themes/base/ProgressIndicator.less +0 -4
  449. package/src/sap/m/themes/base/Select.less +1 -3
  450. package/src/sap/m/themes/base/SelectList.less +0 -5
  451. package/src/sap/m/themes/base/SinglePlanningCalendarGrid.less +7 -0
  452. package/src/sap/m/themes/base/SlideTile.less +5 -4
  453. package/src/sap/m/themes/base/StandardListItem.less +1 -0
  454. package/src/sap/m/themes/base/Table.less +11 -1
  455. package/src/sap/m/themes/base/TimePickerClock.less +7 -0
  456. package/src/sap/m/themes/base/Title.less +1 -1
  457. package/src/sap/m/upload/UploadSet.js +98 -15
  458. package/src/sap/m/upload/UploadSetItem.js +16 -4
  459. package/src/sap/m/upload/UploadSetRenderer.js +8 -16
  460. package/src/sap/m/upload/UploadSetToolbarPlaceholder.js +2 -1
@@ -13,7 +13,9 @@ sap.ui.define([
13
13
  'sap/ui/base/ManagedObjectMetadata',
14
14
  'sap/ui/core/HTML',
15
15
  'sap/m/CustomListItem',
16
- 'sap/base/security/encodeXML'
16
+ 'sap/base/security/encodeXML',
17
+ 'sap/ui/core/Core',
18
+ "sap/ui/thirdparty/jquery"
17
19
  ],
18
20
  function(
19
21
  BaseObject,
@@ -23,7 +25,9 @@ sap.ui.define([
23
25
  ManagedObjectMetadata,
24
26
  HTML,
25
27
  CustomListItem,
26
- encodeXML
28
+ encodeXML,
29
+ Core,
30
+ jQuery
27
31
  ) {
28
32
  "use strict";
29
33
 
@@ -128,14 +132,43 @@ sap.ui.define([
128
132
  }
129
133
  },
130
134
 
135
+ onsapdown: function(oEvent) {
136
+ // Navigate from last item to growing trigger and vice versa via arrow keys
137
+ var oControl = this._oControl;
138
+ if (oControl._oItemNavigation && !oEvent.isMarked()) {
139
+ var aItemDomRefs = oControl._oItemNavigation.getItemDomRefs();
140
+ var sDir = oControl.getGrowingDirection();
141
+ if ((sDir != ListGrowingDirection.Upwards && oEvent.type == "sapdown" && oEvent.target === aItemDomRefs[aItemDomRefs.length - 1])
142
+ || (sDir == ListGrowingDirection.Upwards && oEvent.type == "sapup" && oEvent.target === aItemDomRefs[0])) {
143
+ var $Trigger = oControl.$("trigger");
144
+ $Trigger.trigger("focus");
145
+ oEvent.setMarked();
146
+ oEvent.stopImmediatePropagation(); // to prevent ItemNavigation
147
+ } else if ((sDir == ListGrowingDirection.Upwards && oEvent.type == "sapdown")
148
+ || (sDir != ListGrowingDirection.Upwards && oEvent.type == "sapup")
149
+ && oEvent.target === oControl.getDomRef("trigger")) {
150
+ jQuery(aItemDomRefs[oEvent.type == "sapdown" ? 0 : aItemDomRefs.length - 1]).trigger("focus");
151
+ oEvent.setMarked();
152
+ }
153
+ }
154
+ },
155
+
156
+ onsapup: function(oEvent) {
157
+ return this.onsapdown(oEvent);
158
+ },
159
+
131
160
  setTriggerText : function(sText) {
132
161
  this._oControl.$("triggerText").text(sText);
133
162
  },
134
163
 
135
164
  // reset paging on rebind
136
- reset : function() {
165
+ reset : function(bPageSizeOnly) {
137
166
  this._iLimit = 0;
138
167
 
168
+ if (bPageSizeOnly) {
169
+ return;
170
+ }
171
+
139
172
  // if factory function is used we do not activate the replace option of the extended change detection
140
173
  var oBindingInfo = this._oControl.getBindingInfo("items");
141
174
  this._oControl.oExtendedChangeDetectionConfig = (!oBindingInfo || !oBindingInfo.template) ? null : {replace: true};
@@ -225,7 +258,7 @@ sap.ui.define([
225
258
  var sTriggerID = this._oControl.getId() + "-trigger",
226
259
  sTriggerText = this._oControl.getGrowingTriggerText();
227
260
 
228
- sTriggerText = sTriggerText || sap.ui.getCore().getLibraryResourceBundle("sap.m").getText("LOAD_MORE_DATA");
261
+ sTriggerText = sTriggerText || Core.getLibraryResourceBundle("sap.m").getText("LOAD_MORE_DATA");
229
262
  this._oControl.addNavSection(sTriggerID);
230
263
 
231
264
  if (this._oTrigger) {
@@ -244,6 +277,7 @@ sap.ui.define([
244
277
  '<span class="sapMSLITitle" id="' + sTriggerID + 'Text">' + encodeXML(sTriggerText) + '</span>' +
245
278
  '</div>' +
246
279
  '<div class="sapMGrowingListDescription sapMSLIDescription" id="' + sTriggerID + 'Info"></div>' +
280
+ '<div class="sapUiInvisibleText" id="' + sTriggerID + 'Message"></div>' +
247
281
  '</div>'
248
282
  })
249
283
  }).setParent(this._oControl, null, true).attachPress(this.requestNewPage, this).addDelegate({
@@ -263,7 +297,8 @@ sap.ui.define([
263
297
  $oTrigger.attr({
264
298
  "tabindex": 0,
265
299
  "role": "button",
266
- "aria-labelledby": sTriggerID + "Text" + " " + sTriggerID + "Info"
300
+ "aria-labelledby": sTriggerID + "Text",
301
+ "aria-describedby": sTriggerID + "Message"
267
302
  });
268
303
  }
269
304
  }, this);
@@ -278,7 +313,14 @@ sap.ui.define([
278
313
 
279
314
  // returns the growing information to be shown at the growing button
280
315
  _getListItemInfo : function() {
281
- return ("[ " + this._iRenderedDataItems + " / " + NumberFormat.getFloatInstance().format(this._oControl.getMaxItemsCount()) + " ]");
316
+ var aCounts = this._getItemCounts();
317
+ var oFormat = NumberFormat.getFloatInstance();
318
+ return "[ " + oFormat.format(aCounts[0]) + " / " + oFormat.format(aCounts[1]) + " ]";
319
+ },
320
+
321
+ // returns the item counts for the growing information (current vs. total)
322
+ _getItemCounts : function() {
323
+ return [this._iRenderedDataItems, this._oControl.getMaxItemsCount()];
282
324
  },
283
325
 
284
326
  // returns the first sorters grouping path when available
@@ -452,7 +494,7 @@ sap.ui.define([
452
494
  }
453
495
  }
454
496
 
455
- this._oRM = this._oRM || sap.ui.getCore().createRenderManager();
497
+ this._oRM = this._oRM || Core.createRenderManager();
456
498
  for (var i = 0; i < iLength; i++) {
457
499
  this._oRM.renderControl(this._aChunk[i]);
458
500
  }
@@ -499,8 +541,11 @@ sap.ui.define([
499
541
 
500
542
  // destroy a single list item
501
543
  deleteListItem : function(iIndex) {
502
- this._oControl.getItems(true)[iIndex].destroy(true);
503
- this._iRenderedDataItems--;
544
+ var oItem = this._oControl.getItems(true)[iIndex];
545
+ if (oItem) {
546
+ this._oControl.getItems(true)[iIndex].destroy(true);
547
+ this._iRenderedDataItems--;
548
+ }
504
549
  },
505
550
 
506
551
  /**
@@ -592,7 +637,7 @@ sap.ui.define([
592
637
  if (!aContexts.length) {
593
638
  // no context, destroy list items
594
639
  this.destroyListItems();
595
- } else if (!oControl.getItemsContainerDomRef()) {
640
+ } else if (!aItems.length && !oControl.getItemsContainerDomRef()) {
596
641
  // no dom ref for compatibility reason start from scratch
597
642
  this.rebuildListItems(aContexts, oBindingInfo);
598
643
  } else if (!aDiff || !aItems.length && aDiff.length) {
@@ -742,6 +787,10 @@ sap.ui.define([
742
787
  } else {
743
788
  if (bLengthFinal) {
744
789
  oControl.$("triggerInfo").css("display", "block").text(this._getListItemInfo());
790
+ var aCounts = this._getItemCounts();
791
+ oControl.$("triggerMessage").text(Core.getLibraryResourceBundle("sap.m").getText("LOAD_MORE_DATA_ACC_WITH_COUNT", aCounts));
792
+ } else {
793
+ oControl.$("triggerMessage").text(Core.getLibraryResourceBundle("sap.m").getText("LOAD_MORE_DATA_ACC"));
745
794
  }
746
795
 
747
796
  oControl.$("triggerList").css("display", "");
@@ -22,7 +22,7 @@ sap.ui.define(['./List', './library', './GrowingListRenderer'],
22
22
  * @extends sap.m.List
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.102.2
25
+ * @version 1.104.0
26
26
  *
27
27
  * @constructor
28
28
  * @public
package/src/sap/m/HBox.js CHANGED
@@ -25,7 +25,7 @@ sap.ui.define(['./FlexBox', './library', './HBoxRenderer'],
25
25
  * @extends sap.m.FlexBox
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.102.2
28
+ * @version 1.104.0
29
29
  *
30
30
  * @constructor
31
31
  * @public
@@ -125,7 +125,7 @@ sap.ui.define([
125
125
  * @since 1.44.0
126
126
  *
127
127
  * @author SAP SE
128
- * @version 1.102.2
128
+ * @version 1.104.0
129
129
  *
130
130
  * @public
131
131
  * @alias sap.m.HeaderContainer
@@ -315,11 +315,11 @@ sap.ui.define([
315
315
  if (!this._isMobileView()) {
316
316
  this._oArrowPrev = new Icon({
317
317
  id: this.getId() + "-scrl-prev-button"
318
- }).addStyleClass("sapMHdrCntrBtn").addStyleClass("sapMHdrCntrLeft");
318
+ }).addStyleClass("sapMHdrCntrBtn").addStyleClass("sapMHdrCntrLeft").addStyleClass("sapMHdrCntrBtnIcon");
319
319
  this.setAggregation("_prevButton", this._oArrowPrev, true);
320
320
  this._oArrowNext = new Icon({
321
321
  id: this.getId() + "-scrl-next-button"
322
- }).addStyleClass("sapMHdrCntrBtn").addStyleClass("sapMHdrCntrRight");
322
+ }).addStyleClass("sapMHdrCntrBtn").addStyleClass("sapMHdrCntrRight").addStyleClass("sapMHdrCntrBtnIcon");
323
323
  this.setAggregation("_nextButton", this._oArrowNext, true);
324
324
  }
325
325
  }
@@ -338,9 +338,6 @@ sap.ui.define([
338
338
  this._oItemNavigation.attachEvent(ItemNavigation.Events.BorderReached, this._handleBorderReached, this);
339
339
  this._oItemNavigation.attachEvent(ItemNavigation.Events.AfterFocus, this._handleAfterFocus, this);
340
340
  this._oItemNavigation.attachEvent(ItemNavigation.Events.BeforeFocus, this._handleBeforeFocus, this);
341
- if (Device.browser.msie || Device.browser.edge) {
342
- this._oItemNavigation.attachEvent(ItemNavigation.Events.FocusAgain, this._handleFocusAgain, this);
343
- }
344
341
  }
345
342
  this._oItemNavigation.setRootDomRef(oFocusRef);
346
343
  this._oItemNavigation.setItemDomRefs(aDomRefs);
@@ -646,7 +643,7 @@ sap.ui.define([
646
643
  if (!this._bRtl) {
647
644
  iScrollLeft = oDomRef.scrollLeft;
648
645
  iScrollWidth = oDomRef.scrollWidth;
649
- iClientWidth = oDomRef.clientWidth + (Device.browser.msie ? 1 : 0);
646
+ iClientWidth = oDomRef.clientWidth;
650
647
  iScrollTarget = iScrollLeft + delta;
651
648
  iPaddingWidth = parseFloat(this.$("scroll-area").css("padding-left"));
652
649
 
@@ -927,7 +924,7 @@ sap.ui.define([
927
924
  }
928
925
  if (this._bRtl) {
929
926
  var iScrollLeftRTL = jQuery(oBarHead).scrollLeftRTL();
930
- if (iScrollLeftRTL > ((Device.browser.msie || Device.browser.edge) ? 1 : 0)) {
927
+ if (iScrollLeftRTL > 0) {
931
928
  bScrollForward = true;
932
929
  }
933
930
  } else if (iScrollLeft > iFirst) {
@@ -1027,9 +1024,6 @@ sap.ui.define([
1027
1024
  };
1028
1025
 
1029
1026
  HeaderContainer.prototype._handleBorderReached = function (oEvt) {
1030
- if (Device.browser.msie && this.bScrollInProcess) {
1031
- return;
1032
- }
1033
1027
  var iIndex = oEvt.getParameter("index");
1034
1028
  if (iIndex === 0) {
1035
1029
  this._scroll(this._getScrollValue(false), this.getScrollTime());
@@ -1039,14 +1033,6 @@ sap.ui.define([
1039
1033
  };
1040
1034
 
1041
1035
  HeaderContainer.prototype._handleAfterFocus = function (oEvt) {
1042
- //For Edge and IE on mousedown input element not getting focused.Hence setting focus manually.
1043
- var oSrcEvent = oEvt.getParameter("event");
1044
- if ((Device.browser.msie || Device.browser.edge) && oSrcEvent.type === "mousedown" && oSrcEvent.srcControl instanceof sap.m.Input) {
1045
- oSrcEvent.srcControl.focus();
1046
- }
1047
- if (Device.browser.msie && this.bScrollInProcess) {
1048
- return;
1049
- }
1050
1036
  var iIndex = oEvt.getParameter("index");
1051
1037
  if (iIndex === 0) {
1052
1038
  this._scroll(this._getScrollValue(false), this.getScrollTime());
@@ -1057,11 +1043,6 @@ sap.ui.define([
1057
1043
  };
1058
1044
 
1059
1045
  HeaderContainer.prototype._handleFocusAgain = function (oEvt) {
1060
- //For Edge and IE on mousedown input element not getting focused.Hence setting focus manually.
1061
- var oSrcEvent = oEvt.getParameter("event");
1062
- if ((Device.browser.msie || Device.browser.edge) && oSrcEvent.type === "mousedown" && oSrcEvent.srcControl instanceof sap.m.Input) {
1063
- oSrcEvent.srcControl.focus();
1064
- }
1065
1046
  oEvt.getParameter("event").preventDefault();
1066
1047
  };
1067
1048
 
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @since 1.67.0
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.102.2
22
+ * @version 1.104.0
23
23
  *
24
24
  * @constructor
25
25
  * @alias sap.m.HeaderContainerItemNavigator
@@ -94,7 +94,7 @@ sap.ui.define([
94
94
  * @implements sap.m.ObjectHeaderContainer, sap.f.IDynamicPageStickyContent
95
95
  *
96
96
  * @author SAP SE
97
- * @version 1.102.2
97
+ * @version 1.104.0
98
98
  *
99
99
  * @public
100
100
  * @alias sap.m.IconTabBar
@@ -201,6 +201,7 @@ sap.ui.define([
201
201
  * Specifies whether tab reordering is enabled. Relevant only for desktop devices.
202
202
  * The {@link sap.m.IconTabSeparator sap.m.IconTabSeparator} cannot be dragged and dropped
203
203
  * Items can be moved around {@link sap.m.IconTabSeparator sap.m.IconTabSeparator}
204
+ * Reordering is enabled via keyboard using <code>Ctrl</code> + arrow keys (Windows) and <code>Control</code> + arrow keys (Mac OS)
204
205
  * @since 1.46
205
206
  */
206
207
  enableTabReordering : {type : "boolean", group : "Behavior", defaultValue : false},
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.core.Control
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.102.2
41
+ * @version 1.104.0
42
42
  *
43
43
  * @constructor
44
44
  * @private
@@ -94,7 +94,7 @@ sap.ui.define([
94
94
  * @implements sap.m.IconTab
95
95
  *
96
96
  * @author SAP SE
97
- * @version 1.102.2
97
+ * @version 1.104.0
98
98
  *
99
99
  * @constructor
100
100
  * @public
@@ -305,14 +305,14 @@ sap.ui.define([
305
305
 
306
306
  oIconTabBar = oIconTabHeader.getParent();
307
307
 
308
- if (!(oIconTabBar instanceof sap.m.IconTabBar)) {
308
+ if (!(oIconTabBar && oIconTabBar.isA("sap.m.IconTabBar"))) {
309
309
  oIconTabHeader.invalidate();
310
310
  return;
311
311
  }
312
312
 
313
313
  oObjectHeader = oIconTabBar.getParent();
314
314
 
315
- if (oObjectHeader instanceof sap.m.ObjectHeader) {
315
+ if (oObjectHeader && oObjectHeader.isA("sap.m.ObjectHeader")) {
316
316
  // invalidate the object header to re-render IconTabBar content and header
317
317
  oObjectHeader.invalidate();
318
318
  } else {
@@ -338,7 +338,7 @@ sap.ui.define([
338
338
  Item.prototype.setProperty.call(this, sPropertyName, oValue, true);
339
339
  if (!bSuppressInvalidate) {
340
340
  var oIconTabHeader = this.getParent();
341
- if (oIconTabHeader instanceof sap.m.IconTabHeader) {
341
+ if (oIconTabHeader && oIconTabHeader.isA("sap.m.IconTabHeader")) {
342
342
  oIconTabHeader.invalidate();
343
343
  }
344
344
  }
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * @extends sap.ui.core.Control
32
32
  *
33
33
  * @author SAP SE
34
- * @version 1.102.2
34
+ * @version 1.104.0
35
35
  *
36
36
  * @constructor
37
37
  * @private
@@ -77,7 +77,7 @@ sap.ui.define([
77
77
  * @extends sap.ui.core.Control
78
78
  *
79
79
  * @author SAP SE
80
- * @version 1.102.2
80
+ * @version 1.104.0
81
81
  *
82
82
  * @constructor
83
83
  * @public
@@ -141,6 +141,7 @@ sap.ui.define([
141
141
  * Specifies whether tab reordering is enabled. Relevant only for desktop devices.
142
142
  * The {@link sap.m.IconTabSeparator sap.m.IconTabSeparator} cannot be dragged and dropped
143
143
  * Items can be moved around {@link sap.m.IconTabSeparator sap.m.IconTabSeparator}
144
+ * Reordering is enabled via keyboard using <code>Ctrl</code> + arrow keys (Windows) and <code>Control</code> + arrow keys (Mac OS)
144
145
  * @since 1.46
145
146
  */
146
147
  enableTabReordering : {type : "boolean", group : "Behavior", defaultValue : false},
@@ -426,7 +427,7 @@ sap.ui.define([
426
427
  for (var i = 0; i < aItems.length; i++) {
427
428
  oItem = aItems[i];
428
429
 
429
- if (oItem instanceof IconTabFilter == false) {
430
+ if (!oItem.isA("sap.m.IconTabFilter") || !oItem.getVisible()) {
430
431
  continue;
431
432
  }
432
433
 
@@ -436,6 +437,7 @@ sap.ui.define([
436
437
  break;
437
438
  }
438
439
  }
440
+
439
441
  this._oItemNavigation.setFocusedIndex(iIndex);
440
442
  };
441
443
 
@@ -481,6 +483,10 @@ sap.ui.define([
481
483
  * @return {this} this pointer for chaining
482
484
  */
483
485
  IconTabHeader.prototype.setSelectedKey = function (sKey) {
486
+ if (sKey === this.getSelectedKey()) {
487
+ return this;
488
+ }
489
+
484
490
  var aItems = this.getTabFilters(),
485
491
  bIsParentIconTabBar = this._isInsideIconTabBar(),
486
492
  bApiChange = true,
@@ -1481,7 +1487,12 @@ sap.ui.define([
1481
1487
  return;
1482
1488
  }
1483
1489
 
1484
- this.setProperty("selectedKey", this.oSelectedItem._getNonEmptyKey(), true);
1490
+ sSelectedKey = this.oSelectedItem._getNonEmptyKey();
1491
+ this.setProperty("selectedKey", sSelectedKey, true);
1492
+ if (bIsParentIconTabBar) {
1493
+ this.getParent().setProperty("selectedKey", sSelectedKey, true);
1494
+ }
1495
+
1485
1496
  };
1486
1497
 
1487
1498
  /**
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @implements sap.m.IconTab
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.102.2
39
+ * @version 1.104.0
40
40
  *
41
41
  * @constructor
42
42
  * @public
@@ -82,7 +82,7 @@ sap.ui.define([
82
82
  * @extends sap.ui.core.Control
83
83
  *
84
84
  * @author SAP SE
85
- * @version 1.102.2
85
+ * @version 1.104.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
  *
@@ -258,6 +266,12 @@ sap.ui.define([
258
266
  BASE: 259
259
267
  };
260
268
 
269
+ IllustratedMessage.BREAK_POINTS_HEIGHT = {
270
+ DIALOG: 451,
271
+ SPOT: 296,
272
+ BASE: 154
273
+ };
274
+
261
275
  IllustratedMessage.MEDIA = {
262
276
  BASE: "sapMIllustratedMessage-Base",
263
277
  SPOT: "sapMIllustratedMessage-Spot",
@@ -274,6 +288,7 @@ sap.ui.define([
274
288
  */
275
289
 
276
290
  IllustratedMessage.prototype.init = function () {
291
+ this._sLastKnownMedia = null;
277
292
  this._updateInternalIllustrationSetAndType(this.getIllustrationType());
278
293
  };
279
294
 
@@ -477,14 +492,16 @@ sap.ui.define([
477
492
  */
478
493
  IllustratedMessage.prototype._updateDomSize = function () {
479
494
  var oDomRef = this.getDomRef(),
480
- sSize;
495
+ sSize, sCustomSize;
481
496
 
482
497
  if (oDomRef) {
483
498
  sSize = this.getIllustrationSize();
484
499
  if (sSize === IllustratedMessageSize.Auto) {
485
- this._updateMedia(oDomRef.getBoundingClientRect().width);
500
+ this._updateMedia(oDomRef.getBoundingClientRect().width, oDomRef.getBoundingClientRect().height);
486
501
  } else {
487
- this._updateMediaStyle(IllustratedMessage.MEDIA[sSize.toUpperCase()]);
502
+ sCustomSize = IllustratedMessage.MEDIA[sSize.toUpperCase()];
503
+ this._updateMediaStyle(sCustomSize);
504
+ this._updateSymbol(sCustomSize);
488
505
  }
489
506
  }
490
507
 
@@ -507,50 +524,72 @@ sap.ui.define([
507
524
  * @private
508
525
  */
509
526
  IllustratedMessage.prototype._onResize = function (oEvent) {
510
- var iCurrentWidth = oEvent.size.width;
527
+ var iCurrentWidth = oEvent.size.width,
528
+ iCurrentHeight = oEvent.size.height;
511
529
 
512
- this._updateMedia(iCurrentWidth);
530
+ this._updateMedia(iCurrentWidth, iCurrentHeight);
513
531
  };
514
532
 
515
533
  /**
516
- * Updates the media size of the control based on its own width, not on the entire screen size (which media query does).
534
+ * 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
535
  * @param {number} iWidth - the actual width of the control
536
+ * @param {number} iHeight - the actual height of the control
518
537
  * @private
519
538
  */
520
- IllustratedMessage.prototype._updateMedia = function (iWidth) {
521
- if (!iWidth) {
539
+ IllustratedMessage.prototype._updateMedia = function (iWidth, iHeight) {
540
+ var bVertical = this.getEnableVerticalResponsiveness(),
541
+ sNewMedia;
542
+
543
+ if (!iWidth && !iHeight) {
522
544
  return;
523
545
  }
524
546
 
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);
547
+ if (iWidth <= IllustratedMessage.BREAK_POINTS.BASE || (iHeight <= IllustratedMessage.BREAK_POINTS_HEIGHT.BASE && bVertical)) {
548
+ sNewMedia = IllustratedMessage.MEDIA.BASE;
549
+ } else if (iWidth <= IllustratedMessage.BREAK_POINTS.SPOT || (iHeight <= IllustratedMessage.BREAK_POINTS_HEIGHT.SPOT && bVertical)) {
550
+ sNewMedia = IllustratedMessage.MEDIA.SPOT;
551
+ } else if (iWidth <= IllustratedMessage.BREAK_POINTS.DIALOG || (iHeight <= IllustratedMessage.BREAK_POINTS_HEIGHT.DIALOG && bVertical)) {
552
+ sNewMedia = IllustratedMessage.MEDIA.DIALOG;
531
553
  } else {
532
- this._updateMediaStyle(IllustratedMessage.MEDIA.SCENE);
554
+ sNewMedia = IllustratedMessage.MEDIA.SCENE;
533
555
  }
556
+
557
+ this._updateMediaStyle(sNewMedia);
558
+ this._updateSymbol(sNewMedia);
534
559
  };
535
560
 
536
561
  /**
537
- * It puts the appropriate classes on the control and updates illustration's symbol based on the current media size.
562
+ * It puts the appropriate classes on the control based on the current media size.
538
563
  * @param {string} sCurrentMedia
539
564
  * @private
540
565
  */
541
566
  IllustratedMessage.prototype._updateMediaStyle = function (sCurrentMedia) {
567
+ if (this._sLastKnownMedia !== sCurrentMedia) {
568
+ this._sLastKnownMedia = sCurrentMedia;
569
+ } else {
570
+ return; // No need to iterate over the media classes if the media is the same as the one previously used
571
+ }
542
572
  Object.keys(IllustratedMessage.MEDIA).forEach(function (sMedia) {
543
- var bEnable = sCurrentMedia === IllustratedMessage.MEDIA[sMedia],
544
- sIdMedia = sMedia.charAt(0) + sMedia.slice(1).toLowerCase();
573
+ var bEnable = sCurrentMedia === IllustratedMessage.MEDIA[sMedia];
545
574
  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
575
  }, this);
552
576
  };
553
577
 
578
+ /**
579
+ * Updates illustration's symbol based on the current media size.
580
+ * @param {string} sCurrentMedia
581
+ * @private
582
+ */
583
+ IllustratedMessage.prototype._updateSymbol = function (sCurrentMedia) {
584
+ var sIdMedia = sCurrentMedia.substring(sCurrentMedia.indexOf('-') + 1);
585
+
586
+ if (sCurrentMedia !== IllustratedMessage.MEDIA.BASE) { // No need to require a resource for BASE illustrationSize, since there is none
587
+ this._getIllustration().setSet(this._sIllustrationSet, true)
588
+ .setMedia(sIdMedia, true)
589
+ .setType(this._sIllustrationType);
590
+ }
591
+ };
592
+
554
593
  /**
555
594
  * ATTACH/DETACH HANDLERS
556
595
  */
@@ -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.102.2
35
+ * @version 1.104.0
36
36
  *
37
37
  * @constructor
38
38
  * @public
@@ -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.ariaHidden = true;
214
215
 
215
216
  Core.getStaticAreaRef().appendChild(oDOMPool);
216
217
 
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * @implements sap.ui.core.IFormContent
58
58
  *
59
59
  * @author SAP SE
60
- * @version 1.102.2
60
+ * @version 1.104.0
61
61
  *
62
62
  * @public
63
63
  * @alias sap.m.Image
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @extends sap.ui.core.Control
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.102.2
36
+ * @version 1.104.0
37
37
  * @since 1.38
38
38
  *
39
39
  * @public