@ui5/webcomponents 1.1.2 → 1.2.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 (440) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +1 -0
  3. package/dist/Avatar.js +1 -1
  4. package/dist/AvatarGroup.js +2 -2
  5. package/dist/Breadcrumbs.js +11 -4
  6. package/dist/BusyIndicator.js +1 -1
  7. package/dist/Button.js +42 -28
  8. package/dist/Calendar.js +1 -1
  9. package/dist/Card.js +2 -2
  10. package/dist/CheckBox.js +3 -3
  11. package/dist/ColorPalette.js +1 -1
  12. package/dist/ColorPaletteItem.js +2 -2
  13. package/dist/ColorPalettePopover.js +3 -3
  14. package/dist/ColorPicker.js +42 -4
  15. package/dist/ComboBox.js +10 -4
  16. package/dist/DatePicker.js +10 -8
  17. package/dist/DateRangePicker.js +7 -1
  18. package/dist/Dialog.js +35 -5
  19. package/dist/FileUploader.js +2 -1
  20. package/dist/Input.js +87 -19
  21. package/dist/Interfaces.js +1 -1
  22. package/dist/Label.js +7 -1
  23. package/dist/Link.js +16 -5
  24. package/dist/List.js +6 -16
  25. package/dist/ListItem.js +1 -1
  26. package/dist/MessageStrip.js +0 -8
  27. package/dist/MultiComboBox.js +166 -27
  28. package/dist/Panel.js +7 -8
  29. package/dist/Popover.js +39 -9
  30. package/dist/Popup.js +61 -26
  31. package/dist/ProgressIndicator.js +5 -0
  32. package/dist/RadioButton.js +1 -1
  33. package/dist/RangeSlider.js +6 -1
  34. package/dist/RatingIndicator.js +2 -2
  35. package/dist/ResponsivePopover.js +14 -10
  36. package/dist/SegmentedButton.js +2 -2
  37. package/dist/SegmentedButtonItem.js +7 -2
  38. package/dist/Select.js +9 -5
  39. package/dist/Slider.js +5 -0
  40. package/dist/SliderBase.js +4 -3
  41. package/dist/SplitButton.js +11 -5
  42. package/dist/StepInput.js +4 -4
  43. package/dist/Switch.js +13 -1
  44. package/dist/TabContainer.js +44 -3
  45. package/dist/Table.js +243 -4
  46. package/dist/TableColumn.js +0 -7
  47. package/dist/TableGroupRow.js +4 -0
  48. package/dist/TableRow.js +87 -8
  49. package/dist/TextArea.js +9 -4
  50. package/dist/Tokenizer.js +35 -6
  51. package/dist/Tree.js +5 -1
  52. package/dist/TreeItem.js +2 -2
  53. package/dist/TreeListItem.js +5 -2
  54. package/dist/api.json +129 -68
  55. package/dist/css/themes/Avatar.css +1 -1
  56. package/dist/css/themes/Button.css +1 -1
  57. package/dist/css/themes/Calendar.css +1 -1
  58. package/dist/css/themes/ColorPalettePopover.css +1 -1
  59. package/dist/css/themes/ComboBox.css +1 -1
  60. package/dist/css/themes/DatePickerPopover.css +1 -1
  61. package/dist/css/themes/Dialog.css +1 -1
  62. package/dist/css/themes/Input.css +1 -1
  63. package/dist/css/themes/ListItemBase.css +1 -1
  64. package/dist/css/themes/MultiComboBox.css +1 -1
  65. package/dist/css/themes/PopupGlobal.css +1 -1
  66. package/dist/css/themes/PopupsCommon.css +1 -1
  67. package/dist/css/themes/ResponsivePopover.css +1 -1
  68. package/dist/css/themes/SelectPopover.css +1 -1
  69. package/dist/css/themes/SplitButton.css +1 -1
  70. package/dist/css/themes/Suggestions.css +1 -1
  71. package/dist/css/themes/TabInOverflow.css +1 -1
  72. package/dist/css/themes/TableRow.css +1 -1
  73. package/dist/css/themes/TimePickerPopover.css +1 -1
  74. package/dist/css/themes/TokenizerPopover.css +1 -0
  75. package/dist/css/themes/ValueStateMessage.css +1 -1
  76. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  77. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  78. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  79. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  80. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  81. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  82. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  83. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  84. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  85. package/dist/features/InputSuggestions.js +4 -0
  86. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  131. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  132. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  133. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  134. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  140. package/dist/generated/i18n/i18n-defaults.js +2 -2
  141. package/dist/generated/templates/AvatarGroupTemplate.lit.js +1 -1
  142. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  143. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  144. package/dist/generated/templates/ButtonTemplate.lit.js +1 -1
  145. package/dist/generated/templates/CalendarTemplate.lit.js +1 -1
  146. package/dist/generated/templates/CarouselTemplate.lit.js +3 -3
  147. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
  148. package/dist/generated/templates/ColorPickerTemplate.lit.js +1 -1
  149. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +1 -1
  150. package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
  151. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  152. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  153. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +1 -1
  154. package/dist/generated/templates/DialogTemplate.lit.js +3 -3
  155. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +5 -4
  156. package/dist/generated/templates/InputPopoverTemplate.lit.js +2 -2
  157. package/dist/generated/templates/InputTemplate.lit.js +6 -5
  158. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  159. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  160. package/dist/generated/templates/MessageStripTemplate.lit.js +1 -1
  161. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +1 -1
  162. package/dist/generated/templates/MultiInputTemplate.lit.js +7 -6
  163. package/dist/generated/templates/PanelTemplate.lit.js +2 -2
  164. package/dist/generated/templates/PopoverTemplate.lit.js +3 -3
  165. package/dist/generated/templates/PopupTemplate.lit.js +1 -1
  166. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +1 -1
  167. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +5 -5
  168. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +1 -1
  169. package/dist/generated/templates/SelectPopoverTemplate.lit.js +1 -1
  170. package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
  171. package/dist/generated/templates/StepInputTemplate.lit.js +1 -1
  172. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
  173. package/dist/generated/templates/SwitchTemplate.lit.js +1 -1
  174. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +1 -1
  175. package/dist/generated/templates/TabContainerTemplate.lit.js +4 -4
  176. package/dist/generated/templates/TableGroupRowTemplate.lit.js +1 -1
  177. package/dist/generated/templates/TableRowTemplate.lit.js +2 -2
  178. package/dist/generated/templates/TableTemplate.lit.js +3 -3
  179. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
  180. package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
  181. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +1 -1
  182. package/dist/generated/templates/ToggleButtonTemplate.lit.js +1 -1
  183. package/dist/generated/templates/TokenizerTemplate.lit.js +1 -1
  184. package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
  185. package/dist/generated/themes/Avatar.css.js +1 -1
  186. package/dist/generated/themes/Button.css.js +1 -1
  187. package/dist/generated/themes/Calendar.css.js +1 -1
  188. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  189. package/dist/generated/themes/ComboBox.css.js +1 -1
  190. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  191. package/dist/generated/themes/Dialog.css.js +1 -1
  192. package/dist/generated/themes/Input.css.js +1 -1
  193. package/dist/generated/themes/ListItemBase.css.js +1 -1
  194. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  195. package/dist/generated/themes/PopupGlobal.css.js +1 -1
  196. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  197. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  198. package/dist/generated/themes/SelectPopover.css.js +1 -1
  199. package/dist/generated/themes/SplitButton.css.js +1 -1
  200. package/dist/generated/themes/Suggestions.css.js +1 -1
  201. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  202. package/dist/generated/themes/TableRow.css.js +1 -1
  203. package/dist/generated/themes/TimePickerPopover.css.js +1 -1
  204. package/dist/generated/themes/TokenizerPopover.css.js +8 -0
  205. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  206. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  207. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  208. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  209. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  210. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  211. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  212. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  213. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  214. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  215. package/dist/i18n/messagebundle.properties +3 -0
  216. package/dist/i18n/messagebundle_ar.properties +5 -0
  217. package/dist/i18n/messagebundle_bg.properties +5 -0
  218. package/dist/i18n/messagebundle_ca.properties +5 -0
  219. package/dist/i18n/messagebundle_cs.properties +5 -0
  220. package/dist/i18n/messagebundle_cy.properties +5 -0
  221. package/dist/i18n/messagebundle_da.properties +5 -0
  222. package/dist/i18n/messagebundle_de.properties +5 -0
  223. package/dist/i18n/messagebundle_el.properties +5 -0
  224. package/dist/i18n/messagebundle_en.properties +5 -0
  225. package/dist/i18n/messagebundle_en_GB.properties +5 -0
  226. package/dist/i18n/messagebundle_en_US_saprigi.properties +2 -0
  227. package/dist/i18n/messagebundle_es.properties +5 -0
  228. package/dist/i18n/messagebundle_es_MX.properties +5 -0
  229. package/dist/i18n/messagebundle_et.properties +5 -0
  230. package/dist/i18n/messagebundle_fi.properties +5 -0
  231. package/dist/i18n/messagebundle_fr.properties +5 -0
  232. package/dist/i18n/messagebundle_fr_CA.properties +5 -0
  233. package/dist/i18n/messagebundle_hi.properties +5 -0
  234. package/dist/i18n/messagebundle_hr.properties +5 -0
  235. package/dist/i18n/messagebundle_hu.properties +5 -0
  236. package/dist/i18n/messagebundle_id.properties +5 -0
  237. package/dist/i18n/messagebundle_it.properties +5 -0
  238. package/dist/i18n/messagebundle_iw.properties +5 -0
  239. package/dist/i18n/messagebundle_ja.properties +7 -2
  240. package/dist/i18n/messagebundle_kk.properties +5 -0
  241. package/dist/i18n/messagebundle_ko.properties +5 -0
  242. package/dist/i18n/messagebundle_lt.properties +5 -0
  243. package/dist/i18n/messagebundle_lv.properties +5 -0
  244. package/dist/i18n/messagebundle_ms.properties +5 -0
  245. package/dist/i18n/messagebundle_nl.properties +5 -0
  246. package/dist/i18n/messagebundle_no.properties +5 -0
  247. package/dist/i18n/messagebundle_pl.properties +5 -0
  248. package/dist/i18n/messagebundle_pt.properties +5 -0
  249. package/dist/i18n/messagebundle_pt_PT.properties +5 -0
  250. package/dist/i18n/messagebundle_ro.properties +5 -0
  251. package/dist/i18n/messagebundle_ru.properties +5 -0
  252. package/dist/i18n/messagebundle_sh.properties +5 -0
  253. package/dist/i18n/messagebundle_sk.properties +5 -0
  254. package/dist/i18n/messagebundle_sl.properties +5 -0
  255. package/dist/i18n/messagebundle_sv.properties +5 -0
  256. package/dist/i18n/messagebundle_th.properties +5 -0
  257. package/dist/i18n/messagebundle_tr.properties +5 -0
  258. package/dist/i18n/messagebundle_uk.properties +5 -0
  259. package/dist/i18n/messagebundle_vi.properties +5 -0
  260. package/dist/i18n/messagebundle_zh_CN.properties +5 -0
  261. package/dist/i18n/messagebundle_zh_TW.properties +5 -0
  262. package/package.json +11 -9
  263. package/src/Avatar.js +1 -1
  264. package/src/AvatarGroup.hbs +1 -1
  265. package/src/AvatarGroup.js +2 -2
  266. package/src/Breadcrumbs.hbs +2 -2
  267. package/src/Breadcrumbs.js +11 -4
  268. package/src/BreadcrumbsPopover.hbs +0 -1
  269. package/src/BusyIndicator.js +1 -1
  270. package/src/Button.hbs +4 -4
  271. package/src/Button.js +42 -28
  272. package/src/Calendar.hbs +1 -1
  273. package/src/Calendar.js +1 -1
  274. package/src/Card.js +2 -2
  275. package/src/Carousel.hbs +2 -2
  276. package/src/CheckBox.js +3 -3
  277. package/src/ColorPalette.js +1 -1
  278. package/src/ColorPaletteItem.js +2 -2
  279. package/src/ColorPalettePopover.hbs +1 -1
  280. package/src/ColorPalettePopover.js +3 -3
  281. package/src/ColorPicker.hbs +1 -0
  282. package/src/ColorPicker.js +42 -4
  283. package/src/ComboBox.js +10 -4
  284. package/src/ComboBoxPopover.hbs +0 -1
  285. package/src/DatePicker.hbs +1 -1
  286. package/src/DatePicker.js +10 -8
  287. package/src/DatePickerPopover.hbs +0 -2
  288. package/src/DateRangePicker.js +7 -1
  289. package/src/Dialog.hbs +3 -2
  290. package/src/Dialog.js +35 -5
  291. package/src/FileUploader.js +2 -1
  292. package/src/FileUploaderPopover.hbs +3 -2
  293. package/src/Input.hbs +5 -1
  294. package/src/Input.js +87 -19
  295. package/src/InputPopover.hbs +3 -4
  296. package/src/Interfaces.js +1 -1
  297. package/src/Label.js +7 -1
  298. package/src/Link.js +16 -5
  299. package/src/List.hbs +1 -1
  300. package/src/List.js +6 -16
  301. package/src/ListItem.hbs +1 -1
  302. package/src/ListItem.js +1 -1
  303. package/src/MessageStrip.hbs +1 -1
  304. package/src/MessageStrip.js +0 -8
  305. package/src/MultiComboBox.js +166 -27
  306. package/src/MultiComboBoxPopover.hbs +0 -1
  307. package/src/Panel.hbs +4 -3
  308. package/src/Panel.js +7 -8
  309. package/src/Popover.hbs +2 -2
  310. package/src/Popover.js +39 -9
  311. package/src/Popup.hbs +1 -1
  312. package/src/Popup.js +61 -26
  313. package/src/ProgressIndicator.js +5 -0
  314. package/src/RadioButton.js +1 -1
  315. package/src/RangeSlider.js +6 -1
  316. package/src/RatingIndicator.hbs +2 -0
  317. package/src/RatingIndicator.js +2 -2
  318. package/src/ResponsivePopover.hbs +3 -3
  319. package/src/ResponsivePopover.js +14 -10
  320. package/src/SegmentedButton.js +2 -2
  321. package/src/SegmentedButtonItem.hbs +1 -1
  322. package/src/SegmentedButtonItem.js +7 -2
  323. package/src/Select.js +9 -5
  324. package/src/SelectPopover.hbs +0 -1
  325. package/src/Slider.js +5 -0
  326. package/src/SliderBase.js +4 -3
  327. package/src/SplitButton.js +11 -5
  328. package/src/StepInput.hbs +4 -3
  329. package/src/StepInput.js +4 -4
  330. package/src/Switch.hbs +1 -1
  331. package/src/Switch.js +13 -1
  332. package/src/TabContainer.hbs +3 -3
  333. package/src/TabContainer.js +44 -3
  334. package/src/TabContainerPopover.hbs +1 -1
  335. package/src/Table.hbs +11 -1
  336. package/src/Table.js +243 -4
  337. package/src/TableColumn.js +0 -7
  338. package/src/TableGroupRow.hbs +1 -0
  339. package/src/TableGroupRow.js +4 -0
  340. package/src/TableRow.hbs +2 -0
  341. package/src/TableRow.js +87 -8
  342. package/src/TextArea.hbs +1 -1
  343. package/src/TextArea.js +9 -4
  344. package/src/TextAreaPopover.hbs +0 -1
  345. package/src/TimePickerPopover.hbs +0 -1
  346. package/src/Tokenizer.hbs +2 -1
  347. package/src/Tokenizer.js +35 -6
  348. package/src/Tree.js +5 -1
  349. package/src/TreeItem.js +2 -2
  350. package/src/TreeListItem.js +5 -2
  351. package/src/features/InputSuggestions.js +4 -0
  352. package/src/i18n/messagebundle.properties +3 -0
  353. package/src/i18n/messagebundle_ar.properties +5 -0
  354. package/src/i18n/messagebundle_bg.properties +5 -0
  355. package/src/i18n/messagebundle_ca.properties +5 -0
  356. package/src/i18n/messagebundle_cs.properties +5 -0
  357. package/src/i18n/messagebundle_cy.properties +5 -0
  358. package/src/i18n/messagebundle_da.properties +5 -0
  359. package/src/i18n/messagebundle_de.properties +5 -0
  360. package/src/i18n/messagebundle_el.properties +5 -0
  361. package/src/i18n/messagebundle_en.properties +5 -0
  362. package/src/i18n/messagebundle_en_GB.properties +5 -0
  363. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  364. package/src/i18n/messagebundle_es.properties +5 -0
  365. package/src/i18n/messagebundle_es_MX.properties +5 -0
  366. package/src/i18n/messagebundle_et.properties +5 -0
  367. package/src/i18n/messagebundle_fi.properties +5 -0
  368. package/src/i18n/messagebundle_fr.properties +5 -0
  369. package/src/i18n/messagebundle_fr_CA.properties +5 -0
  370. package/src/i18n/messagebundle_hi.properties +5 -0
  371. package/src/i18n/messagebundle_hr.properties +5 -0
  372. package/src/i18n/messagebundle_hu.properties +5 -0
  373. package/src/i18n/messagebundle_id.properties +5 -0
  374. package/src/i18n/messagebundle_it.properties +5 -0
  375. package/src/i18n/messagebundle_iw.properties +5 -0
  376. package/src/i18n/messagebundle_ja.properties +7 -2
  377. package/src/i18n/messagebundle_kk.properties +5 -0
  378. package/src/i18n/messagebundle_ko.properties +5 -0
  379. package/src/i18n/messagebundle_lt.properties +5 -0
  380. package/src/i18n/messagebundle_lv.properties +5 -0
  381. package/src/i18n/messagebundle_ms.properties +5 -0
  382. package/src/i18n/messagebundle_nl.properties +5 -0
  383. package/src/i18n/messagebundle_no.properties +5 -0
  384. package/src/i18n/messagebundle_pl.properties +5 -0
  385. package/src/i18n/messagebundle_pt.properties +5 -0
  386. package/src/i18n/messagebundle_pt_PT.properties +5 -0
  387. package/src/i18n/messagebundle_ro.properties +5 -0
  388. package/src/i18n/messagebundle_ru.properties +5 -0
  389. package/src/i18n/messagebundle_sh.properties +5 -0
  390. package/src/i18n/messagebundle_sk.properties +5 -0
  391. package/src/i18n/messagebundle_sl.properties +5 -0
  392. package/src/i18n/messagebundle_sv.properties +5 -0
  393. package/src/i18n/messagebundle_th.properties +5 -0
  394. package/src/i18n/messagebundle_tr.properties +5 -0
  395. package/src/i18n/messagebundle_uk.properties +5 -0
  396. package/src/i18n/messagebundle_vi.properties +5 -0
  397. package/src/i18n/messagebundle_zh_CN.properties +5 -0
  398. package/src/i18n/messagebundle_zh_TW.properties +5 -0
  399. package/src/themes/Avatar.css +1 -0
  400. package/src/themes/Button.css +1 -1
  401. package/src/themes/Calendar.css +6 -1
  402. package/src/themes/ColorPalettePopover.css +6 -5
  403. package/src/themes/DatePickerPopover.css +4 -0
  404. package/src/themes/Dialog.css +1 -5
  405. package/src/themes/Input.css +1 -0
  406. package/src/themes/ListItemBase.css +11 -5
  407. package/src/themes/MultiComboBox.css +0 -1
  408. package/src/themes/Popover.css +1 -1
  409. package/src/themes/PopupGlobal.css +1 -4
  410. package/src/themes/PopupsCommon.css +44 -4
  411. package/src/themes/ResponsivePopover.css +2 -7
  412. package/src/themes/ResponsivePopoverCommon.css +1 -0
  413. package/src/themes/SelectPopover.css +11 -2
  414. package/src/themes/SplitButton.css +1 -1
  415. package/src/themes/Suggestions.css +15 -1
  416. package/src/themes/TabInOverflow.css +5 -1
  417. package/src/themes/TableRow.css +1 -0
  418. package/src/themes/TimePickerPopover.css +4 -0
  419. package/src/themes/Tokenizer.css +1 -0
  420. package/src/themes/TokenizerPopover.css +4 -0
  421. package/src/themes/ValueStateMessage.css +10 -0
  422. package/src/themes/base/Badge-parameters.css +10 -10
  423. package/src/themes/base/DayPicker-parameters.css +2 -2
  424. package/src/themes/base/Dialog-parameters.css +1 -1
  425. package/src/themes/base/ListItemBase-parameters.css +1 -0
  426. package/src/themes/base/PopupsCommon-parameters.css +6 -1
  427. package/src/themes/base/SliderBase-parameters.css +7 -0
  428. package/src/themes/base/Switch-parameters.css +2 -13
  429. package/src/themes/base/sizes-parameters.css +7 -7
  430. package/src/themes/sap_belize_hcb/Switch-parameters.css +2 -4
  431. package/src/themes/sap_belize_hcw/Switch-parameters.css +2 -4
  432. package/src/themes/sap_fiori_3_hcb/DayPicker-parameters.css +0 -2
  433. package/src/themes/sap_fiori_3_hcb/Switch-parameters.css +2 -4
  434. package/src/themes/sap_fiori_3_hcw/DayPicker-parameters.css +0 -2
  435. package/src/themes/sap_fiori_3_hcw/Switch-parameters.css +2 -4
  436. package/src/themes/sap_horizon/Dialog-parameters.css +1 -1
  437. package/src/themes/sap_horizon/ListItemBase-parameters.css +1 -2
  438. package/src/themes/sap_horizon/PopupsCommon-parameters.css +0 -1
  439. package/src/themes/sap_horizon/Switch-parameters.css +7 -7
  440. package/src/themes/sap_horizon_exp/Switch-parameters.css +1 -1
