@ui5/webcomponents-base 0.0.0-4180fe799 → 0.0.0-4738ea0dc

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 (694) hide show
  1. package/.eslintignore +3 -1
  2. package/CHANGELOG.md +437 -0
  3. package/README.md +28 -6
  4. package/bundle.esm.js +15 -11
  5. package/dist/AssetRegistry.d.ts +5 -0
  6. package/dist/AssetRegistry.js +2 -7
  7. package/dist/AssetRegistry.js.map +1 -0
  8. package/dist/Boot.d.ts +8 -0
  9. package/dist/Boot.js +35 -30
  10. package/dist/Boot.js.map +1 -0
  11. package/dist/CSP.d.ts +30 -0
  12. package/dist/CSP.js +16 -24
  13. package/dist/CSP.js.map +1 -0
  14. package/dist/CustomElementsRegistry.d.ts +5 -0
  15. package/dist/CustomElementsRegistry.js +69 -30
  16. package/dist/CustomElementsRegistry.js.map +1 -0
  17. package/dist/CustomElementsScope.d.ts +7 -0
  18. package/dist/CustomElementsScope.js +11 -108
  19. package/dist/CustomElementsScope.js.map +1 -0
  20. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  21. package/dist/CustomElementsScopeUtils.js +90 -0
  22. package/dist/CustomElementsScopeUtils.js.map +1 -0
  23. package/dist/DOMObserver.d.ts +11 -0
  24. package/dist/DOMObserver.js +12 -54
  25. package/dist/DOMObserver.js.map +1 -0
  26. package/dist/Device.d.ts +12 -0
  27. package/dist/Device.js +148 -89
  28. package/dist/Device.js.map +1 -0
  29. package/dist/EventProvider.d.ts +25 -0
  30. package/dist/EventProvider.js +67 -82
  31. package/dist/EventProvider.js.map +1 -0
  32. package/dist/FeaturesRegistry.d.ts +3 -0
  33. package/dist/FeaturesRegistry.js +5 -7
  34. package/dist/FeaturesRegistry.js.map +1 -0
  35. package/dist/FontFace.d.ts +2 -0
  36. package/dist/FontFace.js +14 -19
  37. package/dist/FontFace.js.map +1 -0
  38. package/dist/InitialConfiguration.d.ts +22 -0
  39. package/dist/InitialConfiguration.js +112 -131
  40. package/dist/InitialConfiguration.js.map +1 -0
  41. package/dist/Keys.d.ts +57 -0
  42. package/dist/Keys.js +174 -244
  43. package/dist/Keys.js.map +1 -0
  44. package/dist/ManagedStyles.d.ts +8 -0
  45. package/dist/ManagedStyles.js +62 -68
  46. package/dist/ManagedStyles.js.map +1 -0
  47. package/dist/MarkedEvents.d.ts +9 -0
  48. package/dist/MarkedEvents.js +15 -0
  49. package/dist/MarkedEvents.js.map +1 -0
  50. package/dist/MediaRange.d.ts +37 -0
  51. package/dist/MediaRange.js +54 -65
  52. package/dist/MediaRange.js.map +1 -0
  53. package/dist/PropertiesFileFormat.d.ts +8 -0
  54. package/dist/PropertiesFileFormat.js +72 -82
  55. package/dist/PropertiesFileFormat.js.map +1 -0
  56. package/dist/Render.d.ts +47 -0
  57. package/dist/Render.js +81 -113
  58. package/dist/Render.js.map +1 -0
  59. package/dist/RenderQueue.d.ts +19 -0
  60. package/dist/RenderQueue.js +52 -62
  61. package/dist/RenderQueue.js.map +1 -0
  62. package/dist/Runtimes.d.ts +27 -0
  63. package/dist/Runtimes.js +86 -0
  64. package/dist/Runtimes.js.map +1 -0
  65. package/dist/StaticArea.d.ts +0 -0
  66. package/dist/StaticArea.js +4 -1
  67. package/dist/StaticArea.js.map +1 -0
  68. package/dist/StaticAreaItem.d.ts +36 -0
  69. package/dist/StaticAreaItem.js +85 -84
  70. package/dist/StaticAreaItem.js.map +1 -0
  71. package/dist/SystemCSSVars.d.ts +2 -0
  72. package/dist/SystemCSSVars.js +4 -5
  73. package/dist/SystemCSSVars.js.map +1 -0
  74. package/dist/Theming.d.ts +3 -0
  75. package/dist/Theming.js +1 -1
  76. package/dist/Theming.js.map +1 -0
  77. package/dist/UI5Element.d.ts +378 -0
  78. package/dist/UI5Element.js +917 -980
  79. package/dist/UI5Element.js.map +1 -0
  80. package/dist/UI5ElementMetadata.d.ts +150 -0
  81. package/dist/UI5ElementMetadata.js +278 -306
  82. package/dist/UI5ElementMetadata.js.map +1 -0
  83. package/dist/animations/AnimationQueue.d.ts +8 -0
  84. package/dist/animations/AnimationQueue.js +31 -38
  85. package/dist/animations/AnimationQueue.js.map +1 -0
  86. package/dist/animations/animate.d.ts +14 -0
  87. package/dist/animations/animate.js +46 -51
  88. package/dist/animations/animate.js.map +1 -0
  89. package/dist/animations/scroll.d.ts +5 -0
  90. package/dist/animations/scroll.js +18 -27
  91. package/dist/animations/scroll.js.map +1 -0
  92. package/dist/animations/slideDown.d.ts +5 -0
  93. package/dist/animations/slideDown.js +53 -78
  94. package/dist/animations/slideDown.js.map +1 -0
  95. package/dist/animations/slideUp.d.ts +5 -0
  96. package/dist/animations/slideUp.js +49 -70
  97. package/dist/animations/slideUp.js.map +1 -0
  98. package/dist/api.json +1 -0
  99. package/dist/asset-registries/Icons.d.ts +30 -0
  100. package/dist/asset-registries/Icons.js +88 -123
  101. package/dist/asset-registries/Icons.js.map +1 -0
  102. package/dist/asset-registries/Illustrations.d.ts +17 -0
  103. package/dist/asset-registries/Illustrations.js +41 -25
  104. package/dist/asset-registries/Illustrations.js.map +1 -0
  105. package/dist/asset-registries/LocaleData.d.ts +7 -0
  106. package/dist/asset-registries/LocaleData.js +104 -127
  107. package/dist/asset-registries/LocaleData.js.map +1 -0
  108. package/dist/asset-registries/Themes.d.ts +11 -0
  109. package/dist/asset-registries/Themes.js +38 -66
  110. package/dist/asset-registries/Themes.js.map +1 -0
  111. package/dist/asset-registries/i18n.d.ts +23 -0
  112. package/dist/asset-registries/i18n.js +55 -81
  113. package/dist/asset-registries/i18n.js.map +1 -0
  114. package/dist/assets/bundle.esm.0059c2ef.js +60 -0
  115. package/dist/assets-meta/IconCollectionsAlias.d.ts +31 -0
  116. package/dist/assets-meta/IconCollectionsAlias.js +30 -10
  117. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  118. package/dist/config/AnimationMode.d.ts +14 -0
  119. package/dist/config/AnimationMode.js +21 -18
  120. package/dist/config/AnimationMode.js.map +1 -0
  121. package/dist/config/CalendarType.d.ts +8 -0
  122. package/dist/config/CalendarType.js +13 -12
  123. package/dist/config/CalendarType.js.map +1 -0
  124. package/dist/config/FormatSettings.d.ts +15 -0
  125. package/dist/config/FormatSettings.js +15 -9
  126. package/dist/config/FormatSettings.js.map +1 -0
  127. package/dist/config/Icons.d.ts +55 -0
  128. package/dist/config/Icons.js +103 -0
  129. package/dist/config/Icons.js.map +1 -0
  130. package/dist/config/Language.d.ts +31 -0
  131. package/dist/config/Language.js +31 -43
  132. package/dist/config/Language.js.map +1 -0
  133. package/dist/config/NoConflict.d.ts +20 -0
  134. package/dist/config/NoConflict.js +40 -41
  135. package/dist/config/NoConflict.js.map +1 -0
  136. package/dist/config/RTL.d.ts +7 -0
  137. package/dist/config/RTL.js +26 -20
  138. package/dist/config/RTL.js.map +1 -0
  139. package/dist/config/Theme.d.ts +28 -0
  140. package/dist/config/Theme.js +38 -29
  141. package/dist/config/Theme.js.map +1 -0
  142. package/dist/config/ThemeRoots.d.ts +4 -0
  143. package/dist/config/ThemeRoots.js +28 -0
  144. package/dist/config/ThemeRoots.js.map +1 -0
  145. package/dist/css/BusyIndicator.css +80 -0
  146. package/dist/css/FontFace.css +31 -10
  147. package/dist/decorators/customElement.d.ts +23 -0
  148. package/dist/decorators/customElement.js +31 -0
  149. package/dist/decorators/customElement.js.map +1 -0
  150. package/dist/decorators/event.d.ts +10 -0
  151. package/dist/decorators/event.js +24 -0
  152. package/dist/decorators/event.js.map +1 -0
  153. package/dist/decorators/fastNavigation.d.ts +7 -0
  154. package/dist/decorators/fastNavigation.js +13 -0
  155. package/dist/decorators/fastNavigation.js.map +1 -0
  156. package/dist/decorators/languageAware.d.ts +7 -0
  157. package/dist/decorators/languageAware.js +13 -0
  158. package/dist/decorators/languageAware.js.map +1 -0
  159. package/dist/decorators/property.d.ts +9 -0
  160. package/dist/decorators/property.js +24 -0
  161. package/dist/decorators/property.js.map +1 -0
  162. package/dist/decorators/slot.d.ts +9 -0
  163. package/dist/decorators/slot.js +37 -0
  164. package/dist/decorators/slot.js.map +1 -0
  165. package/dist/decorators/themeAware.d.ts +7 -0
  166. package/dist/decorators/themeAware.js +13 -0
  167. package/dist/decorators/themeAware.js.map +1 -0
  168. package/dist/delegate/ItemNavigation.d.ts +113 -0
  169. package/dist/delegate/ItemNavigation.js +277 -312
  170. package/dist/delegate/ItemNavigation.js.map +1 -0
  171. package/dist/delegate/ResizeHandler.d.ts +25 -0
  172. package/dist/delegate/ResizeHandler.js +70 -91
  173. package/dist/delegate/ResizeHandler.js.map +1 -0
  174. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  175. package/dist/delegate/ScrollEnablement.js +157 -180
  176. package/dist/delegate/ScrollEnablement.js.map +1 -0
  177. package/dist/features/F6Navigation.d.ts +19 -0
  178. package/dist/features/F6Navigation.js +151 -0
  179. package/dist/features/F6Navigation.js.map +1 -0
  180. package/dist/features/LegacyDateFormats.d.ts +18 -0
  181. package/dist/features/LegacyDateFormats.js +20 -0
  182. package/dist/features/LegacyDateFormats.js.map +1 -0
  183. package/dist/features/OpenUI5Element.d.ts +9 -0
  184. package/dist/features/OpenUI5Element.js +5 -0
  185. package/dist/features/OpenUI5Element.js.map +1 -0
  186. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  187. package/dist/features/OpenUI5Enablement.js +96 -0
  188. package/dist/features/OpenUI5Enablement.js.map +1 -0
  189. package/dist/features/OpenUI5Support.d.ts +25 -0
  190. package/dist/features/OpenUI5Support.js +92 -119
  191. package/dist/features/OpenUI5Support.js.map +1 -0
  192. package/dist/generated/AssetParameters.js +1 -1
  193. package/dist/generated/VersionInfo.js +10 -0
  194. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  195. package/dist/generated/css/BusyIndicator.css.js +7 -0
  196. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  197. package/dist/generated/css/FontFace.css.d.ts +3 -0
  198. package/dist/generated/css/FontFace.css.js +7 -5
  199. package/dist/generated/css/FontFace.css.js.map +1 -0
  200. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  201. package/dist/generated/css/OverrideFontFace.css.js +7 -5
  202. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  203. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  204. package/dist/generated/css/SystemCSSVars.css.js +7 -5
  205. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  206. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  207. package/dist/getSharedResource.d.ts +11 -0
  208. package/dist/getSharedResource.js +21 -17
  209. package/dist/getSharedResource.js.map +1 -0
  210. package/dist/global.d.ts +38 -0
  211. package/dist/i18nBundle.d.ts +43 -0
  212. package/dist/i18nBundle.js +56 -64
  213. package/dist/i18nBundle.js.map +1 -0
  214. package/dist/locale/Locale.d.ts +22 -0
  215. package/dist/locale/Locale.js +75 -87
  216. package/dist/locale/Locale.js.map +1 -0
  217. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  218. package/dist/locale/RTLAwareRegistry.js +6 -11
  219. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  220. package/dist/locale/applyDirection.d.ts +10 -0
  221. package/dist/locale/applyDirection.js +7 -7
  222. package/dist/locale/applyDirection.js.map +1 -0
  223. package/dist/locale/directionChange.d.ts +15 -0
  224. package/dist/locale/directionChange.js +7 -15
  225. package/dist/locale/directionChange.js.map +1 -0
  226. package/dist/locale/getEffectiveDir.d.ts +2 -0
  227. package/dist/locale/getEffectiveDir.js +20 -24
  228. package/dist/locale/getEffectiveDir.js.map +1 -0
  229. package/dist/locale/getLocale.d.ts +7 -0
  230. package/dist/locale/getLocale.js +26 -29
  231. package/dist/locale/getLocale.js.map +1 -0
  232. package/dist/locale/languageChange.d.ts +5 -0
  233. package/dist/locale/languageChange.js +8 -16
  234. package/dist/locale/languageChange.js.map +1 -0
  235. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  236. package/dist/locale/nextFallbackLocale.js +15 -19
  237. package/dist/locale/nextFallbackLocale.js.map +1 -0
  238. package/dist/locale/normalizeLocale.d.ts +7 -0
  239. package/dist/locale/normalizeLocale.js +34 -41
  240. package/dist/locale/normalizeLocale.js.map +1 -0
  241. package/dist/renderer/LitRenderer.d.ts +14 -0
  242. package/dist/renderer/LitRenderer.js +31 -24
  243. package/dist/renderer/LitRenderer.js.map +1 -0
  244. package/dist/renderer/executeTemplate.d.ts +13 -0
  245. package/dist/renderer/executeTemplate.js +20 -7
  246. package/dist/renderer/executeTemplate.js.map +1 -0
  247. package/dist/sap/base/Log.js +28 -29
  248. package/dist/sap/base/assert.js +5 -6
  249. package/dist/sap/base/security/URLListValidator.js +13 -2
  250. package/dist/sap/base/security/encodeCSS.js +14 -0
  251. package/dist/sap/base/security/encodeXML.js +23 -0
  252. package/dist/sap/base/strings/toHex.js +8 -0
  253. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  254. package/dist/theming/CustomStyle.d.ts +6 -0
  255. package/dist/theming/CustomStyle.js +39 -31
  256. package/dist/theming/CustomStyle.js.map +1 -0
  257. package/dist/theming/ThemeLoaded.d.ts +5 -0
  258. package/dist/theming/ThemeLoaded.js +8 -16
  259. package/dist/theming/ThemeLoaded.js.map +1 -0
  260. package/dist/theming/applyTheme.d.ts +2 -0
  261. package/dist/theming/applyTheme.js +60 -60
  262. package/dist/theming/applyTheme.js.map +1 -0
  263. package/dist/theming/getConstructableStyle.d.ts +9 -0
  264. package/dist/theming/getConstructableStyle.js +12 -17
  265. package/dist/theming/getConstructableStyle.js.map +1 -0
  266. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  267. package/dist/theming/getEffectiveLinksHrefs.js +13 -16
  268. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  269. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  270. package/dist/theming/getEffectiveStyle.js +25 -23
  271. package/dist/theming/getEffectiveStyle.js.map +1 -0
  272. package/dist/theming/getStylesString.d.ts +3 -0
  273. package/dist/theming/getStylesString.js +9 -13
  274. package/dist/theming/getStylesString.js.map +1 -0
  275. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  276. package/dist/theming/getThemeDesignerTheme.js +73 -61
  277. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  278. package/dist/theming/preloadLinks.d.ts +3 -0
  279. package/dist/theming/preloadLinks.js +13 -17
  280. package/dist/theming/preloadLinks.js.map +1 -0
  281. package/dist/thirdparty/_merge.d.ts +2 -0
  282. package/dist/thirdparty/_merge.js +7 -4
  283. package/dist/thirdparty/_merge.js.map +1 -0
  284. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  285. package/dist/thirdparty/isPlainObject.js +11 -10
  286. package/dist/thirdparty/isPlainObject.js.map +1 -0
  287. package/dist/thirdparty/merge.d.ts +2 -0
  288. package/dist/thirdparty/merge.js +4 -8
  289. package/dist/thirdparty/merge.js.map +1 -0
  290. package/dist/types/AnimationMode.d.ts +32 -0
  291. package/dist/types/AnimationMode.js +33 -6
  292. package/dist/types/AnimationMode.js.map +1 -0
  293. package/dist/types/CSSColor.d.ts +16 -0
  294. package/dist/types/CSSColor.js +15 -5
  295. package/dist/types/CSSColor.js.map +1 -0
  296. package/dist/types/CalendarType.d.ts +37 -0
  297. package/dist/types/CalendarType.js +35 -18
  298. package/dist/types/CalendarType.js.map +1 -0
  299. package/dist/types/DOMReference.d.ts +17 -0
  300. package/dist/types/DOMReference.js +25 -0
  301. package/dist/types/DOMReference.js.map +1 -0
  302. package/dist/types/DataType.d.ts +25 -0
  303. package/dist/types/DataType.js +33 -26
  304. package/dist/types/DataType.js.map +1 -0
  305. package/dist/types/Float.d.ts +18 -0
  306. package/dist/types/Float.js +18 -10
  307. package/dist/types/Float.js.map +1 -0
  308. package/dist/types/Integer.d.ts +18 -0
  309. package/dist/types/Integer.js +18 -9
  310. package/dist/types/Integer.js.map +1 -0
  311. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  312. package/dist/types/InvisibleMessageMode.js +20 -23
  313. package/dist/types/InvisibleMessageMode.js.map +1 -0
  314. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  315. package/dist/types/ItemNavigationBehavior.js +22 -12
  316. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  317. package/dist/types/NavigationMode.d.ts +32 -0
  318. package/dist/types/NavigationMode.js +33 -6
  319. package/dist/types/NavigationMode.js.map +1 -0
  320. package/dist/types/ValueState.d.ts +42 -0
  321. package/dist/types/ValueState.js +41 -19
  322. package/dist/types/ValueState.js.map +1 -0
  323. package/dist/types.d.ts +18 -0
  324. package/dist/types.js +2 -0
  325. package/dist/types.js.map +1 -0
  326. package/dist/updateShadowRoot.d.ts +8 -0
  327. package/dist/updateShadowRoot.js +25 -17
  328. package/dist/updateShadowRoot.js.map +1 -0
  329. package/dist/util/AriaLabelHelper.d.ts +15 -0
  330. package/dist/util/AriaLabelHelper.js +166 -36
  331. package/dist/util/AriaLabelHelper.js.map +1 -0
  332. package/dist/util/Caret.d.ts +7 -0
  333. package/dist/util/Caret.js +16 -38
  334. package/dist/util/Caret.js.map +1 -0
  335. package/dist/util/ColorConversion.d.ts +30 -0
  336. package/dist/util/ColorConversion.js +315 -348
  337. package/dist/util/ColorConversion.js.map +1 -0
  338. package/dist/util/FetchHelper.d.ts +3 -0
  339. package/dist/util/FetchHelper.js +19 -25
  340. package/dist/util/FetchHelper.js.map +1 -0
  341. package/dist/util/FocusableElements.d.ts +4 -0
  342. package/dist/util/FocusableElements.js +66 -72
  343. package/dist/util/FocusableElements.js.map +1 -0
  344. package/dist/util/HTMLSanitizer.d.ts +3 -0
  345. package/dist/util/HTMLSanitizer.js +4 -5
  346. package/dist/util/HTMLSanitizer.js.map +1 -0
  347. package/dist/util/InvisibleMessage.d.ts +10 -0
  348. package/dist/util/InvisibleMessage.js +42 -44
  349. package/dist/util/InvisibleMessage.js.map +1 -0
  350. package/dist/util/PopupUtils.d.ts +7 -0
  351. package/dist/util/PopupUtils.js +58 -77
  352. package/dist/util/PopupUtils.js.map +1 -0
  353. package/dist/util/SlotsHelper.d.ts +9 -0
  354. package/dist/util/SlotsHelper.js +22 -35
  355. package/dist/util/SlotsHelper.js.map +1 -0
  356. package/dist/util/StringHelper.d.ts +3 -0
  357. package/dist/util/StringHelper.js +17 -20
  358. package/dist/util/StringHelper.js.map +1 -0
  359. package/dist/util/TabbableElements.d.ts +17 -0
  360. package/dist/util/TabbableElements.js +53 -43
  361. package/dist/util/TabbableElements.js.map +1 -0
  362. package/dist/util/arraysAreEqual.d.ts +2 -0
  363. package/dist/util/arraysAreEqual.js +10 -12
  364. package/dist/util/arraysAreEqual.js.map +1 -0
  365. package/dist/util/clamp.d.ts +9 -0
  366. package/dist/util/clamp.js +2 -2
  367. package/dist/util/clamp.js.map +1 -0
  368. package/dist/util/createLinkInHead.d.ts +7 -0
  369. package/dist/util/createLinkInHead.js +14 -12
  370. package/dist/util/createLinkInHead.js.map +1 -0
  371. package/dist/util/createStyleInHead.d.ts +8 -0
  372. package/dist/util/createStyleInHead.js +10 -10
  373. package/dist/util/createStyleInHead.js.map +1 -0
  374. package/dist/util/debounce.d.ts +2 -0
  375. package/dist/util/debounce.js +6 -8
  376. package/dist/util/debounce.js.map +1 -0
  377. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  378. package/dist/util/detectNavigatorLanguage.js +7 -10
  379. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  380. package/dist/util/escapeRegex.d.ts +8 -0
  381. package/dist/util/escapeRegex.js +11 -0
  382. package/dist/util/escapeRegex.js.map +1 -0
  383. package/dist/util/formatMessage.d.ts +2 -0
  384. package/dist/util/formatMessage.js +15 -19
  385. package/dist/util/formatMessage.js.map +1 -0
  386. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  387. package/dist/util/generateHighlightedMarkup.js +41 -0
  388. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  389. package/dist/util/getActiveElement.d.ts +2 -0
  390. package/dist/util/getActiveElement.js +6 -8
  391. package/dist/util/getActiveElement.js.map +1 -0
  392. package/dist/util/getClassCopy.d.ts +398 -0
  393. package/dist/util/getClassCopy.js +7 -7
  394. package/dist/util/getClassCopy.js.map +1 -0
  395. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  396. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  397. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  398. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  399. package/dist/util/getEffectiveContentDensity.js +2 -3
  400. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  401. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  402. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  403. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  404. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  405. package/dist/util/getFastNavigationGroups.js +51 -0
  406. package/dist/util/getFastNavigationGroups.js.map +1 -0
  407. package/dist/util/getFileExtension.d.ts +12 -0
  408. package/dist/util/getFileExtension.js +9 -11
  409. package/dist/util/getFileExtension.js.map +1 -0
  410. package/dist/util/getNormalizedTarget.d.ts +7 -0
  411. package/dist/util/getNormalizedTarget.js +14 -0
  412. package/dist/util/getNormalizedTarget.js.map +1 -0
  413. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  414. package/dist/util/getSingletonElementInstance.js +7 -10
  415. package/dist/util/getSingletonElementInstance.js.map +1 -0
  416. package/dist/util/isElementClickable.d.ts +2 -0
  417. package/dist/util/isElementClickable.js +16 -0
  418. package/dist/util/isElementClickable.js.map +1 -0
  419. package/dist/util/isElementHidden.d.ts +2 -0
  420. package/dist/util/isElementHidden.js +8 -0
  421. package/dist/util/isElementHidden.js.map +1 -0
  422. package/dist/util/isElementInView.d.ts +6 -0
  423. package/dist/util/isElementInView.js +6 -9
  424. package/dist/util/isElementInView.js.map +1 -0
  425. package/dist/util/isElementTabbable.d.ts +9 -0
  426. package/dist/util/isElementTabbable.js +30 -0
  427. package/dist/util/isElementTabbable.js.map +1 -0
  428. package/dist/util/isValidPropertyName.d.ts +8 -0
  429. package/dist/util/isValidPropertyName.js +16 -17
  430. package/dist/util/isValidPropertyName.js.map +1 -0
  431. package/dist/util/whenDOMReady.d.ts +2 -0
  432. package/dist/util/whenDOMReady.js +11 -10
  433. package/dist/util/whenDOMReady.js.map +1 -0
  434. package/dist/util/willShowContent.d.ts +2 -0
  435. package/dist/util/willShowContent.js +7 -0
  436. package/dist/util/willShowContent.js.map +1 -0
  437. package/dist/validateThemeRoot.d.ts +2 -0
  438. package/dist/validateThemeRoot.js +47 -0
  439. package/dist/validateThemeRoot.js.map +1 -0
  440. package/lib/generate-asset-parameters/index.js +8 -4
  441. package/lib/generate-styles/index.js +24 -11
  442. package/lib/generate-version-info/index.js +32 -0
  443. package/package-scripts.js +34 -28
  444. package/package.json +7 -6
  445. package/src/Boot.ts +65 -0
  446. package/src/{CSP.js → CSP.ts} +14 -7
  447. package/src/CustomElementsRegistry.ts +98 -0
  448. package/src/CustomElementsScope.ts +33 -0
  449. package/src/{CustomElementsScope.js → CustomElementsScopeUtils.ts} +14 -7
  450. package/src/DOMObserver.ts +28 -0
  451. package/src/Device.ts +203 -0
  452. package/src/{EventProvider.js → EventProvider.ts} +9 -7
  453. package/src/FeaturesRegistry.ts +14 -0
  454. package/src/{FontFace.js → FontFace.ts} +3 -2
  455. package/src/{InitialConfiguration.js → InitialConfiguration.ts} +54 -13
  456. package/src/Keys.ts +295 -0
  457. package/src/ManagedStyles.ts +92 -0
  458. package/src/MarkedEvents.ts +20 -0
  459. package/src/{MediaRange.js → MediaRange.ts} +54 -53
  460. package/src/{PropertiesFileFormat.js → PropertiesFileFormat.ts} +8 -8
  461. package/src/{Render.js → Render.ts} +25 -20
  462. package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
  463. package/src/Runtimes.ts +114 -0
  464. package/src/{StaticAreaItem.js → StaticAreaItem.ts} +33 -18
  465. package/src/{UI5Element.js → UI5Element.ts} +289 -148
  466. package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +129 -59
  467. package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
  468. package/src/animations/animate.ts +64 -0
  469. package/src/animations/scroll.ts +21 -0
  470. package/src/animations/{slideDown.js → slideDown.ts} +27 -34
  471. package/src/animations/{slideUp.js → slideUp.ts} +28 -32
  472. package/src/asset-registries/Icons.ts +161 -0
  473. package/src/asset-registries/Illustrations.ts +75 -0
  474. package/src/asset-registries/{LocaleData.js → LocaleData.ts} +42 -29
  475. package/src/asset-registries/Themes.ts +72 -0
  476. package/src/asset-registries/{i18n.js → i18n.ts} +21 -24
  477. package/src/assets-meta/IconCollectionsAlias.ts +41 -0
  478. package/src/config/AnimationMode.ts +33 -0
  479. package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
  480. package/src/config/FormatSettings.ts +35 -0
  481. package/src/config/Icons.ts +126 -0
  482. package/src/config/{Language.js → Language.ts} +22 -18
  483. package/src/config/NoConflict.ts +67 -0
  484. package/src/config/{RTL.js → RTL.ts} +18 -4
  485. package/src/config/Theme.ts +64 -0
  486. package/src/config/ThemeRoots.ts +41 -0
  487. package/src/css/BusyIndicator.css +80 -0
  488. package/src/css/FontFace.css +31 -10
  489. package/src/decorators/customElement.ts +57 -0
  490. package/src/decorators/event.ts +28 -0
  491. package/src/decorators/fastNavigation.ts +14 -0
  492. package/src/decorators/languageAware.ts +14 -0
  493. package/src/decorators/property.ts +30 -0
  494. package/src/decorators/slot.ts +49 -0
  495. package/src/decorators/themeAware.ts +14 -0
  496. package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +65 -23
  497. package/src/delegate/ResizeHandler.ts +100 -0
  498. package/src/delegate/ScrollEnablement.ts +224 -0
  499. package/src/features/F6Navigation.ts +195 -0
  500. package/src/features/LegacyDateFormats.ts +40 -0
  501. package/src/features/OpenUI5Element.ts +11 -0
  502. package/src/features/OpenUI5Enablement.ts +117 -0
  503. package/src/features/OpenUI5Support.ts +153 -0
  504. package/src/generated/css/BusyIndicator.css.ts +9 -0
  505. package/src/generated/css/FontFace.css.ts +9 -0
  506. package/src/generated/css/OverrideFontFace.css.ts +9 -0
  507. package/src/generated/css/SystemCSSVars.css.ts +9 -0
  508. package/src/{getSharedResource.js → getSharedResource.ts} +13 -4
  509. package/src/global.d.ts +38 -0
  510. package/src/{i18nBundle.js → i18nBundle.ts} +44 -22
  511. package/src/locale/{Locale.js → Locale.ts} +15 -5
  512. package/src/locale/RTLAwareRegistry.ts +16 -0
  513. package/src/locale/{applyDirection.js → applyDirection.ts} +4 -3
  514. package/src/locale/{directionChange.js → directionChange.ts} +6 -4
  515. package/src/locale/{getEffectiveDir.js → getEffectiveDir.ts} +1 -1
  516. package/src/locale/{getLocale.js → getLocale.ts} +12 -7
  517. package/src/locale/languageChange.ts +24 -0
  518. package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
  519. package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +5 -3
  520. package/src/renderer/LitRenderer.ts +60 -0
  521. package/src/renderer/executeTemplate.ts +40 -0
  522. package/src/theming/CustomStyle.ts +64 -0
  523. package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
  524. package/src/theming/{applyTheme.js → applyTheme.ts} +30 -15
  525. package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
  526. package/src/theming/getEffectiveLinksHrefs.ts +26 -0
  527. package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +15 -4
  528. package/src/theming/getStylesString.ts +15 -0
  529. package/src/theming/getThemeDesignerTheme.ts +101 -0
  530. package/src/theming/{preloadLinks.js → preloadLinks.ts} +3 -2
  531. package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
  532. package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
  533. package/src/thirdparty/merge.ts +5 -0
  534. package/src/types/AnimationMode.ts +33 -0
  535. package/src/types/{CSSColor.js → CSSColor.ts} +12 -1
  536. package/src/types/CalendarType.ts +38 -0
  537. package/src/types/DOMReference.ts +28 -0
  538. package/src/types/DataType.ts +51 -0
  539. package/src/types/Float.ts +25 -0
  540. package/src/types/Integer.ts +25 -0
  541. package/src/types/InvisibleMessageMode.ts +27 -0
  542. package/src/types/ItemNavigationBehavior.ts +26 -0
  543. package/src/types/NavigationMode.ts +33 -0
  544. package/src/types/ValueState.ts +47 -0
  545. package/src/types.ts +30 -0
  546. package/src/updateShadowRoot.ts +42 -0
  547. package/src/util/AriaLabelHelper.ts +218 -0
  548. package/src/util/Caret.ts +28 -0
  549. package/src/util/ColorConversion.ts +399 -0
  550. package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
  551. package/src/util/FocusableElements.ts +92 -0
  552. package/src/util/{HTMLSanitizer.js → HTMLSanitizer.ts} +2 -0
  553. package/src/util/{InvisibleMessage.js → InvisibleMessage.ts} +25 -14
  554. package/src/util/PopupUtils.ts +112 -0
  555. package/src/util/{SlotsHelper.js → SlotsHelper.ts} +9 -13
  556. package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
  557. package/src/util/TabbableElements.ts +70 -0
  558. package/src/util/{arraysAreEqual.js → arraysAreEqual.ts} +1 -1
  559. package/src/util/{clamp.js → clamp.ts} +1 -1
  560. package/src/util/{createLinkInHead.js → createLinkInHead.ts} +10 -4
  561. package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
  562. package/src/util/{debounce.js → debounce.ts} +5 -4
  563. package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
  564. package/src/util/escapeRegex.ts +11 -0
  565. package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
  566. package/src/util/generateHighlightedMarkup.ts +43 -0
  567. package/src/util/{getClassCopy.js → getClassCopy.ts} +3 -1
  568. package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
  569. package/src/util/getEffectiveContentDensity.ts +5 -0
  570. package/src/util/getEffectiveScrollbarStyle.ts +5 -0
  571. package/src/util/getFastNavigationGroups.ts +63 -0
  572. package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
  573. package/src/util/getNormalizedTarget.ts +16 -0
  574. package/src/util/{getSingletonElementInstance.js → getSingletonElementInstance.ts} +1 -1
  575. package/src/util/isElementClickable.ts +19 -0
  576. package/src/util/isElementHidden.ts +9 -0
  577. package/src/util/{isElementInView.js → isElementInView.ts} +1 -1
  578. package/src/util/isElementTabbable.ts +37 -0
  579. package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +1 -1
  580. package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
  581. package/src/util/willShowContent.ts +7 -0
  582. package/src/validateThemeRoot.ts +58 -0
  583. package/tsconfig.json +13 -0
  584. package/used-modules.txt +4 -1
  585. package/config/.eslintrc.js +0 -3
  586. package/config/rollup.config.js +0 -1
  587. package/dist/RenderScheduler.js +0 -44
  588. package/dist/animations/config.js +0 -5
  589. package/dist/isLegacyBrowser.js +0 -3
  590. package/dist/resources/bundle.esm.js +0 -37
  591. package/dist/resources/bundle.esm.js.map +0 -1
  592. package/dist/test-resources/assets/Themes.js +0 -17
  593. package/dist/test-resources/elements/Child.js +0 -35
  594. package/dist/test-resources/elements/Generic.js +0 -84
  595. package/dist/test-resources/elements/GenericExt.js +0 -26
  596. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  597. package/dist/test-resources/elements/Parent.js +0 -41
  598. package/dist/test-resources/elements/WithStaticArea.js +0 -77
  599. package/dist/test-resources/pages/AllTestElements.html +0 -42
  600. package/dist/test-resources/pages/Configuration.html +0 -18
  601. package/dist/test-resources/pages/ConfigurationScript.html +0 -34
  602. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  603. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  604. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  605. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  606. package/dist/test-resources/pages/i18n.html +0 -33
  607. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
  608. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
  609. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -93
  610. package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
  611. package/dist/test-resources/specs/EventProvider.spec.js +0 -63
  612. package/dist/test-resources/specs/StaticArea.spec.js +0 -78
  613. package/dist/test-resources/specs/Theming.spec.js +0 -33
  614. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
  615. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
  616. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
  617. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
  618. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
  619. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
  620. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
  621. package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
  622. package/dist/types/CSSSize.js +0 -9
  623. package/dist/types/PopupState.js +0 -37
  624. package/dist/util/encodeCSS.js +0 -24
  625. package/dist/util/findNodeOwner.js +0 -35
  626. package/dist/util/isDescendantOf.js +0 -15
  627. package/dist/util/isNodeClickable.js +0 -19
  628. package/dist/util/isNodeHidden.js +0 -9
  629. package/dist/util/isNodeTabbable.js +0 -28
  630. package/dist/util/setToArray.js +0 -10
  631. package/hash.txt +0 -1
  632. package/src/Boot.js +0 -43
  633. package/src/CustomElementsRegistry.js +0 -39
  634. package/src/DOMObserver.js +0 -65
  635. package/src/Device.js +0 -107
  636. package/src/FeaturesRegistry.js +0 -11
  637. package/src/Keys.js +0 -248
  638. package/src/ManagedStyles.js +0 -83
  639. package/src/RenderScheduler.js +0 -44
  640. package/src/animations/animate.js +0 -53
  641. package/src/animations/config.js +0 -5
  642. package/src/animations/scroll.js +0 -28
  643. package/src/asset-registries/Icons.js +0 -139
  644. package/src/asset-registries/Illustrations.js +0 -30
  645. package/src/asset-registries/Themes.js +0 -78
  646. package/src/assets-meta/IconCollectionsAlias.js +0 -18
  647. package/src/config/AnimationMode.js +0 -23
  648. package/src/config/FormatSettings.js +0 -13
  649. package/src/config/NoConflict.js +0 -51
  650. package/src/config/Theme.js +0 -42
  651. package/src/delegate/ResizeHandler.js +0 -106
  652. package/src/delegate/ScrollEnablement.js +0 -188
  653. package/src/features/OpenUI5Support.js +0 -125
  654. package/src/isLegacyBrowser.js +0 -3
  655. package/src/locale/RTLAwareRegistry.js +0 -14
  656. package/src/locale/languageChange.js +0 -22
  657. package/src/renderer/LitRenderer.js +0 -34
  658. package/src/renderer/executeTemplate.js +0 -17
  659. package/src/theming/CustomStyle.js +0 -40
  660. package/src/theming/getEffectiveLinksHrefs.js +0 -20
  661. package/src/theming/getStylesString.js +0 -15
  662. package/src/theming/getThemeDesignerTheme.js +0 -68
  663. package/src/thirdparty/merge.js +0 -10
  664. package/src/types/AnimationMode.js +0 -7
  665. package/src/types/CSSSize.js +0 -9
  666. package/src/types/CalendarType.js +0 -22
  667. package/src/types/DataType.js +0 -37
  668. package/src/types/Float.js +0 -14
  669. package/src/types/Integer.js +0 -13
  670. package/src/types/InvisibleMessageMode.js +0 -30
  671. package/src/types/ItemNavigationBehavior.js +0 -16
  672. package/src/types/NavigationMode.js +0 -7
  673. package/src/types/PopupState.js +0 -37
  674. package/src/types/ValueState.js +0 -22
  675. package/src/updateShadowRoot.js +0 -30
  676. package/src/util/AriaLabelHelper.js +0 -41
  677. package/src/util/Caret.js +0 -45
  678. package/src/util/ColorConversion.js +0 -370
  679. package/src/util/FocusableElements.js +0 -77
  680. package/src/util/PopupUtils.js +0 -93
  681. package/src/util/TabbableElements.js +0 -47
  682. package/src/util/encodeCSS.js +0 -24
  683. package/src/util/findNodeOwner.js +0 -35
  684. package/src/util/getEffectiveContentDensity.js +0 -5
  685. package/src/util/isDescendantOf.js +0 -15
  686. package/src/util/isNodeClickable.js +0 -19
  687. package/src/util/isNodeHidden.js +0 -9
  688. package/src/util/isNodeTabbable.js +0 -28
  689. package/src/util/setToArray.js +0 -10
  690. /package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
  691. /package/src/{StaticArea.js → StaticArea.ts} +0 -0
  692. /package/src/{SystemCSSVars.js → SystemCSSVars.ts} +0 -0
  693. /package/src/{Theming.js → Theming.ts} +0 -0
  694. /package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Class decorator, that sets the fastNavigation metadata.
