@ui5/webcomponents-base 0.0.0-7e7d9ea6f → 0.0.0-8085abb8d

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 (584) hide show
  1. package/.eslintignore +6 -4
  2. package/.eslintrc.cjs +3 -0
  3. package/.npsrc.json +3 -0
  4. package/CHANGELOG.md +396 -0
  5. package/README.md +4 -0
  6. package/bundle.esm.js +13 -2
  7. package/config/wdio.conf.cjs +400 -0
  8. package/{src/AssetRegistry.js → dist/AssetRegistry.d.ts} +1 -7
  9. package/dist/AssetRegistry.js +2 -7
  10. package/dist/AssetRegistry.js.map +1 -0
  11. package/dist/Boot.d.ts +9 -0
  12. package/dist/Boot.js +56 -44
  13. package/dist/Boot.js.map +1 -0
  14. package/{src/CSP.js → dist/CSP.d.ts} +8 -37
  15. package/dist/CSP.js +16 -24
  16. package/dist/CSP.js.map +1 -0
  17. package/dist/CustomElementsRegistry.d.ts +5 -0
  18. package/dist/CustomElementsRegistry.js +66 -83
  19. package/dist/CustomElementsRegistry.js.map +1 -0
  20. package/dist/CustomElementsScope.d.ts +7 -0
  21. package/dist/CustomElementsScope.js +10 -29
  22. package/dist/CustomElementsScope.js.map +1 -0
  23. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  24. package/dist/CustomElementsScopeUtils.js +34 -52
  25. package/dist/CustomElementsScopeUtils.js.map +1 -0
  26. package/dist/DOMObserver.d.ts +11 -0
  27. package/dist/DOMObserver.js +12 -54
  28. package/dist/DOMObserver.js.map +1 -0
  29. package/dist/Device.d.ts +12 -0
  30. package/dist/Device.js +145 -100
  31. package/dist/Device.js.map +1 -0
  32. package/dist/EventProvider.d.ts +25 -0
  33. package/dist/EventProvider.js +67 -82
  34. package/dist/EventProvider.js.map +1 -0
  35. package/dist/FeaturesRegistry.d.ts +3 -0
  36. package/dist/FeaturesRegistry.js +5 -10
  37. package/dist/FeaturesRegistry.js.map +1 -0
  38. package/dist/FontFace.d.ts +2 -0
  39. package/dist/FontFace.js +14 -19
  40. package/dist/FontFace.js.map +1 -0
  41. package/dist/IgnoreCustomElements.d.ts +27 -0
  42. package/dist/IgnoreCustomElements.js +39 -0
  43. package/dist/IgnoreCustomElements.js.map +1 -0
  44. package/dist/InitialConfiguration.d.ts +27 -0
  45. package/dist/InitialConfiguration.js +121 -131
  46. package/dist/InitialConfiguration.js.map +1 -0
  47. package/dist/Keys.d.ts +57 -0
  48. package/dist/Keys.js +174 -291
  49. package/dist/Keys.js.map +1 -0
  50. package/dist/ManagedStyles.d.ts +8 -0
  51. package/dist/ManagedStyles.js +69 -68
  52. package/dist/ManagedStyles.js.map +1 -0
  53. package/dist/MarkedEvents.d.ts +9 -0
  54. package/dist/MarkedEvents.js +15 -0
  55. package/dist/MarkedEvents.js.map +1 -0
  56. package/dist/MediaRange.d.ts +37 -0
  57. package/dist/MediaRange.js +54 -65
  58. package/dist/MediaRange.js.map +1 -0
  59. package/dist/PropertiesFileFormat.d.ts +8 -0
  60. package/dist/PropertiesFileFormat.js +72 -82
  61. package/dist/PropertiesFileFormat.js.map +1 -0
  62. package/dist/Render.d.ts +47 -0
  63. package/dist/Render.js +81 -113
  64. package/dist/Render.js.map +1 -0
  65. package/dist/RenderQueue.d.ts +19 -0
  66. package/dist/RenderQueue.js +52 -62
  67. package/dist/RenderQueue.js.map +1 -0
  68. package/dist/Runtimes.d.ts +27 -0
  69. package/dist/Runtimes.js +49 -70
  70. package/dist/Runtimes.js.map +1 -0
  71. package/dist/StaticArea.d.ts +3 -0
  72. package/dist/StaticArea.js +5 -1
  73. package/dist/StaticArea.js.map +1 -0
  74. package/dist/StaticAreaItem.d.ts +36 -0
  75. package/dist/StaticAreaItem.js +87 -86
  76. package/dist/StaticAreaItem.js.map +1 -0
  77. package/dist/SystemCSSVars.d.ts +2 -0
  78. package/dist/SystemCSSVars.js +4 -5
  79. package/dist/SystemCSSVars.js.map +1 -0
  80. package/{src/Theming.js → dist/Theming.d.ts} +0 -1
  81. package/dist/Theming.js +1 -1
  82. package/dist/Theming.js.map +1 -0
  83. package/dist/UI5Element.d.ts +380 -0
  84. package/dist/UI5Element.js +930 -995
  85. package/dist/UI5Element.js.map +1 -0
  86. package/dist/UI5ElementMetadata.d.ts +150 -0
  87. package/dist/UI5ElementMetadata.js +277 -338
  88. package/dist/UI5ElementMetadata.js.map +1 -0
  89. package/dist/animations/AnimationQueue.d.ts +8 -0
  90. package/dist/animations/AnimationQueue.js +31 -38
  91. package/dist/animations/AnimationQueue.js.map +1 -0
  92. package/dist/animations/animate.d.ts +14 -0
  93. package/dist/animations/animate.js +46 -51
  94. package/dist/animations/animate.js.map +1 -0
  95. package/dist/animations/scroll.d.ts +5 -0
  96. package/dist/animations/scroll.js +18 -27
  97. package/dist/animations/scroll.js.map +1 -0
  98. package/dist/animations/slideDown.d.ts +5 -0
  99. package/dist/animations/slideDown.js +53 -78
  100. package/dist/animations/slideDown.js.map +1 -0
  101. package/dist/animations/slideUp.d.ts +5 -0
  102. package/dist/animations/slideUp.js +49 -70
  103. package/dist/animations/slideUp.js.map +1 -0
  104. package/dist/api.json +1 -0
  105. package/dist/asset-registries/Icons.d.ts +38 -0
  106. package/dist/asset-registries/Icons.js +109 -119
  107. package/dist/asset-registries/Icons.js.map +1 -0
  108. package/dist/asset-registries/Illustrations.d.ts +17 -0
  109. package/dist/asset-registries/Illustrations.js +41 -25
  110. package/dist/asset-registries/Illustrations.js.map +1 -0
  111. package/dist/asset-registries/LocaleData.d.ts +7 -0
  112. package/dist/asset-registries/LocaleData.js +104 -132
  113. package/dist/asset-registries/LocaleData.js.map +1 -0
  114. package/dist/asset-registries/Themes.d.ts +11 -0
  115. package/dist/asset-registries/Themes.js +38 -68
  116. package/dist/asset-registries/Themes.js.map +1 -0
  117. package/dist/asset-registries/i18n.d.ts +23 -0
  118. package/dist/asset-registries/i18n.js +58 -80
  119. package/dist/asset-registries/i18n.js.map +1 -0
  120. package/dist/assets/Boot.1ee7a8e7.js +9 -0
  121. package/dist/assets/Boot.34b7cea0.css +1 -0
  122. package/dist/assets/bundle.esm.40f75059.js +50 -0
  123. package/dist/assets-meta/IconCollectionsAlias.d.ts +31 -0
  124. package/dist/assets-meta/IconCollectionsAlias.js +30 -10
  125. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  126. package/dist/config/AnimationMode.d.ts +14 -0
  127. package/dist/config/AnimationMode.js +21 -18
  128. package/dist/config/AnimationMode.js.map +1 -0
  129. package/dist/config/CalendarType.d.ts +8 -0
  130. package/dist/config/CalendarType.js +13 -12
  131. package/dist/config/CalendarType.js.map +1 -0
  132. package/dist/config/FormatSettings.d.ts +15 -0
  133. package/dist/config/FormatSettings.js +15 -9
  134. package/dist/config/FormatSettings.js.map +1 -0
  135. package/dist/config/Icons.d.ts +55 -0
  136. package/dist/config/Icons.js +89 -38
  137. package/dist/config/Icons.js.map +1 -0
  138. package/dist/config/Language.d.ts +40 -0
  139. package/dist/config/Language.js +43 -43
  140. package/dist/config/Language.js.map +1 -0
  141. package/dist/config/NoConflict.d.ts +20 -0
  142. package/dist/config/NoConflict.js +41 -41
  143. package/dist/config/NoConflict.js.map +1 -0
  144. package/dist/config/RTL.d.ts +7 -0
  145. package/dist/config/RTL.js +26 -20
  146. package/dist/config/RTL.js.map +1 -0
  147. package/dist/config/Theme.d.ts +38 -0
  148. package/dist/config/Theme.js +54 -37
  149. package/dist/config/Theme.js.map +1 -0
  150. package/dist/config/ThemeRoot.d.ts +29 -0
  151. package/dist/config/ThemeRoot.js +59 -0
  152. package/dist/config/ThemeRoot.js.map +1 -0
  153. package/dist/config/Timezone.d.ts +17 -0
  154. package/dist/config/Timezone.js +30 -0
  155. package/dist/config/Timezone.js.map +1 -0
  156. package/dist/css/FontFace.css +9 -18
  157. package/dist/decorators/customElement.d.ts +23 -0
  158. package/dist/decorators/customElement.js +37 -0
  159. package/dist/decorators/customElement.js.map +1 -0
  160. package/dist/decorators/event.d.ts +10 -0
  161. package/dist/decorators/event.js +24 -0
  162. package/dist/decorators/event.js.map +1 -0
  163. package/dist/decorators/property.d.ts +9 -0
  164. package/dist/decorators/property.js +24 -0
  165. package/dist/decorators/property.js.map +1 -0
  166. package/dist/decorators/slot.d.ts +9 -0
  167. package/dist/decorators/slot.js +37 -0
  168. package/dist/decorators/slot.js.map +1 -0
  169. package/dist/delegate/ItemNavigation.d.ts +113 -0
  170. package/dist/delegate/ItemNavigation.js +277 -317
  171. package/dist/delegate/ItemNavigation.js.map +1 -0
  172. package/dist/delegate/ResizeHandler.d.ts +25 -0
  173. package/dist/delegate/ResizeHandler.js +72 -91
  174. package/dist/delegate/ResizeHandler.js.map +1 -0
  175. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  176. package/dist/delegate/ScrollEnablement.js +157 -180
  177. package/dist/delegate/ScrollEnablement.js.map +1 -0
  178. package/dist/features/F6Navigation.d.ts +19 -0
  179. package/dist/features/F6Navigation.js +145 -104
  180. package/dist/features/F6Navigation.js.map +1 -0
  181. package/dist/features/LegacyDateFormats.d.ts +18 -0
  182. package/dist/features/LegacyDateFormats.js +20 -0
  183. package/dist/features/LegacyDateFormats.js.map +1 -0
  184. package/dist/features/OpenUI5Element.d.ts +9 -0
  185. package/dist/features/OpenUI5Element.js +5 -0
  186. package/dist/features/OpenUI5Element.js.map +1 -0
  187. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  188. package/dist/features/OpenUI5Enablement.js +89 -112
  189. package/dist/features/OpenUI5Enablement.js.map +1 -0
  190. package/dist/features/OpenUI5Support.d.ts +26 -0
  191. package/dist/features/OpenUI5Support.js +93 -119
  192. package/dist/features/OpenUI5Support.js.map +1 -0
  193. package/dist/generated/AssetParameters.js +2 -0
  194. package/dist/generated/VersionInfo.js +3 -3
  195. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  196. package/dist/generated/css/BusyIndicator.css.js +7 -5
  197. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  198. package/dist/generated/css/FontFace.css.d.ts +3 -0
  199. package/dist/generated/css/FontFace.css.js +7 -5
  200. package/dist/generated/css/FontFace.css.js.map +1 -0
  201. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  202. package/dist/generated/css/OverrideFontFace.css.js +7 -5
  203. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  204. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  205. package/dist/generated/css/SystemCSSVars.css.js +7 -5
  206. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  207. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +4 -0
  208. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +9 -0
  209. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +1 -0
  210. package/dist/getSharedResource.d.ts +11 -0
  211. package/dist/getSharedResource.js +28 -18
  212. package/dist/getSharedResource.js.map +1 -0
  213. package/dist/global.d.ts +40 -0
  214. package/dist/i18nBundle.d.ts +43 -0
  215. package/dist/i18nBundle.js +57 -64
  216. package/dist/i18nBundle.js.map +1 -0
  217. package/dist/locale/Locale.d.ts +22 -0
  218. package/dist/locale/Locale.js +75 -87
  219. package/dist/locale/Locale.js.map +1 -0
  220. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  221. package/dist/locale/RTLAwareRegistry.js +6 -11
  222. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  223. package/dist/locale/applyDirection.d.ts +10 -0
  224. package/dist/locale/applyDirection.js +7 -7
  225. package/dist/locale/applyDirection.js.map +1 -0
  226. package/dist/locale/directionChange.d.ts +15 -0
  227. package/dist/locale/directionChange.js +7 -15
  228. package/dist/locale/directionChange.js.map +1 -0
  229. package/dist/locale/getEffectiveDir.d.ts +2 -0
  230. package/dist/locale/getEffectiveDir.js +20 -24
  231. package/dist/locale/getEffectiveDir.js.map +1 -0
  232. package/dist/locale/getLocale.d.ts +7 -0
  233. package/dist/locale/getLocale.js +26 -29
  234. package/dist/locale/getLocale.js.map +1 -0
  235. package/dist/locale/languageChange.d.ts +5 -0
  236. package/dist/locale/languageChange.js +8 -16
  237. package/dist/locale/languageChange.js.map +1 -0
  238. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  239. package/dist/locale/nextFallbackLocale.js +15 -19
  240. package/dist/locale/nextFallbackLocale.js.map +1 -0
  241. package/dist/locale/normalizeLocale.d.ts +7 -0
  242. package/dist/locale/normalizeLocale.js +34 -41
  243. package/dist/locale/normalizeLocale.js.map +1 -0
  244. package/dist/renderer/LitRenderer.d.ts +14 -0
  245. package/dist/renderer/LitRenderer.js +28 -39
  246. package/dist/renderer/LitRenderer.js.map +1 -0
  247. package/dist/renderer/executeTemplate.d.ts +13 -0
  248. package/dist/renderer/executeTemplate.js +12 -16
  249. package/dist/renderer/executeTemplate.js.map +1 -0
  250. package/dist/sap/base/Log.js +28 -29
  251. package/dist/sap/base/assert.js +5 -6
  252. package/dist/sap/base/security/URLListValidator.js +13 -2
  253. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  254. package/dist/theming/CustomStyle.d.ts +6 -0
  255. package/dist/theming/CustomStyle.js +33 -45
  256. package/dist/theming/CustomStyle.js.map +1 -0
  257. package/dist/theming/ThemeLoaded.d.ts +5 -0
  258. package/dist/theming/ThemeLoaded.js +8 -16
  259. package/dist/theming/ThemeLoaded.js.map +1 -0
  260. package/dist/theming/ThemeRegistered.d.ts +4 -0
  261. package/dist/theming/ThemeRegistered.js +11 -0
  262. package/dist/theming/ThemeRegistered.js.map +1 -0
  263. package/dist/theming/applyTheme.d.ts +2 -0
  264. package/dist/theming/applyTheme.js +61 -64
  265. package/dist/theming/applyTheme.js.map +1 -0
  266. package/dist/theming/getConstructableStyle.d.ts +9 -0
  267. package/dist/theming/getConstructableStyle.js +12 -17
  268. package/dist/theming/getConstructableStyle.js.map +1 -0
  269. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  270. package/dist/theming/getEffectiveLinksHrefs.js +12 -22
  271. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  272. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  273. package/dist/theming/getEffectiveStyle.js +24 -31
  274. package/dist/theming/getEffectiveStyle.js.map +1 -0
  275. package/dist/theming/getStylesString.d.ts +3 -0
  276. package/dist/theming/getStylesString.js +9 -13
  277. package/dist/theming/getStylesString.js.map +1 -0
  278. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  279. package/dist/theming/getThemeDesignerTheme.js +72 -79
  280. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  281. package/dist/theming/preloadLinks.d.ts +3 -0
  282. package/dist/theming/preloadLinks.js +13 -17
  283. package/dist/theming/preloadLinks.js.map +1 -0
  284. package/dist/thirdparty/_merge.d.ts +2 -0
  285. package/dist/thirdparty/_merge.js +7 -4
  286. package/dist/thirdparty/_merge.js.map +1 -0
  287. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  288. package/dist/thirdparty/isPlainObject.js +11 -10
  289. package/dist/thirdparty/isPlainObject.js.map +1 -0
  290. package/dist/thirdparty/merge.d.ts +2 -0
  291. package/dist/thirdparty/merge.js +4 -8
  292. package/dist/thirdparty/merge.js.map +1 -0
  293. package/dist/types/AnimationMode.d.ts +32 -0
  294. package/dist/types/AnimationMode.js +33 -6
  295. package/dist/types/AnimationMode.js.map +1 -0
  296. package/dist/types/CSSColor.d.ts +15 -0
  297. package/dist/types/CSSColor.js +14 -5
  298. package/dist/types/CSSColor.js.map +1 -0
  299. package/dist/types/CalendarType.d.ts +37 -0
  300. package/dist/types/CalendarType.js +35 -18
  301. package/dist/types/CalendarType.js.map +1 -0
  302. package/dist/types/DOMReference.d.ts +17 -0
  303. package/dist/types/DOMReference.js +25 -0
  304. package/dist/types/DOMReference.js.map +1 -0
  305. package/dist/types/DataType.d.ts +25 -0
  306. package/dist/types/DataType.js +33 -26
  307. package/dist/types/DataType.js.map +1 -0
  308. package/dist/types/Float.d.ts +17 -0
  309. package/dist/types/Float.js +17 -10
  310. package/dist/types/Float.js.map +1 -0
  311. package/dist/types/Integer.d.ts +17 -0
  312. package/dist/types/Integer.js +17 -9
  313. package/dist/types/Integer.js.map +1 -0
  314. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  315. package/dist/types/InvisibleMessageMode.js +20 -23
  316. package/dist/types/InvisibleMessageMode.js.map +1 -0
  317. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  318. package/dist/types/ItemNavigationBehavior.js +22 -12
  319. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  320. package/dist/types/NavigationMode.d.ts +32 -0
  321. package/dist/types/NavigationMode.js +33 -6
  322. package/dist/types/NavigationMode.js.map +1 -0
  323. package/dist/types/ValueState.d.ts +42 -0
  324. package/dist/types/ValueState.js +41 -19
  325. package/dist/types/ValueState.js.map +1 -0
  326. package/dist/types.d.ts +18 -0
  327. package/dist/types.js +2 -0
  328. package/dist/types.js.map +1 -0
  329. package/dist/updateShadowRoot.d.ts +8 -0
  330. package/dist/updateShadowRoot.js +29 -17
  331. package/dist/updateShadowRoot.js.map +1 -0
  332. package/dist/util/AriaLabelHelper.d.ts +15 -0
  333. package/dist/util/AriaLabelHelper.js +166 -36
  334. package/dist/util/AriaLabelHelper.js.map +1 -0
  335. package/dist/util/Caret.d.ts +7 -0
  336. package/dist/util/Caret.js +16 -25
  337. package/dist/util/Caret.js.map +1 -0
  338. package/dist/util/ColorConversion.d.ts +30 -0
  339. package/dist/util/ColorConversion.js +311 -372
  340. package/dist/util/ColorConversion.js.map +1 -0
  341. package/dist/util/FetchHelper.d.ts +3 -0
  342. package/dist/util/FetchHelper.js +19 -25
  343. package/dist/util/FetchHelper.js.map +1 -0
  344. package/dist/util/FocusableElements.d.ts +4 -0
  345. package/dist/util/FocusableElements.js +64 -71
  346. package/dist/util/FocusableElements.js.map +1 -0
  347. package/{src/util/HTMLSanitizer.js → dist/util/HTMLSanitizer.d.ts} +1 -5
  348. package/dist/util/HTMLSanitizer.js +4 -5
  349. package/dist/util/HTMLSanitizer.js.map +1 -0
  350. package/dist/util/InvisibleMessage.d.ts +10 -0
  351. package/dist/util/InvisibleMessage.js +40 -53
  352. package/dist/util/InvisibleMessage.js.map +1 -0
  353. package/dist/util/PopupUtils.d.ts +7 -0
  354. package/dist/util/PopupUtils.js +58 -77
  355. package/dist/util/PopupUtils.js.map +1 -0
  356. package/dist/util/SlotsHelper.d.ts +9 -0
  357. package/dist/util/SlotsHelper.js +22 -35
  358. package/dist/util/SlotsHelper.js.map +1 -0
  359. package/dist/util/StringHelper.d.ts +3 -0
  360. package/dist/util/StringHelper.js +17 -20
  361. package/dist/util/StringHelper.js.map +1 -0
  362. package/dist/util/TabbableElements.d.ts +17 -0
  363. package/dist/util/TabbableElements.js +53 -47
  364. package/dist/util/TabbableElements.js.map +1 -0
  365. package/dist/util/arraysAreEqual.d.ts +2 -0
  366. package/dist/util/arraysAreEqual.js +10 -12
  367. package/dist/util/arraysAreEqual.js.map +1 -0
  368. package/{src/util/clamp.js → dist/util/clamp.d.ts} +1 -4
  369. package/dist/util/clamp.js +2 -2
  370. package/dist/util/clamp.js.map +1 -0
  371. package/dist/util/createLinkInHead.d.ts +7 -0
  372. package/dist/util/createLinkInHead.js +14 -12
  373. package/dist/util/createLinkInHead.js.map +1 -0
  374. package/dist/util/createStyleInHead.d.ts +8 -0
  375. package/dist/util/createStyleInHead.js +10 -10
  376. package/dist/util/createStyleInHead.js.map +1 -0
  377. package/dist/util/debounce.d.ts +2 -0
  378. package/dist/util/debounce.js +6 -8
  379. package/dist/util/debounce.js.map +1 -0
  380. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  381. package/dist/util/detectNavigatorLanguage.js +7 -10
  382. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  383. package/dist/util/escapeRegex.d.ts +8 -0
  384. package/dist/util/escapeRegex.js +8 -7
  385. package/dist/util/escapeRegex.js.map +1 -0
  386. package/dist/util/formatMessage.d.ts +2 -0
  387. package/dist/util/formatMessage.js +15 -19
  388. package/dist/util/formatMessage.js.map +1 -0
  389. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  390. package/dist/util/generateHighlightedMarkup.js +26 -27
  391. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  392. package/dist/util/getActiveElement.d.ts +2 -0
  393. package/dist/util/getActiveElement.js +6 -8
  394. package/dist/util/getActiveElement.js.map +1 -0
  395. package/dist/util/getClassCopy.d.ts +400 -0
  396. package/dist/util/getClassCopy.js +7 -7
  397. package/dist/util/getClassCopy.js.map +1 -0
  398. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  399. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  400. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  401. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  402. package/dist/util/getEffectiveContentDensity.js +2 -3
  403. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  404. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  405. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  406. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  407. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  408. package/dist/util/getFastNavigationGroups.js +51 -0
  409. package/dist/util/getFastNavigationGroups.js.map +1 -0
  410. package/{src/util/getFileExtension.js → dist/util/getFileExtension.d.ts} +3 -12
  411. package/dist/util/getFileExtension.js +9 -11
  412. package/dist/util/getFileExtension.js.map +1 -0
  413. package/{src/util/getNormalizedTarget.js → dist/util/getNormalizedTarget.d.ts} +1 -10
  414. package/dist/util/getNormalizedTarget.js +7 -9
  415. package/dist/util/getNormalizedTarget.js.map +1 -0
  416. package/dist/util/getSingletonElementInstance.d.ts +11 -0
  417. package/dist/util/getSingletonElementInstance.js +17 -11
  418. package/dist/util/getSingletonElementInstance.js.map +1 -0
  419. package/dist/util/isElementClickable.d.ts +2 -0
  420. package/dist/util/isElementClickable.js +16 -0
  421. package/dist/util/isElementClickable.js.map +1 -0
  422. package/dist/util/isElementHidden.d.ts +2 -0
  423. package/dist/util/isElementHidden.js +8 -0
  424. package/dist/util/isElementHidden.js.map +1 -0
  425. package/dist/util/isElementInView.d.ts +6 -0
  426. package/dist/util/isElementInView.js +6 -9
  427. package/dist/util/isElementInView.js.map +1 -0
  428. package/dist/util/isElementTabbable.d.ts +9 -0
  429. package/dist/util/isElementTabbable.js +30 -0
  430. package/dist/util/isElementTabbable.js.map +1 -0
  431. package/dist/util/isValidPropertyName.d.ts +8 -0
  432. package/dist/util/isValidPropertyName.js +16 -17
  433. package/dist/util/isValidPropertyName.js.map +1 -0
  434. package/dist/util/whenDOMReady.d.ts +2 -0
  435. package/dist/util/whenDOMReady.js +11 -10
  436. package/dist/util/whenDOMReady.js.map +1 -0
  437. package/dist/util/willShowContent.d.ts +2 -0
  438. package/dist/util/willShowContent.js +7 -0
  439. package/dist/util/willShowContent.js.map +1 -0
  440. package/dist/validateThemeRoot.d.ts +2 -0
  441. package/dist/validateThemeRoot.js +48 -0
  442. package/dist/validateThemeRoot.js.map +1 -0
  443. package/index.js +227 -1
  444. package/lib/generate-asset-parameters/index.js +4 -2
  445. package/lib/generate-styles/index.js +13 -8
  446. package/lib/generate-version-info/index.js +1 -1
  447. package/{package-scripts.js → package-scripts.cjs} +24 -9
  448. package/package.json +5 -4
  449. package/src/css/FontFace.css +9 -18
  450. package/tsconfig.json +14 -0
  451. package/config/wdio.conf.js +0 -1
  452. package/dist/RenderScheduler.js +0 -44
  453. package/dist/animations/config.js +0 -5
  454. package/dist/assets/bundle.esm.691f93f5.js +0 -43
  455. package/dist/types/CSSSize.js +0 -9
  456. package/dist/types/PopupState.js +0 -37
  457. package/dist/util/findNodeOwner.js +0 -35
  458. package/dist/util/isDefaultSlotProvided.js +0 -11
  459. package/dist/util/isDescendantOf.js +0 -15
  460. package/dist/util/isNodeClickable.js +0 -19
  461. package/dist/util/isNodeHidden.js +0 -9
  462. package/dist/util/isNodeTabbable.js +0 -28
  463. package/dist/util/setToArray.js +0 -10
  464. package/hash.txt +0 -1
  465. package/src/Boot.js +0 -59
  466. package/src/CustomElementsRegistry.js +0 -95
  467. package/src/CustomElementsScope.js +0 -30
  468. package/src/CustomElementsScopeUtils.js +0 -108
  469. package/src/DOMObserver.js +0 -65
  470. package/src/Device.js +0 -121
  471. package/src/EventProvider.js +0 -85
  472. package/src/FeaturesRegistry.js +0 -14
  473. package/src/FontFace.js +0 -30
  474. package/src/InitialConfiguration.js +0 -166
  475. package/src/Keys.js +0 -295
  476. package/src/ManagedStyles.js +0 -83
  477. package/src/MediaRange.js +0 -109
  478. package/src/PropertiesFileFormat.js +0 -95
  479. package/src/Render.js +0 -175
  480. package/src/RenderQueue.js +0 -66
  481. package/src/RenderScheduler.js +0 -44
  482. package/src/Runtimes.js +0 -107
  483. package/src/StaticArea.js +0 -3
  484. package/src/StaticAreaItem.js +0 -101
  485. package/src/SystemCSSVars.js +0 -10
  486. package/src/UI5Element.js +0 -1033
  487. package/src/UI5ElementMetadata.js +0 -352
  488. package/src/animations/AnimationQueue.js +0 -42
  489. package/src/animations/animate.js +0 -53
  490. package/src/animations/config.js +0 -5
  491. package/src/animations/scroll.js +0 -28
  492. package/src/animations/slideDown.js +0 -79
  493. package/src/animations/slideUp.js +0 -71
  494. package/src/asset-registries/Icons.js +0 -135
  495. package/src/asset-registries/Illustrations.js +0 -30
  496. package/src/asset-registries/LocaleData.js +0 -164
  497. package/src/asset-registries/Themes.js +0 -82
  498. package/src/asset-registries/i18n.js +0 -123
  499. package/src/assets-meta/IconCollectionsAlias.js +0 -18
  500. package/src/config/AnimationMode.js +0 -23
  501. package/src/config/CalendarType.js +0 -18
  502. package/src/config/FormatSettings.js +0 -13
  503. package/src/config/Icons.js +0 -52
  504. package/src/config/Language.js +0 -68
  505. package/src/config/NoConflict.js +0 -51
  506. package/src/config/RTL.js +0 -31
  507. package/src/config/Theme.js +0 -53
  508. package/src/delegate/ItemNavigation.js +0 -356
  509. package/src/delegate/ResizeHandler.js +0 -106
  510. package/src/delegate/ScrollEnablement.js +0 -188
  511. package/src/features/F6Navigation.js +0 -110
  512. package/src/features/OpenUI5Enablement.js +0 -119
  513. package/src/features/OpenUI5Support.js +0 -125
  514. package/src/getSharedResource.js +0 -30
  515. package/src/i18nBundle.js +0 -86
  516. package/src/locale/Locale.js +0 -91
  517. package/src/locale/RTLAwareRegistry.js +0 -14
  518. package/src/locale/applyDirection.js +0 -17
  519. package/src/locale/directionChange.js +0 -32
  520. package/src/locale/getEffectiveDir.js +0 -28
  521. package/src/locale/getLocale.js +0 -41
  522. package/src/locale/languageChange.js +0 -22
  523. package/src/locale/nextFallbackLocale.js +0 -28
  524. package/src/locale/normalizeLocale.js +0 -54
  525. package/src/renderer/LitRenderer.js +0 -52
  526. package/src/renderer/executeTemplate.js +0 -34
  527. package/src/theming/CustomStyle.js +0 -60
  528. package/src/theming/ThemeLoaded.js +0 -22
  529. package/src/theming/applyTheme.js +0 -79
  530. package/src/theming/getConstructableStyle.js +0 -30
  531. package/src/theming/getEffectiveLinksHrefs.js +0 -27
  532. package/src/theming/getEffectiveStyle.js +0 -39
  533. package/src/theming/getStylesString.js +0 -15
  534. package/src/theming/getThemeDesignerTheme.js +0 -87
  535. package/src/theming/preloadLinks.js +0 -23
  536. package/src/thirdparty/_merge.js +0 -32
  537. package/src/thirdparty/isPlainObject.js +0 -18
  538. package/src/thirdparty/merge.js +0 -10
  539. package/src/types/AnimationMode.js +0 -7
  540. package/src/types/CSSColor.js +0 -9
  541. package/src/types/CSSSize.js +0 -9
  542. package/src/types/CalendarType.js +0 -22
  543. package/src/types/DataType.js +0 -37
  544. package/src/types/Float.js +0 -14
  545. package/src/types/Integer.js +0 -13
  546. package/src/types/InvisibleMessageMode.js +0 -30
  547. package/src/types/ItemNavigationBehavior.js +0 -16
  548. package/src/types/NavigationMode.js +0 -7
  549. package/src/types/PopupState.js +0 -37
  550. package/src/types/ValueState.js +0 -22
  551. package/src/updateShadowRoot.js +0 -29
  552. package/src/util/AriaLabelHelper.js +0 -41
  553. package/src/util/Caret.js +0 -32
  554. package/src/util/ColorConversion.js +0 -398
  555. package/src/util/FetchHelper.js +0 -31
  556. package/src/util/FocusableElements.js +0 -79
  557. package/src/util/InvisibleMessage.js +0 -69
  558. package/src/util/PopupUtils.js +0 -93
  559. package/src/util/SlotsHelper.js +0 -43
  560. package/src/util/StringHelper.js +0 -26
  561. package/src/util/TabbableElements.js +0 -51
  562. package/src/util/arraysAreEqual.js +0 -15
  563. package/src/util/createLinkInHead.js +0 -19
  564. package/src/util/createStyleInHead.js +0 -18
  565. package/src/util/debounce.js +0 -17
  566. package/src/util/detectNavigatorLanguage.js +0 -13
  567. package/src/util/escapeRegex.js +0 -10
  568. package/src/util/findNodeOwner.js +0 -35
  569. package/src/util/formatMessage.js +0 -23
  570. package/src/util/generateHighlightedMarkup.js +0 -42
  571. package/src/util/getActiveElement.js +0 -11
  572. package/src/util/getClassCopy.js +0 -10
  573. package/src/util/getDesigntimePropertyAsArray.js +0 -4
  574. package/src/util/getEffectiveContentDensity.js +0 -5
  575. package/src/util/getSingletonElementInstance.js +0 -13
  576. package/src/util/isDefaultSlotProvided.js +0 -11
  577. package/src/util/isDescendantOf.js +0 -15
  578. package/src/util/isElementInView.js +0 -15
  579. package/src/util/isNodeClickable.js +0 -19
  580. package/src/util/isNodeHidden.js +0 -9
  581. package/src/util/isNodeTabbable.js +0 -28
  582. package/src/util/isValidPropertyName.js +0 -29
  583. package/src/util/setToArray.js +0 -10
  584. package/src/util/whenDOMReady.js +0 -13