@@ -6,12 +6,12 @@ import {
6
6
  isShow,
7
7
  isDown,
8
8
  isUp,
9
- isBackSpace,
10
9
  isSpace,
11
- isLeft,
12
10
  isRight,
13
- isEscape,
14
- isEnter,
11
+ isHome,
12
+ isTabNext,
13
+ isTabPrevious,
14
+ isCtrlA,
15
15
  } from "@ui5/webcomponents-base/dist/Keys.js";
16
16
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
17
17
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
@@ -20,6 +20,10 @@ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
20
20
  import "@ui5/webcomponents-icons/dist/decline.js";
21
21
  import "@ui5/webcomponents-icons/dist/multiselect-all.js";
22
22
  import "@ui5/webcomponents-icons/dist/not-editable.js";
23
+ import "@ui5/webcomponents-icons/dist/error.js";
24
+ import "@ui5/webcomponents-icons/dist/alert.js";
25
+ import "@ui5/webcomponents-icons/dist/sys-enter-2.js";
26
+ import "@ui5/webcomponents-icons/dist/information.js";
23
27
  import MultiComboBoxItem from "./MultiComboBoxItem.js";
24
28
  import Tokenizer from "./Tokenizer.js";
25
29
  import Token from "./Token.js";
@@ -413,6 +417,7 @@ class MultiComboBox extends UI5Element {
413
417
  this._deleting = false;
414
418
  this._validationTimeout = null;
415
419
  this._handleResizeBound = this._handleResize.bind(this);
420
+ this.currentItemIdx = -1;
416
421
  }
