@ui5/webcomponents-base 1.9.2 → 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 (608) hide show
  1. package/.eslintignore +1 -0
  2. package/bundle.esm.js +4 -1
  3. package/dist/AssetRegistry.d.ts +5 -0
  4. package/dist/AssetRegistry.js +2 -7
  5. package/dist/AssetRegistry.js.map +1 -0
  6. package/dist/Boot.d.ts +8 -0
  7. package/dist/Boot.js +29 -48
  8. package/dist/Boot.js.map +1 -0
  9. package/dist/CSP.d.ts +30 -0
  10. package/dist/CSP.js +16 -24
  11. package/dist/CSP.js.map +1 -0
  12. package/dist/CustomElementsRegistry.d.ts +5 -0
  13. package/dist/CustomElementsRegistry.js +66 -83
  14. package/dist/CustomElementsRegistry.js.map +1 -0
  15. package/dist/CustomElementsScope.d.ts +7 -0
  16. package/dist/CustomElementsScope.js +10 -29
  17. package/dist/CustomElementsScope.js.map +1 -0
  18. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  19. package/dist/CustomElementsScopeUtils.js +34 -52
  20. package/dist/CustomElementsScopeUtils.js.map +1 -0
  21. package/dist/DOMObserver.d.ts +11 -0
  22. package/dist/DOMObserver.js +12 -54
  23. package/dist/DOMObserver.js.map +1 -0
  24. package/dist/Device.d.ts +12 -0
  25. package/dist/Device.js +53 -83
  26. package/dist/Device.js.map +1 -0
  27. package/dist/EventProvider.d.ts +25 -0
  28. package/dist/EventProvider.js +67 -82
  29. package/dist/EventProvider.js.map +1 -0
  30. package/dist/FeaturesRegistry.d.ts +3 -0
  31. package/dist/FeaturesRegistry.js +5 -10
  32. package/dist/FeaturesRegistry.js.map +1 -0
  33. package/dist/FontFace.d.ts +2 -0
  34. package/dist/FontFace.js +14 -19
  35. package/dist/FontFace.js.map +1 -0
  36. package/dist/InitialConfiguration.d.ts +22 -0
  37. package/dist/InitialConfiguration.js +107 -146
  38. package/dist/InitialConfiguration.js.map +1 -0
  39. package/dist/Keys.d.ts +57 -0
  40. package/dist/Keys.js +174 -291
  41. package/dist/Keys.js.map +1 -0
  42. package/dist/ManagedStyles.d.ts +8 -0
  43. package/dist/ManagedStyles.js +62 -68
  44. package/dist/ManagedStyles.js.map +1 -0
  45. package/dist/MarkedEvents.d.ts +9 -0
  46. package/dist/MarkedEvents.js +15 -0
  47. package/dist/MarkedEvents.js.map +1 -0
  48. package/dist/MediaRange.d.ts +37 -0
  49. package/dist/MediaRange.js +54 -65
  50. package/dist/MediaRange.js.map +1 -0
  51. package/dist/PropertiesFileFormat.d.ts +8 -0
  52. package/dist/PropertiesFileFormat.js +72 -82
  53. package/dist/PropertiesFileFormat.js.map +1 -0
  54. package/dist/Render.d.ts +47 -0
  55. package/dist/Render.js +81 -113
  56. package/dist/Render.js.map +1 -0
  57. package/dist/RenderQueue.d.ts +19 -0
  58. package/dist/RenderQueue.js +52 -62
  59. package/dist/RenderQueue.js.map +1 -0
  60. package/dist/Runtimes.d.ts +27 -0
  61. package/dist/Runtimes.js +49 -70
  62. package/dist/Runtimes.js.map +1 -0
  63. package/dist/StaticArea.d.ts +0 -0
  64. package/dist/StaticArea.js +4 -1
  65. package/dist/StaticArea.js.map +1 -0
  66. package/dist/StaticAreaItem.d.ts +36 -0
  67. package/dist/StaticAreaItem.js +84 -94
  68. package/dist/StaticAreaItem.js.map +1 -0
  69. package/dist/SystemCSSVars.d.ts +2 -0
  70. package/dist/SystemCSSVars.js +4 -5
  71. package/dist/SystemCSSVars.js.map +1 -0
  72. package/dist/Theming.d.ts +3 -0
  73. package/dist/Theming.js +1 -1
  74. package/dist/Theming.js.map +1 -0
  75. package/dist/UI5Element.d.ts +373 -0
  76. package/dist/UI5Element.js +928 -1006
  77. package/dist/UI5Element.js.map +1 -0
  78. package/dist/UI5ElementMetadata.d.ts +150 -0
  79. package/dist/UI5ElementMetadata.js +277 -313
  80. package/dist/UI5ElementMetadata.js.map +1 -0
  81. package/dist/animations/AnimationQueue.d.ts +8 -0
  82. package/dist/animations/AnimationQueue.js +31 -38
  83. package/dist/animations/AnimationQueue.js.map +1 -0
  84. package/dist/animations/animate.d.ts +14 -0
  85. package/dist/animations/animate.js +46 -51
  86. package/dist/animations/animate.js.map +1 -0
  87. package/dist/animations/scroll.d.ts +5 -0
  88. package/dist/animations/scroll.js +18 -27
  89. package/dist/animations/scroll.js.map +1 -0
  90. package/dist/animations/slideDown.d.ts +5 -0
  91. package/dist/animations/slideDown.js +53 -78
  92. package/dist/animations/slideDown.js.map +1 -0
  93. package/dist/animations/slideUp.d.ts +5 -0
  94. package/dist/animations/slideUp.js +49 -70
  95. package/dist/animations/slideUp.js.map +1 -0
  96. package/dist/api.json +1 -1
  97. package/dist/asset-registries/Icons.d.ts +30 -0
  98. package/dist/asset-registries/Icons.js +85 -118
  99. package/dist/asset-registries/Icons.js.map +1 -0
  100. package/dist/asset-registries/Illustrations.d.ts +17 -0
  101. package/dist/asset-registries/Illustrations.js +37 -50
  102. package/dist/asset-registries/Illustrations.js.map +1 -0
  103. package/dist/asset-registries/LocaleData.d.ts +7 -0
  104. package/dist/asset-registries/LocaleData.js +104 -126
  105. package/dist/asset-registries/LocaleData.js.map +1 -0
  106. package/dist/asset-registries/Themes.d.ts +10 -0
  107. package/dist/asset-registries/Themes.js +36 -68
  108. package/dist/asset-registries/Themes.js.map +1 -0
  109. package/dist/asset-registries/i18n.d.ts +23 -0
  110. package/dist/asset-registries/i18n.js +52 -80
  111. package/dist/asset-registries/i18n.js.map +1 -0
  112. package/dist/assets/bundle.esm.3d967c4e.js +56 -0
  113. package/dist/assets-meta/IconCollectionsAlias.d.ts +17 -0
  114. package/dist/assets-meta/IconCollectionsAlias.js +4 -4
  115. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  116. package/dist/config/AnimationMode.d.ts +14 -0
  117. package/dist/config/AnimationMode.js +21 -18
  118. package/dist/config/AnimationMode.js.map +1 -0
  119. package/dist/config/CalendarType.d.ts +8 -0
  120. package/dist/config/CalendarType.js +13 -12
  121. package/dist/config/CalendarType.js.map +1 -0
  122. package/dist/config/FormatSettings.d.ts +11 -0
  123. package/dist/config/FormatSettings.js +10 -8
  124. package/dist/config/FormatSettings.js.map +1 -0
  125. package/dist/config/Icons.d.ts +30 -0
  126. package/dist/config/Icons.js +28 -32
  127. package/dist/config/Icons.js.map +1 -0
  128. package/dist/config/Language.d.ts +31 -0
  129. package/dist/config/Language.js +31 -43
  130. package/dist/config/Language.js.map +1 -0
  131. package/dist/config/NoConflict.d.ts +20 -0
  132. package/dist/config/NoConflict.js +40 -41
  133. package/dist/config/NoConflict.js.map +1 -0
  134. package/dist/config/RTL.d.ts +7 -0
  135. package/dist/config/RTL.js +23 -20
  136. package/dist/config/RTL.js.map +1 -0
  137. package/dist/config/Theme.d.ts +28 -0
  138. package/dist/config/Theme.js +34 -36
  139. package/dist/config/Theme.js.map +1 -0
  140. package/dist/config/ThemeRoots.d.ts +4 -0
  141. package/dist/config/ThemeRoots.js +18 -29
  142. package/dist/config/ThemeRoots.js.map +1 -0
  143. package/dist/decorators/customElement.d.ts +8 -0
  144. package/dist/decorators/customElement.js +16 -0
  145. package/dist/decorators/customElement.js.map +1 -0
  146. package/dist/decorators/event.d.ts +10 -0
  147. package/dist/decorators/event.js +24 -0
  148. package/dist/decorators/event.js.map +1 -0
  149. package/dist/decorators/fastNavigation.d.ts +7 -0
  150. package/dist/decorators/fastNavigation.js +13 -0
  151. package/dist/decorators/fastNavigation.js.map +1 -0
  152. package/dist/decorators/languageAware.d.ts +7 -0
  153. package/dist/decorators/languageAware.js +13 -0
  154. package/dist/decorators/languageAware.js.map +1 -0
  155. package/dist/decorators/property.d.ts +9 -0
  156. package/dist/decorators/property.js +24 -0
  157. package/dist/decorators/property.js.map +1 -0
  158. package/dist/decorators/slot.d.ts +9 -0
  159. package/dist/decorators/slot.js +37 -0
  160. package/dist/decorators/slot.js.map +1 -0
  161. package/dist/decorators/themeAware.d.ts +7 -0
  162. package/dist/decorators/themeAware.js +13 -0
  163. package/dist/decorators/themeAware.js.map +1 -0
  164. package/dist/delegate/ItemNavigation.d.ts +113 -0
  165. package/dist/delegate/ItemNavigation.js +277 -317
  166. package/dist/delegate/ItemNavigation.js.map +1 -0
  167. package/dist/delegate/ResizeHandler.d.ts +24 -0
  168. package/dist/delegate/ResizeHandler.js +68 -91
  169. package/dist/delegate/ResizeHandler.js.map +1 -0
  170. package/dist/delegate/ScrollEnablement.d.ts +48 -0
  171. package/dist/delegate/ScrollEnablement.js +157 -180
  172. package/dist/delegate/ScrollEnablement.js.map +1 -0
  173. package/dist/features/F6Navigation.d.ts +16 -0
  174. package/dist/features/F6Navigation.js +105 -109
  175. package/dist/features/F6Navigation.js.map +1 -0
  176. package/dist/features/OpenUI5Element.d.ts +9 -0
  177. package/dist/features/OpenUI5Element.js +5 -0
  178. package/dist/features/OpenUI5Element.js.map +1 -0
  179. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  180. package/dist/features/OpenUI5Enablement.js +89 -112
  181. package/dist/features/OpenUI5Enablement.js.map +1 -0
  182. package/dist/features/OpenUI5Support.d.ts +23 -0
  183. package/dist/features/OpenUI5Support.js +91 -120
  184. package/dist/features/OpenUI5Support.js.map +1 -0
  185. package/dist/generated/VersionInfo.js +4 -4
  186. package/dist/getSharedResource.d.ts +11 -0
  187. package/dist/getSharedResource.js +12 -16
  188. package/dist/getSharedResource.js.map +1 -0
  189. package/dist/i18nBundle.d.ts +43 -0
  190. package/dist/i18nBundle.js +56 -64
  191. package/dist/i18nBundle.js.map +1 -0
  192. package/dist/locale/Locale.d.ts +22 -0
  193. package/dist/locale/Locale.js +75 -87
  194. package/dist/locale/Locale.js.map +1 -0
  195. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  196. package/dist/locale/RTLAwareRegistry.js +6 -11
  197. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  198. package/dist/locale/applyDirection.d.ts +10 -0
  199. package/dist/locale/applyDirection.js +7 -7
  200. package/dist/locale/applyDirection.js.map +1 -0
  201. package/dist/locale/directionChange.d.ts +15 -0
  202. package/dist/locale/directionChange.js +7 -15
  203. package/dist/locale/directionChange.js.map +1 -0
  204. package/dist/locale/getEffectiveDir.d.ts +2 -0
  205. package/dist/locale/getEffectiveDir.js +20 -24
  206. package/dist/locale/getEffectiveDir.js.map +1 -0
  207. package/dist/locale/getLocale.d.ts +7 -0
  208. package/dist/locale/getLocale.js +26 -29
  209. package/dist/locale/getLocale.js.map +1 -0
  210. package/dist/locale/languageChange.d.ts +5 -0
  211. package/dist/locale/languageChange.js +8 -16
  212. package/dist/locale/languageChange.js.map +1 -0
  213. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  214. package/dist/locale/nextFallbackLocale.js +15 -19
  215. package/dist/locale/nextFallbackLocale.js.map +1 -0
  216. package/dist/locale/normalizeLocale.d.ts +7 -0
  217. package/dist/locale/normalizeLocale.js +34 -41
  218. package/dist/locale/normalizeLocale.js.map +1 -0
  219. package/dist/renderer/LitRenderer.d.ts +14 -0
  220. package/dist/renderer/LitRenderer.js +28 -39
  221. package/dist/renderer/LitRenderer.js.map +1 -0
  222. package/dist/renderer/executeTemplate.d.ts +13 -0
  223. package/dist/renderer/executeTemplate.js +12 -16
  224. package/dist/renderer/executeTemplate.js.map +1 -0
  225. package/dist/sap/base/Log.js +28 -29
  226. package/dist/sap/base/assert.js +5 -6
  227. package/dist/sap/base/security/URLListValidator.js +13 -2
  228. package/dist/theming/CustomStyle.d.ts +6 -0
  229. package/dist/theming/CustomStyle.js +29 -43
  230. package/dist/theming/CustomStyle.js.map +1 -0
  231. package/dist/theming/ThemeLoaded.d.ts +5 -0
  232. package/dist/theming/ThemeLoaded.js +8 -16
  233. package/dist/theming/ThemeLoaded.js.map +1 -0
  234. package/dist/theming/applyTheme.d.ts +2 -0
  235. package/dist/theming/applyTheme.js +59 -68
  236. package/dist/theming/applyTheme.js.map +1 -0
  237. package/dist/theming/getConstructableStyle.d.ts +9 -0
  238. package/dist/theming/getConstructableStyle.js +12 -17
  239. package/dist/theming/getConstructableStyle.js.map +1 -0
  240. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  241. package/dist/theming/getEffectiveLinksHrefs.js +12 -22
  242. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  243. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  244. package/dist/theming/getEffectiveStyle.js +24 -31
  245. package/dist/theming/getEffectiveStyle.js.map +1 -0
  246. package/dist/theming/getStylesString.d.ts +3 -0
  247. package/dist/theming/getStylesString.js +9 -13
  248. package/dist/theming/getStylesString.js.map +1 -0
  249. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  250. package/dist/theming/getThemeDesignerTheme.js +72 -79
  251. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  252. package/dist/theming/preloadLinks.d.ts +3 -0
  253. package/dist/theming/preloadLinks.js +13 -17
  254. package/dist/theming/preloadLinks.js.map +1 -0
  255. package/dist/thirdparty/_merge.d.ts +2 -0
  256. package/dist/thirdparty/_merge.js +7 -4
  257. package/dist/thirdparty/_merge.js.map +1 -0
  258. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  259. package/dist/thirdparty/isPlainObject.js +11 -10
  260. package/dist/thirdparty/isPlainObject.js.map +1 -0
  261. package/dist/thirdparty/merge.d.ts +2 -0
  262. package/dist/thirdparty/merge.js +4 -8
  263. package/dist/thirdparty/merge.js.map +1 -0
  264. package/dist/types/AnimationMode.d.ts +32 -0
  265. package/dist/types/AnimationMode.js +33 -6
  266. package/dist/types/AnimationMode.js.map +1 -0
  267. package/dist/types/CSSColor.d.ts +16 -0
  268. package/dist/types/CSSColor.js +6 -7
  269. package/dist/types/CSSColor.js.map +1 -0
  270. package/dist/types/CalendarType.d.ts +37 -0
  271. package/dist/types/CalendarType.js +33 -53
  272. package/dist/types/CalendarType.js.map +1 -0
  273. package/dist/types/DOMReference.d.ts +17 -0
  274. package/dist/types/DOMReference.js +12 -15
  275. package/dist/types/DOMReference.js.map +1 -0
  276. package/dist/types/DataType.d.ts +25 -0
  277. package/dist/types/DataType.js +33 -32
  278. package/dist/types/DataType.js.map +1 -0
  279. package/dist/types/Float.d.ts +18 -0
  280. package/dist/types/Float.js +9 -12
  281. package/dist/types/Float.js.map +1 -0
  282. package/dist/types/Integer.d.ts +18 -0
  283. package/dist/types/Integer.js +9 -11
  284. package/dist/types/Integer.js.map +1 -0
  285. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  286. package/dist/types/InvisibleMessageMode.js +19 -38
  287. package/dist/types/InvisibleMessageMode.js.map +1 -0
  288. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  289. package/dist/types/ItemNavigationBehavior.js +22 -12
  290. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  291. package/dist/types/NavigationMode.d.ts +32 -0
  292. package/dist/types/NavigationMode.js +33 -6
  293. package/dist/types/NavigationMode.js.map +1 -0
  294. package/dist/types/ValueState.d.ts +42 -0
  295. package/dist/types/ValueState.js +38 -58
  296. package/dist/types/ValueState.js.map +1 -0
  297. package/dist/types.d.ts +18 -0
  298. package/dist/types.js +2 -0
  299. package/dist/types.js.map +1 -0
  300. package/dist/updateShadowRoot.d.ts +8 -0
  301. package/dist/updateShadowRoot.js +21 -16
  302. package/dist/updateShadowRoot.js.map +1 -0
  303. package/dist/util/AriaLabelHelper.d.ts +6 -0
  304. package/dist/util/AriaLabelHelper.js +34 -46
  305. package/dist/util/AriaLabelHelper.js.map +1 -0
  306. package/dist/util/Caret.d.ts +7 -0
  307. package/dist/util/Caret.js +16 -25
  308. package/dist/util/Caret.js.map +1 -0
  309. package/dist/util/ColorConversion.d.ts +30 -0
  310. package/dist/util/ColorConversion.js +311 -372
  311. package/dist/util/ColorConversion.js.map +1 -0
  312. package/dist/util/FetchHelper.d.ts +3 -0
  313. package/dist/util/FetchHelper.js +19 -25
  314. package/dist/util/FetchHelper.js.map +1 -0
  315. package/dist/util/FocusableElements.d.ts +4 -0
  316. package/dist/util/FocusableElements.js +54 -71
  317. package/dist/util/FocusableElements.js.map +1 -0
  318. package/dist/util/HTMLSanitizer.d.ts +3 -0
  319. package/dist/util/HTMLSanitizer.js +4 -5
  320. package/dist/util/HTMLSanitizer.js.map +1 -0
  321. package/dist/util/InvisibleMessage.d.ts +10 -0
  322. package/dist/util/InvisibleMessage.js +40 -53
  323. package/dist/util/InvisibleMessage.js.map +1 -0
  324. package/dist/util/PopupUtils.d.ts +7 -0
  325. package/dist/util/PopupUtils.js +58 -77
  326. package/dist/util/PopupUtils.js.map +1 -0
  327. package/dist/util/SlotsHelper.d.ts +9 -0
  328. package/dist/util/SlotsHelper.js +22 -35
  329. package/dist/util/SlotsHelper.js.map +1 -0
  330. package/dist/util/StringHelper.d.ts +3 -0
  331. package/dist/util/StringHelper.js +17 -20
  332. package/dist/util/StringHelper.js.map +1 -0
  333. package/dist/util/TabbableElements.d.ts +17 -0
  334. package/dist/util/TabbableElements.js +53 -47
  335. package/dist/util/TabbableElements.js.map +1 -0
  336. package/dist/util/arraysAreEqual.d.ts +2 -0
  337. package/dist/util/arraysAreEqual.js +10 -12
  338. package/dist/util/arraysAreEqual.js.map +1 -0
  339. package/dist/util/clamp.d.ts +9 -0
  340. package/dist/util/clamp.js +2 -2
  341. package/dist/util/clamp.js.map +1 -0
  342. package/dist/util/createLinkInHead.d.ts +7 -0
  343. package/dist/util/createLinkInHead.js +14 -17
  344. package/dist/util/createLinkInHead.js.map +1 -0
  345. package/dist/util/createStyleInHead.d.ts +8 -0
  346. package/dist/util/createStyleInHead.js +10 -10
  347. package/dist/util/createStyleInHead.js.map +1 -0
  348. package/dist/util/debounce.d.ts +2 -0
  349. package/dist/util/debounce.js +6 -8
  350. package/dist/util/debounce.js.map +1 -0
  351. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  352. package/dist/util/detectNavigatorLanguage.js +7 -10
  353. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  354. package/dist/util/escapeRegex.d.ts +8 -0
  355. package/dist/util/escapeRegex.js +8 -7
  356. package/dist/util/escapeRegex.js.map +1 -0
  357. package/dist/util/formatMessage.d.ts +2 -0
  358. package/dist/util/formatMessage.js +15 -19
  359. package/dist/util/formatMessage.js.map +1 -0
  360. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  361. package/dist/util/generateHighlightedMarkup.js +26 -27
  362. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  363. package/dist/util/getActiveElement.d.ts +2 -0
  364. package/dist/util/getActiveElement.js +6 -8
  365. package/dist/util/getActiveElement.js.map +1 -0
  366. package/dist/util/getClassCopy.d.ts +400 -0
  367. package/dist/util/getClassCopy.js +7 -7
  368. package/dist/util/getClassCopy.js.map +1 -0
  369. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  370. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  371. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  372. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  373. package/dist/util/getEffectiveContentDensity.js +2 -3
  374. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  375. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  376. package/dist/util/getEffectiveScrollbarStyle.js +1 -2
  377. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  378. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  379. package/dist/util/getFastNavigationGroups.js +44 -56
  380. package/dist/util/getFastNavigationGroups.js.map +1 -0
  381. package/dist/util/getFileExtension.d.ts +12 -0
  382. package/dist/util/getFileExtension.js +9 -11
  383. package/dist/util/getFileExtension.js.map +1 -0
  384. package/dist/util/getNormalizedTarget.d.ts +7 -0
  385. package/dist/util/getNormalizedTarget.js +7 -9
  386. package/dist/util/getNormalizedTarget.js.map +1 -0
  387. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  388. package/dist/util/getSingletonElementInstance.js +7 -10
  389. package/dist/util/getSingletonElementInstance.js.map +1 -0
  390. package/dist/util/isElementClickable.d.ts +2 -0
  391. package/dist/util/isElementClickable.js +16 -0
  392. package/dist/util/isElementClickable.js.map +1 -0
  393. package/dist/util/isElementHidden.d.ts +2 -0
  394. package/dist/util/isElementHidden.js +8 -0
  395. package/dist/util/isElementHidden.js.map +1 -0
  396. package/dist/util/isElementInView.d.ts +6 -0
  397. package/dist/util/isElementInView.js +6 -9
  398. package/dist/util/isElementInView.js.map +1 -0
  399. package/dist/util/isElementTabbable.d.ts +9 -0
  400. package/dist/util/isElementTabbable.js +30 -0
  401. package/dist/util/isElementTabbable.js.map +1 -0
  402. package/dist/util/isValidPropertyName.d.ts +8 -0
  403. package/dist/util/isValidPropertyName.js +16 -17
  404. package/dist/util/isValidPropertyName.js.map +1 -0
  405. package/dist/util/whenDOMReady.d.ts +2 -0
  406. package/dist/util/whenDOMReady.js +11 -10
  407. package/dist/util/whenDOMReady.js.map +1 -0
  408. package/dist/util/willShowContent.d.ts +2 -0
  409. package/dist/util/willShowContent.js +7 -0
  410. package/dist/util/willShowContent.js.map +1 -0
  411. package/dist/validateThemeRoot.d.ts +2 -0
  412. package/dist/validateThemeRoot.js +41 -52
  413. package/dist/validateThemeRoot.js.map +1 -0
  414. package/global.d.ts +44 -0
  415. package/package-scripts.js +14 -5
  416. package/package.json +4 -4
  417. package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
  418. package/src/Boot.ts +61 -0
  419. package/src/{CSP.js → CSP.ts} +14 -7
  420. package/src/{CustomElementsRegistry.js → CustomElementsRegistry.ts} +19 -16
  421. package/src/{CustomElementsScope.js → CustomElementsScope.ts} +8 -5
  422. package/src/{CustomElementsScopeUtils.js → CustomElementsScopeUtils.ts} +14 -7
  423. package/src/DOMObserver.ts +28 -0
  424. package/src/{Device.js → Device.ts} +17 -14
  425. package/src/{EventProvider.js → EventProvider.ts} +9 -7
  426. package/src/FeaturesRegistry.ts +14 -0
  427. package/src/{FontFace.js → FontFace.ts} +3 -2
  428. package/src/{InitialConfiguration.js → InitialConfiguration.ts} +33 -12
  429. package/src/Keys.ts +295 -0
  430. package/src/ManagedStyles.ts +92 -0
  431. package/src/MarkedEvents.ts +20 -0
  432. package/src/{MediaRange.js → MediaRange.ts} +54 -53
  433. package/src/{PropertiesFileFormat.js → PropertiesFileFormat.ts} +8 -8
  434. package/src/{Render.js → Render.ts} +25 -20
  435. package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
  436. package/src/{Runtimes.js → Runtimes.ts} +15 -8
  437. package/src/{StaticArea.js → StaticArea.ts} +0 -0
  438. package/src/{StaticAreaItem.js → StaticAreaItem.ts} +26 -22
  439. package/src/{SystemCSSVars.js → SystemCSSVars.ts} +0 -0
  440. package/src/{Theming.js → Theming.ts} +0 -0
  441. package/src/{UI5Element.js → UI5Element.ts} +263 -153
  442. package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +120 -58
  443. package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
  444. package/src/animations/animate.ts +64 -0
  445. package/src/animations/scroll.ts +21 -0
  446. package/src/animations/{slideDown.js → slideDown.ts} +27 -34
  447. package/src/animations/{slideUp.js → slideUp.ts} +28 -32
  448. package/src/asset-registries/{Icons.js → Icons.ts} +63 -38
  449. package/src/asset-registries/Illustrations.ts +75 -0
  450. package/src/asset-registries/{LocaleData.js → LocaleData.ts} +35 -21
  451. package/src/asset-registries/{Themes.js → Themes.ts} +14 -29
  452. package/src/asset-registries/{i18n.js → i18n.ts} +18 -23
  453. package/src/assets-meta/{IconCollectionsAlias.js → IconCollectionsAlias.ts} +0 -0
  454. package/src/config/AnimationMode.ts +33 -0
  455. package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
  456. package/src/config/FormatSettings.ts +21 -0
  457. package/src/config/{Icons.js → Icons.ts} +19 -12
  458. package/src/config/{Language.js → Language.ts} +22 -18
  459. package/src/config/NoConflict.ts +67 -0
  460. package/src/config/{RTL.js → RTL.ts} +14 -4
  461. package/src/config/Theme.ts +64 -0
  462. package/src/config/{ThemeRoots.js → ThemeRoots.ts} +9 -7
  463. package/src/decorators/customElement.ts +17 -0
  464. package/src/decorators/event.ts +28 -0
  465. package/src/decorators/fastNavigation.ts +14 -0
  466. package/src/decorators/languageAware.ts +14 -0
  467. package/src/decorators/property.ts +30 -0
  468. package/src/decorators/slot.ts +49 -0
  469. package/src/decorators/themeAware.ts +14 -0
  470. package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +56 -19
  471. package/src/delegate/{ResizeHandler.js → ResizeHandler.ts} +25 -36
  472. package/src/delegate/ScrollEnablement.ts +221 -0
  473. package/src/features/{F6Navigation.js → F6Navigation.ts} +50 -25
  474. package/src/features/OpenUI5Element.ts +11 -0
  475. package/src/features/OpenUI5Enablement.ts +117 -0
  476. package/src/features/OpenUI5Support.ts +148 -0
  477. package/src/{getSharedResource.js → getSharedResource.ts} +3 -3
  478. package/src/{i18nBundle.js → i18nBundle.ts} +45 -23
  479. package/src/locale/{Locale.js → Locale.ts} +15 -5
  480. package/src/locale/RTLAwareRegistry.ts +16 -0
  481. package/src/locale/{applyDirection.js → applyDirection.ts} +4 -3
  482. package/src/locale/{directionChange.js → directionChange.ts} +6 -4
  483. package/src/locale/{getEffectiveDir.js → getEffectiveDir.ts} +1 -1
  484. package/src/locale/{getLocale.js → getLocale.ts} +12 -7
  485. package/src/locale/languageChange.ts +24 -0
  486. package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
  487. package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +5 -3
  488. package/src/renderer/LitRenderer.ts +60 -0
  489. package/src/renderer/{executeTemplate.js → executeTemplate.ts} +11 -5
  490. package/src/theming/{CustomStyle.js → CustomStyle.ts} +11 -9
  491. package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
  492. package/src/theming/{applyTheme.js → applyTheme.ts} +16 -10
  493. package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
  494. package/src/theming/getEffectiveLinksHrefs.ts +26 -0
  495. package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +9 -7
  496. package/src/theming/getStylesString.ts +15 -0
  497. package/src/theming/{getThemeDesignerTheme.js → getThemeDesignerTheme.ts} +22 -8
  498. package/src/theming/{preloadLinks.js → preloadLinks.ts} +3 -2
  499. package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
  500. package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
  501. package/src/thirdparty/merge.ts +5 -0
  502. package/src/types/AnimationMode.ts +33 -0
  503. package/src/types/{CSSColor.js → CSSColor.ts} +3 -3
  504. package/src/types/CalendarType.ts +38 -0
  505. package/src/types/{DOMReference.js → DOMReference.ts} +4 -4
  506. package/src/types/DataType.ts +51 -0
  507. package/src/types/{Float.js → Float.ts} +5 -5
  508. package/src/types/{Integer.js → Integer.ts} +5 -4
  509. package/src/types/InvisibleMessageMode.ts +27 -0
  510. package/src/types/ItemNavigationBehavior.ts +26 -0
  511. package/src/types/NavigationMode.ts +33 -0
  512. package/src/types/ValueState.ts +47 -0
  513. package/src/types.ts +30 -0
  514. package/src/updateShadowRoot.ts +37 -0
  515. package/src/util/AriaLabelHelper.ts +63 -0
  516. package/src/util/{Caret.js → Caret.ts} +5 -9
  517. package/src/util/{ColorConversion.js → ColorConversion.ts} +183 -182
  518. package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
  519. package/src/util/FocusableElements.ts +82 -0
  520. package/src/util/{HTMLSanitizer.js → HTMLSanitizer.ts} +2 -0
  521. package/src/util/{InvisibleMessage.js → InvisibleMessage.ts} +6 -6
  522. package/src/util/PopupUtils.ts +112 -0
  523. package/src/util/{SlotsHelper.js → SlotsHelper.ts} +9 -13
  524. package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
  525. package/src/util/TabbableElements.ts +70 -0
  526. package/src/util/{arraysAreEqual.js → arraysAreEqual.ts} +1 -1
  527. package/src/util/{clamp.js → clamp.ts} +1 -1
  528. package/src/util/{createLinkInHead.js → createLinkInHead.ts} +6 -5
  529. package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
  530. package/src/util/{debounce.js → debounce.ts} +5 -4
  531. package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
  532. package/src/util/escapeRegex.ts +11 -0
  533. package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
  534. package/src/util/{generateHighlightedMarkup.js → generateHighlightedMarkup.ts} +7 -6
  535. package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
  536. package/src/util/{getClassCopy.js → getClassCopy.ts} +3 -1
  537. package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
  538. package/src/util/getEffectiveContentDensity.ts +5 -0
  539. package/src/util/{getEffectiveScrollbarStyle.js → getEffectiveScrollbarStyle.ts} +0 -0
  540. package/src/util/{getFastNavigationGroups.js → getFastNavigationGroups.ts} +10 -10
  541. package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
  542. package/src/util/{getNormalizedTarget.js → getNormalizedTarget.ts} +2 -2
  543. package/src/util/{getSingletonElementInstance.js → getSingletonElementInstance.ts} +1 -1
  544. package/src/util/isElementClickable.ts +19 -0
  545. package/src/util/isElementHidden.ts +9 -0
  546. package/src/util/{isElementInView.js → isElementInView.ts} +1 -1
  547. package/src/util/isElementTabbable.ts +37 -0
  548. package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +1 -1
  549. package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
  550. package/src/util/willShowContent.ts +7 -0
  551. package/src/{validateThemeRoot.js → validateThemeRoot.ts} +4 -4
  552. package/tsconfig.json +13 -0
  553. package/dist/RenderScheduler.js +0 -44
  554. package/dist/animations/config.js +0 -5
  555. package/dist/assets/bundle.esm.383d9c8a.js +0 -55
  556. package/dist/types/CSSSize.js +0 -20
  557. package/dist/types/PopupState.js +0 -57
  558. package/dist/util/isDefaultSlotProvided.js +0 -11
  559. package/dist/util/isDescendantOf.js +0 -15
  560. package/dist/util/isNodeClickable.js +0 -19
  561. package/dist/util/isNodeHidden.js +0 -9
  562. package/dist/util/isNodeTabbable.js +0 -28
  563. package/dist/util/setToArray.js +0 -10
  564. package/src/Boot.js +0 -63
  565. package/src/DOMObserver.js +0 -65
  566. package/src/FeaturesRegistry.js +0 -14
  567. package/src/Keys.js +0 -295
  568. package/src/ManagedStyles.js +0 -83
  569. package/src/RenderScheduler.js +0 -44
  570. package/src/animations/animate.js +0 -53
  571. package/src/animations/config.js +0 -5
  572. package/src/animations/scroll.js +0 -28
  573. package/src/asset-registries/Illustrations.js +0 -59
  574. package/src/config/AnimationMode.js +0 -23
  575. package/src/config/FormatSettings.js +0 -13
  576. package/src/config/NoConflict.js +0 -51
  577. package/src/config/Theme.js +0 -53
  578. package/src/delegate/ScrollEnablement.js +0 -188
  579. package/src/features/OpenUI5Enablement.js +0 -119
  580. package/src/features/OpenUI5Support.js +0 -126
  581. package/src/locale/RTLAwareRegistry.js +0 -14
  582. package/src/locale/languageChange.js +0 -22
  583. package/src/renderer/LitRenderer.js +0 -52
  584. package/src/theming/getEffectiveLinksHrefs.js +0 -27
  585. package/src/theming/getStylesString.js +0 -15
  586. package/src/thirdparty/merge.js +0 -10
  587. package/src/types/AnimationMode.js +0 -7
  588. package/src/types/CSSSize.js +0 -20
  589. package/src/types/CalendarType.js +0 -59
  590. package/src/types/DataType.js +0 -43
  591. package/src/types/InvisibleMessageMode.js +0 -46
  592. package/src/types/ItemNavigationBehavior.js +0 -16
  593. package/src/types/NavigationMode.js +0 -7
  594. package/src/types/PopupState.js +0 -57
  595. package/src/types/ValueState.js +0 -64
  596. package/src/updateShadowRoot.js +0 -29
  597. package/src/util/AriaLabelHelper.js +0 -56
  598. package/src/util/FocusableElements.js +0 -79
  599. package/src/util/PopupUtils.js +0 -93
  600. package/src/util/TabbableElements.js +0 -51
  601. package/src/util/escapeRegex.js +0 -10
  602. package/src/util/getEffectiveContentDensity.js +0 -5
  603. package/src/util/isDefaultSlotProvided.js +0 -11
  604. package/src/util/isDescendantOf.js +0 -15
  605. package/src/util/isNodeClickable.js +0 -19
  606. package/src/util/isNodeHidden.js +0 -9
  607. package/src/util/isNodeTabbable.js +0 -28
  608. package/src/util/setToArray.js +0 -10
