@openui5/sap.m 1.92.0 → 1.93.3

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 (399) hide show
  1. package/.reuse/dep5 +5 -0
  2. package/THIRDPARTY.txt +10 -1
  3. package/package.json +4 -4
  4. package/src/sap/m/.library +1 -1
  5. package/src/sap/m/AccButton.js +1 -1
  6. package/src/sap/m/ActionListItem.js +1 -1
  7. package/src/sap/m/ActionSelect.js +1 -1
  8. package/src/sap/m/ActionSheet.js +1 -1
  9. package/src/sap/m/App.js +1 -1
  10. package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
  11. package/src/sap/m/Avatar.js +1 -1
  12. package/src/sap/m/Bar.js +14 -1
  13. package/src/sap/m/Breadcrumbs.js +1 -1
  14. package/src/sap/m/BusyDialog.js +1 -1
  15. package/src/sap/m/BusyIndicator.js +1 -1
  16. package/src/sap/m/Button.js +9 -6
  17. package/src/sap/m/Carousel.js +1 -1
  18. package/src/sap/m/CarouselLayout.js +1 -1
  19. package/src/sap/m/CheckBox.js +9 -4
  20. package/src/sap/m/CheckBoxRenderer.js +1 -1
  21. package/src/sap/m/ColorPalette.js +1 -1
  22. package/src/sap/m/ColorPalettePopover.js +1 -1
  23. package/src/sap/m/Column.js +9 -1
  24. package/src/sap/m/ColumnHeaderPopover.js +1 -1
  25. package/src/sap/m/ColumnListItem.js +8 -2
  26. package/src/sap/m/ColumnPopoverActionItem.js +1 -1
  27. package/src/sap/m/ColumnPopoverCustomItem.js +1 -1
  28. package/src/sap/m/ColumnPopoverItem.js +1 -1
  29. package/src/sap/m/ColumnPopoverSelectListItem.js +1 -1
  30. package/src/sap/m/ColumnPopoverSortItem.js +1 -1
  31. package/src/sap/m/ComboBox.js +1 -1
  32. package/src/sap/m/ComboBoxBase.js +1 -1
  33. package/src/sap/m/ComboBoxTextField.js +1 -1
  34. package/src/sap/m/CustomDynamicDateOption.js +1 -1
  35. package/src/sap/m/CustomListItem.js +1 -1
  36. package/src/sap/m/CustomTile.js +1 -1
  37. package/src/sap/m/CustomTreeItem.js +1 -1
  38. package/src/sap/m/DatePicker.js +9 -2
  39. package/src/sap/m/DateRangeSelection.js +2 -2
  40. package/src/sap/m/DateTimeField.js +69 -1
  41. package/src/sap/m/DateTimeInput.js +1 -1
  42. package/src/sap/m/DateTimePicker.js +15 -8
  43. package/src/sap/m/Dialog.js +3 -3
  44. package/src/sap/m/DisplayListItem.js +1 -1
  45. package/src/sap/m/DraftIndicator.js +1 -1
  46. package/src/sap/m/DynamicDate.js +53 -8
  47. package/src/sap/m/DynamicDateFormat.js +12 -1
  48. package/src/sap/m/DynamicDateOption.js +1 -1
  49. package/src/sap/m/DynamicDateRange.js +96 -17
  50. package/src/sap/m/DynamicDateUtil.js +20 -2
  51. package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
  52. package/src/sap/m/ExpandableText.js +4 -2
  53. package/src/sap/m/FacetFilter.js +1 -1
  54. package/src/sap/m/FacetFilterItem.js +1 -1
  55. package/src/sap/m/FacetFilterList.js +2 -2
  56. package/src/sap/m/FeedContent.js +1 -1
  57. package/src/sap/m/FeedInput.js +5 -2
  58. package/src/sap/m/FeedListItem.js +1 -1
  59. package/src/sap/m/FeedListItemAction.js +1 -1
  60. package/src/sap/m/Fiori20Adapter.js +2 -2
  61. package/src/sap/m/FlexBox.js +32 -67
  62. package/src/sap/m/FlexItemData.js +1 -1
  63. package/src/sap/m/FormattedText.js +1 -1
  64. package/src/sap/m/GenericTag.js +1 -1
  65. package/src/sap/m/GenericTile.js +1 -1
  66. package/src/sap/m/GenericTileRenderer.js +46 -8
  67. package/src/sap/m/GroupHeaderListItem.js +1 -1
  68. package/src/sap/m/GrowingEnablement.js +31 -34
  69. package/src/sap/m/GrowingList.js +1 -1
  70. package/src/sap/m/HBox.js +1 -1
  71. package/src/sap/m/HeaderContainer.js +1 -1
  72. package/src/sap/m/HeaderContainerItemNavigator.js +1 -1
  73. package/src/sap/m/IconTabBar.js +1 -2
  74. package/src/sap/m/IconTabBarSelectList.js +1 -1
  75. package/src/sap/m/IconTabFilter.js +68 -32
  76. package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
  77. package/src/sap/m/IconTabHeader.js +18 -7
  78. package/src/sap/m/IconTabHeaderRenderer.js +1 -0
  79. package/src/sap/m/IconTabSeparator.js +1 -1
  80. package/src/sap/m/Image.js +1 -1
  81. package/src/sap/m/ImageContent.js +1 -1
  82. package/src/sap/m/Input.js +23 -15
  83. package/src/sap/m/InputBase.js +4 -2
  84. package/src/sap/m/InputListItem.js +1 -1
  85. package/src/sap/m/Label.js +1 -1
  86. package/src/sap/m/LightBox.js +1 -1
  87. package/src/sap/m/LightBoxItem.js +1 -1
  88. package/src/sap/m/Link.js +2 -2
  89. package/src/sap/m/List.js +1 -1
  90. package/src/sap/m/ListBase.js +50 -20
  91. package/src/sap/m/ListItemBase.js +8 -7
  92. package/src/sap/m/MaskEnabler.js +1 -1
  93. package/src/sap/m/MaskInput.js +1 -1
  94. package/src/sap/m/MaskInputRule.js +1 -1
  95. package/src/sap/m/Menu.js +1 -1
  96. package/src/sap/m/MenuButton.js +2 -2
  97. package/src/sap/m/MenuItem.js +1 -1
  98. package/src/sap/m/MenuListItem.js +1 -1
  99. package/src/sap/m/MessageBox.js +30 -0
  100. package/src/sap/m/MessageItem.js +1 -16
  101. package/src/sap/m/MessageListItem.js +1 -1
  102. package/src/sap/m/MessagePage.js +1 -1
  103. package/src/sap/m/MessagePopover.js +1 -4
  104. package/src/sap/m/MessagePopoverItem.js +1 -1
  105. package/src/sap/m/MessageStrip.js +1 -1
  106. package/src/sap/m/MessageStripUtilities.js +15 -2
  107. package/src/sap/m/MessageToast.js +2 -2
  108. package/src/sap/m/MessageView.js +17 -28
  109. package/src/sap/m/MultiComboBox.js +169 -164
  110. package/src/sap/m/MultiEditField.js +1 -1
  111. package/src/sap/m/MultiInput.js +2 -3
  112. package/src/sap/m/NavContainer.js +9 -7
  113. package/src/sap/m/NewsContent.js +1 -1
  114. package/src/sap/m/NotificationList.js +1 -1
  115. package/src/sap/m/NotificationListBase.js +1 -1
  116. package/src/sap/m/NotificationListGroup.js +1 -1
  117. package/src/sap/m/NotificationListItem.js +1 -1
  118. package/src/sap/m/NumericContent.js +1 -1
  119. package/src/sap/m/ObjectAttribute.js +1 -1
  120. package/src/sap/m/ObjectHeader.js +1 -1
  121. package/src/sap/m/ObjectHeaderRenderer.js +10 -7
  122. package/src/sap/m/ObjectIdentifier.js +1 -1
  123. package/src/sap/m/ObjectListItem.js +1 -1
  124. package/src/sap/m/ObjectMarker.js +1 -1
  125. package/src/sap/m/ObjectNumber.js +1 -1
  126. package/src/sap/m/ObjectStatus.js +1 -1
  127. package/src/sap/m/OverflowToolbar.js +10 -6
  128. package/src/sap/m/OverflowToolbarAssociativePopover.js +1 -1
  129. package/src/sap/m/OverflowToolbarButton.js +1 -1
  130. package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
  131. package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
  132. package/src/sap/m/P13nAnyFilterItem.js +1 -1
  133. package/src/sap/m/P13nColumnsItem.js +1 -1
  134. package/src/sap/m/P13nColumnsPanel.js +1 -1
  135. package/src/sap/m/P13nConditionPanel.js +1 -1
  136. package/src/sap/m/P13nDialog.js +1 -1
  137. package/src/sap/m/P13nDimMeasureItem.js +1 -1
  138. package/src/sap/m/P13nDimMeasurePanel.js +1 -1
  139. package/src/sap/m/P13nFilterItem.js +1 -1
  140. package/src/sap/m/P13nFilterPanel.js +1 -1
  141. package/src/sap/m/P13nGroupItem.js +1 -1
  142. package/src/sap/m/P13nGroupPanel.js +1 -1
  143. package/src/sap/m/P13nItem.js +1 -1
  144. package/src/sap/m/P13nPanel.js +1 -1
  145. package/src/sap/m/P13nSelectionItem.js +1 -1
  146. package/src/sap/m/P13nSelectionPanel.js +1 -1
  147. package/src/sap/m/P13nSortItem.js +1 -1
  148. package/src/sap/m/P13nSortPanel.js +1 -1
  149. package/src/sap/m/PDFViewer.js +1 -1
  150. package/src/sap/m/Page.js +1 -1
  151. package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
  152. package/src/sap/m/PagingButton.js +1 -1
  153. package/src/sap/m/Panel.js +1 -1
  154. package/src/sap/m/PlanningCalendar.js +167 -44
  155. package/src/sap/m/PlanningCalendarHeader.js +36 -5
  156. package/src/sap/m/PlanningCalendarLegend.js +1 -1
  157. package/src/sap/m/PlanningCalendarRow.js +1 -1
  158. package/src/sap/m/PlanningCalendarView.js +26 -2
  159. package/src/sap/m/Popover.js +11 -2
  160. package/src/sap/m/ProgressIndicator.js +1 -1
  161. package/src/sap/m/PullToRefresh.js +1 -1
  162. package/src/sap/m/QuickView.js +1 -1
  163. package/src/sap/m/QuickViewBase.js +1 -1
  164. package/src/sap/m/QuickViewCard.js +1 -1
  165. package/src/sap/m/QuickViewGroup.js +1 -1
  166. package/src/sap/m/QuickViewGroupElement.js +1 -1
  167. package/src/sap/m/QuickViewPage.js +5 -5
  168. package/src/sap/m/RadioButton.js +1 -1
  169. package/src/sap/m/RadioButtonGroup.js +1 -1
  170. package/src/sap/m/RangeSlider.js +1 -1
  171. package/src/sap/m/RatingIndicator.js +69 -29
  172. package/src/sap/m/ResponsivePopover.js +1 -1
  173. package/src/sap/m/ResponsiveScale.js +1 -1
  174. package/src/sap/m/ScrollBar.js +1 -1
  175. package/src/sap/m/ScrollContainer.js +1 -1
  176. package/src/sap/m/SearchField.js +34 -19
  177. package/src/sap/m/SearchFieldRenderer.js +13 -3
  178. package/src/sap/m/SegmentedButton.js +1 -1
  179. package/src/sap/m/SegmentedButtonItem.js +1 -1
  180. package/src/sap/m/SegmentedButtonRenderer.js +6 -0
  181. package/src/sap/m/Select.js +21 -13
  182. package/src/sap/m/SelectDialog.js +21 -49
  183. package/src/sap/m/SelectDialogBase.js +148 -0
  184. package/src/sap/m/SelectList.js +13 -3
  185. package/src/sap/m/SelectRenderer.js +19 -3
  186. package/src/sap/m/SelectionDetails.js +5 -2
  187. package/src/sap/m/SelectionDetailsFacade.js +2 -2
  188. package/src/sap/m/SelectionDetailsItem.js +1 -1
  189. package/src/sap/m/SelectionDetailsItemLine.js +1 -1
  190. package/src/sap/m/Shell.js +1 -1
  191. package/src/sap/m/SimpleFixFlex.js +1 -1
  192. package/src/sap/m/SinglePlanningCalendar.js +4 -1
  193. package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
  194. package/src/sap/m/SinglePlanningCalendarGrid.js +48 -5
  195. package/src/sap/m/SinglePlanningCalendarGridRenderer.js +27 -19
  196. package/src/sap/m/SinglePlanningCalendarMonthGrid.js +11 -1
  197. package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
  198. package/src/sap/m/SinglePlanningCalendarView.js +1 -1
  199. package/src/sap/m/SinglePlanningCalendarWeekView.js +1 -1
  200. package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
  201. package/src/sap/m/SlideTile.js +3 -3
  202. package/src/sap/m/Slider.js +1 -1
  203. package/src/sap/m/SliderRenderer.js +2 -2
  204. package/src/sap/m/SliderTooltip.js +1 -1
  205. package/src/sap/m/SliderTooltipBase.js +1 -1
  206. package/src/sap/m/SliderTooltipContainer.js +1 -1
  207. package/src/sap/m/SplitApp.js +1 -1
  208. package/src/sap/m/SplitButton.js +1 -1
  209. package/src/sap/m/SplitButtonRenderer.js +5 -1
  210. package/src/sap/m/SplitContainer.js +1 -1
  211. package/src/sap/m/StandardDynamicDateOption.js +1 -1
  212. package/src/sap/m/StandardListItem.js +1 -1
  213. package/src/sap/m/StandardTile.js +1 -1
  214. package/src/sap/m/StandardTreeItem.js +1 -1
  215. package/src/sap/m/StepInput.js +1 -1
  216. package/src/sap/m/SuggestionItem.js +1 -1
  217. package/src/sap/m/SuggestionsPopover.js +44 -1
  218. package/src/sap/m/Switch.js +9 -1
  219. package/src/sap/m/TabContainer.js +1 -1
  220. package/src/sap/m/TabContainerItem.js +1 -1
  221. package/src/sap/m/TabStrip.js +1 -1
  222. package/src/sap/m/TabStripItem.js +1 -1
  223. package/src/sap/m/Table.js +48 -6
  224. package/src/sap/m/TablePersoController.js +1 -1
  225. package/src/sap/m/TablePersoDialog.js +1 -1
  226. package/src/sap/m/TablePersoProvider.js +1 -1
  227. package/src/sap/m/TableRenderer.js +3 -2
  228. package/src/sap/m/TableSelectDialog.js +21 -46
  229. package/src/sap/m/Text.js +2 -2
  230. package/src/sap/m/TextArea.js +1 -1
  231. package/src/sap/m/Tile.js +1 -1
  232. package/src/sap/m/TileContainer.js +2 -2
  233. package/src/sap/m/TileContent.js +1 -1
  234. package/src/sap/m/TimePicker.js +8 -3
  235. package/src/sap/m/TimePickerClock.js +1 -1
  236. package/src/sap/m/TimePickerClocks.js +3 -1
  237. package/src/sap/m/TimePickerInputs.js +3 -1
  238. package/src/sap/m/TimePickerInternals.js +1 -1
  239. package/src/sap/m/TimePickerSlider.js +1 -1
  240. package/src/sap/m/TimePickerSliders.js +1 -1
  241. package/src/sap/m/TimePickerSlidersRenderer.js +0 -1
  242. package/src/sap/m/Title.js +1 -1
  243. package/src/sap/m/TitlePropagationSupport.js +1 -1
  244. package/src/sap/m/ToggleButton.js +1 -1
  245. package/src/sap/m/Token.js +1 -1
  246. package/src/sap/m/Tokenizer.js +2 -1
  247. package/src/sap/m/TokenizerRenderer.js +1 -0
  248. package/src/sap/m/Toolbar.js +1 -1
  249. package/src/sap/m/ToolbarLayoutData.js +1 -1
  250. package/src/sap/m/ToolbarSeparator.js +1 -1
  251. package/src/sap/m/ToolbarSpacer.js +1 -1
  252. package/src/sap/m/Tree.js +1 -1
  253. package/src/sap/m/TreeItemBase.js +4 -4
  254. package/src/sap/m/UploadCollection.js +1 -1
  255. package/src/sap/m/UploadCollectionItem.js +1 -1
  256. package/src/sap/m/UploadCollectionParameter.js +1 -1
  257. package/src/sap/m/UploadCollectionToolbarPlaceholder.js +1 -1
  258. package/src/sap/m/VBox.js +1 -1
  259. package/src/sap/m/ValueStateHeader.js +1 -1
  260. package/src/sap/m/ViewSettingsCustomItem.js +1 -1
  261. package/src/sap/m/ViewSettingsCustomTab.js +1 -1
  262. package/src/sap/m/ViewSettingsDialog.js +7 -7
  263. package/src/sap/m/ViewSettingsFilterItem.js +1 -1
  264. package/src/sap/m/ViewSettingsItem.js +1 -1
  265. package/src/sap/m/VisibleItem.js +1 -1
  266. package/src/sap/m/WheelSlider.js +1 -1
  267. package/src/sap/m/WheelSliderContainer.js +1 -1
  268. package/src/sap/m/Wizard.js +1 -1
  269. package/src/sap/m/WizardProgressNavigator.js +1 -1
  270. package/src/sap/m/WizardStep.js +1 -1
  271. package/src/sap/m/changeHandler/AddTableColumn.js +76 -44
  272. package/src/sap/m/changeHandler/ChangeLinkTarget.js +18 -23
  273. package/src/sap/m/changeHandler/CombineButtons.js +280 -173
  274. package/src/sap/m/changeHandler/MoveTableColumns.js +143 -111
  275. package/src/sap/m/changeHandler/SplitMenuButton.js +141 -93
  276. package/src/sap/m/inputUtils/calculateSelectionStart.js +1 -1
  277. package/src/sap/m/inputUtils/wordStartsWithValue.js +5 -1
  278. package/src/sap/m/library.js +26 -2
  279. package/src/sap/m/messagebundle.properties +10 -1
  280. package/src/sap/m/messagebundle_ar.properties +7 -0
  281. package/src/sap/m/messagebundle_bg.properties +7 -0
  282. package/src/sap/m/messagebundle_ca.properties +7 -0
  283. package/src/sap/m/messagebundle_cs.properties +7 -0
  284. package/src/sap/m/messagebundle_cy.properties +7 -0
  285. package/src/sap/m/messagebundle_da.properties +7 -0
  286. package/src/sap/m/messagebundle_de.properties +11 -4
  287. package/src/sap/m/messagebundle_el.properties +7 -0
  288. package/src/sap/m/messagebundle_en.properties +7 -0
  289. package/src/sap/m/messagebundle_en_GB.properties +7 -0
  290. package/src/sap/m/messagebundle_en_US_sappsd.properties +6 -0
  291. package/src/sap/m/messagebundle_en_US_saptrc.properties +7 -0
  292. package/src/sap/m/messagebundle_es.properties +7 -0
  293. package/src/sap/m/messagebundle_es_MX.properties +7 -0
  294. package/src/sap/m/messagebundle_et.properties +7 -0
  295. package/src/sap/m/messagebundle_fi.properties +7 -0
  296. package/src/sap/m/messagebundle_fr.properties +7 -0
  297. package/src/sap/m/messagebundle_fr_CA.properties +7 -0
  298. package/src/sap/m/messagebundle_hi.properties +7 -0
  299. package/src/sap/m/messagebundle_hr.properties +7 -0
  300. package/src/sap/m/messagebundle_hu.properties +7 -0
  301. package/src/sap/m/messagebundle_id.properties +7 -0
  302. package/src/sap/m/messagebundle_it.properties +7 -0
  303. package/src/sap/m/messagebundle_iw.properties +7 -0
  304. package/src/sap/m/messagebundle_ja.properties +7 -0
  305. package/src/sap/m/messagebundle_kk.properties +7 -0
  306. package/src/sap/m/messagebundle_ko.properties +7 -0
  307. package/src/sap/m/messagebundle_lt.properties +7 -0
  308. package/src/sap/m/messagebundle_lv.properties +7 -0
  309. package/src/sap/m/messagebundle_ms.properties +7 -0
  310. package/src/sap/m/messagebundle_nl.properties +7 -0
  311. package/src/sap/m/messagebundle_no.properties +7 -0
  312. package/src/sap/m/messagebundle_pl.properties +7 -0
  313. package/src/sap/m/messagebundle_pt.properties +7 -0
  314. package/src/sap/m/messagebundle_pt_PT.properties +7 -0
  315. package/src/sap/m/messagebundle_ro.properties +7 -0
  316. package/src/sap/m/messagebundle_ru.properties +7 -0
  317. package/src/sap/m/messagebundle_sh.properties +7 -0
  318. package/src/sap/m/messagebundle_sk.properties +7 -0
  319. package/src/sap/m/messagebundle_sl.properties +7 -0
  320. package/src/sap/m/messagebundle_sv.properties +7 -0
  321. package/src/sap/m/messagebundle_th.properties +7 -0
  322. package/src/sap/m/messagebundle_tr.properties +7 -0
  323. package/src/sap/m/messagebundle_uk.properties +7 -0
  324. package/src/sap/m/messagebundle_vi.properties +7 -0
  325. package/src/sap/m/messagebundle_zh_CN.properties +7 -0
  326. package/src/sap/m/messagebundle_zh_TW.properties +7 -0
  327. package/src/sap/m/plugins/ColumnResizer.js +1 -1
  328. package/src/sap/m/plugins/DataStateIndicator.js +5 -3
  329. package/src/sap/m/plugins/PasteProvider.js +1 -1
  330. package/src/sap/m/plugins/PluginBase.js +1 -1
  331. package/src/sap/m/semantic/AddAction.js +1 -1
  332. package/src/sap/m/semantic/CancelAction.js +1 -1
  333. package/src/sap/m/semantic/DeleteAction.js +1 -1
  334. package/src/sap/m/semantic/DetailPage.js +1 -1
  335. package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
  336. package/src/sap/m/semantic/EditAction.js +1 -1
  337. package/src/sap/m/semantic/FavoriteAction.js +1 -1
  338. package/src/sap/m/semantic/FilterAction.js +1 -1
  339. package/src/sap/m/semantic/FilterSelect.js +1 -1
  340. package/src/sap/m/semantic/FlagAction.js +1 -1
  341. package/src/sap/m/semantic/ForwardAction.js +1 -1
  342. package/src/sap/m/semantic/FullscreenPage.js +1 -1
  343. package/src/sap/m/semantic/GroupAction.js +1 -1
  344. package/src/sap/m/semantic/GroupSelect.js +1 -1
  345. package/src/sap/m/semantic/MainAction.js +1 -1
  346. package/src/sap/m/semantic/MasterPage.js +1 -1
  347. package/src/sap/m/semantic/MessagesIndicator.js +1 -1
  348. package/src/sap/m/semantic/MultiSelectAction.js +1 -1
  349. package/src/sap/m/semantic/NegativeAction.js +1 -1
  350. package/src/sap/m/semantic/OpenInAction.js +1 -1
  351. package/src/sap/m/semantic/PositiveAction.js +1 -1
  352. package/src/sap/m/semantic/PrintAction.js +1 -1
  353. package/src/sap/m/semantic/SaveAction.js +1 -1
  354. package/src/sap/m/semantic/Segment.js +1 -1
  355. package/src/sap/m/semantic/SegmentedContainer.js +1 -1
  356. package/src/sap/m/semantic/SemanticButton.js +1 -1
  357. package/src/sap/m/semantic/SemanticConfiguration.js +1 -1
  358. package/src/sap/m/semantic/SemanticControl.js +1 -1
  359. package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +1 -1
  360. package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +1 -1
  361. package/src/sap/m/semantic/SemanticPage.js +1 -1
  362. package/src/sap/m/semantic/SemanticSelect.js +1 -1
  363. package/src/sap/m/semantic/SemanticToggleButton.js +1 -1
  364. package/src/sap/m/semantic/SendEmailAction.js +1 -1
  365. package/src/sap/m/semantic/SendMessageAction.js +1 -1
  366. package/src/sap/m/semantic/ShareInJamAction.js +1 -1
  367. package/src/sap/m/semantic/ShareMenu.js +1 -1
  368. package/src/sap/m/semantic/ShareMenuPage.js +1 -1
  369. package/src/sap/m/semantic/SortAction.js +1 -1
  370. package/src/sap/m/semantic/SortSelect.js +1 -1
  371. package/src/sap/m/themes/base/Carousel.less +37 -2
  372. package/src/sap/m/themes/base/CheckBox.less +1 -1
  373. package/src/sap/m/themes/base/Dialog.less +11 -5
  374. package/src/sap/m/themes/base/FeedInput.less +5 -6
  375. package/src/sap/m/themes/base/GenericTile.less +130 -7
  376. package/src/sap/m/themes/base/IconTabBar.less +179 -64
  377. package/src/sap/m/themes/base/IconTabBarSelectList.less +12 -2
  378. package/src/sap/m/themes/base/InputBase.less +0 -24
  379. package/src/sap/m/themes/base/Label.less +6 -0
  380. package/src/sap/m/themes/base/ListItemBase.less +4 -2
  381. package/src/sap/m/themes/base/NotificationListBase.less +1 -1
  382. package/src/sap/m/themes/base/ObjectHeader.less +2 -1
  383. package/src/sap/m/themes/base/ObjectStatus.less +9 -2
  384. package/src/sap/m/themes/base/PlanningCalendar.less +23 -7
  385. package/src/sap/m/themes/base/Popover.less +1 -1
  386. package/src/sap/m/themes/base/ProgressIndicator.less +7 -6
  387. package/src/sap/m/themes/base/RadioButton.less +3 -0
  388. package/src/sap/m/themes/base/SearchField.less +22 -15
  389. package/src/sap/m/themes/base/SegmentedButton.less +1 -1
  390. package/src/sap/m/themes/base/StandardListItem.less +5 -1
  391. package/src/sap/m/themes/base/Table.less +14 -12
  392. package/src/sap/m/themes/base/Text.less +6 -0
  393. package/src/sap/m/themes/base/TimePicker.less +5 -1
  394. package/src/sap/m/themes/base/TimePickerSliders.less +1 -5
  395. package/src/sap/m/themes/base/Toolbar.less +6 -0
  396. package/src/sap/m/themes/base/ViewSettingsDialog.less +1 -1
  397. package/src/sap/m/themes/sap_hcb/InputBase.less +25 -0
  398. package/src/sap/m/upload/UploadSet.js +1 -1
  399. package/src/sap/m/upload/UploadSetItem.js +16 -1
