@ui5/webcomponents-base 0.0.0-8db0ce01a → 0.0.0-918b4fbe7

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 (659) hide show
  1. package/.eslintignore +3 -1
  2. package/CHANGELOG.md +326 -0
  3. package/README.md +53 -7
  4. package/bundle.esm.js +18 -12
  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 +31 -30
  10. package/dist/Boot.js.map +1 -0
  11. package/dist/CSP.d.ts +30 -0
  12. package/dist/CSP.js +51 -0
  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 +11 -0
  27. package/dist/Device.js +61 -72
  28. package/dist/Device.js.map +1 -0
  29. package/dist/EventProvider.d.ts +25 -0
  30. package/dist/EventProvider.js +67 -88
  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 +17 -110
  37. package/dist/FontFace.js.map +1 -0
  38. package/dist/InitialConfiguration.d.ts +22 -0
  39. package/dist/InitialConfiguration.js +112 -127
  40. package/dist/InitialConfiguration.js.map +1 -0
  41. package/dist/Keys.d.ts +57 -0
  42. package/dist/Keys.js +174 -229
  43. package/dist/Keys.js.map +1 -0
  44. package/dist/ManagedStyles.d.ts +8 -0
  45. package/dist/ManagedStyles.js +77 -0
  46. package/dist/ManagedStyles.js.map +1 -0
  47. package/dist/MediaRange.d.ts +36 -0
  48. package/dist/MediaRange.js +38 -51
  49. package/dist/MediaRange.js.map +1 -0
  50. package/dist/PropertiesFileFormat.d.ts +8 -0
  51. package/dist/PropertiesFileFormat.js +72 -82
  52. package/dist/PropertiesFileFormat.js.map +1 -0
  53. package/dist/Render.d.ts +47 -0
  54. package/dist/Render.js +82 -112
  55. package/dist/Render.js.map +1 -0
  56. package/dist/RenderQueue.d.ts +19 -0
  57. package/dist/RenderQueue.js +52 -62
  58. package/dist/RenderQueue.js.map +1 -0
  59. package/dist/Runtimes.d.ts +27 -0
  60. package/dist/Runtimes.js +86 -0
  61. package/dist/Runtimes.js.map +1 -0
  62. package/dist/StaticArea.d.ts +0 -0
  63. package/dist/StaticArea.js +4 -1
  64. package/dist/StaticArea.js.map +1 -0
  65. package/dist/StaticAreaItem.d.ts +36 -0
  66. package/dist/StaticAreaItem.js +86 -83
  67. package/dist/StaticAreaItem.js.map +1 -0
  68. package/dist/SystemCSSVars.d.ts +2 -0
  69. package/dist/SystemCSSVars.js +6 -28
  70. package/dist/SystemCSSVars.js.map +1 -0
  71. package/dist/Theming.d.ts +3 -0
  72. package/dist/Theming.js +1 -1
  73. package/dist/Theming.js.map +1 -0
  74. package/dist/UI5Element.d.ts +371 -0
  75. package/dist/UI5Element.js +907 -996
  76. package/dist/UI5Element.js.map +1 -0
  77. package/dist/UI5ElementMetadata.d.ts +147 -0
  78. package/dist/UI5ElementMetadata.js +261 -298
  79. package/dist/UI5ElementMetadata.js.map +1 -0
  80. package/dist/animations/AnimationQueue.d.ts +8 -0
  81. package/dist/animations/AnimationQueue.js +31 -38
  82. package/dist/animations/AnimationQueue.js.map +1 -0
  83. package/dist/animations/animate.d.ts +14 -0
  84. package/dist/animations/animate.js +46 -51
  85. package/dist/animations/animate.js.map +1 -0
  86. package/dist/animations/scroll.d.ts +5 -0
  87. package/dist/animations/scroll.js +18 -27
  88. package/dist/animations/scroll.js.map +1 -0
  89. package/dist/animations/slideDown.d.ts +5 -0
  90. package/dist/animations/slideDown.js +53 -78
  91. package/dist/animations/slideDown.js.map +1 -0
  92. package/dist/animations/slideUp.d.ts +5 -0
  93. package/dist/animations/slideUp.js +49 -70
  94. package/dist/animations/slideUp.js.map +1 -0
  95. package/dist/api.json +1 -0
  96. package/dist/asset-registries/Icons.d.ts +30 -0
  97. package/dist/asset-registries/Icons.js +87 -104
  98. package/dist/asset-registries/Icons.js.map +1 -0
  99. package/dist/asset-registries/Illustrations.d.ts +16 -0
  100. package/dist/asset-registries/Illustrations.js +46 -0
  101. package/dist/asset-registries/Illustrations.js.map +1 -0
  102. package/dist/asset-registries/LocaleData.d.ts +7 -0
  103. package/dist/asset-registries/LocaleData.js +104 -118
  104. package/dist/asset-registries/LocaleData.js.map +1 -0
  105. package/dist/asset-registries/Themes.d.ts +10 -0
  106. package/dist/asset-registries/Themes.js +38 -66
  107. package/dist/asset-registries/Themes.js.map +1 -0
  108. package/dist/asset-registries/i18n.d.ts +23 -0
  109. package/dist/asset-registries/i18n.js +55 -81
  110. package/dist/asset-registries/i18n.js.map +1 -0
  111. package/dist/assets/bundle.esm.60caa7e5.js +56 -0
  112. package/dist/assets-meta/IconCollectionsAlias.d.ts +17 -0
  113. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  114. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  115. package/dist/config/AnimationMode.d.ts +14 -0
  116. package/dist/config/AnimationMode.js +21 -18
  117. package/dist/config/AnimationMode.js.map +1 -0
  118. package/dist/config/CalendarType.d.ts +8 -0
  119. package/dist/config/CalendarType.js +13 -12
  120. package/dist/config/CalendarType.js.map +1 -0
  121. package/dist/config/FormatSettings.d.ts +11 -0
  122. package/dist/config/FormatSettings.js +10 -8
  123. package/dist/config/FormatSettings.js.map +1 -0
  124. package/dist/config/Icons.d.ts +30 -0
  125. package/dist/config/Icons.js +48 -0
  126. package/dist/config/Icons.js.map +1 -0
  127. package/dist/config/Language.d.ts +31 -0
  128. package/dist/config/Language.js +31 -43
  129. package/dist/config/Language.js.map +1 -0
  130. package/dist/config/NoConflict.d.ts +20 -0
  131. package/dist/config/NoConflict.js +40 -41
  132. package/dist/config/NoConflict.js.map +1 -0
  133. package/dist/config/RTL.d.ts +7 -0
  134. package/dist/config/RTL.js +23 -20
  135. package/dist/config/RTL.js.map +1 -0
  136. package/dist/config/Theme.d.ts +28 -0
  137. package/dist/config/Theme.js +45 -22
  138. package/dist/config/Theme.js.map +1 -0
  139. package/dist/config/ThemeRoots.d.ts +4 -0
  140. package/dist/config/ThemeRoots.js +28 -0
  141. package/dist/config/ThemeRoots.js.map +1 -0
  142. package/dist/css/BusyIndicator.css +80 -0
  143. package/dist/css/FontFace.css +66 -0
  144. package/dist/css/OverrideFontFace.css +32 -0
  145. package/dist/css/SystemCSSVars.css +17 -0
  146. package/dist/delegate/ItemNavigation.d.ts +113 -0
  147. package/dist/delegate/ItemNavigation.js +277 -246
  148. package/dist/delegate/ItemNavigation.js.map +1 -0
  149. package/dist/delegate/ResizeHandler.d.ts +24 -0
  150. package/dist/delegate/ResizeHandler.js +68 -91
  151. package/dist/delegate/ResizeHandler.js.map +1 -0
  152. package/dist/delegate/ScrollEnablement.d.ts +43 -0
  153. package/dist/delegate/ScrollEnablement.js +157 -174
  154. package/dist/delegate/ScrollEnablement.js.map +1 -0
  155. package/dist/features/F6Navigation.d.ts +16 -0
  156. package/dist/features/F6Navigation.js +112 -0
  157. package/dist/features/F6Navigation.js.map +1 -0
  158. package/dist/features/OpenUI5Element.d.ts +9 -0
  159. package/dist/features/OpenUI5Element.js +5 -0
  160. package/dist/features/OpenUI5Element.js.map +1 -0
  161. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  162. package/dist/features/OpenUI5Enablement.js +96 -0
  163. package/dist/features/OpenUI5Enablement.js.map +1 -0
  164. package/dist/features/OpenUI5Support.d.ts +23 -0
  165. package/dist/features/OpenUI5Support.js +91 -119
  166. package/dist/features/OpenUI5Support.js.map +1 -0
  167. package/dist/generated/AssetParameters.js +1 -1
  168. package/dist/generated/VersionInfo.js +10 -0
  169. package/dist/generated/css/BusyIndicator.css.js +5 -0
  170. package/dist/generated/css/FontFace.css.js +5 -0
  171. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  172. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  173. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  174. package/dist/getSharedResource.d.ts +11 -0
  175. package/dist/getSharedResource.js +12 -16
  176. package/dist/getSharedResource.js.map +1 -0
  177. package/dist/i18nBundle.d.ts +43 -0
  178. package/dist/i18nBundle.js +67 -44
  179. package/dist/i18nBundle.js.map +1 -0
  180. package/dist/locale/Locale.d.ts +22 -0
  181. package/dist/locale/Locale.js +75 -87
  182. package/dist/locale/Locale.js.map +1 -0
  183. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  184. package/dist/locale/RTLAwareRegistry.js +6 -11
  185. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  186. package/dist/locale/applyDirection.d.ts +10 -0
  187. package/dist/locale/applyDirection.js +7 -7
  188. package/dist/locale/applyDirection.js.map +1 -0
  189. package/dist/locale/directionChange.d.ts +15 -0
  190. package/dist/locale/directionChange.js +7 -15
  191. package/dist/locale/directionChange.js.map +1 -0
  192. package/dist/locale/getEffectiveDir.d.ts +2 -0
  193. package/dist/locale/getEffectiveDir.js +20 -24
  194. package/dist/locale/getEffectiveDir.js.map +1 -0
  195. package/dist/locale/getLocale.d.ts +7 -0
  196. package/dist/locale/getLocale.js +26 -29
  197. package/dist/locale/getLocale.js.map +1 -0
  198. package/dist/locale/languageChange.d.ts +5 -0
  199. package/dist/locale/languageChange.js +8 -16
  200. package/dist/locale/languageChange.js.map +1 -0
  201. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  202. package/dist/locale/nextFallbackLocale.js +15 -19
  203. package/dist/locale/nextFallbackLocale.js.map +1 -0
  204. package/dist/locale/normalizeLocale.d.ts +7 -0
  205. package/dist/locale/normalizeLocale.js +34 -41
  206. package/dist/locale/normalizeLocale.js.map +1 -0
  207. package/dist/renderer/LitRenderer.d.ts +14 -0
  208. package/dist/renderer/LitRenderer.js +34 -24
  209. package/dist/renderer/LitRenderer.js.map +1 -0
  210. package/dist/renderer/directives/style-map.js +72 -0
  211. package/dist/renderer/executeTemplate.d.ts +13 -0
  212. package/dist/renderer/executeTemplate.js +20 -7
  213. package/dist/renderer/executeTemplate.js.map +1 -0
  214. package/dist/sap/base/Log.js +241 -0
  215. package/dist/sap/base/assert.js +8 -0
  216. package/dist/sap/base/security/URLListValidator.js +148 -0
  217. package/dist/sap/base/security/encodeCSS.js +14 -0
  218. package/dist/sap/base/security/encodeXML.js +23 -0
  219. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  220. package/dist/sap/base/strings/toHex.js +8 -0
  221. package/dist/sap/base/util/now.js +7 -0
  222. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  223. package/dist/theming/CustomStyle.d.ts +6 -0
  224. package/dist/theming/CustomStyle.js +37 -31
  225. package/dist/theming/CustomStyle.js.map +1 -0
  226. package/dist/theming/ThemeLoaded.d.ts +5 -0
  227. package/dist/theming/ThemeLoaded.js +8 -16
  228. package/dist/theming/ThemeLoaded.js.map +1 -0
  229. package/dist/theming/applyTheme.d.ts +2 -0
  230. package/dist/theming/applyTheme.js +62 -65
  231. package/dist/theming/applyTheme.js.map +1 -0
  232. package/dist/theming/getConstructableStyle.d.ts +9 -0
  233. package/dist/theming/getConstructableStyle.js +12 -17
  234. package/dist/theming/getConstructableStyle.js.map +1 -0
  235. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  236. package/dist/theming/getEffectiveLinksHrefs.js +16 -0
  237. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  238. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  239. package/dist/theming/getEffectiveStyle.js +25 -23
  240. package/dist/theming/getEffectiveStyle.js.map +1 -0
  241. package/dist/theming/getStylesString.d.ts +3 -0
  242. package/dist/theming/getStylesString.js +8 -11
  243. package/dist/theming/getStylesString.js.map +1 -0
  244. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  245. package/dist/theming/getThemeDesignerTheme.js +73 -60
  246. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  247. package/dist/theming/preloadLinks.d.ts +3 -0
  248. package/dist/theming/preloadLinks.js +19 -0
  249. package/dist/theming/preloadLinks.js.map +1 -0
  250. package/dist/thirdparty/_merge.d.ts +2 -0
  251. package/dist/thirdparty/_merge.js +7 -4
  252. package/dist/thirdparty/_merge.js.map +1 -0
  253. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  254. package/dist/thirdparty/isPlainObject.js +11 -10
  255. package/dist/thirdparty/isPlainObject.js.map +1 -0
  256. package/dist/thirdparty/merge.d.ts +2 -0
  257. package/dist/thirdparty/merge.js +4 -8
  258. package/dist/thirdparty/merge.js.map +1 -0
  259. package/dist/types/AnimationMode.d.ts +32 -0
  260. package/dist/types/AnimationMode.js +33 -6
  261. package/dist/types/AnimationMode.js.map +1 -0
  262. package/dist/types/CSSColor.d.ts +16 -0
  263. package/dist/types/CSSColor.js +15 -5
  264. package/dist/types/CSSColor.js.map +1 -0
  265. package/dist/types/CalendarType.d.ts +37 -0
  266. package/dist/types/CalendarType.js +35 -18
  267. package/dist/types/CalendarType.js.map +1 -0
  268. package/dist/types/DOMReference.d.ts +17 -0
  269. package/dist/types/DOMReference.js +25 -0
  270. package/dist/types/DOMReference.js.map +1 -0
  271. package/dist/types/DataType.d.ts +25 -0
  272. package/dist/types/DataType.js +32 -13
  273. package/dist/types/DataType.js.map +1 -0
  274. package/dist/types/Float.d.ts +18 -0
  275. package/dist/types/Float.js +18 -6
  276. package/dist/types/Float.js.map +1 -0
  277. package/dist/types/Integer.d.ts +18 -0
  278. package/dist/types/Integer.js +18 -5
  279. package/dist/types/Integer.js.map +1 -0
  280. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  281. package/dist/types/InvisibleMessageMode.js +27 -0
  282. package/dist/types/InvisibleMessageMode.js.map +1 -0
  283. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  284. package/dist/types/ItemNavigationBehavior.js +22 -12
  285. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  286. package/dist/types/NavigationMode.d.ts +32 -0
  287. package/dist/types/NavigationMode.js +33 -6
  288. package/dist/types/NavigationMode.js.map +1 -0
  289. package/dist/types/ValueState.d.ts +42 -0
  290. package/dist/types/ValueState.js +41 -19
  291. package/dist/types/ValueState.js.map +1 -0
  292. package/dist/types.d.ts +13 -0
  293. package/dist/types.js +2 -0
  294. package/dist/types.js.map +1 -0
  295. package/dist/updateShadowRoot.d.ts +8 -0
  296. package/dist/updateShadowRoot.js +23 -15
  297. package/dist/updateShadowRoot.js.map +1 -0
  298. package/dist/util/AriaLabelHelper.d.ts +6 -0
  299. package/dist/util/AriaLabelHelper.js +37 -34
  300. package/dist/util/AriaLabelHelper.js.map +1 -0
  301. package/dist/util/Caret.d.ts +7 -0
  302. package/dist/util/Caret.js +16 -38
  303. package/dist/util/Caret.js.map +1 -0
  304. package/dist/util/ColorConversion.d.ts +33 -0
  305. package/dist/util/ColorConversion.js +315 -348
  306. package/dist/util/ColorConversion.js.map +1 -0
  307. package/dist/util/FetchHelper.d.ts +3 -0
  308. package/dist/util/FetchHelper.js +19 -25
  309. package/dist/util/FetchHelper.js.map +1 -0
  310. package/dist/util/FocusableElements.d.ts +3 -0
  311. package/dist/util/FocusableElements.js +57 -68
  312. package/dist/util/FocusableElements.js.map +1 -0
  313. package/dist/util/HTMLSanitizer.d.ts +3 -0
  314. package/dist/util/HTMLSanitizer.js +6 -0
  315. package/dist/util/HTMLSanitizer.js.map +1 -0
  316. package/dist/util/InvisibleMessage.d.ts +10 -0
  317. package/dist/util/InvisibleMessage.js +56 -0
  318. package/dist/util/InvisibleMessage.js.map +1 -0
  319. package/dist/util/PopupUtils.d.ts +7 -0
  320. package/dist/util/PopupUtils.js +57 -76
  321. package/dist/util/PopupUtils.js.map +1 -0
  322. package/dist/util/SlotsHelper.d.ts +9 -0
  323. package/dist/util/SlotsHelper.js +22 -35
  324. package/dist/util/SlotsHelper.js.map +1 -0
  325. package/dist/util/StringHelper.d.ts +3 -0
  326. package/dist/util/StringHelper.js +17 -20
  327. package/dist/util/StringHelper.js.map +1 -0
  328. package/dist/util/TabbableElements.d.ts +3 -0
  329. package/dist/util/TabbableElements.js +39 -43
  330. package/dist/util/TabbableElements.js.map +1 -0
  331. package/dist/util/arraysAreEqual.d.ts +2 -0
  332. package/dist/util/arraysAreEqual.js +10 -12
  333. package/dist/util/arraysAreEqual.js.map +1 -0
  334. package/dist/util/clamp.d.ts +9 -0
  335. package/dist/util/clamp.js +2 -2
  336. package/dist/util/clamp.js.map +1 -0
  337. package/dist/util/createLinkInHead.d.ts +7 -0
  338. package/dist/util/createLinkInHead.js +21 -0
  339. package/dist/util/createLinkInHead.js.map +1 -0
  340. package/dist/util/createStyleInHead.d.ts +8 -0
  341. package/dist/util/createStyleInHead.js +10 -10
  342. package/dist/util/createStyleInHead.js.map +1 -0
  343. package/dist/util/debounce.d.ts +2 -0
  344. package/dist/util/debounce.js +6 -8
  345. package/dist/util/debounce.js.map +1 -0
  346. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  347. package/dist/util/detectNavigatorLanguage.js +7 -10
  348. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  349. package/dist/util/escapeRegex.d.ts +8 -0
  350. package/dist/util/escapeRegex.js +11 -0
  351. package/dist/util/escapeRegex.js.map +1 -0
  352. package/dist/util/formatMessage.d.ts +2 -0
  353. package/dist/util/formatMessage.js +15 -19
  354. package/dist/util/formatMessage.js.map +1 -0
  355. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  356. package/dist/util/generateHighlightedMarkup.js +41 -0
  357. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  358. package/dist/util/getActiveElement.d.ts +2 -0
  359. package/dist/util/getActiveElement.js +6 -8
  360. package/dist/util/getActiveElement.js.map +1 -0
  361. package/dist/util/getClassCopy.d.ts +398 -0
  362. package/dist/util/getClassCopy.js +7 -7
  363. package/dist/util/getClassCopy.js.map +1 -0
  364. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  365. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  366. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  367. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  368. package/dist/util/getEffectiveContentDensity.js +2 -3
  369. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  370. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  371. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  372. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  373. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  374. package/dist/util/getFastNavigationGroups.js +51 -0
  375. package/dist/util/getFastNavigationGroups.js.map +1 -0
  376. package/dist/util/getFileExtension.d.ts +12 -0
  377. package/dist/util/getFileExtension.js +9 -11
  378. package/dist/util/getFileExtension.js.map +1 -0
  379. package/dist/util/getNormalizedTarget.d.ts +7 -0
  380. package/dist/util/getNormalizedTarget.js +14 -0
  381. package/dist/util/getNormalizedTarget.js.map +1 -0
  382. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  383. package/dist/util/getSingletonElementInstance.js +7 -10
  384. package/dist/util/getSingletonElementInstance.js.map +1 -0
  385. package/dist/util/isDefaultSlotProvided.d.ts +2 -0
  386. package/dist/util/isDefaultSlotProvided.js +10 -0
  387. package/dist/util/isDefaultSlotProvided.js.map +1 -0
  388. package/dist/util/isElementClickable.d.ts +2 -0
  389. package/dist/util/isElementClickable.js +16 -0
  390. package/dist/util/isElementClickable.js.map +1 -0
  391. package/dist/util/isElementHidden.d.ts +2 -0
  392. package/dist/util/isElementHidden.js +8 -0
  393. package/dist/util/isElementHidden.js.map +1 -0
  394. package/dist/util/isElementInView.d.ts +6 -0
  395. package/dist/util/isElementInView.js +6 -9
  396. package/dist/util/isElementInView.js.map +1 -0
  397. package/dist/util/isElementTabbable.d.ts +2 -0
  398. package/dist/util/isElementTabbable.js +22 -0
  399. package/dist/util/isElementTabbable.js.map +1 -0
  400. package/dist/util/isValidPropertyName.d.ts +8 -0
  401. package/dist/util/isValidPropertyName.js +16 -17
  402. package/dist/util/isValidPropertyName.js.map +1 -0
  403. package/dist/util/whenDOMReady.d.ts +2 -0
  404. package/dist/util/whenDOMReady.js +11 -10
  405. package/dist/util/whenDOMReady.js.map +1 -0
  406. package/dist/validateThemeRoot.d.ts +2 -0
  407. package/dist/validateThemeRoot.js +47 -0
  408. package/dist/validateThemeRoot.js.map +1 -0
  409. package/global.d.ts +44 -0
  410. package/index.js +1 -1
  411. package/lib/generate-asset-parameters/index.js +8 -5
  412. package/lib/generate-styles/index.js +26 -0
  413. package/lib/generate-version-info/index.js +32 -0
  414. package/package-scripts.js +47 -23
  415. package/package.json +19 -9
  416. package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
  417. package/src/Boot.ts +61 -0
  418. package/src/CSP.ts +66 -0
  419. package/src/CustomElementsRegistry.ts +98 -0
  420. package/src/CustomElementsScope.ts +33 -0
  421. package/src/{CustomElementsScope.js → CustomElementsScopeUtils.ts} +14 -7
  422. package/src/DOMObserver.ts +28 -0
  423. package/src/{Device.js → Device.ts} +25 -4
  424. package/src/EventProvider.ts +87 -0
  425. package/src/FeaturesRegistry.ts +14 -0
  426. package/src/FontFace.ts +31 -0
  427. package/src/{InitialConfiguration.js → InitialConfiguration.ts} +62 -17
  428. package/src/Keys.ts +295 -0
  429. package/src/ManagedStyles.ts +92 -0
  430. package/src/{MediaRange.js → MediaRange.ts} +14 -14
  431. package/src/{PropertiesFileFormat.js → PropertiesFileFormat.ts} +8 -8
  432. package/src/{Render.js → Render.ts} +27 -20
  433. package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
  434. package/src/Runtimes.ts +114 -0
  435. package/src/{StaticArea.js → StaticArea.ts} +0 -0
  436. package/src/{StaticAreaItem.js → StaticAreaItem.ts} +39 -22
  437. package/src/SystemCSSVars.ts +10 -0
  438. package/src/{Theming.js → Theming.ts} +0 -0
  439. package/src/{UI5Element.js → UI5Element.ts} +269 -178
  440. package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +98 -45
  441. package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
  442. package/src/animations/animate.ts +64 -0
  443. package/src/animations/scroll.ts +21 -0
  444. package/src/animations/{slideDown.js → slideDown.ts} +27 -34
  445. package/src/animations/{slideUp.js → slideUp.ts} +28 -32
  446. package/src/asset-registries/Icons.ts +161 -0
  447. package/src/asset-registries/Illustrations.ts +73 -0
  448. package/src/asset-registries/{LocaleData.js → LocaleData.ts} +47 -25
  449. package/src/asset-registries/Themes.ts +67 -0
  450. package/src/asset-registries/{i18n.js → i18n.ts} +21 -24
  451. package/src/assets-meta/IconCollectionsAlias.ts +18 -0
  452. package/src/config/AnimationMode.ts +33 -0
  453. package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
  454. package/src/config/FormatSettings.ts +21 -0
  455. package/src/config/Icons.ts +59 -0
  456. package/src/config/{Language.js → Language.ts} +22 -18
  457. package/src/config/NoConflict.ts +67 -0
  458. package/src/config/{RTL.js → RTL.ts} +14 -4
  459. package/src/config/Theme.ts +64 -0
  460. package/src/config/ThemeRoots.ts +41 -0
  461. package/src/css/BusyIndicator.css +80 -0
  462. package/src/css/FontFace.css +66 -0
  463. package/src/css/OverrideFontFace.css +32 -0
  464. package/src/css/SystemCSSVars.css +17 -0
  465. package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +129 -21
  466. package/src/delegate/{ResizeHandler.js → ResizeHandler.ts} +25 -36
  467. package/src/delegate/ScrollEnablement.ts +215 -0
  468. package/src/features/F6Navigation.ts +141 -0
  469. package/src/features/OpenUI5Element.ts +11 -0
  470. package/src/features/OpenUI5Enablement.ts +117 -0
  471. package/src/features/OpenUI5Support.ts +148 -0
  472. package/src/{getSharedResource.js → getSharedResource.ts} +3 -3
  473. package/src/i18nBundle.ts +108 -0
  474. package/src/locale/{Locale.js → Locale.ts} +15 -5
  475. package/src/locale/RTLAwareRegistry.ts +16 -0
  476. package/src/locale/{applyDirection.js → applyDirection.ts} +4 -3
  477. package/src/locale/{directionChange.js → directionChange.ts} +6 -4
  478. package/src/locale/{getEffectiveDir.js → getEffectiveDir.ts} +1 -1
  479. package/src/locale/{getLocale.js → getLocale.ts} +12 -7
  480. package/src/locale/languageChange.ts +24 -0
  481. package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
  482. package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +4 -2
  483. package/src/renderer/LitRenderer.ts +60 -0
  484. package/src/renderer/directives/style-map.js +72 -0
  485. package/src/renderer/executeTemplate.ts +40 -0
  486. package/src/theming/CustomStyle.ts +62 -0
  487. package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
  488. package/src/theming/applyTheme.ts +90 -0
  489. package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
  490. package/src/theming/getEffectiveLinksHrefs.ts +24 -0
  491. package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +15 -4
  492. package/src/theming/getStylesString.ts +13 -0
  493. package/src/theming/getThemeDesignerTheme.ts +101 -0
  494. package/src/theming/preloadLinks.ts +24 -0
  495. package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
  496. package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
  497. package/src/thirdparty/merge.ts +5 -0
  498. package/src/types/AnimationMode.ts +33 -0
  499. package/src/types/{CSSColor.js → CSSColor.ts} +12 -1
  500. package/src/types/CalendarType.ts +38 -0
  501. package/src/types/DOMReference.ts +28 -0
  502. package/src/types/DataType.ts +51 -0
  503. package/src/types/Float.ts +25 -0
  504. package/src/types/Integer.ts +25 -0
  505. package/src/types/InvisibleMessageMode.ts +27 -0
  506. package/src/types/ItemNavigationBehavior.ts +26 -0
  507. package/src/types/NavigationMode.ts +33 -0
  508. package/src/types/ValueState.ts +47 -0
  509. package/src/types.ts +22 -0
  510. package/src/updateShadowRoot.ts +37 -0
  511. package/src/util/AriaLabelHelper.ts +63 -0
  512. package/src/util/Caret.ts +28 -0
  513. package/src/util/ColorConversion.ts +394 -0
  514. package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
  515. package/src/util/FocusableElements.ts +80 -0
  516. package/src/util/HTMLSanitizer.ts +9 -0
  517. package/src/util/InvisibleMessage.ts +69 -0
  518. package/src/util/PopupUtils.ts +114 -0
  519. package/src/util/{SlotsHelper.js → SlotsHelper.ts} +9 -13
  520. package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
  521. package/src/util/TabbableElements.ts +56 -0
  522. package/src/util/{arraysAreEqual.js → arraysAreEqual.ts} +1 -1
  523. package/src/util/{clamp.js → clamp.ts} +1 -1
  524. package/src/util/createLinkInHead.ts +25 -0
  525. package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
  526. package/src/util/{debounce.js → debounce.ts} +5 -4
  527. package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
  528. package/src/util/escapeRegex.ts +11 -0
  529. package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
  530. package/src/util/generateHighlightedMarkup.ts +43 -0
  531. package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
  532. package/src/util/{getClassCopy.js → getClassCopy.ts} +3 -1
  533. package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
  534. package/src/util/getEffectiveContentDensity.ts +5 -0
  535. package/src/util/getEffectiveScrollbarStyle.ts +5 -0
  536. package/src/util/getFastNavigationGroups.ts +63 -0
  537. package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
  538. package/src/util/getNormalizedTarget.ts +16 -0
  539. package/src/util/{getSingletonElementInstance.js → getSingletonElementInstance.ts} +1 -1
  540. package/src/util/isDefaultSlotProvided.ts +11 -0
  541. package/src/util/isElementClickable.ts +19 -0
  542. package/src/util/isElementHidden.ts +9 -0
  543. package/src/util/{isElementInView.js → isElementInView.ts} +1 -1
  544. package/src/util/isElementTabbable.ts +28 -0
  545. package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +1 -1
  546. package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
  547. package/src/validateThemeRoot.ts +58 -0
  548. package/tsconfig.json +13 -0
  549. package/used-modules.txt +10 -0
  550. package/config/.eslintrc.js +0 -3
  551. package/config/rollup.config.js +0 -1
  552. package/dist/RenderScheduler.js +0 -44
  553. package/dist/animations/config.js +0 -5
  554. package/dist/config/AssetsPath.js +0 -17
  555. package/dist/isLegacyBrowser.js +0 -3
  556. package/dist/renderer/ifDefined.js +0 -21
  557. package/dist/renderer/scopeHTML.js +0 -32
  558. package/dist/resources/bundle.esm.js +0 -121
  559. package/dist/resources/bundle.esm.js.map +0 -1
  560. package/dist/test-resources/assets/Themes.js +0 -17
  561. package/dist/test-resources/elements/Child.js +0 -35
  562. package/dist/test-resources/elements/Generic.js +0 -84
  563. package/dist/test-resources/elements/GenericExt.js +0 -26
  564. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  565. package/dist/test-resources/elements/Parent.js +0 -41
  566. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  567. package/dist/test-resources/pages/AllTestElements.html +0 -39
  568. package/dist/test-resources/pages/Configuration.html +0 -18
  569. package/dist/test-resources/pages/ConfigurationScript.html +0 -34
  570. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  571. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  572. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  573. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  574. package/dist/test-resources/pages/i18n.html +0 -35
  575. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
  576. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
  577. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -93
  578. package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
  579. package/dist/test-resources/specs/StaticArea.spec.js +0 -36
  580. package/dist/test-resources/specs/Theming.spec.js +0 -33
  581. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
  582. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
  583. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
  584. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
  585. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
  586. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
  587. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
  588. package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
  589. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  590. package/dist/types/CSSSize.js +0 -9
  591. package/dist/types/PopupState.js +0 -37
  592. package/dist/util/encodeCSS.js +0 -24
  593. package/dist/util/findNodeOwner.js +0 -35
  594. package/dist/util/isDescendantOf.js +0 -15
  595. package/dist/util/isNodeClickable.js +0 -19
  596. package/dist/util/isNodeHidden.js +0 -9
  597. package/dist/util/isNodeTabbable.js +0 -28
  598. package/dist/util/setToArray.js +0 -10
  599. package/hash.txt +0 -1
  600. package/src/Boot.js +0 -43
  601. package/src/CustomElementsRegistry.js +0 -39
  602. package/src/DOMObserver.js +0 -65
  603. package/src/EventProvider.js +0 -91
  604. package/src/FeaturesRegistry.js +0 -11
  605. package/src/FontFace.js +0 -118
  606. package/src/Keys.js +0 -233
  607. package/src/RenderScheduler.js +0 -44
  608. package/src/SystemCSSVars.js +0 -31
  609. package/src/animations/animate.js +0 -53
  610. package/src/animations/config.js +0 -5
  611. package/src/animations/scroll.js +0 -28
  612. package/src/asset-registries/Icons.js +0 -121
  613. package/src/asset-registries/Themes.js +0 -78
  614. package/src/config/AnimationMode.js +0 -23
  615. package/src/config/AssetsPath.js +0 -17
  616. package/src/config/FormatSettings.js +0 -13
  617. package/src/config/NoConflict.js +0 -51
  618. package/src/config/Theme.js +0 -28
  619. package/src/delegate/ScrollEnablement.js +0 -182
  620. package/src/features/OpenUI5Support.js +0 -125
  621. package/src/i18nBundle.js +0 -55
  622. package/src/isLegacyBrowser.js +0 -3
  623. package/src/locale/RTLAwareRegistry.js +0 -14
  624. package/src/locale/languageChange.js +0 -22
  625. package/src/renderer/LitRenderer.js +0 -31
  626. package/src/renderer/executeTemplate.js +0 -17
  627. package/src/renderer/ifDefined.js +0 -21
  628. package/src/renderer/scopeHTML.js +0 -32
  629. package/src/theming/CustomStyle.js +0 -40
  630. package/src/theming/applyTheme.js +0 -78
  631. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  632. package/src/theming/getStylesString.js +0 -13
  633. package/src/theming/getThemeDesignerTheme.js +0 -67
  634. package/src/thirdparty/merge.js +0 -10
  635. package/src/types/AnimationMode.js +0 -7
  636. package/src/types/CSSSize.js +0 -9
  637. package/src/types/CalendarType.js +0 -22
  638. package/src/types/DataType.js +0 -25
  639. package/src/types/Float.js +0 -10
  640. package/src/types/Integer.js +0 -9
  641. package/src/types/ItemNavigationBehavior.js +0 -16
  642. package/src/types/NavigationMode.js +0 -7
  643. package/src/types/PopupState.js +0 -37
  644. package/src/types/ValueState.js +0 -22
  645. package/src/updateShadowRoot.js +0 -26
  646. package/src/util/AriaLabelHelper.js +0 -41
  647. package/src/util/Caret.js +0 -45
  648. package/src/util/ColorConversion.js +0 -370
  649. package/src/util/FocusableElements.js +0 -73
  650. package/src/util/PopupUtils.js +0 -93
  651. package/src/util/TabbableElements.js +0 -47
  652. package/src/util/encodeCSS.js +0 -24
  653. package/src/util/findNodeOwner.js +0 -35
  654. package/src/util/getEffectiveContentDensity.js +0 -5
  655. package/src/util/isDescendantOf.js +0 -15
  656. package/src/util/isNodeClickable.js +0 -19
  657. package/src/util/isNodeHidden.js +0 -9
  658. package/src/util/isNodeTabbable.js +0 -28
  659. package/src/util/setToArray.js +0 -10