@@ -1,27 +1,27 @@
1
- const fetchPromises = new Map();
2
- const jsonPromises = new Map();
3
- const textPromises = new Map();
1
+ const fetchPromises = new Map<string, Promise<Response>>();
2
+ const jsonPromises = new Map<string, Promise<any>>();
3
+ const textPromises = new Map<string, Promise<string>>();
4
4
 
5
- const fetchTextOnce = async url => {
5
+ const fetchTextOnce = async (url: string) => {
6
6
  if (!fetchPromises.get(url)) {
7
7
  fetchPromises.set(url, fetch(url));
8
8
  }
9
9
  const response = await fetchPromises.get(url);
10
10
 
11
- if (!textPromises.get(url)) {
11
+ if (response && !textPromises.get(url)) {
12
12
  textPromises.set(url, response.text());
13
13
  }
14
14
 
15
15
  return textPromises.get(url);
16
16
  };
17
17
 
18
- const fetchJsonOnce = async url => {
18
+ const fetchJsonOnce = async (url: string) => {
19
19
  if (!fetchPromises.get(url)) {
20
20
  fetchPromises.set(url, fetch(url));
21
21
  }
22
22
  const response = await fetchPromises.get(url);
23
23
 
24
- if (!jsonPromises.get(url)) {
24
+ if (response && !jsonPromises.get(url)) {
25
25
  jsonPromises.set(url, response.json());
26
26
  }
27
27
 
@@ -0,0 +1,82 @@
1
+ import isElementHidden from "./isElementHidden.js";
2
+ import isElementClickable from "./isElementClickable.js";
3
+ import { instanceOfUI5Element } from "../UI5Element.js";
4
+
5
+ type FocusableElementPromise = Promise<HTMLElement | null>;
6
+
7
+ const isFocusTrap = (el: HTMLElement) => {
8
+ return el.hasAttribute("data-ui5-focus-trap");
9
+ };
10
+
11
+ const getFirstFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {
12
+ if (!container || isElementHidden(container)) {
13
+ return null;
14
+ }
15
+
16
+ return findFocusableElement(container, true, startFromContainer);
17
+ };
18
+
19
+ const getLastFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {
20
+ if (!container || isElementHidden(container)) {
21
+ return null;
22
+ }
23
+
24
+ return findFocusableElement(container, false, startFromContainer);
25
+ };
26
+
27
+ const isElemFocusable = (el: HTMLElement) => {
28
+ return el.hasAttribute("data-ui5-focus-redirect") || !isElementHidden(el);
29
+ };
30
+
31
+ const findFocusableElement = async (container: HTMLElement, forward: boolean, startFromContainer?: boolean): FocusableElementPromise => {
32
+ let child: HTMLElement | undefined;
33
+
34
+ if (container.shadowRoot) {
35
+ child = forward ? container.shadowRoot.firstChild as HTMLElement : container.shadowRoot.lastChild as HTMLElement;
36
+ } else if (container instanceof HTMLSlotElement && container.assignedNodes()) {
37
+ const assignedElements = container.assignedNodes();
38
+ child = forward ? assignedElements[0] as HTMLElement : assignedElements[assignedElements.length - 1] as HTMLElement;
39
+ } else if (startFromContainer) {
40
+ child = container;
41
+ } else {
42
+ child = forward ? container.firstElementChild as HTMLElement : container.lastElementChild as HTMLElement;
43
+ }
44
+
45
+ let focusableDescendant;
46
+
47
+ /* eslint-disable no-await-in-loop */
48
+
49
+ while (child) {
50
+ const originalChild: HTMLElement | undefined = child;
51
+
52
+ if (instanceOfUI5Element(child)) {
53
+ child = await child.getFocusDomRefAsync();
54
+ }
55
+
56
+ if (!child) {
57
+ return null;
58
+ }
59
+
60
+ if (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {
61
+ if (isElementClickable(child)) {
62
+ return (child && typeof child.focus === "function") ? child : null;
63
+ }
64
+
65
+ focusableDescendant = await findFocusableElement(child, forward);
66
+ if (focusableDescendant) {
67
+ return (focusableDescendant && typeof focusableDescendant.focus === "function") ? focusableDescendant : null;
68
+ }
69
+ }
70
+
71
+ child = forward ? originalChild.nextSibling as HTMLElement : originalChild.previousSibling as HTMLElement;
72
+ }
73
+
74
+ /* eslint-enable no-await-in-loop */
75
+
76
+ return null;
77
+ };
78
+
79
+ export {
80
+ getFirstFocusableElement,
81
+ getLastFocusableElement,
82
+ };
@@ -1,4 +1,6 @@
1
+ // @ts-ignore
1
2
  import sanitizeHTML from "../sap/base/security/sanitizeHTML.js";
3
+ // @ts-ignore
2
4
  import URLListValidator from "../sap/base/security/URLListValidator.js";
3
5
 
4
6
  export {
@@ -2,10 +2,10 @@ import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
2
2
  import getSingletonElementInstance from "./getSingletonElementInstance.js";
3
3
  import { attachBoot } from "../Boot.js";
4
4
 
5
- let politeSpan;
6
- let assertiveSpan;
5
+ let politeSpan: HTMLElement;
6
+ let assertiveSpan: HTMLElement;
7
7
 
8
- const setOutOfViewportStyles = el => {
8
+ const setOutOfViewportStyles = (el: HTMLElement) => {
9
9
  el.style.position = "absolute";
10
10
  el.style.clip = "rect(1px,1px,1px,1px)";
11
11
  el.style.userSelect = "none";
@@ -41,11 +41,11 @@ attachBoot(() => {
41
41
  /**
42
42
  * Inserts the string into the respective span, depending on the mode provided.
43
43
  *
44
- * @param {string} message String to be announced by the screen reader.
45
- * @param {sap.ui.core.InvisibleMessageMode} mode The mode to be inserted in the aria-live attribute.
44
+ * @param { string } message String to be announced by the screen reader.
45
+ * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.
46
46
  * @public
47
47
  */
48
- const announce = (message, mode) => {
48
+ const announce = (message: string, mode: InvisibleMessageMode) => {
49
49
  // If no type is presented, fallback to polite announcement.
50
50
  const span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;
51
51
 
@@ -0,0 +1,112 @@
1
+ import getSharedResource from "../getSharedResource.js";
2
+ import { getFeature } from "../FeaturesRegistry.js";
3
+ import getActiveElement from "./getActiveElement.js";
4
+ import type OpenUI5Support from "../features/OpenUI5Support.js";
5
+
6
+ type PopupUtilsData = {
7
+ currentZIndex: number
8
+ };
9
+
10
+ const popupUtilsData = getSharedResource<PopupUtilsData>("PopupUtilsData", { currentZIndex: 100 });
11
+
12
+ const getFocusedElement = () => {
13
+ const element = getActiveElement() as HTMLElement;
14
+ return (element && typeof element.focus === "function") ? element : null;
15
+ };
16
+
17
+ const isFocusedElementWithinNode = (node: HTMLElement) => {
18
+ const fe = getFocusedElement();
19
+
20
+ if (fe) {
21
+ return isNodeContainedWithin(node, fe);
22
+ }
23
+
24
+ return false;
25
+ };
26
+
27
+ const isNodeContainedWithin = (parent: HTMLElement, child: HTMLElement): boolean => {
28
+ let currentNode: HTMLElement | undefined = parent;
29
+
30
+ if (currentNode.shadowRoot) {
31
+ const children = Array.from(currentNode.shadowRoot.children) as Array<HTMLElement>;
32
+ currentNode = children.find(n => n.localName !== "style");
33
+
34
+ if (!currentNode) {
35
+ return false;
36
+ }
37
+ }
38
+
39
+ if (currentNode === child) {
40
+ return true;
41
+ }
42
+
43
+ const childNodes = currentNode.localName === "slot" ? (currentNode as HTMLSlotElement).assignedNodes() : currentNode.children;
44
+
45
+ if (childNodes) {
46
+ return Array.from(childNodes).some(n => isNodeContainedWithin(n as HTMLElement, child));
47
+ }
48
+
49
+ return false;
50
+ };
51
+
52
+ const isPointInRect = (x: number, y: number, rect: DOMRect) => {
53
+ return x >= rect.left && x <= rect.right
54
+ && y >= rect.top && y <= rect.bottom;
55
+ };
56
+
57
+ const isClickInRect = (e: MouseEvent | TouchEvent, rect: DOMRect) => {
58
+ let x;
59
+ let y;
60
+
61
+ if (e instanceof MouseEvent) {
62
+ x = e.clientX;
63
+ y = e.clientY;
64
+ } else {
65
+ const touch = e.touches[0];
66
+ x = touch.clientX;
67
+ y = touch.clientY;
68
+ }
69
+
70
+ return isPointInRect(x, y, rect);
71
+ };
72
+
73
+ interface PopupInterface { // Refactor: replace with Popup.js
74
+ _show: () => void,
75
+ open: boolean,
76
+ }
77
+ function instanceOfPopup(object: any): object is PopupInterface {
78
+ return "isUI5Element" in object && "_show" in object;
79
+ }
80
+
81
+ const getClosedPopupParent = (el: HTMLElement): HTMLElement => {
82
+ const parent = el.parentElement || (el.getRootNode && (el.getRootNode() as ShadowRoot).host);
83
+
84
+ if (parent && ((instanceOfPopup(parent) || parent === document.documentElement))) {
85
+ return parent as HTMLElement;
86
+ }
87
+
88
+ return getClosedPopupParent(parent as HTMLElement);
89
+ };
90
+
91
+ const getNextZIndex = () => {
92
+ const openUI5Support = getFeature<typeof OpenUI5Support>("OpenUI5Support");
93
+ if (openUI5Support && openUI5Support.isLoaded()) { // use OpenUI5 for getting z-index values, if loaded
94
+ return openUI5Support.getNextZIndex();
95
+ }
96
+
97
+ popupUtilsData.currentZIndex += 2;
98
+ return popupUtilsData.currentZIndex;
99
+ };
100
+
101
+ const getCurrentZIndex = () => {
102
+ return popupUtilsData.currentZIndex;
103
+ };
104
+
105
+ export {
106
+ getFocusedElement,
107
+ isClickInRect,
108
+ getClosedPopupParent,
109
+ getNextZIndex,
110
+ getCurrentZIndex,
111
+ isFocusedElementWithinNode,
112
+ };
@@ -3,7 +3,7 @@
3
3
  * @param node Text node or HTML element
4
4
  * @returns {string}
5
5
  */
6
- const getSlotName = node => {
6
+ const getSlotName = (node: Node) => {
7
7
  // Text nodes can only go to the default slot
8
8
  if (!(node instanceof HTMLElement)) {
9
9
  return "default";
@@ -20,24 +20,20 @@ const getSlotName = node => {
20
20
  return "default";
21
21
  };
22
22
 
23
- const isSlot = el => el && el instanceof HTMLElement && el.localName === "slot";
24
-
25
- const getSlottedElements = el => {
26
- if (isSlot(el)) {
27
- return el.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);
23
+ const getSlottedNodes = (node: Node) => {
24
+ if (node instanceof HTMLSlotElement) {
25
+ return node.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);
28
26
  }
29
27
 
30
- return [el];
28
+ return [node];
31
29
  };
32
30
 
33
- const getSlottedElementsList = elList => {
34
- const reducer = (acc, curr) => acc.concat(getSlottedElements(curr));
35
- return elList.reduce(reducer, []);
31
+ const getSlottedNodesList = (nodeList: Array<Node>) => {
32
+ return nodeList.reduce((acc, curr) => acc.concat(getSlottedNodes(curr)), [] as Array<Node>);
36
33
  };
37
34
 
38
35
  export {
39
36
  getSlotName,
40
- isSlot,
41
- getSlottedElements,
42
- getSlottedElementsList,
37
+ getSlottedNodes,
38
+ getSlottedNodesList,
43
39
  };
@@ -1,23 +1,23 @@
1
- const kebabToCamelMap = new Map();
2
- const camelToKebabMap = new Map();
1
+ const kebabToCamelMap = new Map<string, string>();
2
+ const camelToKebabMap = new Map<string, string>();
3
3
 
4
- const kebabToCamelCase = string => {
4
+ const kebabToCamelCase = (string: string) => {
5
5
  if (!kebabToCamelMap.has(string)) {
6
6
  const result = toCamelCase(string.split("-"));
7
7
  kebabToCamelMap.set(string, result);
8
8
  }
9
- return kebabToCamelMap.get(string);
9
+ return kebabToCamelMap.get(string)!;
10
10
  };
11
11
 
12
- const camelToKebabCase = string => {
12
+ const camelToKebabCase = (string: string) => {
13
13
  if (!camelToKebabMap.has(string)) {
14
14
  const result = string.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
15
15
  camelToKebabMap.set(string, result);
16
16
  }
17
- return camelToKebabMap.get(string);
17
+ return camelToKebabMap.get(string)!;
18
18
  };
19
19
 
20
- const toCamelCase = parts => {
20
+ const toCamelCase = (parts: Array<string>) => {
21
21
  return parts.map((string, index) => {
22
22
  return index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
23
23
  }).join("");
@@ -0,0 +1,70 @@
1
+ import isElementTabbable from "./isElementTabbable.js";
2
+
3
+ /**
4
+ * Returns the tabbable elements within the provided HTMLElement.
5
+ *
6
+ * @public
7
+ * @param { HTMLElement } el the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
8
+ * @returns { Array<HTMLElement> } the tabbable elements
9
+ */
10
+ const getTabbableElements = (el: HTMLElement): Array<HTMLElement> => {
11
+ return getTabbables([...el.children]);
12
+ };
13
+
14
+ /**
15
+ * Returns the last tabbable element within the provided HTMLElement.
16
+ *
17
+ * @public
18
+ * @param { HTMLElement } el the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
19
+ * @returns { HTMLElement | null } the last tabbable element or "null" if not found
20
+ */
21
+ const getLastTabbableElement = (el: HTMLElement): HTMLElement | null => {
22
+ const tabbables = getTabbables([...el.children]);
23
+ return tabbables.length ? tabbables[tabbables.length - 1] : null;
24
+ };
25
+
26
+ const getTabbables = (nodes: Array<Node>, tabbables?: Array<HTMLElement>): Array<HTMLElement> => {
27
+ const tabbableElements = tabbables || [];
28
+
29
+ if (!nodes) {
30
+ return tabbableElements;
31
+ }
32
+
33
+ nodes.forEach(currentNode => {
34
+ if (currentNode.nodeType === Node.TEXT_NODE || currentNode.nodeType === Node.COMMENT_NODE) {
35
+ return;
36
+ }
37
+
38
+ let currentElement = currentNode as HTMLElement;
39
+ if (currentElement.hasAttribute("data-sap-no-tab-ref")) {
40
+ return;
41
+ }
42
+
43
+ if (currentElement.shadowRoot) {
44
+ // get the root node of the ShadowDom (1st none style tag)
45
+ const children = currentElement.shadowRoot.children;
46
+ currentElement = Array.from(children).find(node => node.tagName !== "STYLE") as HTMLElement;
47
+ }
48
+
49
+ if (!currentElement) {
50
+ return;
51
+ }
52
+
53
+ if (isElementTabbable(currentElement)) {
54
+ tabbableElements.push(currentElement);
55
+ }
56
+
57
+ if (currentElement.tagName === "SLOT") {
58
+ getTabbables((currentElement as HTMLSlotElement).assignedNodes() as Array<HTMLElement>, tabbableElements);
59
+ } else {
60
+ getTabbables([...currentElement.children], tabbableElements);
61
+ }
62
+ });
63
+
64
+ return tabbableElements;
65
+ };
66
+
67
+ export {
68
+ getTabbableElements,
69
+ getLastTabbableElement,
70
+ };
@@ -1,4 +1,4 @@
1
- const arraysAreEqual = (arr1, arr2) => {
1
+ const arraysAreEqual = (arr1: Array<any>, arr2: Array<any>) => {
2
2
  if (arr1.length !== arr2.length) {
3
3
  return false;
4
4
  }
@@ -5,7 +5,7 @@
5
5
  * @param {number} max upper bound
6
6
  * @returns {number}
7
7
  */
8
- const clamp = (val, min, max) => {
8
+ const clamp = (val: number, min: number, max: number) => {
9
9
  return Math.min(Math.max(val, min), max);
10
10
  };
11
11
 
@@ -2,22 +2,23 @@
2
2
  * Creates a <link> tag in the <head> tag
3
3
  * @param href - the CSS
4
4
  * @param attributes - optional attributes to add to the tag
5
- * @returns {HTMLElement}
6
5
  */
7
- const createLinkInHead = (href, attributes = {}) => {
6
+ const createLinkInHead = (href: string, attributes?: Record<string, string>) => {
8
7
  const link = document.createElement("link");
9
8
  link.type = "text/css";
10
9
  link.rel = "stylesheet";
11
10
 
12
- Object.entries(attributes).forEach(pair => link.setAttribute(...pair));
11
+ if (attributes) {
12
+ Object.entries(attributes).forEach(pair => link.setAttribute(...pair));
13
+ }
13
14
 
14
15
  link.href = href;
15
16
 
16
17
  document.head.appendChild(link);
17
18
 
18
- return new Promise(resolve => {
19
+ return new Promise<Event>(resolve => {
19
20
  link.addEventListener("load", resolve);
20
- link.addEventListener("error", resolve);
21
+ link.addEventListener("error", resolve); // intended
21
22
  });
22
23
  };
23
24
 
@@ -4,11 +4,13 @@
4
4
  * @param attributes - optional attributes to add to the tag
5
5
  * @returns {HTMLElement}
6
6
  */
7
- const createStyleInHead = (cssText, attributes = {}) => {
7
+ const createStyleInHead = (cssText: string, attributes?: Record<string, string>) => {
8
8
  const style = document.createElement("style");
9
9
  style.type = "text/css";
10
10
 
11
- Object.entries(attributes).forEach(pair => style.setAttribute(...pair));
11
+ if (attributes) {
12
+ Object.entries(attributes).forEach(pair => style.setAttribute(...pair));
13
+ }
12
14
 
13
15
  style.textContent = cssText;
14
16
  document.head.appendChild(style);
@@ -1,13 +1,14 @@
1
+ import { Timeout } from "../types.js";
2
+
1
3
  /**
2
4
  * Delays function execution by given threshold.
3
5
  * @param fn {Function}
4
6
  * @param delay {Integer}
5
7
  */
8
+ let debounceInterval: Timeout | null = null;
6
9
 
7
- let debounceInterval = null;
8
-
9
- const debounce = (fn, delay) => {
10
- clearTimeout(debounceInterval);
10
+ const debounce = (fn: () => void, delay: number) => {
11
+ debounceInterval && clearTimeout(debounceInterval);
11
12
  debounceInterval = setTimeout(() => {
12
13
  debounceInterval = null;
13
14
  fn();
@@ -7,7 +7,7 @@ export default () => {
7
7
  return navigator.language;
8
8
  };
9
9
 
10
- const rawLocale = (browserLanguages && browserLanguages[0]) || navigatorLanguage() || navigator.userLanguage || navigator.browserLanguage;
10
+ const rawLocale = (browserLanguages && browserLanguages[0]) || navigatorLanguage();
11
11
 
12
12
  return rawLocale || DEFAULT_LANGUAGE;
13
13
  };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Escapes a regular expression text so that it can be used in a regular expression.
3
+ *
4
+ * @param { string } text the string to be interpreted literally
5
+ * @returns { string } the escaped string
6
+ */
7
+ const escapeRegex = (text: string) => {
8
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
9
+ };
10
+
11
+ export default escapeRegex;
@@ -1,9 +1,9 @@
1
1
  const messageFormatRegEX = /('')|'([^']+(?:''[^']*)*)(?:'|$)|\{([0-9]+(?:\s*,[^{}]*)?)\}|[{}]/g;
2
2
 
3
- const formatMessage = (text, values) => {
3
+ const formatMessage = (text: string, values: Array<number | string>) => {
4
4
  values = values || [];
5
5
 
6
- return text.replace(messageFormatRegEX, ($0, $1, $2, $3, offset) => {
6
+ return text.replace(messageFormatRegEX, ($0, $1, $2, $3: string | number, offset: number) => {
7
7
  if ($1) {
8
8
  return '\''; /* eslint-disable-line */
9
9
  }
@@ -13,7 +13,8 @@ const formatMessage = (text, values) => {
13
13
  }
14
14
 
15
15
  if ($3) {
16
- return String(values[parseInt($3)]);
16
+ const ind = typeof $3 === "string" ? parseInt($3) : $3;
17
+ return String(values[ind]);
17
18
  }
18
19
 
19
20
  throw new Error(`[i18n]: pattern syntax error at pos ${offset}`);
@@ -1,9 +1,10 @@
1
1
  import escapeRegex from "./escapeRegex.js";
2
+ // @ts-ignore
2
3
  import encodeXML from "../sap/base/security/encodeXML.js";
3
4
 
4
5
  // utility to replace all occurances of a string
5
- function replaceAll(text, find, replace, caseInsensitive) {
6
- return text.replace(new RegExp(escapeRegex(find), `${caseInsensitive ? "i" : ""}g`), replace);
6
+ function replaceAll(text: string, find: string, replace: string | ((substring: string, ...args: any[]) => string), caseInsensitive: boolean) {
7
+ return text.replaceAll(new RegExp(escapeRegex(find), `${caseInsensitive ? "i" : ""}g`), replace as string);
7
8
  }
8
9
 
9
10
  /**
@@ -13,13 +14,13 @@ function replaceAll(text, find, replace, caseInsensitive) {
13
14
  * @param {string} textToHighlight The text which should be highlighted
14
15
  * @return {string} the markup HTML which contains all occurrances of the input text surrounded with a `<b>` tag.
15
16
  */
16
- function generateHighlightedMarkup(text, textToHighlight) {
17
+ function generateHighlightedMarkup(text: string, textToHighlight: string) {
17
18
  if (!text || !textToHighlight) {
18
19
  return text;
19
20
  }
20
21
  // a token is some string that does not appear in either of the input strings
21
22
  // repeat the token until it does not appear in the string
22
- const makeToken = t => {
23
+ const makeToken = (t: string) => {
23
24
  const [s, e] = t.split("");
24
25
  while (text.indexOf(t) >= 0 || textToHighlight.indexOf(t) >= 0) {
25
26
  t = `${s}${t}${e}`;
@@ -31,10 +32,10 @@ function generateHighlightedMarkup(text, textToHighlight) {
31
32
  const openToken = makeToken("12");
32
33
  const closeToken = makeToken("34");
33
34
  // wrap every occurance of the textToHighlight using the open/close tokens (instead of markup at this point)
34
- let result = encodeXML(replaceAll(text, textToHighlight, match => `${openToken}${match}${closeToken}`, true));
35
+ let result = encodeXML(replaceAll(text, textToHighlight, (match: string) => `${openToken}${match}${closeToken}`, true)) as string;
35
36
  // now replace the open and close tokens with the markup that we expect
36
37
  [[openToken, "<b>"], [closeToken, "</b>"]].forEach(([find, replace]) => {
37
- result = replaceAll(result, find, replace);
38
+ result = replaceAll(result, find, replace, false);
38
39
  });
39
40
  return result;
40
41
  }
@@ -1,4 +1,6 @@
1
- const getClassCopy = (klass, constructorCallback) => {
1
+ import type UI5Element from "../UI5Element.js";
2
+
3
+ const getClassCopy = (klass: typeof UI5Element, constructorCallback: () => void) => {
2
4
  return class classCopy extends klass {
3
5
  constructor() {
4
6
  super();
@@ -1,4 +1,4 @@
1
- export default value => {
1
+ export default (value: string) => {
2
2
  const m = /\$([-a-z0-9A-Z._]+)(?::([^$]*))?\$/.exec(value);
3
3
  return m && m[2] ? m[2].split(/,/) : null;
4
4
  };
@@ -0,0 +1,5 @@
1
+ const GLOBAL_CONTENT_DENSITY_CSS_VAR = "--_ui5_content_density";
2
+
3
+ const getEffectiveContentDensity = (el: HTMLElement) => getComputedStyle(el).getPropertyValue(GLOBAL_CONTENT_DENSITY_CSS_VAR);
4
+
5
+ export default getEffectiveContentDensity;
@@ -1,11 +1,11 @@
1
- let groups = [];
1
+ let groups: Array<HTMLElement> = [];
2
2
 
3
- const isFastNavGroupElemenet = $el => {
4
- return $el.getAttribute("data-sap-ui-fastnavgroup") === "true";
3
+ const isFastNavGroupElemenet = (el: HTMLElement) => {
4
+ return el.getAttribute("data-sap-ui-fastnavgroup") === "true";
5
5
  };
6
6
 
7
- const isElementVisible = $el => {
8
- const style = window.getComputedStyle($el);
7
+ const isElementVisible = (el: HTMLElement) => {
8
+ const style = window.getComputedStyle(el);
9
9
 
10
10
  return style.width !== "0px"
11
11
  && style.height !== "0px"
@@ -14,7 +14,7 @@ const isElementVisible = $el => {
14
14
  && style.visibility !== "hidden";
15
15
  };
16
16
 
17
- const findFastNavigationGroups = (container, startFromContainer) => {
17
+ const findFastNavigationGroups = (container: HTMLElement, startFromContainer?: boolean) => {
18
18
  let child,
19
19
  assignedElements,
20
20
  index = 0;
@@ -29,7 +29,7 @@ const findFastNavigationGroups = (container, startFromContainer) => {
29
29
 
30
30
  if (container.shadowRoot) {
31
31
  child = container.shadowRoot.firstChild;
32
- } else if (container.assignedNodes && container.assignedNodes()) {
32
+ } else if (container instanceof HTMLSlotElement && container.assignedNodes()) {
33
33
  assignedElements = container.assignedNodes();
34
34
  child = assignedElements[0];
35
35
  } else if (startFromContainer) {
@@ -39,20 +39,20 @@ const findFastNavigationGroups = (container, startFromContainer) => {
39
39
  }
40
40
 
41
41
  while (child) {
42
- const originalChild = child;
42
+ const originalChild: HTMLElement = child as HTMLElement;
43
43
  if (!child) {
44
44
  return;
45
45
  }
46
46
 
47
47
  if (child.nodeType === 1) {
48
- findFastNavigationGroups(child, false);
48
+ findFastNavigationGroups(child as HTMLElement, false);
49
49
  }
50
50
 
51
51
  child = assignedElements && assignedElements.length ? assignedElements[++index] : originalChild.nextElementSibling;
52
52
  }
53
53
  };
54
54
 
55
- const getFastNavigationGroups = container => {
55
+ const getFastNavigationGroups = (container: HTMLElement) => {
56
56
  groups = [];
57
57
 
58
58
  findFastNavigationGroups(container, true);