@ui5/webcomponents 2.11.0 → 2.12.0-rc.1

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 (560) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Avatar.d.ts +12 -0
  4. package/dist/Avatar.js +68 -1
  5. package/dist/Avatar.js.map +1 -1
  6. package/dist/AvatarGroup.d.ts +17 -1
  7. package/dist/AvatarGroup.js +11 -0
  8. package/dist/AvatarGroup.js.map +1 -1
  9. package/dist/AvatarTemplate.js +4 -4
  10. package/dist/AvatarTemplate.js.map +1 -1
  11. package/dist/BusyIndicator.d.ts +1 -0
  12. package/dist/BusyIndicator.js +4 -0
  13. package/dist/BusyIndicator.js.map +1 -1
  14. package/dist/BusyIndicatorTemplate.js +4 -1
  15. package/dist/BusyIndicatorTemplate.js.map +1 -1
  16. package/dist/Button.d.ts +3 -0
  17. package/dist/Button.js +22 -0
  18. package/dist/Button.js.map +1 -1
  19. package/dist/Calendar.d.ts +3 -0
  20. package/dist/Calendar.js +3 -0
  21. package/dist/Calendar.js.map +1 -1
  22. package/dist/CalendarHeaderTemplate.js +3 -3
  23. package/dist/CalendarHeaderTemplate.js.map +1 -1
  24. package/dist/CalendarTemplate.js +1 -1
  25. package/dist/CalendarTemplate.js.map +1 -1
  26. package/dist/DynamicDateRange.d.ts +36 -7
  27. package/dist/DynamicDateRange.js +45 -42
  28. package/dist/DynamicDateRange.js.map +1 -1
  29. package/dist/InputTemplate.js +1 -1
  30. package/dist/InputTemplate.js.map +1 -1
  31. package/dist/MonthPickerTemplate.js +1 -1
  32. package/dist/MonthPickerTemplate.js.map +1 -1
  33. package/dist/Popover.d.ts +2 -2
  34. package/dist/Popover.js +29 -7
  35. package/dist/Popover.js.map +1 -1
  36. package/dist/Popup.d.ts +24 -0
  37. package/dist/Popup.js +29 -1
  38. package/dist/Popup.js.map +1 -1
  39. package/dist/PopupTemplate.js +2 -1
  40. package/dist/PopupTemplate.js.map +1 -1
  41. package/dist/RangeSlider.d.ts +4 -9
  42. package/dist/RangeSlider.js +50 -133
  43. package/dist/RangeSlider.js.map +1 -1
  44. package/dist/RangeSliderTemplate.js +2 -10
  45. package/dist/RangeSliderTemplate.js.map +1 -1
  46. package/dist/ResponsivePopoverTemplate.js +1 -1
  47. package/dist/ResponsivePopoverTemplate.js.map +1 -1
  48. package/dist/SelectTemplate.js +10 -4
  49. package/dist/SelectTemplate.js.map +1 -1
  50. package/dist/Slider.d.ts +2 -6
  51. package/dist/Slider.js +9 -43
  52. package/dist/Slider.js.map +1 -1
  53. package/dist/SliderBase.d.ts +4 -6
  54. package/dist/SliderBase.js +14 -31
  55. package/dist/SliderBase.js.map +1 -1
  56. package/dist/SliderBaseTemplate.js +1 -1
  57. package/dist/SliderBaseTemplate.js.map +1 -1
  58. package/dist/SliderTemplate.js +2 -6
  59. package/dist/SliderTemplate.js.map +1 -1
  60. package/dist/SliderTooltip.d.ts +47 -0
  61. package/dist/SliderTooltip.js +158 -0
  62. package/dist/SliderTooltip.js.map +1 -0
  63. package/dist/SliderTooltipTemplate.d.ts +2 -0
  64. package/dist/SliderTooltipTemplate.js +8 -0
  65. package/dist/SliderTooltipTemplate.js.map +1 -0
  66. package/dist/StepInput.d.ts +1 -1
  67. package/dist/StepInput.js +5 -7
  68. package/dist/StepInput.js.map +1 -1
  69. package/dist/Toast.js +1 -3
  70. package/dist/Toast.js.map +1 -1
  71. package/dist/ToggleButton.d.ts +1 -1
  72. package/dist/ToggleButton.js +21 -2
  73. package/dist/ToggleButton.js.map +1 -1
  74. package/dist/Tokenizer.js +0 -6
  75. package/dist/Tokenizer.js.map +1 -1
  76. package/dist/YearPickerTemplate.js +1 -1
  77. package/dist/YearPickerTemplate.js.map +1 -1
  78. package/dist/css/themes/Avatar.css +1 -1
  79. package/dist/css/themes/AvatarGroup.css +1 -1
  80. package/dist/css/themes/Bar.css +1 -1
  81. package/dist/css/themes/Breadcrumbs.css +1 -1
  82. package/dist/css/themes/BusyIndicator.css +1 -1
  83. package/dist/css/themes/Button.css +1 -1
  84. package/dist/css/themes/ButtonBadge.css +1 -1
  85. package/dist/css/themes/Calendar.css +1 -1
  86. package/dist/css/themes/CalendarHeader.css +1 -1
  87. package/dist/css/themes/CalendarLegend.css +1 -1
  88. package/dist/css/themes/CalendarLegendItem.css +1 -1
  89. package/dist/css/themes/Card.css +1 -1
  90. package/dist/css/themes/CardHeader.css +1 -1
  91. package/dist/css/themes/Carousel.css +1 -1
  92. package/dist/css/themes/CheckBox.css +1 -1
  93. package/dist/css/themes/ColorPalette.css +1 -1
  94. package/dist/css/themes/ColorPaletteItem.css +1 -1
  95. package/dist/css/themes/ColorPalettePopover.css +1 -1
  96. package/dist/css/themes/ColorPicker.css +1 -1
  97. package/dist/css/themes/ComboBox.css +1 -1
  98. package/dist/css/themes/ComboBoxItem.css +1 -1
  99. package/dist/css/themes/DatePicker.css +1 -1
  100. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  101. package/dist/css/themes/DayPicker.css +1 -1
  102. package/dist/css/themes/Dialog.css +1 -1
  103. package/dist/css/themes/DynamicDateRange.css +1 -1
  104. package/dist/css/themes/DynamicDateRangePopover.css +1 -1
  105. package/dist/css/themes/FileUploader.css +1 -1
  106. package/dist/css/themes/Form.css +1 -1
  107. package/dist/css/themes/FormItem.css +1 -1
  108. package/dist/css/themes/FormItemSpan.css +1 -1
  109. package/dist/css/themes/GrowingButton.css +1 -1
  110. package/dist/css/themes/Icon.css +1 -1
  111. package/dist/css/themes/Input.css +1 -1
  112. package/dist/css/themes/InputIcon.css +1 -1
  113. package/dist/css/themes/InputSharedStyles.css +1 -1
  114. package/dist/css/themes/Link.css +1 -1
  115. package/dist/css/themes/List.css +1 -1
  116. package/dist/css/themes/ListItem.css +1 -1
  117. package/dist/css/themes/ListItemBase.css +1 -1
  118. package/dist/css/themes/ListItemCustom.css +1 -1
  119. package/dist/css/themes/ListItemGroup.css +1 -1
  120. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  121. package/dist/css/themes/ListItemIcon.css +1 -1
  122. package/dist/css/themes/Menu.css +1 -1
  123. package/dist/css/themes/MenuItem.css +1 -1
  124. package/dist/css/themes/MessageStrip.css +1 -1
  125. package/dist/css/themes/MonthPicker.css +1 -1
  126. package/dist/css/themes/MultiComboBox.css +1 -1
  127. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  128. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  129. package/dist/css/themes/MultiInput.css +1 -1
  130. package/dist/css/themes/OptionBase.css +1 -1
  131. package/dist/css/themes/Panel.css +1 -1
  132. package/dist/css/themes/Popover.css +1 -1
  133. package/dist/css/themes/PopupsCommon.css +1 -1
  134. package/dist/css/themes/ProgressIndicator.css +1 -1
  135. package/dist/css/themes/RadioButton.css +1 -1
  136. package/dist/css/themes/RangeSlider.css +1 -1
  137. package/dist/css/themes/RatingIndicator.css +1 -1
  138. package/dist/css/themes/ResponsivePopover.css +1 -1
  139. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  140. package/dist/css/themes/SegmentedButton.css +1 -1
  141. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  142. package/dist/css/themes/Select.css +1 -1
  143. package/dist/css/themes/SliderBase.css +1 -1
  144. package/dist/css/themes/SliderTooltip.css +1 -0
  145. package/dist/css/themes/SplitButton.css +1 -1
  146. package/dist/css/themes/StepInput.css +1 -1
  147. package/dist/css/themes/SuggestionItem.css +1 -1
  148. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  149. package/dist/css/themes/Switch.css +1 -1
  150. package/dist/css/themes/TabContainer.css +1 -1
  151. package/dist/css/themes/TabInOverflow.css +1 -1
  152. package/dist/css/themes/TabInStrip.css +1 -1
  153. package/dist/css/themes/TabSemanticIcon.css +1 -1
  154. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  155. package/dist/css/themes/TableCellBase.css +1 -1
  156. package/dist/css/themes/TableHeaderRow.css +1 -1
  157. package/dist/css/themes/TableRow.css +1 -1
  158. package/dist/css/themes/TableRowActionBase.css +1 -1
  159. package/dist/css/themes/TableRowBase.css +1 -1
  160. package/dist/css/themes/Tag.css +1 -1
  161. package/dist/css/themes/Text.css +1 -1
  162. package/dist/css/themes/TextArea.css +1 -1
  163. package/dist/css/themes/TimePicker.css +1 -1
  164. package/dist/css/themes/Toast.css +1 -1
  165. package/dist/css/themes/ToggleButton.css +1 -1
  166. package/dist/css/themes/Token.css +1 -1
  167. package/dist/css/themes/Tokenizer.css +1 -1
  168. package/dist/css/themes/TokenizerPopover.css +1 -1
  169. package/dist/css/themes/Toolbar.css +1 -1
  170. package/dist/css/themes/ToolbarPopover.css +1 -1
  171. package/dist/css/themes/ToolbarSeparator.css +1 -1
  172. package/dist/css/themes/TreeItem.css +1 -1
  173. package/dist/css/themes/ValueStateMessage.css +1 -1
  174. package/dist/css/themes/YearPicker.css +1 -1
  175. package/dist/css/themes/YearRangePicker.css +1 -1
  176. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  177. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  178. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  179. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  180. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  181. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  182. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  183. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  184. package/dist/custom-elements-internal.json +312 -7
  185. package/dist/custom-elements.json +293 -0
  186. package/dist/dynamic-date-range-options/DateRange.d.ts +1 -1
  187. package/dist/dynamic-date-range-options/DateRange.js +1 -1
  188. package/dist/dynamic-date-range-options/DateRange.js.map +1 -1
  189. package/dist/dynamic-date-range-options/SingleDate.d.ts +1 -1
  190. package/dist/dynamic-date-range-options/SingleDate.js +1 -1
  191. package/dist/dynamic-date-range-options/SingleDate.js.map +1 -1
  192. package/dist/dynamic-date-range-options/Today.d.ts +1 -1
  193. package/dist/dynamic-date-range-options/Today.js +1 -1
  194. package/dist/dynamic-date-range-options/Today.js.map +1 -1
  195. package/dist/dynamic-date-range-options/Tomorrow.d.ts +1 -1
  196. package/dist/dynamic-date-range-options/Tomorrow.js +1 -1
  197. package/dist/dynamic-date-range-options/Tomorrow.js.map +1 -1
  198. package/dist/dynamic-date-range-options/Yesterday.d.ts +1 -1
  199. package/dist/dynamic-date-range-options/Yesterday.js +1 -1
  200. package/dist/dynamic-date-range-options/Yesterday.js.map +1 -1
  201. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  202. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  203. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  204. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  205. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  206. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  207. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  208. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  209. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  210. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  211. package/dist/generated/i18n/i18n-defaults.js +1 -1
  212. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  213. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  214. package/dist/generated/themes/Avatar.css.js +1 -1
  215. package/dist/generated/themes/Avatar.css.js.map +1 -1
  216. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  217. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  218. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  219. package/dist/generated/themes/Bar.css.d.ts +1 -1
  220. package/dist/generated/themes/Bar.css.js +1 -1
  221. package/dist/generated/themes/Bar.css.js.map +1 -1
  222. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  223. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  224. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  225. package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
  226. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  227. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  228. package/dist/generated/themes/Button.css.d.ts +1 -1
  229. package/dist/generated/themes/Button.css.js +1 -1
  230. package/dist/generated/themes/Button.css.js.map +1 -1
  231. package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
  232. package/dist/generated/themes/ButtonBadge.css.js +1 -1
  233. package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
  234. package/dist/generated/themes/Calendar.css.d.ts +1 -1
  235. package/dist/generated/themes/Calendar.css.js +1 -1
  236. package/dist/generated/themes/Calendar.css.js.map +1 -1
  237. package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
  238. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  239. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  240. package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
  241. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  242. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  243. package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
  244. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  245. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  246. package/dist/generated/themes/Card.css.d.ts +1 -1
  247. package/dist/generated/themes/Card.css.js +1 -1
  248. package/dist/generated/themes/Card.css.js.map +1 -1
  249. package/dist/generated/themes/CardHeader.css.d.ts +1 -1
  250. package/dist/generated/themes/CardHeader.css.js +1 -1
  251. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  252. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  253. package/dist/generated/themes/Carousel.css.js +1 -1
  254. package/dist/generated/themes/Carousel.css.js.map +1 -1
  255. package/dist/generated/themes/CheckBox.css.d.ts +1 -1
  256. package/dist/generated/themes/CheckBox.css.js +1 -1
  257. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  258. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  259. package/dist/generated/themes/ColorPalette.css.js +1 -1
  260. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  261. package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
  262. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  263. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  264. package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
  265. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  266. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  267. package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
  268. package/dist/generated/themes/ColorPicker.css.js +1 -1
  269. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  270. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  271. package/dist/generated/themes/ComboBox.css.js +1 -1
  272. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  273. package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
  274. package/dist/generated/themes/ComboBoxItem.css.js +1 -1
  275. package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
  276. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  277. package/dist/generated/themes/DatePicker.css.js +1 -1
  278. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  279. package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
  280. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  281. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  282. package/dist/generated/themes/DayPicker.css.d.ts +1 -1
  283. package/dist/generated/themes/DayPicker.css.js +1 -1
  284. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  285. package/dist/generated/themes/Dialog.css.d.ts +1 -1
  286. package/dist/generated/themes/Dialog.css.js +1 -1
  287. package/dist/generated/themes/Dialog.css.js.map +1 -1
  288. package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
  289. package/dist/generated/themes/DynamicDateRange.css.js +1 -1
  290. package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
  291. package/dist/generated/themes/DynamicDateRangePopover.css.d.ts +1 -1
  292. package/dist/generated/themes/DynamicDateRangePopover.css.js +1 -1
  293. package/dist/generated/themes/DynamicDateRangePopover.css.js.map +1 -1
  294. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  295. package/dist/generated/themes/FileUploader.css.js +1 -1
  296. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  297. package/dist/generated/themes/Form.css.d.ts +1 -1
  298. package/dist/generated/themes/Form.css.js +1 -1
  299. package/dist/generated/themes/Form.css.js.map +1 -1
  300. package/dist/generated/themes/FormItem.css.d.ts +1 -1
  301. package/dist/generated/themes/FormItem.css.js +1 -1
  302. package/dist/generated/themes/FormItem.css.js.map +1 -1
  303. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  304. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  305. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  306. package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
  307. package/dist/generated/themes/GrowingButton.css.js +1 -1
  308. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  309. package/dist/generated/themes/Icon.css.d.ts +1 -1
  310. package/dist/generated/themes/Icon.css.js +1 -1
  311. package/dist/generated/themes/Icon.css.js.map +1 -1
  312. package/dist/generated/themes/Input.css.d.ts +1 -1
  313. package/dist/generated/themes/Input.css.js +1 -1
  314. package/dist/generated/themes/Input.css.js.map +1 -1
  315. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  316. package/dist/generated/themes/InputIcon.css.js +1 -1
  317. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  318. package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
  319. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  320. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  321. package/dist/generated/themes/Link.css.d.ts +1 -1
  322. package/dist/generated/themes/Link.css.js +1 -1
  323. package/dist/generated/themes/Link.css.js.map +1 -1
  324. package/dist/generated/themes/List.css.d.ts +1 -1
  325. package/dist/generated/themes/List.css.js +1 -1
  326. package/dist/generated/themes/List.css.js.map +1 -1
  327. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  328. package/dist/generated/themes/ListItem.css.js +1 -1
  329. package/dist/generated/themes/ListItem.css.js.map +1 -1
  330. package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
  331. package/dist/generated/themes/ListItemBase.css.js +1 -1
  332. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  333. package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
  334. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  335. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  336. package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
  337. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  338. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  339. package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
  340. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  341. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  342. package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
  343. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  344. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  345. package/dist/generated/themes/Menu.css.d.ts +1 -1
  346. package/dist/generated/themes/Menu.css.js +1 -1
  347. package/dist/generated/themes/Menu.css.js.map +1 -1
  348. package/dist/generated/themes/MenuItem.css.d.ts +1 -1
  349. package/dist/generated/themes/MenuItem.css.js +1 -1
  350. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  351. package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
  352. package/dist/generated/themes/MessageStrip.css.js +1 -1
  353. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  354. package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
  355. package/dist/generated/themes/MonthPicker.css.js +1 -1
  356. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  357. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  358. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  359. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  360. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  361. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  362. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  363. package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
  364. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  365. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  366. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  367. package/dist/generated/themes/MultiInput.css.js +1 -1
  368. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  369. package/dist/generated/themes/OptionBase.css.d.ts +1 -1
  370. package/dist/generated/themes/OptionBase.css.js +1 -1
  371. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  372. package/dist/generated/themes/Panel.css.d.ts +1 -1
  373. package/dist/generated/themes/Panel.css.js +1 -1
  374. package/dist/generated/themes/Panel.css.js.map +1 -1
  375. package/dist/generated/themes/Popover.css.d.ts +1 -1
  376. package/dist/generated/themes/Popover.css.js +1 -1
  377. package/dist/generated/themes/Popover.css.js.map +1 -1
  378. package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
  379. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  380. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  381. package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
  382. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  383. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  384. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  385. package/dist/generated/themes/RadioButton.css.js +1 -1
  386. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  387. package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
  388. package/dist/generated/themes/RangeSlider.css.js +1 -1
  389. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  390. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  391. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  392. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  393. package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
  394. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  395. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  396. package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
  397. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  398. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  399. package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
  400. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  401. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  402. package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
  403. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  404. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  405. package/dist/generated/themes/Select.css.d.ts +1 -1
  406. package/dist/generated/themes/Select.css.js +1 -1
  407. package/dist/generated/themes/Select.css.js.map +1 -1
  408. package/dist/generated/themes/SliderBase.css.d.ts +1 -1
  409. package/dist/generated/themes/SliderBase.css.js +1 -1
  410. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  411. package/dist/generated/themes/SliderTooltip.css.d.ts +2 -0
  412. package/dist/generated/themes/SliderTooltip.css.js +8 -0
  413. package/dist/generated/themes/SliderTooltip.css.js.map +1 -0
  414. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  415. package/dist/generated/themes/SplitButton.css.js +1 -1
  416. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  417. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  418. package/dist/generated/themes/StepInput.css.js +1 -1
  419. package/dist/generated/themes/StepInput.css.js.map +1 -1
  420. package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
  421. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  422. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  423. package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
  424. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  425. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  426. package/dist/generated/themes/Switch.css.d.ts +1 -1
  427. package/dist/generated/themes/Switch.css.js +1 -1
  428. package/dist/generated/themes/Switch.css.js.map +1 -1
  429. package/dist/generated/themes/TabContainer.css.d.ts +1 -1
  430. package/dist/generated/themes/TabContainer.css.js +1 -1
  431. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  432. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  433. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  434. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  435. package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
  436. package/dist/generated/themes/TabInStrip.css.js +1 -1
  437. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  438. package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
  439. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  440. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  441. package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
  442. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  443. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  444. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  445. package/dist/generated/themes/TableCellBase.css.js +1 -1
  446. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  447. package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
  448. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  449. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  450. package/dist/generated/themes/TableRow.css.d.ts +1 -1
  451. package/dist/generated/themes/TableRow.css.js +1 -1
  452. package/dist/generated/themes/TableRow.css.js.map +1 -1
  453. package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
  454. package/dist/generated/themes/TableRowActionBase.css.js +1 -1
  455. package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
  456. package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
  457. package/dist/generated/themes/TableRowBase.css.js +1 -1
  458. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  459. package/dist/generated/themes/Tag.css.d.ts +1 -1
  460. package/dist/generated/themes/Tag.css.js +1 -1
  461. package/dist/generated/themes/Tag.css.js.map +1 -1
  462. package/dist/generated/themes/Text.css.d.ts +1 -1
  463. package/dist/generated/themes/Text.css.js +1 -1
  464. package/dist/generated/themes/Text.css.js.map +1 -1
  465. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  466. package/dist/generated/themes/TextArea.css.js +1 -1
  467. package/dist/generated/themes/TextArea.css.js.map +1 -1
  468. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  469. package/dist/generated/themes/TimePicker.css.js +1 -1
  470. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  471. package/dist/generated/themes/Toast.css.d.ts +1 -1
  472. package/dist/generated/themes/Toast.css.js +1 -1
  473. package/dist/generated/themes/Toast.css.js.map +1 -1
  474. package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
  475. package/dist/generated/themes/ToggleButton.css.js +1 -1
  476. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  477. package/dist/generated/themes/Token.css.d.ts +1 -1
  478. package/dist/generated/themes/Token.css.js +1 -1
  479. package/dist/generated/themes/Token.css.js.map +1 -1
  480. package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
  481. package/dist/generated/themes/Tokenizer.css.js +1 -1
  482. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  483. package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
  484. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  485. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  486. package/dist/generated/themes/Toolbar.css.d.ts +1 -1
  487. package/dist/generated/themes/Toolbar.css.js +1 -1
  488. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  489. package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
  490. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  491. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  492. package/dist/generated/themes/ToolbarSeparator.css.d.ts +1 -1
  493. package/dist/generated/themes/ToolbarSeparator.css.js +1 -1
  494. package/dist/generated/themes/ToolbarSeparator.css.js.map +1 -1
  495. package/dist/generated/themes/TreeItem.css.d.ts +1 -1
  496. package/dist/generated/themes/TreeItem.css.js +1 -1
  497. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  498. package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
  499. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  500. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  501. package/dist/generated/themes/YearPicker.css.d.ts +1 -1
  502. package/dist/generated/themes/YearPicker.css.js +1 -1
  503. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  504. package/dist/generated/themes/YearRangePicker.css.d.ts +1 -1
  505. package/dist/generated/themes/YearRangePicker.css.js +1 -1
  506. package/dist/generated/themes/YearRangePicker.css.js.map +1 -1
  507. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  508. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  509. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  510. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  511. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  512. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  513. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  514. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  515. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  516. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  517. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  518. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  519. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  520. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  521. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  522. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  523. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  524. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  525. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  526. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  527. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  528. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  529. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  530. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  531. package/dist/vscode.html-custom-data.json +52 -2
  532. package/dist/web-types.json +95 -3
  533. package/package.json +10 -10
  534. package/src/AvatarTemplate.tsx +16 -10
  535. package/src/BusyIndicatorTemplate.tsx +4 -1
  536. package/src/CalendarHeaderTemplate.tsx +3 -0
  537. package/src/CalendarTemplate.tsx +2 -2
  538. package/src/InputTemplate.tsx +1 -1
  539. package/src/MonthPickerTemplate.tsx +1 -0
  540. package/src/PopupTemplate.tsx +5 -0
  541. package/src/RangeSliderTemplate.tsx +25 -39
  542. package/src/ResponsivePopoverTemplate.tsx +2 -0
  543. package/src/SelectTemplate.tsx +23 -13
  544. package/src/SliderBaseTemplate.tsx +0 -1
  545. package/src/SliderTemplate.tsx +14 -21
  546. package/src/SliderTooltipTemplate.tsx +27 -0
  547. package/src/YearPickerTemplate.tsx +1 -0
  548. package/src/i18n/messagebundle_en.properties +246 -0
  549. package/src/i18n/messagebundle_en_US_saprigi.properties +18 -0
  550. package/src/themes/BusyIndicator.css +5 -2
  551. package/src/themes/PopupsCommon.css +2 -0
  552. package/src/themes/ResponsivePopoverCommon.css +2 -2
  553. package/src/themes/Select.css +19 -0
  554. package/src/themes/SliderTooltip.css +34 -0
  555. package/src/themes/base/CheckBox-parameters.css +7 -1
  556. package/src/themes/base/Select-parameters.css +8 -0
  557. package/src/themes/sap_horizon/BusyIndicator-parameters.css +0 -1
  558. package/src/themes/sap_horizon/Select-parameters.css +2 -0
  559. package/src/themes/sap_horizon_dark/BusyIndicator-parameters.css +0 -1
  560. package/src/themes/sap_horizon_dark/Select-parameters.css +2 -0