@@ -12,7 +12,7 @@ sap.ui.define([
12
12
  './List',
13
13
  './SearchField',
14
14
  './library',
15
- 'sap/ui/core/Control',
15
+ './SelectDialogBase',
16
16
  'sap/ui/core/InvisibleText',
17
17
  'sap/ui/Device',
18
18
  'sap/m/Toolbar',
@@ -29,7 +29,7 @@ function(
29
29
  List,
30
30
  SearchField,
31
31
  library,
32
- Control,
32
+ SelectDialogBase,
33
33
  InvisibleText,
34
34
  Device,
35
35
  Toolbar,
@@ -109,10 +109,10 @@ function(
109
109
  * <li> On desktop and tablet devices, the select dialog appears as a popover. </li>
110
110
  * </ul>
111
111
  * When using the <code>sap.m.SelectDialog</code> in SAP Quartz themes, the breakpoints and layout paddings could be determined by the dialog's width. To enable this concept and add responsive paddings to an element of the control, you have to add the following classes depending on your use case: <code>sapUiResponsivePadding--header</code>, <code>sapUiResponsivePadding--subHeader</code>, <code>sapUiResponsivePadding--content</code>, <code>sapUiResponsivePadding--footer</code>.
112
- * @extends sap.ui.core.Control
112
+ * @extends sap.m.SelectDialogBase
113
113
  *
114
114
  * @author SAP SE
115
- * @version 1.92.0
115
+ * @version 1.93.3
116
116
  *
117
117
  * @constructor
118
118
  * @public
@@ -120,7 +120,7 @@ function(
120
120
  * @see {@link fiori:https://experience.sap.com/fiori-design-web/select-dialog/ Select Dialog}
121
121
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
122
122
  */
123
- var SelectDialog = Control.extend("sap.m.SelectDialog", /** @lends sap.m.SelectDialog.prototype */ { metadata : {
123
+ var SelectDialog = SelectDialogBase.extend("sap.m.SelectDialog", /** @lends sap.m.SelectDialog.prototype */ { metadata : {
124
124
 
125
125
  library : "sap.m",
126
126
  properties : {
@@ -342,7 +342,9 @@ function(
342
342
  })
343
343
  ]
344
344
  }),
345
- selectionChange: this._selectionChange.bind(this)
345
+ selectionChange: this._selectionChange.bind(this),
346
+ updateStarted: this._updateStarted.bind(this),
347
+ updateFinished: this._updateFinished.bind(this)
346
348
  });
347
349
 
348
350
  this._oList.getInfoToolbar().addEventDelegate({
@@ -353,10 +355,6 @@ function(
353
355
 
354
356
  this._list = this._oList; // for downward compatibility
355
357
 
356
- // attach events to listen to model updates and show/hide a busy indicator
357
- this._oList.attachUpdateStarted(this._updateStarted, this);
358
- this._oList.attachUpdateFinished(this._updateFinished, this);
359
-
360
358
  // store a reference to the busyIndicator to display when data is currently loaded by a service
361
359
  this._oBusyIndicator = new BusyIndicator(this.getId() + "-busyIndicator").addStyleClass("sapMSelectDialogBusyIndicator", true);
362
360
 
@@ -414,7 +412,6 @@ function(
414
412
  subHeader: this._oSubHeader,
415
413
  content: [this._oBusyIndicator, this._oList],
416
414
  leftButton: this._getCancelButton(),
417
- initialFocus: (Device.system.desktop ? this._oSearchField : null),
418
415
  draggable: this.getDraggable() && Device.system.desktop,
419
416
  resizable: this.getResizable() && Device.system.desktop,
420
417
  escapeHandler: function (oPromiseWrapper) {
@@ -432,8 +429,6 @@ function(
432
429
  this._sSearchFieldValue = "";
433
430
 
434
431
  // flags to control the busy indicator behaviour because the growing list will always show the no data text when updating
435
- this._bFirstRequest = true; // to only show the busy indicator for the first request when the dialog has been openend
436
- this._bLiveChange = false; // to check if the triggered event is LiveChange
437
432
  this._iListUpdateRequested = 0; // to only show the busy indicator when we initiated the change
438
433
  };
439
434
 
@@ -534,10 +529,8 @@ function(
534
529
  this._oBusyIndicator = null;
535
530
  this._sSearchFieldValue = null;
536
531
  this._iListUpdateRequested = 0;
537
- this._bFirstRequest = false;
538
532
  this._bInitBusy = false;
539
533
  this._bFirstRender = false;
540
- this._bFirstRequest = false;
541
534
 
542
535
  // sap.ui.core.Popup removes its content on close()/destroy() automatically from the static UIArea,
543
536
  // but only if it added it there itself. As we did that, we have to remove it also on our own
@@ -593,7 +586,7 @@ function(
593
586
  if (this._oDialog && (!arguments[0] || arguments[0] && arguments[0].getId() !== this.getId() + "-dialog")) {
594
587
  this._oDialog.invalidate(arguments);
595
588
  } else {
596
- Control.prototype.invalidate.apply(this, arguments);
589
+ SelectDialogBase.prototype.invalidate.apply(this, arguments);
597
590
  }
598
591
 
599
592
  return this;
@@ -618,14 +611,12 @@ function(
618
611
  this._bAppendedToUIArea = true;
619
612
  }
620
613
 
621
- // reset internal variables
622
- this._bFirstRequest = true;
623
-
624
614
  // set the search value
625
615
  this._oSearchField.setValue(sSearchValue);
626
616
  this._sSearchFieldValue = sSearchValue || "";
627
617
 
628
618
  // open the dialog
619
+ this._setInitialFocus();
629
620
  this._oDialog.open();
630
621
 
631
622
  // open dialog with busy state if a list update is still in progress
@@ -907,7 +898,7 @@ function(
907
898
 
908
899
  // pass the model to the list and also to the local control to allow binding of own properties
909
900
  this._oList.setModel(oModel, sModelName);
910
- Control.prototype.setModel.apply(this, arguments);
901
+ SelectDialogBase.prototype.setModel.apply(this, arguments);
911
902
 
912
903
  // clear the selection label when setting the model
913
904
  this._updateSelectionIndicator();
@@ -928,7 +919,7 @@ function(
928
919
  SelectDialog.prototype.setBindingContext = function (oContext, sModelName) {
929
920
  // pass the model to the list and also to the local control to allow binding of own properties
930
921
  this._oList.setBindingContext(oContext, sModelName);
931
- Control.prototype.setBindingContext.apply(this, arguments);
922
+ SelectDialogBase.prototype.setBindingContext.apply(this, arguments);
932
923
 
933
924
  return this;
934
925
  };
@@ -955,11 +946,6 @@ function(
955
946
  oBinding = (oList ? oList.getBinding("items") : undefined),
956
947
  bSearchValueDifferent = (this._sSearchFieldValue !== sValue); // to prevent unwanted duplicate requests
957
948
 
958
- // BCP #1472004019/2015: focus after liveChange event is not changed
959
- if (sEventType === "liveChange") {
960
- this._bLiveChange = true;
961
- }
962
-
963
949
  // fire either the Search event or the liveChange event when dialog is opened.
964
950
  // 1) when the clear icon is called then both liveChange and search events are fired but we only want to process the first one
965
951
  // 2) when a livechange has been triggered by typing we don't want the next search event to be processed (typing + enter or typing + search button)
@@ -1018,6 +1004,8 @@ function(
1018
1004
  * @param {jQuery.Event} oEvent The event object
1019
1005
  */
1020
1006
  SelectDialog.prototype._updateStarted = function (oEvent) {
1007
+ this.fireUpdateStarted(oEvent.getParameters());
1008
+
1021
1009
  if (this.getModel() && this.getModel() instanceof sap.ui.model.odata.ODataModel) {
1022
1010
  if (this._oDialog.isOpen() && this._iListUpdateRequested) {
1023
1011
  // only set busy mode when we have an OData model
@@ -1035,34 +1023,14 @@ function(
1035
1023
  * @param {jQuery.Event} oEvent The event object
1036
1024
  */
1037
1025
  SelectDialog.prototype._updateFinished = function (oEvent) {
1026
+ this.fireUpdateFinished(oEvent.getParameters());
1027
+
1038
1028
  // only reset busy mode when we have an OData model
1039
1029
  this._updateSelectionIndicator();
1040
1030
  if (this.getModel() && this.getModel() instanceof sap.ui.model.odata.ODataModel) {
1041
1031
  this._setBusy(false);
1042
1032
  this._bInitBusy = false;
1043
1033
  }
1044
- if (Device.system.desktop) {
1045
-
1046
- if (this._oList.getItems()[0]) {
1047
- this._oDialog.setInitialFocus(this._oList.getItems()[0]);
1048
- } else {
1049
- this._oDialog.setInitialFocus(this._oSearchField);
1050
- }
1051
-
1052
- // set initial focus manually after all items are visible
1053
- if (this._bFirstRequest && !this._bLiveChange) {
1054
- var oFocusControl = this._oList.getItems()[0];
1055
- if (!oFocusControl) {
1056
- oFocusControl = this._oSearchField;
1057
- }
1058
-
1059
- if (oFocusControl.getFocusDomRef()) {
1060
- oFocusControl.getFocusDomRef().focus();
1061
- }
1062
- }
1063
- }
1064
-
1065
- this._bFirstRequest = false;
1066
1034
 
1067
1035
  // we received a request (from this or from another control) so set the counter to 0
1068
1036
  this._iListUpdateRequested = 0;
@@ -1239,7 +1207,11 @@ function(
1239
1207
  *
1240
1208
  * @private
1241
1209
  */
1242
- SelectDialog.prototype._selectionChange = function () {
1210
+ SelectDialog.prototype._selectionChange = function (oEvent) {
1211
+ if (oEvent.getParameters) {
1212
+ this.fireSelectionChange(oEvent.getParameters());
1213
+ }
1214
+
1243
1215
  if (!this._oDialog) {
1244
1216
  return;
1245
1217
  }
@@ -0,0 +1,148 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides control sap.m.SelectDialogBase.
8
+ sap.ui.define([
9
+ 'sap/ui/Device',
10
+ 'sap/ui/core/Control'
11
+ ],
12
+ function(
13
+ Device,
14
+ Control
15
+ ) {
16
+ "use strict";
17
+
18
+ /**
19
+ * Constructor for a new SelectDialogBase.
20
+ *
21
+ * @param {string} [sId] ID for the new control, generated automatically if no ID is given
22
+ * @param {object} [mSettings] Initial settings for the new control
23
+ *
24
+ * @class
25
+ * The <code>sap.m.SelectDialogBase</code> control provides a base functionality of the
26
+ * <code>sap.m.SelectDialog</code> and <code>sap.m.TableSelectDialog</code> controls.
27
+ * @extends sap.ui.core.Control
28
+ *
29
+ * @author SAP SE
30
+ * @version 1.93.3
31
+ *
32
+ * @constructor
33
+ * @public
34
+ * @abstract
35
+ * @since 1.93
36
+ * @alias sap.m.SelectDialogBase
37
+ * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
38
+ */
39
+ var SelectDialogBase = Control.extend("sap.m.SelectDialogBase", /** @lends sap.m.SelectDialogBase.prototype */ {
40
+ metadata: {
41
+ library: "sap.m",
42
+ "abstract": true,
43
+ properties: {},
44
+ aggregations: {},
45
+ events: {
46
+ /**
47
+ * Fires before <code>items</code> binding is updated (e.g. sorting, filtering)
48
+ *
49
+ * <b>Note:</b> Event handler should not invalidate the control. *
50
+ * @since 1.93
51
+ */
52
+ updateStarted : {
53
+ parameters : {
54
+
55
+ /**
56
+ * The reason of the update, e.g. Binding, Filter, Sort, Growing, Change, Refresh, Context.
57
+ */
58
+ reason : {type : "string"},
59
+
60
+ /**
61
+ * Actual number of items.
62
+ */
63
+ actual : {type : "int"},
64
+
65
+ /**
66
+ * The total count of bound items. This can be used if the <code>growing</code> property is set to <code>true</code>.
67
+ */
68
+ total : {type : "int"}
69
+ }
70
+ },
71
+
72
+ /**
73
+ * Fires after <code>items</code> binding is updated and processed by the control.
74
+ * @since 1.93
75
+ */
76
+ updateFinished : {
77
+ parameters : {
78
+
79
+ /**
80
+ * The reason of the update, e.g. Binding, Filter, Sort, Growing, Change, Refresh, Context.
81
+ */
82
+ reason : {type : "string"},
83
+
84
+ /**
85
+ * Actual number of items.
86
+ */
87
+ actual : {type : "int"},
88
+
89
+ /**
90
+ * The total count of bound items. This can be used if the <code>growing</code> property is set to <code>true</code>.
91
+ */
92
+ total : {type : "int"}
93
+ }
94
+ },
95
+
96
+ /**
97
+ * Fires when selection is changed via user interaction inside the control.
98
+ * @since 1.93
99
+ */
100
+ selectionChange : {
101
+ parameters : {
102
+
103
+ /**
104
+ * The item whose selection has changed. In <code>MultiSelect</code> mode, only the up-most selected item is returned. This parameter can be used for single-selection modes.
105
+ */
106
+ listItem : {type : "sap.m.ListItemBase"},
107
+
108
+ /**
109
+ * Array of items whose selection has changed. This parameter can be used for <code>MultiSelect</code> mode.
110
+ */
111
+ listItems : {type : "sap.m.ListItemBase[]"},
112
+
113
+ /**
114
+ * Indicates whether the <code>listItem</code> parameter is selected or not.
115
+ */
116
+ selected : {type : "boolean"},
117
+
118
+ /**
119
+ * Indicates whether the select all action is triggered or not.
120
+ */
121
+ selectAll : {type : "boolean"}
122
+ }
123
+ }
124
+ }
125
+ },
126
+ renderer: {
127
+ apiVersion: 2,
128
+ render: function () {
129
+ }
130
+ }
131
+ });
132
+
133
+ SelectDialogBase.prototype._setInitialFocus = function () {
134
+ if (!Device.system.desktop) {
135
+ return;
136
+ }
137
+
138
+ var oInitiallyFocusedControl = this._oSearchField;
139
+
140
+ if (this.getItems().length) {
141
+ oInitiallyFocusedControl = this.getItems()[0];
142
+ }
143
+
144
+ this._oDialog.setInitialFocus(oInitiallyFocusedControl);
145
+ };
146
+
147
+ return SelectDialogBase;
148
+ });
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @extends sap.ui.core.Control
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.92.0
40
+ * @version 1.93.3
41
41
  *
42
42
  * @constructor
43
43
  * @public
@@ -256,7 +256,7 @@ sap.ui.define([
256
256
  }
257
257
  };
258
258
 
259
- SelectList.prototype.updateItems = function(sReason) {
259
+ SelectList.prototype.updateItems = function(sReason, oEventInfo) {
260
260
  this.bItemsUpdated = false;
261
261
 
262
262
  // note: for backward compatibility and to keep the old data binding behavior,
@@ -265,6 +265,16 @@ sap.ui.define([
265
265
  this.updateAggregation("items");
266
266
  this.bItemsUpdated = true;
267
267
 
268
+ // Do not try to synchronize selection when updateItems is called with reason Add/Remove VirtualContext,
269
+ // as in some cases, when forceSelection is "true", unwanted PATCH requests with null value may be triggered
270
+ if (oEventInfo && (oEventInfo.detailedReason === "AddVirtualContext"
271
+ || oEventInfo.detailedReason === "RemoveVirtualContext")) {
272
+ this._bHasVirtualContext = true;
273
+ return;
274
+ }
275
+
276
+ this._bHasVirtualContext = false;
277
+
268
278
  // Try to synchronize the selection (synchronous), but if any item's key match with the value of the "selectedKey" property,
269
279
  // don't force the first enabled item to be selected when the forceSelection property is set to true.
270
280
  // It could be possible that the items' properties (models and bindingContext) are not propagated at this point.
@@ -612,7 +622,7 @@ sap.ui.define([
612
622
 
613
623
  // the aggregation items is not bound or
614
624
  // it is bound and the data is already available
615
- } else if (bForceSelection && this.getDefaultSelectedItem() && (!this.isBound("items") || this.bItemsUpdated)) {
625
+ } else if (bForceSelection && !this._bHasVirtualContext && this.getDefaultSelectedItem() && (!this.isBound("items") || this.bItemsUpdated)) {
616
626
  try {
617
627
  this.setSelection(this.getDefaultSelectedItem());
618
628
  } catch (e) {
@@ -86,6 +86,10 @@ sap.ui.define(['sap/ui/core/Renderer', 'sap/ui/core/IconPool', 'sap/m/library',
86
86
 
87
87
  oRm.style("max-width", oSelect.getMaxWidth());
88
88
 
89
+ if (bEnabled) {
90
+ oRm.attr("tabindex", "-1");
91
+ }
92
+
89
93
  oRm.openEnd();
90
94
  this.renderFocusElement(oRm, oSelect);
91
95
  // Used in case control is in a form submitted by input[type="submit"].
@@ -178,6 +182,9 @@ sap.ui.define(['sap/ui/core/Renderer', 'sap/ui/core/IconPool', 'sap/m/library',
178
182
  oRm.attr("tabindex", "-1");
179
183
  oRm.attr("aria-hidden", "true");
180
184
 
185
+ //The hidden field is not shown to the user, but the data is sent when the form is submitted.
186
+ oRm.attr("type", "hidden");
187
+
181
188
  // Classes
182
189
  oRm.class("sapUiPseudoInvisibleText");
183
190
 
@@ -196,12 +203,19 @@ sap.ui.define(['sap/ui/core/Renderer', 'sap/ui/core/IconPool', 'sap/m/library',
196
203
  sTextDir = oSelect.getTextDirection(),
197
204
  sTextAlign = Renderer.getTextAlign(oSelect.getTextAlign(), sTextDir),
198
205
  CSS_CLASS = SelectRenderer.CSS_CLASS,
199
- bEditabledAndEnabled = oSelect.getEnabled() && oSelect.getEditable();
206
+ bEditabledAndEnabled = oSelect.getEnabled() && oSelect.getEditable(),
207
+ sTooltip = oSelect.getTooltip_AsString();
200
208
 
201
209
  oRm.openStart("span", oSelect.getId() + "-label");
202
210
  oRm.attr("aria-hidden", true);
203
211
  oRm.class(CSS_CLASS + "Label");
204
212
 
213
+ // since focusable element has sapUiPseudoInvisibleText class
214
+ // the tooltip is also set to the label element to be visually displayed
215
+ if (sTooltip) {
216
+ oRm.attr("title", sTooltip);
217
+ }
218
+
205
219
  if (oSelect.getValueState() !== ValueState.None && bEditabledAndEnabled) {
206
220
  oRm.class(CSS_CLASS + "LabelState");
207
221
  oRm.class(CSS_CLASS + "Label" + oSelect.getValueState());
@@ -264,11 +278,13 @@ sap.ui.define(['sap/ui/core/Renderer', 'sap/ui/core/IconPool', 'sap/m/library',
264
278
  * @private
265
279
  */
266
280
  SelectRenderer.renderIcon = function(oRm, oSelect) {
267
- var sTooltip = oSelect.getTooltip_AsString();
281
+ var sTooltip = oSelect.getTooltip_AsString(),
282
+ oIconInfo = IconPool.getIconInfo(oSelect.getIcon()),
283
+ sIconText = oIconInfo && oIconInfo.text;
268
284
 
269
285
  oRm.icon(oSelect.getIcon(), SelectRenderer.CSS_CLASS + "Icon", {
270
286
  id: oSelect.getId() + "-icon",
271
- title: sTooltip || null
287
+ title: sTooltip || sIconText || null
272
288
  });
273
289
  };
274
290
 
@@ -39,7 +39,7 @@ function(
39
39
  * <b><i>Note:</i></b>It is protected and should only be used within the framework itself.
40
40
  *
41
41
  * @author SAP SE
42
- * @version 1.92.0
42
+ * @version 1.93.3
43
43
  *
44
44
  * @extends sap.ui.core.Control
45
45
  * @constructor
@@ -617,7 +617,10 @@ function(
617
617
  * @private
618
618
  */
619
619
  SelectionDetails.prototype._getNavContainer = function(NavContainer) {
620
- return this._oNavContainer || (this._oNavContainer = new NavContainer(this.getId() + "-nav-container"));
620
+ if (!this._oNavContainer) {
621
+ this._oNavContainer = new NavContainer(this.getId() + "-nav-container");
622
+ }
623
+ return this._oNavContainer;
621
624
  };
622
625
 
623
626
  /**
@@ -10,7 +10,7 @@
10
10
  * @since 1.48.0
11
11
  * @public
12
12
  * @author SAP SE
13
- * @version 1.92.0
13
+ * @version 1.93.3
14
14
  * @borrows sap.ui.core.Element#addCustomData as #addCustomData
15
15
  * @borrows sap.ui.core.Element#getCustomData as #getCustomData
16
16
  * @borrows sap.ui.core.Element#indexOfCustomData as #indexOfCustomData
@@ -45,7 +45,7 @@
45
45
  * @since 1.48.0
46
46
  * @public
47
47
  * @author SAP SE
48
- * @version 1.92.0
48
+ * @version 1.93.3
49
49
  * @borrows sap.ui.core.Element#addCustomData as #addCustomData
50
50
  * @borrows sap.ui.core.Element#getCustomData as #getCustomData
51
51
  * @borrows sap.ui.core.Element#indexOfCustomData as #indexOfCustomData
@@ -54,7 +54,7 @@ sap.ui.define([
54
54
  * @extends sap.ui.core.Element
55
55
  *
56
56
  * @author SAP SE
57
- * @version 1.92.0
57
+ * @version 1.93.3
58
58
  *
59
59
  * @constructor
60
60
  * @protected
@@ -23,7 +23,7 @@ sap.ui.define(["sap/ui/core/Element", "sap/base/Log", "sap/base/util/isPlainObje
23
23
  * @extends sap.ui.core.Element
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.92.0
26
+ * @version 1.93.3
27
27
  *
28
28
  * @constructor
29
29
  * @protected
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * The Shell control can be used as root element of applications. It can contain an App or a <code>SplitApp</code> control.
36
36
  * The Shell provides some overarching functionality for the overall application and takes care of visual adaptation, such as a frame around the App, on desktop browser platforms.
37
37
  * @extends sap.ui.core.Control
38
- * @version 1.92.0
38
+ * @version 1.93.3
39
39
  *
40
40
  * @constructor
41
41
  * @public
@@ -31,7 +31,7 @@ function (Control, ResizeHandler, Log /**, SimpleFixFlexRenderer */) {
31
31
  * @extends sap.ui.core.Control
32
32
  *
33
33
  * @author SAP SE
34
- * @version 1.92.0
34
+ * @version 1.93.3
35
35
  *
36
36
  * @constructor
37
37
  * @private
@@ -105,7 +105,7 @@ function(
105
105
  * @extends sap.ui.core.Control
106
106
  *
107
107
  * @author SAP SE
108
- * @version 1.92.0
108
+ * @version 1.93.3
109
109
  *
110
110
  * @constructor
111
111
  * @public
@@ -217,6 +217,9 @@ function(
217
217
  * The appointments to be displayed in the grid. Appointments outside the visible time frame are not rendered.
218
218
  * Appointments, longer than a day, will be displayed in all of the affected days.
219
219
  * To display an all-day appointment, the appointment must start at 00:00 and end on any day in the future in 00:00h.
220
+ *
221
+ * Note: The <code>customContent</code> functionality of the <code>CalendarAppointment</code> is not available
222
+ * in the <code>SinglePlanningCalendar</code>. If set, it will not make any effect.
220
223
  */
221
224
  appointments : {
222
225
  type: "sap.ui.unified.CalendarAppointment",
@@ -25,7 +25,7 @@ function (library, SinglePlanningCalendarView) {
25
25
  * @extends sap.m.SinglePlanningCalendarView
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.92.0
28
+ * @version 1.93.3
29
29
  *
30
30
  * @constructor
31
31
  * @public
@@ -101,7 +101,7 @@ sap.ui.define([
101
101
  * @extends sap.ui.core.Control
102
102
  *
103
103
  * @author SAP SE
104
- * @version 1.92.0
104
+ * @version 1.93.3
105
105
  *
106
106
  * @constructor
107
107
  * @private
@@ -587,9 +587,14 @@ sap.ui.define([
587
587
  }
588
588
 
589
589
  var oDragSession = oEvent.getParameter("dragSession"),
590
- $SPCGridOverlay = this.$().find(".sapMSinglePCOverlay"),
590
+ oDragControl = oDragSession.getDragControl(),
591
+ oEventTarget = oEvent.getParameter("browserEvent") && oEvent.getParameter("browserEvent").target || null;
592
+
593
+ oDragControl._sAppointmentPartSuffix = oEventTarget && oEventTarget.id ? oEventTarget.id.replace(oDragControl.getId() + "-", "") : "";
594
+
595
+ var $SPCGridOverlay = this.$().find(".sapMSinglePCOverlay"),
591
596
  $Indicator = jQuery(oDragSession.getIndicator()),
592
- $DraggedControl = oDragSession.getDragControl().$();
597
+ $DraggedControl = oDragControl.$();
593
598
 
594
599
  if (this._isResizeHandleBottomMouseDownTarget) {
595
600
  oDragSession.setComplexData("bottomHandle", "true");
@@ -640,7 +645,7 @@ sap.ui.define([
640
645
  iVariableBoundaryY,
641
646
  mDraggedControlConfig;
642
647
 
643
- if (!oAppointmentStartingBoundaries) {
648
+ if (!oAppointmentStartingBoundaries) {
644
649
  oAppointmentStartingBoundaries = {
645
650
  top: oAppointmentRef.offsetTop,
646
651
  bottom: oAppointmentRef.offsetTop + oAppointmentRef.getBoundingClientRect().height,
@@ -1020,6 +1025,12 @@ sap.ui.define([
1020
1025
  aVisibleAppsInDay,
1021
1026
  i, j;
1022
1027
 
1028
+ // directly focus appointment part, if there is any selected
1029
+ if (this._sSelectedAppointment) {
1030
+ this._sSelectedAppointment.focus();
1031
+ return this;
1032
+ }
1033
+
1023
1034
  // Search amongst the visible blockers
1024
1035
  for (i = 0; i < aVisibleBlockers.length; ++i) {
1025
1036
  if (aVisibleBlockers[i].getId() === oFocusInfo.id) {
@@ -1072,6 +1083,7 @@ sap.ui.define([
1072
1083
  */
1073
1084
  SinglePlanningCalendarGrid.prototype._toggleAppointmentSelection = function (oAppointment, bRemoveOldSelection) {
1074
1085
  var aChangedApps = [],
1086
+ oAppointmentDomRef = oAppointment && oAppointment.getDomRef(),
1075
1087
  aAppointments,
1076
1088
  iAppointmentsLength,
1077
1089
  i;
@@ -1091,6 +1103,9 @@ sap.ui.define([
1091
1103
  if (oAppointment) {
1092
1104
  oAppointment.setProperty("selected", !oAppointment.getSelected());
1093
1105
  aChangedApps.push(oAppointment);
1106
+ this._sSelectedAppointment = oAppointment.getSelected() && oAppointmentDomRef ? oAppointment : undefined;
1107
+ } else {
1108
+ this._sSelectedAppointment = undefined;
1094
1109
  }
1095
1110
 
1096
1111
  return aChangedApps;
@@ -1194,13 +1209,28 @@ sap.ui.define([
1194
1209
  }
1195
1210
  };
1196
1211
 
1212
+ SinglePlanningCalendarGrid.prototype._findSrcControl = function (oEvent) {
1213
+ if (!oEvent.target.parentElement || !oEvent.target.parentElement.classList.contains("sapUiCalendarRowApps")) {
1214
+ return oEvent.srcControl;
1215
+ }
1216
+
1217
+ // data-sap-ui-related - This is a relation to appointment object.
1218
+ // This is the connection between the DOM Element and the Object representing an appointment.
1219
+ var sAppointmentId = oEvent.target.parentElement.getAttribute("data-sap-ui-related");
1220
+
1221
+ // finding the appointment
1222
+ return this.getAppointments().find(function (oAppointment) {
1223
+ return oAppointment.sId === sAppointmentId;
1224
+ });
1225
+ };
1226
+
1197
1227
  /**
1198
1228
  * Helper function handling <code>keydown</code> or <code>tap</code> event on the grid.
1199
1229
  *
1200
1230
  * @param {jQuery.Event} oEvent The event object.
1201
1231
  */
1202
1232
  SinglePlanningCalendarGrid.prototype._fireSelectionEvent = function (oEvent) {
1203
- var oControl = oEvent.srcControl,
1233
+ var oControl = this._findSrcControl(oEvent),
1204
1234
  oGridCell = oEvent.target;
1205
1235
 
1206
1236
  if (oEvent.target.classList.contains("sapMSinglePCRow") ||
@@ -1216,6 +1246,19 @@ sap.ui.define([
1216
1246
  appointments: this._toggleAppointmentSelection(undefined, true)
1217
1247
  });
1218
1248
  } else if (oControl && oControl.isA("sap.ui.unified.CalendarAppointment")) {
1249
+
1250
+ // add suffix in appointment
1251
+ if (oGridCell.parentElement && oGridCell.parentElement.getAttribute("id")) {
1252
+ var sTargetId = oGridCell.parentElement.getAttribute("id");
1253
+
1254
+ // data-sap-ui-related - This is a relation to appointment object.
1255
+ // This is the connection between the DOM Element and the Object representing an appointment.
1256
+ var sBaseIDPart = oGridCell.parentElement.getAttribute("data-sap-ui-related");
1257
+ var sSuffix = sTargetId.replace(sBaseIDPart + "-", "");
1258
+
1259
+ oControl._setAppointmentPartSuffix(sSuffix);
1260
+ }
1261
+
1219
1262
  this.fireAppointmentSelect({
1220
1263
  appointment: oControl,
1221
1264
  appointments: this._toggleAppointmentSelection(oControl, !(oEvent.ctrlKey || oEvent.metaKey))