@@ -1,352 +1,291 @@
1
- import DataType from "./types/DataType.js";
2
- import isDescendantOf from "./util/isDescendantOf.js";
3
1
  import { camelToKebabCase } from "./util/StringHelper.js";
4
- import { getSlottedElements } from "./util/SlotsHelper.js";
2
+ import { getSlottedNodes } from "./util/SlotsHelper.js";
5
3
  import { getEffectiveScopingSuffixForTag } from "./CustomElementsScopeUtils.js";
6
-
7
4
  /**
8
5
  *
9
6
  * @class
10
7
  * @public
11
8
  */
12
9
  class UI5ElementMetadata {
13
- constructor(metadata) {
14
- this.metadata = metadata;
15
- }
16
-
17
- getInitialState() {
18
- if (Object.prototype.hasOwnProperty.call(this, "_initialState")) {
19
- return this._initialState;
20
- }
21
-
22
- const initialState = {};
23
- const slotsAreManaged = this.slotsAreManaged();
24
-
25
- // Initialize properties
26
- const props = this.getProperties();
27
- for (const propName in props) { // eslint-disable-line
28
- const propType = props[propName].type;
29
- const propDefaultValue = props[propName].defaultValue;
30
-
31
- if (propType === Boolean) {
32
- initialState[propName] = false;
33
-
34
- if (propDefaultValue !== undefined) {
35
- console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default"); // eslint-disable-line
36
- }
37
- } else if (props[propName].multiple) {
38
- initialState[propName] = [];
39
- } else if (propType === Object) {
40
- initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : {};
41
- } else if (propType === String) {
42
- initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : "";
43
- } else {
44
- initialState[propName] = propDefaultValue;
45
- }
46
- }
47
-
48
- // Initialize slots
49
- if (slotsAreManaged) {
50
- const slots = this.getSlots();
51
- for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
52
- const propertyName = slotData.propertyName || slotName;
53
- initialState[propertyName] = [];
54
- }
55
- }
56
-
57
- this._initialState = initialState;
58
- return initialState;
59
- }
60
-
61
- /**
62
- * Only intended for use by UI5Element.js
63
- * @protected
64
- */
65
- static validatePropertyValue(value, propData) {
66
- const isMultiple = propData.multiple;
67
- if (isMultiple) {
68
- return value.map(propValue => validateSingleProperty(propValue, propData));
69
- }
70
- return validateSingleProperty(value, propData);
71
- }
72
-
73
- /**
74
- * Only intended for use by UI5Element.js
75
- * @protected
76
- */
77
- static validateSlotValue(value, slotData) {
78
- return validateSingleSlot(value, slotData);
79
- }
80
-
81
- /**
82
- * Returns the tag of the UI5 Element without the scope
83
- * @public
84
- */
85
- getPureTag() {
86
- return this.metadata.tag;
87
- }
88
-
89
- /**
90
- * Returns the tag of the UI5 Element
91
- * @public
92
- */
93
- getTag() {
94
- const pureTag = this.metadata.tag;
95
- const suffix = getEffectiveScopingSuffixForTag(pureTag);
96
- if (!suffix) {
97
- return pureTag;
98
- }
99
-
100
- return `${pureTag}-${suffix}`;
101
- }
102
-
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
- /**
122
- * Determines whether a property should have an attribute counterpart
123
- * @public
124
- * @param propName
125
- * @returns {boolean}
126
- */
127
- hasAttribute(propName) {
128
- const propData = this.getProperties()[propName];
129
- return propData.type !== Object && !propData.noAttribute && !propData.multiple;
130
- }
131
-
132
- /**
133
- * Returns an array with the properties of the UI5 Element (in camelCase)
134
- * @public
135
- * @returns {string[]}
136
- */
137
- getPropertiesList() {
138
- return Object.keys(this.getProperties());
139
- }
140
-
141
- /**
142
- * Returns an array with the attributes of the UI5 Element (in kebab-case)
143
- * @public
144
- * @returns {string[]}
145
- */
146
- getAttributesList() {
147
- return this.getPropertiesList().filter(this.hasAttribute, this).map(camelToKebabCase);
148
- }
149
-
150
- /**
151
- * Returns an object with key-value pairs of slots and their metadata definitions
152
- * @public
153
- */
154
- getSlots() {
155
- return this.metadata.slots || {};
156
- }
157
-
158
- /**
159
- * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text
160
- * @returns {boolean}
161
- */
162
- canSlotText() {
163
- const defaultSlot = this.getSlots().default;
164
- return defaultSlot && defaultSlot.type === Node;
165
- }
166
-
167
- /**
168
- * Determines whether this UI5 Element supports any slots
169
- * @public
170
- */
171
- hasSlots() {
172
- return !!Object.entries(this.getSlots()).length;
173
- }
174
-
175
- /**
176
- * Determines whether this UI5 Element supports any slots with "individualSlots: true"
177
- * @public
178
- */
179
- hasIndividualSlots() {
180
- return this.slotsAreManaged() && Object.entries(this.getSlots()).some(([_slotName, slotData]) => slotData.individualSlots);
181
- }
182
-
183
- /**
184
- * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed
185
- * @public
186
- */
187
- slotsAreManaged() {
188
- return !!this.metadata.managedSlots;
189
- }
190
-
191
- /**
192
- * Determines whether this control supports F6 fast navigation
193
- * @public
194
- */
195
- supportsF6FastNavigation() {
196
- return !!this.metadata.fastNavigation;
197
- }
198
-
199
- /**
200
- * Returns an object with key-value pairs of properties and their metadata definitions
201
- * @public
202
- */
203
- getProperties() {
204
- return this.metadata.properties || {};
205
- }
206
-
207
- /**
208
- * Returns an object with key-value pairs of events and their metadata definitions
209
- * @public
210
- */
211
- getEvents() {
212
- return this.metadata.events || {};
213
- }
214
-
215
- /**
216
- * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)
217
- * @returns {boolean}
218
- */
219
- isLanguageAware() {
220
- return !!this.metadata.languageAware;
221
- }
222
-
223
- /**
224
- * Determines whether this UI5 Element has any theme dependant carachteristics.
225
- * @returns {boolean}
226
- */
227
- isThemeAware() {
228
- return !!this.metadata.themeAware;
229
- }
230
-
231
- /**
232
- * Matches a changed entity (property/slot) with the given name against the "invalidateOnChildChange" configuration
233
- * and determines whether this should cause and invalidation
234
- *
235
- * @param slotName the name of the slot in which a child was changed
236
- * @param type the type of change in the child: "property" or "slot"
237
- * @param name the name of the property/slot that changed
238
- * @returns {boolean}
239
- */
240
- shouldInvalidateOnChildChange(slotName, type, name) {
241
- const config = this.getSlots()[slotName].invalidateOnChildChange;
242
-
243
- // invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component
244
- if (config === undefined) {
245
- return false;
246
- }
247
-
248
- // The simple format was used: invalidateOnChildChange: true/false;
249
- if (typeof config === "boolean") {
250
- return config;
251
- }
252
-
253
- // The complex format was used: invalidateOnChildChange: { properties, slots }
254
- if (typeof config === "object") {
255
- // A property was changed
256
- if (type === "property") {
257
- // The config object does not have a properties field
258
- if (config.properties === undefined) {
259
- return false;
260
- }
261
-
262
- // The config object has the short format: properties: true/false
263
- if (typeof config.properties === "boolean") {
264
- return config.properties;
265
- }
266
-
267
- // The config object has the complex format: properties: [...]
268
- if (Array.isArray(config.properties)) {
269
- return config.properties.includes(name);
270
- }
271
-
272
- throw new Error("Wrong format for invalidateOnChildChange.properties: boolean or array is expected");
273
- }
274
-
275
- // A slot was changed
276
- if (type === "slot") {
277
- // The config object does not have a slots field
278
- if (config.slots === undefined) {
279
- return false;
280
- }
281
-
282
- // The config object has the short format: slots: true/false
283
- if (typeof config.slots === "boolean") {
284
- return config.slots;
285
- }
286
-
287
- // The config object has the complex format: slots: [...]
288
- if (Array.isArray(config.slots)) {
289
- return config.slots.includes(name);
290
- }
291
-
292
- throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected");
293
- }
294
- }
295
-
296
- throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected");
297
- }
10
+ constructor(metadata) {
11
+ this.metadata = metadata;
12
+ }
13
+ getInitialState() {
14
+ if (Object.prototype.hasOwnProperty.call(this, "_initialState")) {
15
+ return this._initialState;
16
+ }
17
+ const initialState = {};
18
+ const slotsAreManaged = this.slotsAreManaged();
19
+ // Initialize properties
20
+ const props = this.getProperties();
21
+ for (const propName in props) { // eslint-disable-line
22
+ const propType = props[propName].type;
23
+ const propDefaultValue = props[propName].defaultValue;
24
+ if (propType === Boolean) {
25
+ initialState[propName] = false;
26
+ if (propDefaultValue !== undefined) {
27
+ console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default"); // eslint-disable-line
28
+ }
29
+ }
30
+ else if (props[propName].multiple) {
31
+ initialState[propName] = [];
32
+ }
33
+ else if (propType === Object) {
34
+ initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : {};
35
+ }
36
+ else if (propType === String) {
37
+ initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : "";
38
+ }
39
+ else {
40
+ initialState[propName] = propDefaultValue;
41
+ }
42
+ }
43
+ // Initialize slots
44
+ if (slotsAreManaged) {
45
+ const slots = this.getSlots();
46
+ for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
47
+ const propertyName = slotData.propertyName || slotName;
48
+ initialState[propertyName] = [];
49
+ }
50
+ }
51
+ this._initialState = initialState;
52
+ return initialState;
53
+ }
54
+ /**
55
+ * Validates the property's value and returns it if correct
56
+ * or returns the default value if not.
57
+ * <b>Note:</b> Only intended for use by UI5Element.js
58
+ * @public
59
+ */
60
+ static validatePropertyValue(value, propData) {
61
+ const isMultiple = propData.multiple;
62
+ if (isMultiple && value) {
63
+ return value.map((propValue) => validateSingleProperty(propValue, propData));
64
+ }
65
+ return validateSingleProperty(value, propData);
66
+ }
67
+ /**
68
+ * Validates the slot's value and returns it if correct
69
+ * or throws an exception if not.
70
+ * <b>Note:</b> Only intended for use by UI5Element.js
71
+ * @pubic
72
+ */
73
+ static validateSlotValue(value, slotData) {
74
+ return validateSingleSlot(value, slotData);
75
+ }
76
+ /**
77
+ * Returns the tag of the UI5 Element without the scope
78
+ * @public
79
+ */
80
+ getPureTag() {
81
+ return this.metadata.tag || "";
82
+ }
83
+ /**
84
+ * Returns the tag of the UI5 Element
85
+ * @public
86
+ */
87
+ getTag() {
88
+ const pureTag = this.metadata.tag;
89
+ if (!pureTag) {
90
+ return "";
91
+ }
92
+ const suffix = getEffectiveScopingSuffixForTag(pureTag);
93
+ if (!suffix) {
94
+ return pureTag;
95
+ }
96
+ return `${pureTag}-${suffix}`;
97
+ }
98
+ /**
99
+ * Determines whether a property should have an attribute counterpart
100
+ * @public
101
+ * @param propName
102
+ * @returns {boolean}
103
+ */
104
+ hasAttribute(propName) {
105
+ const propData = this.getProperties()[propName];
106
+ return propData.type !== Object && !propData.noAttribute && !propData.multiple;
107
+ }
108
+ /**
109
+ * Returns an array with the properties of the UI5 Element (in camelCase)
110
+ * @public
111
+ * @returns {string[]}
112
+ */
113
+ getPropertiesList() {
114
+ return Object.keys(this.getProperties());
115
+ }
116
+ /**
117
+ * Returns an array with the attributes of the UI5 Element (in kebab-case)
118
+ * @public
119
+ * @returns {string[]}
120
+ */
121
+ getAttributesList() {
122
+ return this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);
123
+ }
124
+ /**
125
+ * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text
126
+ * @returns {boolean}
127
+ */
128
+ canSlotText() {
129
+ const defaultSlot = this.getSlots().default;
130
+ return defaultSlot && defaultSlot.type === Node;
131
+ }
132
+ /**
133
+ * Determines whether this UI5 Element supports any slots
134
+ * @public
135
+ */
136
+ hasSlots() {
137
+ return !!Object.entries(this.getSlots()).length;
138
+ }
139
+ /**
140
+ * Determines whether this UI5 Element supports any slots with "individualSlots: true"
141
+ * @public
142
+ */
143
+ hasIndividualSlots() {
144
+ return this.slotsAreManaged() && Object.values(this.getSlots()).some(slotData => slotData.individualSlots);
145
+ }
146
+ /**
147
+ * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed
148
+ * @public
149
+ */
150
+ slotsAreManaged() {
151
+ return !!this.metadata.managedSlots;
152
+ }
153
+ /**
154
+ * Determines whether this control supports F6 fast navigation
155
+ * @public
156
+ */
157
+ supportsF6FastNavigation() {
158
+ return !!this.metadata.fastNavigation;
159
+ }
160
+ /**
161
+ * Returns an object with key-value pairs of properties and their metadata definitions
162
+ * @public
163
+ */
164
+ getProperties() {
165
+ if (!this.metadata.properties) {
166
+ this.metadata.properties = {};
167
+ }
168
+ return this.metadata.properties;
169
+ }
170
+ /**
171
+ * Returns an object with key-value pairs of events and their metadata definitions
172
+ * @public
173
+ */
174
+ getEvents() {
175
+ if (!this.metadata.events) {
176
+ this.metadata.events = {};
177
+ }
178
+ return this.metadata.events;
179
+ }
180
+ /**
181
+ * Returns an object with key-value pairs of slots and their metadata definitions
182
+ * @public
183
+ */
184
+ getSlots() {
185
+ if (!this.metadata.slots) {
186
+ this.metadata.slots = {};
187
+ }
188
+ return this.metadata.slots;
189
+ }
190
+ /**
191
+ * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)
192
+ * @returns {boolean}
193
+ */
194
+ isLanguageAware() {
195
+ return !!this.metadata.languageAware;
196
+ }
197
+ /**
198
+ * Determines whether this UI5 Element has any theme dependant carachteristics.
199
+ * @returns {boolean}
200
+ */
201
+ isThemeAware() {
202
+ return !!this.metadata.themeAware;
203
+ }
204
+ /**
205
+ * Matches a changed entity (property/slot) with the given name against the "invalidateOnChildChange" configuration
206
+ * and determines whether this should cause and invalidation
207
+ *
208
+ * @param slotName the name of the slot in which a child was changed
209
+ * @param type the type of change in the child: "property" or "slot"
210
+ * @param name the name of the property/slot that changed
211
+ * @returns {boolean}
212
+ */
213
+ shouldInvalidateOnChildChange(slotName, type, name) {
214
+ const config = this.getSlots()[slotName].invalidateOnChildChange;
215
+ // invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component
216
+ if (config === undefined) {
217
+ return false;
218
+ }
219
+ // The simple format was used: invalidateOnChildChange: true/false;
220
+ if (typeof config === "boolean") {
221
+ return config;
222
+ }
223
+ // The complex format was used: invalidateOnChildChange: { properties, slots }
224
+ if (typeof config === "object") {
225
+ // A property was changed
226
+ if (type === "property") {
227
+ // The config object does not have a properties field
228
+ if (config.properties === undefined) {
229
+ return false;
230
+ }
231
+ // The config object has the short format: properties: true/false
232
+ if (typeof config.properties === "boolean") {
233
+ return config.properties;
234
+ }
235
+ // The config object has the complex format: properties: [...]
236
+ if (Array.isArray(config.properties)) {
237
+ return config.properties.includes(name);
238
+ }
239
+ throw new Error("Wrong format for invalidateOnChildChange.properties: boolean or array is expected");
240
+ }
241
+ // A slot was changed
242
+ if (type === "slot") {
243
+ // The config object does not have a slots field
244
+ if (config.slots === undefined) {
245
+ return false;
246
+ }
247
+ // The config object has the short format: slots: true/false
248
+ if (typeof config.slots === "boolean") {
249
+ return config.slots;
250
+ }
251
+ // The config object has the complex format: slots: [...]
252
+ if (Array.isArray(config.slots)) {
253
+ return config.slots.includes(name);
254
+ }
255
+ throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected");
256
+ }
257
+ }
258
+ throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected");
259
+ }
298
260
  }