@@ -1,8 +1,44 @@
1
1
  import DataType from "./types/DataType.js";
2
- import isDescendantOf from "./util/isDescendantOf.js";
3
2
  import { camelToKebabCase } from "./util/StringHelper.js";
4
- import { getSlottedElements } from "./util/SlotsHelper.js";
5
- import { getEffectiveScopingSuffixForTag } from "./CustomElementsScope.js";
3
+ import { getSlottedNodes } from "./util/SlotsHelper.js";
4
+ import { getEffectiveScopingSuffixForTag } from "./CustomElementsScopeUtils.js";
5
+
6
+ type SlotInvalidation = {
7
+ properties: boolean | Array<string>,
8
+ slots: boolean | Array<string>,
9
+ }
10
+
11
+ type Slot = {
12
+ type: typeof Node | typeof HTMLElement,
13
+ propertyName?: string,
14
+ individualSlots?: boolean,
15
+ invalidateOnChildChange?: boolean | SlotInvalidation,
16
+ };
17
+
18
+ type SlotValue = Node;
19
+
20
+ type Property = {
21
+ multiple?: boolean,
22
+ type: BooleanConstructor | StringConstructor | ObjectConstructor | DataType
23
+ defaultValue?: PropertyValue,
24
+ noAttribute?: boolean,
25
+ compareValues?: boolean,
26
+ }
27
+
28
+ type PropertyValue = boolean | number | string | object | undefined | null | DataType;
29
+
30
+ type Metadata = {
31
+ tag: string,
32
+ managedSlots?: boolean,
33
+ properties?: Record<string, Property>,
34
+ slots?: Record<string, Slot>,
35
+ events?: Record<string, object>,
36
+ fastNavigation?: boolean,
37
+ themeAware?: boolean,
38
+ languageAware?: boolean,
39
+ };
40
+
41
+ type State = Record<string, PropertyValue | Array<SlotValue>>;
6
42
 