3
+ * @param { any } target the decorated class
4
+ * @returns { void }
5
+ */
6
+ const fastNavigation = (target: any): void => {
7
+ if (!Object.prototype.hasOwnProperty.call(target, "metadata")) {
8
+ target.metadata = {};
9
+ }
10
+
11
+ target.metadata.fastNavigation = true;
12
+ };
13
+
14
+ export default fastNavigation;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Class decorator, that sets the languageAware metadata.
3
+ * @param { any } target the decorated class
4
+ * @returns { void }
5
+ */
6
+ const languageAware = (target: any): void => {
7
+ if (!Object.prototype.hasOwnProperty.call(target, "metadata")) {
8
+ target.metadata = {};
9
+ }
10
+
11
+ target.metadata.languageAware = true;
12
+ };
13
+
14
+ export default languageAware;
@@ -0,0 +1,30 @@
1
+ import type UI5Element from "../UI5Element.js";
2
+ import { Property } from "../UI5ElementMetadata.js";
3
+
4
+ /**
5
+ * Returns a property decorator.
6
+ *
7
+ * @param { Property } propData
8
+ * @returns { PropertyDecorator }
9
+ */
10
+ const property = (propData?: Property): PropertyDecorator => {
11
+ return (target: any, propertyKey: string | symbol) => {
12
+ const ctor = target.constructor as typeof UI5Element;
13
+
14
+ if (!Object.prototype.hasOwnProperty.call(ctor, "metadata")) {
15
+ ctor.metadata = {};
16
+ }
17
+
18
+ const metadata = ctor.metadata;
19
+ if (!metadata.properties) {
20
+ metadata.properties = {};
21
+ }
22
+
23
+ const propsMetadata = metadata.properties;
24
+ if (!propsMetadata[propertyKey as string]) {
25
+ propsMetadata[propertyKey as string] = propData || { type: String };
26
+ }
27
+ };
28
+ };
29
+
30
+ export default property;
@@ -0,0 +1,49 @@
1
+ import type UI5Element from "../UI5Element.js";
2
+ import { Slot } from "../UI5ElementMetadata.js";
3
+
4
+ /**
5
+ * Returns a slot decorator.
6
+ *
7
+ * @param { Slot } slotData
8
+ * @returns { PropertyDecorator }
9
+ */
10
+ const slot = (slotData?: Slot): PropertyDecorator => {
11
+ return (target: any, slotKey: string | symbol) => {
12
+ const ctor = target.constructor as typeof UI5Element;
13
+
14
+ if (!Object.prototype.hasOwnProperty.call(ctor, "metadata")) {
15
+ ctor.metadata = {};
16
+ }
17
+
18
+ const metadata = ctor.metadata;
19
+ if (!metadata.slots) {
20
+ metadata.slots = {};
21
+ }
22
+
23
+ const slotMetadata = metadata.slots;
24
+
25
+ if (slotData?.default && slotMetadata.default) {
26
+ throw new Error("Only one slot can be the default slot.");
27
+ }
28
+
29
+ const key = slotData?.default ? "default" : slotKey as string;
30
+ slotData = slotData || { type: HTMLElement };
31
+
32
+ if (!slotData.type) {
33
+ slotData.type = HTMLElement;
34
+ }
35
+
36
+ if (!slotMetadata[key]) {
37
+ slotMetadata[key] = slotData;
38
+ }
39
+
40
+ if (slotData.default) {
41
+ delete slotMetadata.default.default;
42
+ slotMetadata.default.propertyName = slotKey as string;
43
+ }
44
+
45
+ ctor.metadata.managedSlots = true;
46
+ };
47
+ };
48
+
49
+ export default slot;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Class decorator, that sets the themeAware metadata.
3
+ * @param { any } target the decorated class
4
+ * @returns { void }
5
+ */
6
+ const themeAware = (target: any): void => {
7
+ if (!Object.prototype.hasOwnProperty.call(target, "metadata")) {
8
+ target.metadata = {};
9
+ }
10
+
11
+ target.metadata.themeAware = true;
12
+ };
13
+
14
+ export default themeAware;
@@ -13,6 +13,24 @@ import getActiveElement from "../util/getActiveElement.js";
13
13
  import NavigationMode from "../types/NavigationMode.js";
