@ui5/webcomponents-base 1.9.3 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/.eslintignore +1 -0
  2. package/CHANGELOG.md +0 -8
  3. package/bundle.esm.js +4 -1
  4. package/dist/AssetRegistry.d.ts +5 -0
  5. package/dist/AssetRegistry.js +2 -7
  6. package/dist/AssetRegistry.js.map +1 -0
  7. package/dist/Boot.d.ts +8 -0
  8. package/dist/Boot.js +29 -48
  9. package/dist/Boot.js.map +1 -0
  10. package/dist/CSP.d.ts +30 -0
  11. package/dist/CSP.js +16 -24
  12. package/dist/CSP.js.map +1 -0
  13. package/dist/CustomElementsRegistry.d.ts +5 -0
  14. package/dist/CustomElementsRegistry.js +66 -83
  15. package/dist/CustomElementsRegistry.js.map +1 -0
  16. package/dist/CustomElementsScope.d.ts +7 -0
  17. package/dist/CustomElementsScope.js +10 -29
  18. package/dist/CustomElementsScope.js.map +1 -0
  19. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  20. package/dist/CustomElementsScopeUtils.js +34 -52
  21. package/dist/CustomElementsScopeUtils.js.map +1 -0
  22. package/dist/DOMObserver.d.ts +11 -0
  23. package/dist/DOMObserver.js +12 -54
  24. package/dist/DOMObserver.js.map +1 -0
  25. package/dist/Device.d.ts +12 -0
  26. package/dist/Device.js +53 -83
  27. package/dist/Device.js.map +1 -0
  28. package/dist/EventProvider.d.ts +25 -0
  29. package/dist/EventProvider.js +67 -82
  30. package/dist/EventProvider.js.map +1 -0
  31. package/dist/FeaturesRegistry.d.ts +3 -0
  32. package/dist/FeaturesRegistry.js +5 -10
  33. package/dist/FeaturesRegistry.js.map +1 -0
  34. package/dist/FontFace.d.ts +2 -0
  35. package/dist/FontFace.js +14 -19
  36. package/dist/FontFace.js.map +1 -0
  37. package/dist/InitialConfiguration.d.ts +22 -0
  38. package/dist/InitialConfiguration.js +107 -146
  39. package/dist/InitialConfiguration.js.map +1 -0
  40. package/dist/Keys.d.ts +57 -0
  41. package/dist/Keys.js +174 -291
  42. package/dist/Keys.js.map +1 -0
  43. package/dist/ManagedStyles.d.ts +8 -0
  44. package/dist/ManagedStyles.js +62 -68
  45. package/dist/ManagedStyles.js.map +1 -0
  46. package/dist/MarkedEvents.d.ts +9 -0
  47. package/dist/MarkedEvents.js +15 -0
  48. package/dist/MarkedEvents.js.map +1 -0
  49. package/dist/MediaRange.d.ts +37 -0
  50. package/dist/MediaRange.js +54 -65
  51. package/dist/MediaRange.js.map +1 -0
  52. package/dist/PropertiesFileFormat.d.ts +8 -0
  53. package/dist/PropertiesFileFormat.js +72 -82
  54. package/dist/PropertiesFileFormat.js.map +1 -0
  55. package/dist/Render.d.ts +47 -0
  56. package/dist/Render.js +81 -113
  57. package/dist/Render.js.map +1 -0
  58. package/dist/RenderQueue.d.ts +19 -0
  59. package/dist/RenderQueue.js +52 -62
  60. package/dist/RenderQueue.js.map +1 -0
  61. package/dist/Runtimes.d.ts +27 -0
  62. package/dist/Runtimes.js +49 -70
  63. package/dist/Runtimes.js.map +1 -0
  64. package/dist/StaticArea.d.ts +0 -0
  65. package/dist/StaticArea.js +4 -1
  66. package/dist/StaticArea.js.map +1 -0
  67. package/dist/StaticAreaItem.d.ts +36 -0
  68. package/dist/StaticAreaItem.js +84 -94
  69. package/dist/StaticAreaItem.js.map +1 -0
  70. package/dist/SystemCSSVars.d.ts +2 -0
  71. package/dist/SystemCSSVars.js +4 -5
  72. package/dist/SystemCSSVars.js.map +1 -0
  73. package/dist/Theming.d.ts +3 -0
  74. package/dist/Theming.js +1 -1
  75. package/dist/Theming.js.map +1 -0
  76. package/dist/UI5Element.d.ts +373 -0
  77. package/dist/UI5Element.js +928 -1006
  78. package/dist/UI5Element.js.map +1 -0
  79. package/dist/UI5ElementMetadata.d.ts +150 -0
  80. package/dist/UI5ElementMetadata.js +277 -313
  81. package/dist/UI5ElementMetadata.js.map +1 -0
  82. package/dist/animations/AnimationQueue.d.ts +8 -0
  83. package/dist/animations/AnimationQueue.js +31 -38
  84. package/dist/animations/AnimationQueue.js.map +1 -0
  85. package/dist/animations/animate.d.ts +14 -0
  86. package/dist/animations/animate.js +46 -51
  87. package/dist/animations/animate.js.map +1 -0
  88. package/dist/animations/scroll.d.ts +5 -0
  89. package/dist/animations/scroll.js +18 -27
  90. package/dist/animations/scroll.js.map +1 -0
  91. package/dist/animations/slideDown.d.ts +5 -0
  92. package/dist/animations/slideDown.js +53 -78
  93. package/dist/animations/slideDown.js.map +1 -0
  94. package/dist/animations/slideUp.d.ts +5 -0
  95. package/dist/animations/slideUp.js +49 -70
  96. package/dist/animations/slideUp.js.map +1 -0
  97. package/dist/api.json +1 -1
  98. package/dist/asset-registries/Icons.d.ts +30 -0
  99. package/dist/asset-registries/Icons.js +85 -118
  100. package/dist/asset-registries/Icons.js.map +1 -0
  101. package/dist/asset-registries/Illustrations.d.ts +17 -0
  102. package/dist/asset-registries/Illustrations.js +37 -50
  103. package/dist/asset-registries/Illustrations.js.map +1 -0
  104. package/dist/asset-registries/LocaleData.d.ts +7 -0
  105. package/dist/asset-registries/LocaleData.js +104 -126
  106. package/dist/asset-registries/LocaleData.js.map +1 -0
  107. package/dist/asset-registries/Themes.d.ts +10 -0
  108. package/dist/asset-registries/Themes.js +36 -68
  109. package/dist/asset-registries/Themes.js.map +1 -0
  110. package/dist/asset-registries/i18n.d.ts +23 -0
  111. package/dist/asset-registries/i18n.js +52 -80
  112. package/dist/asset-registries/i18n.js.map +1 -0
  113. package/dist/assets/bundle.esm.3d967c4e.js +56 -0
  114. package/dist/assets-meta/IconCollectionsAlias.d.ts +17 -0
  115. package/dist/assets-meta/IconCollectionsAlias.js +4 -4
  116. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  117. package/dist/config/AnimationMode.d.ts +14 -0
  118. package/dist/config/AnimationMode.js +21 -18
  119. package/dist/config/AnimationMode.js.map +1 -0
  120. package/dist/config/CalendarType.d.ts +8 -0
  121. package/dist/config/CalendarType.js +13 -12
  122. package/dist/config/CalendarType.js.map +1 -0
  123. package/dist/config/FormatSettings.d.ts +11 -0
  124. package/dist/config/FormatSettings.js +10 -8
  125. package/dist/config/FormatSettings.js.map +1 -0
  126. package/dist/config/Icons.d.ts +30 -0
  127. package/dist/config/Icons.js +28 -32
  128. package/dist/config/Icons.js.map +1 -0
  129. package/dist/config/Language.d.ts +31 -0
  130. package/dist/config/Language.js +31 -43
  131. package/dist/config/Language.js.map +1 -0
  132. package/dist/config/NoConflict.d.ts +20 -0
  133. package/dist/config/NoConflict.js +40 -41
  134. package/dist/config/NoConflict.js.map +1 -0
  135. package/dist/config/RTL.d.ts +7 -0
  136. package/dist/config/RTL.js +23 -20
  137. package/dist/config/RTL.js.map +1 -0
  138. package/dist/config/Theme.d.ts +28 -0
  139. package/dist/config/Theme.js +34 -36
  140. package/dist/config/Theme.js.map +1 -0
  141. package/dist/config/ThemeRoots.d.ts +4 -0
  142. package/dist/config/ThemeRoots.js +18 -29
  143. package/dist/config/ThemeRoots.js.map +1 -0
  144. package/dist/decorators/customElement.d.ts +8 -0
  145. package/dist/decorators/customElement.js +16 -0
  146. package/dist/decorators/customElement.js.map +1 -0
  147. package/dist/decorators/event.d.ts +10 -0
  148. package/dist/decorators/event.js +24 -0
  149. package/dist/decorators/event.js.map +1 -0
  150. package/dist/decorators/fastNavigation.d.ts +7 -0
  151. package/dist/decorators/fastNavigation.js +13 -0
  152. package/dist/decorators/fastNavigation.js.map +1 -0
  153. package/dist/decorators/languageAware.d.ts +7 -0
  154. package/dist/decorators/languageAware.js +13 -0
  155. package/dist/decorators/languageAware.js.map +1 -0
  156. package/dist/decorators/property.d.ts +9 -0
  157. package/dist/decorators/property.js +24 -0
  158. package/dist/decorators/property.js.map +1 -0
  159. package/dist/decorators/slot.d.ts +9 -0
  160. package/dist/decorators/slot.js +37 -0
  161. package/dist/decorators/slot.js.map +1 -0
  162. package/dist/decorators/themeAware.d.ts +7 -0
  163. package/dist/decorators/themeAware.js +13 -0
  164. package/dist/decorators/themeAware.js.map +1 -0
  165. package/dist/delegate/ItemNavigation.d.ts +113 -0
  166. package/dist/delegate/ItemNavigation.js +277 -317
  167. package/dist/delegate/ItemNavigation.js.map +1 -0
  168. package/dist/delegate/ResizeHandler.d.ts +24 -0
  169. package/dist/delegate/ResizeHandler.js +68 -91
  170. package/dist/delegate/ResizeHandler.js.map +1 -0
  171. package/dist/delegate/ScrollEnablement.d.ts +48 -0
  172. package/dist/delegate/ScrollEnablement.js +157 -180
  173. package/dist/delegate/ScrollEnablement.js.map +1 -0
  174. package/dist/features/F6Navigation.d.ts +16 -0
  175. package/dist/features/F6Navigation.js +105 -109
  176. package/dist/features/F6Navigation.js.map +1 -0
  177. package/dist/features/OpenUI5Element.d.ts +9 -0
  178. package/dist/features/OpenUI5Element.js +5 -0
  179. package/dist/features/OpenUI5Element.js.map +1 -0
  180. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  181. package/dist/features/OpenUI5Enablement.js +89 -112
  182. package/dist/features/OpenUI5Enablement.js.map +1 -0
  183. package/dist/features/OpenUI5Support.d.ts +23 -0
  184. package/dist/features/OpenUI5Support.js +91 -120
  185. package/dist/features/OpenUI5Support.js.map +1 -0
  186. package/dist/generated/VersionInfo.js +4 -4
  187. package/dist/getSharedResource.d.ts +11 -0
  188. package/dist/getSharedResource.js +12 -16
  189. package/dist/getSharedResource.js.map +1 -0
  190. package/dist/i18nBundle.d.ts +43 -0
  191. package/dist/i18nBundle.js +56 -64
  192. package/dist/i18nBundle.js.map +1 -0
  193. package/dist/locale/Locale.d.ts +22 -0
  194. package/dist/locale/Locale.js +75 -87
  195. package/dist/locale/Locale.js.map +1 -0
  196. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  197. package/dist/locale/RTLAwareRegistry.js +6 -11
  198. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  199. package/dist/locale/applyDirection.d.ts +10 -0
  200. package/dist/locale/applyDirection.js +7 -7
  201. package/dist/locale/applyDirection.js.map +1 -0
  202. package/dist/locale/directionChange.d.ts +15 -0
  203. package/dist/locale/directionChange.js +7 -15
  204. package/dist/locale/directionChange.js.map +1 -0
  205. package/dist/locale/getEffectiveDir.d.ts +2 -0
  206. package/dist/locale/getEffectiveDir.js +20 -24
  207. package/dist/locale/getEffectiveDir.js.map +1 -0
  208. package/dist/locale/getLocale.d.ts +7 -0
  209. package/dist/locale/getLocale.js +26 -29
  210. package/dist/locale/getLocale.js.map +1 -0
  211. package/dist/locale/languageChange.d.ts +5 -0
  212. package/dist/locale/languageChange.js +8 -16
  213. package/dist/locale/languageChange.js.map +1 -0
  214. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  215. package/dist/locale/nextFallbackLocale.js +15 -19
  216. package/dist/locale/nextFallbackLocale.js.map +1 -0
  217. package/dist/locale/normalizeLocale.d.ts +7 -0
  218. package/dist/locale/normalizeLocale.js +34 -41
  219. package/dist/locale/normalizeLocale.js.map +1 -0
  220. package/dist/renderer/LitRenderer.d.ts +14 -0
  221. package/dist/renderer/LitRenderer.js +28 -39
  222. package/dist/renderer/LitRenderer.js.map +1 -0
  223. package/dist/renderer/executeTemplate.d.ts +13 -0
  224. package/dist/renderer/executeTemplate.js +12 -16
  225. package/dist/renderer/executeTemplate.js.map +1 -0
  226. package/dist/sap/base/Log.js +28 -29
  227. package/dist/sap/base/assert.js +5 -6
  228. package/dist/sap/base/security/URLListValidator.js +13 -2
  229. package/dist/theming/CustomStyle.d.ts +6 -0
  230. package/dist/theming/CustomStyle.js +29 -43
  231. package/dist/theming/CustomStyle.js.map +1 -0
  232. package/dist/theming/ThemeLoaded.d.ts +5 -0
  233. package/dist/theming/ThemeLoaded.js +8 -16
  234. package/dist/theming/ThemeLoaded.js.map +1 -0
  235. package/dist/theming/applyTheme.d.ts +2 -0
  236. package/dist/theming/applyTheme.js +59 -68
  237. package/dist/theming/applyTheme.js.map +1 -0
  238. package/dist/theming/getConstructableStyle.d.ts +9 -0
  239. package/dist/theming/getConstructableStyle.js +12 -17
  240. package/dist/theming/getConstructableStyle.js.map +1 -0
  241. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  242. package/dist/theming/getEffectiveLinksHrefs.js +12 -22
  243. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  244. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  245. package/dist/theming/getEffectiveStyle.js +24 -31
  246. package/dist/theming/getEffectiveStyle.js.map +1 -0
  247. package/dist/theming/getStylesString.d.ts +3 -0
  248. package/dist/theming/getStylesString.js +9 -13
  249. package/dist/theming/getStylesString.js.map +1 -0
  250. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  251. package/dist/theming/getThemeDesignerTheme.js +72 -79
  252. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  253. package/dist/theming/preloadLinks.d.ts +3 -0
  254. package/dist/theming/preloadLinks.js +13 -17
  255. package/dist/theming/preloadLinks.js.map +1 -0
  256. package/dist/thirdparty/_merge.d.ts +2 -0
  257. package/dist/thirdparty/_merge.js +7 -4
  258. package/dist/thirdparty/_merge.js.map +1 -0
  259. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  260. package/dist/thirdparty/isPlainObject.js +11 -10
  261. package/dist/thirdparty/isPlainObject.js.map +1 -0
  262. package/dist/thirdparty/merge.d.ts +2 -0
  263. package/dist/thirdparty/merge.js +4 -8
  264. package/dist/thirdparty/merge.js.map +1 -0
  265. package/dist/types/AnimationMode.d.ts +32 -0
  266. package/dist/types/AnimationMode.js +33 -6
  267. package/dist/types/AnimationMode.js.map +1 -0
  268. package/dist/types/CSSColor.d.ts +16 -0
  269. package/dist/types/CSSColor.js +6 -7
  270. package/dist/types/CSSColor.js.map +1 -0
  271. package/dist/types/CalendarType.d.ts +37 -0
  272. package/dist/types/CalendarType.js +33 -53
  273. package/dist/types/CalendarType.js.map +1 -0
  274. package/dist/types/DOMReference.d.ts +17 -0
  275. package/dist/types/DOMReference.js +12 -15
  276. package/dist/types/DOMReference.js.map +1 -0
  277. package/dist/types/DataType.d.ts +25 -0
  278. package/dist/types/DataType.js +33 -32
  279. package/dist/types/DataType.js.map +1 -0
  280. package/dist/types/Float.d.ts +18 -0
  281. package/dist/types/Float.js +9 -12
  282. package/dist/types/Float.js.map +1 -0
  283. package/dist/types/Integer.d.ts +18 -0
  284. package/dist/types/Integer.js +9 -11
  285. package/dist/types/Integer.js.map +1 -0
  286. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  287. package/dist/types/InvisibleMessageMode.js +19 -38
  288. package/dist/types/InvisibleMessageMode.js.map +1 -0
  289. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  290. package/dist/types/ItemNavigationBehavior.js +22 -12
  291. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  292. package/dist/types/NavigationMode.d.ts +32 -0
  293. package/dist/types/NavigationMode.js +33 -6
  294. package/dist/types/NavigationMode.js.map +1 -0
  295. package/dist/types/ValueState.d.ts +42 -0
  296. package/dist/types/ValueState.js +38 -58
  297. package/dist/types/ValueState.js.map +1 -0
  298. package/dist/types.d.ts +18 -0
  299. package/dist/types.js +2 -0
  300. package/dist/types.js.map +1 -0
  301. package/dist/updateShadowRoot.d.ts +8 -0
  302. package/dist/updateShadowRoot.js +21 -16
  303. package/dist/updateShadowRoot.js.map +1 -0
  304. package/dist/util/AriaLabelHelper.d.ts +6 -0
  305. package/dist/util/AriaLabelHelper.js +34 -46
  306. package/dist/util/AriaLabelHelper.js.map +1 -0
  307. package/dist/util/Caret.d.ts +7 -0
  308. package/dist/util/Caret.js +16 -25
  309. package/dist/util/Caret.js.map +1 -0
  310. package/dist/util/ColorConversion.d.ts +30 -0
  311. package/dist/util/ColorConversion.js +311 -372
  312. package/dist/util/ColorConversion.js.map +1 -0
  313. package/dist/util/FetchHelper.d.ts +3 -0
  314. package/dist/util/FetchHelper.js +19 -25
  315. package/dist/util/FetchHelper.js.map +1 -0
  316. package/dist/util/FocusableElements.d.ts +4 -0
  317. package/dist/util/FocusableElements.js +54 -71
  318. package/dist/util/FocusableElements.js.map +1 -0
  319. package/dist/util/HTMLSanitizer.d.ts +3 -0
  320. package/dist/util/HTMLSanitizer.js +4 -5
  321. package/dist/util/HTMLSanitizer.js.map +1 -0
  322. package/dist/util/InvisibleMessage.d.ts +10 -0
  323. package/dist/util/InvisibleMessage.js +40 -53
  324. package/dist/util/InvisibleMessage.js.map +1 -0
  325. package/dist/util/PopupUtils.d.ts +7 -0
  326. package/dist/util/PopupUtils.js +58 -77
  327. package/dist/util/PopupUtils.js.map +1 -0
  328. package/dist/util/SlotsHelper.d.ts +9 -0
  329. package/dist/util/SlotsHelper.js +22 -35
  330. package/dist/util/SlotsHelper.js.map +1 -0
  331. package/dist/util/StringHelper.d.ts +3 -0
  332. package/dist/util/StringHelper.js +17 -20
  333. package/dist/util/StringHelper.js.map +1 -0
  334. package/dist/util/TabbableElements.d.ts +17 -0
  335. package/dist/util/TabbableElements.js +53 -47
  336. package/dist/util/TabbableElements.js.map +1 -0
  337. package/dist/util/arraysAreEqual.d.ts +2 -0
  338. package/dist/util/arraysAreEqual.js +10 -12
  339. package/dist/util/arraysAreEqual.js.map +1 -0
  340. package/dist/util/clamp.d.ts +9 -0
  341. package/dist/util/clamp.js +2 -2
  342. package/dist/util/clamp.js.map +1 -0
  343. package/dist/util/createLinkInHead.d.ts +7 -0
  344. package/dist/util/createLinkInHead.js +14 -17
  345. package/dist/util/createLinkInHead.js.map +1 -0
  346. package/dist/util/createStyleInHead.d.ts +8 -0
  347. package/dist/util/createStyleInHead.js +10 -10
  348. package/dist/util/createStyleInHead.js.map +1 -0
  349. package/dist/util/debounce.d.ts +2 -0
  350. package/dist/util/debounce.js +6 -8
  351. package/dist/util/debounce.js.map +1 -0
  352. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  353. package/dist/util/detectNavigatorLanguage.js +7 -10
  354. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  355. package/dist/util/escapeRegex.d.ts +8 -0
  356. package/dist/util/escapeRegex.js +8 -7
  357. package/dist/util/escapeRegex.js.map +1 -0
  358. package/dist/util/formatMessage.d.ts +2 -0
  359. package/dist/util/formatMessage.js +15 -19
  360. package/dist/util/formatMessage.js.map +1 -0
  361. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  362. package/dist/util/generateHighlightedMarkup.js +26 -27
  363. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  364. package/dist/util/getActiveElement.d.ts +2 -0
  365. package/dist/util/getActiveElement.js +6 -8
  366. package/dist/util/getActiveElement.js.map +1 -0
  367. package/dist/util/getClassCopy.d.ts +400 -0
  368. package/dist/util/getClassCopy.js +7 -7
  369. package/dist/util/getClassCopy.js.map +1 -0
  370. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  371. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  372. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  373. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  374. package/dist/util/getEffectiveContentDensity.js +2 -3
  375. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  376. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  377. package/dist/util/getEffectiveScrollbarStyle.js +1 -2
  378. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  379. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  380. package/dist/util/getFastNavigationGroups.js +44 -56
  381. package/dist/util/getFastNavigationGroups.js.map +1 -0
  382. package/dist/util/getFileExtension.d.ts +12 -0
  383. package/dist/util/getFileExtension.js +9 -11
  384. package/dist/util/getFileExtension.js.map +1 -0
  385. package/dist/util/getNormalizedTarget.d.ts +7 -0
  386. package/dist/util/getNormalizedTarget.js +7 -9
  387. package/dist/util/getNormalizedTarget.js.map +1 -0
  388. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  389. package/dist/util/getSingletonElementInstance.js +7 -10
  390. package/dist/util/getSingletonElementInstance.js.map +1 -0
  391. package/dist/util/isElementClickable.d.ts +2 -0
  392. package/dist/util/isElementClickable.js +16 -0
  393. package/dist/util/isElementClickable.js.map +1 -0
  394. package/dist/util/isElementHidden.d.ts +2 -0
  395. package/dist/util/isElementHidden.js +8 -0
  396. package/dist/util/isElementHidden.js.map +1 -0
  397. package/dist/util/isElementInView.d.ts +6 -0
  398. package/dist/util/isElementInView.js +6 -9
  399. package/dist/util/isElementInView.js.map +1 -0
  400. package/dist/util/isElementTabbable.d.ts +9 -0
  401. package/dist/util/isElementTabbable.js +30 -0
  402. package/dist/util/isElementTabbable.js.map +1 -0
  403. package/dist/util/isValidPropertyName.d.ts +8 -0
  404. package/dist/util/isValidPropertyName.js +16 -17
  405. package/dist/util/isValidPropertyName.js.map +1 -0
  406. package/dist/util/whenDOMReady.d.ts +2 -0
  407. package/dist/util/whenDOMReady.js +11 -10
  408. package/dist/util/whenDOMReady.js.map +1 -0
  409. package/dist/util/willShowContent.d.ts +2 -0
  410. package/dist/util/willShowContent.js +7 -0
  411. package/dist/util/willShowContent.js.map +1 -0
  412. package/dist/validateThemeRoot.d.ts +2 -0
  413. package/dist/validateThemeRoot.js +41 -52
  414. package/dist/validateThemeRoot.js.map +1 -0
  415. package/global.d.ts +44 -0
  416. package/package-scripts.js +14 -5
  417. package/package.json +4 -4
  418. package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
  419. package/src/Boot.ts +61 -0
  420. package/src/{CSP.js → CSP.ts} +14 -7
  421. package/src/{CustomElementsRegistry.js → CustomElementsRegistry.ts} +19 -16
  422. package/src/{CustomElementsScope.js → CustomElementsScope.ts} +8 -5
  423. package/src/{CustomElementsScopeUtils.js → CustomElementsScopeUtils.ts} +14 -7
  424. package/src/DOMObserver.ts +28 -0
  425. package/src/{Device.js → Device.ts} +17 -14
  426. package/src/{EventProvider.js → EventProvider.ts} +9 -7
  427. package/src/FeaturesRegistry.ts +14 -0
  428. package/src/{FontFace.js → FontFace.ts} +3 -2
  429. package/src/{InitialConfiguration.js → InitialConfiguration.ts} +33 -12
  430. package/src/Keys.ts +295 -0
  431. package/src/ManagedStyles.ts +92 -0
  432. package/src/MarkedEvents.ts +20 -0
  433. package/src/{MediaRange.js → MediaRange.ts} +54 -53
  434. package/src/{PropertiesFileFormat.js → PropertiesFileFormat.ts} +8 -8
  435. package/src/{Render.js → Render.ts} +25 -20
  436. package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
  437. package/src/{Runtimes.js → Runtimes.ts} +15 -8
  438. package/src/{StaticArea.js → StaticArea.ts} +0 -0
  439. package/src/{StaticAreaItem.js → StaticAreaItem.ts} +26 -22
  440. package/src/{SystemCSSVars.js → SystemCSSVars.ts} +0 -0
  441. package/src/{Theming.js → Theming.ts} +0 -0
  442. package/src/{UI5Element.js → UI5Element.ts} +263 -153
  443. package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +120 -58
  444. package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
  445. package/src/animations/animate.ts +64 -0
  446. package/src/animations/scroll.ts +21 -0
  447. package/src/animations/{slideDown.js → slideDown.ts} +27 -34
  448. package/src/animations/{slideUp.js → slideUp.ts} +28 -32
  449. package/src/asset-registries/{Icons.js → Icons.ts} +63 -38
  450. package/src/asset-registries/Illustrations.ts +75 -0
  451. package/src/asset-registries/{LocaleData.js → LocaleData.ts} +35 -21
  452. package/src/asset-registries/{Themes.js → Themes.ts} +14 -29
  453. package/src/asset-registries/{i18n.js → i18n.ts} +18 -23
  454. package/src/assets-meta/{IconCollectionsAlias.js → IconCollectionsAlias.ts} +0 -0
  455. package/src/config/AnimationMode.ts +33 -0
  456. package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
  457. package/src/config/FormatSettings.ts +21 -0
  458. package/src/config/{Icons.js → Icons.ts} +19 -12
  459. package/src/config/{Language.js → Language.ts} +22 -18
  460. package/src/config/NoConflict.ts +67 -0
  461. package/src/config/{RTL.js → RTL.ts} +14 -4
  462. package/src/config/Theme.ts +64 -0
  463. package/src/config/{ThemeRoots.js → ThemeRoots.ts} +9 -7
  464. package/src/decorators/customElement.ts +17 -0
  465. package/src/decorators/event.ts +28 -0
  466. package/src/decorators/fastNavigation.ts +14 -0
  467. package/src/decorators/languageAware.ts +14 -0
  468. package/src/decorators/property.ts +30 -0
  469. package/src/decorators/slot.ts +49 -0
  470. package/src/decorators/themeAware.ts +14 -0
  471. package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +56 -19
  472. package/src/delegate/{ResizeHandler.js → ResizeHandler.ts} +25 -36
  473. package/src/delegate/ScrollEnablement.ts +221 -0
  474. package/src/features/{F6Navigation.js → F6Navigation.ts} +50 -25
  475. package/src/features/OpenUI5Element.ts +11 -0
  476. package/src/features/OpenUI5Enablement.ts +117 -0
  477. package/src/features/OpenUI5Support.ts +148 -0
  478. package/src/{getSharedResource.js → getSharedResource.ts} +3 -3
  479. package/src/{i18nBundle.js → i18nBundle.ts} +45 -23
  480. package/src/locale/{Locale.js → Locale.ts} +15 -5
  481. package/src/locale/RTLAwareRegistry.ts +16 -0
  482. package/src/locale/{applyDirection.js → applyDirection.ts} +4 -3
  483. package/src/locale/{directionChange.js → directionChange.ts} +6 -4
  484. package/src/locale/{getEffectiveDir.js → getEffectiveDir.ts} +1 -1
  485. package/src/locale/{getLocale.js → getLocale.ts} +12 -7
  486. package/src/locale/languageChange.ts +24 -0
  487. package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
  488. package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +5 -3
  489. package/src/renderer/LitRenderer.ts +60 -0
  490. package/src/renderer/{executeTemplate.js → executeTemplate.ts} +11 -5
  491. package/src/theming/{CustomStyle.js → CustomStyle.ts} +11 -9
  492. package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
  493. package/src/theming/{applyTheme.js → applyTheme.ts} +16 -10
  494. package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
  495. package/src/theming/getEffectiveLinksHrefs.ts +26 -0
  496. package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +9 -7
  497. package/src/theming/getStylesString.ts +15 -0
  498. package/src/theming/{getThemeDesignerTheme.js → getThemeDesignerTheme.ts} +22 -8
  499. package/src/theming/{preloadLinks.js → preloadLinks.ts} +3 -2
  500. package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
  501. package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
  502. package/src/thirdparty/merge.ts +5 -0
  503. package/src/types/AnimationMode.ts +33 -0
  504. package/src/types/{CSSColor.js → CSSColor.ts} +3 -3
  505. package/src/types/CalendarType.ts +38 -0
  506. package/src/types/{DOMReference.js → DOMReference.ts} +4 -4
  507. package/src/types/DataType.ts +51 -0
  508. package/src/types/{Float.js → Float.ts} +5 -5
  509. package/src/types/{Integer.js → Integer.ts} +5 -4
  510. package/src/types/InvisibleMessageMode.ts +27 -0
  511. package/src/types/ItemNavigationBehavior.ts +26 -0
  512. package/src/types/NavigationMode.ts +33 -0
  513. package/src/types/ValueState.ts +47 -0
  514. package/src/types.ts +30 -0
  515. package/src/updateShadowRoot.ts +37 -0
  516. package/src/util/AriaLabelHelper.ts +63 -0
  517. package/src/util/{Caret.js → Caret.ts} +5 -9
  518. package/src/util/{ColorConversion.js → ColorConversion.ts} +183 -182
  519. package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
  520. package/src/util/FocusableElements.ts +82 -0
  521. package/src/util/{HTMLSanitizer.js → HTMLSanitizer.ts} +2 -0
  522. package/src/util/{InvisibleMessage.js → InvisibleMessage.ts} +6 -6
  523. package/src/util/PopupUtils.ts +112 -0
  524. package/src/util/{SlotsHelper.js → SlotsHelper.ts} +9 -13
  525. package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
  526. package/src/util/TabbableElements.ts +70 -0
  527. package/src/util/{arraysAreEqual.js → arraysAreEqual.ts} +1 -1
  528. package/src/util/{clamp.js → clamp.ts} +1 -1
  529. package/src/util/{createLinkInHead.js → createLinkInHead.ts} +6 -5
  530. package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
  531. package/src/util/{debounce.js → debounce.ts} +5 -4
  532. package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
  533. package/src/util/escapeRegex.ts +11 -0
  534. package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
  535. package/src/util/{generateHighlightedMarkup.js → generateHighlightedMarkup.ts} +7 -6
  536. package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
  537. package/src/util/{getClassCopy.js → getClassCopy.ts} +3 -1
  538. package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
  539. package/src/util/getEffectiveContentDensity.ts +5 -0
  540. package/src/util/{getEffectiveScrollbarStyle.js → getEffectiveScrollbarStyle.ts} +0 -0
  541. package/src/util/{getFastNavigationGroups.js → getFastNavigationGroups.ts} +10 -10
  542. package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
  543. package/src/util/{getNormalizedTarget.js → getNormalizedTarget.ts} +2 -2
  544. package/src/util/{getSingletonElementInstance.js → getSingletonElementInstance.ts} +1 -1
  545. package/src/util/isElementClickable.ts +19 -0
  546. package/src/util/isElementHidden.ts +9 -0
  547. package/src/util/{isElementInView.js → isElementInView.ts} +1 -1
  548. package/src/util/isElementTabbable.ts +37 -0
  549. package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +1 -1
  550. package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
  551. package/src/util/willShowContent.ts +7 -0
  552. package/src/{validateThemeRoot.js → validateThemeRoot.ts} +4 -4
  553. package/tsconfig.json +13 -0
  554. package/dist/RenderScheduler.js +0 -44
  555. package/dist/animations/config.js +0 -5
  556. package/dist/assets/bundle.esm.e2bd78ba.js +0 -55
  557. package/dist/types/CSSSize.js +0 -20
  558. package/dist/types/PopupState.js +0 -57
  559. package/dist/util/isDefaultSlotProvided.js +0 -11
  560. package/dist/util/isDescendantOf.js +0 -15
  561. package/dist/util/isNodeClickable.js +0 -19
  562. package/dist/util/isNodeHidden.js +0 -9
  563. package/dist/util/isNodeTabbable.js +0 -28
  564. package/dist/util/setToArray.js +0 -10
  565. package/src/Boot.js +0 -63
  566. package/src/DOMObserver.js +0 -65
  567. package/src/FeaturesRegistry.js +0 -14
  568. package/src/Keys.js +0 -295
  569. package/src/ManagedStyles.js +0 -83
  570. package/src/RenderScheduler.js +0 -44
  571. package/src/animations/animate.js +0 -53
  572. package/src/animations/config.js +0 -5
  573. package/src/animations/scroll.js +0 -28
  574. package/src/asset-registries/Illustrations.js +0 -59
  575. package/src/config/AnimationMode.js +0 -23
  576. package/src/config/FormatSettings.js +0 -13
  577. package/src/config/NoConflict.js +0 -51
  578. package/src/config/Theme.js +0 -53
  579. package/src/delegate/ScrollEnablement.js +0 -188
  580. package/src/features/OpenUI5Enablement.js +0 -119
  581. package/src/features/OpenUI5Support.js +0 -126
  582. package/src/locale/RTLAwareRegistry.js +0 -14
  583. package/src/locale/languageChange.js +0 -22
  584. package/src/renderer/LitRenderer.js +0 -52
  585. package/src/theming/getEffectiveLinksHrefs.js +0 -27
  586. package/src/theming/getStylesString.js +0 -15
  587. package/src/thirdparty/merge.js +0 -10
  588. package/src/types/AnimationMode.js +0 -7
  589. package/src/types/CSSSize.js +0 -20
  590. package/src/types/CalendarType.js +0 -59
  591. package/src/types/DataType.js +0 -43
  592. package/src/types/InvisibleMessageMode.js +0 -46
  593. package/src/types/ItemNavigationBehavior.js +0 -16
  594. package/src/types/NavigationMode.js +0 -7
  595. package/src/types/PopupState.js +0 -57
  596. package/src/types/ValueState.js +0 -64
  597. package/src/updateShadowRoot.js +0 -29
  598. package/src/util/AriaLabelHelper.js +0 -56
  599. package/src/util/FocusableElements.js +0 -79
  600. package/src/util/PopupUtils.js +0 -93
  601. package/src/util/TabbableElements.js +0 -51
  602. package/src/util/escapeRegex.js +0 -10
  603. package/src/util/getEffectiveContentDensity.js +0 -5
  604. package/src/util/isDefaultSlotProvided.js +0 -11
  605. package/src/util/isDescendantOf.js +0 -15
  606. package/src/util/isNodeClickable.js +0 -19
  607. package/src/util/isNodeHidden.js +0 -9
  608. package/src/util/isNodeTabbable.js +0 -28
  609. package/src/util/setToArray.js +0 -10
