@openui5/sap.m 1.103.1 → 1.104.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/.eslintrc.json +2 -3
  2. package/.reuse/dep5 +17 -0
  3. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  4. package/THIRDPARTY.txt +35 -2
  5. package/package.json +4 -4
  6. package/src/sap/m/.library +1 -1
  7. package/src/sap/m/AccButton.js +1 -1
  8. package/src/sap/m/ActionListItem.js +1 -1
  9. package/src/sap/m/ActionSelect.js +1 -1
  10. package/src/sap/m/ActionSheet.js +1 -1
  11. package/src/sap/m/App.js +1 -1
  12. package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
  13. package/src/sap/m/Avatar.js +1 -1
  14. package/src/sap/m/Bar.js +11 -10
  15. package/src/sap/m/Breadcrumbs.js +2 -2
  16. package/src/sap/m/BusyDialog.js +1 -1
  17. package/src/sap/m/BusyIndicator.js +1 -1
  18. package/src/sap/m/Button.js +3 -2
  19. package/src/sap/m/Carousel.js +1 -1
  20. package/src/sap/m/CarouselLayout.js +1 -1
  21. package/src/sap/m/CheckBox.js +1 -1
  22. package/src/sap/m/ColorPalette.js +1 -1
  23. package/src/sap/m/ColorPalettePopover.js +1 -1
  24. package/src/sap/m/Column.js +1 -1
  25. package/src/sap/m/ColumnHeaderPopover.js +1 -1
  26. package/src/sap/m/ColumnListItem.js +1 -1
  27. package/src/sap/m/ColumnPopoverActionItem.js +1 -1
  28. package/src/sap/m/ColumnPopoverCustomItem.js +1 -1
  29. package/src/sap/m/ColumnPopoverItem.js +1 -1
  30. package/src/sap/m/ColumnPopoverSelectListItem.js +1 -1
  31. package/src/sap/m/ColumnPopoverSortItem.js +1 -1
  32. package/src/sap/m/ComboBox.js +1 -1
  33. package/src/sap/m/ComboBoxBase.js +1 -1
  34. package/src/sap/m/ComboBoxTextField.js +1 -1
  35. package/src/sap/m/CustomDynamicDateOption.js +1 -1
  36. package/src/sap/m/CustomListItem.js +1 -1
  37. package/src/sap/m/CustomTile.js +1 -1
  38. package/src/sap/m/CustomTreeItem.js +1 -1
  39. package/src/sap/m/DatePicker.js +14 -22
  40. package/src/sap/m/DateRangeSelection.js +45 -38
  41. package/src/sap/m/DateTimeField.js +87 -20
  42. package/src/sap/m/DateTimeInput.js +1 -1
  43. package/src/sap/m/DateTimePicker.js +40 -21
  44. package/src/sap/m/Dialog.js +1 -1
  45. package/src/sap/m/DisplayListItem.js +1 -1
  46. package/src/sap/m/DraftIndicator.js +1 -1
  47. package/src/sap/m/DynamicDate.js +1 -1
  48. package/src/sap/m/DynamicDateOption.js +6 -4
  49. package/src/sap/m/DynamicDateRange.js +3 -2
  50. package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
  51. package/src/sap/m/ExpandableText.js +1 -1
  52. package/src/sap/m/FacetFilter.js +1 -1
  53. package/src/sap/m/FacetFilterItem.js +1 -1
  54. package/src/sap/m/FacetFilterList.js +1 -1
  55. package/src/sap/m/FeedContent.js +1 -1
  56. package/src/sap/m/FeedInput.js +1 -1
  57. package/src/sap/m/FeedListItem.js +1 -1
  58. package/src/sap/m/FeedListItemAction.js +1 -1
  59. package/src/sap/m/Fiori20Adapter.js +2 -2
  60. package/src/sap/m/FlexBox.js +1 -1
  61. package/src/sap/m/FlexItemData.js +1 -1
  62. package/src/sap/m/FormattedText.js +1 -1
  63. package/src/sap/m/GenericTag.js +1 -1
  64. package/src/sap/m/GenericTile.js +12 -9
  65. package/src/sap/m/GenericTileLineModeRenderer.js +4 -4
  66. package/src/sap/m/GenericTileRenderer.js +16 -4
  67. package/src/sap/m/GroupHeaderListItem.js +1 -1
  68. package/src/sap/m/GrowingEnablement.js +11 -4
  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 +3 -3
  72. package/src/sap/m/HeaderContainerItemNavigator.js +1 -1
  73. package/src/sap/m/IconTabBar.js +1 -1
  74. package/src/sap/m/IconTabBarSelectList.js +1 -1
  75. package/src/sap/m/IconTabFilter.js +1 -1
  76. package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
  77. package/src/sap/m/IconTabHeader.js +7 -2
  78. package/src/sap/m/IconTabSeparator.js +1 -1
  79. package/src/sap/m/IllustratedMessage.js +63 -24
  80. package/src/sap/m/IllustratedMessageRenderer.js +10 -6
  81. package/src/sap/m/Illustration.js +1 -1
  82. package/src/sap/m/IllustrationPool.js +1 -0
  83. package/src/sap/m/Image.js +1 -1
  84. package/src/sap/m/ImageContent.js +1 -1
  85. package/src/sap/m/Input.js +1 -4
  86. package/src/sap/m/InputBase.js +1 -1
  87. package/src/sap/m/InputListItem.js +1 -1
  88. package/src/sap/m/Label.js +1 -1
  89. package/src/sap/m/LightBox.js +1 -1
  90. package/src/sap/m/LightBoxItem.js +1 -1
  91. package/src/sap/m/Link.js +41 -5
  92. package/src/sap/m/LinkRenderer.js +18 -10
  93. package/src/sap/m/List.js +1 -1
  94. package/src/sap/m/ListBase.js +4 -1
  95. package/src/sap/m/ListItemBase.js +10 -2
  96. package/src/sap/m/MaskEnabler.js +52 -2
  97. package/src/sap/m/MaskInput.js +23 -1
  98. package/src/sap/m/MaskInputRule.js +1 -1
  99. package/src/sap/m/Menu.js +1 -1
  100. package/src/sap/m/MenuButton.js +1 -1
  101. package/src/sap/m/MenuItem.js +1 -1
  102. package/src/sap/m/MenuListItem.js +1 -1
  103. package/src/sap/m/MessageItem.js +1 -1
  104. package/src/sap/m/MessageListItem.js +1 -1
  105. package/src/sap/m/MessagePage.js +1 -1
  106. package/src/sap/m/MessagePopover.js +4 -1
  107. package/src/sap/m/MessagePopoverItem.js +1 -1
  108. package/src/sap/m/MessageStrip.js +1 -1
  109. package/src/sap/m/MessageToast.js +1 -1
  110. package/src/sap/m/MessageView.js +1 -1
  111. package/src/sap/m/MultiComboBox.js +1 -1
  112. package/src/sap/m/MultiEditField.js +1 -1
  113. package/src/sap/m/MultiInput.js +1 -1
  114. package/src/sap/m/NavContainer.js +20 -16
  115. package/src/sap/m/NewsContent.js +1 -1
  116. package/src/sap/m/NotificationList.js +1 -1
  117. package/src/sap/m/NotificationListBase.js +1 -1
  118. package/src/sap/m/NotificationListGroup.js +1 -1
  119. package/src/sap/m/NotificationListItem.js +1 -1
  120. package/src/sap/m/NumericContent.js +1 -1
  121. package/src/sap/m/NumericInput.js +1 -1
  122. package/src/sap/m/ObjectAttribute.js +1 -1
  123. package/src/sap/m/ObjectHeader.js +1 -1
  124. package/src/sap/m/ObjectIdentifier.js +1 -1
  125. package/src/sap/m/ObjectListItem.js +1 -1
  126. package/src/sap/m/ObjectMarker.js +1 -1
  127. package/src/sap/m/ObjectNumber.js +1 -1
  128. package/src/sap/m/ObjectNumberRenderer.js +10 -3
  129. package/src/sap/m/ObjectStatus.js +1 -1
  130. package/src/sap/m/OverflowToolbar.js +1 -1
  131. package/src/sap/m/OverflowToolbarAssociativePopover.js +1 -1
  132. package/src/sap/m/OverflowToolbarButton.js +1 -1
  133. package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
  134. package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
  135. package/src/sap/m/P13nAnyFilterItem.js +1 -1
  136. package/src/sap/m/P13nColumnsItem.js +1 -1
  137. package/src/sap/m/P13nColumnsPanel.js +1 -1
  138. package/src/sap/m/P13nConditionPanel.js +1 -1
  139. package/src/sap/m/P13nDialog.js +1 -1
  140. package/src/sap/m/P13nDimMeasureItem.js +1 -1
  141. package/src/sap/m/P13nDimMeasurePanel.js +1 -1
  142. package/src/sap/m/P13nFilterItem.js +1 -1
  143. package/src/sap/m/P13nFilterPanel.js +1 -1
  144. package/src/sap/m/P13nGroupItem.js +1 -1
  145. package/src/sap/m/P13nGroupPanel.js +1 -1
  146. package/src/sap/m/P13nItem.js +1 -1
  147. package/src/sap/m/P13nPanel.js +1 -1
  148. package/src/sap/m/P13nSelectionItem.js +1 -1
  149. package/src/sap/m/P13nSelectionPanel.js +1 -1
  150. package/src/sap/m/P13nSortItem.js +1 -1
  151. package/src/sap/m/P13nSortPanel.js +1 -1
  152. package/src/sap/m/PDFViewer.js +2 -2
  153. package/src/sap/m/PDFViewerRenderer.js +1 -0
  154. package/src/sap/m/Page.js +1 -1
  155. package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
  156. package/src/sap/m/PagingButton.js +1 -1
  157. package/src/sap/m/Panel.js +1 -1
  158. package/src/sap/m/PlanningCalendar.js +1 -1
  159. package/src/sap/m/PlanningCalendarHeader.js +1 -1
  160. package/src/sap/m/PlanningCalendarLegend.js +1 -1
  161. package/src/sap/m/PlanningCalendarRow.js +1 -1
  162. package/src/sap/m/PlanningCalendarView.js +1 -1
  163. package/src/sap/m/Popover.js +4 -4
  164. package/src/sap/m/ProgressIndicator.js +1 -1
  165. package/src/sap/m/ProgressIndicatorRenderer.js +6 -3
  166. package/src/sap/m/PullToRefresh.js +1 -1
  167. package/src/sap/m/QuickView.js +1 -1
  168. package/src/sap/m/QuickViewBase.js +1 -1
  169. package/src/sap/m/QuickViewCard.js +1 -1
  170. package/src/sap/m/QuickViewGroup.js +1 -1
  171. package/src/sap/m/QuickViewGroupElement.js +1 -1
  172. package/src/sap/m/QuickViewPage.js +1 -1
  173. package/src/sap/m/RadioButton.js +1 -1
  174. package/src/sap/m/RadioButtonGroup.js +1 -1
  175. package/src/sap/m/RangeSlider.js +1 -1
  176. package/src/sap/m/RatingIndicator.js +8 -1
  177. package/src/sap/m/RatingIndicatorRenderer.js +13 -4
  178. package/src/sap/m/ResponsivePopover.js +1 -1
  179. package/src/sap/m/ResponsiveScale.js +1 -1
  180. package/src/sap/m/ScrollBar.js +1 -1
  181. package/src/sap/m/ScrollContainer.js +1 -1
  182. package/src/sap/m/SearchField.js +1 -1
  183. package/src/sap/m/SegmentedButton.js +1 -1
  184. package/src/sap/m/SegmentedButtonItem.js +1 -1
  185. package/src/sap/m/Select.js +5 -12
  186. package/src/sap/m/SelectDialog.js +1 -1
  187. package/src/sap/m/SelectDialogBase.js +1 -1
  188. package/src/sap/m/SelectList.js +1 -1
  189. package/src/sap/m/SelectionDetails.js +1 -1
  190. package/src/sap/m/SelectionDetailsFacade.js +2 -2
  191. package/src/sap/m/SelectionDetailsItem.js +1 -1
  192. package/src/sap/m/SelectionDetailsItemLine.js +1 -1
  193. package/src/sap/m/Shell.js +1 -1
  194. package/src/sap/m/SimpleFixFlex.js +1 -1
  195. package/src/sap/m/SinglePlanningCalendar.js +1 -1
  196. package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
  197. package/src/sap/m/SinglePlanningCalendarGrid.js +1 -1
  198. package/src/sap/m/SinglePlanningCalendarMonthGrid.js +1 -1
  199. package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
  200. package/src/sap/m/SinglePlanningCalendarView.js +1 -1
  201. package/src/sap/m/SinglePlanningCalendarWeekView.js +1 -1
  202. package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
  203. package/src/sap/m/SlideTile.js +1 -1
  204. package/src/sap/m/Slider.js +1 -1
  205. package/src/sap/m/SliderTooltip.js +1 -1
  206. package/src/sap/m/SliderTooltipBase.js +1 -1
  207. package/src/sap/m/SliderTooltipContainer.js +1 -1
  208. package/src/sap/m/SplitApp.js +1 -1
  209. package/src/sap/m/SplitButton.js +1 -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 +1 -1
  218. package/src/sap/m/Switch.js +1 -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 +1 -1
  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/TableSelectDialog.js +1 -1
  228. package/src/sap/m/Text.js +1 -1
  229. package/src/sap/m/TextArea.js +1 -1
  230. package/src/sap/m/Tile.js +1 -1
  231. package/src/sap/m/TileContainer.js +1 -1
  232. package/src/sap/m/TileContent.js +8 -9
  233. package/src/sap/m/TileContentRenderer.js +1 -1
  234. package/src/sap/m/TimePicker.js +43 -6
  235. package/src/sap/m/TimePickerClock.js +1 -1
  236. package/src/sap/m/TimePickerClocks.js +5 -3
  237. package/src/sap/m/TimePickerInputs.js +1 -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/Title.js +1 -1
  242. package/src/sap/m/TitlePropagationSupport.js +1 -1
  243. package/src/sap/m/ToggleButton.js +2 -2
  244. package/src/sap/m/Token.js +1 -1
  245. package/src/sap/m/Tokenizer.js +1 -1
  246. package/src/sap/m/Toolbar.js +1 -1
  247. package/src/sap/m/ToolbarLayoutData.js +1 -1
  248. package/src/sap/m/ToolbarSeparator.js +1 -1
  249. package/src/sap/m/ToolbarSpacer.js +1 -1
  250. package/src/sap/m/Tree.js +1 -1
  251. package/src/sap/m/TreeItemBase.js +1 -1
  252. package/src/sap/m/UploadCollection.js +2 -2
  253. package/src/sap/m/UploadCollectionItem.js +1 -1
  254. package/src/sap/m/UploadCollectionParameter.js +1 -1
  255. package/src/sap/m/UploadCollectionToolbarPlaceholder.js +1 -1
  256. package/src/sap/m/VBox.js +1 -1
  257. package/src/sap/m/ValueStateHeader.js +1 -1
  258. package/src/sap/m/VariantItem.js +160 -0
  259. package/src/sap/m/VariantManagement.js +610 -547
  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 +1 -1
  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 +1 -1
  272. package/src/sap/m/changeHandler/ChangeLinkTarget.js +1 -1
  273. package/src/sap/m/changeHandler/CombineButtons.js +1 -1
  274. package/src/sap/m/changeHandler/MoveTableColumns.js +2 -2
  275. package/src/sap/m/changeHandler/SelectIconTabBarFilter.js +1 -1
  276. package/src/sap/m/changeHandler/SplitMenuButton.js +1 -1
  277. package/src/sap/m/designtime/VariantManagement.designtime.js +34 -24
  278. package/src/sap/m/flexibility/EngineFlex.js +48 -0
  279. package/src/sap/m/library.js +29 -6
  280. package/src/sap/m/messagebundle.properties +23 -1
  281. package/src/sap/m/messagebundle_ar.properties +16 -5
  282. package/src/sap/m/messagebundle_bg.properties +11 -0
  283. package/src/sap/m/messagebundle_ca.properties +11 -0
  284. package/src/sap/m/messagebundle_cs.properties +11 -0
  285. package/src/sap/m/messagebundle_cy.properties +11 -0
  286. package/src/sap/m/messagebundle_da.properties +11 -0
  287. package/src/sap/m/messagebundle_de.properties +11 -0
  288. package/src/sap/m/messagebundle_el.properties +12 -1
  289. package/src/sap/m/messagebundle_en.properties +11 -0
  290. package/src/sap/m/messagebundle_en_GB.properties +11 -0
  291. package/src/sap/m/messagebundle_en_US_sappsd.properties +11 -0
  292. package/src/sap/m/messagebundle_en_US_saprigi.properties +9 -0
  293. package/src/sap/m/messagebundle_en_US_saptrc.properties +11 -0
  294. package/src/sap/m/messagebundle_es.properties +11 -0
  295. package/src/sap/m/messagebundle_es_MX.properties +11 -0
  296. package/src/sap/m/messagebundle_et.properties +11 -0
  297. package/src/sap/m/messagebundle_fi.properties +14 -3
  298. package/src/sap/m/messagebundle_fr.properties +11 -0
  299. package/src/sap/m/messagebundle_fr_CA.properties +11 -0
  300. package/src/sap/m/messagebundle_hi.properties +11 -0
  301. package/src/sap/m/messagebundle_hr.properties +15 -4
  302. package/src/sap/m/messagebundle_hu.properties +13 -2
  303. package/src/sap/m/messagebundle_id.properties +11 -0
  304. package/src/sap/m/messagebundle_it.properties +12 -1
  305. package/src/sap/m/messagebundle_iw.properties +12 -1
  306. package/src/sap/m/messagebundle_ja.properties +11 -0
  307. package/src/sap/m/messagebundle_kk.properties +11 -0
  308. package/src/sap/m/messagebundle_ko.properties +17 -6
  309. package/src/sap/m/messagebundle_lt.properties +11 -0
  310. package/src/sap/m/messagebundle_lv.properties +11 -0
  311. package/src/sap/m/messagebundle_ms.properties +11 -0
  312. package/src/sap/m/messagebundle_nl.properties +25 -14
  313. package/src/sap/m/messagebundle_no.properties +12 -1
  314. package/src/sap/m/messagebundle_pl.properties +12 -1
  315. package/src/sap/m/messagebundle_pt.properties +15 -4
  316. package/src/sap/m/messagebundle_pt_PT.properties +11 -0
  317. package/src/sap/m/messagebundle_ro.properties +11 -0
  318. package/src/sap/m/messagebundle_ru.properties +11 -0
  319. package/src/sap/m/messagebundle_sh.properties +11 -0
  320. package/src/sap/m/messagebundle_sk.properties +11 -0
  321. package/src/sap/m/messagebundle_sl.properties +11 -0
  322. package/src/sap/m/messagebundle_sv.properties +11 -0
  323. package/src/sap/m/messagebundle_th.properties +34 -23
  324. package/src/sap/m/messagebundle_tr.properties +11 -0
  325. package/src/sap/m/messagebundle_uk.properties +11 -0
  326. package/src/sap/m/messagebundle_vi.properties +11 -0
  327. package/src/sap/m/messagebundle_zh_CN.properties +11 -0
  328. package/src/sap/m/messagebundle_zh_TW.properties +11 -0
  329. package/src/sap/m/p13n/AbstractContainer.js +5 -5
  330. package/src/sap/m/p13n/AbstractContainerItem.js +2 -2
  331. package/src/sap/m/p13n/BasePanel.js +4 -3
  332. package/src/sap/m/p13n/Container.js +1 -1
  333. package/src/sap/m/p13n/Engine.js +1253 -0
  334. package/src/sap/m/p13n/FlexUtil.js +162 -0
  335. package/src/sap/m/p13n/GroupController.js +145 -0
  336. package/src/sap/m/p13n/GroupPanel.js +10 -3
  337. package/src/sap/m/p13n/MetadataHelper.js +35 -0
  338. package/src/sap/m/p13n/PersistenceProvider.js +135 -0
  339. package/src/sap/m/p13n/Popup.js +46 -9
  340. package/src/sap/m/p13n/QueryPanel.js +1 -1
  341. package/src/sap/m/p13n/SelectionController.js +563 -0
  342. package/src/sap/m/p13n/SelectionPanel.js +13 -1
  343. package/src/sap/m/p13n/SortController.js +153 -0
  344. package/src/sap/m/p13n/SortPanel.js +11 -1
  345. package/src/sap/m/p13n/enum/PersistenceMode.js +43 -0
  346. package/src/sap/m/p13n/handler/xConfigHandler.js +166 -0
  347. package/src/sap/m/p13n/modification/FlexModificationHandler.js +90 -0
  348. package/src/sap/m/p13n/modification/LocalStorageModificationHandler.js +75 -0
  349. package/src/sap/m/p13n/modification/ModificationHandler.js +133 -0
  350. package/src/sap/m/p13n/modules/AdaptationProvider.js +67 -0
  351. package/src/sap/m/p13n/modules/DefaultProviderRegistry.js +124 -0
  352. package/src/sap/m/p13n/modules/StateHandlerRegistry.js +101 -0
  353. package/src/sap/m/p13n/modules/UIManager.js +230 -0
  354. package/src/sap/m/p13n/modules/xConfigAPI.js +286 -0
  355. package/src/sap/m/plugins/ColumnResizer.js +15 -1
  356. package/src/sap/m/plugins/DataStateIndicator.js +2 -2
  357. package/src/sap/m/plugins/PasteProvider.js +1 -1
  358. package/src/sap/m/plugins/PluginBase.js +1 -1
  359. package/src/sap/m/semantic/AddAction.js +1 -1
  360. package/src/sap/m/semantic/CancelAction.js +1 -1
  361. package/src/sap/m/semantic/DeleteAction.js +1 -1
  362. package/src/sap/m/semantic/DetailPage.js +1 -1
  363. package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
  364. package/src/sap/m/semantic/EditAction.js +1 -1
  365. package/src/sap/m/semantic/FavoriteAction.js +1 -1
  366. package/src/sap/m/semantic/FilterAction.js +1 -1
  367. package/src/sap/m/semantic/FilterSelect.js +1 -1
  368. package/src/sap/m/semantic/FlagAction.js +1 -1
  369. package/src/sap/m/semantic/ForwardAction.js +1 -1
  370. package/src/sap/m/semantic/FullscreenPage.js +1 -1
  371. package/src/sap/m/semantic/GroupAction.js +1 -1
  372. package/src/sap/m/semantic/GroupSelect.js +1 -1
  373. package/src/sap/m/semantic/MainAction.js +1 -1
  374. package/src/sap/m/semantic/MasterPage.js +1 -1
  375. package/src/sap/m/semantic/MessagesIndicator.js +1 -1
  376. package/src/sap/m/semantic/MultiSelectAction.js +1 -1
  377. package/src/sap/m/semantic/NegativeAction.js +1 -1
  378. package/src/sap/m/semantic/OpenInAction.js +1 -1
  379. package/src/sap/m/semantic/PositiveAction.js +1 -1
  380. package/src/sap/m/semantic/PrintAction.js +1 -1
  381. package/src/sap/m/semantic/SaveAction.js +1 -1
  382. package/src/sap/m/semantic/Segment.js +1 -1
  383. package/src/sap/m/semantic/SegmentedContainer.js +1 -1
  384. package/src/sap/m/semantic/SemanticButton.js +1 -1
  385. package/src/sap/m/semantic/SemanticConfiguration.js +1 -1
  386. package/src/sap/m/semantic/SemanticControl.js +1 -1
  387. package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +1 -1
  388. package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +1 -1
  389. package/src/sap/m/semantic/SemanticPage.js +1 -1
  390. package/src/sap/m/semantic/SemanticSelect.js +1 -1
  391. package/src/sap/m/semantic/SemanticToggleButton.js +1 -1
  392. package/src/sap/m/semantic/SendEmailAction.js +1 -1
  393. package/src/sap/m/semantic/SendMessageAction.js +1 -1
  394. package/src/sap/m/semantic/ShareInJamAction.js +1 -1
  395. package/src/sap/m/semantic/ShareMenu.js +1 -1
  396. package/src/sap/m/semantic/ShareMenuPage.js +1 -1
  397. package/src/sap/m/semantic/SortAction.js +1 -1
  398. package/src/sap/m/semantic/SortSelect.js +1 -1
  399. package/src/sap/m/table/Util.js +8 -3
  400. package/src/sap/m/table/columnmenu/ActionItem.js +1 -1
  401. package/src/sap/m/table/columnmenu/Entry.js +1 -1
  402. package/src/sap/m/table/columnmenu/Item.js +1 -1
  403. package/src/sap/m/table/columnmenu/ItemBase.js +1 -1
  404. package/src/sap/m/table/columnmenu/Menu.js +8 -2
  405. package/src/sap/m/table/columnmenu/QuickAction.js +1 -1
  406. package/src/sap/m/table/columnmenu/QuickActionBase.js +1 -1
  407. package/src/sap/m/table/columnmenu/QuickActionItem.js +1 -1
  408. package/src/sap/m/table/columnmenu/QuickGroup.js +21 -1
  409. package/src/sap/m/table/columnmenu/QuickGroupItem.js +13 -1
  410. package/src/sap/m/table/columnmenu/QuickSort.js +1 -1
  411. package/src/sap/m/table/columnmenu/QuickSortItem.js +1 -1
  412. package/src/sap/m/table/columnmenu/QuickTotal.js +21 -1
  413. package/src/sap/m/table/columnmenu/QuickTotalItem.js +13 -1
  414. package/src/sap/m/themes/base/Breadcrumbs.less +6 -0
  415. package/src/sap/m/themes/base/CheckBox.less +1 -0
  416. package/src/sap/m/themes/base/Dialog.less +1 -0
  417. package/src/sap/m/themes/base/FeedContent.less +13 -5
  418. package/src/sap/m/themes/base/GenericTile.less +39 -9
  419. package/src/sap/m/themes/base/IllustratedMessage.less +7 -0
  420. package/src/sap/m/themes/base/NumericContent.less +1 -1
  421. package/src/sap/m/themes/base/ObjectStatus.less +2 -1
  422. package/src/sap/m/themes/base/OverflowToolbarAssociativePopover.less +5 -1
  423. package/src/sap/m/themes/base/SelectList.less +0 -5
  424. package/src/sap/m/themes/base/SinglePlanningCalendarGrid.less +7 -0
  425. package/src/sap/m/themes/base/SlideTile.less +20 -4
  426. package/src/sap/m/themes/base/Table.less +11 -1
  427. package/src/sap/m/themes/base/TileContent.less +17 -0
  428. package/src/sap/m/upload/UploadSet.js +98 -15
  429. package/src/sap/m/upload/UploadSetItem.js +13 -1
  430. package/src/sap/m/upload/UploadSetRenderer.js +8 -16
  431. package/src/sap/m/upload/UploadSetToolbarPlaceholder.js +1 -1
