@ui5/webcomponents 0.0.0-323968e1b → 0.0.0-4180fe799

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 (730) hide show
  1. package/CHANGELOG.md +717 -1
  2. package/README.md +144 -41
  3. package/csp.js +7 -0
  4. package/customI18n.js +50 -0
  5. package/dist/Assets-static.js +6 -0
  6. package/dist/Assets.js +3 -2
  7. package/dist/Avatar.js +224 -40
  8. package/dist/AvatarGroup.js +603 -0
  9. package/dist/Badge.js +48 -28
  10. package/dist/Breadcrumbs.js +563 -0
  11. package/dist/BreadcrumbsItem.js +109 -0
  12. package/dist/BusyIndicator.js +172 -19
  13. package/dist/Button.js +180 -49
  14. package/dist/Calendar.js +345 -554
  15. package/dist/CalendarDate.js +45 -0
  16. package/dist/CalendarHeader.js +133 -64
  17. package/dist/CalendarPart.js +111 -0
  18. package/dist/Card.js +47 -161
  19. package/dist/CardHeader.js +288 -0
  20. package/dist/Carousel.js +681 -0
  21. package/dist/CheckBox.js +154 -54
  22. package/dist/ColorPalette.js +493 -0
  23. package/dist/ColorPaletteItem.js +137 -0
  24. package/dist/ColorPalettePopover.js +219 -0
  25. package/dist/ColorPicker.js +524 -0
  26. package/dist/ComboBox.js +664 -107
  27. package/dist/ComboBoxFilters.js +8 -1
  28. package/dist/ComboBoxGroupItem.js +70 -0
  29. package/dist/ComboBoxItem.js +33 -30
  30. package/dist/CustomListItem.js +38 -9
  31. package/dist/DateComponentBase.js +170 -0
  32. package/dist/DatePicker.js +468 -384
  33. package/dist/DateRangePicker.js +328 -0
  34. package/dist/DateTimePicker.js +430 -0
  35. package/dist/DayPicker.js +513 -438
  36. package/dist/Dialog.js +501 -47
  37. package/dist/DurationPicker.js +312 -0
  38. package/dist/FileUploader.js +532 -0
  39. package/dist/GroupHeaderListItem.js +36 -8
  40. package/dist/Icon.js +221 -43
  41. package/dist/Input.js +796 -127
  42. package/dist/Interfaces.js +192 -0
  43. package/dist/Label.js +27 -12
  44. package/dist/Link.js +143 -35
  45. package/dist/List.js +560 -73
  46. package/dist/ListItem.js +139 -30
  47. package/dist/ListItemBase.js +53 -9
  48. package/dist/MessageStrip.js +82 -93
  49. package/dist/MonthPicker.js +181 -184
  50. package/dist/MultiComboBox.js +625 -200
  51. package/dist/MultiComboBoxItem.js +43 -0
  52. package/dist/MultiInput.js +301 -0
  53. package/dist/Option.js +48 -5
  54. package/dist/Panel.js +123 -41
  55. package/dist/Popover.js +314 -234
  56. package/dist/Popup.js +382 -287
  57. package/dist/ProgressIndicator.js +235 -0
  58. package/dist/RadioButton.js +153 -66
  59. package/dist/RadioButtonGroup.js +53 -29
  60. package/dist/RangeSlider.js +769 -0
  61. package/dist/RatingIndicator.js +291 -0
  62. package/dist/ResponsivePopover.js +117 -61
  63. package/dist/SegmentedButton.js +290 -0
  64. package/dist/SegmentedButtonItem.js +109 -0
  65. package/dist/Select.js +500 -110
  66. package/dist/Slider.js +320 -0
  67. package/dist/SliderBase.js +842 -0
  68. package/dist/StandardListItem.js +46 -24
  69. package/dist/StepInput.js +684 -0
  70. package/dist/SuggestionGroupItem.js +64 -0
  71. package/dist/SuggestionItem.js +146 -0
  72. package/dist/SuggestionListItem.js +76 -0
  73. package/dist/Switch.js +62 -48
  74. package/dist/Tab.js +184 -18
  75. package/dist/TabContainer.js +337 -235
  76. package/dist/TabSeparator.js +2 -1
  77. package/dist/Table.js +492 -39
  78. package/dist/TableCell.js +13 -15
  79. package/dist/TableColumn.js +18 -7
  80. package/dist/TableGroupRow.js +160 -0
  81. package/dist/TableRow.js +254 -31
  82. package/dist/TextArea.js +314 -38
  83. package/dist/TimePicker.js +166 -0
  84. package/dist/TimePickerBase.js +463 -0
  85. package/dist/TimeSelection.js +493 -0
  86. package/dist/Title.js +18 -10
  87. package/dist/Toast.js +63 -37
  88. package/dist/ToggleButton.js +21 -13
  89. package/dist/Token.js +87 -49
  90. package/dist/Tokenizer.js +250 -65
  91. package/dist/Tree.js +443 -0
  92. package/dist/TreeItem.js +168 -0
  93. package/dist/TreeListItem.js +332 -0
  94. package/dist/WheelSlider.js +435 -0
  95. package/dist/YearPicker.js +201 -258
  96. package/dist/api.json +6877 -0
  97. package/dist/features/ColorPaletteMoreColors.js +42 -0
  98. package/dist/features/InputElementsFormSupport.js +35 -1
  99. package/dist/features/InputSuggestions.js +294 -52
  100. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -0
  105. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -0
  110. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  111. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  112. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  113. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -0
  115. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -0
  119. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_in.json +1 -0
  123. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -0
  136. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  148. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  149. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  150. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -0
  151. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  152. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  153. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -0
  154. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -0
  155. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -0
  156. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -0
  157. package/dist/generated/i18n/i18n-defaults.js +2 -2
  158. package/dist/generated/json-imports/Themes-static.js +35 -0
  159. package/dist/generated/json-imports/Themes.js +23 -13
  160. package/dist/generated/json-imports/i18n-static.js +162 -0
  161. package/dist/generated/json-imports/i18n.js +113 -89
  162. package/dist/generated/templates/AvatarGroupTemplate.lit.js +9 -0
  163. package/dist/generated/templates/AvatarTemplate.lit.js +9 -9
  164. package/dist/generated/templates/BadgeTemplate.lit.js +5 -6
  165. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +8 -0
  166. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +9 -0
  167. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +7 -5
  168. package/dist/generated/templates/ButtonTemplate.lit.js +6 -6
  169. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -4
  170. package/dist/generated/templates/CalendarTemplate.lit.js +4 -4
  171. package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
  172. package/dist/generated/templates/CardTemplate.lit.js +5 -8
  173. package/dist/generated/templates/CarouselTemplate.lit.js +16 -0
  174. package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -7
  175. package/dist/generated/templates/ColorPaletteDialogTemplate.lit.js +7 -0
  176. package/dist/generated/templates/ColorPaletteItemTemplate.lit.js +7 -0
  177. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +8 -0
  178. package/dist/generated/templates/ColorPaletteTemplate.lit.js +12 -0
  179. package/dist/generated/templates/ColorPickerTemplate.lit.js +7 -0
  180. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +20 -5
  181. package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -5
  182. package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -12
  183. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -4
  184. package/dist/generated/templates/DatePickerTemplate.lit.js +6 -5
  185. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +12 -0
  186. package/dist/generated/templates/DayPickerTemplate.lit.js +13 -11
  187. package/dist/generated/templates/DialogTemplate.lit.js +9 -8
  188. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +10 -0
  189. package/dist/generated/templates/FileUploaderTemplate.lit.js +10 -0
  190. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -4
  191. package/dist/generated/templates/IconTemplate.lit.js +6 -6
  192. package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -6
  193. package/dist/generated/templates/InputTemplate.lit.js +9 -8
  194. package/dist/generated/templates/LabelTemplate.lit.js +4 -4
  195. package/dist/generated/templates/LinkTemplate.lit.js +5 -5
  196. package/dist/generated/templates/ListItemTemplate.lit.js +13 -12
  197. package/dist/generated/templates/ListTemplate.lit.js +12 -8
  198. package/dist/generated/templates/MessageStripTemplate.lit.js +6 -22
  199. package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -6
  200. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -7
  201. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -8
  202. package/dist/generated/templates/MultiInputTemplate.lit.js +16 -0
  203. package/dist/generated/templates/PanelTemplate.lit.js +9 -6
  204. package/dist/generated/templates/PopoverTemplate.lit.js +9 -9
  205. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +7 -0
  206. package/dist/generated/templates/PopupTemplate.lit.js +4 -4
  207. package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +17 -0
  208. package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -7
  209. package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
  210. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +14 -0
  211. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -11
  212. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
  213. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +7 -0
  214. package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -6
  215. package/dist/generated/templates/SelectTemplate.lit.js +6 -4
  216. package/dist/generated/templates/SliderBaseTemplate.lit.js +11 -0
  217. package/dist/generated/templates/SliderTemplate.lit.js +12 -0
  218. package/dist/generated/templates/StandardListItemTemplate.lit.js +21 -18
  219. package/dist/generated/templates/StepInputTemplate.lit.js +10 -0
  220. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +27 -0
  221. package/dist/generated/templates/SwitchTemplate.lit.js +8 -6
  222. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -8
  223. package/dist/generated/templates/TabContainerTemplate.lit.js +16 -18
  224. package/dist/generated/templates/TabInOverflowTemplate.lit.js +9 -0
  225. package/dist/generated/templates/TabInStripTemplate.lit.js +11 -0
  226. package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -4
  227. package/dist/generated/templates/TabTemplate.lit.js +4 -4
  228. package/dist/generated/templates/TableCellTemplate.lit.js +4 -4
  229. package/dist/generated/templates/TableColumnTemplate.lit.js +4 -4
  230. package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
  231. package/dist/generated/templates/TableRowTemplate.lit.js +12 -6
  232. package/dist/generated/templates/TableTemplate.lit.js +13 -8
  233. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +11 -0
  234. package/dist/generated/templates/TextAreaTemplate.lit.js +8 -8
  235. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +7 -0
  236. package/dist/generated/templates/TimePickerTemplate.lit.js +9 -0
  237. package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
  238. package/dist/generated/templates/TitleTemplate.lit.js +10 -10
  239. package/dist/generated/templates/ToastTemplate.lit.js +5 -4
  240. package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -6
  241. package/dist/generated/templates/TokenTemplate.lit.js +7 -5
  242. package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +12 -0
  243. package/dist/generated/templates/TokenizerTemplate.lit.js +6 -6
  244. package/dist/generated/templates/TreeListItemTemplate.lit.js +21 -0
  245. package/dist/generated/templates/TreeTemplate.lit.js +8 -0
  246. package/dist/generated/templates/WheelSliderTemplate.lit.js +10 -0
  247. package/dist/generated/templates/YearPickerTemplate.lit.js +6 -6
  248. package/dist/generated/themes/Avatar.css.js +6 -7
  249. package/dist/generated/themes/AvatarGroup.css.js +8 -0
  250. package/dist/generated/themes/Badge.css.js +6 -7
  251. package/dist/generated/themes/Breadcrumbs.css.js +8 -0
  252. package/dist/generated/themes/BreadcrumbsPopover.css.js +8 -0
  253. package/dist/generated/themes/BrowserScrollbar.css.js +8 -0
  254. package/dist/generated/themes/BusyIndicator.css.js +6 -7
  255. package/dist/generated/themes/Button.css.js +6 -7
  256. package/dist/generated/themes/Button.ie11.css.js +8 -0
  257. package/dist/generated/themes/Calendar.css.js +6 -7
  258. package/dist/generated/themes/CalendarHeader.css.js +6 -7
  259. package/dist/generated/themes/Card.css.js +6 -7
  260. package/dist/generated/themes/CardHeader.css.js +8 -0
  261. package/dist/generated/themes/Carousel.css.js +8 -0
  262. package/dist/generated/themes/CheckBox.css.js +6 -7
  263. package/dist/generated/themes/ColorPalette.css.js +8 -0
  264. package/dist/generated/themes/ColorPaletteItem.css.js +8 -0
  265. package/dist/generated/themes/ColorPalettePopover.css.js +8 -0
  266. package/dist/generated/themes/ColorPaletteStaticArea.css.js +8 -0
  267. package/dist/generated/themes/ColorPicker.css.js +8 -0
  268. package/dist/generated/themes/ComboBox.css.js +6 -7
  269. package/dist/generated/themes/ComboBoxPopover.css.js +6 -7
  270. package/dist/generated/themes/CustomListItem.css.js +6 -7
  271. package/dist/generated/themes/DatePicker.css.js +6 -7
  272. package/dist/generated/themes/DatePickerPopover.css.js +6 -7
  273. package/dist/generated/themes/DateRangePicker.css.js +8 -0
  274. package/dist/generated/themes/DateTimePicker.css.js +8 -0
  275. package/dist/generated/themes/DateTimePickerPopover.css.js +8 -0
  276. package/dist/generated/themes/DayPicker.css.js +6 -7
  277. package/dist/generated/themes/Dialog.css.js +6 -7
  278. package/dist/generated/themes/FileUploader.css.js +8 -0
  279. package/dist/generated/themes/GroupHeaderListItem.css.js +6 -7
  280. package/dist/generated/themes/GrowingButton.css.js +8 -0
  281. package/dist/generated/themes/Icon.css.js +6 -7
  282. package/dist/generated/themes/Input.css.js +6 -7
  283. package/dist/generated/themes/InputIcon.css.js +6 -7
  284. package/dist/generated/themes/InvisibleTextStyles.css.js +6 -7
  285. package/dist/generated/themes/Label.css.js +6 -7
  286. package/dist/generated/themes/Link.css.js +6 -7
  287. package/dist/generated/themes/List.css.js +6 -7
  288. package/dist/generated/themes/ListItem.css.js +6 -7
  289. package/dist/generated/themes/ListItemBase.css.js +6 -7
  290. package/dist/generated/themes/MessageStrip.css.js +6 -7
  291. package/dist/generated/themes/MonthPicker.css.js +6 -7
  292. package/dist/generated/themes/MultiComboBox.css.js +6 -7
  293. package/dist/generated/themes/MultiInput.css.js +8 -0
  294. package/dist/generated/themes/Panel.css.js +6 -7
  295. package/dist/generated/themes/Popover.css.js +6 -7
  296. package/dist/generated/themes/Popup.css.js +6 -7
  297. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  298. package/dist/generated/themes/PopupStaticAreaStyles.css.js +8 -0
  299. package/dist/generated/themes/PopupsCommon.css.js +8 -0
  300. package/dist/generated/themes/ProgressIndicator.css.js +8 -0
  301. package/dist/generated/themes/RadioButton.css.js +6 -7
  302. package/dist/generated/themes/RatingIndicator.css.js +8 -0
  303. package/dist/generated/themes/ResponsivePopover.css.js +6 -7
  304. package/dist/generated/themes/ResponsivePopoverCommon.css.js +6 -7
  305. package/dist/generated/themes/SegmentedButton.css.js +8 -0
  306. package/dist/generated/themes/Select.css.js +6 -7
  307. package/dist/generated/themes/SelectPopover.css.js +8 -0
  308. package/dist/generated/themes/SliderBase.css.js +8 -0
  309. package/dist/generated/themes/StepInput.css.js +8 -0
  310. package/dist/generated/themes/Suggestions.css.js +8 -0
  311. package/dist/generated/themes/Switch.css.js +6 -7
  312. package/dist/generated/themes/Tab.css.js +6 -7
  313. package/dist/generated/themes/TabContainer.css.js +6 -7
  314. package/dist/generated/themes/TabInOverflow.css.js +8 -0
  315. package/dist/generated/themes/TabInStrip.css.js +8 -0
  316. package/dist/generated/themes/Table.css.js +6 -7
  317. package/dist/generated/themes/TableCell.css.js +6 -7
  318. package/dist/generated/themes/TableColumn.css.js +6 -7
  319. package/dist/generated/themes/TableGroupRow.css.js +8 -0
  320. package/dist/generated/themes/TableRow.css.js +6 -7
  321. package/dist/generated/themes/TapHighlightColor.css.js +8 -0
  322. package/dist/generated/themes/TextArea.css.js +6 -7
  323. package/dist/generated/themes/TimePicker.css.js +8 -0
  324. package/dist/generated/themes/TimePickerPopover.css.js +8 -0
  325. package/dist/generated/themes/TimeSelection.css.js +8 -0
  326. package/dist/generated/themes/Title.css.js +6 -7
  327. package/dist/generated/themes/Toast.css.js +6 -7
  328. package/dist/generated/themes/ToggleButton.css.js +6 -7
  329. package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
  330. package/dist/generated/themes/Token.css.js +6 -7
  331. package/dist/generated/themes/Tokenizer.css.js +6 -7
  332. package/dist/generated/themes/Tree.css.js +8 -0
  333. package/dist/generated/themes/TreeListItem.css.js +8 -0
  334. package/dist/generated/themes/ValueStateMessage.css.js +8 -0
  335. package/dist/generated/themes/WheelSlider.css.js +8 -0
  336. package/dist/generated/themes/YearPicker.css.js +6 -7
  337. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  338. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  339. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -0
  340. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  341. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  342. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -0
  343. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -0
  344. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -0
  345. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -0
  346. package/dist/i18n/messagebundle.properties +335 -0
  347. package/dist/i18n/messagebundle_ar.properties +224 -0
  348. package/dist/i18n/messagebundle_bg.properties +224 -0
  349. package/dist/i18n/messagebundle_ca.properties +224 -0
  350. package/dist/i18n/messagebundle_cs.properties +224 -0
  351. package/dist/i18n/messagebundle_cy.properties +224 -0
  352. package/dist/i18n/messagebundle_da.properties +224 -0
  353. package/dist/i18n/messagebundle_de.properties +224 -0
  354. package/dist/i18n/messagebundle_el.properties +224 -0
  355. package/dist/i18n/messagebundle_en.properties +224 -0
  356. package/dist/i18n/messagebundle_en_GB.properties +224 -0
  357. package/dist/i18n/messagebundle_en_US_sappsd.properties +224 -0
  358. package/dist/i18n/messagebundle_en_US_saprigi.properties +224 -0
  359. package/dist/i18n/messagebundle_en_US_saptrc.properties +224 -0
  360. package/dist/i18n/messagebundle_es.properties +224 -0
  361. package/dist/i18n/messagebundle_es_MX.properties +224 -0
  362. package/dist/i18n/messagebundle_et.properties +224 -0
  363. package/dist/i18n/messagebundle_fi.properties +224 -0
  364. package/dist/i18n/messagebundle_fr.properties +224 -0
  365. package/dist/i18n/messagebundle_fr_CA.properties +224 -0
  366. package/dist/i18n/messagebundle_hi.properties +224 -0
  367. package/dist/i18n/messagebundle_hr.properties +224 -0
  368. package/dist/i18n/messagebundle_hu.properties +224 -0
  369. package/dist/i18n/messagebundle_id.properties +224 -0
  370. package/dist/i18n/messagebundle_in.properties +172 -0
  371. package/dist/i18n/messagebundle_it.properties +224 -0
  372. package/dist/i18n/messagebundle_iw.properties +224 -0
  373. package/dist/i18n/messagebundle_ja.properties +224 -0
  374. package/dist/i18n/messagebundle_kk.properties +224 -0
  375. package/dist/i18n/messagebundle_ko.properties +224 -0
  376. package/dist/i18n/messagebundle_lt.properties +224 -0
  377. package/dist/i18n/messagebundle_lv.properties +224 -0
  378. package/dist/i18n/messagebundle_ms.properties +224 -0
  379. package/dist/i18n/messagebundle_nl.properties +224 -0
  380. package/dist/i18n/messagebundle_no.properties +224 -0
  381. package/dist/i18n/messagebundle_pl.properties +224 -0
  382. package/dist/i18n/messagebundle_pt.properties +224 -0
  383. package/dist/i18n/messagebundle_pt_PT.properties +224 -0
  384. package/dist/i18n/messagebundle_ro.properties +224 -0
  385. package/dist/i18n/messagebundle_ru.properties +224 -0
  386. package/dist/i18n/messagebundle_sh.properties +224 -0
  387. package/dist/i18n/messagebundle_sk.properties +224 -0
  388. package/dist/i18n/messagebundle_sl.properties +224 -0
  389. package/dist/i18n/messagebundle_sv.properties +224 -0
  390. package/dist/i18n/messagebundle_th.properties +224 -0
  391. package/dist/i18n/messagebundle_tr.properties +224 -0
  392. package/dist/i18n/messagebundle_uk.properties +224 -0
  393. package/dist/i18n/messagebundle_vi.properties +224 -0
  394. package/dist/i18n/messagebundle_zh_CN.properties +224 -0
  395. package/dist/i18n/messagebundle_zh_TW.properties +224 -0
  396. package/dist/popup-utils/OpenedPopupsRegistry.js +18 -13
  397. package/dist/popup-utils/PopoverRegistry.js +55 -21
  398. package/dist/timepicker-utils/TimeSlider.js +103 -0
  399. package/dist/types/{AvatarBackgroundColor.js → AvatarColorScheme.js} +9 -9
  400. package/dist/types/AvatarGroupType.js +43 -0
  401. package/dist/types/AvatarShape.js +1 -1
  402. package/dist/types/AvatarSize.js +1 -1
  403. package/dist/types/BreadcrumbsDesign.js +42 -0
  404. package/dist/types/BreadcrumbsSeparatorStyle.js +69 -0
  405. package/dist/types/BusyIndicatorSize.js +1 -1
  406. package/dist/types/ButtonDesign.js +8 -1
  407. package/dist/types/CalendarSelectionMode.js +47 -0
  408. package/dist/types/CarouselArrowsPlacement.js +40 -0
  409. package/dist/types/GrowingMode.js +48 -0
  410. package/dist/types/InputType.js +7 -7
  411. package/dist/types/LinkDesign.js +1 -1
  412. package/dist/types/ListGrowingMode.js +15 -0
  413. package/dist/types/ListItemType.js +8 -1
  414. package/dist/types/ListMode.js +9 -1
  415. package/dist/types/ListSeparators.js +1 -1
  416. package/dist/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
  417. package/dist/types/PanelAccessibleRole.js +1 -1
  418. package/dist/types/PopoverHorizontalAlign.js +1 -1
  419. package/dist/types/PopoverPlacementType.js +2 -2
  420. package/dist/types/PopoverVerticalAlign.js +1 -2
  421. package/dist/types/Priority.js +55 -0
  422. package/dist/types/SemanticColor.js +1 -1
  423. package/dist/types/SwitchDesign.js +40 -0
  424. package/dist/types/TabContainerTabsPlacement.js +40 -0
  425. package/dist/types/TabLayout.js +40 -0
  426. package/dist/types/TableGrowingMode.js +15 -0
  427. package/dist/types/TableMode.js +47 -0
  428. package/dist/types/TableRowType.js +40 -0
  429. package/dist/types/TitleLevel.js +1 -1
  430. package/dist/types/ToastPlacement.js +1 -2
  431. package/dist/types/WrappingType.js +41 -0
  432. package/dist/webcomponentsjs/CHANGELOG.md +61 -0
  433. package/dist/webcomponentsjs/README.md +64 -47
  434. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +38 -38
  435. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -1
  436. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js +60 -0
  437. package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
  438. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
  439. package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
  440. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +292 -229
  441. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -1
  442. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +190 -170
  443. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -1
  444. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +151 -132
  445. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -1
  446. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +2 -2
  447. package/dist/webcomponentsjs/webcomponents-bundle.js +302 -230
  448. package/dist/webcomponentsjs/webcomponents-bundle.js.map +1 -1
  449. package/dist/webcomponentsjs/webcomponents-loader.js +49 -28
  450. package/package-scripts.js +1 -0
  451. package/package.json +23 -8
  452. package/src/Assets-static.js +6 -0
  453. package/src/Assets.js +7 -0
  454. package/src/Avatar.hbs +20 -0
  455. package/src/Avatar.js +392 -0
  456. package/src/AvatarGroup.hbs +30 -0
  457. package/src/AvatarGroup.js +603 -0
  458. package/src/Badge.hbs +14 -0
  459. package/src/Badge.js +165 -0
  460. package/src/Breadcrumbs.hbs +42 -0
  461. package/src/Breadcrumbs.js +563 -0
  462. package/src/BreadcrumbsItem.js +109 -0
  463. package/src/BreadcrumbsPopover.hbs +28 -0
  464. package/src/BusyIndicator.hbs +32 -0
  465. package/src/BusyIndicator.js +269 -0
  466. package/src/Button.hbs +45 -0
  467. package/src/Button.js +463 -0
  468. package/src/Calendar.hbs +69 -0
  469. package/src/Calendar.js +489 -0
  470. package/src/CalendarDate.js +45 -0
  471. package/src/CalendarHeader.hbs +54 -0
  472. package/src/CalendarHeader.js +209 -0
  473. package/src/CalendarPart.js +111 -0
  474. package/src/Card.hbs +14 -0
  475. package/src/Card.js +160 -0
  476. package/src/CardHeader.hbs +35 -0
  477. package/src/CardHeader.js +288 -0
  478. package/src/Carousel.hbs +85 -0
  479. package/src/Carousel.js +681 -0
  480. package/src/CheckBox.hbs +44 -0
  481. package/src/CheckBox.js +424 -0
  482. package/src/ColorPalette.hbs +52 -0
  483. package/src/ColorPalette.js +493 -0
  484. package/src/ColorPaletteDialog.hbs +18 -0
  485. package/src/ColorPaletteItem.hbs +11 -0
  486. package/src/ColorPaletteItem.js +137 -0
  487. package/src/ColorPalettePopover.hbs +29 -0
  488. package/src/ColorPalettePopover.js +219 -0
  489. package/src/ColorPicker.hbs +98 -0
  490. package/src/ColorPicker.js +524 -0
  491. package/src/ComboBox.hbs +49 -0
  492. package/src/ComboBox.js +1041 -0
  493. package/src/ComboBoxFilters.js +40 -0
  494. package/src/ComboBoxGroupItem.js +70 -0
  495. package/src/ComboBoxItem.js +49 -0
  496. package/src/ComboBoxPopover.hbs +125 -0
  497. package/src/CustomListItem.hbs +5 -0
  498. package/src/CustomListItem.js +99 -0
  499. package/src/DateComponentBase.js +170 -0
  500. package/src/DatePicker.hbs +44 -0
  501. package/src/DatePicker.js +823 -0
  502. package/src/DatePickerPopover.hbs +63 -0
  503. package/src/DateRangePicker.js +328 -0
  504. package/src/DateTimePicker.js +430 -0
  505. package/src/DateTimePickerPopover.hbs +74 -0
  506. package/src/DayPicker.hbs +66 -0
  507. package/src/DayPicker.js +754 -0
  508. package/src/Dialog.hbs +35 -0
  509. package/src/Dialog.js +601 -0
  510. package/src/DurationPicker.js +312 -0
  511. package/src/FileUploader.hbs +40 -0
  512. package/src/FileUploader.js +532 -0
  513. package/src/FileUploaderPopover.hbs +25 -0
  514. package/src/GroupHeaderListItem.hbs +15 -0
  515. package/src/GroupHeaderListItem.js +94 -0
  516. package/src/Icon.hbs +25 -0
  517. package/src/Icon.js +373 -0
  518. package/src/Input.hbs +78 -0
  519. package/src/Input.js +1381 -0
  520. package/src/InputPopover.hbs +118 -0
  521. package/src/Interfaces.js +192 -0
  522. package/src/Label.hbs +13 -0
  523. package/src/Label.js +152 -0
  524. package/src/Link.hbs +20 -0
  525. package/src/Link.js +349 -0
  526. package/src/List.hbs +89 -0
  527. package/src/List.js +1056 -0
  528. package/src/ListItem.hbs +102 -0
  529. package/src/ListItem.js +371 -0
  530. package/src/ListItemBase.js +179 -0
  531. package/src/MessageStrip.hbs +34 -0
  532. package/src/MessageStrip.js +227 -0
  533. package/src/MonthPicker.hbs +29 -0
  534. package/src/MonthPicker.js +299 -0
  535. package/src/MultiComboBox.hbs +78 -0
  536. package/src/MultiComboBox.js +1091 -0
  537. package/src/MultiComboBoxItem.js +43 -0
  538. package/src/MultiComboBoxPopover.hbs +133 -0
  539. package/src/MultiInput.hbs +41 -0
  540. package/src/MultiInput.js +301 -0
  541. package/src/Option.js +115 -0
  542. package/src/Panel.hbs +63 -0
  543. package/src/Panel.js +462 -0
  544. package/src/Popover.hbs +25 -0
  545. package/src/Popover.js +786 -0
  546. package/src/Popup.hbs +34 -0
  547. package/src/Popup.js +567 -0
  548. package/src/PopupBlockLayer.hbs +7 -0
  549. package/src/ProgressIndicator.hbs +35 -0
  550. package/src/ProgressIndicator.js +235 -0
  551. package/src/RadioButton.hbs +33 -0
  552. package/src/RadioButton.js +494 -0
  553. package/src/RadioButtonGroup.js +205 -0
  554. package/src/RangeSlider.hbs +70 -0
  555. package/src/RangeSlider.js +769 -0
  556. package/src/RatingIndicator.hbs +33 -0
  557. package/src/RatingIndicator.js +291 -0
  558. package/src/ResponsivePopover.hbs +39 -0
  559. package/src/ResponsivePopover.js +206 -0
  560. package/src/SegmentedButton.hbs +17 -0
  561. package/src/SegmentedButton.js +290 -0
  562. package/src/SegmentedButtonItem.hbs +42 -0
  563. package/src/SegmentedButtonItem.js +109 -0
  564. package/src/Select.hbs +45 -0
  565. package/src/Select.js +834 -0
  566. package/src/SelectPopover.hbs +89 -0
  567. package/src/Slider.hbs +42 -0
  568. package/src/Slider.js +320 -0
  569. package/src/SliderBase.hbs +38 -0
  570. package/src/SliderBase.js +842 -0
  571. package/src/StandardListItem.hbs +44 -0
  572. package/src/StandardListItem.js +191 -0
  573. package/src/StepInput.hbs +80 -0
  574. package/src/StepInput.js +684 -0
  575. package/src/SuggestionGroupItem.js +64 -0
  576. package/src/SuggestionItem.js +146 -0
  577. package/src/SuggestionListItem.hbs +33 -0
  578. package/src/SuggestionListItem.js +76 -0
  579. package/src/Switch.hbs +50 -0
  580. package/src/Switch.js +262 -0
  581. package/src/Tab.hbs +3 -0
  582. package/src/Tab.js +334 -0
  583. package/src/TabContainer.hbs +93 -0
  584. package/src/TabContainer.js +679 -0
  585. package/src/TabContainerPopover.hbs +24 -0
  586. package/src/TabInOverflow.hbs +22 -0
  587. package/src/TabInStrip.hbs +43 -0
  588. package/src/TabSeparator.hbs +1 -0
  589. package/src/TabSeparator.js +44 -0
  590. package/src/Table.hbs +99 -0
  591. package/src/Table.js +761 -0
  592. package/src/TableCell.hbs +7 -0
  593. package/src/TableCell.js +88 -0
  594. package/src/TableColumn.hbs +8 -0
  595. package/src/TableColumn.js +136 -0
  596. package/src/TableGroupRow.hbs +12 -0
  597. package/src/TableGroupRow.js +160 -0
  598. package/src/TableRow.hbs +61 -0
  599. package/src/TableRow.js +388 -0
  600. package/src/TextArea.hbs +50 -0
  601. package/src/TextArea.js +691 -0
  602. package/src/TextAreaPopover.hbs +28 -0
  603. package/src/TimePicker.hbs +35 -0
  604. package/src/TimePicker.js +166 -0
  605. package/src/TimePickerBase.js +463 -0
  606. package/src/TimePickerPopover.hbs +34 -0
  607. package/src/TimeSelection.hbs +60 -0
  608. package/src/TimeSelection.js +493 -0
  609. package/src/Title.hbs +47 -0
  610. package/src/Title.js +132 -0
  611. package/src/Toast.hbs +13 -0
  612. package/src/Toast.js +243 -0
  613. package/src/ToggleButton.hbs +5 -0
  614. package/src/ToggleButton.js +84 -0
  615. package/src/Token.hbs +30 -0
  616. package/src/Token.js +219 -0
  617. package/src/Tokenizer.hbs +27 -0
  618. package/src/Tokenizer.js +414 -0
  619. package/src/TokenizerPopover.hbs +50 -0
  620. package/src/Tree.hbs +42 -0
  621. package/src/Tree.js +443 -0
  622. package/src/TreeItem.js +168 -0
  623. package/src/TreeListItem.hbs +48 -0
  624. package/src/TreeListItem.js +332 -0
  625. package/src/WheelSlider.hbs +48 -0
  626. package/src/WheelSlider.js +435 -0
  627. package/src/YearPicker.hbs +27 -0
  628. package/src/YearPicker.js +324 -0
  629. package/src/features/ColorPaletteMoreColors.js +42 -0
  630. package/src/features/InputElementsFormSupport.js +88 -0
  631. package/src/features/InputSuggestions.js +530 -0
  632. package/src/i18n/messagebundle.properties +335 -0
  633. package/src/i18n/messagebundle_ar.properties +224 -0
  634. package/src/i18n/messagebundle_bg.properties +224 -0
  635. package/src/i18n/messagebundle_ca.properties +224 -0
  636. package/src/i18n/messagebundle_cs.properties +224 -0
  637. package/src/i18n/messagebundle_cy.properties +224 -0
  638. package/src/i18n/messagebundle_da.properties +224 -0
  639. package/src/i18n/messagebundle_de.properties +224 -0
  640. package/src/i18n/messagebundle_el.properties +224 -0
  641. package/src/i18n/messagebundle_en.properties +224 -0
  642. package/src/i18n/messagebundle_en_GB.properties +224 -0
  643. package/src/i18n/messagebundle_en_US_sappsd.properties +224 -0
  644. package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
  645. package/src/i18n/messagebundle_en_US_saptrc.properties +224 -0
  646. package/src/i18n/messagebundle_es.properties +224 -0
  647. package/src/i18n/messagebundle_es_MX.properties +224 -0
  648. package/src/i18n/messagebundle_et.properties +224 -0
  649. package/src/i18n/messagebundle_fi.properties +224 -0
  650. package/src/i18n/messagebundle_fr.properties +224 -0
  651. package/src/i18n/messagebundle_fr_CA.properties +224 -0
  652. package/src/i18n/messagebundle_hi.properties +224 -0
  653. package/src/i18n/messagebundle_hr.properties +224 -0
  654. package/src/i18n/messagebundle_hu.properties +224 -0
  655. package/src/i18n/messagebundle_id.properties +224 -0
  656. package/src/i18n/messagebundle_in.properties +172 -0
  657. package/src/i18n/messagebundle_it.properties +224 -0
  658. package/src/i18n/messagebundle_iw.properties +224 -0
  659. package/src/i18n/messagebundle_ja.properties +224 -0
  660. package/src/i18n/messagebundle_kk.properties +224 -0
  661. package/src/i18n/messagebundle_ko.properties +224 -0
  662. package/src/i18n/messagebundle_lt.properties +224 -0
  663. package/src/i18n/messagebundle_lv.properties +224 -0
  664. package/src/i18n/messagebundle_ms.properties +224 -0
  665. package/src/i18n/messagebundle_nl.properties +224 -0
  666. package/src/i18n/messagebundle_no.properties +224 -0
  667. package/src/i18n/messagebundle_pl.properties +224 -0
  668. package/src/i18n/messagebundle_pt.properties +224 -0
  669. package/src/i18n/messagebundle_pt_PT.properties +224 -0
  670. package/src/i18n/messagebundle_ro.properties +224 -0
  671. package/src/i18n/messagebundle_ru.properties +224 -0
  672. package/src/i18n/messagebundle_sh.properties +224 -0
  673. package/src/i18n/messagebundle_sk.properties +224 -0
  674. package/src/i18n/messagebundle_sl.properties +224 -0
  675. package/src/i18n/messagebundle_sv.properties +224 -0
  676. package/src/i18n/messagebundle_th.properties +224 -0
  677. package/src/i18n/messagebundle_tr.properties +224 -0
  678. package/src/i18n/messagebundle_uk.properties +224 -0
  679. package/src/i18n/messagebundle_vi.properties +224 -0
  680. package/src/i18n/messagebundle_zh_CN.properties +224 -0
  681. package/src/i18n/messagebundle_zh_TW.properties +224 -0
  682. package/src/popup-utils/OpenedPopupsRegistry.js +50 -0
  683. package/src/popup-utils/PopoverRegistry.js +145 -0
  684. package/src/timepicker-utils/TimeSlider.js +103 -0
  685. package/src/types/AvatarColorScheme.js +104 -0
  686. package/src/types/AvatarGroupType.js +43 -0
  687. package/src/types/AvatarShape.js +41 -0
  688. package/src/types/AvatarSize.js +67 -0
  689. package/src/types/BreadcrumbsDesign.js +42 -0
  690. package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
  691. package/src/types/BusyIndicatorSize.js +47 -0
  692. package/src/types/ButtonDesign.js +68 -0
  693. package/src/types/CalendarSelectionMode.js +47 -0
  694. package/src/types/CarouselArrowsPlacement.js +40 -0
  695. package/src/types/GrowingMode.js +48 -0
  696. package/src/types/InputType.js +68 -0
  697. package/src/types/LinkDesign.js +47 -0
  698. package/src/types/ListGrowingMode.js +15 -0
  699. package/src/types/ListItemType.js +47 -0
  700. package/src/types/ListMode.js +77 -0
  701. package/src/types/ListSeparators.js +46 -0
  702. package/src/types/MessageStripDesign.js +54 -0
  703. package/src/types/PanelAccessibleRole.js +48 -0
  704. package/src/types/PopoverHorizontalAlign.js +54 -0
  705. package/src/types/PopoverPlacementType.js +54 -0
  706. package/src/types/PopoverVerticalAlign.js +54 -0
  707. package/src/types/Priority.js +55 -0
  708. package/src/types/SemanticColor.js +61 -0
  709. package/src/types/SwitchDesign.js +40 -0
  710. package/src/types/TabContainerTabsPlacement.js +40 -0
  711. package/src/types/TabLayout.js +40 -0
  712. package/src/types/TableGrowingMode.js +15 -0
  713. package/src/types/TableMode.js +47 -0
  714. package/src/types/TableRowType.js +40 -0
  715. package/src/types/TitleLevel.js +68 -0
  716. package/src/types/ToastPlacement.js +91 -0
  717. package/src/types/WrappingType.js +41 -0
  718. package/dist/Timeline.js +0 -81
  719. package/dist/TimelineItem.js +0 -163
  720. package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -7
  721. package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -12
  722. package/dist/generated/templates/TimelineTemplate.lit.js +0 -8
  723. package/dist/generated/themes/ComboBoxItem.css.js +0 -9
  724. package/dist/generated/themes/TabContainerPopup.css.js +0 -9
  725. package/dist/generated/themes/Timeline.css.js +0 -9
  726. package/dist/generated/themes/TimelineItem.css.js +0 -9
  727. package/dist/popup-utils/PopupUtils.js +0 -42
  728. package/dist/types/AvatarFitType.js +0 -40
  729. package/dist/webcomponentsjs/package.json +0 -46
  730. package/index.js +0 -2