299
-
300
- const validateAltTypes = (value, propData, fallbackValue) => {
301
- let finalValue = fallbackValue;
302
- const altTypes = propData.altTypes || [];
303
-
304
- for (let index = 0; index < altTypes.length; index++) {
305
- const type = altTypes[index];
306
-
307
- if (type === Boolean && typeof value === "boolean") {
308
- finalValue = value;
309
- break;
310
- } else if (type === String && (typeof value === "string" || typeof value === "undefined" || value === null)) {
311
- finalValue = value;
312
- break;
313
- } else if (type === Object && typeof value === "object") {
314
- finalValue = value;
315
- break;
316
- } else if (isDescendantOf(type, DataType) && type.isValid(value)) {
317
- finalValue = value;
318
- break;
319
- }
320
- }
321
-
322
- return finalValue;
323
- };
324
-
325
261
  const validateSingleProperty = (value, propData) => {
326
- const propertyType = propData.type;
327
-
328
- if (propertyType === Boolean) {
329
- return typeof value === "boolean" ? value : validateAltTypes(value, propData, false);
330
- }
331
- if (propertyType === String) {
332
- return (typeof value === "string" || typeof value === "undefined" || value === null) ? value : validateAltTypes(value, propData, value.toString());
333
- }
334
- if (propertyType === Object) {
335
- return typeof value === "object" ? value : validateAltTypes(value, propData, propData.defaultValue);
336
- }
337
- if (isDescendantOf(propertyType, DataType)) {
338
- return propertyType.isValid(value) ? value : validateAltTypes(value, propData, propData.defaultValue);
339
- }
262
+ const propertyType = propData.type;
263
+ let propertyValidator = propData.validator;
264
+ if (propertyType && propertyType.isDataTypeClass) {
265
+ propertyValidator = propertyType;
266
+ }
267
+ if (propertyValidator) {
268
+ return propertyValidator.isValid(value) ? value : propData.defaultValue;
269
+ }
270
+ if (!propertyType || propertyType === String) {
271
+ return (typeof value === "string" || typeof value === "undefined" || value === null) ? value : value.toString();
272
+ }
273
+ if (propertyType === Boolean) {
274
+ return typeof value === "boolean" ? value : false;
275
+ }
276
+ if (propertyType === Object) {
277
+ return typeof value === "object" ? value : propData.defaultValue;
278
+ }
279
+ // Check if "value" is part of the enum (propertyType) values and return the defaultValue if not found.
280
+ return value in propertyType ? value : propData.defaultValue;
340
281
  };
341
-
342
282
  const validateSingleSlot = (value, slotData) => {
343
- value && getSlottedElements(value).forEach(el => {
344
- if (!(el instanceof slotData.type)) {
345
- throw new Error(`${el} is not of type ${slotData.type}`);
346
- }
347
- });
348
-
349
- return value;
283
+ value && getSlottedNodes(value).forEach(el => {
284
+ if (!(el instanceof slotData.type)) {
285
+ throw new Error(`The element is not of type ${slotData.type.toString()}`);
286
+ }
287
+ });
288
+ return value;
350
289
  };
351
-
352
290
  export default UI5ElementMetadata;
291
+ //# sourceMappingURL=UI5ElementMetadata.js.map