@@ -597,6 +597,13 @@ html.sap-desktop {
597
597
  background-color: fade(@bcolor, 90%);
598
598
  }
599
599
  }
600
+ //Special Dates
601
+ .sapMSinglePCGrid .@{iitemtypeclass} {
602
+ //day view
603
+ .sapMSinglePCBlockersColumn {
604
+ box-shadow: inset 0 0.25rem 0 @color;
605
+ }
606
+ }
600
607
  }
601
608
 
602
609
  .calendarRowTypeColorMixIn(sapUiCalendarAppType01, sapUiCalItemType01, @_sap_m_SinglePlanningCalendar_sapUiCalendarAppType01, @_sap_m_SinglePlanningCalendar_sapUiCalendarAppBackgroundType01);
@@ -36,6 +36,7 @@
36
36
  bottom: 0.6rem;
37
37
  left: 0.9rem;
38
38
  border: 0;
39
+ color: @sapButton_Lite_TextColor;
39
40
  }
40
41
  &:focus {
41
42
  outline: none;
@@ -99,6 +100,21 @@
99
100
  }
100
101
  }
101
102
 
103
+ .sapMST{
104
+ .sapMGT.sapMGTStateLoading{
105
+ .sapMTileCnt.News{
106
+ background-color: transparent;
107
+ }
108
+ }
109
+ }
110
+
111
+ .sapMST.sapMTileSmallPhone {
112
+ .sapMGT.sapMGTStateLoading.TwoByOne {
113
+ .sapMTileCntContentShimmerPlaceholderItemTextFooter{
114
+ width: 5.875rem;
115
+ }
116
+ }
117
+ }
102
118
  .sapUiSizeCompact{
103
119
  .sapMST {
104
120
  .sapMSTMoreIcon {
@@ -194,13 +210,13 @@ html.sap-tablet .sapMGTHvrOutln:active {
194
210
  height: 2rem;
195
211
  width: 2rem;
196
212
  z-index: 1;
197
- opacity: 0.3;
213
+ opacity: 0.6;
198
214
  overflow: hidden;
199
215
  border-radius: 50%;
200
216
  }
201
217
 
202
218
  html.sap-desktop .sapMST .sapMSTIconClickTapArea:hover ~.sapMSTIconDisplayArea {
203
- opacity: 0.6;
219
+ opacity: 0.8;
204
220
  }
205
221
 
206
222
 
@@ -217,8 +233,8 @@ html.sap-desktop .sapMST.sapMSTIconPressed .sapMSTIconClickTapArea:hover ~.sapMS
217
233
  position: absolute;
218
234
 
219
235
  .sapUiIcon {
220
- width: 2rem;
221
- line-height: inherit;
236
+ width: 2rem;
237
+ line-height: inherit;
222
238
  }
223
239
  }
224
240
 
@@ -107,7 +107,7 @@ tr.sapMListTblHeaderNone > .sapMTableTH {
107
107
  .sapMListTblSubCntSpr,
108
108
  .sapMListTblSubCntHdr,
109
109
  .sapMListTblSubCntVal {
110
- display: inline;
110
+ display: inline-flex;
111
111
  }
112
112
 
113
113
  .sapMListTblSubCntValBlock {
@@ -364,6 +364,11 @@ tr.sapMListTblHeaderNone > .sapMTableTH {
364
364
  outline-color: @sapUiContentContrastFocusColor;
365
365
  }
366
366
 
367
+ // Allows truncation of text within children of a flex item.
368
+ .sapMColumnHeaderContent {
369
+ min-width: 0;
370
+ }
371
+
367
372
  .sapMColumnHeaderActive:active > .sapMColumnHeaderContent {
368
373
  color: @sapUiListActiveTextColor;
369
374
  }
@@ -386,6 +391,7 @@ tr.sapMListTblHeaderNone > .sapMTableTH {
386
391
  align-self: center;
387
392
  padding-left: 0.5rem;
388
393
  padding-right: 0.5rem;
394
+ box-sizing: border-box;
389
395
  }
390
396
 
391
397
  [aria-sort=ascending] > .sapMColumnHeader::after {
@@ -460,6 +466,10 @@ html[data-sap-ui-browser^='ff'] .sapMTableRowCustomFocus:focus > :not(.sapMListT
460
466
  .sapMObjStatus {
461
467
  vertical-align: middle;
462
468
  line-height: 1.4;
469
+
470
+ .sapMObjStatusText {
471
+ line-height: inherit;
472
+ }
463
473
  }
464
474
  }
465
475
 
@@ -192,6 +192,18 @@ html[dir=rtl] .sapMTileCntFtrTxt {
192
192
  }
193
193
  }
194
194
  .sapMGTStateLoading {
195
+ &.sapMTileSmallPhone:not(.sapMGTActionMode) {
196
+ .sapMTileCntContentShimmerPlaceholderWithDescription{
197
+ padding-top: 0;
198
+ }
199
+ .sapMTileCntContentShimmerPlaceholderItem {
200
+ .sapMTileCntContentShimmerPlaceholderRows {
201
+ .sapMTileCntContentShimmerPlaceholderItemTextFooter, .sapMTileCntContentShimmerPlaceholderItemBox {
202
+ top:0rem;
203
+ }
204
+ }
205
+ }
206
+ }
195
207
  .sapMTileCntContentShimmerPlaceholderItem {
196
208
  .sapMTileCntContentShimmerPlaceholderRows {
197
209
  .sapMTileCntContentShimmerPlaceholderItemTextFooter, .sapMTileCntContentShimmerPlaceholderItemBox {
@@ -203,6 +215,11 @@ html[dir=rtl] .sapMTileCntFtrTxt {
203
215
  padding: 1rem 0rem 0rem 0rem;
204
216
  }
205
217
  }
218
+ .sapMGT.sapMTileSmallPhone.sapMGTStateLoading.OneByOne {
219
+ .sapMTileCntContentShimmerPlaceholderItemTextFooter{
220
+ width: 5.875rem;
221
+ }
222
+ }
206
223
  .sapMTileCntContentShimmerPlaceholderItem {
207
224
  .sapMTileCntContentShimmerPlaceholderRows {
208
225
  .sapMTileCntContentShimmerPlaceholderItemTextFooter, .sapMTileCntContentShimmerPlaceholderItemBox {
@@ -6,7 +6,6 @@
6
6
 
7
7
  sap.ui.define([
8
8
  "sap/ui/core/Control",
9
- "sap/ui/core/Icon",
10
9
  "sap/ui/events/KeyCodes",
11
10
  "sap/base/Log",
12
11
  "sap/base/util/deepEqual",
@@ -27,9 +26,13 @@ sap.ui.define([
27
26
  "sap/ui/core/dnd/DragDropInfo",
28
27
  "sap/ui/core/dnd/DropInfo",
29
28
  "sap/m/library",
30
- "sap/m/upload/UploadSetToolbarPlaceholder"
31
- ], function (Control, Icon, KeyCodes, Log, deepEqual, MobileLibrary, Button, Dialog, List, MessageBox, OverflowToolbar,
32
- StandardListItem, Text, ToolbarSpacer, FileUploader, UploadSetItem, Uploader, Renderer, UploaderHttpRequestMethod, DragDropInfo, DropInfo, Library, UploadSetToolbarPlaceholder) {
29
+ "sap/m/upload/UploadSetToolbarPlaceholder",
30
+ "sap/m/IllustratedMessage",
31
+ "sap/m/IllustratedMessageType",
32
+ "sap/m/IllustratedMessageSize"
33
+ ], function (Control, KeyCodes, Log, deepEqual, MobileLibrary, Button, Dialog, List, MessageBox, OverflowToolbar,
34
+ StandardListItem, Text, ToolbarSpacer, FileUploader, UploadSetItem, Uploader, Renderer, UploaderHttpRequestMethod,
35
+ DragDropInfo, DropInfo, Library, UploadSetToolbarPlaceholder, IllustratedMessage,IllustratedMessageType, IllustratedMessageSize) {
33
36
  "use strict";
34
37
 
35
38
  /**
@@ -43,7 +46,7 @@ sap.ui.define([
43
46
  * and requests, unified behavior of instant and deferred uploads, as well as improved progress indication.
44
47
  * @extends sap.ui.core.Control
45
48
  * @author SAP SE
46
- * @version 1.103.1
49
+ * @version 1.104.0
47
50
  * @constructor
48
51
  * @public
49
52
  * @since 1.63
@@ -83,6 +86,14 @@ sap.ui.define([
83
86
  * Defines custom text for the 'No data' description label.
84
87
  */
85
88
  noDataDescription: {type: "string", defaultValue: null},
89
+ /**
90
+ * Defines custom text for the 'No data' text label.
91
+ */
92
+ dragDropText: {type: "string", defaultValue: null},
93
+ /**
94
+ * Defines custom text for the 'No data' description label.
95
+ */
96
+ dragDropDescription: {type: "string", defaultValue: null},
86
97
  /**
87
98
  * Defines whether the upload process should be triggered as soon as the file is added.<br>
88
99
  * If set to <code>false</code>, no upload is triggered when a file is added.
@@ -156,7 +167,12 @@ sap.ui.define([
156
167
  /**
157
168
  * Defines the uploader to be used. If not specified, the default implementation is used.
158
169
  */
159
- uploader: {type: "sap.m.upload.Uploader", multiple: false}
170
+ uploader: {type: "sap.m.upload.Uploader", multiple: false},
171
+ /**
172
+ * An illustrated message is displayed when no data is loaded or provided
173
+ * @private
174
+ */
175
+ _illustratedMessage: { type: "sap.m.IllustratedMessage", multiple: false, visibility: "hidden" }
160
176
  },
161
177
  events: {
162
178
  /**
@@ -462,14 +478,12 @@ sap.ui.define([
462
478
  this._oRb = sap.ui.getCore().getLibraryResourceBundle("sap.m");
463
479
 
464
480
  this._oList = null;
465
- this._oNoDataIcon = new Icon(this.getId() + "-no-data-icon", {
466
- src: "sap-icon://document",
467
- size: "6rem",
468
- noTabStop: true
469
- });
470
481
  this._oEditedItem = null;
471
482
  this._oItemToBeDeleted = null;
472
483
  this._mListItemIdToItemMap = {};
484
+ this._oUploadButton = null;
485
+ this._oDragIndicator = false;
486
+ this._bAttachEventListener = false;
473
487
 
474
488
  // Drag&drop
475
489
  this._$Body = null;
@@ -479,11 +493,16 @@ sap.ui.define([
479
493
  this._aGroupHeadersAdded = [];
480
494
  this._iFileUploaderPH = null;
481
495
  this._oItemToUpdate = null;
496
+ var illustratedMessage = new IllustratedMessage({
497
+ illustrationType: IllustratedMessageType.NoData,
498
+ illustrationSize: IllustratedMessageSize.Auto,
499
+ title: this.getNoDataText(),
500
+ description: this.getNoDataDescription()
501
+ });
502
+ this.setAggregation("_illustratedMessage", illustratedMessage);
482
503
  };
483
504
 
484
505
  UploadSet.prototype.exit = function () {
485
- this._oNoDataIcon.destroy();
486
- this._oNoDataIcon = null;
487
506
  if (this._oList) {
488
507
  this._oList.destroy();
489
508
  this._oList = null;
@@ -586,7 +605,8 @@ sap.ui.define([
586
605
  if (this._oToolbar && this._iFileUploaderPH > -1) {
587
606
  this._setFileUploaderInToolbar(this.getDefaultFileUploader());
588
607
  } else if (this._oToolbar) {
589
- this._oToolbar.insertContent(this.getDefaultFileUploader());
608
+ // fallback position to add file uploader control if UploadSetToolbarPlaceHolder instance not found
609
+ this._oToolbar.addContent(this.getDefaultFileUploader());
590
610
  }
591
611
  }
592
612
  }
@@ -606,6 +626,18 @@ sap.ui.define([
606
626
  return sNoDataDescription;
607
627
  };
608
628
 
629
+ UploadSet.prototype.getDragDropText = function () {
630
+ var sDragDropText = this.getProperty("dragDropText");
631
+ sDragDropText = sDragDropText || this._oRb.getText("IllustratedMessage_TITLE_UploadCollection");
632
+ return sDragDropText;
633
+ };
634
+
635
+ UploadSet.prototype.getDragDropDescription = function () {
636
+ var sDragDropDescription = this.getProperty("dragDropDescription");
637
+ sDragDropDescription = sDragDropDescription || this._oRb.getText("IllustratedMessage_DESCRIPTION_UploadCollection");
638
+ return sDragDropDescription;
639
+ };
640
+
609
641
  UploadSet.prototype.setToolbar = function (oToolbar) {
610
642
  this.setAggregation("toolbar", oToolbar);
611
643
  this.getToolbar();
@@ -787,6 +819,42 @@ sap.ui.define([
787
819
  return this;
788
820
  };
789
821
 
822
+ UploadSet.prototype._getIllustratedMessage = function () {
823
+ var oAggregation = this.getAggregation("_illustratedMessage");
824
+ if (oAggregation) {
825
+ if (this._getDragIndicator()) {
826
+ oAggregation.setIllustrationType(IllustratedMessageType.UploadCollection);
827
+ oAggregation.setTitle(this.getDragDropText());
828
+ oAggregation.setDescription(this.getDragDropDescription());
829
+ oAggregation.removeAllAdditionalContent();
830
+ } else {
831
+ oAggregation.setIllustrationType(IllustratedMessageType.NoData);
832
+ oAggregation.setTitle(this.getNoDataText());
833
+ oAggregation.setDescription(this.getNoDataDescription());
834
+ oAggregation.addAdditionalContent(this.getUploadButtonForIllustratedMessage());
835
+ }
836
+ }
837
+ return oAggregation;
838
+ };
839
+
840
+ UploadSet.prototype.getUploadButtonForIllustratedMessage = function () {
841
+ if (!this._oUploadButton) {
842
+ this._oUploadButton = new Button({
843
+ id: this.getId() + "-uploadButton",
844
+ type: MobileLibrary.ButtonType.Standard,
845
+ visible: this.getUploadEnabled(),
846
+ text: this._oRb.getText("UPLOADCOLLECTION_UPLOAD"),
847
+ ariaDescribedBy: this.getAggregation("_illustratedMessage").getId(),
848
+ press: function () {
849
+ var FileUploader = this.getDefaultFileUploader();
850
+ FileUploader.$().find("input[type=file]").trigger("click");
851
+ }.bind(this)
852
+ });
853
+ }
854
+
855
+ return this._oUploadButton;
856
+ };
857
+
790
858
  /* ============== */
791
859
  /* Public methods */
792
860
  /* ============== */
@@ -837,6 +905,15 @@ sap.ui.define([
837
905
  UploadSet.prototype._onDragEnterFile = function (oEvent) {
838
906
  var oDragSession = oEvent.getParameter("dragSession");
839
907
  var oDraggedControl = oDragSession.getDragControl();
908
+ if (!this._bAttachEventListener) {
909
+ window.addEventListener("focus", function() {
910
+ this._oDragIndicator = false;
911
+ this._getIllustratedMessage();
912
+ }.bind(this), true);
913
+ this._bAttachEventListener = true;
914
+ }
915
+ this._oDragIndicator = true;
916
+ this._getIllustratedMessage();
840
917
  if (oDraggedControl) {
841
918
  oEvent.preventDefault();
842
919
  }
@@ -844,6 +921,8 @@ sap.ui.define([
844
921
 
845
922
  UploadSet.prototype._onDropFile = function (oEvent) {
846
923
  var oFiles;
924
+ this._oDragIndicator = false;
925
+ this._getIllustratedMessage();
847
926
  oEvent.preventDefault();
848
927
  if (this.getUploadEnabled()) {
849
928
  oFiles = oEvent.getParameter("browserEvent").dataTransfer.files;
@@ -858,6 +937,10 @@ sap.ui.define([
858
937
  }
859
938
  };
860
939
 
940
+ UploadSet.prototype._getDragIndicator = function () {
941
+ return this._oDragIndicator;
942
+ };
943
+
861
944
  /**
862
945
  * Starts uploading all files that comply with the restrictions defined in the <code>fileTypes</code>,
863
946
  * <code>maxFileNameLength</code>, <code>maxFileSize</code>, and <code>mediaTypes</code> properties.
@@ -1635,4 +1718,4 @@ sap.ui.define([
1635
1718
  this._oToolbar.insertContent(fileUploader, this._iFileUploaderPH);
1636
1719
  };
1637
1720
  return UploadSet;
1638
- });
1721
+ });
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @class Item that represents one file to be uploaded using the {@link sap.m.upload.UploadSet} control.
37
37
  * @extends sap.ui.core.Element
38
38
  * @author SAP SE
39
- * @version 1.103.1
39
+ * @version 1.104.0
40
40
  * @constructor
41
41
  * @public
42
42
  * @since 1.63
@@ -460,6 +460,18 @@ sap.ui.define([
460
460
  return this._isRestricted();
461
461
  };
462
462
 
463
+ /**
464
+ * Returns edit state of the item.
465
+ *
466
+ * @public
467
+ * @since 1.104.0
468
+ * @returns {boolean} edit state of uploadSetItem
469
+ *
470
+ */
471
+ UploadSetItem.prototype.getEditState = function () {
472
+ return this._bInEditMode;
473
+ };
474
+
463
475
  /* ============== */
464
476
  /* Event handlers */
465
477
  /* ============== */
@@ -54,29 +54,21 @@ sap.ui.define([
54
54
 
55
55
  UploadSetRenderer.renderNoData = function(oRm, oControl) {
56
56
  var oUploadSet = oControl.getParent();
57
+ oUploadSet.fnOriginalRenderDummyArea = oUploadSet.getList().getRenderer().renderDummyArea;
58
+ oUploadSet.getList().getRenderer().renderDummyArea = oUploadSet.getRenderer().renderDummyArea;
57
59
  oRm.openStart("li", oUploadSet.getList().getId("nodata"));
58
60
  oRm.attr("tabindex", 0);
59
61
  oRm.class("sapMLIB").class("sapMUCNoDataPage");
60
62
  ListItemBaseRenderer.addFocusableClasses.call(ListItemBaseRenderer, oRm);
61
63
  oRm.openEnd();
62
-
63
- oRm.renderControl(oUploadSet._oNoDataIcon);
64
-
65
- oRm.openStart("div", oUploadSet.getId() + "-no-data-text");
66
- oRm.class("sapMUCNoDataText");
67
- oRm.openEnd();
68
- oRm.text(oUploadSet.getNoDataText());
69
- oRm.close("div");
70
-
71
- if (oUploadSet.getUploadEnabled()) {
72
- oRm.openStart("div" , oUploadSet.getId() + "-no-data-description");
73
- oRm.class("sapMUCNoDataDescription");
74
- oRm.openEnd();
75
- oRm.text(oUploadSet.getNoDataDescription());
76
- oRm.close("div");
77
- }
64
+ oRm.renderControl(oUploadSet._getIllustratedMessage());
78
65
  oRm.close("li");
79
66
  };
80
67
 
68
+ UploadSetRenderer.renderDummyArea = function(oRm, oControl, sAreaId, iTabIndex) {
69
+ var oUploadSet = oControl.getParent();
70
+ oUploadSet.getList().getRenderer().renderDummyArea = oUploadSet.fnOriginalRenderDummyArea;
71
+ };
72
+
81
73
  return UploadSetRenderer;
82
74
  });
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * @extends sap.ui.core.Control
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.103.1
25
+ * @version 1.104.0
26
26
  *
27
27
  * @constructor
28
28
  * @public