package/dist/Avatar.d.ts CHANGED
@@ -149,6 +149,10 @@ declare class Avatar extends UI5Element implements ITabbable, IAvatarGroupItem {
149
149
  * @private
150
150
  */
151
151
  _hasImage: boolean;
152
+ /**
153
+ * @private
154
+ */
155
+ _imageLoadError: boolean;
152
156
  /**
153
157
  * Receives the desired `<img>` tag
154
158
  *
@@ -172,6 +176,8 @@ declare class Avatar extends UI5Element implements ITabbable, IAvatarGroupItem {
172
176
  badge: Array<HTMLElement>;
173
177
  static i18nBundle: I18nBundle;
174
178
  _handleResizeBound: ResizeObserverCallback;
179
+ _onImageLoadBound: (e: Event) => void;
180
+ _onImageErrorBound: (e: Event) => void;
175
181
  constructor();
176
182
  onBeforeRendering(): void;
177
183
  get tabindex(): number | undefined;
@@ -193,6 +199,7 @@ declare class Avatar extends UI5Element implements ITabbable, IAvatarGroupItem {
193
199
  get validInitials(): string | null | undefined;
194
200
  get accessibleNameText(): string;
195
201
  get hasImage(): boolean;
202
+ get imageEl(): HTMLImageElement | null;
196
203
  get initialsContainer(): HTMLObjectElement | null;
197
204
  get fallBackIconDomRef(): Icon | null;
198
205
  onAfterRendering(): Promise<void>;
@@ -207,6 +214,11 @@ declare class Avatar extends UI5Element implements ITabbable, IAvatarGroupItem {
207
214
  _onkeyup(e: KeyboardEvent): void;
208
215
  _fireClick(): void;
209
216
  _getAriaHasPopup(): import("@ui5/webcomponents-base/dist/types.js").AriaHasPopup | undefined;
217
+ _attachImageEventHandlers(): void;
218
+ _checkExistingImageState(): void;
219
+ _detachImageEventHandlers(): void;
220
+ _onImageLoad(e: Event): void;
221
+ _onImageError(e: Event): void;
210
222
  }
211
223
  export default Avatar;
212
224
  export type { AvatarAccessibilityAttributes, };
package/dist/Avatar.js CHANGED
@@ -127,9 +127,16 @@ let Avatar = Avatar_1 = class Avatar extends UI5Element {
127
127
  * @private
128
128
  */
129
129
  this._hasImage = false;
130
+ /**
131
+ * @private
132
+ */
133
+ this._imageLoadError = false;
130
134
  this._handleResizeBound = this.handleResize.bind(this);
135
+ this._onImageLoadBound = this._onImageLoad.bind(this);
136
+ this._onImageErrorBound = this._onImageError.bind(this);
131
137
  }
132
138
  onBeforeRendering() {
139
+ this._attachImageEventHandlers();
133
140
  this._hasImage = this.hasImage;
134
141
  }
