@openui5/sap.m 1.99.1 → 1.102.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 (517) hide show
  1. package/.eslintrc.json +18 -0
  2. package/THIRDPARTY.txt +5 -5
  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/ActionListItemRenderer.js +5 -7
  8. package/src/sap/m/ActionSelect.js +1 -1
  9. package/src/sap/m/ActionSheet.js +11 -4
  10. package/src/sap/m/App.js +1 -1
  11. package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
  12. package/src/sap/m/Avatar.js +1 -1
  13. package/src/sap/m/BadgeEnabler.js +3 -2
  14. package/src/sap/m/Bar.js +12 -21
  15. package/src/sap/m/Breadcrumbs.js +83 -10
  16. package/src/sap/m/BreadcrumbsRenderer.js +3 -7
  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 +2 -2
  20. package/src/sap/m/Carousel.js +4 -1
  21. package/src/sap/m/CarouselLayout.js +1 -1
  22. package/src/sap/m/CarouselRenderer.js +4 -2
  23. package/src/sap/m/CheckBox.js +2 -4
  24. package/src/sap/m/ColorPalette.js +13 -1
  25. package/src/sap/m/ColorPalettePopover.js +1 -1
  26. package/src/sap/m/Column.js +10 -1
  27. package/src/sap/m/ColumnHeaderPopover.js +1 -1
  28. package/src/sap/m/ColumnListItem.js +1 -1
  29. package/src/sap/m/ColumnListItemRenderer.js +10 -11
  30. package/src/sap/m/ColumnPopoverActionItem.js +1 -1
  31. package/src/sap/m/ColumnPopoverCustomItem.js +1 -1
  32. package/src/sap/m/ColumnPopoverItem.js +1 -1
  33. package/src/sap/m/ColumnPopoverSelectListItem.js +1 -1
  34. package/src/sap/m/ColumnPopoverSortItem.js +1 -1
  35. package/src/sap/m/ComboBox.js +23 -2
  36. package/src/sap/m/ComboBoxBase.js +4 -2
  37. package/src/sap/m/ComboBoxTextField.js +1 -1
  38. package/src/sap/m/CustomDynamicDateOption.js +1 -1
  39. package/src/sap/m/CustomListItem.js +1 -1
  40. package/src/sap/m/CustomListItemRenderer.js +4 -6
  41. package/src/sap/m/CustomTile.js +1 -1
  42. package/src/sap/m/CustomTileRenderer.js +1 -1
  43. package/src/sap/m/CustomTreeItem.js +1 -1
  44. package/src/sap/m/CustomTreeItemRenderer.js +2 -2
  45. package/src/sap/m/DatePicker.js +52 -9
  46. package/src/sap/m/DatePickerRenderer.js +0 -1
  47. package/src/sap/m/DateRangeSelection.js +42 -4
  48. package/src/sap/m/DateTimeField.js +8 -5
  49. package/src/sap/m/DateTimeInput.js +1 -1
  50. package/src/sap/m/DateTimePicker.js +97 -66
  51. package/src/sap/m/DateTimePickerRenderer.js +21 -4
  52. package/src/sap/m/Dialog.js +20 -7
  53. package/src/sap/m/DialogRenderer.js +1 -1
  54. package/src/sap/m/DisplayListItem.js +1 -1
  55. package/src/sap/m/DisplayListItemRenderer.js +4 -6
  56. package/src/sap/m/DraftIndicator.js +1 -1
  57. package/src/sap/m/DynamicDate.js +1 -1
  58. package/src/sap/m/DynamicDateFormat.js +13 -6
  59. package/src/sap/m/DynamicDateOption.js +12 -2
  60. package/src/sap/m/DynamicDateRange.js +129 -21
  61. package/src/sap/m/DynamicDateUtil.js +1 -2
  62. package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
  63. package/src/sap/m/ExpandableText.js +1 -1
  64. package/src/sap/m/FacetFilter.js +8 -1
  65. package/src/sap/m/FacetFilterItem.js +1 -1
  66. package/src/sap/m/FacetFilterList.js +6 -4
  67. package/src/sap/m/FeedContent.js +1 -1
  68. package/src/sap/m/FeedInput.js +2 -2
  69. package/src/sap/m/FeedListItem.js +2 -2
  70. package/src/sap/m/FeedListItemAction.js +1 -1
  71. package/src/sap/m/FeedListItemRenderer.js +10 -5
  72. package/src/sap/m/Fiori20Adapter.js +2 -2
  73. package/src/sap/m/FlexBox.js +1 -1
  74. package/src/sap/m/FlexItemData.js +1 -1
  75. package/src/sap/m/FormattedText.js +1 -1
  76. package/src/sap/m/GenericTag.js +5 -3
  77. package/src/sap/m/GenericTagRenderer.js +13 -5
  78. package/src/sap/m/GenericTile.js +101 -13
  79. package/src/sap/m/GenericTileLineModeRenderer.js +80 -3
  80. package/src/sap/m/GenericTileRenderer.js +108 -48
  81. package/src/sap/m/GroupHeaderListItem.js +1 -1
  82. package/src/sap/m/GrowingEnablement.js +138 -83
  83. package/src/sap/m/GrowingList.js +1 -1
  84. package/src/sap/m/HBox.js +1 -1
  85. package/src/sap/m/HeaderContainer.js +29 -13
  86. package/src/sap/m/HeaderContainerItemNavigator.js +1 -1
  87. package/src/sap/m/HyphenationSupport.js +0 -4
  88. package/src/sap/m/IconTabBar.js +3 -3
  89. package/src/sap/m/IconTabBarDragAndDropUtil.js +3 -2
  90. package/src/sap/m/IconTabBarSelectList.js +3 -5
  91. package/src/sap/m/IconTabFilter.js +1 -1
  92. package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
  93. package/src/sap/m/IconTabHeader.js +7 -11
  94. package/src/sap/m/IconTabSeparator.js +1 -1
  95. package/src/sap/m/IllustratedMessage.js +19 -1
  96. package/src/sap/m/Illustration.js +1 -1
  97. package/src/sap/m/Image.js +1 -1
  98. package/src/sap/m/ImageContent.js +1 -1
  99. package/src/sap/m/Input.js +10 -19
  100. package/src/sap/m/InputBase.js +5 -5
  101. package/src/sap/m/InputBaseRenderer.js +1 -2
  102. package/src/sap/m/InputListItem.js +1 -1
  103. package/src/sap/m/InputListItemRenderer.js +4 -6
  104. package/src/sap/m/Label.js +1 -1
  105. package/src/sap/m/LabelRenderer.js +1 -1
  106. package/src/sap/m/LightBox.js +1 -1
  107. package/src/sap/m/LightBoxItem.js +1 -1
  108. package/src/sap/m/Link.js +1 -1
  109. package/src/sap/m/List.js +1 -1
  110. package/src/sap/m/ListBase.js +52 -20
  111. package/src/sap/m/ListBaseRenderer.js +23 -9
  112. package/src/sap/m/ListItemBase.js +7 -5
  113. package/src/sap/m/MaskEnabler.js +1 -1
  114. package/src/sap/m/MaskInput.js +1 -1
  115. package/src/sap/m/MaskInputRule.js +1 -1
  116. package/src/sap/m/Menu.js +1 -1
  117. package/src/sap/m/MenuButton.js +5 -1
  118. package/src/sap/m/MenuItem.js +1 -1
  119. package/src/sap/m/MenuListItem.js +1 -1
  120. package/src/sap/m/MessageBox.js +1 -1
  121. package/src/sap/m/MessageItem.js +1 -1
  122. package/src/sap/m/MessageListItem.js +1 -1
  123. package/src/sap/m/MessagePage.js +1 -1
  124. package/src/sap/m/MessagePopover.js +18 -36
  125. package/src/sap/m/MessagePopoverItem.js +1 -1
  126. package/src/sap/m/MessageStrip.js +2 -2
  127. package/src/sap/m/MessageToast.js +1 -1
  128. package/src/sap/m/MessageView.js +1 -1
  129. package/src/sap/m/MultiComboBox.js +4 -2
  130. package/src/sap/m/MultiEditField.js +1 -1
  131. package/src/sap/m/MultiInput.js +12 -7
  132. package/src/sap/m/NavContainer.js +53 -53
  133. package/src/sap/m/NewsContent.js +1 -1
  134. package/src/sap/m/NotificationList.js +1 -1
  135. package/src/sap/m/NotificationListBase.js +175 -79
  136. package/src/sap/m/NotificationListGroup.js +1 -2
  137. package/src/sap/m/NotificationListGroupRenderer.js +4 -16
  138. package/src/sap/m/NotificationListItem.js +5 -16
  139. package/src/sap/m/NotificationListItemRenderer.js +0 -1
  140. package/src/sap/m/NumericContent.js +29 -21
  141. package/src/sap/m/NumericInput.js +3 -2
  142. package/src/sap/m/NumericInputRenderer.js +13 -1
  143. package/src/sap/m/ObjectAttribute.js +4 -5
  144. package/src/sap/m/ObjectAttributeRenderer.js +3 -3
  145. package/src/sap/m/ObjectHeader.js +1 -1
  146. package/src/sap/m/ObjectIdentifier.js +3 -3
  147. package/src/sap/m/ObjectListItem.js +1 -1
  148. package/src/sap/m/ObjectMarker.js +34 -10
  149. package/src/sap/m/ObjectMarkerRenderer.js +14 -2
  150. package/src/sap/m/ObjectNumber.js +1 -1
  151. package/src/sap/m/ObjectStatus.js +1 -1
  152. package/src/sap/m/ObjectStatusRenderer.js +3 -4
  153. package/src/sap/m/OverflowToolbar.js +21 -1
  154. package/src/sap/m/OverflowToolbarAssociativePopover.js +2 -2
  155. package/src/sap/m/OverflowToolbarButton.js +1 -1
  156. package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
  157. package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
  158. package/src/sap/m/P13nAnyFilterItem.js +1 -1
  159. package/src/sap/m/P13nColumnsItem.js +1 -1
  160. package/src/sap/m/P13nColumnsPanel.js +1 -1
  161. package/src/sap/m/P13nConditionPanel.js +9 -12
  162. package/src/sap/m/P13nDialog.js +1 -1
  163. package/src/sap/m/P13nDimMeasureItem.js +1 -1
  164. package/src/sap/m/P13nDimMeasurePanel.js +1 -1
  165. package/src/sap/m/P13nFilterItem.js +1 -1
  166. package/src/sap/m/P13nFilterPanel.js +1 -1
  167. package/src/sap/m/P13nGroupItem.js +1 -1
  168. package/src/sap/m/P13nGroupPanel.js +1 -1
  169. package/src/sap/m/P13nItem.js +1 -1
  170. package/src/sap/m/P13nPanel.js +1 -1
  171. package/src/sap/m/P13nSelectionItem.js +1 -1
  172. package/src/sap/m/P13nSelectionPanel.js +1 -1
  173. package/src/sap/m/P13nSortItem.js +1 -1
  174. package/src/sap/m/P13nSortPanel.js +1 -1
  175. package/src/sap/m/PDFViewer.js +3 -3
  176. package/src/sap/m/PDFViewerRenderer.js +15 -7
  177. package/src/sap/m/Page.js +4 -4
  178. package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
  179. package/src/sap/m/PagingButton.js +1 -1
  180. package/src/sap/m/Panel.js +1 -1
  181. package/src/sap/m/PlanningCalendar.js +15 -15
  182. package/src/sap/m/PlanningCalendarHeader.js +1 -4
  183. package/src/sap/m/PlanningCalendarLegend.js +1 -1
  184. package/src/sap/m/PlanningCalendarRow.js +1 -1
  185. package/src/sap/m/PlanningCalendarView.js +1 -1
  186. package/src/sap/m/Popover.js +15 -10
  187. package/src/sap/m/ProgressIndicator.js +1 -1
  188. package/src/sap/m/PullToRefresh.js +1 -1
  189. package/src/sap/m/QuickView.js +1 -1
  190. package/src/sap/m/QuickViewBase.js +1 -1
  191. package/src/sap/m/QuickViewCard.js +1 -1
  192. package/src/sap/m/QuickViewGroup.js +1 -1
  193. package/src/sap/m/QuickViewGroupElement.js +1 -1
  194. package/src/sap/m/QuickViewPage.js +5 -2
  195. package/src/sap/m/RadioButton.js +2 -2
  196. package/src/sap/m/RadioButtonGroup.js +14 -2
  197. package/src/sap/m/RadioButtonRenderer.js +0 -1
  198. package/src/sap/m/RangeSlider.js +19 -4
  199. package/src/sap/m/RatingIndicator.js +2 -2
  200. package/src/sap/m/ResponsivePopover.js +3 -5
  201. package/src/sap/m/ResponsiveScale.js +1 -1
  202. package/src/sap/m/ScrollBar.js +2 -2
  203. package/src/sap/m/ScrollContainer.js +1 -1
  204. package/src/sap/m/SearchField.js +1 -1
  205. package/src/sap/m/SegmentedButton.js +17 -9
  206. package/src/sap/m/SegmentedButtonItem.js +1 -1
  207. package/src/sap/m/SegmentedButtonRenderer.js +1 -1
  208. package/src/sap/m/Select.js +53 -4
  209. package/src/sap/m/SelectDialog.js +16 -20
  210. package/src/sap/m/SelectDialogBase.js +1 -1
  211. package/src/sap/m/SelectList.js +1 -1
  212. package/src/sap/m/SelectionDetails.js +3 -5
  213. package/src/sap/m/SelectionDetailsFacade.js +2 -2
  214. package/src/sap/m/SelectionDetailsItem.js +1 -1
  215. package/src/sap/m/SelectionDetailsItemLine.js +3 -3
  216. package/src/sap/m/Shell.js +1 -1
  217. package/src/sap/m/SimpleFixFlex.js +1 -1
  218. package/src/sap/m/SinglePlanningCalendar.js +1 -1
  219. package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
  220. package/src/sap/m/SinglePlanningCalendarGrid.js +94 -52
  221. package/src/sap/m/SinglePlanningCalendarGridRenderer.js +10 -9
  222. package/src/sap/m/SinglePlanningCalendarMonthGrid.js +24 -10
  223. package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
  224. package/src/sap/m/SinglePlanningCalendarView.js +1 -1
  225. package/src/sap/m/SinglePlanningCalendarWeekView.js +1 -1
  226. package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
  227. package/src/sap/m/SlideTile.js +2 -2
  228. package/src/sap/m/SlideTileRenderer.js +8 -1
  229. package/src/sap/m/Slider.js +1 -1
  230. package/src/sap/m/SliderTooltip.js +1 -1
  231. package/src/sap/m/SliderTooltipBase.js +1 -1
  232. package/src/sap/m/SliderTooltipContainer.js +5 -1
  233. package/src/sap/m/SplitApp.js +1 -1
  234. package/src/sap/m/SplitButton.js +1 -1
  235. package/src/sap/m/SplitContainer.js +4 -4
  236. package/src/sap/m/StandardDynamicDateOption.js +41 -18
  237. package/src/sap/m/StandardListItem.js +3 -3
  238. package/src/sap/m/StandardListItemRenderer.js +1 -1
  239. package/src/sap/m/StandardTile.js +1 -1
  240. package/src/sap/m/StandardTreeItem.js +1 -1
  241. package/src/sap/m/StepInput.js +4 -4
  242. package/src/sap/m/SuggestionItem.js +1 -1
  243. package/src/sap/m/SuggestionsPopover.js +6 -14
  244. package/src/sap/m/Switch.js +1 -1
  245. package/src/sap/m/TabContainer.js +1 -1
  246. package/src/sap/m/TabContainerItem.js +1 -1
  247. package/src/sap/m/TabStrip.js +6 -4
  248. package/src/sap/m/TabStripItem.js +1 -1
  249. package/src/sap/m/TabStripRenderer.js +2 -2
  250. package/src/sap/m/Table.js +34 -3
  251. package/src/sap/m/TablePersoController.js +1 -1
  252. package/src/sap/m/TablePersoDialog.js +1 -1
  253. package/src/sap/m/TablePersoProvider.js +1 -1
  254. package/src/sap/m/TableRenderer.js +9 -4
  255. package/src/sap/m/TableSelectDialog.js +15 -11
  256. package/src/sap/m/Text.js +1 -1
  257. package/src/sap/m/TextArea.js +1 -1
  258. package/src/sap/m/Tile.js +3 -3
  259. package/src/sap/m/TileContainer.js +6 -4
  260. package/src/sap/m/TileContent.js +34 -2
  261. package/src/sap/m/TileContentRenderer.js +44 -8
  262. package/src/sap/m/TileRenderer.js +1 -1
  263. package/src/sap/m/TimePicker.js +53 -61
  264. package/src/sap/m/TimePickerClock.js +1 -1
  265. package/src/sap/m/TimePickerClocks.js +1 -1
  266. package/src/sap/m/TimePickerInputs.js +1 -1
  267. package/src/sap/m/TimePickerInternals.js +2 -2
  268. package/src/sap/m/TimePickerRenderer.js +2 -4
  269. package/src/sap/m/TimePickerSlider.js +1 -1
  270. package/src/sap/m/TimePickerSliders.js +1 -1
  271. package/src/sap/m/Title.js +1 -1
  272. package/src/sap/m/TitlePropagationSupport.js +1 -1
  273. package/src/sap/m/TitleRenderer.js +2 -2
  274. package/src/sap/m/ToggleButton.js +1 -1
  275. package/src/sap/m/Token.js +1 -1
  276. package/src/sap/m/Tokenizer.js +19 -7
  277. package/src/sap/m/TokenizerRenderer.js +1 -1
  278. package/src/sap/m/Toolbar.js +7 -1
  279. package/src/sap/m/ToolbarLayoutData.js +1 -1
  280. package/src/sap/m/ToolbarSeparator.js +5 -3
  281. package/src/sap/m/ToolbarSpacer.js +1 -1
  282. package/src/sap/m/Tree.js +1 -1
  283. package/src/sap/m/TreeItemBase.js +1 -1
  284. package/src/sap/m/UploadCollection.js +5 -3
  285. package/src/sap/m/UploadCollectionItem.js +2 -1
  286. package/src/sap/m/UploadCollectionParameter.js +2 -1
  287. package/src/sap/m/UploadCollectionRenderer.js +1 -0
  288. package/src/sap/m/UploadCollectionToolbarPlaceholder.js +2 -1
  289. package/src/sap/m/VBox.js +1 -1
  290. package/src/sap/m/ValueStateHeader.js +1 -1
  291. package/src/sap/m/VariantManagement.js +2492 -0
  292. package/src/sap/m/ViewSettingsCustomItem.js +1 -1
  293. package/src/sap/m/ViewSettingsCustomTab.js +1 -1
  294. package/src/sap/m/ViewSettingsDialog.js +106 -49
  295. package/src/sap/m/ViewSettingsFilterItem.js +1 -1
  296. package/src/sap/m/ViewSettingsItem.js +1 -1
  297. package/src/sap/m/VisibleItem.js +2 -2
  298. package/src/sap/m/WheelSlider.js +1 -1
  299. package/src/sap/m/WheelSliderContainer.js +1 -1
  300. package/src/sap/m/Wizard.js +22 -4
  301. package/src/sap/m/WizardProgressNavigator.js +10 -3
  302. package/src/sap/m/WizardStep.js +1 -1
  303. package/src/sap/m/changeHandler/AddTableColumn.js +3 -5
  304. package/src/sap/m/changeHandler/ChangeLinkTarget.js +1 -1
  305. package/src/sap/m/changeHandler/CombineButtons.js +1 -1
  306. package/src/sap/m/changeHandler/MoveTableColumns.js +1 -1
  307. package/src/sap/m/changeHandler/SelectIconTabBarFilter.js +1 -1
  308. package/src/sap/m/changeHandler/SplitMenuButton.js +5 -5
  309. package/src/sap/m/delegate/DateNavigation.js +2 -2
  310. package/src/sap/m/designtime/ListBase.designtime.js +3 -0
  311. package/src/sap/m/designtime/VariantManagement.designtime.js +56 -0
  312. package/src/sap/m/inputUtils/SuggestionsPopoverDialogMixin.js +22 -16
  313. package/src/sap/m/inputUtils/SuggestionsPopoverPopoverMixin.js +10 -2
  314. package/src/sap/m/inputUtils/highlightDOMElements.js +4 -3
  315. package/src/sap/m/inputUtils/typeAhead.js +7 -7
  316. package/src/sap/m/library.js +38 -31
  317. package/src/sap/m/messagebundle.properties +177 -24
  318. package/src/sap/m/messagebundle_ar.properties +116 -18
  319. package/src/sap/m/messagebundle_bg.properties +116 -18
  320. package/src/sap/m/messagebundle_ca.properties +116 -18
  321. package/src/sap/m/messagebundle_cs.properties +118 -20
  322. package/src/sap/m/messagebundle_cy.properties +116 -18
  323. package/src/sap/m/messagebundle_da.properties +116 -18
  324. package/src/sap/m/messagebundle_de.properties +117 -19
  325. package/src/sap/m/messagebundle_el.properties +119 -21
  326. package/src/sap/m/messagebundle_en.properties +115 -17
  327. package/src/sap/m/messagebundle_en_GB.properties +115 -17
  328. package/src/sap/m/messagebundle_en_US_sappsd.properties +115 -17
  329. package/src/sap/m/messagebundle_en_US_saprigi.properties +115 -17
  330. package/src/sap/m/messagebundle_en_US_saptrc.properties +115 -17
  331. package/src/sap/m/messagebundle_es.properties +116 -18
  332. package/src/sap/m/messagebundle_es_MX.properties +116 -18
  333. package/src/sap/m/messagebundle_et.properties +116 -18
  334. package/src/sap/m/messagebundle_fi.properties +115 -17
  335. package/src/sap/m/messagebundle_fr.properties +119 -21
  336. package/src/sap/m/messagebundle_fr_CA.properties +115 -17
  337. package/src/sap/m/messagebundle_hi.properties +114 -16
  338. package/src/sap/m/messagebundle_hr.properties +116 -18
  339. package/src/sap/m/messagebundle_hu.properties +116 -18
  340. package/src/sap/m/messagebundle_id.properties +115 -17
  341. package/src/sap/m/messagebundle_it.properties +124 -26
  342. package/src/sap/m/messagebundle_iw.properties +116 -18
  343. package/src/sap/m/messagebundle_ja.properties +115 -17
  344. package/src/sap/m/messagebundle_kk.properties +116 -18
  345. package/src/sap/m/messagebundle_ko.properties +116 -18
  346. package/src/sap/m/messagebundle_lt.properties +116 -18
  347. package/src/sap/m/messagebundle_lv.properties +115 -17
  348. package/src/sap/m/messagebundle_ms.properties +115 -17
  349. package/src/sap/m/messagebundle_nl.properties +115 -17
  350. package/src/sap/m/messagebundle_no.properties +116 -18
  351. package/src/sap/m/messagebundle_pl.properties +116 -18
  352. package/src/sap/m/messagebundle_pt.properties +125 -27
  353. package/src/sap/m/messagebundle_pt_PT.properties +116 -18
  354. package/src/sap/m/messagebundle_ro.properties +116 -18
  355. package/src/sap/m/messagebundle_ru.properties +116 -18
  356. package/src/sap/m/messagebundle_sh.properties +116 -18
  357. package/src/sap/m/messagebundle_sk.properties +116 -18
  358. package/src/sap/m/messagebundle_sl.properties +116 -18
  359. package/src/sap/m/messagebundle_sv.properties +117 -19
  360. package/src/sap/m/messagebundle_th.properties +115 -17
  361. package/src/sap/m/messagebundle_tr.properties +116 -18
  362. package/src/sap/m/messagebundle_uk.properties +116 -18
  363. package/src/sap/m/messagebundle_vi.properties +115 -17
  364. package/src/sap/m/messagebundle_zh_CN.properties +116 -18
  365. package/src/sap/m/messagebundle_zh_TW.properties +115 -17
  366. package/src/sap/m/p13n/AbstractContainer.js +2 -2
  367. package/src/sap/m/p13n/AbstractContainerItem.js +2 -2
  368. package/src/sap/m/p13n/BasePanel.js +34 -15
  369. package/src/sap/m/p13n/Container.js +11 -4
  370. package/src/sap/m/p13n/GroupPanel.js +17 -5
  371. package/src/sap/m/p13n/Popup.js +9 -2
  372. package/src/sap/m/p13n/QueryPanel.js +89 -35
  373. package/src/sap/m/p13n/SelectionPanel.js +42 -9
  374. package/src/sap/m/p13n/SortPanel.js +27 -13
  375. package/src/sap/m/plugins/ColumnResizer.js +48 -13
  376. package/src/sap/m/plugins/DataStateIndicator.js +3 -2
  377. package/src/sap/m/plugins/PasteProvider.js +1 -1
  378. package/src/sap/m/plugins/PluginBase.js +1 -1
  379. package/src/sap/m/rules/Breadcrumbs.support.js +1 -1
  380. package/src/sap/m/rules/CheckBox.support.js +1 -1
  381. package/src/sap/m/rules/Image.support.js +1 -1
  382. package/src/sap/m/rules/Link.support.js +1 -1
  383. package/src/sap/m/rules/MessagePage.support.js +1 -1
  384. package/src/sap/m/rules/ObjectHeader.support.js +6 -6
  385. package/src/sap/m/rules/ObjectListItem.support.js +1 -1
  386. package/src/sap/m/rules/ObjectMarker.support.js +1 -1
  387. package/src/sap/m/rules/ObjectStatus.support.js +1 -1
  388. package/src/sap/m/rules/Select.support.js +1 -1
  389. package/src/sap/m/rules/Table.support.js +3 -3
  390. package/src/sap/m/rules/Tokenizer.support.js +4 -2
  391. package/src/sap/m/semantic/AddAction.js +1 -1
  392. package/src/sap/m/semantic/CancelAction.js +1 -1
  393. package/src/sap/m/semantic/DeleteAction.js +1 -1
  394. package/src/sap/m/semantic/DetailPage.js +1 -1
  395. package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
  396. package/src/sap/m/semantic/EditAction.js +1 -1
  397. package/src/sap/m/semantic/FavoriteAction.js +1 -1
  398. package/src/sap/m/semantic/FilterAction.js +1 -1
  399. package/src/sap/m/semantic/FilterSelect.js +1 -1
  400. package/src/sap/m/semantic/FlagAction.js +1 -1
  401. package/src/sap/m/semantic/ForwardAction.js +1 -1
  402. package/src/sap/m/semantic/FullscreenPage.js +1 -1
  403. package/src/sap/m/semantic/GroupAction.js +1 -1
  404. package/src/sap/m/semantic/GroupSelect.js +1 -1
  405. package/src/sap/m/semantic/MainAction.js +1 -1
  406. package/src/sap/m/semantic/MasterPage.js +1 -1
  407. package/src/sap/m/semantic/MessagesIndicator.js +1 -1
  408. package/src/sap/m/semantic/MultiSelectAction.js +1 -1
  409. package/src/sap/m/semantic/NegativeAction.js +1 -1
  410. package/src/sap/m/semantic/OpenInAction.js +1 -1
  411. package/src/sap/m/semantic/PositiveAction.js +1 -1
  412. package/src/sap/m/semantic/PrintAction.js +1 -1
  413. package/src/sap/m/semantic/SaveAction.js +1 -1
  414. package/src/sap/m/semantic/Segment.js +1 -1
  415. package/src/sap/m/semantic/SegmentedContainer.js +1 -1
  416. package/src/sap/m/semantic/SemanticButton.js +1 -1
  417. package/src/sap/m/semantic/SemanticConfiguration.js +7 -14
  418. package/src/sap/m/semantic/SemanticControl.js +1 -1
  419. package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +1 -1
  420. package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +1 -1
  421. package/src/sap/m/semantic/SemanticPage.js +1 -1
  422. package/src/sap/m/semantic/SemanticSelect.js +1 -1
  423. package/src/sap/m/semantic/SemanticToggleButton.js +1 -1
  424. package/src/sap/m/semantic/SendEmailAction.js +1 -1
  425. package/src/sap/m/semantic/SendMessageAction.js +1 -1
  426. package/src/sap/m/semantic/ShareInJamAction.js +1 -1
  427. package/src/sap/m/semantic/ShareMenu.js +2 -2
  428. package/src/sap/m/semantic/ShareMenuPage.js +1 -1
  429. package/src/sap/m/semantic/SortAction.js +1 -1
  430. package/src/sap/m/semantic/SortSelect.js +1 -1
  431. package/src/sap/m/table/Util.js +114 -29
  432. package/src/sap/m/table/columnmenu/ActionItem.js +1 -1
  433. package/src/sap/m/table/columnmenu/Entry.js +1 -11
  434. package/src/sap/m/table/columnmenu/Item.js +1 -1
  435. package/src/sap/m/table/columnmenu/ItemBase.js +11 -1
  436. package/src/sap/m/table/columnmenu/ItemContainer.js +29 -0
  437. package/src/sap/m/table/columnmenu/Menu.js +228 -35
  438. package/src/sap/m/table/columnmenu/MenuRenderer.js +5 -28
  439. package/src/sap/m/table/columnmenu/QuickAction.js +14 -3
  440. package/src/sap/m/table/columnmenu/QuickActionBase.js +11 -1
  441. package/src/sap/m/table/columnmenu/QuickActionContainer.js +29 -0
  442. package/src/sap/m/table/columnmenu/QuickActionItem.js +5 -5
  443. package/src/sap/m/table/columnmenu/QuickGroup.js +20 -16
  444. package/src/sap/m/table/columnmenu/QuickGroupItem.js +1 -1
  445. package/src/sap/m/table/columnmenu/QuickSort.js +2 -1
  446. package/src/sap/m/table/columnmenu/QuickSortItem.js +29 -28
  447. package/src/sap/m/table/columnmenu/QuickTotal.js +20 -25
  448. package/src/sap/m/table/columnmenu/QuickTotalItem.js +1 -1
  449. package/src/sap/m/themes/base/ActionListItem.less +1 -1
  450. package/src/sap/m/themes/base/Avatar.less +11 -5
  451. package/src/sap/m/themes/base/Button.less +2 -7
  452. package/src/sap/m/themes/base/Carousel.less +72 -87
  453. package/src/sap/m/themes/base/CheckBox.less +0 -1
  454. package/src/sap/m/themes/base/ColumnListItem.less +0 -3
  455. package/src/sap/m/themes/base/ColumnMenu.less +12 -4
  456. package/src/sap/m/themes/base/DatePicker.less +7 -2
  457. package/src/sap/m/themes/base/Dialog.less +10 -6
  458. package/src/sap/m/themes/base/GenericTile.less +672 -170
  459. package/src/sap/m/themes/base/IconTabBar.less +45 -14
  460. package/src/sap/m/themes/base/IconTabBarSelectList.less +5 -4
  461. package/src/sap/m/themes/base/Input.less +1 -1
  462. package/src/sap/m/themes/base/InputBase.less +114 -11
  463. package/src/sap/m/themes/base/Label.less +4 -1
  464. package/src/sap/m/themes/base/LightBox.less +9 -7
  465. package/src/sap/m/themes/base/Link.less +12 -4
  466. package/src/sap/m/themes/base/ListBase.less +4 -0
  467. package/src/sap/m/themes/base/ListItemBase.less +1 -12
  468. package/src/sap/m/themes/base/MenuButton.less +20 -4
  469. package/src/sap/m/themes/base/MessageBox.less +5 -5
  470. package/src/sap/m/themes/base/MessageToast.less +2 -2
  471. package/src/sap/m/themes/base/MultiInput.less +1 -1
  472. package/src/sap/m/themes/base/NewsContent.less +0 -9
  473. package/src/sap/m/themes/base/NotificationListBase.less +9 -14
  474. package/src/sap/m/themes/base/NotificationListGroup.less +30 -44
  475. package/src/sap/m/themes/base/NotificationListItem.less +14 -18
  476. package/src/sap/m/themes/base/NumericContent.less +1 -5
  477. package/src/sap/m/themes/base/ObjectAttribute.less +1 -1
  478. package/src/sap/m/themes/base/ObjectListItem.less +3 -0
  479. package/src/sap/m/themes/base/ObjectMarker.less +3 -1
  480. package/src/sap/m/themes/base/ObjectStatus.less +8 -0
  481. package/src/sap/m/themes/base/Page.less +1 -1
  482. package/src/sap/m/themes/base/Panel.less +1 -1
  483. package/src/sap/m/themes/base/Popover.less +10 -7
  484. package/src/sap/m/themes/base/QuickView.less +14 -2
  485. package/src/sap/m/themes/base/RadioButton.less +22 -3
  486. package/src/sap/m/themes/base/RatingIndicator.less +4 -0
  487. package/src/sap/m/themes/base/SearchField.less +23 -59
  488. package/src/sap/m/themes/base/SinglePlanningCalendarGrid.less +3 -29
  489. package/src/sap/m/themes/base/SlideTile.less +18 -0
  490. package/src/sap/m/themes/base/Slider.less +18 -18
  491. package/src/sap/m/themes/base/SplitButton.less +5 -0
  492. package/src/sap/m/themes/base/StandardListItem.less +5 -9
  493. package/src/sap/m/themes/base/SuggestionsPopover.less +1 -1
  494. package/src/sap/m/themes/base/Table.less +18 -21
  495. package/src/sap/m/themes/base/TextArea.less +32 -0
  496. package/src/sap/m/themes/base/TileContent.less +41 -1
  497. package/src/sap/m/themes/base/Token.less +17 -15
  498. package/src/sap/m/themes/base/Tokenizer.less +2 -2
  499. package/src/sap/m/themes/base/Toolbar.less +1 -1
  500. package/src/sap/m/themes/base/UploadCollection.less +2 -0
  501. package/src/sap/m/themes/base/ValueStateMessage.less +3 -3
  502. package/src/sap/m/themes/base/VariantManagement.less +97 -0
  503. package/src/sap/m/themes/base/Wizard.less +5 -4
  504. package/src/sap/m/themes/base/WizardProgressNavigator.less +8 -0
  505. package/src/sap/m/themes/base/library.source.less +1 -0
  506. package/src/sap/m/themes/sap_hcb/Carousel.less +3 -7
  507. package/src/sap/m/themes/sap_hcb/ComboBoxBase.less +0 -12
  508. package/src/sap/m/themes/sap_hcb/InputBase.less +7 -42
  509. package/src/sap/m/themes/sap_hcb/Panel.less +4 -0
  510. package/src/sap/m/themes/sap_hcb/Popover.less +3 -0
  511. package/src/sap/m/themes/sap_hcb/Slider.less +11 -0
  512. package/src/sap/m/themes/sap_hcb/Token.less +4 -0
  513. package/src/sap/m/themes/sap_hcb/Tokenizer.less +1 -0
  514. package/src/sap/m/themes/sap_hcb/ValueStateHeader.less +4 -0
  515. package/src/sap/m/themes/sap_hcb/ValueStateMessage.less +12 -1
  516. package/src/sap/m/upload/UploadSet.js +330 -34
  517. package/src/sap/m/upload/UploadSetItem.js +74 -5