package/dist/Popover.js CHANGED
@@ -1,16 +1,18 @@
1
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
- import { getFirstFocusableElement, getLastFocusableElement } from "@ui5/webcomponents-base/dist/util/FocusableElements.js";
4
1
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
5
- import PopoverTemplate from "./generated/templates/PopoverTemplate.lit.js";
2
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
3
+ import { getClosedPopupParent } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
4
+ import clamp from "@ui5/webcomponents-base/dist/util/clamp.js";
5
+ import Popup from "./Popup.js";
6
6
  import PopoverPlacementType from "./types/PopoverPlacementType.js";
7
7
  import PopoverVerticalAlign from "./types/PopoverVerticalAlign.js";
8
8
  import PopoverHorizontalAlign from "./types/PopoverHorizontalAlign.js";
9
-
10
9
  import { addOpenedPopover, removeOpenedPopover } from "./popup-utils/PopoverRegistry.js";
11
- import { getFocusedElement, getClosedPopupParent } from "./popup-utils/PopupUtils.js";
12
10
 
11
+ // Template
12
+ import PopoverTemplate from "./generated/templates/PopoverTemplate.lit.js";
13
13
  // Styles
14
+ import browserScrollbarCSS from "./generated/themes/BrowserScrollbar.css.js";
15
+ import PopupsCommonCss from "./generated/themes/PopupsCommon.css.js";
14
16
  import PopoverCss from "./generated/themes/Popover.css.js";