@@ -1,19 +1,23 @@
1
- let resizeObserver;
2
- const observedElements = new Map();
1
+ import { instanceOfUI5Element } from "../UI5Element.js";
2
+
3
+ type ResizeObserverCallback = () => void;
4
+
5
+ let resizeObserver: ResizeObserver;
6
+ const observedElements = new Map<HTMLElement, Array<ResizeObserverCallback>>();
3
7
 
4
8
  const getResizeObserver = () => {
5
9
  if (!resizeObserver) {
6
10
  resizeObserver = new window.ResizeObserver(entries => {
7
11
  entries.forEach(entry => {
8
- const callbacks = observedElements.get(entry.target);
9
- callbacks.forEach(callback => callback());
12
+ const callbacks = observedElements.get(entry.target as HTMLElement);
13
+ callbacks?.forEach((callback: ResizeObserverCallback) => callback());
10
14
  });
11
15
  });
12
16
  }
13
17
  return resizeObserver;
14
18
  };
15
19
 
16
- let observe = (element, callback) => {
20
+ const observe = (element: HTMLElement, callback: ResizeObserverCallback) => {
17
21
  const callbacks = observedElements.get(element) || [];
18
22
 
19
23
  // if no callbacks have been added for this element - start observing it
@@ -25,13 +29,13 @@ let observe = (element, callback) => {
25
29
  observedElements.set(element, [...callbacks, callback]);
26
30
  };
27
31
 
28
- let unobserve = (element, callback) => {
32
+ const unobserve = (element: HTMLElement, callback: ResizeObserverCallback) => {
29
33
  const callbacks = observedElements.get(element) || [];
30
34
  if (callbacks.length === 0) {
31
35
  return;
32
36
  }
33
37
 
34
- const filteredCallbacks = callbacks.filter(fn => fn !== callback);
38
+ const filteredCallbacks = callbacks.filter((fn: ResizeObserverCallback) => fn !== callback);
35
39
  if (filteredCallbacks.length === 0) {
36
40
  getResizeObserver().unobserve(element);
37
41
  observedElements.delete(element);
@@ -53,13 +57,15 @@ class ResizeHandler {
53
57
  * @param {*} element UI5 Web Component or DOM Element to be observed
54
58
  * @param {*} callback Callback to be executed
55
59
  */
56
- static register(element, callback) {
57
- if (element.isUI5Element) {
58
- element = element.getDomRef();
60
+ static register(element: HTMLElement, callback: ResizeObserverCallback) {
61
+ let effectiveElement: HTMLElement | undefined = element;
62
+
63
+ if (instanceOfUI5Element(effectiveElement)) {
64
+ effectiveElement = effectiveElement.getDomRef();
59
65
  }
60
66
 
61
- if (element instanceof HTMLElement) {
62
- observe(element, callback);
67
+ if (effectiveElement instanceof HTMLElement) {
68
+ observe(effectiveElement, callback);
63
69
  } else {
64
70
  console.warn("Cannot register ResizeHandler for element", element); // eslint-disable-line
65
71
  }
@@ -71,36 +77,19 @@ class ResizeHandler {
71
77
  * @param {*} element UI5 Web Component or DOM Element to be unobserved
72
78
  * @param {*} callback Callback to be removed
73
79
  */
74
- static deregister(element, callback) {
75
- if (element.isUI5Element) {
76
- element = element.getDomRef();
80
+ static deregister(element: HTMLElement, callback: ResizeObserverCallback) {
81
+ let effectiveElement: HTMLElement | undefined = element;
82
+
83
+ if (instanceOfUI5Element(effectiveElement)) {
84
+ effectiveElement = effectiveElement.getDomRef();
77
85
  }
78
86
 
79
- if (element instanceof HTMLElement) {
80
- unobserve(element, callback);
87
+ if (effectiveElement instanceof HTMLElement) {
88
+ unobserve(effectiveElement, callback);
81
89
  } else {
82
90
  console.warn("Cannot deregister ResizeHandler for element", element); // eslint-disable-line
83
91
  }
84
92
  }
85
93
  }
86
94
 
87
- /**
88
- * Set a function to be executed whenever a DOM node needs to be observed for size change.
89
- * @public
90
- * @param fn
91
- */
92
- const setResizeHandlerObserveFn = fn => {
93
- observe = fn;
94
- };
95
-
96
- /**
97
- * Set a function to be executed whenever a DOM node needs to no longer be observed for size changes
98
- * @public
99
- * @param fn
100
- */
101
- const setResizeHandlerUnobserveFn = fn => {
102
- unobserve = fn;
103
- };
104
-
105
95
  export default ResizeHandler;
106
- export { setResizeHandlerObserveFn, setResizeHandlerUnobserveFn };
@@ -0,0 +1,221 @@
1
+ import { supportsTouch } from "../Device.js";
2
+ import EventProvider from "../EventProvider.js";
3
+ import scroll from "../animations/scroll.js";
4
+ import type UI5Element from "../UI5Element.js";
5
+
6
+ const scrollEventName = "scroll";
7
+ const touchEndEventName = supportsTouch() ? "touchend" : "mouseup";
8
+
9
+ type EventListenerParam = {
10
+ isLeft: boolean;
11
+ isRight: boolean
12
+ }
13
+ type EventListenerReturn = void;
14
+
15
+ class ScrollEnablement extends EventProvider<EventListenerParam, EventListenerReturn> {
16
+ containerComponent: UI5Element;
17
+ mouseMove: (event: MouseEvent | TouchEvent) => void;
18
+ mouseUp: (event: MouseEvent | TouchEvent) => void;
19
+ touchStart: (event: MouseEvent | TouchEvent) => void;
20
+ cachedValue: { dragX: number, dragY: number };
21
+ startX: number;
22
+ startY: number;
23
+ _container?: HTMLElement;
24
+ supportsTouch = supportsTouch();
25
+ _canScroll?: boolean;
26
+ _prevDragX?: number;
27
+ _prevDragY?: number;
28
+
29
+ constructor(containerComponent: UI5Element) {
30
+ super();
31
+ this.containerComponent = containerComponent;
32
+ this.mouseMove = this.ontouchmove.bind(this);
33
+ this.mouseUp = this.ontouchend.bind(this);
34
+ this.touchStart = this.ontouchstart.bind(this);
35
+
36
+ this.supportsTouch = supportsTouch();
37
+
38
+ // On Android devices touchmove is thrown one more time than neccessary (together with touchend)
39
+ // so we have to cache the previus coordinates in order to provide correct parameters in the
40
+ // event for Android
41
+ this.cachedValue = { dragX: 0, dragY: 0 };
42
+
43
+ // In components like Carousel you need to know if the user has clicked on something or swiped
44
+ // in order to throw the needed event or not
45
+ this.startX = 0;
46
+ this.startY = 0;
47
+
48
+ if (this.supportsTouch) {
49
+ containerComponent.addEventListener("touchstart", this.touchStart, { passive: true });
50
+ containerComponent.addEventListener("touchmove", this.mouseMove, { passive: true });
51
+ containerComponent.addEventListener("touchend", this.mouseUp, { passive: true });
52
+ } else {
53
+ containerComponent.addEventListener("mousedown", this.touchStart, { passive: true });
54
+ }
55
+ }
56
+
57
+ set scrollContainer(container: HTMLElement) {
58
+ this._container = container;
59
+ }
60
+
61
+ get scrollContainer() {
62
+ return this._container!;
63
+ }
64
+
65
+ /**
66
+ * Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted
67
+ *
68
+ * @param left
69
+ * @param top
70
+ * @param retryCount
71
+ * @param retryInterval
72
+ * @returns {Promise<void>} resolved when scrolled successfully
73
+ */
74
+ async scrollTo(left: number, top: number, retryCount = 0, retryInterval = 0) {
75
+ let containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
76
+
77
+ /* eslint-disable no-loop-func, no-await-in-loop */
78
+ while (!containerPainted && retryCount > 0) {
79
+ await new Promise<void>(resolve => {
80
+ setTimeout(() => {
81
+ containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
82
+ retryCount--;
83
+ resolve();
84
+ }, retryInterval);
85
+ });
86
+ }
87
+ /* eslint-disable no-loop-func, no-await-in-loop */
88
+
89
+ this._container!.scrollLeft = left;
90
+ this._container!.scrollTop = top;
91
+ }
92
+
93
+ move(dx: number, dy: number, disableAnimation: boolean) {
94
+ if (disableAnimation) {
95
+ this._container!.scrollLeft += dx;
96
+ this._container!.scrollTop += dy;
97
+ return;
98
+ }
99
+
100
+ if (this._container) {
101
+ return scroll(this._container, dx, dy);
102
+ }
103
+ }
104
+
105
+ getScrollLeft() {
106
+ return this._container!.scrollLeft;
107
+ }
108
+
109
+ getScrollTop() {
110
+ return this._container!.scrollTop;
111
+ }
112
+
113
+ _isTouchInside(event: TouchEvent | MouseEvent) {
114
+ let touch = null;
115
+ if (this.supportsTouch && event instanceof TouchEvent) {
116
+ touch = event.touches[0];
117
+ }
118
+
119
+ const rect = this._container!.getBoundingClientRect();
120
+ const x = this.supportsTouch ? (touch as TouchInit).clientX : (event as MouseEvent).x;
121
+ const y = this.supportsTouch ? (touch as TouchInit).clientY : (event as MouseEvent).y;
122
+
123
+ return x! >= rect.left && x! <= rect.right
124
+ && y! >= rect.top && y! <= rect.bottom;
125
+ }
126
+
127
+ ontouchstart(event: TouchEvent | MouseEvent) {
128
+ let touch = null;
129
+ if (this.supportsTouch && event instanceof TouchEvent) {
130
+ touch = event.touches[0];
131
+ }
132
+
133
+ if (!this.supportsTouch) {
134
+ document.addEventListener("mouseup", this.mouseUp, { passive: true });
135
+ document.addEventListener("mousemove", this.mouseMove, { passive: true });
136
+ } else {
137
+ // Needed only on mobile
138
+ this.startX = touch!.pageX;
139
+ this.startY = touch!.pageY;
140
+ }
141
+
142
+ if (this.supportsTouch && event instanceof TouchEvent) {
143
+ this._prevDragX = touch!.pageX;
144
+ this._prevDragY = touch!.pageY;
145
+ }
146
+
147
+ if (event instanceof MouseEvent) {
148
+ this._prevDragX = event.x;
149
+ this._prevDragY = event.y;
150
+ }
151
+
152
+ this._canScroll = this._isTouchInside(event);
153
+ }
154
+
155
+ ontouchmove(event: TouchEvent | MouseEvent) {
156
+ if (!this._canScroll) {
157
+ return;
158
+ }
159
+
160
+ const container = this._container;
161
+ const touch = this.supportsTouch ? (event as TouchEvent).touches[0] : null;
162
+
163
+ const dragX = this.supportsTouch ? (touch as TouchInit).pageX : (event as MouseEvent).x;
164
+ const dragY = this.supportsTouch ? (touch as TouchInit).pageY : (event as MouseEvent).y;
165
+
166
+ container!.scrollLeft += this._prevDragX! - dragX!;
167
+ container!.scrollTop += this._prevDragY! - dragY!;
168
+
169
+ this.fireEvent(scrollEventName, {
170
+ isLeft: dragX! > this._prevDragX!,
171
+ isRight: dragX! < this._prevDragX!,
172
+ });
173
+
174
+ this.cachedValue.dragX = this._prevDragX!;
175
+ this.cachedValue.dragY = this._prevDragY!;
176
+
177
+ this._prevDragX = dragX;
178
+ this._prevDragY = dragY;
179
+ }
180
+
181
+ ontouchend(event: TouchEvent | MouseEvent) {
182
+ if (this.supportsTouch) {
183
+ const deltaX = Math.abs((event as TouchEvent).changedTouches[0].pageX - this.startX);
184
+ const deltaY = Math.abs((event as TouchEvent).changedTouches[0].pageY - this.startY);
185
+
186
+ if (deltaX < 10 && deltaY < 10) {
187
+ return;
188
+ }
189
+ }
190
+
191
+ if (!this._canScroll) {
192
+ return;
193
+ }
194
+
195
+ const container = this._container;
196
+ const dragX = this.supportsTouch ? (event as TouchEvent).changedTouches[0].pageX : (event as MouseEvent).x;
197
+ const dragY = this.supportsTouch ? (event as TouchEvent).changedTouches[0].pageY : (event as MouseEvent).y;
198
+
199
+ container!.scrollLeft += this._prevDragX! - dragX;
200
+ container!.scrollTop += this._prevDragY! - dragY;
201
+
202
+ const useCachedValues = dragX === this._prevDragX;
203
+ const _dragX = useCachedValues ? this.cachedValue.dragX : dragX;
204
+ // const _dragY = useCachedValues ? this.cachedValue.dragY : dragY; add if needed
205
+
206
+ this.fireEvent(touchEndEventName, {
207
+ isLeft: _dragX < this._prevDragX!,
208
+ isRight: _dragX > this._prevDragX!,
209
+ });
210
+
211
+ this._prevDragX = dragX;
212
+ this._prevDragY = dragY;
213
+
214
+ if (!this.supportsTouch) {
215
+ document.removeEventListener("mousemove", this.mouseMove);
216
+ document.removeEventListener("mouseup", this.mouseUp);
217
+ }
218
+ }
219
+ }
220
+
221
+ export default ScrollEnablement;
@@ -1,21 +1,25 @@
1
1
  import { registerFeature } from "../FeaturesRegistry.js";
2
2
  import { isF6Next, isF6Previous } from "../Keys.js";
3
+ import { instanceOfUI5Element } from "../UI5Element.js";
3
4
  import { getFirstFocusableElement } from "../util/FocusableElements.js";
4
5
  import getFastNavigationGroups from "../util/getFastNavigationGroups.js";
5
6
 
6
7
  class F6Navigation {
7
- init() {
8
- this.keydownHandler = this._keydownHandler.bind(this);
8
+ static _instance: F6Navigation;
9
+ keydownHandler: (event: KeyboardEvent) => void;
10
+ selectedGroup: HTMLElement | null = null;
11
+ groups: Array<HTMLElement> = [];
12
+
13
+ constructor() {
14
+ this.keydownHandler = this._keydownHandler.bind(this) as (event: KeyboardEvent) => void;
9
15
  this.attachEventListeners();
10
- this.selectedGroup = null;
11
- this.groups = [];
12
16
  }
13
17
 
14
18
  attachEventListeners() {
15
19
  document.addEventListener("keydown", this.keydownHandler);
16
20
  }
17
21
 
18
- async _keydownHandler(event) {
22
+ async _keydownHandler(event: KeyboardEvent) {
19
23
  if (isF6Next(event)) {
20
24
  this.updateGroups();
21
25
 
@@ -25,8 +29,11 @@ class F6Navigation {
25
29
 
26
30
  event.preventDefault();
27
31
 
28
- const nextIndex = this.groups.indexOf(this.selectedGroup);
29
- let nextElement = null;
32
+ let nextIndex = -1;
33
+ let nextElement;
34
+ if (this.selectedGroup) {
35
+ nextIndex = this.groups.indexOf(this.selectedGroup);
36
+ }
30
37
 
31
38
  if (nextIndex > -1) {
32
39
  if (nextIndex + 1 >= this.groups.length) {
@@ -38,8 +45,12 @@ class F6Navigation {
38
45
  nextElement = this.groups[0];
39
46
  }
40
47
 
41
- const elementToFocus = await getFirstFocusableElement(nextElement.isUI5Element ? nextElement.getDomRef() : nextElement, true);
42
- elementToFocus.focus();
48
+ const nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;
49
+
50
+ if (nextElementDomRef) {
51
+ const elementToFocus = await getFirstFocusableElement(nextElementDomRef, true);
52
+ elementToFocus?.focus();
53
+ }
43
54
  }
44
55
 
45
56
  if (isF6Previous(event)) {
@@ -51,8 +62,11 @@ class F6Navigation {
51
62
 
52
63
  event.preventDefault();
53
64
 
54
- const nextIndex = this.groups.indexOf(this.selectedGroup);
55
- let nextElement = null;
65
+ let nextIndex = -1;
66
+ let nextElement;
67
+ if (this.selectedGroup) {
68
+ nextIndex = this.groups.indexOf(this.selectedGroup);
69
+ }
56
70
 
57
71
  if (nextIndex > 0) {
58
72
  // Handle the situation where the first focusable element of two neighbor groups is the same
@@ -72,8 +86,12 @@ class F6Navigation {
72
86
  nextElement = this.groups[this.groups.length - 1];
73
87
  }
74
88
 
75
- const elementToFocus = await getFirstFocusableElement(nextElement.isUI5Element ? nextElement.getDomRef() : nextElement, true);
76
- elementToFocus.focus();
89
+ const nextElementDomRef = instanceOfUI5Element(nextElement) ? nextElement.getDomRef() : nextElement;
90
+
91
+ if (nextElementDomRef) {
92
+ const elementToFocus = await getFirstFocusableElement(nextElementDomRef, true);
93
+ elementToFocus?.focus();
94
+ }
77
95
  }
78
96
  }
79
97
 
@@ -86,31 +104,38 @@ class F6Navigation {
86
104
  this.groups = getFastNavigationGroups(document.body);
87
105
  }
88
106
 
89
- setSelectedGroup(element = document) {
90
- const htmlElement = document.querySelector("html");
91
- element = this.deepActive(element);
107
+ setSelectedGroup(root: DocumentOrShadowRoot = window.document) {
108
+ const htmlElement = window.document.querySelector("html");
109
+ let element: Element | null | ParentNode = this.deepActive(root);
92
110
 
93
- while (element && element.getAttribute("data-sap-ui-fastnavgroup") !== "true" && element !== htmlElement) {
94
- element = element.parentElement ? element.parentNode : element.parentNode.host;
111
+ while (element && (element as Element).getAttribute("data-sap-ui-fastnavgroup") !== "true" && element !== htmlElement) {
112
+ element = element.parentElement ? element.parentNode : (element.parentNode as ShadowRoot).host;
95
113
  }
96
114
 
97
- this.selectedGroup = element;
98
- }
115
+ this.selectedGroup = element as HTMLElement;
116
+ }
99
117
 
100
- deepActive(root) {
118
+ deepActive(root: DocumentOrShadowRoot): Element | null {
101
119
  if (root.activeElement && root.activeElement.shadowRoot) {
102
- return this.deepActive(root.activeElement.shadowRoot);
120
+ return this.deepActive(root.activeElement.shadowRoot);
103
121
  }
104
122
 
105
123
  return root.activeElement;
106
- }
124
+ }
107
125
 
108
126
  destroy() {
109
127
  this.removeEventListeners();
110
128
  }
129
+
130
+ static init() {
131
+ if (!this._instance) {
132
+ this._instance = new F6Navigation();
133
+ }
134
+
135
+ return this._instance;
136
+ }
111
137
  }
112
138
 
113
- const F6HelperInstance = new F6Navigation();
114
- registerFeature("F6Navigation", F6HelperInstance);
139
+ registerFeature("F6Navigation", F6Navigation);
115
140
 
116
141
  export default F6Navigation;
@@ -0,0 +1,11 @@
1
+ import UI5Element from "../UI5Element.js";
2
+
3
+ class OpenUI5Element extends UI5Element {
4
+ __isBusy?: boolean;
5
+ isOpenUI5Component?: boolean;
6
+ __suppressFocusIn?: () => void;
7
+ __suppressFocusBack?: (e: KeyboardEvent) => void;
8
+ __redirectFocus?: boolean;
9
+ }
10
+
11
+ export default OpenUI5Element;
@@ -0,0 +1,117 @@
1
+ import { TemplateResult } from "lit-html";
2
+ import { registerFeature } from "../FeaturesRegistry.js";
3
+ import BusyIndicatorStyles from "../generated/css/BusyIndicator.css.js";
4
+ import merge from "../thirdparty/merge.js";
5
+ import {
6
+ isTabPrevious,
7
+ } from "../Keys.js";
8
+
9
+ import type UI5Element from "../UI5Element.js";
10
+ import type OpenUI5Element from "./OpenUI5Element.js";
11
+
12
+ const busyIndicatorMetadata = {
13
+ properties: {
14
+ __isBusy: {
15
+ type: Boolean,
16
+ },
17
+ },
18
+ };
19
+
20
+ class OpenUI5Enablement {
21
+ static wrapTemplateResultInBusyMarkup(html: (strings: TemplateStringsArray, ...values: Array<unknown>) => TemplateResult, host: OpenUI5Element, templateResult: TemplateResult) {
22
+ if (host.isOpenUI5Component && host.__isBusy) {
23
+ templateResult = html`
24
+ <div class="busy-indicator-wrapper">
25
+ <span tabindex="0" busy-indicator-before-span @focusin=${host.__suppressFocusIn}></span>
26
+ ${templateResult}
27
+ <div class="busy-indicator-overlay"></div>
28
+ <div busy-indicator
29
+ class="busy-indicator-busy-area"
30
+ tabindex="0"
31
+ role="progressbar"
32
+ @keydown=${host.__suppressFocusBack}
33
+ aria-valuemin="0"
34
+ aria-valuemax="100"
35
+ aria-valuetext="Busy">
36
+ <div>
37
+ <div class="busy-indicator-circle circle-animation-0"></div>
38
+ <div class="busy-indicator-circle circle-animation-1"></div>
39
+ <div class="busy-indicator-circle circle-animation-2"></div>
40
+ </div>
41
+ </div>
42
+ </div>`;
43
+ }
44
+
45
+ return templateResult;
46
+ }
47
+
48
+ static enrichBusyIndicatorSettings(klass: typeof UI5Element) {
49
+ OpenUI5Enablement.enrichBusyIndicatorMetadata(klass);
50
+ OpenUI5Enablement.enrichBusyIndicatorMethods(klass.prototype);
51
+ }
52
+
53
+ static enrichBusyIndicatorMetadata(klass: typeof UI5Element) {
54
+ klass.metadata = merge(klass.metadata, busyIndicatorMetadata);
55
+ }
56
+
57
+ static enrichBusyIndicatorMethods(UI5ElementPrototype: typeof OpenUI5Element.prototype) {
58
+ Object.defineProperties(UI5ElementPrototype, {
59
+ "__redirectFocus": { value: true, writable: true },
60
+ "__suppressFocusBack": {
61
+ get() {
62
+ return {
63
+ handleEvent: (e: KeyboardEvent) => {
64
+ if (isTabPrevious(e)) {
65
+ const beforeElem = this.shadowRoot.querySelector("[busy-indicator-before-span]");
66
+ this.__redirectFocus = false;
67
+ beforeElem.focus();
68
+ this.__redirectFocus = true;
69
+ }
70
+ },
71
+ capture: true,
72
+ passive: false,
73
+ };
74
+ },
75
+ },
76
+ "isOpenUI5Component": { get: () => { return true; } },
77
+ });
78
+
79
+ UI5ElementPrototype.__suppressFocusIn = function handleFocusIn() {
80
+ const busyIndicator = this.shadowRoot?.querySelector("[busy-indicator]") as HTMLElement;
81
+ if (busyIndicator && this.__redirectFocus) {
82
+ busyIndicator.focus();
83
+ }
84
+ };
85
+
86
+ UI5ElementPrototype.getDomRef = function getDomRef() {
87
+ // If a component set _getRealDomRef to its children, use the return value of this function
88
+ if (typeof this._getRealDomRef === "function") {
89
+ return this._getRealDomRef();
90
+ }
91
+
92
+ if (!this.shadowRoot || this.shadowRoot.children.length === 0) {
93
+ return;
94
+ }
95
+
96
+ const children = [...this.shadowRoot.children].filter(child => !["link", "style"].includes(child.localName));
97
+
98
+ if (children.length !== 1) {
99
+ console.warn(`The shadow DOM for ${(this.constructor as typeof UI5Element).getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line
100
+ }
101
+
102
+ if (this.__isBusy) {
103
+ return children[0].querySelector(".busy-indicator-wrapper > :not([busy-indicator-before-span]):not(.busy-indicator-overlay):not(.busy-indicator-busy-area)") as HTMLElement;
104
+ }
105
+
106
+ return children[0] as HTMLElement;
107
+ };
108
+ }
109
+
110
+ static getBusyIndicatorStyles() {
111
+ return BusyIndicatorStyles;
112
+ }
113
+ }
114
+
115
+ registerFeature("OpenUI5Enablement", OpenUI5Enablement);
116
+
117
+ export default OpenUI5Enablement;