7
43
  /**
8
44
  *
@@ -10,16 +46,18 @@ import { getEffectiveScopingSuffixForTag } from "./CustomElementsScope.js";
10
46
  * @public
11
47
  */
12
48
  class UI5ElementMetadata {
13
- constructor(metadata) {
49
+ metadata: Metadata;
50
+ _initialState: State | undefined;
51
+
52
+ constructor(metadata: Metadata) {
14
53
  this.metadata = metadata;
15
54
  }
16
55
 
17
56
  getInitialState() {
18
57
  if (Object.prototype.hasOwnProperty.call(this, "_initialState")) {
19
- return this._initialState;
58
+ return this._initialState!;
20
59
  }
21
-
22
- const initialState = {};
60
+ const initialState: State = {};
23
61
  const slotsAreManaged = this.slotsAreManaged();
24
62
 
25
63
  // Initialize properties
@@ -48,7 +86,7 @@ class UI5ElementMetadata {
48
86
  // Initialize slots
49
87
  if (slotsAreManaged) {
50
88
  const slots = this.getSlots();
51
- for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
89
+ for (const [slotName, slotData] of Object.entries<Slot>(slots)) { // eslint-disable-line
52
90
  const propertyName = slotData.propertyName || slotName;
53
91
  initialState[propertyName] = [];
54
92
  }
@@ -59,22 +97,26 @@ class UI5ElementMetadata {
59
97
  }
60
98
 
61
99
  /**
62
- * Only intended for use by UI5Element.js
63
- * @protected
100
+ * Validates the property's value and returns it if correct
101
+ * or returns the default value if not.
102
+ * <b>Note:</b> Only intended for use by UI5Element.js
103
+ * @public
64
104
  */
65
- static validatePropertyValue(value, propData) {
105
+ static validatePropertyValue(value: PropertyValue, propData: Property) {
66
106
  const isMultiple = propData.multiple;
67
- if (isMultiple) {
68
- return value.map(propValue => validateSingleProperty(propValue, propData));
107
+ if (isMultiple && Array.isArray(value)) {
108
+ return value.map((propValue: PropertyValue) => validateSingleProperty(propValue, propData));
69
109
  }
70
110
  return validateSingleProperty(value, propData);
71
111
  }
72
112
 
73
113
  /**
74
- * Only intended for use by UI5Element.js
75
- * @protected
114
+ * Validates the slot's value and returns it if correct
115
+ * or throws an exception if not.
116
+ * <b>Note:</b> Only intended for use by UI5Element.js
117
+ * @pubic
76
118
  */
77
- static validateSlotValue(value, slotData) {
119
+ static validateSlotValue(value: Node, slotData: Slot) {
78
120
  return validateSingleSlot(value, slotData);
79
121
  }
80
122
 
@@ -100,33 +142,15 @@ class UI5ElementMetadata {
100
142
  return `${pureTag}-${suffix}`;
101
143
  }
102
144
 
103
- /**
104
- * Used to get the tag we need to register for backwards compatibility
105
- * @public
106
- */
107
- getAltTag() {
108
- const pureAltTag = this.metadata.altTag;
109
- if (!pureAltTag) {
110
- return;
111
- }
112
-
113
- const suffix = getEffectiveScopingSuffixForTag(pureAltTag);
114
- if (!suffix) {
115
- return pureAltTag;
116
- }
117
-
118
- return `${pureAltTag}-${suffix}`;
119
- }
120
-
121
145
  /**
122
146
  * Determines whether a property should have an attribute counterpart
123
147
  * @public
124
148
  * @param propName
125
149
  * @returns {boolean}
126
150
  */
127
- hasAttribute(propName) {
151
+ hasAttribute(propName: string) {
128
152
  const propData = this.getProperties()[propName];
129
- return propData.type !== Object && !propData.noAttribute;
153
+ return propData.type !== Object && !propData.noAttribute && !propData.multiple;
130
154
  }
131
155
 
132
156
  /**
@@ -144,7 +168,7 @@ class UI5ElementMetadata {
144
168
  * @returns {string[]}
145
169
  */
146
170
  getAttributesList() {
147
- return this.getPropertiesList().filter(this.hasAttribute, this).map(camelToKebabCase);
171
+ return this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);
148
172
  }
149
173
 
150
174
  /**
@@ -177,7 +201,7 @@ class UI5ElementMetadata {
177
201
  * @public
178
202
  */
179
203
  hasIndividualSlots() {
180
- return this.slotsAreManaged() && Object.entries(this.getSlots()).some(([_slotName, slotData]) => slotData.individualSlots);
204
+ return this.slotsAreManaged() && Object.values(this.getSlots()).some(slotData => slotData.individualSlots);
181
205
  }
182
206
 
183
207
  /**
@@ -188,6 +212,14 @@ class UI5ElementMetadata {
188
212
  return !!this.metadata.managedSlots;
189
213
  }
190
214
 
215
+ /**
216
+ * Determines whether this control supports F6 fast navigation
217
+ * @public
218
+ */
219
+ supportsF6FastNavigation() {
220
+ return !!this.metadata.fastNavigation;
221
+ }
222
+
191
223
  /**
192
224
  * Returns an object with key-value pairs of properties and their metadata definitions
193
225
  * @public
@@ -212,6 +244,14 @@ class UI5ElementMetadata {
212
244
  return !!this.metadata.languageAware;
213
245
  }
214
246
 
247
+ /**
248
+ * Determines whether this UI5 Element has any theme dependant carachteristics.
249
+ * @returns {boolean}
250
+ */
251
+ isThemeAware() {
252
+ return !!this.metadata.themeAware;
253
+ }
254
+
215
255
  /**
216
256
  * Matches a changed entity (property/slot) with the given name against the "invalidateOnChildChange" configuration
217
257
  * and determines whether this should cause and invalidation
@@ -221,7 +261,7 @@ class UI5ElementMetadata {
221
261
  * @param name the name of the property/slot that changed
222
262
  * @returns {boolean}
223
263
  */
224
- shouldInvalidateOnChildChange(slotName, type, name) {
264
+ shouldInvalidateOnChildChange(slotName: string, type: "property" | "slot", name: string) {
225
265
  const config = this.getSlots()[slotName].invalidateOnChildChange;
226
266
 
227
267
  // invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component
@@ -281,27 +321,32 @@ class UI5ElementMetadata {
281
321
  }
282
322
  }
283
323
 
284
- const validateSingleProperty = (value, propData) => {
324
+ const validateSingleProperty = (value: PropertyValue, propData: Property) => {
285
325
  const propertyType = propData.type;
286
326
 
287
327
  if (propertyType === Boolean) {
288
328
  return typeof value === "boolean" ? value : false;
289
329
  }
330
+
290
331
  if (propertyType === String) {
291
332
  return (typeof value === "string" || typeof value === "undefined" || value === null) ? value : value.toString();
292
333
  }
334
+
293
335
  if (propertyType === Object) {
294
336
  return typeof value === "object" ? value : propData.defaultValue;
295
337
  }
296
- if (isDescendantOf(propertyType, DataType)) {
297
- return propertyType.isValid(value) ? value : propData.defaultValue;
338
+
339
+ if ((propertyType as typeof DataType).isDataTypeClass) {
340
+ return (propertyType as typeof DataType).isValid(value) ? value : propData.defaultValue;
298
341
  }
342
+
343
+ return value as string in propertyType ? value : propData.defaultValue;
299
344
  };
300
345
 
301
- const validateSingleSlot = (value, slotData) => {
302
- value && getSlottedElements(value).forEach(el => {
346
+ const validateSingleSlot = (value: Node, slotData: Slot) => {
347
+ value && getSlottedNodes(value).forEach(el => {
303
348
  if (!(el instanceof slotData.type)) {
304
- throw new Error(`${el} is not of type ${slotData.type}`);
349
+ throw new Error(`The element is not of type ${slotData.type.toString()}`);
305
350
  }
306
351
  });
307
352
 
@@ -309,3 +354,11 @@ const validateSingleSlot = (value, slotData) => {
309
354
  };
310
355
 
311
356
  export default UI5ElementMetadata;
357
+ export type {
358
+ Property,
359
+ PropertyValue,
360
+ Slot,
361
+ SlotValue,
362
+ State,
363
+ Metadata,
364
+ };
@@ -1,19 +1,20 @@
1
- const tasks = new WeakMap();
1
+ type TaskType = () => Promise<void>;
2
+ const tasks = new WeakMap<HTMLElement, Array<TaskType>>();
2
3
 
3
4
  class AnimationQueue {
4
5
  static get tasks() {
5
6
  return tasks;
6
7
  }
7
8
 
8
- static enqueue(element, task) {
9
+ static enqueue(element: HTMLElement, task: TaskType) {
9
10
  if (!tasks.has(element)) {
10
11
  tasks.set(element, []);
11
12
  }
12
13
 
13
- tasks.get(element).push(task);
14
+ tasks.get(element)!.push(task);
14
15
  }
15
16
 
16
- static run(element, task) {
17
+ static run(element: HTMLElement, task: TaskType): Promise<void> {
17
18
  if (!tasks.has(element)) {
18
19
  tasks.set(element, []);
19
20
  }
@@ -21,14 +22,14 @@ class AnimationQueue {
21
22
  return task().then(() => {
22
23
  const elementTasks = tasks.get(element);
23
24
 
24
- if (elementTasks.length > 0) {
25
- return AnimationQueue.run(element, elementTasks.shift());
25
+ if (elementTasks!.length > 0) {
26
+ return AnimationQueue.run(element, elementTasks!.shift()!);
26
27
  }
27
28
  tasks.delete(element);
28
29
  });
29
30
  }
30
31
 
31
- static push(element, task) {
32
+ static push(element: HTMLElement, task: TaskType) {
32
33
  const elementTasks = tasks.get(element);
33
34
 
34
35
  if (elementTasks) {
@@ -0,0 +1,64 @@
1
+ import AnimationQueue from "./AnimationQueue.js";
2
+
3
+ type AnimateOptions = {
4
+ beforeStart?: () => void,
5
+ duration: number,
6
+ element: HTMLElement,
7
+ advance: (p: number) => void,
8
+ };
9
+
10
+ const animate = (options: AnimateOptions) => {
11
+ let start: number | null = null;
12
+ let stopped = false;
13
+ let animationFrame: number;
14
+ let stop: () => void;
15
+ let advanceAnimation: (timestamp: number) => void;
16
+
17
+ const promise = new Promise<void>((resolve, reject) => {
18
+ advanceAnimation = timestamp => {
19
+ start = start || timestamp;
20
+
21
+ const timeElapsed = timestamp - start;
22
+ const remaining = options.duration - timeElapsed;
23
+
24
+ if (timeElapsed <= options.duration) {
25
+ const currentAdvance = 1 - remaining / options.duration; // easing formula (currently linear)
26
+ options.advance(currentAdvance);
27
+ if (!stopped) {
28
+ animationFrame = requestAnimationFrame(advanceAnimation);
29
+ }
30
+ } else {
31
+ options.advance(1);
32
+ resolve();
33
+ }
34
+ };
35
+
36
+ stop = () => {
37
+ stopped = true;
38
+ cancelAnimationFrame(animationFrame);
39
+ reject(new Error("animation stopped"));
40
+ };
41
+ }).catch((reason: Error) => reason);
42
+
43
+ AnimationQueue.push(options.element, () => {
44
+ if (typeof options.beforeStart === "function") {
45
+ options.beforeStart();
46
+ }
47
+
48
+ requestAnimationFrame(advanceAnimation);
49
+
50
+ return new Promise(resolve => {
51
+ promise.then(() => resolve());
52
+ });
53
+ });
54
+
55
+ return {
56
+ promise: () => promise,
57
+ stop: () => stop,
58
+ };
59
+ };
60
+ const duration = 400;
61
+
62
+ export { duration };
63
+ export type { AnimateOptions };
64
+ export default animate;
@@ -0,0 +1,21 @@
1
+ import animate, { duration } from "./animate.js";
2
+
3
+ const scroll = (element: HTMLElement, dx: number, dy: number) => {
4
+ let scrollLeft: number;
5
+ let scrollTop: number;
6
+
7
+ return animate({
8
+ beforeStart: () => {
9
+ scrollLeft = element.scrollLeft;
10
+ scrollTop = element.scrollTop;
11
+ },
12
+ duration,
13
+ element,
14
+ advance: progress => {
15
+ element.scrollLeft = scrollLeft + (progress * dx); // easing - linear
16
+ element.scrollTop = scrollTop + (progress * dy); // easing - linear
17
+ },
18
+ });
19
+ };
20
+
21
+ export default scroll;
@@ -1,23 +1,18 @@
1
- import animationConfig from "./config.js";
2
- import animate from "./animate.js";
1
+ import animate, { duration } from "./animate.js";
3
2
 
4
- export default ({
5
- element = animationConfig.element,
6
- duration = animationConfig.defaultDuration,
7
- progress: progressCallback = animationConfig.identity,
8
- }) => {
9
- let computedStyles,
10
- paddingTop,
11
- paddingBottom,
12
- marginTop,
13
- marginBottom,
14
- height;
15
- let storedOverflow,
16
- storedPaddingTop,
17
- storedPaddingBottom,
18
- storedMarginTop,
19
- storedMarginBottom,
20
- storedHeight;
3
+ const slideDown = (element: HTMLElement) => {
4
+ let computedStyles: CSSStyleDeclaration,
5
+ paddingTop: number,
6
+ paddingBottom: number,
7
+ marginTop: number,
8
+ marginBottom: number,
9
+ height: number;
10
+ let storedOverflow: string,
11
+ storedPaddingTop: string,
12
+ storedPaddingBottom: string,
13
+ storedMarginTop: string,
14
+ storedMarginBottom: string,
15
+ storedHeight: string;
21
16
 
22
17
  const animation = animate({
23
18
  beforeStart: () => {
@@ -41,28 +36,24 @@ export default ({
41
36
  storedHeight = element.style.height;
42
37
 
43
38
  element.style.overflow = "hidden";
44
- element.style.paddingTop = 0;
45
- element.style.paddingBottom = 0;
46
- element.style.marginTop = 0;
47
- element.style.marginBottom = 0;
48
- element.style.height = 0;
39
+ element.style.paddingTop = "0";
40
+ element.style.paddingBottom = "0";
41
+ element.style.marginTop = "0";
42
+ element.style.marginBottom = "0";
43
+ element.style.height = "0";
49
44
  },
50
45
  duration,
51
46
  element,
52
- progress(progress) {
53
- progressCallback(progress);
54
-
47
+ advance: progress => {
55
48
  // WORKAROUND
56
49
  element.style.display = "block";
57
50
  // END OF WORKAROUND
58
51
 
59
- /* eslint-disable */
60
- element.style.paddingTop = 0 + (paddingTop * progress) + "px";
61
- element.style.paddingBottom = 0 + (paddingBottom * progress) + "px";
62
- element.style.marginTop = 0 + (marginTop * progress) + "px";
63
- element.style.marginBottom = 0 + (marginBottom * progress) + "px";
64
- element.style.height = 0 + (height * progress) + "px";
65
- /* eslint-enable */
52
+ element.style.paddingTop = `${(paddingTop * progress)}px`;
53
+ element.style.paddingBottom = `${(paddingBottom * progress)}px`;
54
+ element.style.marginTop = `${(marginTop * progress)}px`;
55
+ element.style.marginBottom = `${(marginBottom * progress)}px`;
56
+ element.style.height = `${(height * progress)}px`;
66
57
  },
67
58
  });
68
59
 
@@ -77,3 +68,5 @@ export default ({
77
68
 
78
69
  return animation;
79
70
  };
71
+
72
+ export default slideDown;
@@ -1,31 +1,27 @@
1
- import animationConfig from "./config.js";
2
- import animate from "./animate.js";
1
+ import animate, { duration } from "./animate.js";
3
2
 
4
- export default ({
5
- element = animationConfig.element,
6
- duration = animationConfig.defaultDuration,
7
- progress: progressCallback = animationConfig.identity,
8
- }) => {
3
+ const slideUp = (element: HTMLElement) => {
9
4
  // Get Computed styles
10
- let computedStyles,
11
- paddingTop,
12
- paddingBottom,
13
- marginTop,
14
- marginBottom,
15
- height;
5
+ let computedStyles: CSSStyleDeclaration,
6
+ paddingTop: number,
7
+ paddingBottom: number,
8
+ marginTop: number,
9
+ marginBottom: number,
10
+ height: number;
16
11
 
17
12
  // Store inline styles
18
- let storedOverflow,
19
- storedPaddingTop,
20
- storedPaddingBottom,
21
- storedMarginTop,
22
- storedMarginBottom,
23
- storedHeight;
13
+ let storedOverflow: string,
14
+ storedPaddingTop: string,
15
+ storedPaddingBottom: string,
16
+ storedMarginTop: string,
17
+ storedMarginBottom: string,
18
+ storedHeight: string;
24
19
 
25
20
  const animation = animate({
26
21
  beforeStart: () => {
27
22
  // Get Computed styles
28
- computedStyles = getComputedStyle(element);
23
+ const el = element;
24
+ computedStyles = getComputedStyle(el);
29
25
  paddingTop = parseFloat(computedStyles.paddingTop);
30
26
  paddingBottom = parseFloat(computedStyles.paddingBottom);
31
27
  marginTop = parseFloat(computedStyles.marginTop);
@@ -33,20 +29,18 @@ export default ({
33
29
  height = parseFloat(computedStyles.height);
34
30
 
35
31
  // Store inline styles
36
- storedOverflow = element.style.overflow;
37
- storedPaddingTop = element.style.paddingTop;
38
- storedPaddingBottom = element.style.paddingBottom;
39
- storedMarginTop = element.style.marginTop;
40
- storedMarginBottom = element.style.marginBottom;
41
- storedHeight = element.style.height;
32
+ storedOverflow = el.style.overflow;
33
+ storedPaddingTop = el.style.paddingTop;
34
+ storedPaddingBottom = el.style.paddingBottom;
35
+ storedMarginTop = el.style.marginTop;
36
+ storedMarginBottom = el.style.marginBottom;
37
+ storedHeight = el.style.height;
42
38
 
43
- element.style.overflow = "hidden";
39
+ el.style.overflow = "hidden";
44
40
  },
45
41
  duration,
46
42
  element,
47
- progress(progress) {
48
- progressCallback(progress);
49
-
43
+ advance: progress => {
50
44
  element.style.paddingTop = `${paddingTop - (paddingTop * progress)}px`;
51
45
  element.style.paddingBottom = `${paddingBottom - (paddingBottom * progress)}px`;
52
46
  element.style.marginTop = `${marginTop - (marginTop * progress)}px`;
@@ -55,8 +49,8 @@ export default ({
55
49
  },
56
50
  });
57
51
 
58
- animation.promise().then(oReason => {
59
- if (!(oReason instanceof Error)) {
52
+ animation.promise().then(reason => {
53
+ if (!(reason instanceof Error)) {
60
54
  element.style.overflow = storedOverflow;
61
55
  element.style.paddingTop = storedPaddingTop;
62
56
  element.style.paddingBottom = storedPaddingBottom;
@@ -69,3 +63,5 @@ export default ({
69
63
 
70
64
  return animation;
71
65
  };
66
+
67
+ export default slideUp;