417
422
 
418
423
  onEnterDOM() {
@@ -524,7 +529,7 @@ class MultiComboBox extends UI5Element {
524
529
  return this.placeholder;
525
530
  }
526
531
 
527
- _handleLeft() {
532
+ _handleArrowLeft() {
528
533
  const cursorPosition = this.getDomRef().querySelector(`input`).selectionStart;
529
534
 
530
535
  if (cursorPosition === 0) {
@@ -535,14 +540,17 @@ class MultiComboBox extends UI5Element {
535
540
  _tokenizerFocusOut(event) {
536
541
  this._tokenizerFocused = false;
537
542
 
538
- const tokensCount = this._tokenizer.tokens.length - 1;
543
+ const tokensCount = this._tokenizer.tokens.length;
544
+ const selectedTokens = this._selectedTokensCount;
545
+ const lastTokenBeingDeleted = tokensCount - 1 === 0 && this._deleting;
546
+ const allTokensAreBeingDeleted = selectedTokens === tokensCount && this._deleting;
539
547
 
540
548
  if (!event.relatedTarget || !event.relatedTarget.hasAttribute("ui5-token")) {
541
549
  this._tokenizer.tokens.forEach(token => { token.selected = false; });
542
550
  this._tokenizer.scrollToStart();
543
551
  }
544
552
 
545
- if (tokensCount === 0 && this._deleting) {
553
+ if (allTokensAreBeingDeleted || lastTokenBeingDeleted) {
546
554
  setTimeout(() => {
547
555
  if (!isPhone()) {
548
556
  this.shadowRoot.querySelector("input").focus();
@@ -563,41 +571,77 @@ class MultiComboBox extends UI5Element {
563
571
  }
564
572
 
565
573
  async _onkeydown(event) {
566
- if (isLeft(event)) {
567
- this._handleLeft(event);
568
- }
569
-
570
574
  if (isShow(event) && !this.readonly && !this.disabled) {
571
575
  event.preventDefault();
572
576
  this.togglePopover();
573
577
  }
574
578
 
575
- if (this.open && (isUp(event) || isDown(event))) {
579
+ if (isUp(event) || isDown(event)) {
576
580
  this._handleArrowNavigation(event);
581
+ return;
577
582
  }
578
583
 
579
- if (isBackSpace(event) && event.target.value === "") {
580
- event.preventDefault();
584
+ this._keyDown = true;
585
+ this[`_handle${event.key}`] && this[`_handle${event.key}`](event);
586
+ }
581
587
 
588
+ _handleBackspace(event) {
589
+ if (event.target.value === "") {
590
+ event.preventDefault();
582
591
  this._tokenizer._focusLastToken();
583
592
  }
593
+ }
584
594
 
585
- // Reset value on ESC
586
- if (isEscape(event) && (!this.allowCustomValues || (!this.open && this.allowCustomValues))) {
595
+ _handleEscape(event) {
596
+ if (!this.allowCustomValues || (!this.open && this.allowCustomValues)) {
587
597
  this.value = this._lastValue;
588
598
  }
599
+ }
600
+
601
+ _handleHome(event) {
602
+ const shouldFocusToken = this._isFocusInside && event.target.selectionStart === 0 && this._tokenizer.tokens.length > 0;
589
603
 
590
- if (isEnter(event)) {
591
- this.handleEnter();
604
+ if (shouldFocusToken) {
605
+ event.preventDefault();
606
+ this._tokenizer.tokens[0].focus();
592
607
  }
608
+ }
593
609
 
594
- this._keyDown = true;
610
+ _handleEnd(event) {
611
+ const tokens = this._tokenizer.tokens;
612
+ const lastTokenIdx = tokens.length - 1;
613
+ const shouldFocusInput = event.target === tokens[lastTokenIdx] && tokens[lastTokenIdx] === this.shadowRoot.activeElement;
614
+
615
+ if (shouldFocusInput) {
616
+ event.preventDefault();
617
+ this._inputDom.focus();
618
+ }
619
+ }
620
+
621
+ _handleTab(event) {
622
+ this.allItemsPopover.close();
623
+ }
624
+
625
+ _handleSelectAll(event) {
626
+ const filteredItems = this._filteredItems;
627
+ const allItemsSelected = filteredItems.every(item => item.selected);
628
+
629
+ filteredItems.forEach(item => {
630
+ item.selected = !allItemsSelected;
631
+ });
632
+
633
+ this.fireSelectionChange();
595
634
  }
596
635
 
597
636
  _onValueStateKeydown(event) {
598
637
  const isArrowDown = isDown(event);
599
638
  const isArrowUp = isUp(event);
600
639
 
640
+ if (isTabNext(event) || isTabPrevious(event)) {
641
+ this._onItemTab(event);
642
+ return;
643
+ }
644
+
601
645
  event.preventDefault();
602
646
 
603
647
  if (isArrowDown) {
@@ -612,23 +656,36 @@ class MultiComboBox extends UI5Element {
612
656
  _onItemKeydown(event) {
613
657
  const isFirstItem = this.list.items[0] === event.target;
614
658
 
659
+ if (isTabNext(event) || isTabPrevious(event)) {
660
+ this._onItemTab(event);
661
+ return;
662
+ }
663
+
615
664
  event.preventDefault();
616
665
 
617
- if (!isUp(event) || !isFirstItem) {
666
+ if (isCtrlA(event)) {
667
+ this._handleSelectAll(event);
618
668
  return;
619
669
  }
620
670
 
621
- if (this.valueStateHeader) {
671
+ if (((isUp(event) && isFirstItem) || isHome(event)) && this.valueStateHeader) {
622
672
  this.valueStateHeader.focus();
623
- return;
624
673
  }
625
674
 
675
+ if (!this.valueStateHeader && isUp(event) && isFirstItem) {
676
+ this._inputDom.focus();
677
+ }
678
+ }
679
+
680
+ _onItemTab(event) {
626
681
  this._inputDom.focus();
682
+ this.allItemsPopover.close();
627
683
  }
628
684
 
629
685
  async _handleArrowNavigation(event) {
630
686
  const isArrowDown = isDown(event);
631
- const hasSuggestions = this.allItemsPopover.opened && this.items.length;
687
+ const hasSuggestions = this.items.length;
688
+ const isOpen = this.allItemsPopover.opened;
632
689
 
633
690
  event.preventDefault();
634
691
 
@@ -636,7 +693,7 @@ class MultiComboBox extends UI5Element {
636
693
  await this._setValueStateHeader();
637
694
  }
638
695
 
639
- if (isArrowDown && this.focused && this.valueStateHeader) {
696
+ if (isArrowDown && isOpen && this.focused && this.valueStateHeader) {
640
697
  this.valueStateHeader.focus();
641
698
  return;
642
699
  }
@@ -644,16 +701,91 @@ class MultiComboBox extends UI5Element {
644
701
  if (isArrowDown && this.focused && hasSuggestions) {
645
702
  this._handleArrowDown(event);
646
703
  }
704
+
705
+ if (!isArrowDown && !isOpen && !this.readonly) {
706
+ this._navigateToPrevItem();
707
+ }
647
708
  }
648
709
 
649
710
  _handleArrowDown(event) {
711
+ const isOpen = this.allItemsPopover.opened;
650
712
  const firstListItem = this.list.items[0];
651
713
 
652
- this.list._itemNavigation.setCurrentItem(firstListItem);
653
- firstListItem.focus();
714
+ if (isOpen) {
715
+ this.list._itemNavigation.setCurrentItem(firstListItem);
716
+ firstListItem.focus();
717
+ } else if (!this.readonly) {
718
+ this._navigateToNextItem();
719
+ }
654
720
  }
655
721
 
656
- handleEnter() {
722
+ _navigateToNextItem() {
723
+ const items = this.items;
724
+ const itemsCount = items.length;
725
+ const previousItemIdx = this.currentItemIdx;
726
+
727
+ if (previousItemIdx > -1 && items[previousItemIdx].text !== this.value) {
728
+ this.currentItemIdx = -1;
729
+ }
730
+
731
+ if (previousItemIdx >= itemsCount - 1) {
732
+ return;
733
+ }
734
+
735
+ let currentItem = this.items[++this.currentItemIdx];
736
+
737
+ while (this.currentItemIdx < itemsCount - 1 && currentItem.selected) {
738
+ currentItem = this.items[++this.currentItemIdx];
739
+ }
740
+
741
+ if (currentItem.selected === true) {
742
+ this.currentItemIdx = previousItemIdx;
743
+ return;
744
+ }
745
+
746
+ this.value = currentItem.text;
747
+ this._innerInput.value = currentItem.text;
748
+ this._innerInput.setSelectionRange(0, currentItem.text.length);
749
+ }
750
+
751
+ _navigateToPrevItem() {
752
+ const items = this.items;
753
+ let previousItemIdx = this.currentItemIdx;
754
+
755
+ if ((!this.value && previousItemIdx !== -1) || (previousItemIdx !== -1 && this.value && this.value !== items[previousItemIdx].text)) {
756
+ previousItemIdx = -1;
757
+ }
758
+
759
+ if (previousItemIdx === -1) {
760
+ this.currentItemIdx = items.length;
761
+ }
762
+
763
+ if (previousItemIdx === 0) {
764
+ this.currentItemIdx = 0;
765
+ return;
766
+ }
767
+
768
+ let currentItem = this.items[--this.currentItemIdx];
769
+
770
+ while (currentItem && currentItem.selected && this.currentItemIdx > 0) {
771
+ currentItem = this.items[--this.currentItemIdx];
772
+ }
773
+
774
+ if (!currentItem) {
775
+ return;
776
+ }
777
+
778
+ if (currentItem.selected) {
779
+ this.currentItemIdx = previousItemIdx;
780
+ return;
781
+ }
782
+
783
+ this.value = currentItem.text;
784
+ this._innerInput.value = currentItem.text;
785
+ this._innerInput.setSelectionRange(0, currentItem.text.length);
786
+ }
787
+
788
+ _handleEnter() {
657
789
  const lowerCaseValue = this.value.toLowerCase();
658
790
  const matchingItem = this.items.find(item => item.text.toLowerCase() === lowerCaseValue);
659
791
  const oldValueState = this.valueState;
@@ -698,6 +830,8 @@ class MultiComboBox extends UI5Element {
698
830
  }, 0);
699
831
  }
700
832
  }
833
+
834
+ this[`_handle${event.key}`] && this[`_handle${event.key}`](event);
701
835
  }
702
836
 
703
837
  _filterItems(str) {
@@ -918,6 +1052,7 @@ class MultiComboBox extends UI5Element {
918
1052
  this._innerInput.blur();
919
1053
  }
920
1054
 
1055
+ !isPhone() && this._innerInput.setSelectionRange(0, this.value.length);
921
1056
  this._lastValue = this.value;
922
1057
  }
923
1058
 
@@ -1003,6 +1138,10 @@ class MultiComboBox extends UI5Element {
1003
1138
  return `${this._id}-hiddenText-nMore`;
1004
1139
  }
1005
1140
 
1141
+ get _selectedTokensCount() {
1142
+ return this._tokenizer.tokens.filter(token => token.selected).length;
1143
+ }
1144
+
1006
1145
  get ariaDescribedByText() {
1007
1146
  return this.valueStateTextId ? `${this._tokensCountTextId} ${this.valueStateTextId}` : `${this._tokensCountTextId}`;
1008
1147
  }
package/dist/Panel.js CHANGED
@@ -8,6 +8,7 @@ import { getAnimationMode } from "@ui5/webcomponents-base/dist/config/AnimationM
8
8
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
10
10
  import Button from "./Button.js";
11
+ import Icon from "./Icon.js";
11
12
  import TitleLevel from "./types/TitleLevel.js";
12
13
  import PanelAccessibleRole from "./types/PanelAccessibleRole.js";
13
14
  import PanelTemplate from "./generated/templates/PanelTemplate.lit.js";
@@ -132,7 +133,7 @@ const metadata = {
132
133
  },
133
134
 
134
135
  /**
135
- * Sets the accessible aria name of the component.
136
+ * Defines the accessible aria name of the component.
136
137
  *
137
138
  * @type {string}
138
139
  * @defaultvalue ""
@@ -175,10 +176,6 @@ const metadata = {
175
176
  type: Boolean,
176
177
  noAttribute: true,
177
178
  },
178
-
179
- _buttonAccInfo: {
180
- type: Object,
181
- },
182
179
  },
183
180
  events: /** @lends sap.ui.webcomponents.main.Panel.prototype */ {
184
181
 
@@ -409,8 +406,10 @@ class Panel extends UI5Element {
409
406
  get accInfo() {
410
407
  return {
411
408
  "button": {
412
- "ariaExpanded": this.expanded,
413
- "ariaControls": `${this._id}-content`,
409
+ "accessibilityAttributes": {
410
+ "expanded": this.expanded,
411
+ "controls": `${this._id}-content`,
412
+ },
414
413
  "title": this.toggleButtonTitle,
415
414
  "ariaLabelButton": !this.nonFocusableButton && this.useAccessibleNameForToggleButton ? this.effectiveAccessibleName : undefined,
416
415
  },
@@ -458,7 +457,7 @@ class Panel extends UI5Element {
458
457
  }
459
458
 
460
459
  static get dependencies() {
461
- return [Button];
460
+ return [Button, Icon];
462
461
  }
463
462
 
464
463
  static async onDefine() {
package/dist/Popover.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
2
2
  import { isIOS } from "@ui5/webcomponents-base/dist/Device.js";
3
- import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
3
  import { getClosedPopupParent } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
5
4
  import clamp from "@ui5/webcomponents-base/dist/util/clamp.js";
6
5
  import Popup from "./Popup.js";
@@ -145,6 +144,17 @@ const metadata = {
145
144
  type: Boolean,
146
145
  },
147
146
 
147
+ /**
148
+ * Defines the opener id of the element that the popover is shown at
149
+ * @public
150
+ * @type {String}
151
+ * @defaultvalue ""
152
+ * @since 1.2.0
153
+ */
154
+ opener: {
155
+ type: String,
156
+ },
157
+
148
158
  /**
149
159
  * Defines whether the content is scrollable.
150
160
  *
@@ -249,6 +259,17 @@ const metadata = {
249
259
  * or selects an action within the popover. You can prevent this with the
250
260
  * <code>modal</code> property.
251
261
  *
262
+ * <h3>CSS Shadow Parts</h3>
263
+ *
264
+ * <ui5-link target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/::part">CSS Shadow Parts</ui5-link> allow developers to style elements inside the Shadow DOM.
265
+ * <br>
266
+ * The <code>ui5-popover</code> exposes the following CSS Shadow Parts:
267
+ * <ul>
268
+ * <li>header - Used to style the header of the component</li>
269
+ * <li>content - Used to style the content of the component</li>
270
+ * <li>footer - Used to style the footer of the component</li>
271
+ * </ul>
272
+ *
252
273
  * <h3>ES6 Module Import</h3>
253
274
  *
254
275
  * <code>import "@ui5/webcomponents/dist/Popover.js";</code>
@@ -264,8 +285,6 @@ const metadata = {
264
285
  class Popover extends Popup {
265
286
  constructor() {
266
287
  super();
267
-
268
- this._handleResize = this.handleResize.bind(this);
269
288
  }
270
289
 
271
290
  static get metadata() {
@@ -288,12 +307,18 @@ class Popover extends Popup {
288
307
  return 6; // px
289
308
  }
290
309
 
291
- onEnterDOM() {
292
- ResizeHandler.register(this, this._handleResize);
293
- }
310
+ onAfterRendering() {
311
+ if (!this.isOpen() && this.open) {
312
+ const opener = document.getElementById(this.opener);
313
+ if (!opener) {
314
+ console.warn("Valid opener id is required."); // eslint-disable-line
315
+ return;
316
+ }
294
317
 
295
- onExitDOM() {
296
- ResizeHandler.deregister(this, this._handleResize);
318
+ this.showAt(opener);
319
+ } else if (this.isOpen() && !this.open) {
320
+ this.close();
321
+ }
297
322
  }
298
323
 
299
324
  isOpenerClicked(event) {
@@ -365,7 +390,12 @@ class Popover extends Popup {
365
390
  && openerRect.right === 0;
366
391
  }
367
392
 
368
- handleResize() {
393
+ /**
394
+ * @override
395
+ */
396
+ _resize() {
397
+ super._resize();
398
+
369
399
  if (this.opened) {
370
400
  this.reposition();
371
401
  }
package/dist/Popup.js CHANGED
@@ -7,6 +7,8 @@ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/Ari
7
7
  import { hasStyle, createStyle } from "@ui5/webcomponents-base/dist/ManagedStyles.js";
8
8
  import { isTabPrevious } from "@ui5/webcomponents-base/dist/Keys.js";
9
9
  import { getNextZIndex, getFocusedElement, isFocusedElementWithinNode } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
10
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
11
+ import MediaRange from "@ui5/webcomponents-base/dist/MediaRange.js";
10
12
  import PopupTemplate from "./generated/templates/PopupTemplate.lit.js";
11
13
  import PopupBlockLayer from "./generated/templates/PopupBlockLayerTemplate.lit.js";
12
14
  import { addOpenedPopup, removeOpenedPopup } from "./popup-utils/OpenedPopupsRegistry.js";
@@ -26,7 +28,7 @@ const metadata = {
26
28
  /**
27
29
  * Defines the content of the Popup.
28
30
  * @type {HTMLElement[]}
29
- * @slot
31
+ * @slot content
30
32
  * @public
31
33
  */
32
34
  "default": {
@@ -60,18 +62,30 @@ const metadata = {
60
62
 
61
63
  /**
62
64
  * Indicates if the element is open
65
+ * @public
66
+ * @type {boolean}
67
+ * @defaultvalue false
68
+ * @since 1.2.0
69
+ */
70
+ open: {
71
+ type: Boolean,
72
+ },
73
+
74
+ /**
75
+ * Indicates if the element is already open
63
76
  * @private
64
77
  * @type {boolean}
65
78
  * @defaultvalue false
66
79
  */
67
80
  opened: {
68
81
  type: Boolean,
82
+ noAttribute: true,
69
83
  },
70
84
 
71
85
  /**
72
86
  * Defines the accessible name of the component.
73
87
  *
74
- * @type {String}
88
+ * @type {string}
75
89
  * @defaultvalue ""
76
90
  * @public
77
91
  * @since 1.0.0-rc.15
@@ -84,7 +98,7 @@ const metadata = {
84
98
  /**
85
99
  * Defines the IDs of the elements that label the component.
86
100
  *
87
- * @type {String}
101
+ * @type {string}
88
102
  * @defaultvalue ""
89
103
  * @public
90
104
  * @since 1.1.0
@@ -94,6 +108,16 @@ const metadata = {
94
108
  defaultValue: "",
95
109
  },
96
110
 
111
+ /**
112
+ * Defines the current media query size.
113
+ *
114
+ * @type {string}
115
+ * @private
116
+ */
117
+ mediaRange: {
118
+ type: String,
119
+ },
120
+
97
121
  /**
98
122
  * @private
99
123
  */
@@ -164,7 +188,7 @@ const createBlockingStyle = () => {
164
188
 
165
189
  createBlockingStyle();
166
190
 
167
- const bodyScrollingBlockers = new Set();
191
+ const pageScrollingBlockers = new Set();
168
192
 
169
193
  /**
170
194
  * @class
@@ -176,7 +200,7 @@ const bodyScrollingBlockers = new Set();
176
200
  *
177
201
  * 1. The Popup class handles modality:
178
202
  * - The "isModal" getter can be overridden by derivatives to provide their own conditions when they are modal or not
179
- * - Derivatives may call the "blockBodyScrolling" and "unblockBodyScrolling" static methods to temporarily remove scrollbars on the body
203
+ * - Derivatives may call the "blockPageScrolling" and "unblockPageScrolling" static methods to temporarily remove scrollbars on the html element
180
204
  * - Derivatives may call the "open" and "close" methods which handle focus, manage the popup registry and for modal popups, manage the blocking layer
181
205
  *
182
206
  * 2. Provides blocking layer (relevant for modal popups only):
@@ -200,6 +224,12 @@ const bodyScrollingBlockers = new Set();
200
224
  * @public
201
225
  */
202
226
  class Popup extends UI5Element {
227
+ constructor() {
228
+ super();
229
+
230
+ this._resizeHandler = this._resize.bind(this);
231
+ }
232
+
203
233
  static get metadata() {
204
234
  return metadata;
205
235
  }
@@ -228,19 +258,27 @@ class Popup extends UI5Element {
228
258
  if (!this.isOpen()) {
229
259
  this._blockLayerHidden = true;
230
260
  }
261
+
262
+ ResizeHandler.register(this, this._resizeHandler);
231
263
  }
232
264
 
233
265
  onExitDOM() {
234
266
  if (this.isOpen()) {
235
- Popup.unblockBodyScrolling(this);
267
+ Popup.unblockPageScrolling(this);
236
268
  this._removeOpenedPopup();
237
269
  }
270
+
271
+ ResizeHandler.deregister(this, this._resizeHandler);
238
272
  }
239
273
 
240
274
  get _displayProp() {
241
275
  return "block";
242
276
  }
243
277
 
278
+ _resize() {
279
+ this.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef().offsetWidth);
280
+ }
281
+
244
282
  /**
245
283
  * Prevents the user from interacting with the content under the block layer
246
284
  */
@@ -249,36 +287,31 @@ class Popup extends UI5Element {
249
287
  }
250
288
 
251
289
  /**
252
- * Temporarily removes scrollbars from the body
290
+ * Temporarily removes scrollbars from the html element
253
291
  * @protected
254
292
  */
255
- static blockBodyScrolling(popup) {
256
- bodyScrollingBlockers.add(popup);
293
+ static blockPageScrolling(popup) {
294
+ pageScrollingBlockers.add(popup);
257
295
 
258
- if (bodyScrollingBlockers.size !== 1) {
296
+ if (pageScrollingBlockers.size !== 1) {
259
297
  return;
260
298
  }
261
299
 
262
- if (window.pageYOffset > 0) {
263
- document.body.style.top = `-${window.pageYOffset}px`;
264
- }
265
- document.body.classList.add("ui5-popup-scroll-blocker");
300
+ document.documentElement.classList.add("ui5-popup-scroll-blocker");
266
301
  }
267
302
 
268
303
  /**
269
- * Restores scrollbars on the body, if needed
304
+ * Restores scrollbars on the html element, if needed
270
305
  * @protected
271
306
  */
272
- static unblockBodyScrolling(popup) {
273
- bodyScrollingBlockers.delete(popup);
307
+ static unblockPageScrolling(popup) {
308
+ pageScrollingBlockers.delete(popup);
274
309
 
275
- if (bodyScrollingBlockers.size !== 0) {
310
+ if (pageScrollingBlockers.size !== 0) {
276
311
  return;
277
312
  }
278
313
 
279
- document.body.classList.remove("ui5-popup-scroll-blocker");
280
- window.scrollTo(0, -parseFloat(document.body.style.top));
281
- document.body.style.top = "";
314
+ document.documentElement.classList.remove("ui5-popup-scroll-blocker");
282
315
  }
283
316
 
284
317
  _scroll(e) {
@@ -408,7 +441,7 @@ class Popup extends UI5Element {
408
441
  // create static area item ref for block layer
409
442
  this.getStaticAreaItemDomRef();
410
443
  this._blockLayerHidden = false;
411
- Popup.blockBodyScrolling(this);
444
+ Popup.blockPageScrolling(this);
412
445
  }
413
446
 
414
447
  this._zIndex = getNextZIndex();
@@ -424,6 +457,7 @@ class Popup extends UI5Element {
424
457
  this._addOpenedPopup();
425
458
 
426
459
  this.opened = true;
460
+ this.open = true;
427
461
 
428
462
  await renderFinished();
429
463
  this.fireEvent("after-open", {}, false, false);
@@ -453,11 +487,12 @@ class Popup extends UI5Element {
453
487
 
454
488
  if (this.isModal) {
455
489
  this._blockLayerHidden = true;
456
- Popup.unblockBodyScrolling(this);
490
+ Popup.unblockPageScrolling(this);
457
491
  }
458
492
 
459
493
  this.hide();
460
494
  this.opened = false;
495
+ this.open = false;
461
496
 
462
497
  if (!preventRegistryUpdate) {
463
498
  this._removeOpenedPopup();
@@ -530,7 +565,7 @@ class Popup extends UI5Element {
530
565
  *
531
566
  * @protected
532
567
  * @abstract
533
- * @returns {String}
568
+ * @returns {string}
534
569
  */
535
570
  get _ariaLabelledBy() {} // eslint-disable-line
536
571
 
@@ -539,13 +574,13 @@ class Popup extends UI5Element {
539
574
  *
540
575
  * @protected
541
576
  * @abstract
542
- * @returns {String}
577
+ * @returns {string}
543
578
  */
544
579
  get _ariaModal() {} // eslint-disable-line
545
580
 
546
581
  /**
547
582
  * Ensures ariaLabel is never null or empty string
548
- * @returns {String|undefined}
583
+ * @returns {string|undefined}
549
584
  * @protected
550
585
  */
551
586
  get _ariaLabel() {