14
14
  import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
15
15
 
16
+ import type UI5Element from "../UI5Element.js";
17
+ import { instanceOfUI5Element } from "../UI5Element.js";
18
+
19
+ interface ITabbable {
20
+ id: string,
21
+ _tabIndex: string,
22
+ }
23
+
24
+ type ItemNavigationOptions = {
25
+ currentIndex?: number,
26
+ navigationMode?: NavigationMode,
27
+ rowSize?: number
28
+ skipItemsSize?: number,
29
+ behavior?: ItemNavigationBehavior,
30
+ getItemsCallback: () => Array<ITabbable>,
31
+ affectedPropertiesNames?: Array<string>,
32
+ };
33
+
16
34
  /**
17
35
  * The ItemNavigation class manages the calculations to determine the correct "tabindex" for a group of related items inside a root component.
18
36
  * Important: ItemNavigation only does the calculations and does not change "tabindex" directly, this is a responsibility of the developer.
@@ -47,10 +65,26 @@ import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
47
65
  * @public
48
66
  */
49
67
  class ItemNavigation {
68
+ rootWebComponent: UI5Element;
69
+
70
+ _getItems: () => Array<ITabbable>;
71
+
72
+ _currentIndex: number;
73
+
74
+ _rowSize: number;
75
+
76
+ _behavior: ItemNavigationBehavior;
77
+
78
+ _navigationMode: NavigationMode;
79
+
80
+ _affectedPropertiesNames: Array<string>;
81
+
82
+ _skipItemsSize: number | null;
83
+
50
84
  /**
51
85
  *
52
86
  * @param rootWebComponent the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
53
- * @param options Object with configuration options:
87
+ * @param {ItemNavigationOptions} options Object with configuration options:
54
88
  * - currentIndex: the index of the item that will be initially selected (from which navigation will begin)
55
89
  * - navigationMode (Auto|Horizontal|Vertical): whether the items are displayed horizontally (Horizontal), vertically (Vertical) or as a matrix (Auto) meaning the user can navigate in both directions (up/down and left/right)
56
90
  * - rowSize: tells how many items per row there are when the items are not rendered as a flat list but rather as a matrix. Relevant for navigationMode=Auto
@@ -61,23 +95,17 @@ class ItemNavigation {
61
95
  * - getItemsCallback: function that, when called, returns an array with all items the user can navigate among
62
96
  * - affectedPropertiesNames: a list of metadata properties on the root component which, upon user navigation, will be reassigned by address thus causing the root component to invalidate
63
97
  */
64
- constructor(rootWebComponent, options = {}) {
65
- this._setRootComponent(rootWebComponent);
66
- this._initOptions(options);
67
- }
68
-
69
- _setRootComponent(rootWebComponent) {
98
+ constructor(rootWebComponent: UI5Element, options: ItemNavigationOptions) {
70
99
  if (!rootWebComponent.isUI5Element) {
71
100
  throw new Error("The root web component must be a UI5 Element instance");
72
101
  }
102
+
73
103
  this.rootWebComponent = rootWebComponent;
74
104
  this.rootWebComponent.addEventListener("keydown", this._onkeydown.bind(this));
75
105
  this.rootWebComponent._onComponentStateFinalized = () => {
76
106
  this._init();
77
107
  };
78
- }
79
108
 
80
- _initOptions(options) {
81
109
  if (typeof options.getItemsCallback !== "function") {
82
110
  throw new Error("getItemsCallback is required");
83
111
  }
@@ -98,7 +126,7 @@ class ItemNavigation {
98
126
  * @public
99
127
  * @param current the new selected item
100
128
  */
101
- setCurrentItem(current) {
129
+ setCurrentItem(current: ITabbable) {
102
130
  const currentItemIndex = this._getItems().indexOf(current);
103
131
 
104
132
  if (currentItemIndex === -1) {
@@ -116,7 +144,7 @@ class ItemNavigation {
116
144
  * @public
117
145
  * @param newRowSize
118
146
  */
119
- setRowSize(newRowSize) {
147
+ setRowSize(newRowSize: number) {
120
148
  this._rowSize = newRowSize;
121
149
  }
122
150
 
@@ -126,22 +154,27 @@ class ItemNavigation {
126
154
  });
127
155
  }
128
156
 
129
- _onkeydown(event) {
157
+ _onkeydown(event: KeyboardEvent) {
130
158
  if (!this._canNavigate()) {
131
159
  return;
132
160
  }
133
161
 
134
162
  const horizontalNavigationOn = this._navigationMode === NavigationMode.Horizontal || this._navigationMode === NavigationMode.Auto;
135
163
  const verticalNavigationOn = this._navigationMode === NavigationMode.Vertical || this._navigationMode === NavigationMode.Auto;
164
+ const isRTL = this.rootWebComponent.effectiveDir === "rtl";
136
165
 
137
- if (isUp(event) && verticalNavigationOn) {
138
- this._handleUp();
139
- } else if (isDown(event) && verticalNavigationOn) {
140
- this._handleDown();
166
+ if (isRTL && isLeft(event) && horizontalNavigationOn) {
167
+ this._handleRight();
168
+ } else if (isRTL && isRight(event) && horizontalNavigationOn) {
169
+ this._handleLeft();
141
170
  } else if (isLeft(event) && horizontalNavigationOn) {
142
171
  this._handleLeft();
143
172
  } else if (isRight(event) && horizontalNavigationOn) {
144
173
  this._handleRight();
174
+ } else if (isUp(event) && verticalNavigationOn) {
175
+ this._handleUp();
176
+ } else if (isDown(event) && verticalNavigationOn) {
177
+ this._handleDown();
145
178
  } else if (isHome(event)) {
146
179
  this._handleHome();
147
180
  } else if (isEnd(event)) {
@@ -255,6 +288,7 @@ class ItemNavigation {
255
288
  if (this._skipItemsSize === null) {
256
289
  // Move the focus to the very top (as Home).
257
290
  this._currentIndex -= this._currentIndex;
291
+ return;
258
292
  }
259
293
 
260
294
  if (this._currentIndex + 1 > this._skipItemsSize) {
@@ -274,6 +308,7 @@ class ItemNavigation {
274
308
  if (this._skipItemsSize === null) {
275
309
  // Move the focus to the very bottom (as End).
276
310
  this._currentIndex = this._getItems().length - 1;
311
+ return;
277
312
  }
278
313
 
279
314
  const currentToEndRange = this._getItems().length - this._currentIndex - 1;
@@ -295,15 +330,15 @@ class ItemNavigation {
295
330
  }
296
331
 
297
332
  this._affectedPropertiesNames.forEach(propName => {
298
- const prop = this.rootWebComponent[propName];
299
- this.rootWebComponent[propName] = Array.isArray(prop) ? [...prop] : { ...prop };
333
+ const prop = (this.rootWebComponent as Record<string, any>)[propName];
334
+ (this.rootWebComponent as Record<string, any>)[propName] = Array.isArray(prop) ? [...prop] : { ...prop };
300
335
  });
301
336
  }
302
337
 
303
338
  _focusCurrentItem() {
304
339
  const currentItem = this._getCurrentItem();
305
340
  if (currentItem) {
306
- currentItem.focus();
341
+ currentItem.focus({ focusVisible: true } as FocusOptions);
307
342
  }
308
343
  }
309
344
 
@@ -318,7 +353,7 @@ class ItemNavigation {
318
353
  const items = this._getItems();
319
354
 
320
355
  if (!items.length) {
321
- return null;
356
+ return;
322
357
  }
323
358
 
324
359
  // normalize the index
@@ -336,16 +371,23 @@ class ItemNavigation {
336
371
  return;
337
372
  }
338
373
 
339
- if (currentItem.isUI5Element) {
374
+ if (instanceOfUI5Element(currentItem)) {
340
375
  return currentItem.getFocusDomRef();
341
376
  }
342
377
 
343
- if (!this.rootWebComponent.getDomRef()) {
378
+ const currentItemDOMRef = this.rootWebComponent.getDomRef();
379
+ if (!currentItemDOMRef) {
344
380
  return;
345
381
  }
346
382
 
347
- return this.rootWebComponent.getDomRef().querySelector(`#${currentItem.id}`);
383
+ if (currentItem.id) {
384
+ return currentItemDOMRef.querySelector(`#${currentItem.id}`) as HTMLElement;
385
+ }
348
386
  }
349
387
  }
350
388
 
351
389
  export default ItemNavigation;
390
+
391
+ export {
392
+ ITabbable,
393
+ };
@@ -0,0 +1,100 @@
1
+ import { instanceOfUI5Element } from "../UI5Element.js";
2
+
3
+ type ResizeObserverCallback = () => Promise<void> | void;
4
+
5
+ let resizeObserver: ResizeObserver;
6
+ const observedElements = new Map<HTMLElement, Array<ResizeObserverCallback>>();
7
+
8
+ const getResizeObserver = () => {
9
+ if (!resizeObserver) {
10
+ resizeObserver = new window.ResizeObserver(entries => {
11
+ entries.forEach(entry => {
12
+ const callbacks = observedElements.get(entry.target as HTMLElement);
13
+ // Callbacks could be async and we need to handle returned promises to comply with the eslint "no-misused-promises" rule.
14
+ // Although Promise.all awaits all, we don't additonal task after calling the callbacks and should not make any difference.
15
+ callbacks && Promise.all(callbacks.map((callback: ResizeObserverCallback) => callback()));
16
+ });
17
+ });
18
+ }
19
+ return resizeObserver;
20
+ };
21
+
22
+ const observe = (element: HTMLElement, callback: ResizeObserverCallback) => {
23
+ const callbacks = observedElements.get(element) || [];
24
+
25
+ // if no callbacks have been added for this element - start observing it
26
+ if (!callbacks.length) {
27
+ getResizeObserver().observe(element);
28
+ }
29
+
30
+ // save the callbacks in an array
31
+ observedElements.set(element, [...callbacks, callback]);
32
+ };
33
+
34
+ const unobserve = (element: HTMLElement, callback: ResizeObserverCallback) => {
35
+ const callbacks = observedElements.get(element) || [];
36
+ if (callbacks.length === 0) {
37
+ return;
38
+ }
39
+
40
+ const filteredCallbacks = callbacks.filter((fn: ResizeObserverCallback) => fn !== callback);
41
+ if (filteredCallbacks.length === 0) {
42
+ getResizeObserver().unobserve(element);
43
+ observedElements.delete(element);
44
+ } else {
45
+ observedElements.set(element, filteredCallbacks);
46
+ }
47
+ };
48
+
49
+ /**
50
+ * Allows to register/deregister resize observers for a DOM element
51
+ *
52
+ * @public
53
+ * @class
54
+ */
55
+ class ResizeHandler {
56
+ /**
57
+ * @static
58
+ * @public
59
+ * @param {*} element UI5 Web Component or DOM Element to be observed
60
+ * @param {*} callback Callback to be executed
61
+ */
62
+ static register(element: HTMLElement, callback: ResizeObserverCallback) {
63
+ let effectiveElement: HTMLElement | undefined = element;
64
+
65
+ if (instanceOfUI5Element(effectiveElement)) {
66
+ effectiveElement = effectiveElement.getDomRef();
67
+ }
68
+
69
+ if (effectiveElement instanceof HTMLElement) {
70
+ observe(effectiveElement, callback);
71
+ } else {
72
+ console.warn("Cannot register ResizeHandler for element", element); // eslint-disable-line
73
+ }
74
+ }
75
+
76
+ /**
77
+ * @static
78
+ * @public
79
+ * @param {*} element UI5 Web Component or DOM Element to be unobserved
80
+ * @param {*} callback Callback to be removed
81
+ */
82
+ static deregister(element: HTMLElement, callback: ResizeObserverCallback) {
83
+ let effectiveElement: HTMLElement | undefined = element;
84
+
85
+ if (instanceOfUI5Element(effectiveElement)) {
86
+ effectiveElement = effectiveElement.getDomRef();
87
+ }
88
+
89
+ if (effectiveElement instanceof HTMLElement) {
90
+ unobserve(effectiveElement, callback);
91
+ } else {
92
+ console.warn("Cannot deregister ResizeHandler for element", element); // eslint-disable-line
93
+ }
94
+ }
95
+ }
96
+
97
+ export default ResizeHandler;
98
+ export type {
99
+ ResizeObserverCallback,
100
+ };
@@ -0,0 +1,224 @@
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 ScrollEnablementEventListenerParam = {
10
+ isLeft: boolean;
11
+ isRight: boolean
12
+ }
13
+ type ScrollEnablementEventListenerReturn = void;
14
+
15
+ class ScrollEnablement extends EventProvider<ScrollEnablementEventListenerParam, ScrollEnablementEventListenerReturn> {
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;
222
+ export type {
223
+ ScrollEnablementEventListenerParam,
224
+ };