@ui5/webcomponents-base 0.0.0-bad80d0d6 → 0.0.0-bf8366eb6

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