15
17
 
16
18
  const arrowSize = 8;
@@ -21,23 +23,13 @@ const arrowSize = 8;
21
23
  const metadata = {
22
24
  tag: "ui5-popover",
23
25
  properties: /** @lends sap.ui.webcomponents.main.Popover.prototype */ {
24
- /**
25
- * Defines the ID of the HTML Element, which will get the initial focus.
26
- *
27
- * @type {string}
28
- * @defaultvalue: ""
29
- * @public
30
- */
31
- initialFocus: {
32
- type: String,
33
- },
34
-
35
26
  /**
36
27
  * Defines the header text.
37
- * <br><b>Note:</b> If <code>header</code> slot is provided, the <code>headerText</code> is ignored.
28
+ * <br><br>
29
+ * <b>Note:</b> If <code>header</code> slot is provided, the <code>headerText</code> is ignored.
38
30
  *
39
31
  * @type {string}
40
- * @defaultvalue: ""
32
+ * @defaultvalue ""
41
33
  * @public
42
34
  */
43
35
  headerText: {
@@ -45,7 +37,15 @@ const metadata = {
45
37
  },
46
38
 
47
39
  /**
48
- * Determines on which side the <code>ui5-popover</code> is placed at.
40
+ * Determines on which side the component is placed at.
41
+ * <br><br>
42
+ * Available options are:
43
+ * <ul>
44
+ * <li><code>Left</code></li>
45
+ * <li><code>Right</code></li>
46
+ * <li><code>Top</code></li>
47
+ * <li><code>Bottom</code></li>
48
+ * </ul>
49
49
  *
50
50
  * @type {PopoverPlacementType}
51
51
  * @defaultvalue "Right"
@@ -57,7 +57,15 @@ const metadata = {
57
57
  },
58
58
 
59
59
  /**
60
- * Determines the horizontal alignment of the <code>ui5-popover</code>.
60
+ * Determines the horizontal alignment of the component.
61
+ * <br><br>
62
+ * Available options are:
63
+ * <ul>
64
+ * <li><code>Center</code></li>
65
+ * <li><code>Left</code></li>
66
+ * <li><code>Right</code></li>
67
+ * <li><code>Stretch</code></li>
68
+ * </ul>
61
69
  *
62
70
  * @type {PopoverHorizontalAlign}
63
71
  * @defaultvalue "Center"
@@ -69,7 +77,15 @@ const metadata = {
69
77
  },
70
78
 
71
79
  /**
72
- * Determines the vertical alignment of the <code>ui5-popover</code>.
80
+ * Determines the vertical alignment of the component.
81
+ * <br><br>
82
+ * Available options are:
83
+ * <ul>
84
+ * <li><code>Center</code></li>
85
+ * <li><code>Top</code></li>
86
+ * <li><code>Bottom</code></li>
87
+ * <li><code>Stretch</code></li>
88
+ * </ul>
73
89
  *
74
90
  * @type {PopoverVerticalAlign}
75
91
  * @defaultvalue "Center"
@@ -81,7 +97,7 @@ const metadata = {
81
97
  },
82
98
 
83
99
  /**
84
- * Defines whether the <code>ui5-popover</code> should close when
100
+ * Defines whether the component should close when
85
101
  * clicking/tapping outside of the popover.
86
102
  * If enabled, it blocks any interaction with the background.
87
103
  *
@@ -94,18 +110,30 @@ const metadata = {
94
110
  },
95
111
 
96
112
  /**
97
- * Determines whether the <code>ui5-popover</code> arrow is hidden.
113
+ * Defines whether the block layer will be shown if modal property is set to true.
114
+ * @type {boolean}
115
+ * @defaultvalue false
116
+ * @public
117
+ * @since 1.0.0-rc.10
118
+ */
119
+ hideBackdrop: {
120
+ type: Boolean,
121
+ },
122
+
123
+ /**
124
+ * Determines whether the component arrow is hidden.
98
125
  *
99
126
  * @type {boolean}
100
127
  * @defaultvalue false
101
128
  * @public
129
+ * @since 1.0.0-rc.15
102
130
  */
103
- noArrow: {
131
+ hideArrow: {
104
132
  type: Boolean,
105
133
  },
106
134
 
107
135
  /**
108
- * Determines if there is no enough space, the <code>ui5-popover</code> can be placed
136
+ * Determines if there is no enough space, the component can be placed
109
137
  * over the target.
110
138
  *
111
139
  * @type {boolean}
@@ -116,6 +144,17 @@ const metadata = {
116
144
  type: Boolean,
117
145
  },
118
146
 
147
+ /**
148
+ * Defines whether the content is scrollable.
149
+ *
150
+ * @type {boolean}
151
+ * @defaultvalue false
152
+ * @private
153
+ */
154
+ disableScrolling: {
155
+ type: Boolean,
156
+ },
157
+
119
158
  /**
120
159
  * Sets the X translation of the arrow
121
160
  *
@@ -148,33 +187,17 @@ const metadata = {
148
187
  defaultValue: PopoverPlacementType.Right,
149
188
  },
150
189
 
151
- /**
152
- * Defines whether the <code>ui5-popover</code> is open
153
- *
154
- * @private
155
- */
156
- opened: { type: Boolean },
157
-
158
- _maxContentHeight: { type: Integer },
159
-
160
- /**
161
- * @private
162
- */
163
- _disableInitialFocus: {
164
- type: Boolean,
190
+ _maxContentHeight: {
191
+ type: Integer,
192
+ noAttribute: true,
193
+ },
194
+ _maxContentWidth: {
195
+ type: Integer,
196
+ noAttribute: true,
165
197
  },
166
198
  },
199
+ managedSlots: true,
167
200
  slots: /** @lends sap.ui.webcomponents.main.Popover.prototype */ {
168
- /**
169
- * Defines the content of the Web Component.
170
- * @type {Node[]}
171
- * @slot
172
- * @public
173
- */
174
- "default": {
175
- type: Node,
176
- },
177
-
178
201
  /**
179
202
  * Defines the header HTML Element.
180
203
  *
@@ -198,40 +221,6 @@ const metadata = {
198
221
  },
199
222
  },
200
223
  events: /** @lends sap.ui.webcomponents.main.Popover.prototype */ {
201
- /**
202
- * Fired before the component is opened.
203
- *
204
- * @public
205
- * @event
206
- */
207
- beforeOpen: {},
208
-
209
- /**
210
- * Fired after the component is opened.
211
- *
212
- * @public
213
- * @event
214
- */
215
- afterOpen: {},
216
-
217
- /**
218
- * Fired before the component is closed.
219
- *
220
- * @public
221
- * @event
222
- * @param {Boolean} escPressed Indicates that <code>ESC</code> key has triggered the event.
223
- */
224
- beforeClose: {
225
- escPressed: { type: Boolean },
226
- },
227
-
228
- /**
229
- * Fired after the component is closed.
230
- *
231
- * @public
232
- * @event
233
- */
234
- afterClose: {},
235
224
  },
236
225
  };
237
226
 
@@ -266,144 +255,96 @@ const metadata = {
266
255
  * @constructor
267
256
  * @author SAP SE
268
257
  * @alias sap.ui.webcomponents.main.Popover
269
- * @extends UI5Element
258
+ * @extends Popup
270
259
  * @tagname ui5-popover
260
+ * @since 1.0.0-rc.6
271
261
  * @public
272
262
  */
273
- class Popover extends UI5Element {
274
- static get metadata() {
275
- return metadata;
263
+ class Popover extends Popup {
264
+ constructor() {
265
+ super();
266
+
267
+ this._handleResize = this.handleResize.bind(this);
276
268
  }
277
269
 
278
- static get render() {
279
- return litRender;
270
+ static get metadata() {
271
+ return metadata;
280
272
  }
281
273
 
282
274
  static get styles() {
283
- return PopoverCss;
275
+ return [browserScrollbarCSS, PopupsCommonCss, PopoverCss];
284
276
  }
285
277
 
286
278
  static get template() {
287
279
  return PopoverTemplate;
288
280
  }
289
281
 
290
- forwardToFirst() {
291
- const firstFocusable = getFirstFocusableElement(this.contentDOM);
292
-
293
- if (firstFocusable) {
294
- firstFocusable.focus();
295
- }
282
+ static get VIEWPORT_MARGIN() {
283
+ return 10; // px
296
284
  }
297
285
 
298
- forwardToLast() {
299
- const lastFocusable = getLastFocusableElement(this.contentDOM);
286
+ onEnterDOM() {
287
+ ResizeHandler.register(this, this._handleResize);
288
+ }
300
289
 
301
- if (lastFocusable) {
302
- lastFocusable.focus();
303
- }
290
+ onExitDOM() {
291
+ ResizeHandler.deregister(this, this._handleResize);
304
292
  }
305
293
 
306
294
  isOpenerClicked(event) {
307
- return event.target === this._opener;
295
+ const target = event.target;
296
+ return target === this._opener || (target.getFocusDomRef && target.getFocusDomRef() === this._opener) || event.composedPath().indexOf(this._opener) > -1;
308
297
  }
309
298
 
310
299
  /**
311
- * Opens the popover.
312
- * @param {HTMLElement} opener the element that the popover is opened by
300
+ * Shows the popover.
301
+ * @param {HTMLElement} opener the element that the popover is shown at
302
+ * @param {boolean} preventInitialFocus prevents applying the focus inside the popover
313
303
  * @public
304
+ * @async
305
+ * @returns {Promise} Resolved when the popover is open
314
306
  */
315
- openBy(opener) {
307
+ async showAt(opener, preventInitialFocus = false) {
316
308
  if (!opener || this.opened) {
317
309
  return;
318
310
  }
319
311
 
320
312
  this._opener = opener;
321
- this._focusedElementBeforeOpen = getFocusedElement();
313
+ this._openerRect = opener.getBoundingClientRect();
322
314
 
323
- this.fireEvent("beforeOpen", {});
324
- this.reposition();
325
- this.applyInitialFocus();
326
-
327
- addOpenedPopover(this);
328
-
329
- this.opened = true;
330
- this.fireEvent("afterOpen", {});
315
+ await super._open(preventInitialFocus);
331
316
  }
332
317
 
333
318
  /**
334
- * Closes the popover.
335
- * @public
319
+ * Override for the _addOpenedPopup hook, which would otherwise just call addOpenedPopup(this)
320
+ * @private
336
321
  */
337
- close(escPressed = false, preventRegitryUpdate = false) {
338
- if (!this.opened) {
339
- return;
340
- }
341
-
342
- this.fireEvent("beforeClose", {
343
- escPressed,
344
- }, true);
345
-
346
-
347
- this.opened = false;
348
-
349
- if (!preventRegitryUpdate) {
350
- removeOpenedPopover(this);
351
- }
352
-
353
- if (!this._prevetFocusRestore) {
354
- this.resetFocus();
355
- }
356
-
357
- this.hide();
358
- this.fireEvent("afterClose", {});
359
- }
360
-
361
- get focusedElement() {
362
- let element = document.activeElement;
363
-
364
- while (element.shadowRoot && element.shadowRoot.activeElement) {
365
- element = element.shadowRoot.activeElement;
366
- }
367
-
368
- return (element && typeof element.focus === "function") ? element : null;
369
- }
370
-
371
- applyInitialFocus() {
372
- if (this._disableInitialFocus) {
373
- return;
374
- }
375
-
376
- const element = this.getRootNode().getElementById(this.initialFocus) || document.getElementById(this.initialFocus) || getFirstFocusableElement(this.contentDOM);
377
-
378
- if (element) {
379
- element.focus();
380
- }
322
+ _addOpenedPopup() {
323
+ addOpenedPopover(this);
381
324
  }
382
325
 
383
- resetFocus() {
384
- if (!this._focusedElementBeforeOpen) {
385
- return;
386
- }
387
-
388
- this._focusedElementBeforeOpen.focus();
389
- this._focusedElementBeforeOpen = null;
326
+ /**
327
+ * Override for the _removeOpenedPopup hook, which would otherwise just call removeOpenedPopup(this)
328
+ * @private
329
+ */
330
+ _removeOpenedPopup() {
331
+ removeOpenedPopover(this);
390
332
  }
391
333
 
392
- shouldCloseDueOverflow(placement, openerRect) {
334
+ shouldCloseDueToOverflow(placement, openerRect) {
393
335
  const threshold = 32;
394
-
395
336
  const limits = {
396
- "Right": openerRect.top,
397
- "Left": openerRect.top,
337
+ "Right": openerRect.right,
338
+ "Left": openerRect.left,
398
339
  "Top": openerRect.top,
399
- "Bottom": openerRect.top,
340
+ "Bottom": openerRect.bottom,
400
341
  };
401
342
 
402
343
  const closedPopupParent = getClosedPopupParent(this._opener);
403
344
  let overflowsBottom = false;
404
345
  let overflowsTop = false;
405
346
 
406
- if (closedPopupParent.openBy) {
347
+ if (closedPopupParent.showAt) {
407
348
  const contentRect = closedPopupParent.contentDOM.getBoundingClientRect();
408
349
  overflowsBottom = openerRect.top > (contentRect.top + contentRect.height);
409
350
  overflowsTop = (openerRect.top + openerRect.height) < contentRect.top;
@@ -412,73 +353,133 @@ class Popover extends UI5Element {
412
353
  return (limits[placement] < 0 || (limits[placement] + threshold > closedPopupParent.innerHeight)) || overflowsBottom || overflowsTop;
413
354
  }
414
355
 
415
- reposition() {
416
- const popoverSize = this.popoverSize;
417
- const openerRect = this._opener.getBoundingClientRect();
418
- const placement = this.calcPlacement(openerRect, popoverSize);
419
- const streching = this.horizontalAlign === PopoverHorizontalAlign.Stretch;
356
+ shouldCloseDueToNoOpener(openerRect) {
357
+ return openerRect.top === 0
358
+ && openerRect.bottom === 0
359
+ && openerRect.left === 0
360
+ && openerRect.right === 0;
361
+ }
420
362
 
421
- if (this._preventRepositionAndClose) {
422
- return this.close();
363
+ handleResize() {
364
+ if (this.opened) {
365
+ this.reposition();
423
366
  }
367
+ }
424
368
 
425
- if (this._oldPlacement && (this._oldPlacement.left === placement.left) && (this._oldPlacement.top === placement.top) && streching) {
426
- this.style.display = "inline-block";
427
- this.style.width = this._width;
369
+ reposition() {
370
+ this._show();
371
+ }
372
+
373
+ _show() {
374
+ let placement;
375
+ const popoverSize = this.getPopoverSize();
376
+
377
+ if (popoverSize.width === 0 || popoverSize.height === 0) {
378
+ // size can not be determined properly at this point, popover will be shown with the next reposition
428
379
  return;
429
380
  }
430
381
 
431
- this._oldPlacement = placement;
382
+ if (this.isOpen()) {
383
+ // update opener rect if it was changed during the popover being opened
384
+ this._openerRect = this._opener.getBoundingClientRect();
385
+ }
386
+
387
+ if (this.shouldCloseDueToNoOpener(this._openerRect) && this.isFocusWithin()) {
388
+ // reuse the old placement as the opener is not available,
389
+ // but keep the popover open as the focus is within
390
+ placement = this._oldPlacement;
391
+ } else {
392
+ placement = this.calcPlacement(this._openerRect, popoverSize);
393
+ }
394
+
395
+ const stretching = this.horizontalAlign === PopoverHorizontalAlign.Stretch;
396
+
397
+ if (this._preventRepositionAndClose) {
398
+ return this.close();
399
+ }
432
400
 
401
+ this._oldPlacement = placement;
433
402
  this.actualPlacementType = placement.placementType;
434
- this.arrowTranslateX = placement.arrowX;
435
- this.arrowTranslateY = placement.arrowY;
436
403
 
437
- this.style.left = `${this._left}px`;
438
- this.style.top = `${this._top}px`;
439
- this.style.display = "inline-block";
404
+ let left = clamp(
405
+ this._left,
406
+ Popover.VIEWPORT_MARGIN,
407
+ document.documentElement.clientWidth - popoverSize.width - Popover.VIEWPORT_MARGIN,
408
+ );
440
409
 
441
- if (streching && this._width) {
442
- this.style.width = this._width;
410
+ if (this.actualPlacementType === PopoverPlacementType.Right) {
411
+ left = Math.max(left, this._left);
443
412
  }
444
- }
445
413
 
446
- hide() {
447
- this.style.display = "none";
448
- }
414
+ let top = clamp(
415
+ this._top,
416
+ Popover.VIEWPORT_MARGIN,
417
+ document.documentElement.clientHeight - popoverSize.height - Popover.VIEWPORT_MARGIN,
418
+ );
449
419
 
450
- get popoverSize() {
451
- let width,
452
- height;
453
- let rect = this.getBoundingClientRect();
420
+ if (this.actualPlacementType === PopoverPlacementType.Bottom) {
421
+ top = Math.max(top, this._top);
422
+ }
454
423
 
455
- if (this.opened) {
456
- width = rect.width;
457
- height = rect.height;
424
+ let { arrowX, arrowY } = placement;
425
+ const isVertical = this.actualPlacementType === PopoverPlacementType.Top
426
+ || this.actualPlacementType === PopoverPlacementType.Bottom;
458
427
 
459
- return { width, height };
428
+ if (isVertical) {
429
+ const popoverOnLeftBorderOffset = Popover.VIEWPORT_MARGIN - this._left;
430
+ const popoverOnRightBorderOffset = this._left + popoverSize.width + Popover.VIEWPORT_MARGIN - document.documentElement.clientWidth;
431
+ if (popoverOnLeftBorderOffset > 0) {
432
+ arrowX -= popoverOnLeftBorderOffset;
433
+ } else if (popoverOnRightBorderOffset > 0) {
434
+ arrowX += popoverOnRightBorderOffset;
435
+ }
436
+ }
437
+ this.arrowTranslateX = Math.round(arrowX);
438
+
439
+ if (!isVertical) {
440
+ const popoverOnTopBorderOffset = Popover.VIEWPORT_MARGIN - this._top;
441
+ const popoverOnBottomBorderOffset = this._top + popoverSize.height + Popover.VIEWPORT_MARGIN - document.documentElement.clientHeight;
442
+ if (popoverOnTopBorderOffset > 0) {
443
+ arrowY -= popoverOnTopBorderOffset;
444
+ } else if (popoverOnBottomBorderOffset > 0) {
445
+ arrowY += popoverOnBottomBorderOffset;
446
+ }
460
447
  }
448
+ this.arrowTranslateY = Math.round(arrowY);
461
449
 
462
- this.style.visibility = "hidden";
463
- this.style.display = "inline-block";
450
+ Object.assign(this.style, {
451
+ top: `${top}px`,
452
+ left: `${left}px`,
453
+ });
454
+ super._show();
464
455
 
465
- rect = this.getBoundingClientRect();
456
+ if (stretching && this._width) {
457
+ this.style.width = this._width;
458
+ }
459
+ }
466
460
 
467
- width = rect.width;
468
- height = rect.height;
461
+ getPopoverSize() {
462
+ if (!this.opened) {
463
+ Object.assign(this.style, {
464
+ display: "block",
465
+ top: "-10000px",
466
+ left: "-10000px",
467
+ });
468
+ }
469
469
 
470
- this.style.display = "none";
471
- this.style.visibility = "visible";
470
+ const rect = this.getBoundingClientRect(),
471
+ width = rect.width,
472
+ height = rect.height;
472
473
 
473
474
  return { width, height };
474
475
  }
475
476
 
476
477
  get contentDOM() {
477
- return this.shadowRoot.querySelector(".ui5-popover-content");
478
+ return this.shadowRoot.querySelector(".ui5-popup-content");
478
479
  }
479
480
 
480
481
  get arrowDOM() {
481
- return this.shadowRoot.querySelector(".ui5-popover-arr");
482
+ return this.shadowRoot.querySelector(".ui5-popover-arrow");
482
483
  }
483
484
 
484
485
  calcPlacement(targetRect, popoverSize) {
@@ -490,13 +491,14 @@ class Popover extends UI5Element {
490
491
  const clientHeight = document.documentElement.clientHeight;
491
492
 
492
493
  let maxHeight = clientHeight;
494
+ let maxWidth = clientWidth;
493
495
 
494
496
  let width = "";
495
497
  let height = "";
496
498
 
497
499
  const placementType = this.getActualPlacementType(targetRect, popoverSize);
498
500
 
499
- this._preventRepositionAndClose = this.shouldCloseDueOverflow(placementType, targetRect);
501
+ this._preventRepositionAndClose = this.shouldCloseDueToNoOpener(targetRect) || this.shouldCloseDueToOverflow(placementType, targetRect);
500
502
 
501
503
  const isVertical = placementType === PopoverPlacementType.Top
502
504
  || placementType === PopoverPlacementType.Bottom;
@@ -512,7 +514,7 @@ class Popover extends UI5Element {
512
514
  this._width = width;
513
515
  this._height = height;
514
516
 
515
- const arrowOffset = this.noArrow ? 0 : arrowSize;
517
+ const arrowOffset = this.hideArrow ? 0 : arrowSize;
516
518
 
517
519
  // calc popover positions
518
520
  switch (placementType) {
@@ -537,12 +539,17 @@ class Popover extends UI5Element {
537
539
  case PopoverPlacementType.Left:
538
540
  left = Math.max(targetRect.left - popoverSize.width - arrowOffset, 0);
539
541
  top = this.getHorizontalTop(targetRect, popoverSize);
542
+
543
+ if (!allowTargetOverlap) {
544
+ maxWidth = targetRect.left - arrowOffset;
545
+ }
540
546
  break;
541
547
  case PopoverPlacementType.Right:
542
548
  if (allowTargetOverlap) {
543
549
  left = Math.max(Math.min(targetRect.left + targetRect.width + arrowOffset, clientWidth - popoverSize.width), 0);
544
550
  } else {
545
551
  left = targetRect.left + targetRect.width + arrowOffset;
552
+ maxWidth = clientWidth - targetRect.right - arrowOffset;
546
553
  }
547
554
 
548
555
  top = this.getHorizontalTop(targetRect, popoverSize);
@@ -564,23 +571,21 @@ class Popover extends UI5Element {
564
571
  }
565
572
  }
566
573
 
567
- let maxContentHeight = Math.round(maxHeight);
574
+ let maxContentHeight = maxHeight;
568
575
 
569
- const hasHeader = this.header.length || this.headerText;
570
-
571
- if (hasHeader) {
572
- const headerDomRef = this.shadowRoot.querySelector(".ui5-popover-header-root")
576
+ if (this._displayHeader) {
577
+ const headerDomRef = this.shadowRoot.querySelector(".ui5-popup-header-root")
573
578
  || this.shadowRoot.querySelector(".ui5-popup-header-text");
574
579
 
575
580
  if (headerDomRef) {
576
- maxContentHeight = Math.round(maxHeight - headerDomRef.offsetHeight);
581
+ maxContentHeight = maxHeight - headerDomRef.offsetHeight;
577
582
  }
578
583
  }
579
584
 
580
- this._maxContentHeight = maxContentHeight;
585
+ this._maxContentHeight = Math.round(maxContentHeight - Popover.VIEWPORT_MARGIN);
586
+ this._maxContentWidth = Math.round(maxWidth - Popover.VIEWPORT_MARGIN);
581
587
 
582
- const arrowTranslateX = isVertical ? targetRect.left + targetRect.width / 2 - left - popoverSize.width / 2 : 0;
583
- const arrowTranslateY = !isVertical ? targetRect.top + targetRect.height / 2 - top - popoverSize.height / 2 : 0;
588
+ const arrowPos = this.getArrowPosition(targetRect, popoverSize, left, top, isVertical);
584
589
 
585
590
  if (this._left === undefined || Math.abs(this._left - left) > 1.5) {
586
591
  this._left = Math.round(left);
@@ -591,14 +596,73 @@ class Popover extends UI5Element {
591
596
  }
592
597
 
593
598
  return {
594
- arrowX: Math.round(arrowTranslateX),
595
- arrowY: Math.round(arrowTranslateY),
599
+ arrowX: arrowPos.x,
600
+ arrowY: arrowPos.y,
596
601
  top: this._top,
597
602
  left: this._left,
598
603
  placementType,
599
604
  };
600
605
  }
601
606
 
607
+ /**
608
+ * Calculates the position for the arrow.
609
+ * @private
610
+ * @param targetRect BoundingClientRect of the target element
611
+ * @param popoverSize Width and height of the popover
612
+ * @param left Left offset of the popover
613
+ * @param top Top offset of the popover
614
+ * @param isVertical if the popover is positioned vertically to the target element
615
+ * @returns {{x: number, y: number}} Arrow's coordinates
616
+ */
617
+ getArrowPosition(targetRect, popoverSize, left, top, isVertical) {
618
+ let arrowXCentered = this.horizontalAlign === PopoverHorizontalAlign.Center || this.horizontalAlign === PopoverHorizontalAlign.Stretch;
619
+
620
+ if (this.horizontalAlign === PopoverHorizontalAlign.Right && left <= targetRect.left) {
621
+ arrowXCentered = true;
622
+ }
623
+
624
+ if (this.horizontalAlign === PopoverHorizontalAlign.Left && left + popoverSize.width >= targetRect.left + targetRect.width) {
625
+ arrowXCentered = true;
626
+ }
627
+
628
+ let arrowTranslateX = 0;
629
+ if (isVertical && arrowXCentered) {
630
+ arrowTranslateX = targetRect.left + targetRect.width / 2 - left - popoverSize.width / 2;
631
+ }
632
+
633
+ let arrowTranslateY = 0;
634
+ if (!isVertical) {
635
+ arrowTranslateY = targetRect.top + targetRect.height / 2 - top - popoverSize.height / 2;
636
+ }
637
+
638
+ return {
639
+ x: Math.round(arrowTranslateX),
640
+ y: Math.round(arrowTranslateY),
641
+ };
642
+ }
643
+
644
+ /**
645
+ * Fallbacks to new placement, prioritizing <code>Left</code> and <code>Right</code> placements.
646
+ * @private
647
+ */
648
+ fallbackPlacement(clientWidth, clientHeight, targetRect, popoverSize) {
649
+ if (targetRect.left > popoverSize.width) {
650
+ return PopoverPlacementType.Left;
651
+ }
652
+
653
+ if (clientWidth - targetRect.right > targetRect.left) {
654
+ return PopoverPlacementType.Right;
655
+ }
656
+
657
+ if (clientHeight - targetRect.bottom > popoverSize.height) {
658
+ return PopoverPlacementType.Bottom;
659
+ }
660
+
661
+ if (clientHeight - targetRect.bottom < targetRect.top) {
662
+ return PopoverPlacementType.Top;
663
+ }
664
+ }
665
+
602
666
  getActualPlacementType(targetRect, popoverSize) {
603
667
  const placementType = this.placementType;
604
668
  let actualPlacementType = placementType;
@@ -620,15 +684,13 @@ class Popover extends UI5Element {
620
684
  }
621
685
  break;
622
686
  case PopoverPlacementType.Left:
623
- if (targetRect.left < popoverSize.width
624
- && targetRect.left < clientWidth - targetRect.right) {
625
- actualPlacementType = PopoverPlacementType.Right;
687
+ if (targetRect.left < popoverSize.width) {
688
+ actualPlacementType = this.fallbackPlacement(clientWidth, clientHeight, targetRect, popoverSize) || placementType;
626
689
  }
627
690
  break;
628
691
  case PopoverPlacementType.Right:
629
- if (clientWidth - targetRect.right < popoverSize.width
630
- && clientWidth - targetRect.right < targetRect.left) {
631
- actualPlacementType = PopoverPlacementType.Left;
692
+ if (clientWidth - targetRect.right < popoverSize.width) {
693
+ actualPlacementType = this.fallbackPlacement(clientWidth, clientHeight, targetRect, popoverSize) || placementType;
632
694
  }
633
695
  break;
634
696
  }
@@ -642,6 +704,7 @@ class Popover extends UI5Element {
642
704
  switch (this.horizontalAlign) {
643
705
  case PopoverHorizontalAlign.Center:
644
706
  case PopoverHorizontalAlign.Stretch:
707
+
645
708
  left = targetRect.left - (popoverSize.width - targetRect.width) / 2;
646
709
  break;
647
710
  case PopoverHorizontalAlign.Left:
@@ -674,15 +737,32 @@ class Popover extends UI5Element {
674
737
  return top;
675
738
  }
676
739
 
740
+ get isModal() { // Required by Popup.js
741
+ return this.modal;
742
+ }
743
+
744
+ get shouldHideBackdrop() { // Required by Popup.js
745
+ return this.hideBackdrop;
746
+ }
747
+
748
+ get _ariaLabelledBy() { // Required by Popup.js
749
+ return this.accessibleName ? undefined : "ui5-popup-header";
750
+ }
751
+
752
+ get _ariaModal() { // Required by Popup.js
753
+ return true;
754
+ }
755
+
677
756
  get styles() {
678
757
  return {
758
+ ...super.styles,
679
759
  content: {
680
760
  "max-height": `${this._maxContentHeight}px`,
761
+ "max-width": `${this._maxContentWidth}px`,
681
762
  },
682
763
  arrow: {
683
764
  transform: `translate(${this.arrowTranslateX}px, ${this.arrowTranslateY}px)`,
684
765
  },
685
- root: { },
686
766
  };
687
767
  }
688
768
 
@@ -690,7 +770,7 @@ class Popover extends UI5Element {
690
770
  * Hook for descendants to hide header.
691
771
  */
692
772
  get _displayHeader() {
693
- return true;
773
+ return this.header.length || this.headerText;
694
774
  }
695
775
 
696
776
  /**