@@ -16,9 +16,9 @@ sap.ui.define([
16
16
  'sap/ui/core/Control',
17
17
  'sap/ui/Device',
18
18
  'sap/ui/core/format/DateFormat',
19
- 'sap/ui/core/format/DateFormatTimezoneDisplay',
20
19
  'sap/ui/core/LocaleData',
21
20
  'sap/ui/core/Core',
21
+ 'sap/ui/core/format/TimezoneUtil',
22
22
  './TimePickerClocks',
23
23
  './DateTimePickerRenderer',
24
24
  './SegmentedButton',
@@ -39,9 +39,9 @@ sap.ui.define([
39
39
  Control,
40
40
  Device,
41
41
  DateFormat,
42
- DateFormatTimezoneDisplay,
43
42
  LocaleData,
44
43
  Core,
44
+ TimezoneUtil,
45
45
  TimePickerClocks,
46
46
  DateTimePickerRenderer,
47
47
  SegmentedButton,
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  // shortcut for sap.m.PlacementType and sap.m.ButtonType
58
58
  var PlacementType = library.PlacementType,
59
59
  ButtonType = library.ButtonType,
60
- // From sap.ui.Device.media.RANGESETS.SAP_STANDARD - "Phone": For screens smaller than 600 pixels.
60
+ // From Device.media.RANGESETS.SAP_STANDARD - "Phone": For screens smaller than 600 pixels.
61
61
  STANDART_PHONE_RANGESET = "Phone",
62
62
  CalendarType = coreLibrary.CalendarType;
63
63
 
@@ -145,7 +145,7 @@ sap.ui.define([
145
145
  * mobile devices, it opens in full screen.
146
146
  *
147
147
  * @extends sap.m.DatePicker
148
- * @version 1.99.1
148
+ * @version 1.102.0
149
149
  *
150
150
  * @constructor
151
151
  * @public
@@ -313,19 +313,14 @@ sap.ui.define([
313
313
  if (Device.system.phone || jQuery('html').hasClass("sapUiMedia-Std-Phone") || this.getForcePhoneView()) {
314
314
  oSwitcher.setVisible(true);
315
315
  oSwitcher.setSelectedKey("Cal");
316
+ this.getCalendar().addDelegate({
317
+ onAfterRendering: function() {
318
+ this._switchVisibility(oSwitcher.getSelectedKey());
319
+ }.bind(this)
320
+ });
316
321
  } else {
317
322
  oSwitcher.setVisible(false);
318
323
  }
319
-
320
- },
321
-
322
- onAfterRendering: function() {
323
- if (Device.system.phone || jQuery('html').hasClass("sapUiMedia-Std-Phone") || this.getForcePhoneView()) {
324
- var oSwitcher = this.getAggregation("_switcher");
325
- var sKey = oSwitcher.getSelectedKey();
326
- this._switchVisibility(sKey);
327
- }
328
-
329
324
  },
330
325
 
331
326
  _handleSelect: function(oEvent) {
@@ -349,7 +344,7 @@ sap.ui.define([
349
344
  }
350
345
 
351
346
  if (sKey === "Cal") {
352
- oCalendar.$().css("display", "");
347
+ oCalendar.$().css("display", "flex");
353
348
  oClocks.$().css("display", "none");
354
349
  oCalendar.getFocusDomRef() && oCalendar.getFocusDomRef().focus();
355
350
  } else {
@@ -373,21 +368,6 @@ sap.ui.define([
373
368
 
374
369
  return this._oDateTimePicker.getSpecialDates();
375
370
 
376
- },
377
-
378
- onkeydown: function(oEvent) {
379
- var bIsTabForward = oEvent.keyCode === KeyCodes.TAB && !oEvent.shiftKey;
380
- var bIsTabBackward = oEvent.keyCode === KeyCodes.TAB && oEvent.shiftKey;
381
- if (bIsTabForward) {
382
- if (oEvent.target.classList.contains('sapUiCalHeadToday')
383
- || (oEvent.target.classList.contains('sapUiCalHeadBLast') && !this._oDateTimePicker._oCalendar.getShowCurrentDateButton())) {
384
- this.getAggregation('clocks').getDomRef().children[0].children[0].focus();
385
- }
386
- }
387
- if (bIsTabBackward && oEvent.target.classList.contains('sapUiCalItem')) {
388
- var iLastElementIndex = this.oParent.getAggregation("footer").getAggregation("content").length - 1;
389
- this.oParent.getAggregation("footer").getAggregation("content")[iLastElementIndex].focus();
390
- }
391
371
  }
392
372
  });
393
373
 
@@ -397,11 +377,40 @@ sap.ui.define([
397
377
  this._bOnlyCalendar = false;
398
378
  };
399
379
 
380
+ DateTimePicker.prototype.setValue = function(sValue) {
381
+ var sFallbackValue;
382
+
383
+ DatePicker.prototype.setValue.apply(this, arguments);
384
+
385
+ delete this._prefferedValue;
386
+
387
+ if (!this.getDateValue()) {
388
+ sFallbackValue = this._fallbackParse(sValue);
389
+
390
+ if (typeof sFallbackValue === "string") {
391
+ this._bValid = true;
392
+ this._prefferedValue = sFallbackValue;
393
+
394
+ // there is a re-render comming, but this updates the dom immediately to avoid flickering
395
+ if (this.getDomRef() && this._$input.val() !== sFallbackValue) {
396
+ this._$input.val(sFallbackValue);
397
+ this._curpos = this._$input.cursorPos();
398
+ }
399
+ }
400
+ }
401
+
402
+ return this;
403
+ };
404
+
400
405
  DateTimePicker.prototype.setTimezone = function(sTimezone) {
401
406
  var oCurrentDateValue,
402
407
  sFormattedValue,
403
408
  oNewDateValue;
404
409
 
410
+ if (this.getTimezone() === sTimezone) {
411
+ return this;
412
+ }
413
+
405
414
  oCurrentDateValue = this.getDateValue() || this._parseValue(this.getValue(), false);
406
415
  sFormattedValue = this._formatValue(oCurrentDateValue, false);
407
416
 
@@ -549,6 +558,7 @@ sap.ui.define([
549
558
  var oResourceBundle;
550
559
 
551
560
  if (this._oTimezonePopup) {
561
+ this._oTimezonePopup.setTitle(this._getTimezone(true));
552
562
  return this._oTimezonePopup;
553
563
  }
554
564
 
@@ -597,11 +607,11 @@ sap.ui.define([
597
607
  };
598
608
 
599
609
  /**
600
- * Gets the format options of the value or dateValue binding with timezone.
601
- * @returns {object} The binding format options or an empty object instance.
610
+ * Gets the format options of the value or dateValue binding.
611
+ * @returns {object} The binding format options or undefined.
602
612
  * @private
603
613
  */
604
- DateTimePicker.prototype._getBindingWithTimezoneFormatOptions = function() {
614
+ DateTimePicker.prototype._getBindingFormatOptions = function() {
605
615
  var oBinding = this.getBinding("value") || this.getBinding("dateValue"),
606
616
  oBindingType;
607
617
 
@@ -609,7 +619,7 @@ sap.ui.define([
609
619
  oBindingType = oBinding.getType();
610
620
  }
611
621
 
612
- if (oBindingType && oBindingType.isA(["sap.ui.model.odata.type.DateTimeWithTimezone"])) {
622
+ if (this._isSupportedBindingType(oBindingType)) {
613
623
  return jQuery.extend({}, oBindingType.getFormatOptions());
614
624
  }
615
625
  };
@@ -623,14 +633,14 @@ sap.ui.define([
623
633
  * @private
624
634
  */
625
635
  DateTimePicker.prototype._getTimezoneFormatOptions = function(bDisplayFormat) {
626
- var oFormatOptions = this._getBindingWithTimezoneFormatOptions() || {},
636
+ var oFormatOptions = this._getBindingFormatOptions() || {},
627
637
  sFormat = bDisplayFormat ? this.getDisplayFormat() : this.getValueFormat(),
628
638
  oBinding = this.getBinding("value") || this.getBinding("dateValue"),
629
639
  oBindingType = oBinding && oBinding.getType && oBinding.getType();
630
640
 
631
- if (bDisplayFormat || !this._getTimezone()
632
- || (oBindingType && this._isSupportedBindingType(oBindingType))) {
633
- oFormatOptions.showTimezone = DateFormatTimezoneDisplay.Hide;
641
+ if (bDisplayFormat || !this._getTimezone() ||
642
+ (oBindingType && !oBindingType.isA(["sap.ui.model.odata.type.DateTimeWithTimezone"]))) {
643
+ oFormatOptions.showTimezone = false;
634
644
  }
635
645
 
636
646
  if (oFormatOptions.relative === undefined) {
@@ -647,7 +657,7 @@ sap.ui.define([
647
657
  oFormatOptions.strictParsing = true;
648
658
  }
649
659
 
650
- if (sFormat && (!oBinding || !oBindingType || !this._isSupportedBindingType(oBindingType))) {
660
+ if (sFormat && !this._isSupportedBindingType(oBindingType)) {
651
661
  oFormatOptions[this._checkStyle(sFormat) ? "style" : "pattern"] = sFormat;
652
662
  }
653
663
 
@@ -674,7 +684,7 @@ sap.ui.define([
674
684
  oBindingType = oBinding && oBinding.getType();
675
685
 
676
686
  if (this.getShowTimezone() === undefined && oBindingType && oBindingType.isA(["sap.ui.model.odata.type.DateTimeWithTimezone"])) {
677
- return oBindingType.getFormatOptions().showTimezone !== DateFormatTimezoneDisplay.Hide;
687
+ return oBindingType.getFormatOptions().showTimezone !== false;
678
688
  }
679
689
 
680
690
  return this.getShowTimezone();
@@ -739,14 +749,10 @@ sap.ui.define([
739
749
  oBindingType = oBinding && oBinding.getType(),
740
750
  aDateWithTimezone;
741
751
 
742
- if (oBindingType) {
743
- if (oBindingType.isA(["sap.ui.model.odata.type.DateTimeWithTimezone"])) {
744
- var aCurrentBindingValues = oBinding.getCurrentValues().slice(0);
745
- aCurrentBindingValues[1] = sTimezone || this._getTimezone(true);
746
- return oBindingType.parseValue(sValue, "string", aCurrentBindingValues)[0];
747
- } else if (!bDisplayFormat && this._isSupportedBindingType(oBindingType)) {
748
- return DatePicker.prototype._parseValue.apply(this, arguments);
749
- }
752
+ if (oBindingType && oBindingType.isA(["sap.ui.model.odata.type.DateTimeWithTimezone"])) {
753
+ var aCurrentBindingValues = oBinding.getCurrentValues().slice(0);
754
+ aCurrentBindingValues[1] = sTimezone || this._getTimezone(true);
755
+ return oBindingType.parseValue(sValue, "string", aCurrentBindingValues)[0];
750
756
  }
751
757
 
752
758
  aDateWithTimezone = this._getFormatter(bDisplayFormat)
@@ -767,6 +773,36 @@ sap.ui.define([
767
773
  return this._getFormatter(!bValueFormat).format(oDate, sTimezone || this._getTimezone(true));
768
774
  };
769
775
 
776
+ /**
777
+ * Tries to parse the value to see if it is a timezone only string.
778
+ * @param {string} sValue A value string
779
+ * @return {string|null} An empty string indicating success or null
780
+ * @private
781
+ */
782
+ DateTimePicker.prototype._fallbackParse = function(sValue) {
783
+ return this._getFallbackParser().parse(sValue) ? "" : null;
784
+ };
785
+
786
+ DateTimePicker.prototype._getFallbackParser = function() {
787
+ if (!this._fallbackParser) {
788
+ this._fallbackParser = DateFormat.getDateTimeWithTimezoneInstance({
789
+ showDate: false,
790
+ showTime: false,
791
+ showTimezone: true
792
+ });
793
+ }
794
+
795
+ return this._fallbackParser;
796
+ };
797
+
798
+ DateTimePicker.prototype._getPickerParser = function() {
799
+ if (!this._clocksParser) {
800
+ this._clocksParser = DateFormat.getDateTimeWithTimezoneInstance({ showTimezone: false });
801
+ }
802
+
803
+ return this._clocksParser;
804
+ };
805
+
770
806
  DateTimePicker.prototype._getLocaleBasedPattern = function(sPlaceholder) {
771
807
  var oLocaleData = LocaleData.getInstance(
772
808
  Core.getConfiguration().getFormatSettings().getFormatLocale()
@@ -856,7 +892,7 @@ sap.ui.define([
856
892
  this.addStyleClass(InputBase.ICON_PRESSED_CSS_CLASS);
857
893
 
858
894
  var oPopover = this._oPopup.getAggregation("_popup");
859
- oPopover.oPopup.setAutoCloseAreas([oDomRef]);
895
+ oPopover.oPopup.setExtraContent([oDomRef]);
860
896
 
861
897
  this._oPopup.openBy(oDomRef || this);
862
898
  };
@@ -923,6 +959,10 @@ sap.ui.define([
923
959
  this._oOKButton.setEnabled(false);
924
960
  }
925
961
 
962
+ // convert the date to local date for the calendar and the clocks
963
+ sFormattedDate = this._getPickerParser().format(oDate, this._getTimezone(true));
964
+ oDate = this._getPickerParser().parse(sFormattedDate, TimezoneUtil.getLocalTimezone())[0];
965
+
926
966
  this._oCalendar.focusDate(oDate);
927
967
 
928
968
  if (bDateFound) {
@@ -931,17 +971,17 @@ sap.ui.define([
931
971
  }
932
972
  }
933
973
 
934
- sFormattedDate = this._formatValue(oDate, false);
935
- oDate = this._parseValue(sFormattedDate, true, Core.getConfiguration().getTimezone());
936
974
  this._oClocks._setTimeValues(oDate);
937
975
  };
938
976
 
939
977
  DateTimePicker.prototype._getSelectedDate = function(){
940
-
941
978
  var oDate = DatePicker.prototype._getSelectedDate.apply(this, arguments),
942
979
  sFormattedDate;
943
980
 
944
981
  if (oDate) {
982
+ sFormattedDate = this._getPickerParser().format(oDate, TimezoneUtil.getLocalTimezone());
983
+ oDate = this._getPickerParser().parse(sFormattedDate, this._getTimezone(true))[0];
984
+
945
985
  var oDateTime = this._oClocks.getTimeValues();
946
986
  var sPattern = this._oClocks._getDisplayFormatPattern();
947
987
  if (sPattern.search("h") >= 0 || sPattern.search("H") >= 0) {
@@ -961,9 +1001,6 @@ sap.ui.define([
961
1001
  }
962
1002
  }
963
1003
 
964
- sFormattedDate = this._formatValue(oDate, false, Core.getConfiguration().getTimezone());
965
- oDate = this._parseValue(sFormattedDate, true, this._getTimezone(true));
966
-
967
1004
  return oDate;
968
1005
  };
969
1006
 
@@ -1010,23 +1047,23 @@ sap.ui.define([
1010
1047
  } else {
1011
1048
  oSwitcher.setVisible(false);
1012
1049
  oClocks.$().css("display", "");
1013
- oCalendar.$().css("display", "");
1050
+ oCalendar.$().css("display", "flex");
1014
1051
  }
1015
1052
  };
1016
1053
 
1017
1054
  function _handleAfterOpen(oEvent){
1018
- this.$("inner").attr("aria-expanded", true);
1019
1055
  this._oCalendar.focus();
1020
1056
 
1021
1057
  Device.media.attachHandler(this._handleWindowResize, this);
1058
+ this.fireAfterValueHelpOpen();
1022
1059
  }
1023
1060
 
1024
1061
  function _handleAfterClose(){
1025
1062
  this.removeStyleClass(InputBase.ICON_PRESSED_CSS_CLASS);
1026
- this.$("inner").attr("aria-expanded", false);
1027
1063
 
1028
1064
  this._oCalendar._closePickers();
1029
1065
  Device.media.detachHandler(this._handleWindowResize, this);
1066
+ this.fireAfterValueHelpClose();
1030
1067
  }
1031
1068
 
1032
1069
  function _getTimePattern(){
@@ -1065,15 +1102,9 @@ sap.ui.define([
1065
1102
  }
1066
1103
 
1067
1104
  function _handleCalendarSelect(oEvent) {
1068
- var oDelegate = {
1069
- onAfterRendering: function () {
1070
- this._oPopupContent.getCalendar().getAggregation("month")[0].removeEventDelegate(oDelegate, this);
1071
- this._oPopupContent.switchToTime();
1072
- this._oPopupContent.getClocks()._focusActiveButton();
1073
- }
1074
- };
1105
+ this._oPopupContent.switchToTime();
1106
+ this._oPopupContent.getClocks()._focusActiveButton();
1075
1107
  this._oOKButton.setEnabled(true);
1076
- this._oPopupContent.getCalendar().getAggregation("month")[0].addEventDelegate(oDelegate, this);
1077
1108
  }
1078
1109
 
1079
1110
  return DateTimePicker;
@@ -15,6 +15,14 @@ sap.ui.define(['sap/ui/core/Renderer', './DatePickerRenderer', './InputBaseRende
15
15
 
16
16
  DateTimePickerRenderer.apiVersion = 2;
17
17
 
18
+ DateTimePickerRenderer.writeInnerValue = function(oRm, oControl) {
19
+ if (!oControl.getDateValue() && typeof oControl._prefferedValue === "string") {
20
+ oRm.attr("value", oControl._prefferedValue);
21
+ } else {
22
+ DatePickerRenderer.writeInnerValue.apply(this, arguments);
23
+ }
24
+ };
25
+
18
26
  DateTimePickerRenderer.getDescribedByAnnouncement = function(oDP) {
19
27
 
20
28
  var sBaseAnnouncement = InputBaseRenderer.getDescribedByAnnouncement.apply(this, arguments);
@@ -39,10 +47,9 @@ sap.ui.define(['sap/ui/core/Renderer', './DatePickerRenderer', './InputBaseRende
39
47
 
40
48
  oRm.openStart("div", oControl.getId() + "-timezoneLabel");
41
49
  oRm.class("sapMDTPTimezoneLabel");
42
- oRm.attr("title", sTimezone);
43
50
  oRm.openEnd();
44
51
 
45
- oRm.openStart("span");
52
+ oRm.openStart("span", oControl.getId() + "-timezoneID");
46
53
  oRm.openEnd();
47
54
  oRm.text(sTimezone);
48
55
  oRm.close("span");
@@ -55,8 +62,8 @@ sap.ui.define(['sap/ui/core/Renderer', './DatePickerRenderer', './InputBaseRende
55
62
 
56
63
  // try to choose the date that is the longest when formatted
57
64
  oRm.text(oControl._getFormatter(true).format(
58
- new Date(2000, 10, 20, 10, 10, 10),
59
- sap.ui.getCore().getConfiguration().getTimezone()));
65
+ new Date(Date.UTC(2000, 10, 20, 10, 10, 10)),
66
+ "UTC"));
60
67
  oRm.close("span");
61
68
  };
62
69
 
@@ -70,6 +77,16 @@ sap.ui.define(['sap/ui/core/Renderer', './DatePickerRenderer', './InputBaseRende
70
77
  }
71
78
  };
72
79
 
80
+ DateTimePickerRenderer.getAriaDescribedBy = function(oControl) {
81
+ var sDescribedBy = InputBaseRenderer.getAriaDescribedBy.apply(this, arguments);
82
+
83
+ if (oControl._getShowTimezone()) {
84
+ sDescribedBy += " " + oControl.getId() + "-timezoneID";
85
+ }
86
+
87
+ return sDescribedBy;
88
+ };
89
+
73
90
  return DateTimePickerRenderer;
74
91
 
75
92
  }, /* bExport= */ true);
@@ -164,7 +164,7 @@ function(
164
164
  * <li>If the <code>contentWidth</code> and/or <code>contentHeight</code> properties are set, the Dialog will try to fill those sizes.</li>
165
165
  * <li>If there is no specific sizing, the Dialog will try to adjust its size to its content.</li>
166
166
  * </ul>
167
- * When using the <code>sap.m.Dialog</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 Dialog 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>.
167
+ * When using the <code>sap.m.Dialog</code> in SAP Quartz and Horizon 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 Dialog 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>.
168
168
  * <h4>Smartphones</h4>
169
169
  * If the Dialog has one or two actions, they will cover the entire footer. If there are more actions, they will overflow.
170
170
  * <h4>Tablets</h4>
@@ -175,7 +175,7 @@ function(
175
175
  *
176
176
  * @implements sap.ui.core.PopupInterface
177
177
  * @author SAP SE
178
- * @version 1.99.1
178
+ * @version 1.102.0
179
179
  *
180
180
  * @constructor
181
181
  * @public
@@ -325,13 +325,23 @@ function(
325
325
  customHeader: {type: "sap.m.IBar", multiple: false},
326
326
 
327
327
  /**
328
- * The button which is rendered to the left side (right side in RTL mode) of the <code>endButton</code> in the footer area inside the Dialog. As of version 1.21.1, there's a new aggregation <code>buttons</code> created with which more than 2 buttons can be added to the footer area of the Dialog. If the new <code>buttons</code> aggregation is set, any change made to this aggregation has no effect anymore. With the Belize themes when running on a phone, this <code>button</code> (and the <code>endButton</code> together when set) is (are) rendered at the center of the footer area. While with the Quartz themes when running on a phone, this <code>button</code> (and the <code>endButton</code> together when set) is (are) rendered on the right side of the footer area. When running on other platforms, this <code>button</code> (and the <code>endButton</code> together when set) is (are) rendered at the right side (left side in RTL mode) of the footer area.
328
+ * The button which is rendered to the left side (right side in RTL mode) of the <code>endButton</code> in the footer area inside the Dialog.
329
+ * As of version 1.21.1, there's a new aggregation <code>buttons</code> created with which more than 2 buttons can be added to the footer area of the Dialog.
330
+ * If the new <code>buttons</code> aggregation is set, any change made to this aggregation has no effect anymore.
331
+ * With the Belize themes when running on a phone, this <code>button</code> (and the <code>endButton</code> together when set) is (are) rendered at the center of the footer area.
332
+ * While with the Quartz themes when running on a phone, this <code>button</code> (and the <code>endButton</code> together when set) is (are) rendered on the right side of the footer area.
333
+ * When running on other platforms, this <code>button</code> (and the <code>endButton</code> together when set) is (are) rendered at the right side (left side in RTL mode) of the footer area.
329
334
  * @since 1.15.1
330
335
  */
331
336
  beginButton: {type: "sap.m.Button", multiple: false},
332
337
 
333
338
  /**
334
- * The button which is rendered to the right side (left side in RTL mode) of the <code>beginButton</code> in the footer area inside the Dialog. As of version 1.21.1, there's a new aggregation <code>buttons</code> created with which more than 2 buttons can be added to the footer area of Dialog. If the new <code>buttons</code> aggregation is set, any change made to this aggregation has no effect anymore. With the Belize themes when running on a phone, this <code>button</code> (and the <code>beginButton</code> together when set) is (are) rendered at the center of the footer area. While with the Quartz themes when running on a phone, this <code>button</code> (and the <code>beginButton</code> together when set) is (are) rendered on the right side of the footer area. When running on other platforms, this <code>button</code> (and the <code>beginButton</code> together when set) is (are) rendered at the right side (left side in RTL mode) of the footer area.
339
+ * The button which is rendered to the right side (left side in RTL mode) of the <code>beginButton</code> in the footer area inside the Dialog.
340
+ * As of version 1.21.1, there's a new aggregation <code>buttons</code> created with which more than 2 buttons can be added to the footer area of Dialog.
341
+ * If the new <code>buttons</code> aggregation is set, any change made to this aggregation has no effect anymore.
342
+ * With the Belize themes when running on a phone, this <code>button</code> (and the <code>beginButton</code> together when set) is (are) rendered at the center of the footer area.
343
+ * While with the Quartz themes when running on a phone, this <code>button</code> (and the <code>beginButton</code> together when set) is (are) rendered on the right side of the footer area.
344
+ * When running on other platforms, this <code>button</code> (and the <code>beginButton</code> together when set) is (are) rendered at the right side (left side in RTL mode) of the footer area.
335
345
  * @since 1.15.1
336
346
  */
337
347
  endButton: {type: "sap.m.Button", multiple: false},
@@ -550,10 +560,13 @@ function(
550
560
  this._createToolbarButtons();
551
561
 
552
562
  if (Core.getConfiguration().getAccessibility() && this.getState() != ValueState.None) {
553
- var oValueState = new InvisibleText({text: this.getValueStateString(this.getState())});
563
+ if (!this._oValueState) {
564
+ this._oValueState = new InvisibleText();
554
565
 
555
- this.setAggregation("_valueState", oValueState);
556
- this.addAriaLabelledBy(oValueState.getId());
566
+ this.setAggregation("_valueState", this._oValueState);
567
+ this.addAriaLabelledBy(this._oValueState.getId());
568
+ }
569
+ this._oValueState.setText(this.getValueStateString(this.getState()));
557
570
  }
558
571
 
559
572
  // title alignment
@@ -151,7 +151,7 @@ sap.ui.define([
151
151
  if (Device.system.desktop) {
152
152
 
153
153
  if (oDialog.getResizable() && !bStretch) {
154
- oRM.icon("sap-icon://resize-corner", ["sapMDialogResizeHandler"], { "title": "" });
154
+ oRM.icon("sap-icon://resize-corner", ["sapMDialogResizeHandler"], {"title": "", "aria-label": ""});
155
155
  }
156
156
 
157
157
  // Invisible element which is used to determine when desktop keyboard navigation
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.m.ListItemBase
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.99.1
33
+ * @version 1.102.0
34
34
  *
35
35
  * @constructor
36
36
  * @public
@@ -24,12 +24,10 @@ sap.ui.define(["sap/ui/core/library", "sap/ui/core/Renderer", "./ListItemBaseRen
24
24
  * Renders the HTML for the given control, using the provided
25
25
  * {@link sap.ui.core.RenderManager}.
26
26
  *
27
- * @param {sap.ui.core.RenderManager}
28
- * oRenderManager the RenderManager that can be used for writing to the
29
- * Render-Output-Buffer
30
- * @param {sap.m.DisplayListItem}
31
- * oControl an object representation of the control that should be
32
- * rendered
27
+ * @param {sap.ui.core.RenderManager} rm
28
+ * RenderManager that can be used to render the control's DOM
29
+ * @param {sap.m.DisplayListItem} oLI
30
+ * The item to be rendered
33
31
  */
34
32
  DisplayListItemRenderer.renderLIAttributes = function(rm, oLI) {
35
33
  rm.class("sapMDLI");
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @abstract
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.99.1
30
+ * @version 1.102.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @extends sap.ui.model.SimpleType
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.99.1
39
+ * @version 1.102.0
40
40
  *
41
41
  * @constructor
42
42
  * @public
@@ -124,7 +124,7 @@ sap.ui.define([
124
124
  * Create an instance of the DynamicDateFormat.
125
125
  *
126
126
  * @param {object} [oFormatOptions] Object which defines the format options
127
- * @param {{sap.ui.core.Locale}} [oLocale] Locale to get the formatter for
127
+ * @param {sap.ui.core.Locale} [oLocale] Locale to get the formatter for
128
128
  * @return {sap.m.DynamicDateFormat} Instance of the DynamicDateFormat
129
129
  * @private
130
130
  */
@@ -143,6 +143,7 @@ sap.ui.define([
143
143
  oFormat.oLocaleData = LocaleData.getInstance(oLocale);
144
144
  oFormat.oOriginalFormatOptions = deepExtend({}, DynamicDateFormat.oDefaultDynamicDateFormat, oFormatOptions);
145
145
  oFormat._dateFormatter = DateFormat.getInstance(oFormat.oOriginalFormatOptions["date"]);
146
+ oFormat._dateTimeFormatter = DateFormat.getDateTimeInstance(oFormat.oOriginalFormatOptions["datetime"]);
146
147
  // hack the date formatter not to parse relative
147
148
  // dates like: "next month", "next quarter", "previous week"
148
149
  [oFormat._dateFormatter].concat(oFormat._dateFormatter.aFallbackFormats).forEach(function(f) {
@@ -151,7 +152,12 @@ sap.ui.define([
151
152
  };
152
153
  });
153
154
 
154
- oFormat._dateTimeFormatter = DateFormat.getDateTimeInstance(oFormat.oOriginalFormatOptions["datetime"]);
155
+ [oFormat._dateTimeFormatter].concat(oFormat._dateTimeFormatter.aFallbackFormats).forEach(function(f) {
156
+ f.parseRelative = function() {
157
+ return null;
158
+ };
159
+ });
160
+
155
161
  oFormat._monthFormatter = DateFormat.getInstance(oFormat.oOriginalFormatOptions["month"]);
156
162
  oFormat._yearFormatter = DateFormat.getInstance(oFormat.oOriginalFormatOptions["year"]);
157
163
  oFormat._numberFormatter = NumberFormat.getInstance(oFormat.oOriginalFormatOptions["int"]);
@@ -164,10 +170,11 @@ sap.ui.define([
164
170
  * Formats a list according to the given format options.
165
171
  *
166
172
  * @param {object} oObj The value to format
173
+ * @param {boolean} bSkipCustomFormatting If set to <code>true</code> the formatter does not format to the equivalent user-friendly string. Instead, the formatter uses the specified option key and parameters.
167
174
  * @return {string} The formatted output value.
168
175
  * @public
169
176
  */
170
- DynamicDateFormat.prototype.format = function(oObj) {
177
+ DynamicDateFormat.prototype.format = function(oObj, bSkipCustomFormatting) {
171
178
  var sKey = oObj.operator;
172
179
  var aParams = oObj.values.slice(0);
173
180
 
@@ -183,10 +190,10 @@ sap.ui.define([
183
190
 
184
191
  aParams[0] = this._monthFormatter.format(oDate);
185
192
  aParams[1] = this._yearFormatter.format(oDate);
186
- } else if (sKey === "LASTDAYS" && aParams[0] === 1) {
193
+ } else if (sKey === "LASTDAYS" && aParams[0] === 1 && !bSkipCustomFormatting) {
187
194
  sKey = "YESTERDAY";
188
195
  aParams = [];
189
- } else if (sKey === "NEXTDAYS" && aParams[0] === 1) {
196
+ } else if (sKey === "NEXTDAYS" && aParams[0] === 1 && !bSkipCustomFormatting) {
190
197
  sKey = "TOMORROW";
191
198
  aParams = [];
192
199
  } else if ((sKey === "LASTDAYS" || sKey === "NEXTDAYS") && aParams[0] === 0) {
@@ -272,7 +279,7 @@ sap.ui.define([
272
279
  break;
273
280
  }
274
281
 
275
- if (!oVal) {
282
+ if (!oVal && oVal !== 0) {
276
283
  aResult = null;
277
284
  break;
278
285
  }
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @extends sap.ui.core.Element
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.99.1
39
+ * @version 1.102.0
40
40
  *
41
41
  * @public
42
42
  * @since 1.92
@@ -100,7 +100,7 @@ sap.ui.define([
100
100
  * @public
101
101
  */
102
102
  DynamicDateOption.prototype.createValueHelpUI = function(oControl, fnControlsUpdated) {
103
- var oValue = oControl.getValue(),
103
+ var oValue = oControl.getValue() && Object.assign({}, oControl.getValue()),
104
104
  aParams = this.getValueHelpUITypes(oControl),
105
105
  valueHelpUiTypesCount = aParams.length,
106
106
  aControls = [],
@@ -111,6 +111,16 @@ sap.ui.define([
111
111
  }
112
112
  oControl.aControlsByParameters[this.getKey()] = [];
113
113
 
114
+ if (oValue && oValue.values) {
115
+ oValue.values = oValue.values.map(function(val) {
116
+ if (val instanceof Date) {
117
+ return oControl._reverseConvertDate(val);
118
+ }
119
+
120
+ return val;
121
+ });
122
+ }
123
+
114
124
  for (var i = 0; i < aParams.length; i++) {
115
125
  if (aParams[i].getText()) {
116
126
  aControls.push(