135
142
  get tabindex() {
@@ -181,7 +188,10 @@ let Avatar = Avatar_1 = class Avatar extends UI5Element {
181
188
  return this.initials ? `${defaultLabel} ${this.initials}`.trim() : defaultLabel;
182
189
  }
183
190
  get hasImage() {
184
- return !!this.image.length;
191
+ return !!this.image.length && !this._imageLoadError;
192
+ }
193
+ get imageEl() {
194
+ return this.image?.[0] instanceof HTMLImageElement ? this.image[0] : null;
185
195
  }
186
196
  get initialsContainer() {
187
197
  return this.getDomRef().querySelector(".ui5-avatar-initials");
@@ -203,6 +213,7 @@ let Avatar = Avatar_1 = class Avatar extends UI5Element {
203
213
  }
204
214
  onExitDOM() {
205
215
  this.initialsContainer && ResizeHandler.deregister(this.initialsContainer, this._handleResizeBound);
216
+ this._detachImageEventHandlers();
206
217
  }
207
218
  handleResize() {
208
219
  if (this.initials && !this.icon) {
@@ -257,6 +268,59 @@ let Avatar = Avatar_1 = class Avatar extends UI5Element {
257
268
  }
258
269
  return ariaHaspopup;
259
270
  }
271
+ _attachImageEventHandlers() {
272
+ const imgEl = this.imageEl;
273
+ if (!imgEl) {
274
+ this._imageLoadError = false;
275
+ return;
276
+ }
277
+ // Remove previous handlers to avoid duplicates
278
+ imgEl.removeEventListener("load", this._onImageLoadBound);
279
+ imgEl.removeEventListener("error", this._onImageErrorBound);
280
+ // Attach new handlers
281
+ imgEl.addEventListener("load", this._onImageLoadBound);
282
+ imgEl.addEventListener("error", this._onImageErrorBound);
283
+ // Check existing image state
284
+ this._checkExistingImageState();
285
+ }
286
+ _checkExistingImageState() {
287
+ const imgEl = this.imageEl;
288
+ if (!imgEl) {
289
+ this._imageLoadError = false;
290
+ return;
291
+ }
292
+ if (imgEl.complete && imgEl.naturalWidth === 0) {
293
+ this._imageLoadError = true; // Already broken
294
+ }
295
+ else if (imgEl.complete && imgEl.naturalWidth > 0) {
296
+ this._imageLoadError = false; // Already loaded
297
+ }
298
+ else {
299
+ this._imageLoadError = false; // Pending load
300
+ }
301
+ }
302
+ _detachImageEventHandlers() {
303
+ const imgEl = this.imageEl;
304
+ if (!imgEl) {
305
+ return;
306
+ }
307
+ imgEl.removeEventListener("load", this._onImageLoadBound);
308
+ imgEl.removeEventListener("error", this._onImageErrorBound);
309
+ }
310
+ _onImageLoad(e) {
311
+ if (e.target !== this.imageEl) {
312
+ e.target?.removeEventListener("load", this._onImageLoadBound);
313
+ return;
314
+ }
315
+ this._imageLoadError = false;
316
+ }
317
+ _onImageError(e) {
318
+ if (e.target !== this.imageEl) {
319
+ e.target?.removeEventListener("error", this._onImageErrorBound);
320
+ return;
321
+ }
322
+ this._imageLoadError = true;
323
+ }
260
324
  };
261
325
  __decorate([
262
326
  property({ type: Boolean })
@@ -297,6 +361,9 @@ __decorate([
297
361
  __decorate([
298
362
  property({ type: Boolean })
299
363
  ], Avatar.prototype, "_hasImage", void 0);
364
+ __decorate([
365
+ property({ type: Boolean, noAttribute: true })
366
+ ], Avatar.prototype, "_imageLoadError", void 0);
300
367
  __decorate([
301
368
  slot({ type: HTMLElement, "default": true })
302
369
  ], Avatar.prototype, "image", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { AccessibilityAttributes } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { IAvatarGroupItem } from \"./AvatarGroup.js\";\n// Template\nimport AvatarTemplate from \"./AvatarTemplate.js\";\n\nimport { AVATAR_TOOLTIP } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AvatarCss from \"./generated/themes/Avatar.css.js\";\n\nimport type Icon from \"./Icon.js\";\nimport AvatarSize from \"./types/AvatarSize.js\";\nimport type AvatarShape from \"./types/AvatarShape.js\";\nimport type AvatarColorScheme from \"./types/AvatarColorScheme.js\";\n\n// Icon\nimport \"@ui5/webcomponents-icons/dist/employee.js\";\n\ntype AvatarAccessibilityAttributes = Pick<AccessibilityAttributes, \"hasPopup\">;\n\n/**\n * @class\n * ### Overview\n *\n * An image-like component that has different display options for representing images and icons\n * in different shapes and sizes, depending on the use case.\n *\n * The shape can be circular or square. There are several predefined sizes, as well as an option to\n * set a custom size.\n *\n * ### Keyboard Handling\n *\n * - [Space] / [Enter] or [Return] - Fires the `click` event if the `interactive` property is set to true.\n * - [Shift] - If [Space] is pressed, pressing [Shift] releases the component without triggering the click event.\n *\n * ### ES6 Module Import\n * `import \"@ui5/webcomponents/dist/Avatar.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.6\n * @implements {IAvatarGroupItem}\n * @public\n */\n@customElement({\n\ttag: \"ui5-avatar\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\tstyles: AvatarCss,\n\ttemplate: AvatarTemplate,\n})\n/**\n * Fired on mouseup, space and enter if avatar is interactive\n *\n * **Note:** The event will not be fired if the `disabled`\n * property is set to `true`.\n * @public\n * @since 2.11.0\n */\n@event(\"click\", {\n\tbubbles: true,\n})\nclass Avatar extends UI5Element implements ITabbable, IAvatarGroupItem {\n\teventDetails!: {\n\t\tclick: void,\n\t}\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be pressed or\n\t * focused, and it is not in the tab chain.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines if the avatar is interactive (focusable and pressable).\n\t *\n\t * **Note:** This property won't have effect if the `disabled`\n\t * property is set to `true`.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tinteractive = false;\n\n\t/**\n\t * Defines the name of the UI5 Icon, that will be displayed.\n\t *\n\t * **Note:** If `image` slot is provided, the property will be ignored.\n\t *\n\t * **Note:** You should import the desired icon first, then use its name as \"icon\".\n\t *\n\t * `import \"@ui5/webcomponents-icons/dist/{icon_name}.js\"`\n\t *\n\t * `<ui5-avatar icon=\"employee\">`\n\t *\n\t * **Note:** If no icon or an empty one is provided, by default the \"employee\" icon should be displayed.\n\t *\n\t * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines the name of the fallback icon, which should be displayed in the following cases:\n\t *\n\t * \t- If the initials are not valid (more than 3 letters, unsupported languages or empty initials).\n\t * \t- If there are three initials and they do not fit in the shape (e.g. WWW for some of the sizes).\n\t * \t- If the image src is wrong.\n\t *\n\t * **Note:** If not set, a default fallback icon \"employee\" is displayed.\n\t *\n\t * **Note:** You should import the desired icon first, then use its name as \"fallback-icon\".\n\t *\n\t * `import \"@ui5/webcomponents-icons/dist/{icon_name}.js\"`\n\t *\n\t * `<ui5-avatar fallback-icon=\"alert\">`\n\t *\n\t * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default \"employee\"\n\t * @public\n\t */\n\t@property()\n\tfallbackIcon = \"employee\";\n\n\t/**\n\t * Defines the displayed initials.\n\t *\n\t * Up to three Latin letters can be displayed as initials.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tinitials?: string;\n\n\t/**\n\t * Defines the shape of the component.\n\t * @default \"Circle\"\n\t * @public\n\t */\n\t@property()\n\tshape: `${AvatarShape}` = \"Circle\";\n\n\t/**\n\t * Defines predefined size of the component.\n\t * @default \"S\"\n\t * @public\n\t */\n\t@property()\n\tsize: `${AvatarSize}` = \"S\";\n\n\t/**\n\t * Defines the background color of the desired image.\n\t * If `colorScheme` is set to `Auto`, the avatar will be displayed with the `Accent6` color.\n\t *\n\t * @default \"Auto\"\n\t * @public\n\t */\n\t@property()\n\tcolorScheme: `${AvatarColorScheme}` = \"Auto\";\n\n\t/**\n\t * @private\n\t */\n\t@property()\n\t_colorScheme: `${AvatarColorScheme}` = \"Auto\";\n\n\t/**\n\t * Defines the text alternative of the component.\n\t * If not provided a default text alternative will be set, if present.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.7\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following field is supported:\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * @public\n\t * @since 2.0.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: AvatarAccessibilityAttributes = {};\n\n\t@property({ noAttribute: true })\n\tforcedTabIndex?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_hasImage = false;\n\n\t/**\n\t * Receives the desired `<img>` tag\n\t *\n\t * **Note:** If you experience flickering of the provided image, you can hide the component until it is defined with the following CSS:<br/>\n\t * `ui5-avatar:not(:defined) {`<br/>\n\t * &nbsp;&nbsp;&nbsp;&nbsp;`visibility: hidden;`<br/>\n\t * `}`\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\timage!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the optional badge that will be used for visual affordance.\n\t *\n\t * **Note:** While the slot allows for custom badges, to achieve\n\t * the Fiori design, you can use the `ui5-tag` with `ui5-icon`\n\t * in the corresponding `icon` slot, without text nodes.\n\t * @public\n\t * @since 1.7.0\n\t */\n\t@slot()\n\tbadge!: Array<HTMLElement>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_handleResizeBound: ResizeObserverCallback;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._handleResizeBound = this.handleResize.bind(this);\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._hasImage = this.hasImage;\n\t}\n\n\tget tabindex() {\n\t\tif (this.forcedTabIndex) {\n\t\t\treturn parseInt(this.forcedTabIndex);\n\t\t}\n\t\treturn this._interactive ? 0 : undefined;\n\t}\n\n\t/**\n\t * Returns the effective avatar size.\n\t * @default \"S\"\n\t * @private\n\t */\n\tget effectiveSize(): AvatarSize {\n\t\t// we read the attribute, because the \"size\" property will always have a default value\n\t\treturn this.getAttribute(\"size\") as AvatarSize || AvatarSize.S;\n\t}\n\n\t/**\n\t * Returns the effective background color.\n\t * @default \"Auto\"\n\t * @private\n\t */\n\tget effectiveBackgroundColor(): AvatarColorScheme {\n\t\t// we read the attribute, because the \"background-color\" property will always have a default value\n\t\treturn this.getAttribute(\"color-scheme\") as AvatarColorScheme || this._colorScheme;\n\t}\n\n\tget _role() {\n\t\treturn this._interactive ? \"button\" : \"img\";\n\t}\n\n\tget _ariaHasPopup() {\n\t\treturn this._getAriaHasPopup();\n\t}\n\n\tget _interactive() {\n\t\treturn this.interactive && !this.disabled;\n\t}\n\n\tget validInitials() {\n\t\t// initials should consist of only 1,2 or 3 latin letters\n\t\tconst validInitials = /^[a-zA-Zà-üÀ-Ü]{1,3}$/,\n\t\t\tareInitialsValid = this.initials && validInitials.test(this.initials);\n\n\t\tif (areInitialsValid) {\n\t\t\treturn this.initials;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget accessibleNameText() {\n\t\tif (this.accessibleName) {\n\t\t\treturn this.accessibleName;\n\t\t}\n\n\t\tconst defaultLabel = Avatar.i18nBundle.getText(AVATAR_TOOLTIP);\n\n\t\treturn this.initials ? `${defaultLabel} ${this.initials}`.trim() : defaultLabel;\n\t}\n\n\tget hasImage() {\n\t\treturn !!this.image.length;\n\t}\n\n\tget initialsContainer(): HTMLObjectElement | null {\n\t\treturn this.getDomRef()!.querySelector(\".ui5-avatar-initials\");\n\t}\n\n\tget fallBackIconDomRef(): Icon | null {\n\t\treturn this.getDomRef()!.querySelector(\".ui5-avatar-icon-fallback\");\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished();\n\t\tif (this.initials && !this.icon) {\n\t\t\tthis._checkInitials();\n\t\t}\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tthis.initialsContainer && ResizeHandler.register(this.initialsContainer,\n\t\t\tthis._handleResizeBound);\n\t}\n\n\tonExitDOM() {\n\t\tthis.initialsContainer && ResizeHandler.deregister(this.initialsContainer,\n\t\t\tthis._handleResizeBound);\n\t}\n\n\thandleResize() {\n\t\tif (this.initials && !this.icon) {\n\t\t\tthis._checkInitials();\n\t\t}\n\t}\n\n\t_checkInitials() {\n\t\tconst avatar = this.getDomRef()!;\n\t\tconst avatarInitials = avatar.querySelector(\".ui5-avatar-initials\");\n\t\tconst validInitials = this.validInitials && avatarInitials && avatarInitials.scrollWidth <= avatar.scrollWidth;\n\n\t\tif (validInitials) {\n\t\t\tthis.showInitials();\n\t\t\treturn;\n\t\t}\n\t\tthis.showFallbackIcon();\n\t}\n\n\tshowFallbackIcon() {\n\t\tthis.initialsContainer?.classList.add(\"ui5-avatar-initials-hidden\");\n\t\tthis.fallBackIconDomRef?.classList.remove(\"ui5-avatar-fallback-icon-hidden\");\n\t}\n\n\tshowInitials() {\n\t\tthis.initialsContainer?.classList.remove(\"ui5-avatar-initials-hidden\");\n\t\tthis.fallBackIconDomRef?.classList.add(\"ui5-avatar-fallback-icon-hidden\");\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t\tthis._fireClick();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (!this._interactive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._fireClick();\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault(); // prevent scrolling\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this._interactive && !e.shiftKey && isSpace(e)) {\n\t\t\tthis._fireClick();\n\t\t}\n\t}\n\n\t_fireClick() {\n\t\tthis.fireDecoratorEvent(\"click\");\n\t}\n\n\t_getAriaHasPopup() {\n\t\tconst ariaHaspopup = this.accessibilityAttributes.hasPopup;\n\n\t\tif (!this._interactive || !ariaHaspopup) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn ariaHaspopup;\n\t}\n}\n\nAvatar.define();\n\nexport default Avatar;\nexport type {\n\tAvatarAccessibilityAttributes,\n};\n"]}
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { AccessibilityAttributes } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { IAvatarGroupItem } from \"./AvatarGroup.js\";\n// Template\nimport AvatarTemplate from \"./AvatarTemplate.js\";\n\nimport { AVATAR_TOOLTIP } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AvatarCss from \"./generated/themes/Avatar.css.js\";\n\nimport type Icon from \"./Icon.js\";\nimport AvatarSize from \"./types/AvatarSize.js\";\nimport type AvatarShape from \"./types/AvatarShape.js\";\nimport type AvatarColorScheme from \"./types/AvatarColorScheme.js\";\n\n// Icon\nimport \"@ui5/webcomponents-icons/dist/employee.js\";\n\ntype AvatarAccessibilityAttributes = Pick<AccessibilityAttributes, \"hasPopup\">;\n\n/**\n * @class\n * ### Overview\n *\n * An image-like component that has different display options for representing images and icons\n * in different shapes and sizes, depending on the use case.\n *\n * The shape can be circular or square. There are several predefined sizes, as well as an option to\n * set a custom size.\n *\n * ### Keyboard Handling\n *\n * - [Space] / [Enter] or [Return] - Fires the `click` event if the `interactive` property is set to true.\n * - [Shift] - If [Space] is pressed, pressing [Shift] releases the component without triggering the click event.\n *\n * ### ES6 Module Import\n * `import \"@ui5/webcomponents/dist/Avatar.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.6\n * @implements {IAvatarGroupItem}\n * @public\n */\n@customElement({\n\ttag: \"ui5-avatar\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\tstyles: AvatarCss,\n\ttemplate: AvatarTemplate,\n})\n/**\n * Fired on mouseup, space and enter if avatar is interactive\n *\n * **Note:** The event will not be fired if the `disabled`\n * property is set to `true`.\n * @public\n * @since 2.11.0\n */\n@event(\"click\", {\n\tbubbles: true,\n})\nclass Avatar extends UI5Element implements ITabbable, IAvatarGroupItem {\n\teventDetails!: {\n\t\tclick: void,\n\t}\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be pressed or\n\t * focused, and it is not in the tab chain.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines if the avatar is interactive (focusable and pressable).\n\t *\n\t * **Note:** This property won't have effect if the `disabled`\n\t * property is set to `true`.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tinteractive = false;\n\n\t/**\n\t * Defines the name of the UI5 Icon, that will be displayed.\n\t *\n\t * **Note:** If `image` slot is provided, the property will be ignored.\n\t *\n\t * **Note:** You should import the desired icon first, then use its name as \"icon\".\n\t *\n\t * `import \"@ui5/webcomponents-icons/dist/{icon_name}.js\"`\n\t *\n\t * `<ui5-avatar icon=\"employee\">`\n\t *\n\t * **Note:** If no icon or an empty one is provided, by default the \"employee\" icon should be displayed.\n\t *\n\t * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines the name of the fallback icon, which should be displayed in the following cases:\n\t *\n\t * \t- If the initials are not valid (more than 3 letters, unsupported languages or empty initials).\n\t * \t- If there are three initials and they do not fit in the shape (e.g. WWW for some of the sizes).\n\t * \t- If the image src is wrong.\n\t *\n\t * **Note:** If not set, a default fallback icon \"employee\" is displayed.\n\t *\n\t * **Note:** You should import the desired icon first, then use its name as \"fallback-icon\".\n\t *\n\t * `import \"@ui5/webcomponents-icons/dist/{icon_name}.js\"`\n\t *\n\t * `<ui5-avatar fallback-icon=\"alert\">`\n\t *\n\t * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default \"employee\"\n\t * @public\n\t */\n\t@property()\n\tfallbackIcon = \"employee\";\n\n\t/**\n\t * Defines the displayed initials.\n\t *\n\t * Up to three Latin letters can be displayed as initials.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tinitials?: string;\n\n\t/**\n\t * Defines the shape of the component.\n\t * @default \"Circle\"\n\t * @public\n\t */\n\t@property()\n\tshape: `${AvatarShape}` = \"Circle\";\n\n\t/**\n\t * Defines predefined size of the component.\n\t * @default \"S\"\n\t * @public\n\t */\n\t@property()\n\tsize: `${AvatarSize}` = \"S\";\n\n\t/**\n\t * Defines the background color of the desired image.\n\t * If `colorScheme` is set to `Auto`, the avatar will be displayed with the `Accent6` color.\n\t *\n\t * @default \"Auto\"\n\t * @public\n\t */\n\t@property()\n\tcolorScheme: `${AvatarColorScheme}` = \"Auto\";\n\n\t/**\n\t * @private\n\t */\n\t@property()\n\t_colorScheme: `${AvatarColorScheme}` = \"Auto\";\n\n\t/**\n\t * Defines the text alternative of the component.\n\t * If not provided a default text alternative will be set, if present.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.7\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following field is supported:\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * @public\n\t * @since 2.0.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: AvatarAccessibilityAttributes = {};\n\n\t@property({ noAttribute: true })\n\tforcedTabIndex?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_hasImage = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_imageLoadError = false;\n\n\t/**\n\t * Receives the desired `<img>` tag\n\t *\n\t * **Note:** If you experience flickering of the provided image, you can hide the component until it is defined with the following CSS:<br/>\n\t * `ui5-avatar:not(:defined) {`<br/>\n\t * &nbsp;&nbsp;&nbsp;&nbsp;`visibility: hidden;`<br/>\n\t * `}`\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\timage!: Array<HTMLElement>;\n\n\t/**\n\t * Defines the optional badge that will be used for visual affordance.\n\t *\n\t * **Note:** While the slot allows for custom badges, to achieve\n\t * the Fiori design, you can use the `ui5-tag` with `ui5-icon`\n\t * in the corresponding `icon` slot, without text nodes.\n\t * @public\n\t * @since 1.7.0\n\t */\n\t@slot()\n\tbadge!: Array<HTMLElement>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_handleResizeBound: ResizeObserverCallback;\n\t_onImageLoadBound: (e: Event) => void;\n\t_onImageErrorBound: (e: Event) => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._handleResizeBound = this.handleResize.bind(this);\n\t\tthis._onImageLoadBound = this._onImageLoad.bind(this);\n\t\tthis._onImageErrorBound = this._onImageError.bind(this);\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._attachImageEventHandlers();\n\t\tthis._hasImage = this.hasImage;\n\t}\n\n\tget tabindex() {\n\t\tif (this.forcedTabIndex) {\n\t\t\treturn parseInt(this.forcedTabIndex);\n\t\t}\n\t\treturn this._interactive ? 0 : undefined;\n\t}\n\n\t/**\n\t * Returns the effective avatar size.\n\t * @default \"S\"\n\t * @private\n\t */\n\tget effectiveSize(): AvatarSize {\n\t\t// we read the attribute, because the \"size\" property will always have a default value\n\t\treturn this.getAttribute(\"size\") as AvatarSize || AvatarSize.S;\n\t}\n\n\t/**\n\t * Returns the effective background color.\n\t * @default \"Auto\"\n\t * @private\n\t */\n\tget effectiveBackgroundColor(): AvatarColorScheme {\n\t\t// we read the attribute, because the \"background-color\" property will always have a default value\n\t\treturn this.getAttribute(\"color-scheme\") as AvatarColorScheme || this._colorScheme;\n\t}\n\n\tget _role() {\n\t\treturn this._interactive ? \"button\" : \"img\";\n\t}\n\n\tget _ariaHasPopup() {\n\t\treturn this._getAriaHasPopup();\n\t}\n\n\tget _interactive() {\n\t\treturn this.interactive && !this.disabled;\n\t}\n\n\tget validInitials() {\n\t\t// initials should consist of only 1,2 or 3 latin letters\n\t\tconst validInitials = /^[a-zA-Zà-üÀ-Ü]{1,3}$/,\n\t\t\tareInitialsValid = this.initials && validInitials.test(this.initials);\n\n\t\tif (areInitialsValid) {\n\t\t\treturn this.initials;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget accessibleNameText() {\n\t\tif (this.accessibleName) {\n\t\t\treturn this.accessibleName;\n\t\t}\n\n\t\tconst defaultLabel = Avatar.i18nBundle.getText(AVATAR_TOOLTIP);\n\n\t\treturn this.initials ? `${defaultLabel} ${this.initials}`.trim() : defaultLabel;\n\t}\n\n\tget hasImage() {\n\t\treturn !!this.image.length && !this._imageLoadError;\n\t}\n\n\tget imageEl(): HTMLImageElement | null {\n\t\treturn this.image?.[0] instanceof HTMLImageElement ? this.image[0] : null;\n\t}\n\n\tget initialsContainer(): HTMLObjectElement | null {\n\t\treturn this.getDomRef()!.querySelector(\".ui5-avatar-initials\");\n\t}\n\n\tget fallBackIconDomRef(): Icon | null {\n\t\treturn this.getDomRef()!.querySelector(\".ui5-avatar-icon-fallback\");\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished();\n\t\tif (this.initials && !this.icon) {\n\t\t\tthis._checkInitials();\n\t\t}\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tthis.initialsContainer && ResizeHandler.register(this.initialsContainer,\n\t\t\tthis._handleResizeBound);\n\t}\n\n\tonExitDOM() {\n\t\tthis.initialsContainer && ResizeHandler.deregister(this.initialsContainer,\n\t\t\tthis._handleResizeBound);\n\n\t\tthis._detachImageEventHandlers();\n\t}\n\n\thandleResize() {\n\t\tif (this.initials && !this.icon) {\n\t\t\tthis._checkInitials();\n\t\t}\n\t}\n\n\t_checkInitials() {\n\t\tconst avatar = this.getDomRef()!;\n\t\tconst avatarInitials = avatar.querySelector(\".ui5-avatar-initials\");\n\t\tconst validInitials = this.validInitials && avatarInitials && avatarInitials.scrollWidth <= avatar.scrollWidth;\n\n\t\tif (validInitials) {\n\t\t\tthis.showInitials();\n\t\t\treturn;\n\t\t}\n\t\tthis.showFallbackIcon();\n\t}\n\n\tshowFallbackIcon() {\n\t\tthis.initialsContainer?.classList.add(\"ui5-avatar-initials-hidden\");\n\t\tthis.fallBackIconDomRef?.classList.remove(\"ui5-avatar-fallback-icon-hidden\");\n\t}\n\n\tshowInitials() {\n\t\tthis.initialsContainer?.classList.remove(\"ui5-avatar-initials-hidden\");\n\t\tthis.fallBackIconDomRef?.classList.add(\"ui5-avatar-fallback-icon-hidden\");\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t\tthis._fireClick();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (!this._interactive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._fireClick();\n\t\t}\n\n\t\tif (isSpace(e)) {\n\t\t\te.preventDefault(); // prevent scrolling\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this._interactive && !e.shiftKey && isSpace(e)) {\n\t\t\tthis._fireClick();\n\t\t}\n\t}\n\n\t_fireClick() {\n\t\tthis.fireDecoratorEvent(\"click\");\n\t}\n\n\t_getAriaHasPopup() {\n\t\tconst ariaHaspopup = this.accessibilityAttributes.hasPopup;\n\n\t\tif (!this._interactive || !ariaHaspopup) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn ariaHaspopup;\n\t}\n\n\t_attachImageEventHandlers() {\n\t\tconst imgEl = this.imageEl;\n\t\tif (!imgEl) {\n\t\t\tthis._imageLoadError = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove previous handlers to avoid duplicates\n\t\timgEl.removeEventListener(\"load\", this._onImageLoadBound);\n\t\timgEl.removeEventListener(\"error\", this._onImageErrorBound);\n\n\t\t// Attach new handlers\n\t\timgEl.addEventListener(\"load\", this._onImageLoadBound);\n\t\timgEl.addEventListener(\"error\", this._onImageErrorBound);\n\n\t\t// Check existing image state\n\t\tthis._checkExistingImageState();\n\t}\n\n\t_checkExistingImageState() {\n\t\tconst imgEl = this.imageEl;\n\t\tif (!imgEl) {\n\t\t\tthis._imageLoadError = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (imgEl.complete && imgEl.naturalWidth === 0) {\n\t\t\tthis._imageLoadError = true; // Already broken\n\t\t} else if (imgEl.complete && imgEl.naturalWidth > 0) {\n\t\t\tthis._imageLoadError = false; // Already loaded\n\t\t} else {\n\t\t\tthis._imageLoadError = false; // Pending load\n\t\t}\n\t}\n\n\t_detachImageEventHandlers() {\n\t\tconst imgEl = this.imageEl;\n\t\tif (!imgEl) {\n\t\t\treturn;\n\t\t}\n\n\t\timgEl.removeEventListener(\"load\", this._onImageLoadBound);\n\t\timgEl.removeEventListener(\"error\", this._onImageErrorBound);\n\t}\n\n\t_onImageLoad(e: Event) {\n\t\tif (e.target !== this.imageEl) {\n\t\t\t(e.target as HTMLImageElement)?.removeEventListener(\"load\", this._onImageLoadBound);\n\t\t\treturn;\n\t\t}\n\t\tthis._imageLoadError = false;\n\t}\n\n\t_onImageError(e: Event) {\n\t\tif (e.target !== this.imageEl) {\n\t\t\t(e.target as HTMLImageElement)?.removeEventListener(\"error\", this._onImageErrorBound);\n\t\t\treturn;\n\t\t}\n\t\tthis._imageLoadError = true;\n\t}\n}\n\nAvatar.define();\n\nexport default Avatar;\nexport type {\n\tAvatarAccessibilityAttributes,\n};\n"]}
@@ -112,6 +112,22 @@ declare class AvatarGroup extends UI5Element {
112
112
  * @private
113
113
  */
114
114
  _overflowButtonText?: string;
115
+ /**
116
+ * Defines the accessible name of the AvatarGroup.
117
+ * When provided, this will override the default aria-label text.
118
+ * @default undefined
119
+ * @public
120
+ * @since 2.12.0
121
+ */
122
+ accessibleName?: string;
123
+ /**
124
+ * Receives id(s) of the elements that describe the AvatarGroup.
125
+ * When provided, this will be used as aria-labelledby instead of aria-label.
126
+ * @default undefined
127
+ * @public
128
+ * @since 2.12.0
129
+ */
130
+ accessibleNameRef?: string;
115
131
  /**
116
132
  * Defines the items of the component. Use the `ui5-avatar` component as an item.
117
133
  *
@@ -151,7 +167,7 @@ declare class AvatarGroup extends UI5Element {
151
167
  */
152
168
  get colorScheme(): AvatarColorScheme[];
153
169
  get _customOverflowButton(): IButton | undefined;
154
- get _ariaLabelText(): string;
170
+ get _ariaLabelText(): string | undefined;
155
171
  get _overflowButtonAriaLabelText(): string | undefined;
156
172
  get _containerAriaHasPopup(): import("@ui5/webcomponents-base/dist/types.js").AriaHasPopup | undefined;
157
173
  get _overflowButtonAccAttributes(): {
@@ -24,6 +24,7 @@ import { AVATAR_GROUP_DISPLAYED_HIDDEN_LABEL, AVATAR_GROUP_SHOW_COMPLETE_LIST_LA
24
24
  import AvatarGroupCss from "./generated/themes/AvatarGroup.css.js";
25
25
  // Template
26
26
  import AvatarGroupTemplate from "./AvatarGroupTemplate.js";
27
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
27
28
  const OVERFLOW_BTN_CLASS = "ui5-avatar-group-overflow-btn";
28
29
  const AVATAR_GROUP_OVERFLOW_BTN_SELECTOR = `.${OVERFLOW_BTN_CLASS}`;
29
30
  // based on RTL/LTR a margin-left/right is set respectfully
@@ -160,6 +161,10 @@ let AvatarGroup = AvatarGroup_1 = class AvatarGroup extends UI5Element {
160
161
  return this.overflowButton.length ? this.overflowButton[0] : undefined;
161
162
  }
162
163
  get _ariaLabelText() {
164
+ if (this.accessibleName || this.accessibleNameRef) {
165
+ return getEffectiveAriaLabelText(this);
166
+ }
167
+ // Fallback to existing default behavior
163
168
  const hiddenItemsCount = this.hiddenItems.length;
164
169
  const typeLabelKey = this._isGroup ? AVATAR_GROUP_ARIA_LABEL_GROUP : AVATAR_GROUP_ARIA_LABEL_INDIVIDUAL;
165
170
  // avatar type label
@@ -409,6 +414,12 @@ __decorate([
409
414
  __decorate([
410
415
  property({ noAttribute: true })
411
416
  ], AvatarGroup.prototype, "_overflowButtonText", void 0);
417
+ __decorate([
418
+ property()
419
+ ], AvatarGroup.prototype, "accessibleName", void 0);
420
+ __decorate([
421
+ property()
422
+ ], AvatarGroup.prototype, "accessibleNameRef", void 0);
412
423
  __decorate([
413
424
  slot({ type: HTMLElement, "default": true })
414
425
  ], AvatarGroup.prototype, "items", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../src/AvatarGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type { AccessibilityAttributes } from \"@ui5/webcomponents-base/dist/types.js\";\n\nimport {\n\tisEnter,\n\tisSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type Button from \"./Button.js\";\nimport AvatarSize from \"./types/AvatarSize.js\";\nimport AvatarGroupType from \"./types/AvatarGroupType.js\";\nimport AvatarColorScheme from \"./types/AvatarColorScheme.js\";\nimport type { IButton } from \"./Button.js\";\n\nimport {\n\tAVATAR_GROUP_DISPLAYED_HIDDEN_LABEL,\n\tAVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL,\n\tAVATAR_GROUP_ARIA_LABEL_INDIVIDUAL,\n\tAVATAR_GROUP_ARIA_LABEL_GROUP,\n\tAVATAR_GROUP_MOVE,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AvatarGroupCss from \"./generated/themes/AvatarGroup.css.js\";\n\n// Template\nimport AvatarGroupTemplate from \"./AvatarGroupTemplate.js\";\n\n/**\n * Interface for components that represent an avatar and may be slotted in numerous higher-order components such as `ui5-avatar-group`\n * @public\n */\ninterface IAvatarGroupItem extends HTMLElement, ITabbable {\n\teffectiveBackgroundColor: AvatarColorScheme;\n\tsize: `${AvatarSize}`;\n\teffectiveSize: AvatarSize;\n\tinteractive: boolean;\n}\n\nconst OVERFLOW_BTN_CLASS = \"ui5-avatar-group-overflow-btn\";\nconst AVATAR_GROUP_OVERFLOW_BTN_SELECTOR = `.${OVERFLOW_BTN_CLASS}`;\n\n// based on RTL/LTR a margin-left/right is set respectfully\nconst offsets = {\n\t[AvatarSize.XS]: {\n\t\t[AvatarGroupType.Individual]: \"0.0625rem\",\n\t\t[AvatarGroupType.Group]: \"-0.5rem\",\n\t},\n\t[AvatarSize.S]: {\n\t\t[AvatarGroupType.Individual]: \"0.125rem\",\n\t\t[AvatarGroupType.Group]: \"-1.25rem\",\n\t},\n\t[AvatarSize.M]: {\n\t\t[AvatarGroupType.Individual]: \"0.125rem\",\n\t\t[AvatarGroupType.Group]: \"-1.625rem\",\n\t},\n\t[AvatarSize.L]: {\n\t\t[AvatarGroupType.Individual]: \"0.125rem\",\n\t\t[AvatarGroupType.Group]: \" -2rem\",\n\t},\n\t[AvatarSize.XL]: {\n\t\t[AvatarGroupType.Individual]: \"0.25rem\",\n\t\t[AvatarGroupType.Group]: \"-2.75rem\",\n\t},\n};\n\ntype AvatarGroupAccessibilityAttributes = Pick<AccessibilityAttributes, \"hasPopup\">;\n\ntype AvatarGroupClickEventDetail = {\n\ttargetRef: HTMLElement,\n\toverflowButtonClicked: boolean,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * Displays a group of avatars arranged horizontally. It is useful to visually\n * showcase a group of related avatars, such as, project team members or employees.\n *\n * The component allows you to display the avatars in different sizes,\n * depending on your use case.\n *\n * The `AvatarGroup` component has two group types:\n *\n * - `Group` type: The avatars are displayed as partially overlapped on\n * top of each other and the entire group has one click/tap area.\n * - `Individual` type: The avatars are displayed side-by-side and each\n * avatar has its own click/tap area.\n *\n * ### Usage\n *\n * Use the `AvatarGroup` if:\n *\n * - You want to display a group of avatars.\n * - You want to display several avatars which have something in common.\n *\n * Do not use the `AvatarGroup` if:\n *\n * - You want to display a single avatar.\n * - You want to display a gallery for simple images.\n * - You want to use it for other visual content than avatars.\n *\n * ### Responsive Behavior\n *\n * When the available space is less than the width required to display all avatars,\n * an overflow visualization appears as a button placed at the end with the same shape\n * and size as the avatars. The visualization displays the number of avatars that have overflowed\n * and are not currently visible.\n *\n * ### Keyboard Handling\n * The component provides advanced keyboard handling.\n * When focused, the user can use the following keyboard\n * shortcuts in order to perform a navigation:\n *\n * `type` Individual:\n *\n * - [Tab] - Move focus to the overflow button\n * - [Left] - Navigate one avatar to the left\n * - [Right] - Navigate one avatar to the right\n * - [Home] - Navigate to the first avatar\n * - [End] - Navigate to the last avatar\n * - [Space] / [Enter] or [Return] - Trigger `ui5-click` event\n *\n * `type` Group:\n *\n * - [Tab] - Move focus to the next interactive element after the component\n * - [Space] / [Enter] or [Return] - Trigger `ui5-click` event\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.11\n * @public\n */\n\n@customElement({\n\ttag: \"ui5-avatar-group\",\n\trenderer: jsxRenderer,\n\ttemplate: AvatarGroupTemplate,\n\tstyles: AvatarGroupCss,\n})\n/**\n * Fired when the component is activated either with a\n * click/tap or by using the Enter or Space key.\n * @param {HTMLElement} targetRef The DOM ref of the clicked item.\n * @param {boolean} overflowButtonClicked indicates if the overflow button is clicked\n * @public\n * @since 1.0.0-rc.11\n */\n@event(\"click\")\n\n/**\n * Fired when the count of visible `ui5-avatar` elements in the\n * component has changed\n * @public\n * @since 1.0.0-rc.13\n */\n@event(\"overflow\")\nclass AvatarGroup extends UI5Element {\n\teventDetails!: {\n\t\t\"click\": AvatarGroupClickEventDetail\n\t\t\"overflow\": void\n\t}\n\t/**\n\t * Defines the mode of the `AvatarGroup`.\n\t * @default \"Group\"\n\t * @public\n\t */\n\t@property()\n\ttype: `${AvatarGroupType}` = \"Group\"\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following field is supported:\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * @public\n\t * @since 2.0.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: AvatarGroupAccessibilityAttributes = {};\n\n\t/**\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_overflowButtonText?: string;\n\n\t/**\n\t * Defines the items of the component. Use the `ui5-avatar` component as an item.\n\t *\n\t * **Note:** The UX guidelines recommends using avatars with \"Circle\" shape.\n\t *\n\t * Moreover, if you use avatars with \"Square\" shape, there will be visual inconsistency\n\t * as the built-in overflow action has \"Circle\" shape.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\titems!: Array<IAvatarGroupItem>;\n\n\t/**\n\t * Defines the overflow button of the component.\n\t *\n\t * **Note:** We recommend using the `ui5-button` component.\n\t *\n\t * **Note:** If this slot is not used, the component will display the built-in overflow button.\n\t * @public\n\t * @since 1.0.0-rc.13\n\t */\n\t@slot()\n\toverflowButton!: Array<IButton>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\t_onResizeHandler: () => void;\n\t_colorIndex = 0;\n\t_hiddenItems = 0;\n\t_itemNavigation: ItemNavigation;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._itemNavigation = new ItemNavigation(this, {\n\t\t\tgetItemsCallback: () => {\n\t\t\t\treturn this._isGroup ? [] : this.items.slice(0, this._hiddenStartIndex);\n\t\t\t},\n\t\t});\n\t\tthis._onResizeHandler = this._onResize.bind(this);\n\t}\n\n\t/**\n\t * Returns an array containing the `ui5-avatar` instances that are currently not displayed due to lack of space.\n\t * @default []\n\t * @public\n\t */\n\tget hiddenItems(): IAvatarGroupItem[] {\n\t\treturn this.items.slice(this._hiddenStartIndex);\n\t}\n\n\t/**\n\t * Returns an array containing the `AvatarColorScheme` values that correspond to the avatars in the component.\n\t * @default []\n\t * @public\n\t */\n\tget colorScheme(): AvatarColorScheme[] {\n\t\treturn this.items.map(avatar => avatar.effectiveBackgroundColor);\n\t}\n\n\tget _customOverflowButton() {\n\t\treturn this.overflowButton.length ? this.overflowButton[0] : undefined;\n\t}\n\n\tget _ariaLabelText() {\n\t\tconst hiddenItemsCount = this.hiddenItems.length;\n\t\tconst typeLabelKey = this._isGroup ? AVATAR_GROUP_ARIA_LABEL_GROUP : AVATAR_GROUP_ARIA_LABEL_INDIVIDUAL;\n\n\t\t// avatar type label\n\t\tlet text = AvatarGroup.i18nBundle.getText(typeLabelKey);\n\n\t\t// add displayed-hidden avatars label\n\t\ttext += ` ${AvatarGroup.i18nBundle.getText(AVATAR_GROUP_DISPLAYED_HIDDEN_LABEL, this._itemsCount - hiddenItemsCount, hiddenItemsCount)}`;\n\n\t\tif (this._isGroup) {\n\t\t\t// the container role is \"button\", add the message for complete list activation\n\t\t\ttext += ` ${AvatarGroup.i18nBundle.getText(AVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL)}`;\n\t\t} else {\n\t\t\t// the container role is \"group\", add the \"how to navigate\" message\n\t\t\ttext += ` ${AvatarGroup.i18nBundle.getText(AVATAR_GROUP_MOVE)}`;\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tget _overflowButtonAriaLabelText() {\n\t\treturn this._isGroup ? undefined : AvatarGroup.i18nBundle.getText(AVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL);\n\t}\n\n\tget _containerAriaHasPopup() {\n\t\treturn this._isGroup ? this._getAriaHasPopup() : undefined;\n\t}\n\n\tget _overflowButtonAccAttributes() {\n\t\treturn {\n\t\t\thasPopup: this._isGroup ? undefined : this._getAriaHasPopup(),\n\t\t};\n\t}\n\n\tget _role() {\n\t\treturn this._isGroup ? \"button\" : \"group\";\n\t}\n\n\tget _hiddenStartIndex() {\n\t\treturn this._itemsCount - this._hiddenItems;\n\t}\n\n\tget _overflowBtnHidden() {\n\t\treturn this._hiddenItems === 0;\n\t}\n\n\tget _isGroup() {\n\t\treturn this.type === AvatarGroupType.Group;\n\t}\n\n\tget _itemsCount() {\n\t\treturn this.items.length;\n\t}\n\n\tget _groupTabIndex() {\n\t\treturn this._isGroup ? 0 : -1;\n\t}\n\n\tget _overflowButton() {\n\t\treturn this.shadowRoot!.querySelector<Button>(AVATAR_GROUP_OVERFLOW_BTN_SELECTOR);\n\t}\n\n\t/**\n\t * Return the effective overflow button width\n\t * Differences are that when in \"Group\" type the button is offset and overlaps the avatars\n\t *\n\t * 1) In case of \"Group\", (LTR/RTL aware) button width is qual to second item offset left/right\n\t * 2) In case of \"Individual\" group type width is directly taken from button element\n\t * @private\n\t */\n\tget _overflowButtonEffectiveWidth() {\n\t\tconst button = this._customOverflowButton ? this._customOverflowButton : this._overflowButton;\n\t\t// if in \"Group\" mode overflow button size is equal to the offset from second item\n\n\t\tif (!button) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (this._isGroup) {\n\t\t\tlet item: HTMLElement = this.items[1];\n\t\t\tconst ltrEffectiveWidth = item.offsetLeft - this.offsetLeft;\n\n\t\t\t// in some cases when second avatar is overflowed the offset of the button is the right one\n\t\t\tif (!item || item.hidden) {\n\t\t\t\titem = button;\n\t\t\t}\n\n\t\t\treturn this.effectiveDir === \"rtl\" ? this._getWidthToItem(item) : ltrEffectiveWidth;\n\t\t}\n\n\t\treturn button.offsetWidth;\n\t}\n\n\tget firstAvatarSize() {\n\t\treturn this.items[0]?.size ?? AvatarSize.S;\n\t}\n\n\tonAfterRendering() {\n\t\tthis._overflowItems();\n\t}\n\n\tonBeforeRendering() {\n\t\tif (this._customOverflowButton) {\n\t\t\tthis._customOverflowButton.nonInteractive = this._isGroup;\n\t\t}\n\n\t\tthis._prepareAvatars();\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tResizeHandler.register(this, this._onResizeHandler);\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._onResizeHandler);\n\t}\n\n\t_onResize() {\n\t\tthis._overflowItems();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (this._isGroup) {\n\t\t\tif (isEnter(e)) {\n\t\t\t\tthis._fireGroupEvent(e.target as HTMLElement);\n\t\t\t} else if (isSpace(e)) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (!e.shiftKey && isSpace(e) && this._isGroup) {\n\t\t\tthis._fireGroupEvent(e.target as HTMLElement);\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_fireGroupEvent(targetRef: HTMLElement) {\n\t\tconst isOverflowButtonClicked = targetRef.classList.contains(OVERFLOW_BTN_CLASS) || targetRef === this._customOverflowButton;\n\n\t\tthis.fireDecoratorEvent(\"click\", {\n\t\t\ttargetRef,\n\t\t\toverflowButtonClicked: isOverflowButtonClicked,\n\t\t});\n\t}\n\n\t_onClick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t\tthis._isGroup && this._fireGroupEvent(e.target as HTMLElement);\n\t}\n\n\tonAvatarClick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t\tthis.fireDecoratorEvent(\"click\", {\n\t\t\ttargetRef: e.target as HTMLElement,\n\t\t\toverflowButtonClicked: false,\n\t\t});\n\t}\n\n\tonAvatarUI5Click(e: MouseEvent) {\n\t\t// AvatrGroup fires click and ui5-click - Avatar's ui5-click should be stopped.\n\t\te.stopPropagation();\n\t}\n\n\tonOverflowButtonClick(e: UI5CustomEvent<Button, \"click\">) {\n\t\te.stopPropagation();\n\n\t\tthis.fireDecoratorEvent(\"click\", {\n\t\t\ttargetRef: e.target as HTMLElement,\n\t\t\toverflowButtonClicked: true,\n\t\t});\n\t}\n\n\t/**\n\t * Modifies avatars to the needs of avatar group properties. Respects already set size and background color.\n\t * Set the margins (offsets) based on RTL/LTR.\n\t * @private\n\t */\n\t_prepareAvatars() {\n\t\tthis._colorIndex = 0;\n\n\t\tthis.items.forEach((avatar, index) => {\n\t\t\tconst colorIndex = this._getNextBackgroundColor();\n\t\t\tavatar.interactive = !this._isGroup;\n\n\t\t\tif (avatar.getAttribute(\"_color-scheme\") === AvatarColorScheme.Auto) {\n\t\t\t\t// AvatarGroup respects colors set to ui5-avatar\n\t\t\t\tavatar.setAttribute(\"_color-scheme\", AvatarColorScheme[`Accent${colorIndex}` as keyof typeof AvatarColorScheme]);\n\t\t\t}\n\n\t\t\t// last avatar should not be offset as it breaks the container width and focus styles are no set correctly\n\t\t\tif (index !== this._itemsCount - 1 || this._customOverflowButton) {\n\t\t\t\t// based on RTL the browser automatically sets left or right margin to avatars\n\t\t\t\tavatar.style.marginInlineEnd = offsets[avatar.effectiveSize][this.type];\n\t\t\t} else {\n\t\t\t\tavatar.style.marginInlineEnd = \"\";\n\t\t\t}\n\t\t});\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\tthis._itemNavigation.setCurrentItem(e.target as IAvatarGroupItem);\n\t}\n\n\t/**\n\t * Returns the total width to item excluding the item width\n\t * RTL/LTR aware\n\t * @private\n\t * @param item\n\t */\n\t_getWidthToItem(item: HTMLElement) {\n\t\tconst isRTL = this.effectiveDir === \"rtl\";\n\t\tconst ltrWidthToItem = item.offsetLeft - this.offsetLeft;\n\n\t\tif (isRTL) {\n\t\t\tconst itemOffsetParent = item.offsetParent as HTMLElement;\n\n\t\t\t// in RTL the total width is equal to difference of the parent container width and\n\t\t\t// how much is the item offset to the left minus its offsetWidth\n\n\t\t\tif (!itemOffsetParent) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn itemOffsetParent.offsetWidth - item.offsetLeft - item.offsetWidth;\n\t\t}\n\n\t\treturn ltrWidthToItem;\n\t}\n\n\t/**\n\t * Overflows items that were not able to fit the container\n\t * @private\n\t */\n\t_overflowItems() {\n\t\tif (this.items.length < 2) {\n\t\t\t// no need to overflow avatars\n\t\t\tthis._setHiddenItems(0);\n\t\t\treturn;\n\t\t}\n\n\t\tlet hiddenItems = 0;\n\n\t\tfor (let index = 0; index < this._itemsCount; index++) {\n\t\t\tconst item: IAvatarGroupItem = this.items[index];\n\n\t\t\t// show item to determine if it will fit the new container size\n\t\t\titem.hidden = false;\n\n\t\t\t// container width to current item + item width (avatar)\n\t\t\t// used to determine whether the following items will fit the container or not\n\t\t\tlet totalWidth = this._getWidthToItem(item) + item.offsetWidth;\n\n\t\t\tif (index !== this._itemsCount - 1 || this._customOverflowButton) {\n\t\t\t\ttotalWidth += this._overflowButtonEffectiveWidth;\n\t\t\t}\n\n\t\t\tif (totalWidth > this.offsetWidth) {\n\t\t\t\thiddenItems = this._itemsCount - index;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// hide the items that did not fit the container size\n\t\tthis._setHiddenItems(hiddenItems);\n\t}\n\n\t_getNextBackgroundColor() {\n\t\t// counter is to automatically assign background colors to avatars, `Accent10` is the highest color value\n\t\tif (++this._colorIndex > 10) {\n\t\t\tthis._colorIndex = 1;\n\t\t}\n\t\treturn this._colorIndex;\n\t}\n\n\t_setHiddenItems(hiddenItems: number) {\n\t\tconst shouldFireEvent = this._hiddenItems !== hiddenItems;\n\n\t\tthis._hiddenItems = hiddenItems;\n\n\t\tthis.items.forEach((item, index) => {\n\t\t\titem.hidden = index >= this._hiddenStartIndex;\n\t\t});\n\n\t\tthis._overflowButtonText = `+${hiddenItems > 99 ? 99 : hiddenItems}`;\n\n\t\tif (shouldFireEvent) {\n\t\t\tthis.fireDecoratorEvent(\"overflow\");\n\t\t}\n\t}\n\n\t_getAriaHasPopup() {\n\t\treturn this.accessibilityAttributes.hasPopup;\n\t}\n}\n\nAvatarGroup.define();\n\nexport default AvatarGroup;\nexport type {\n\tAvatarGroupClickEventDetail,\n\tAvatarGroupAccessibilityAttributes,\n\tIAvatarGroupItem,\n};\n"]}
1
+ {"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../src/AvatarGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type { AccessibilityAttributes } from \"@ui5/webcomponents-base/dist/types.js\";\n\nimport {\n\tisEnter,\n\tisSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type Button from \"./Button.js\";\nimport AvatarSize from \"./types/AvatarSize.js\";\nimport AvatarGroupType from \"./types/AvatarGroupType.js\";\nimport AvatarColorScheme from \"./types/AvatarColorScheme.js\";\nimport type { IButton } from \"./Button.js\";\n\nimport {\n\tAVATAR_GROUP_DISPLAYED_HIDDEN_LABEL,\n\tAVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL,\n\tAVATAR_GROUP_ARIA_LABEL_INDIVIDUAL,\n\tAVATAR_GROUP_ARIA_LABEL_GROUP,\n\tAVATAR_GROUP_MOVE,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AvatarGroupCss from \"./generated/themes/AvatarGroup.css.js\";\n\n// Template\nimport AvatarGroupTemplate from \"./AvatarGroupTemplate.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\n\n/**\n * Interface for components that represent an avatar and may be slotted in numerous higher-order components such as `ui5-avatar-group`\n * @public\n */\ninterface IAvatarGroupItem extends HTMLElement, ITabbable {\n\teffectiveBackgroundColor: AvatarColorScheme;\n\tsize: `${AvatarSize}`;\n\teffectiveSize: AvatarSize;\n\tinteractive: boolean;\n}\n\nconst OVERFLOW_BTN_CLASS = \"ui5-avatar-group-overflow-btn\";\nconst AVATAR_GROUP_OVERFLOW_BTN_SELECTOR = `.${OVERFLOW_BTN_CLASS}`;\n\n// based on RTL/LTR a margin-left/right is set respectfully\nconst offsets = {\n\t[AvatarSize.XS]: {\n\t\t[AvatarGroupType.Individual]: \"0.0625rem\",\n\t\t[AvatarGroupType.Group]: \"-0.5rem\",\n\t},\n\t[AvatarSize.S]: {\n\t\t[AvatarGroupType.Individual]: \"0.125rem\",\n\t\t[AvatarGroupType.Group]: \"-1.25rem\",\n\t},\n\t[AvatarSize.M]: {\n\t\t[AvatarGroupType.Individual]: \"0.125rem\",\n\t\t[AvatarGroupType.Group]: \"-1.625rem\",\n\t},\n\t[AvatarSize.L]: {\n\t\t[AvatarGroupType.Individual]: \"0.125rem\",\n\t\t[AvatarGroupType.Group]: \" -2rem\",\n\t},\n\t[AvatarSize.XL]: {\n\t\t[AvatarGroupType.Individual]: \"0.25rem\",\n\t\t[AvatarGroupType.Group]: \"-2.75rem\",\n\t},\n};\n\ntype AvatarGroupAccessibilityAttributes = Pick<AccessibilityAttributes, \"hasPopup\">;\n\ntype AvatarGroupClickEventDetail = {\n\ttargetRef: HTMLElement,\n\toverflowButtonClicked: boolean,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * Displays a group of avatars arranged horizontally. It is useful to visually\n * showcase a group of related avatars, such as, project team members or employees.\n *\n * The component allows you to display the avatars in different sizes,\n * depending on your use case.\n *\n * The `AvatarGroup` component has two group types:\n *\n * - `Group` type: The avatars are displayed as partially overlapped on\n * top of each other and the entire group has one click/tap area.\n * - `Individual` type: The avatars are displayed side-by-side and each\n * avatar has its own click/tap area.\n *\n * ### Usage\n *\n * Use the `AvatarGroup` if:\n *\n * - You want to display a group of avatars.\n * - You want to display several avatars which have something in common.\n *\n * Do not use the `AvatarGroup` if:\n *\n * - You want to display a single avatar.\n * - You want to display a gallery for simple images.\n * - You want to use it for other visual content than avatars.\n *\n * ### Responsive Behavior\n *\n * When the available space is less than the width required to display all avatars,\n * an overflow visualization appears as a button placed at the end with the same shape\n * and size as the avatars. The visualization displays the number of avatars that have overflowed\n * and are not currently visible.\n *\n * ### Keyboard Handling\n * The component provides advanced keyboard handling.\n * When focused, the user can use the following keyboard\n * shortcuts in order to perform a navigation:\n *\n * `type` Individual:\n *\n * - [Tab] - Move focus to the overflow button\n * - [Left] - Navigate one avatar to the left\n * - [Right] - Navigate one avatar to the right\n * - [Home] - Navigate to the first avatar\n * - [End] - Navigate to the last avatar\n * - [Space] / [Enter] or [Return] - Trigger `ui5-click` event\n *\n * `type` Group:\n *\n * - [Tab] - Move focus to the next interactive element after the component\n * - [Space] / [Enter] or [Return] - Trigger `ui5-click` event\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.11\n * @public\n */\n\n@customElement({\n\ttag: \"ui5-avatar-group\",\n\trenderer: jsxRenderer,\n\ttemplate: AvatarGroupTemplate,\n\tstyles: AvatarGroupCss,\n})\n/**\n * Fired when the component is activated either with a\n * click/tap or by using the Enter or Space key.\n * @param {HTMLElement} targetRef The DOM ref of the clicked item.\n * @param {boolean} overflowButtonClicked indicates if the overflow button is clicked\n * @public\n * @since 1.0.0-rc.11\n */\n@event(\"click\")\n\n/**\n * Fired when the count of visible `ui5-avatar` elements in the\n * component has changed\n * @public\n * @since 1.0.0-rc.13\n */\n@event(\"overflow\")\nclass AvatarGroup extends UI5Element {\n\teventDetails!: {\n\t\t\"click\": AvatarGroupClickEventDetail\n\t\t\"overflow\": void\n\t}\n\t/**\n\t * Defines the mode of the `AvatarGroup`.\n\t * @default \"Group\"\n\t * @public\n\t */\n\t@property()\n\ttype: `${AvatarGroupType}` = \"Group\"\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following field is supported:\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * @public\n\t * @since 2.0.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: AvatarGroupAccessibilityAttributes = {};\n\n\t/**\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_overflowButtonText?: string;\n\n\t/**\n \t* Defines the accessible name of the AvatarGroup.\n \t* When provided, this will override the default aria-label text.\n \t* @default undefined\n \t* @public\n \t* @since 2.12.0\n \t*/\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n \t* Receives id(s) of the elements that describe the AvatarGroup.\n \t* When provided, this will be used as aria-labelledby instead of aria-label.\n \t* @default undefined\n \t* @public\n \t* @since 2.12.0\n \t*/\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the items of the component. Use the `ui5-avatar` component as an item.\n\t *\n\t * **Note:** The UX guidelines recommends using avatars with \"Circle\" shape.\n\t *\n\t * Moreover, if you use avatars with \"Square\" shape, there will be visual inconsistency\n\t * as the built-in overflow action has \"Circle\" shape.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\titems!: Array<IAvatarGroupItem>;\n\n\t/**\n\t * Defines the overflow button of the component.\n\t *\n\t * **Note:** We recommend using the `ui5-button` component.\n\t *\n\t * **Note:** If this slot is not used, the component will display the built-in overflow button.\n\t * @public\n\t * @since 1.0.0-rc.13\n\t */\n\t@slot()\n\toverflowButton!: Array<IButton>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\t_onResizeHandler: () => void;\n\t_colorIndex = 0;\n\t_hiddenItems = 0;\n\t_itemNavigation: ItemNavigation;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._itemNavigation = new ItemNavigation(this, {\n\t\t\tgetItemsCallback: () => {\n\t\t\t\treturn this._isGroup ? [] : this.items.slice(0, this._hiddenStartIndex);\n\t\t\t},\n\t\t});\n\t\tthis._onResizeHandler = this._onResize.bind(this);\n\t}\n\n\t/**\n\t * Returns an array containing the `ui5-avatar` instances that are currently not displayed due to lack of space.\n\t * @default []\n\t * @public\n\t */\n\tget hiddenItems(): IAvatarGroupItem[] {\n\t\treturn this.items.slice(this._hiddenStartIndex);\n\t}\n\n\t/**\n\t * Returns an array containing the `AvatarColorScheme` values that correspond to the avatars in the component.\n\t * @default []\n\t * @public\n\t */\n\tget colorScheme(): AvatarColorScheme[] {\n\t\treturn this.items.map(avatar => avatar.effectiveBackgroundColor);\n\t}\n\n\tget _customOverflowButton() {\n\t\treturn this.overflowButton.length ? this.overflowButton[0] : undefined;\n\t}\n\n\tget _ariaLabelText() {\n\t\tif (this.accessibleName || this.accessibleNameRef) {\n\t\t\treturn getEffectiveAriaLabelText(this);\n\t\t}\n\t\t// Fallback to existing default behavior\n\t\tconst hiddenItemsCount = this.hiddenItems.length;\n\t\tconst typeLabelKey = this._isGroup ? AVATAR_GROUP_ARIA_LABEL_GROUP : AVATAR_GROUP_ARIA_LABEL_INDIVIDUAL;\n\n\t\t// avatar type label\n\t\tlet text = AvatarGroup.i18nBundle.getText(typeLabelKey);\n\n\t\t// add displayed-hidden avatars label\n\t\ttext += ` ${AvatarGroup.i18nBundle.getText(AVATAR_GROUP_DISPLAYED_HIDDEN_LABEL, this._itemsCount - hiddenItemsCount, hiddenItemsCount)}`;\n\n\t\tif (this._isGroup) {\n\t\t\t// the container role is \"button\", add the message for complete list activation\n\t\t\ttext += ` ${AvatarGroup.i18nBundle.getText(AVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL)}`;\n\t\t} else {\n\t\t\t// the container role is \"group\", add the \"how to navigate\" message\n\t\t\ttext += ` ${AvatarGroup.i18nBundle.getText(AVATAR_GROUP_MOVE)}`;\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tget _overflowButtonAriaLabelText() {\n\t\treturn this._isGroup ? undefined : AvatarGroup.i18nBundle.getText(AVATAR_GROUP_SHOW_COMPLETE_LIST_LABEL);\n\t}\n\n\tget _containerAriaHasPopup() {\n\t\treturn this._isGroup ? this._getAriaHasPopup() : undefined;\n\t}\n\n\tget _overflowButtonAccAttributes() {\n\t\treturn {\n\t\t\thasPopup: this._isGroup ? undefined : this._getAriaHasPopup(),\n\t\t};\n\t}\n\n\tget _role() {\n\t\treturn this._isGroup ? \"button\" : \"group\";\n\t}\n\n\tget _hiddenStartIndex() {\n\t\treturn this._itemsCount - this._hiddenItems;\n\t}\n\n\tget _overflowBtnHidden() {\n\t\treturn this._hiddenItems === 0;\n\t}\n\n\tget _isGroup() {\n\t\treturn this.type === AvatarGroupType.Group;\n\t}\n\n\tget _itemsCount() {\n\t\treturn this.items.length;\n\t}\n\n\tget _groupTabIndex() {\n\t\treturn this._isGroup ? 0 : -1;\n\t}\n\n\tget _overflowButton() {\n\t\treturn this.shadowRoot!.querySelector<Button>(AVATAR_GROUP_OVERFLOW_BTN_SELECTOR);\n\t}\n\n\t/**\n\t * Return the effective overflow button width\n\t * Differences are that when in \"Group\" type the button is offset and overlaps the avatars\n\t *\n\t * 1) In case of \"Group\", (LTR/RTL aware) button width is qual to second item offset left/right\n\t * 2) In case of \"Individual\" group type width is directly taken from button element\n\t * @private\n\t */\n\tget _overflowButtonEffectiveWidth() {\n\t\tconst button = this._customOverflowButton ? this._customOverflowButton : this._overflowButton;\n\t\t// if in \"Group\" mode overflow button size is equal to the offset from second item\n\n\t\tif (!button) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (this._isGroup) {\n\t\t\tlet item: HTMLElement = this.items[1];\n\t\t\tconst ltrEffectiveWidth = item.offsetLeft - this.offsetLeft;\n\n\t\t\t// in some cases when second avatar is overflowed the offset of the button is the right one\n\t\t\tif (!item || item.hidden) {\n\t\t\t\titem = button;\n\t\t\t}\n\n\t\t\treturn this.effectiveDir === \"rtl\" ? this._getWidthToItem(item) : ltrEffectiveWidth;\n\t\t}\n\n\t\treturn button.offsetWidth;\n\t}\n\n\tget firstAvatarSize() {\n\t\treturn this.items[0]?.size ?? AvatarSize.S;\n\t}\n\n\tonAfterRendering() {\n\t\tthis._overflowItems();\n\t}\n\n\tonBeforeRendering() {\n\t\tif (this._customOverflowButton) {\n\t\t\tthis._customOverflowButton.nonInteractive = this._isGroup;\n\t\t}\n\n\t\tthis._prepareAvatars();\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tResizeHandler.register(this, this._onResizeHandler);\n\t}\n\n\tonExitDOM() {\n\t\tResizeHandler.deregister(this, this._onResizeHandler);\n\t}\n\n\t_onResize() {\n\t\tthis._overflowItems();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (this._isGroup) {\n\t\t\tif (isEnter(e)) {\n\t\t\t\tthis._fireGroupEvent(e.target as HTMLElement);\n\t\t\t} else if (isSpace(e)) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (!e.shiftKey && isSpace(e) && this._isGroup) {\n\t\t\tthis._fireGroupEvent(e.target as HTMLElement);\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_fireGroupEvent(targetRef: HTMLElement) {\n\t\tconst isOverflowButtonClicked = targetRef.classList.contains(OVERFLOW_BTN_CLASS) || targetRef === this._customOverflowButton;\n\n\t\tthis.fireDecoratorEvent(\"click\", {\n\t\t\ttargetRef,\n\t\t\toverflowButtonClicked: isOverflowButtonClicked,\n\t\t});\n\t}\n\n\t_onClick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t\tthis._isGroup && this._fireGroupEvent(e.target as HTMLElement);\n\t}\n\n\tonAvatarClick(e: MouseEvent) {\n\t\te.stopPropagation();\n\t\tthis.fireDecoratorEvent(\"click\", {\n\t\t\ttargetRef: e.target as HTMLElement,\n\t\t\toverflowButtonClicked: false,\n\t\t});\n\t}\n\n\tonAvatarUI5Click(e: MouseEvent) {\n\t\t// AvatrGroup fires click and ui5-click - Avatar's ui5-click should be stopped.\n\t\te.stopPropagation();\n\t}\n\n\tonOverflowButtonClick(e: UI5CustomEvent<Button, \"click\">) {\n\t\te.stopPropagation();\n\n\t\tthis.fireDecoratorEvent(\"click\", {\n\t\t\ttargetRef: e.target as HTMLElement,\n\t\t\toverflowButtonClicked: true,\n\t\t});\n\t}\n\n\t/**\n\t * Modifies avatars to the needs of avatar group properties. Respects already set size and background color.\n\t * Set the margins (offsets) based on RTL/LTR.\n\t * @private\n\t */\n\t_prepareAvatars() {\n\t\tthis._colorIndex = 0;\n\n\t\tthis.items.forEach((avatar, index) => {\n\t\t\tconst colorIndex = this._getNextBackgroundColor();\n\t\t\tavatar.interactive = !this._isGroup;\n\n\t\t\tif (avatar.getAttribute(\"_color-scheme\") === AvatarColorScheme.Auto) {\n\t\t\t\t// AvatarGroup respects colors set to ui5-avatar\n\t\t\t\tavatar.setAttribute(\"_color-scheme\", AvatarColorScheme[`Accent${colorIndex}` as keyof typeof AvatarColorScheme]);\n\t\t\t}\n\n\t\t\t// last avatar should not be offset as it breaks the container width and focus styles are no set correctly\n\t\t\tif (index !== this._itemsCount - 1 || this._customOverflowButton) {\n\t\t\t\t// based on RTL the browser automatically sets left or right margin to avatars\n\t\t\t\tavatar.style.marginInlineEnd = offsets[avatar.effectiveSize][this.type];\n\t\t\t} else {\n\t\t\t\tavatar.style.marginInlineEnd = \"\";\n\t\t\t}\n\t\t});\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\tthis._itemNavigation.setCurrentItem(e.target as IAvatarGroupItem);\n\t}\n\n\t/**\n\t * Returns the total width to item excluding the item width\n\t * RTL/LTR aware\n\t * @private\n\t * @param item\n\t */\n\t_getWidthToItem(item: HTMLElement) {\n\t\tconst isRTL = this.effectiveDir === \"rtl\";\n\t\tconst ltrWidthToItem = item.offsetLeft - this.offsetLeft;\n\n\t\tif (isRTL) {\n\t\t\tconst itemOffsetParent = item.offsetParent as HTMLElement;\n\n\t\t\t// in RTL the total width is equal to difference of the parent container width and\n\t\t\t// how much is the item offset to the left minus its offsetWidth\n\n\t\t\tif (!itemOffsetParent) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn itemOffsetParent.offsetWidth - item.offsetLeft - item.offsetWidth;\n\t\t}\n\n\t\treturn ltrWidthToItem;\n\t}\n\n\t/**\n\t * Overflows items that were not able to fit the container\n\t * @private\n\t */\n\t_overflowItems() {\n\t\tif (this.items.length < 2) {\n\t\t\t// no need to overflow avatars\n\t\t\tthis._setHiddenItems(0);\n\t\t\treturn;\n\t\t}\n\n\t\tlet hiddenItems = 0;\n\n\t\tfor (let index = 0; index < this._itemsCount; index++) {\n\t\t\tconst item: IAvatarGroupItem = this.items[index];\n\n\t\t\t// show item to determine if it will fit the new container size\n\t\t\titem.hidden = false;\n\n\t\t\t// container width to current item + item width (avatar)\n\t\t\t// used to determine whether the following items will fit the container or not\n\t\t\tlet totalWidth = this._getWidthToItem(item) + item.offsetWidth;\n\n\t\t\tif (index !== this._itemsCount - 1 || this._customOverflowButton) {\n\t\t\t\ttotalWidth += this._overflowButtonEffectiveWidth;\n\t\t\t}\n\n\t\t\tif (totalWidth > this.offsetWidth) {\n\t\t\t\thiddenItems = this._itemsCount - index;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// hide the items that did not fit the container size\n\t\tthis._setHiddenItems(hiddenItems);\n\t}\n\n\t_getNextBackgroundColor() {\n\t\t// counter is to automatically assign background colors to avatars, `Accent10` is the highest color value\n\t\tif (++this._colorIndex > 10) {\n\t\t\tthis._colorIndex = 1;\n\t\t}\n\t\treturn this._colorIndex;\n\t}\n\n\t_setHiddenItems(hiddenItems: number) {\n\t\tconst shouldFireEvent = this._hiddenItems !== hiddenItems;\n\n\t\tthis._hiddenItems = hiddenItems;\n\n\t\tthis.items.forEach((item, index) => {\n\t\t\titem.hidden = index >= this._hiddenStartIndex;\n\t\t});\n\n\t\tthis._overflowButtonText = `+${hiddenItems > 99 ? 99 : hiddenItems}`;\n\n\t\tif (shouldFireEvent) {\n\t\t\tthis.fireDecoratorEvent(\"overflow\");\n\t\t}\n\t}\n\n\t_getAriaHasPopup() {\n\t\treturn this.accessibilityAttributes.hasPopup;\n\t}\n}\n\nAvatarGroup.define();\n\nexport default AvatarGroup;\nexport type {\n\tAvatarGroupClickEventDetail,\n\tAvatarGroupAccessibilityAttributes,\n\tIAvatarGroupItem,\n};\n"]}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
2
2
  import Icon from "./Icon.js";
3
3
  export default function AvatarTemplate() {
4
- return (_jsxs("div", { class: "ui5-avatar-root", tabindex: this.tabindex, "data-sap-focus-ref": true, role: this._role, "aria-haspopup": this._ariaHasPopup, "aria-label": this.accessibleNameText, onKeyUp: this._onkeyup, onKeyDown: this._onkeydown, onClick: this._onclick, children: [this.hasImage ?
4
+ return (_jsxs("div", { class: "ui5-avatar-root", tabindex: this.tabindex, "data-sap-focus-ref": true, role: this._role, "aria-haspopup": this._ariaHasPopup, "aria-label": this.accessibleNameText, onKeyUp: this._onkeyup, onKeyDown: this._onkeydown, onClick: this._onclick, children: [this._hasImage ?
5
5
  _jsx("slot", {})
6
- :
7
- _jsxs(_Fragment, { children: [this.icon && _jsx(Icon, { class: "ui5-avatar-icon", name: this.icon, accessibleName: this.accessibleName }), this.initials &&
8
- _jsxs(_Fragment, { children: [_jsx("span", { class: "ui5-avatar-initials ui5-avatar-initials-hidden", children: this.validInitials }), _jsx(Icon, { name: this.fallbackIcon, class: "ui5-avatar-icon ui5-avatar-icon-fallback ui5-avatar-fallback-icon-hidden" })] })] }), _jsx("slot", { name: "badge" })] }));
6
+ : _jsxs(_Fragment, { children: [this.icon && _jsx(Icon, { class: "ui5-avatar-icon", name: this.icon, accessibleName: this.accessibleName }), this.initials ? (_jsxs(_Fragment, { children: [_jsx("span", { class: "ui5-avatar-initials ui5-avatar-initials-hidden", children: this.validInitials }), _jsx(Icon, { name: this.fallbackIcon, class: "ui5-avatar-icon ui5-avatar-icon-fallback ui5-avatar-fallback-icon-hidden" })] })) : (
7
+ // Show fallback icon only
8
+ _jsx(Icon, { name: this.fallbackIcon, class: "ui5-avatar-icon ui5-avatar-icon-fallback" }))] }), _jsx("slot", { name: "badge" })] }));
9
9
  }
10
10
  //# sourceMappingURL=AvatarTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarTemplate.js","sourceRoot":"","sources":["../src/AvatarTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,OAAO,UAAU,cAAc;IACrC,OAAO,CACN,eACC,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,8BAEvB,IAAI,EAAE,IAAI,CAAC,KAAK,mBACD,IAAI,CAAC,aAAa,gBACrB,IAAI,CAAC,kBAAkB,EACnC,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,aAErB,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACf,gBAAa;gBACb,CAAC;oBACD,8BACG,IAAI,CAAC,IAAI,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,GAAS,EAExG,IAAI,CAAC,QAAQ;gCACf,8BACC,eAAM,KAAK,EAAC,gDAAgD,YAAE,IAAI,CAAC,aAAa,GAAQ,EACxF,KAAC,IAAI,IACJ,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,KAAK,EAAC,0EAA0E,GACzE,IACN,IAED,EAGJ,eAAM,IAAI,EAAC,OAAO,GAAQ,IACrB,CACN,CAAC;AACH,CAAC","sourcesContent":["import type Avatar from \"./Avatar.js\";\nimport Icon from \"./Icon.js\";\n\nexport default function AvatarTemplate(this: Avatar) {\n\treturn (\n\t\t<div\n\t\t\tclass=\"ui5-avatar-root\"\n\t\t\ttabindex={this.tabindex}\n\t\t\tdata-sap-focus-ref\n\t\t\trole={this._role}\n\t\t\taria-haspopup={this._ariaHasPopup}\n\t\t\taria-label={this.accessibleNameText}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t{this.hasImage ?\n\t\t\t\t<slot></slot>\n\t\t\t\t:\n\t\t\t\t<>\n\t\t\t\t\t{ this.icon && <Icon class=\"ui5-avatar-icon\" name={this.icon} accessibleName={this.accessibleName}></Icon> }\n\n\t\t\t\t\t{ this.initials &&\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span class=\"ui5-avatar-initials ui5-avatar-initials-hidden\">{this.validInitials}</span>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={this.fallbackIcon}\n\t\t\t\t\t\t\tclass=\"ui5-avatar-icon ui5-avatar-icon-fallback ui5-avatar-fallback-icon-hidden\"\n\t\t\t\t\t\t></Icon>\n\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t</>\n\t\t\t}\n\n\t\t\t<slot name=\"badge\"></slot>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"file":"AvatarTemplate.js","sourceRoot":"","sources":["../src/AvatarTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,OAAO,UAAU,cAAc;IACrC,OAAO,CACN,eACC,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,8BAEvB,IAAI,EAAE,IAAI,CAAC,KAAK,mBACD,IAAI,CAAC,aAAa,gBACrB,IAAI,CAAC,kBAAkB,EACnC,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,aAErB,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChB,gBAAa;gBACb,CAAC,CAAC,8BACA,IAAI,CAAC,IAAI,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,GAAS,EAExG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChB,8BAEC,eAAM,KAAK,EAAC,gDAAgD,YAAE,IAAI,CAAC,aAAa,GAAQ,EACxF,KAAC,IAAI,IACJ,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,KAAK,EAAC,0EAA0E,GACzE,IACN,CACH,CAAC,CAAC,CAAC;wBACH,0BAA0B;wBAC1B,KAAC,IAAI,IACJ,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,KAAK,EAAC,0CAA0C,GACzC,CACR,IACC,EAGJ,eAAM,IAAI,EAAC,OAAO,GAAQ,IACrB,CACN,CAAC;AACH,CAAC","sourcesContent":["import type Avatar from \"./Avatar.js\";\nimport Icon from \"./Icon.js\";\n\nexport default function AvatarTemplate(this: Avatar) {\n\treturn (\n\t\t<div\n\t\t\tclass=\"ui5-avatar-root\"\n\t\t\ttabindex={this.tabindex}\n\t\t\tdata-sap-focus-ref\n\t\t\trole={this._role}\n\t\t\taria-haspopup={this._ariaHasPopup}\n\t\t\taria-label={this.accessibleNameText}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t{this._hasImage ?\n\t\t\t\t<slot></slot>\n\t\t\t\t: <>\n\t\t\t\t\t{this.icon && <Icon class=\"ui5-avatar-icon\" name={this.icon} accessibleName={this.accessibleName}></Icon>}\n\n\t\t\t\t\t{this.initials ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{/* Show initials + hidden fallback icon */}\n\t\t\t\t\t\t\t<span class=\"ui5-avatar-initials ui5-avatar-initials-hidden\">{this.validInitials}</span>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname={this.fallbackIcon}\n\t\t\t\t\t\t\t\tclass=\"ui5-avatar-icon ui5-avatar-icon-fallback ui5-avatar-fallback-icon-hidden\"\n\t\t\t\t\t\t\t></Icon>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t// Show fallback icon only\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={this.fallbackIcon}\n\t\t\t\t\t\t\tclass=\"ui5-avatar-icon ui5-avatar-icon-fallback\"\n\t\t\t\t\t\t></Icon>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t}\n\n\t\t\t<slot name=\"badge\"></slot>\n\t\t</div>\n\t);\n}\n"]}
@@ -93,6 +93,7 @@ declare class BusyIndicator extends UI5Element {
93
93
  top: boolean | "" | undefined;
94
94
  bottom: boolean | "" | undefined;
95
95
  };
96
+ get hasContent(): boolean;
96
97
  onBeforeRendering(): void;
97
98
  _handleKeydown(e: KeyboardEvent): void;
98
99
  _preventEvent(e: KeyboardEvent): void;
@@ -12,6 +12,7 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
12
12
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
13
13
  import { isTabNext } from "@ui5/webcomponents-base/dist/Keys.js";
14
14
  import { isDesktop, } from "@ui5/webcomponents-base/dist/Device.js";
15
+ import willShowContent from "@ui5/webcomponents-base/dist/util/willShowContent.js";
15
16
  import BusyIndicatorTextPlacement from "./types/BusyIndicatorTextPlacement.js";
16
17
  // Template
17
18
  import BusyIndicatorTemplate from "./BusyIndicatorTemplate.js";
@@ -123,6 +124,9 @@ let BusyIndicator = BusyIndicator_1 = class BusyIndicator extends UI5Element {
123
124
  bottom: this.text && this.textPlacement === BusyIndicatorTextPlacement.Bottom,
124
125
  };
125
126
  }
127
+ get hasContent() {
128
+ return willShowContent(Array.from(this.children));
129
+ }
126
130
  onBeforeRendering() {
127
131
  if (this.active) {
128
132
  if (!this._isBusy && !this._busyTimeoutId) {
@@ -1 +1 @@
1
- {"version":3,"file":"BusyIndicator.js","sourceRoot":"","sources":["../src/BusyIndicator.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isTabNext } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport {\n\tisDesktop,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type BusyIndicatorSize from \"./types/BusyIndicatorSize.js\";\nimport BusyIndicatorTextPlacement from \"./types/BusyIndicatorTextPlacement.js\";\n\n// Template\nimport BusyIndicatorTemplate from \"./BusyIndicatorTemplate.js\";\n\nimport { BUSY_INDICATOR_TITLE } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport busyIndicatorCss from \"./generated/themes/BusyIndicator.css.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-busy-indicator` signals that some operation is going on and that the\n * user must wait. It does not block the current UI screen so other operations could be triggered in parallel.\n * It displays 3 dots and each dot expands and shrinks at a different rate, resulting in a cascading flow of animation.\n *\n * ### Usage\n * For the `ui5-busy-indicator` you can define the size, the text and whether it is shown or hidden.\n * In order to hide it, use the \"active\" property.\n *\n * In order to show busy state over an HTML element, simply nest the HTML element in a `ui5-busy-indicator` instance.\n *\n * **Note:** Since `ui5-busy-indicator` has `display: inline-block;` by default and no width of its own,\n * whenever you need to wrap a block-level element, you should set `display: block` to the busy indicator as well.\n *\n * #### When to use:\n *\n * - The user needs to be able to cancel the operation.\n * - Only part of the application or a particular component is affected.\n *\n * #### When not to use:\n *\n * - The operation takes less than one second.\n * - You need to block the screen and prevent the user from starting another activity.\n * - Do not show multiple busy indicators at once.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/BusyIndicator.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @slot {Array<Node>} default - Determines the content over which the component will appear.\n * @since 0.12.0\n */\n@customElement({\n\ttag: \"ui5-busy-indicator\",\n\tlanguageAware: true,\n\tstyles: busyIndicatorCss,\n\trenderer: jsxRenderer,\n\ttemplate: BusyIndicatorTemplate,\n})\nclass BusyIndicator extends UI5Element {\n\t/**\n\t * Defines text to be displayed below the component. It can be used to inform the user of the current operation.\n\t * @public\n\t * @default undefined\n\t * @since 1.0.0-rc.7\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the size of the component.\n\t * @default \"M\"\n\t * @public\n\t */\n\t@property()\n\tsize: `${BusyIndicatorSize}` = \"M\";\n\n\t/**\n\t * Defines if the busy indicator is visible on the screen. By default it is not.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the busy indicator will be visible on the screen.\n\t * @default 1000\n\t * @public\n\t */\n\t@property({ type: Number })\n\tdelay = 1000;\n\n\t/**\n\t * Defines the placement of the text.\n\t *\n\t * @default \"Bottom\"\n\t * @public\n\t */\n\t@property()\n\ttextPlacement: `${BusyIndicatorTextPlacement}` = \"Bottom\";\n\n\t/**\n\t * Defines if the component is currently in busy state.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_isBusy = false;\n\n\t_keydownHandler: (e: KeyboardEvent) => void;\n\t_preventEventHandler: (e: KeyboardEvent) => void;\n\t_busyTimeoutId?: Timeout;\n\tfocusForward?: boolean;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._keydownHandler = this._handleKeydown.bind(this);\n\t\tthis._preventEventHandler = this._preventEvent.bind(this);\n\t}\n\n\tonEnterDOM() {\n\t\tthis.addEventListener(\"keydown\", this._keydownHandler, {\n\t\t\tcapture: true,\n\t\t});\n\t\tthis.addEventListener(\"keyup\", this._preventEventHandler, {\n\t\t\tcapture: true,\n\t\t});\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tonExitDOM() {\n\t\tif (this._busyTimeoutId) {\n\t\t\tclearTimeout(this._busyTimeoutId);\n\t\t\tdelete this._busyTimeoutId;\n\t\t}\n\n\t\tthis.removeEventListener(\"keydown\", this._keydownHandler, true);\n\t\tthis.removeEventListener(\"keyup\", this._preventEventHandler, true);\n\t}\n\n\tget ariaTitle() {\n\t\treturn BusyIndicator.i18nBundle.getText(BUSY_INDICATOR_TITLE);\n\t}\n\n\tget labelId() {\n\t\treturn this.text ? `${this._id}-label` : undefined;\n\t}\n\n\tget textPosition() {\n\t\treturn {\n\t\t\ttop: this.text && this.textPlacement === BusyIndicatorTextPlacement.Top,\n\t\t\tbottom: this.text && this.textPlacement === BusyIndicatorTextPlacement.Bottom,\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tif (this.active) {\n\t\t\tif (!this._isBusy && !this._busyTimeoutId) {\n\t\t\t\tthis._busyTimeoutId = setTimeout(() => {\n\t\t\t\t\tdelete this._busyTimeoutId;\n\t\t\t\t\tthis._isBusy = true;\n\t\t\t\t}, Math.max(0, this.delay));\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._busyTimeoutId) {\n\t\t\t\tclearTimeout(this._busyTimeoutId);\n\t\t\t\tdelete this._busyTimeoutId;\n\t\t\t}\n\t\t\tthis._isBusy = false;\n\t\t}\n\t}\n\n\t_handleKeydown(e: KeyboardEvent) {\n\t\tif (!this._isBusy) {\n\t\t\treturn;\n\t\t}\n\n\t\te.stopImmediatePropagation();\n\n\t\t// move the focus to the last element in this DOM and let TAB continue to the next focusable element\n\t\tif (isTabNext(e)) {\n\t\t\tthis.focusForward = true;\n\t\t\tthis.shadowRoot!.querySelector<HTMLElement>(\"[data-ui5-focus-redirect]\")!.focus();\n\t\t\tthis.focusForward = false;\n\t\t}\n\t}\n\n\t_preventEvent(e: KeyboardEvent) {\n\t\tif (this._isBusy) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\n\t/**\n\t * Moves the focus to busy area when coming with SHIFT + TAB\n\t */\n\t_redirectFocus(e: FocusEvent) {\n\t\tif (this.focusForward) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\t\tthis.shadowRoot!.querySelector<HTMLElement>(\".ui5-busy-indicator-busy-area\")!.focus();\n\t}\n}\n\nBusyIndicator.define();\n\nexport default BusyIndicator;\n"]}
1
+ {"version":3,"file":"BusyIndicator.js","sourceRoot":"","sources":["../src/BusyIndicator.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isTabNext } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport {\n\tisDesktop,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport type BusyIndicatorSize from \"./types/BusyIndicatorSize.js\";\nimport BusyIndicatorTextPlacement from \"./types/BusyIndicatorTextPlacement.js\";\n\n// Template\nimport BusyIndicatorTemplate from \"./BusyIndicatorTemplate.js\";\n\nimport { BUSY_INDICATOR_TITLE } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport busyIndicatorCss from \"./generated/themes/BusyIndicator.css.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-busy-indicator` signals that some operation is going on and that the\n * user must wait. It does not block the current UI screen so other operations could be triggered in parallel.\n * It displays 3 dots and each dot expands and shrinks at a different rate, resulting in a cascading flow of animation.\n *\n * ### Usage\n * For the `ui5-busy-indicator` you can define the size, the text and whether it is shown or hidden.\n * In order to hide it, use the \"active\" property.\n *\n * In order to show busy state over an HTML element, simply nest the HTML element in a `ui5-busy-indicator` instance.\n *\n * **Note:** Since `ui5-busy-indicator` has `display: inline-block;` by default and no width of its own,\n * whenever you need to wrap a block-level element, you should set `display: block` to the busy indicator as well.\n *\n * #### When to use:\n *\n * - The user needs to be able to cancel the operation.\n * - Only part of the application or a particular component is affected.\n *\n * #### When not to use:\n *\n * - The operation takes less than one second.\n * - You need to block the screen and prevent the user from starting another activity.\n * - Do not show multiple busy indicators at once.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/BusyIndicator.js\";`\n * @constructor\n * @extends UI5Element\n * @public\n * @slot {Array<Node>} default - Determines the content over which the component will appear.\n * @since 0.12.0\n */\n@customElement({\n\ttag: \"ui5-busy-indicator\",\n\tlanguageAware: true,\n\tstyles: busyIndicatorCss,\n\trenderer: jsxRenderer,\n\ttemplate: BusyIndicatorTemplate,\n})\nclass BusyIndicator extends UI5Element {\n\t/**\n\t * Defines text to be displayed below the component. It can be used to inform the user of the current operation.\n\t * @public\n\t * @default undefined\n\t * @since 1.0.0-rc.7\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the size of the component.\n\t * @default \"M\"\n\t * @public\n\t */\n\t@property()\n\tsize: `${BusyIndicatorSize}` = \"M\";\n\n\t/**\n\t * Defines if the busy indicator is visible on the screen. By default it is not.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the busy indicator will be visible on the screen.\n\t * @default 1000\n\t * @public\n\t */\n\t@property({ type: Number })\n\tdelay = 1000;\n\n\t/**\n\t * Defines the placement of the text.\n\t *\n\t * @default \"Bottom\"\n\t * @public\n\t */\n\t@property()\n\ttextPlacement: `${BusyIndicatorTextPlacement}` = \"Bottom\";\n\n\t/**\n\t * Defines if the component is currently in busy state.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_isBusy = false;\n\n\t_keydownHandler: (e: KeyboardEvent) => void;\n\t_preventEventHandler: (e: KeyboardEvent) => void;\n\t_busyTimeoutId?: Timeout;\n\tfocusForward?: boolean;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._keydownHandler = this._handleKeydown.bind(this);\n\t\tthis._preventEventHandler = this._preventEvent.bind(this);\n\t}\n\n\tonEnterDOM() {\n\t\tthis.addEventListener(\"keydown\", this._keydownHandler, {\n\t\t\tcapture: true,\n\t\t});\n\t\tthis.addEventListener(\"keyup\", this._preventEventHandler, {\n\t\t\tcapture: true,\n\t\t});\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tonExitDOM() {\n\t\tif (this._busyTimeoutId) {\n\t\t\tclearTimeout(this._busyTimeoutId);\n\t\t\tdelete this._busyTimeoutId;\n\t\t}\n\n\t\tthis.removeEventListener(\"keydown\", this._keydownHandler, true);\n\t\tthis.removeEventListener(\"keyup\", this._preventEventHandler, true);\n\t}\n\n\tget ariaTitle() {\n\t\treturn BusyIndicator.i18nBundle.getText(BUSY_INDICATOR_TITLE);\n\t}\n\n\tget labelId() {\n\t\treturn this.text ? `${this._id}-label` : undefined;\n\t}\n\n\tget textPosition() {\n\t\treturn {\n\t\t\ttop: this.text && this.textPlacement === BusyIndicatorTextPlacement.Top,\n\t\t\tbottom: this.text && this.textPlacement === BusyIndicatorTextPlacement.Bottom,\n\t\t};\n\t}\n\n\tget hasContent() {\n\t\treturn willShowContent(Array.from(this.children));\n\t}\n\n\tonBeforeRendering() {\n\t\tif (this.active) {\n\t\t\tif (!this._isBusy && !this._busyTimeoutId) {\n\t\t\t\tthis._busyTimeoutId = setTimeout(() => {\n\t\t\t\t\tdelete this._busyTimeoutId;\n\t\t\t\t\tthis._isBusy = true;\n\t\t\t\t}, Math.max(0, this.delay));\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._busyTimeoutId) {\n\t\t\t\tclearTimeout(this._busyTimeoutId);\n\t\t\t\tdelete this._busyTimeoutId;\n\t\t\t}\n\t\t\tthis._isBusy = false;\n\t\t}\n\t}\n\n\t_handleKeydown(e: KeyboardEvent) {\n\t\tif (!this._isBusy) {\n\t\t\treturn;\n\t\t}\n\n\t\te.stopImmediatePropagation();\n\n\t\t// move the focus to the last element in this DOM and let TAB continue to the next focusable element\n\t\tif (isTabNext(e)) {\n\t\t\tthis.focusForward = true;\n\t\t\tthis.shadowRoot!.querySelector<HTMLElement>(\"[data-ui5-focus-redirect]\")!.focus();\n\t\t\tthis.focusForward = false;\n\t\t}\n\t}\n\n\t_preventEvent(e: KeyboardEvent) {\n\t\tif (this._isBusy) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\n\t/**\n\t * Moves the focus to busy area when coming with SHIFT + TAB\n\t */\n\t_redirectFocus(e: FocusEvent) {\n\t\tif (this.focusForward) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\t\tthis.shadowRoot!.querySelector<HTMLElement>(\".ui5-busy-indicator-busy-area\")!.focus();\n\t}\n}\n\nBusyIndicator.define();\n\nexport default BusyIndicator;\n"]}
@@ -1,7 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ui5/webcomponents-base/jsx-runtime";
2
2
  import Label from "./Label.js";
3
3
  export default function BusyIndicatorTemplate() {
4
- return (_jsxs("div", { class: "ui5-busy-indicator-root", children: [this._isBusy && (_jsxs("div", { class: "ui5-busy-indicator-busy-area", title: this.ariaTitle, tabindex: 0, role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": "Busy", "aria-labelledby": this.labelId, "data-sap-focus-ref": true, children: [this.textPosition.top && BusyIndicatorBusyText.call(this), _jsxs("div", { class: "ui5-busy-indicator-circles-wrapper", children: [_jsx("div", { class: "ui5-busy-indicator-circle circle-animation-0" }), _jsx("div", { class: "ui5-busy-indicator-circle circle-animation-1" }), _jsx("div", { class: "ui5-busy-indicator-circle circle-animation-2" })] }), this.textPosition.bottom && BusyIndicatorBusyText.call(this)] })), _jsx("slot", {}), this._isBusy && (_jsx("span", { "data-ui5-focus-redirect": true, tabindex: 0, role: "none", onFocusIn: this._redirectFocus }))] }));
4
+ return (_jsxs("div", { class: "ui5-busy-indicator-root", children: [this._isBusy && (_jsxs("div", { class: {
5
+ "ui5-busy-indicator-busy-area": true,
6
+ "ui5-busy-indicator-busy-area-over-content": this.hasContent,
7
+ }, title: this.ariaTitle, tabindex: 0, role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": "Busy", "aria-labelledby": this.labelId, "data-sap-focus-ref": true, children: [this.textPosition.top && BusyIndicatorBusyText.call(this), _jsxs("div", { class: "ui5-busy-indicator-circles-wrapper", children: [_jsx("div", { class: "ui5-busy-indicator-circle circle-animation-0" }), _jsx("div", { class: "ui5-busy-indicator-circle circle-animation-1" }), _jsx("div", { class: "ui5-busy-indicator-circle circle-animation-2" })] }), this.textPosition.bottom && BusyIndicatorBusyText.call(this)] })), _jsx("slot", {}), this._isBusy && (_jsx("span", { "data-ui5-focus-redirect": true, tabindex: 0, role: "none", onFocusIn: this._redirectFocus }))] }));
5
8
  }
6
9
  function BusyIndicatorBusyText() {
7
10
  return (_jsx(_Fragment, { children: this.text && (_jsx(Label, { id: `${this._id}-label`, class: "ui5-busy-indicator-text", children: this.text })) }));
@@ -1 +1 @@
1
- {"version":3,"file":"BusyIndicatorTemplate.js","sourceRoot":"","sources":["../src/BusyIndicatorTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,qBAAqB;IAC5C,OAAO,CACN,eAAK,KAAK,EAAC,yBAAyB,aAClC,IAAI,CAAC,OAAO,IAAI,CAChB,eACC,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE,IAAI,CAAC,SAAS,EACrB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,GAAG,oBACH,MAAM,qBACJ,IAAI,CAAC,OAAO,yCAG5B,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1D,eAAK,KAAK,EAAC,oCAAoC,aAC9C,cAAK,KAAK,EAAC,8CAA8C,GAAO,EAChE,cAAK,KAAK,EAAC,8CAA8C,GAAO,EAChE,cAAK,KAAK,EAAC,8CAA8C,GAAO,IAC3D,EACL,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IACxD,CACN,EACD,gBAAa,EACZ,IAAI,CAAC,OAAO,IAAI,CAChB,gDAEC,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,IAAI,CAAC,cAAc,GACvB,CACR,IACI,CACN,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC7B,OAAO,CAAC,4BACN,IAAI,CAAC,IAAI,IAAI,CACb,KAAC,KAAK,IACL,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,yBAAyB,YAE9B,IAAI,CAAC,IAAI,GACH,CACR,GACC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type BusyIndicator from \"./BusyIndicator.js\";\nimport Label from \"./Label.js\";\n\nexport default function BusyIndicatorTemplate(this: BusyIndicator) {\n\treturn (\n\t\t<div class=\"ui5-busy-indicator-root\">\n\t\t\t{this._isBusy && (\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ui5-busy-indicator-busy-area\"\n\t\t\t\t\ttitle={this.ariaTitle}\n\t\t\t\t\ttabindex={0}\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\taria-valuetext=\"Busy\"\n\t\t\t\t\taria-labelledby={this.labelId}\n\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t>\n\t\t\t\t\t{this.textPosition.top && BusyIndicatorBusyText.call(this)}\n\t\t\t\t\t<div class=\"ui5-busy-indicator-circles-wrapper\">\n\t\t\t\t\t\t<div class=\"ui5-busy-indicator-circle circle-animation-0\"></div>\n\t\t\t\t\t\t<div class=\"ui5-busy-indicator-circle circle-animation-1\"></div>\n\t\t\t\t\t\t<div class=\"ui5-busy-indicator-circle circle-animation-2\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{this.textPosition.bottom && BusyIndicatorBusyText.call(this)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<slot></slot>\n\t\t\t{this._isBusy && (\n\t\t\t\t<span\n\t\t\t\t\tdata-ui5-focus-redirect\n\t\t\t\t\ttabindex={0}\n\t\t\t\t\trole=\"none\"\n\t\t\t\t\tonFocusIn={this._redirectFocus}\n\t\t\t\t></span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction BusyIndicatorBusyText(this: BusyIndicator) {\n\treturn (<>\n\t\t{this.text && (\n\t\t\t<Label\n\t\t\t\tid={`${this._id}-label`}\n\t\t\t\tclass=\"ui5-busy-indicator-text\"\n\t\t\t>\n\t\t\t\t{this.text}\n\t\t\t</Label>\n\t\t)}\n\t</>);\n}\n"]}
1
+ {"version":3,"file":"BusyIndicatorTemplate.js","sourceRoot":"","sources":["../src/BusyIndicatorTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,qBAAqB;IAC5C,OAAO,CACN,eAAK,KAAK,EAAC,yBAAyB,aAClC,IAAI,CAAC,OAAO,IAAI,CAChB,eACC,KAAK,EAAE;oBACN,8BAA8B,EAAE,IAAI;oBACpC,2CAA2C,EAAE,IAAI,CAAC,UAAU;iBAC5D,EACD,KAAK,EAAE,IAAI,CAAC,SAAS,EACrB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,GAAG,oBACH,MAAM,qBACJ,IAAI,CAAC,OAAO,yCAG5B,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1D,eAAK,KAAK,EAAC,oCAAoC,aAC9C,cAAK,KAAK,EAAC,8CAA8C,GAAO,EAChE,cAAK,KAAK,EAAC,8CAA8C,GAAO,EAChE,cAAK,KAAK,EAAC,8CAA8C,GAAO,IAC3D,EACL,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IACxD,CACN,EACD,gBAAa,EACZ,IAAI,CAAC,OAAO,IAAI,CAChB,gDAEC,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,IAAI,CAAC,cAAc,GACvB,CACR,IACI,CACN,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC7B,OAAO,CAAC,4BACN,IAAI,CAAC,IAAI,IAAI,CACb,KAAC,KAAK,IACL,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,yBAAyB,YAE9B,IAAI,CAAC,IAAI,GACH,CACR,GACC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type BusyIndicator from \"./BusyIndicator.js\";\nimport Label from \"./Label.js\";\n\nexport default function BusyIndicatorTemplate(this: BusyIndicator) {\n\treturn (\n\t\t<div class=\"ui5-busy-indicator-root\">\n\t\t\t{this._isBusy && (\n\t\t\t\t<div\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"ui5-busy-indicator-busy-area\": true,\n\t\t\t\t\t\t\"ui5-busy-indicator-busy-area-over-content\": this.hasContent,\n\t\t\t\t\t}}\n\t\t\t\t\ttitle={this.ariaTitle}\n\t\t\t\t\ttabindex={0}\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\taria-valuetext=\"Busy\"\n\t\t\t\t\taria-labelledby={this.labelId}\n\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t>\n\t\t\t\t\t{this.textPosition.top && BusyIndicatorBusyText.call(this)}\n\t\t\t\t\t<div class=\"ui5-busy-indicator-circles-wrapper\">\n\t\t\t\t\t\t<div class=\"ui5-busy-indicator-circle circle-animation-0\"></div>\n\t\t\t\t\t\t<div class=\"ui5-busy-indicator-circle circle-animation-1\"></div>\n\t\t\t\t\t\t<div class=\"ui5-busy-indicator-circle circle-animation-2\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{this.textPosition.bottom && BusyIndicatorBusyText.call(this)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<slot></slot>\n\t\t\t{this._isBusy && (\n\t\t\t\t<span\n\t\t\t\t\tdata-ui5-focus-redirect\n\t\t\t\t\ttabindex={0}\n\t\t\t\t\trole=\"none\"\n\t\t\t\t\tonFocusIn={this._redirectFocus}\n\t\t\t\t></span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction BusyIndicatorBusyText(this: BusyIndicator) {\n\treturn (<>\n\t\t{this.text && (\n\t\t\t<Label\n\t\t\t\tid={`${this._id}-label`}\n\t\t\t\tclass=\"ui5-busy-indicator-text\"\n\t\t\t>\n\t\t\t\t{this.text}\n\t\t\t</Label>\n\t\t)}\n\t</>);\n}\n"]}
package/dist/Button.d.ts CHANGED
@@ -234,10 +234,13 @@ declare class Button extends UI5Element implements IButton {
234
234
  */
235
235
  badge: Array<ButtonBadge>;
236
236
  _deactivate: () => void;
237
+ _onclickBound: (e: MouseEvent) => void;
238
+ _clickHandlerAttached: boolean;
237
239
  static i18nBundle: I18nBundle;
238
240
  constructor();
239
241
  _ontouchstart(): void;
240
242
  onEnterDOM(): void;
243
+ onExitDOM(): void;
241
244
  onBeforeRendering(): Promise<void>;
242
245
  _setBadgeOverlayStyle(): void;
243
246
  _onclick(e: MouseEvent): void;