@ui5/webcomponents-base 0.0.0-306572ffa → 0.0.0-31ad69296

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 (744) hide show
  1. package/.eslintignore +10 -3
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +1396 -0
  4. package/README.md +58 -7
  5. package/bundle.esm.js +34 -24
  6. package/config/wdio.conf.cjs +400 -0
  7. package/dist/.tsbuildinfo +1 -0
  8. package/dist/AssetRegistry.d.ts +5 -0
  9. package/dist/AssetRegistry.js +6 -10
  10. package/dist/AssetRegistry.js.map +1 -0
  11. package/dist/Boot.d.ts +10 -0
  12. package/dist/Boot.js +74 -0
  13. package/dist/Boot.js.map +1 -0
  14. package/dist/CSP.d.ts +33 -0
  15. package/dist/CSP.js +54 -0
  16. package/dist/CSP.js.map +1 -0
  17. package/dist/CustomElementsRegistry.d.ts +5 -0
  18. package/dist/CustomElementsRegistry.js +69 -30
  19. package/dist/CustomElementsRegistry.js.map +1 -0
  20. package/dist/CustomElementsScope.d.ts +7 -0
  21. package/dist/CustomElementsScope.js +11 -108
  22. package/dist/CustomElementsScope.js.map +1 -0
  23. package/dist/CustomElementsScopeUtils.d.ts +62 -0
  24. package/dist/CustomElementsScopeUtils.js +102 -0
  25. package/dist/CustomElementsScopeUtils.js.map +1 -0
  26. package/dist/DOMObserver.d.ts +11 -0
  27. package/dist/DOMObserver.js +23 -0
  28. package/dist/DOMObserver.js.map +1 -0
  29. package/dist/Device.d.ts +13 -0
  30. package/dist/Device.js +167 -815
  31. package/dist/Device.js.map +1 -0
  32. package/dist/EventProvider.d.ts +25 -0
  33. package/dist/EventProvider.js +67 -78
  34. package/dist/EventProvider.js.map +1 -0
  35. package/dist/FeaturesRegistry.d.ts +3 -0
  36. package/dist/FeaturesRegistry.js +5 -7
  37. package/dist/FeaturesRegistry.js.map +1 -0
  38. package/dist/FontFace.d.ts +2 -0
  39. package/dist/FontFace.js +21 -69
  40. package/dist/FontFace.js.map +1 -0
  41. package/dist/IgnoreCustomElements.d.ts +25 -0
  42. package/dist/IgnoreCustomElements.js +37 -0
  43. package/dist/IgnoreCustomElements.js.map +1 -0
  44. package/dist/InitialConfiguration.d.ts +27 -0
  45. package/dist/InitialConfiguration.js +130 -104
  46. package/dist/InitialConfiguration.js.map +1 -0
  47. package/dist/Keys.d.ts +61 -0
  48. package/dist/Keys.js +175 -182
  49. package/dist/Keys.js.map +1 -0
  50. package/dist/ManagedStyles.d.ts +9 -0
  51. package/dist/ManagedStyles.js +157 -0
  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 +31 -0
  57. package/dist/MediaRange.js +88 -0
  58. package/dist/MediaRange.js.map +1 -0
  59. package/dist/PropertiesFileFormat.d.ts +8 -0
  60. package/dist/PropertiesFileFormat.js +85 -0
  61. package/dist/PropertiesFileFormat.js.map +1 -0
  62. package/dist/Render.d.ts +47 -0
  63. package/dist/Render.js +143 -0
  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 +86 -0
  70. package/dist/Runtimes.js.map +1 -0
  71. package/dist/StaticArea.d.ts +3 -0
  72. package/dist/StaticArea.js +4 -28
  73. package/dist/StaticArea.js.map +1 -0
  74. package/dist/StaticAreaItem.d.ts +35 -0
  75. package/dist/StaticAreaItem.js +94 -102
  76. package/dist/StaticAreaItem.js.map +1 -0
  77. package/dist/SystemCSSVars.d.ts +2 -0
  78. package/dist/SystemCSSVars.js +6 -28
  79. package/dist/SystemCSSVars.js.map +1 -0
  80. package/dist/Theming.d.ts +3 -0
  81. package/dist/Theming.js +3 -2
  82. package/dist/Theming.js.map +1 -0
  83. package/dist/UI5Element.d.ts +389 -0
  84. package/dist/UI5Element.js +999 -1058
  85. package/dist/UI5Element.js.map +1 -0
  86. package/dist/UI5ElementMetadata.d.ts +143 -0
  87. package/dist/UI5ElementMetadata.js +281 -200
  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/asset-registries/Icons.d.ts +39 -0
  105. package/dist/asset-registries/Icons.js +136 -31
  106. package/dist/asset-registries/Icons.js.map +1 -0
  107. package/dist/asset-registries/Illustrations.d.ts +19 -0
  108. package/dist/asset-registries/Illustrations.js +77 -0
  109. package/dist/asset-registries/Illustrations.js.map +1 -0
  110. package/dist/asset-registries/LocaleData.d.ts +7 -0
  111. package/dist/asset-registries/LocaleData.js +125 -114
  112. package/dist/asset-registries/LocaleData.js.map +1 -0
  113. package/dist/asset-registries/Themes.d.ts +12 -0
  114. package/dist/asset-registries/Themes.js +58 -77
  115. package/dist/asset-registries/Themes.js.map +1 -0
  116. package/dist/asset-registries/i18n.d.ts +23 -0
  117. package/dist/asset-registries/i18n.js +80 -85
  118. package/dist/asset-registries/i18n.js.map +1 -0
  119. package/dist/asset-registries/util/IconCollectionsAlias.d.ts +30 -0
  120. package/dist/asset-registries/util/IconCollectionsAlias.js +37 -0
  121. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
  122. package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
  123. package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
  124. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
  125. package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
  126. package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
  127. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
  128. package/dist/config/AnimationMode.d.ts +14 -0
  129. package/dist/config/AnimationMode.js +21 -18
  130. package/dist/config/AnimationMode.js.map +1 -0
  131. package/dist/config/CalendarType.d.ts +15 -0
  132. package/dist/config/CalendarType.js +31 -14
  133. package/dist/config/CalendarType.js.map +1 -0
  134. package/dist/config/FormatSettings.d.ts +15 -0
  135. package/dist/config/FormatSettings.js +15 -9
  136. package/dist/config/FormatSettings.js.map +1 -0
  137. package/dist/config/Icons.d.ts +40 -0
  138. package/dist/config/Icons.js +44 -0
  139. package/dist/config/Icons.js.map +1 -0
  140. package/dist/config/Language.d.ts +40 -0
  141. package/dist/config/Language.js +59 -29
  142. package/dist/config/Language.js.map +1 -0
  143. package/dist/config/NoConflict.d.ts +20 -0
  144. package/dist/config/NoConflict.js +41 -41
  145. package/dist/config/NoConflict.js.map +1 -0
  146. package/dist/config/Theme.d.ts +38 -0
  147. package/dist/config/Theme.js +67 -22
  148. package/dist/config/Theme.js.map +1 -0
  149. package/dist/config/ThemeRoot.d.ts +27 -0
  150. package/dist/config/ThemeRoot.js +57 -0
  151. package/dist/config/ThemeRoot.js.map +1 -0
  152. package/dist/config/Timezone.d.ts +17 -0
  153. package/dist/config/Timezone.js +30 -0
  154. package/dist/config/Timezone.js.map +1 -0
  155. package/dist/connectToComponent.d.ts +9 -0
  156. package/dist/connectToComponent.js +59 -0
  157. package/dist/connectToComponent.js.map +1 -0
  158. package/dist/css/BusyIndicator.css +80 -0
  159. package/dist/css/FontFace.css +96 -0
  160. package/dist/css/OverrideFontFace.css +32 -0
  161. package/dist/css/SystemCSSVars.css +9 -0
  162. package/dist/custom-elements-internal.json +2863 -0
  163. package/dist/custom-elements.json +2593 -0
  164. package/dist/decorators/customElement.d.ts +23 -0
  165. package/dist/decorators/customElement.js +36 -0
  166. package/dist/decorators/customElement.js.map +1 -0
  167. package/dist/decorators/event.d.ts +13 -0
  168. package/dist/decorators/event.js +24 -0
  169. package/dist/decorators/event.js.map +1 -0
  170. package/dist/decorators/property.d.ts +9 -0
  171. package/dist/decorators/property.js +24 -0
  172. package/dist/decorators/property.js.map +1 -0
  173. package/dist/decorators/slot.d.ts +9 -0
  174. package/dist/decorators/slot.js +37 -0
  175. package/dist/decorators/slot.js.map +1 -0
  176. package/dist/decorators.d.ts +5 -0
  177. package/dist/decorators.js +6 -0
  178. package/dist/decorators.js.map +1 -0
  179. package/dist/delegate/ItemNavigation.d.ts +114 -0
  180. package/dist/delegate/ItemNavigation.js +311 -278
  181. package/dist/delegate/ItemNavigation.js.map +1 -0
  182. package/dist/delegate/ResizeHandler.d.ts +23 -0
  183. package/dist/delegate/ResizeHandler.js +82 -62
  184. package/dist/delegate/ResizeHandler.js.map +1 -0
  185. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  186. package/dist/delegate/ScrollEnablement.js +159 -153
  187. package/dist/delegate/ScrollEnablement.js.map +1 -0
  188. package/dist/features/F6Navigation.d.ts +19 -0
  189. package/dist/features/F6Navigation.js +151 -0
  190. package/dist/features/F6Navigation.js.map +1 -0
  191. package/dist/features/LegacyDateFormats.d.ts +18 -0
  192. package/dist/features/LegacyDateFormats.js +20 -0
  193. package/dist/features/LegacyDateFormats.js.map +1 -0
  194. package/dist/features/OpenUI5Element.d.ts +9 -0
  195. package/dist/features/OpenUI5Element.js +5 -0
  196. package/dist/features/OpenUI5Element.js.map +1 -0
  197. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  198. package/dist/features/OpenUI5Enablement.js +96 -0
  199. package/dist/features/OpenUI5Enablement.js.map +1 -0
  200. package/dist/features/OpenUI5Support.d.ts +36 -0
  201. package/dist/features/OpenUI5Support.js +157 -87
  202. package/dist/features/OpenUI5Support.js.map +1 -0
  203. package/dist/features/patchPopup.d.ts +10 -0
  204. package/dist/features/patchPopup.js +15 -0
  205. package/dist/features/patchPopup.js.map +1 -0
  206. package/dist/generated/AssetParameters.d.ts +6 -0
  207. package/dist/generated/AssetParameters.js +4 -9
  208. package/dist/generated/AssetParameters.js.map +1 -0
  209. package/dist/generated/VersionInfo.d.ts +10 -0
  210. package/dist/generated/VersionInfo.js +11 -0
  211. package/dist/generated/VersionInfo.js.map +1 -0
  212. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  213. package/dist/generated/css/BusyIndicator.css.js +7 -0
  214. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  215. package/dist/generated/css/FontFace.css.d.ts +3 -0
  216. package/dist/generated/css/FontFace.css.js +7 -0
  217. package/dist/generated/css/FontFace.css.js.map +1 -0
  218. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  219. package/dist/generated/css/OverrideFontFace.css.js +7 -0
  220. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  221. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  222. package/dist/generated/css/SystemCSSVars.css.js +7 -0
  223. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  224. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +4 -0
  225. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +9 -0
  226. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +1 -0
  227. package/dist/getSharedResource.d.ts +11 -0
  228. package/dist/getSharedResource.js +28 -18
  229. package/dist/getSharedResource.js.map +1 -0
  230. package/dist/global.d.ts +40 -0
  231. package/dist/i18nBundle.d.ts +41 -0
  232. package/dist/i18nBundle.js +66 -42
  233. package/dist/i18nBundle.js.map +1 -0
  234. package/dist/locale/Locale.d.ts +22 -0
  235. package/dist/locale/Locale.js +75 -87
  236. package/dist/locale/Locale.js.map +1 -0
  237. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  238. package/dist/locale/RTLAwareRegistry.js +6 -11
  239. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  240. package/dist/locale/applyDirection.d.ts +11 -0
  241. package/dist/locale/applyDirection.js +11 -8
  242. package/dist/locale/applyDirection.js.map +1 -0
  243. package/dist/locale/directionChange.d.ts +15 -0
  244. package/dist/locale/directionChange.js +24 -0
  245. package/dist/locale/directionChange.js.map +1 -0
  246. package/dist/locale/getEffectiveDir.d.ts +2 -0
  247. package/dist/locale/getEffectiveDir.js +8 -0
  248. package/dist/locale/getEffectiveDir.js.map +1 -0
  249. package/dist/locale/getLocale.d.ts +7 -0
  250. package/dist/locale/getLocale.js +28 -21
  251. package/dist/locale/getLocale.js.map +1 -0
  252. package/dist/locale/languageChange.d.ts +5 -0
  253. package/dist/locale/languageChange.js +8 -16
  254. package/dist/locale/languageChange.js.map +1 -0
  255. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  256. package/dist/locale/nextFallbackLocale.js +15 -19
  257. package/dist/locale/nextFallbackLocale.js.map +1 -0
  258. package/dist/locale/normalizeLocale.d.ts +7 -0
  259. package/dist/locale/normalizeLocale.js +34 -41
  260. package/dist/locale/normalizeLocale.js.map +1 -0
  261. package/dist/renderer/LitRenderer.d.ts +14 -0
  262. package/dist/renderer/LitRenderer.js +34 -24
  263. package/dist/renderer/LitRenderer.js.map +1 -0
  264. package/dist/renderer/directives/style-map.d.ts +13 -0
  265. package/dist/renderer/directives/style-map.js +72 -0
  266. package/dist/renderer/directives/style-map.js.map +1 -0
  267. package/dist/renderer/executeTemplate.d.ts +13 -0
  268. package/dist/renderer/executeTemplate.js +20 -7
  269. package/dist/renderer/executeTemplate.js.map +1 -0
  270. package/dist/sap/base/Log.js +750 -0
  271. package/dist/sap/base/assert.js +34 -0
  272. package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
  273. package/dist/sap/base/security/URLListValidator.js +406 -0
  274. package/dist/sap/base/security/encodeCSS.js +40 -0
  275. package/dist/sap/base/security/encodeXML.js +53 -0
  276. package/dist/sap/base/security/sanitizeHTML.js +38 -0
  277. package/dist/sap/base/strings/toHex.js +33 -0
  278. package/dist/sap/base/util/now.js +28 -0
  279. package/dist/sap/base/util/uid.js +27 -0
  280. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
  281. package/dist/ssr-dom-shim.d.ts +1 -0
  282. package/dist/ssr-dom-shim.js +12 -0
  283. package/dist/ssr-dom-shim.js.map +1 -0
  284. package/dist/ssr-dom.d.ts +0 -0
  285. package/dist/ssr-dom.js +3 -0
  286. package/dist/ssr-dom.js.map +1 -0
  287. package/dist/theming/CustomStyle.d.ts +6 -0
  288. package/dist/theming/CustomStyle.js +40 -32
  289. package/dist/theming/CustomStyle.js.map +1 -0
  290. package/dist/theming/ThemeLoaded.d.ts +5 -0
  291. package/dist/theming/ThemeLoaded.js +14 -0
  292. package/dist/theming/ThemeLoaded.js.map +1 -0
  293. package/dist/theming/ThemeRegistered.d.ts +4 -0
  294. package/dist/theming/ThemeRegistered.js +11 -0
  295. package/dist/theming/ThemeRegistered.js.map +1 -0
  296. package/dist/theming/applyTheme.d.ts +2 -0
  297. package/dist/theming/applyTheme.js +64 -69
  298. package/dist/theming/applyTheme.js.map +1 -0
  299. package/dist/theming/getConstructableStyle.d.ts +9 -0
  300. package/dist/theming/getConstructableStyle.js +13 -17
  301. package/dist/theming/getConstructableStyle.js.map +1 -0
  302. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  303. package/dist/theming/getEffectiveLinksHrefs.js +17 -0
  304. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  305. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  306. package/dist/theming/getEffectiveStyle.js +26 -17
  307. package/dist/theming/getEffectiveStyle.js.map +1 -0
  308. package/dist/theming/getStylesString.d.ts +3 -0
  309. package/dist/theming/getStylesString.js +9 -11
  310. package/dist/theming/getStylesString.js.map +1 -0
  311. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  312. package/dist/theming/getThemeDesignerTheme.js +73 -60
  313. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  314. package/dist/theming/preloadLinks.d.ts +3 -0
  315. package/dist/theming/preloadLinks.js +19 -0
  316. package/dist/theming/preloadLinks.js.map +1 -0
  317. package/dist/thirdparty/_merge.d.ts +2 -0
  318. package/dist/thirdparty/_merge.js +7 -4
  319. package/dist/thirdparty/_merge.js.map +1 -0
  320. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  321. package/dist/thirdparty/isPlainObject.js +11 -10
  322. package/dist/thirdparty/isPlainObject.js.map +1 -0
  323. package/dist/thirdparty/merge.d.ts +2 -0
  324. package/dist/thirdparty/merge.js +4 -8
  325. package/dist/thirdparty/merge.js.map +1 -0
  326. package/dist/types/AnimationMode.d.ts +24 -0
  327. package/dist/types/AnimationMode.js +25 -6
  328. package/dist/types/AnimationMode.js.map +1 -0
  329. package/dist/types/CSSColor.d.ts +11 -0
  330. package/dist/types/CSSColor.js +14 -0
  331. package/dist/types/CSSColor.js.map +1 -0
  332. package/dist/types/CSSSize.d.ts +11 -0
  333. package/dist/types/CSSSize.js +10 -5
  334. package/dist/types/CSSSize.js.map +1 -0
  335. package/dist/types/CalendarType.d.ts +28 -0
  336. package/dist/types/CalendarType.js +26 -18
  337. package/dist/types/CalendarType.js.map +1 -0
  338. package/dist/types/DOMReference.d.ts +13 -0
  339. package/dist/types/DOMReference.js +21 -0
  340. package/dist/types/DOMReference.js.map +1 -0
  341. package/dist/types/DataType.d.ts +20 -0
  342. package/dist/types/DataType.js +31 -17
  343. package/dist/types/DataType.js.map +1 -0
  344. package/dist/types/Float.d.ts +14 -0
  345. package/dist/types/Float.js +14 -6
  346. package/dist/types/Float.js.map +1 -0
  347. package/dist/types/Integer.d.ts +14 -0
  348. package/dist/types/Integer.js +14 -5
  349. package/dist/types/Integer.js.map +1 -0
  350. package/dist/types/InvisibleMessageMode.d.ts +20 -0
  351. package/dist/types/InvisibleMessageMode.js +20 -0
  352. package/dist/types/InvisibleMessageMode.js.map +1 -0
  353. package/dist/types/ItemNavigationBehavior.d.ts +18 -0
  354. package/dist/types/ItemNavigationBehavior.js +16 -17
  355. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  356. package/dist/types/MovePlacement.d.ts +20 -0
  357. package/dist/types/MovePlacement.js +22 -0
  358. package/dist/types/MovePlacement.js.map +1 -0
  359. package/dist/types/NavigationMode.d.ts +24 -0
  360. package/dist/types/NavigationMode.js +25 -6
  361. package/dist/types/NavigationMode.js.map +1 -0
  362. package/dist/types/Orientation.d.ts +16 -0
  363. package/dist/types/Orientation.js +18 -0
  364. package/dist/types/Orientation.js.map +1 -0
  365. package/dist/types/ValueState.d.ts +28 -0
  366. package/dist/types/ValueState.js +27 -19
  367. package/dist/types/ValueState.js.map +1 -0
  368. package/dist/types.d.ts +28 -0
  369. package/dist/types.js +2 -0
  370. package/dist/types.js.map +1 -0
  371. package/dist/updateShadowRoot.d.ts +8 -0
  372. package/dist/updateShadowRoot.js +42 -0
  373. package/dist/updateShadowRoot.js.map +1 -0
  374. package/dist/util/AriaLabelHelper.d.ts +15 -0
  375. package/dist/util/AriaLabelHelper.js +171 -0
  376. package/dist/util/AriaLabelHelper.js.map +1 -0
  377. package/dist/util/Caret.d.ts +7 -0
  378. package/dist/util/Caret.js +23 -0
  379. package/dist/util/Caret.js.map +1 -0
  380. package/dist/util/ColorConversion.d.ts +30 -0
  381. package/dist/util/ColorConversion.js +342 -0
  382. package/dist/util/ColorConversion.js.map +1 -0
  383. package/dist/util/FetchHelper.d.ts +3 -0
  384. package/dist/util/FetchHelper.js +19 -25
  385. package/dist/util/FetchHelper.js.map +1 -0
  386. package/dist/util/FocusableElements.d.ts +4 -0
  387. package/dist/util/FocusableElements.js +67 -61
  388. package/dist/util/FocusableElements.js.map +1 -0
  389. package/dist/util/HTMLSanitizer.d.ts +3 -0
  390. package/dist/util/HTMLSanitizer.js +6 -0
  391. package/dist/util/HTMLSanitizer.js.map +1 -0
  392. package/dist/util/InvisibleMessage.d.ts +10 -0
  393. package/dist/util/InvisibleMessage.js +56 -0
  394. package/dist/util/InvisibleMessage.js.map +1 -0
  395. package/dist/util/PopupUtils.d.ts +7 -0
  396. package/dist/util/PopupUtils.js +74 -0
  397. package/dist/util/PopupUtils.js.map +1 -0
  398. package/dist/util/SlotsHelper.d.ts +9 -0
  399. package/dist/util/SlotsHelper.js +30 -0
  400. package/dist/util/SlotsHelper.js.map +1 -0
  401. package/dist/util/StringHelper.d.ts +3 -0
  402. package/dist/util/StringHelper.js +17 -20
  403. package/dist/util/StringHelper.js.map +1 -0
  404. package/dist/util/TabbableElements.d.ts +17 -0
  405. package/dist/util/TabbableElements.js +53 -43
  406. package/dist/util/TabbableElements.js.map +1 -0
  407. package/dist/util/arraysAreEqual.d.ts +2 -0
  408. package/dist/util/arraysAreEqual.js +13 -0
  409. package/dist/util/arraysAreEqual.js.map +1 -0
  410. package/dist/util/clamp.d.ts +9 -0
  411. package/dist/util/clamp.js +13 -0
  412. package/dist/util/clamp.js.map +1 -0
  413. package/dist/util/createLinkInHead.d.ts +7 -0
  414. package/dist/util/createLinkInHead.js +21 -0
  415. package/dist/util/createLinkInHead.js.map +1 -0
  416. package/dist/util/createStyleInHead.d.ts +8 -0
  417. package/dist/util/createStyleInHead.js +11 -11
  418. package/dist/util/createStyleInHead.js.map +1 -0
  419. package/dist/util/debounce.d.ts +2 -0
  420. package/dist/util/debounce.js +15 -0
  421. package/dist/util/debounce.js.map +1 -0
  422. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  423. package/dist/util/detectNavigatorLanguage.js +13 -11
  424. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  425. package/dist/util/dragAndDrop/DragRegistry.d.ts +12 -0
  426. package/dist/util/dragAndDrop/DragRegistry.js +66 -0
  427. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
  428. package/dist/util/dragAndDrop/findClosestPosition.d.ts +7 -0
  429. package/dist/util/dragAndDrop/findClosestPosition.js +59 -0
  430. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
  431. package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
  432. package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
  433. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
  434. package/dist/util/escapeRegex.d.ts +8 -0
  435. package/dist/util/escapeRegex.js +11 -0
  436. package/dist/util/escapeRegex.js.map +1 -0
  437. package/dist/util/formatMessage.d.ts +2 -0
  438. package/dist/util/formatMessage.js +15 -19
  439. package/dist/util/formatMessage.js.map +1 -0
  440. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  441. package/dist/util/generateHighlightedMarkup.js +41 -0
  442. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  443. package/dist/util/getActiveElement.d.ts +2 -0
  444. package/dist/util/getActiveElement.js +9 -0
  445. package/dist/util/getActiveElement.js.map +1 -0
  446. package/dist/util/getClassCopy.d.ts +420 -0
  447. package/dist/util/getClassCopy.js +10 -0
  448. package/dist/util/getClassCopy.js.map +1 -0
  449. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  450. package/dist/util/getDesigntimePropertyAsArray.js +5 -3
  451. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  452. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  453. package/dist/util/getEffectiveContentDensity.js +4 -0
  454. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  455. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  456. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  457. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  458. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  459. package/dist/util/getFastNavigationGroups.js +51 -0
  460. package/dist/util/getFastNavigationGroups.js.map +1 -0
  461. package/{src/util/getFileExtension.js → dist/util/getFileExtension.d.ts} +3 -12
  462. package/dist/util/getFileExtension.js +9 -11
  463. package/dist/util/getFileExtension.js.map +1 -0
  464. package/dist/util/getNormalizedTarget.d.ts +7 -0
  465. package/dist/util/getNormalizedTarget.js +14 -0
  466. package/dist/util/getNormalizedTarget.js.map +1 -0
  467. package/dist/util/getParentElement.d.ts +2 -0
  468. package/dist/util/getParentElement.js +5 -0
  469. package/dist/util/getParentElement.js.map +1 -0
  470. package/dist/util/getSingletonElementInstance.d.ts +11 -0
  471. package/dist/util/getSingletonElementInstance.js +17 -11
  472. package/dist/util/getSingletonElementInstance.js.map +1 -0
  473. package/dist/util/isElementClickable.d.ts +2 -0
  474. package/dist/util/isElementClickable.js +16 -0
  475. package/dist/util/isElementClickable.js.map +1 -0
  476. package/dist/util/isElementContainingBlock.d.ts +2 -0
  477. package/dist/util/isElementContainingBlock.js +11 -0
  478. package/dist/util/isElementContainingBlock.js.map +1 -0
  479. package/dist/util/isElementHidden.d.ts +2 -0
  480. package/dist/util/isElementHidden.js +8 -0
  481. package/dist/util/isElementHidden.js.map +1 -0
  482. package/dist/util/isElementInView.d.ts +6 -0
  483. package/dist/util/isElementInView.js +12 -0
  484. package/dist/util/isElementInView.js.map +1 -0
  485. package/dist/util/isElementTabbable.d.ts +9 -0
  486. package/dist/util/isElementTabbable.js +30 -0
  487. package/dist/util/isElementTabbable.js.map +1 -0
  488. package/dist/util/isValidPropertyName.d.ts +8 -0
  489. package/dist/util/isValidPropertyName.js +17 -16
  490. package/dist/util/isValidPropertyName.js.map +1 -0
  491. package/dist/util/whenDOMReady.d.ts +2 -0
  492. package/dist/util/whenDOMReady.js +11 -10
  493. package/dist/util/whenDOMReady.js.map +1 -0
  494. package/dist/util/willShowContent.d.ts +2 -0
  495. package/dist/util/willShowContent.js +7 -0
  496. package/dist/util/willShowContent.js.map +1 -0
  497. package/dist/validateThemeRoot.d.ts +2 -0
  498. package/dist/validateThemeRoot.js +48 -0
  499. package/dist/validateThemeRoot.js.map +1 -0
  500. package/dist/vscode.html-custom-data.json +22 -0
  501. package/index.js +226 -2
  502. package/lib/generate-asset-parameters/index.js +11 -6
  503. package/lib/generate-styles/index.js +31 -0
  504. package/lib/generate-version-info/index.js +32 -0
  505. package/package-scripts.cjs +67 -0
  506. package/package.json +30 -14
  507. package/src/css/BusyIndicator.css +80 -0
  508. package/src/css/FontFace.css +96 -0
  509. package/src/css/OverrideFontFace.css +32 -0
  510. package/src/css/SystemCSSVars.css +9 -0
  511. package/tsconfig.json +20 -0
  512. package/used-modules.txt +14 -0
  513. package/bundle.es5.js +0 -28
  514. package/config/rollup.config.js +0 -1
  515. package/config/wdio.conf.js +0 -1
  516. package/dist/RenderScheduler.js +0 -166
  517. package/dist/SVGIconRegistry.js +0 -62
  518. package/dist/animations/config.js +0 -5
  519. package/dist/boot.js +0 -34
  520. package/dist/compatibility/DOMObserver.js +0 -62
  521. package/dist/compatibility/patchNodeValue.js +0 -24
  522. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  523. package/dist/config/RTL.js +0 -31
  524. package/dist/delegate/CustomResize.js +0 -78
  525. package/dist/delegate/NativeResize.js +0 -44
  526. package/dist/features/PropertiesFormatSupport.js +0 -8
  527. package/dist/features/browsersupport/Edge.js +0 -6
  528. package/dist/features/browsersupport/IE11.js +0 -41
  529. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  530. package/dist/renderer/ifDefined.js +0 -21
  531. package/dist/renderer/scopeHTML.js +0 -32
  532. package/dist/resources/bundle.es5.js +0 -212
  533. package/dist/resources/bundle.es5.js.map +0 -1
  534. package/dist/resources/bundle.esm.js +0 -129
  535. package/dist/resources/bundle.esm.js.map +0 -1
  536. package/dist/test-resources/assets/Themes.js +0 -17
  537. package/dist/test-resources/elements/Child.js +0 -35
  538. package/dist/test-resources/elements/Generic.js +0 -84
  539. package/dist/test-resources/elements/GenericExt.js +0 -26
  540. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  541. package/dist/test-resources/elements/Parent.js +0 -37
  542. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  543. package/dist/test-resources/pages/AllTestElements.html +0 -42
  544. package/dist/test-resources/pages/Configuration.html +0 -20
  545. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  546. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  547. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  548. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  549. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  550. package/dist/test-resources/pages/i18n.html +0 -40
  551. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  552. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  553. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  554. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  555. package/dist/test-resources/specs/StaticArea.spec.js +0 -34
  556. package/dist/test-resources/specs/Theming.spec.js +0 -31
  557. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  558. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -96
  559. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  560. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  561. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  562. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  563. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  564. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  565. package/dist/theming/CSSVarsPonyfill.js +0 -24
  566. package/dist/theming/adaptCSSForIE.js +0 -95
  567. package/dist/theming/createComponentStyleTag.js +0 -55
  568. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  569. package/dist/thirdparty/Array.from.js +0 -16
  570. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  571. package/dist/thirdparty/Array.prototype.find.js +0 -46
  572. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  573. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  574. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  575. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  576. package/dist/thirdparty/Number.isInteger.js +0 -5
  577. package/dist/thirdparty/Number.isNaN.js +0 -1
  578. package/dist/thirdparty/Number.parseInt.js +0 -1
  579. package/dist/thirdparty/Object.assign.js +0 -31
  580. package/dist/thirdparty/Object.entries.js +0 -11
  581. package/dist/thirdparty/Symbol.js +0 -2
  582. package/dist/thirdparty/WeakSet.js +0 -27
  583. package/dist/thirdparty/es6-string-methods.js +0 -182
  584. package/dist/thirdparty/events-polyfills.js +0 -89
  585. package/dist/thirdparty/fetch.js +0 -1
  586. package/dist/thirdparty/template.js +0 -600
  587. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  588. package/dist/types/PopupState.js +0 -37
  589. package/dist/util/findNodeOwner.js +0 -35
  590. package/dist/util/getEffectiveAriaLabelText.js +0 -28
  591. package/dist/util/isDescendantOf.js +0 -15
  592. package/dist/util/isNodeClickable.js +0 -19
  593. package/dist/util/isNodeHidden.js +0 -9
  594. package/dist/util/isNodeTabbable.js +0 -28
  595. package/dist/util/isSlot.js +0 -3
  596. package/dist/util/parseProperties.js +0 -89
  597. package/dist/util/setToArray.js +0 -10
  598. package/dist/webcomponentsjs/LICENSE.md +0 -19
  599. package/dist/webcomponentsjs/README.md +0 -229
  600. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  601. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  602. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  603. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  604. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  605. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  606. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  607. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  608. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  609. package/dist/webcomponentsjs/package.json +0 -46
  610. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  611. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  612. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  613. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  614. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  615. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  616. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  617. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  618. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  619. package/package-scripts.js +0 -47
  620. package/src/AssetRegistry.js +0 -10
  621. package/src/CustomElementsRegistry.js +0 -39
  622. package/src/CustomElementsScope.js +0 -108
  623. package/src/Device.js +0 -823
  624. package/src/EventProvider.js +0 -81
  625. package/src/FeaturesRegistry.js +0 -11
  626. package/src/FontFace.js +0 -73
  627. package/src/InitialConfiguration.js +0 -131
  628. package/src/Keys.js +0 -188
  629. package/src/RenderQueue.js +0 -66
  630. package/src/RenderScheduler.js +0 -166
  631. package/src/SVGIconRegistry.js +0 -62
  632. package/src/StaticArea.js +0 -31
  633. package/src/StaticAreaItem.js +0 -108
  634. package/src/SystemCSSVars.js +0 -31
  635. package/src/Theming.js +0 -3
  636. package/src/UI5Element.js +0 -1078
  637. package/src/UI5ElementMetadata.js +0 -212
  638. package/src/animations/AnimationQueue.js +0 -42
  639. package/src/animations/animate.js +0 -53
  640. package/src/animations/config.js +0 -5
  641. package/src/animations/scroll.js +0 -28
  642. package/src/animations/slideDown.js +0 -79
  643. package/src/animations/slideUp.js +0 -71
  644. package/src/asset-registries/Icons.js +0 -31
  645. package/src/asset-registries/LocaleData.js +0 -125
  646. package/src/asset-registries/Themes.js +0 -87
  647. package/src/asset-registries/i18n.js +0 -107
  648. package/src/boot.js +0 -34
  649. package/src/compatibility/DOMObserver.js +0 -62
  650. package/src/compatibility/patchNodeValue.js +0 -24
  651. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  652. package/src/config/AnimationMode.js +0 -23
  653. package/src/config/CalendarType.js +0 -18
  654. package/src/config/FormatSettings.js +0 -13
  655. package/src/config/Language.js +0 -41
  656. package/src/config/NoConflict.js +0 -51
  657. package/src/config/RTL.js +0 -31
  658. package/src/config/Theme.js +0 -28
  659. package/src/delegate/CustomResize.js +0 -78
  660. package/src/delegate/ItemNavigation.js +0 -282
  661. package/src/delegate/NativeResize.js +0 -44
  662. package/src/delegate/ResizeHandler.js +0 -65
  663. package/src/delegate/ScrollEnablement.js +0 -159
  664. package/src/features/OpenUI5Support.js +0 -90
  665. package/src/features/PropertiesFormatSupport.js +0 -8
  666. package/src/features/browsersupport/Edge.js +0 -6
  667. package/src/features/browsersupport/IE11.js +0 -41
  668. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  669. package/src/getSharedResource.js +0 -30
  670. package/src/i18nBundle.js +0 -52
  671. package/src/locale/Locale.js +0 -91
  672. package/src/locale/RTLAwareRegistry.js +0 -14
  673. package/src/locale/applyDirection.js +0 -15
  674. package/src/locale/getLocale.js +0 -31
  675. package/src/locale/languageChange.js +0 -22
  676. package/src/locale/nextFallbackLocale.js +0 -28
  677. package/src/locale/normalizeLocale.js +0 -54
  678. package/src/renderer/LitRenderer.js +0 -31
  679. package/src/renderer/executeTemplate.js +0 -17
  680. package/src/renderer/ifDefined.js +0 -21
  681. package/src/renderer/scopeHTML.js +0 -32
  682. package/src/theming/CSSVarsPonyfill.js +0 -24
  683. package/src/theming/CustomStyle.js +0 -40
  684. package/src/theming/adaptCSSForIE.js +0 -95
  685. package/src/theming/applyTheme.js +0 -81
  686. package/src/theming/createComponentStyleTag.js +0 -55
  687. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  688. package/src/theming/getConstructableStyle.js +0 -29
  689. package/src/theming/getEffectiveStyle.js +0 -23
  690. package/src/theming/getStylesString.js +0 -13
  691. package/src/theming/getThemeDesignerTheme.js +0 -67
  692. package/src/thirdparty/Array.from.js +0 -16
  693. package/src/thirdparty/Array.prototype.fill.js +0 -44
  694. package/src/thirdparty/Array.prototype.find.js +0 -46
  695. package/src/thirdparty/Array.prototype.includes.js +0 -51
  696. package/src/thirdparty/Element.prototype.closest.js +0 -11
  697. package/src/thirdparty/Element.prototype.matches.js +0 -6
  698. package/src/thirdparty/Map.prototype.keys.js +0 -9
  699. package/src/thirdparty/Number.isInteger.js +0 -5
  700. package/src/thirdparty/Number.isNaN.js +0 -1
  701. package/src/thirdparty/Number.parseInt.js +0 -1
  702. package/src/thirdparty/Object.assign.js +0 -31
  703. package/src/thirdparty/Object.entries.js +0 -11
  704. package/src/thirdparty/Symbol.js +0 -2
  705. package/src/thirdparty/WeakSet.js +0 -27
  706. package/src/thirdparty/_merge.js +0 -32
  707. package/src/thirdparty/es6-string-methods.js +0 -182
  708. package/src/thirdparty/events-polyfills.js +0 -89
  709. package/src/thirdparty/fetch.js +0 -1
  710. package/src/thirdparty/isPlainObject.js +0 -18
  711. package/src/thirdparty/merge.js +0 -10
  712. package/src/thirdparty/template.js +0 -600
  713. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  714. package/src/types/AnimationMode.js +0 -7
  715. package/src/types/CSSSize.js +0 -9
  716. package/src/types/CalendarType.js +0 -22
  717. package/src/types/DataType.js +0 -25
  718. package/src/types/Float.js +0 -10
  719. package/src/types/Integer.js +0 -9
  720. package/src/types/ItemNavigationBehavior.js +0 -21
  721. package/src/types/NavigationMode.js +0 -7
  722. package/src/types/PopupState.js +0 -37
  723. package/src/types/ValueState.js +0 -22
  724. package/src/util/FetchHelper.js +0 -31
  725. package/src/util/FocusableElements.js +0 -66
  726. package/src/util/StringHelper.js +0 -26
  727. package/src/util/TabbableElements.js +0 -47
  728. package/src/util/createStyleInHead.js +0 -18
  729. package/src/util/detectNavigatorLanguage.js +0 -13
  730. package/src/util/findNodeOwner.js +0 -35
  731. package/src/util/formatMessage.js +0 -23
  732. package/src/util/getDesigntimePropertyAsArray.js +0 -4
  733. package/src/util/getEffectiveAriaLabelText.js +0 -28
  734. package/src/util/getSingletonElementInstance.js +0 -13
  735. package/src/util/isDescendantOf.js +0 -15
  736. package/src/util/isNodeClickable.js +0 -19
  737. package/src/util/isNodeHidden.js +0 -9
  738. package/src/util/isNodeTabbable.js +0 -28
  739. package/src/util/isSlot.js +0 -3
  740. package/src/util/isValidPropertyName.js +0 -27
  741. package/src/util/parseProperties.js +0 -89
  742. package/src/util/setToArray.js +0 -10
  743. package/src/util/whenDOMReady.js +0 -13
  744. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
package/src/UI5Element.js DELETED
@@ -1,1078 +0,0 @@
1
- import merge from "./thirdparty/merge.js";
2
- import boot from "./boot.js";
3
- import UI5ElementMetadata from "./UI5ElementMetadata.js";
4
- import executeTemplate from "./renderer/executeTemplate.js";
5
- import StaticAreaItem from "./StaticAreaItem.js";
6
- import RenderScheduler from "./RenderScheduler.js";
7
- import { registerTag, isTagRegistered, recordTagRegistrationFailure } from "./CustomElementsRegistry.js";
8
- import DOMObserver from "./compatibility/DOMObserver.js";
9
- import { skipOriginalEvent } from "./config/NoConflict.js";
10
- import { getRTL } from "./config/RTL.js";
11
- import getConstructableStyle from "./theming/getConstructableStyle.js";
12
- import createComponentStyleTag from "./theming/createComponentStyleTag.js";
13
- import getEffectiveStyle from "./theming/getEffectiveStyle.js";
14
- import Integer from "./types/Integer.js";
15
- import Float from "./types/Float.js";
16
- import { kebabToCamelCase, camelToKebabCase } from "./util/StringHelper.js";
17
- import isValidPropertyName from "./util/isValidPropertyName.js";
18
- import isSlot from "./util/isSlot.js";
19
- import { markAsRtlAware } from "./locale/RTLAwareRegistry.js";
20
-
21
- const metadata = {
22
- events: {
23
- "_property-change": {},
24
- },
25
- };
26
-
27
- let autoId = 0;
28
-
29
- const elementTimeouts = new Map();
30
- const uniqueDependenciesCache = new Map();
31
-
32
- const GLOBAL_CONTENT_DENSITY_CSS_VAR = "--_ui5_content_density";
33
- const GLOBAL_DIR_CSS_VAR = "--_ui5_dir";
34
-
35
- /**
36
- * Base class for all UI5 Web Components
37
- *
38
- * @class
39
- * @constructor
40
- * @author SAP SE
41
- * @alias sap.ui.webcomponents.base.UI5Element
42
- * @extends HTMLElement
43
- * @public
44
- */
45
- class UI5Element extends HTMLElement {
46
- constructor() {
47
- super();
48
- this._initializeState();
49
- this._upgradeAllProperties();
50
- this._initializeContainers();
51
- this._upToDate = false;
52
- this._inDOM = false;
53
- this._fullyConnected = false;
54
-
55
- let deferredResolve;
56
- this._domRefReadyPromise = new Promise(resolve => {
57
- deferredResolve = resolve;
58
- });
59
- this._domRefReadyPromise._deferredResolve = deferredResolve;
60
-
61
- this._monitoredChildProps = new Map();
62
- this._firePropertyChange = false;
63
- this._shouldInvalidateParent = false;
64
- }
65
-
66
- /**
67
- * Returns a unique ID for this UI5 Element
68
- *
69
- * @deprecated - This property is not guaranteed in future releases
70
- * @protected
71
- */
72
- get _id() {
73
- if (!this.__id) {
74
- this.__id = `ui5wc_${++autoId}`;
75
- }
76
-
77
- return this.__id;
78
- }
79
-
80
- /**
81
- * @private
82
- */
83
- _initializeContainers() {
84
- const needsShadowDOM = this.constructor._needsShadowDOM();
85
- const needsStaticArea = this.constructor._needsStaticArea();
86
-
87
- // Init Shadow Root
88
- if (needsShadowDOM) {
89
- this.attachShadow({ mode: "open" });
90
- }
91
-
92
- // Init StaticAreaItem only if needed
93
- if (needsStaticArea) {
94
- this.staticAreaItem = new StaticAreaItem(this);
95
- }
96
- }
97
-
98
- /**
99
- * Do not call this method from derivatives of UI5Element, use "onEnterDOM" only
100
- * @private
101
- */
102
- async connectedCallback() {
103
- this.setAttribute(this.constructor.getMetadata().getPureTag(), "");
104
-
105
- const needsShadowDOM = this.constructor._needsShadowDOM();
106
- const slotsAreManaged = this.constructor.getMetadata().slotsAreManaged();
107
-
108
- this._inDOM = true;
109
-
110
- if (slotsAreManaged) {
111
- // always register the observer before yielding control to the main thread (await)
112
- this._startObservingDOMChildren();
113
- await this._processChildren();
114
- }
115
-
116
- // Render the Shadow DOM
117
- if (needsShadowDOM) {
118
- if (!this.shadowRoot) { // Workaround for Firefox74 bug
119
- await Promise.resolve();
120
- }
121
-
122
- if (!this._inDOM) { // Component removed from DOM while _processChildren was running
123
- return;
124
- }
125
-
126
- RenderScheduler.register(this);
127
- RenderScheduler.renderImmediately(this);
128
- this._domRefReadyPromise._deferredResolve();
129
- this._fullyConnected = true;
130
- if (typeof this.onEnterDOM === "function") {
131
- this.onEnterDOM();
132
- }
133
- }
134
- }
135
-
136
- /**
137
- * Do not call this method from derivatives of UI5Element, use "onExitDOM" only
138
- * @private
139
- */
140
- disconnectedCallback() {
141
- const needsShadowDOM = this.constructor._needsShadowDOM();
142
- const needsStaticArea = this.constructor._needsStaticArea();
143
- const slotsAreManaged = this.constructor.getMetadata().slotsAreManaged();
144
-
145
- this._inDOM = false;
146
-
147
- if (slotsAreManaged) {
148
- this._stopObservingDOMChildren();
149
- }
150
-
151
- if (needsShadowDOM) {
152
- RenderScheduler.deregister(this);
153
- if (this._fullyConnected) {
154
- if (typeof this.onExitDOM === "function") {
155
- this.onExitDOM();
156
- }
157
- this._fullyConnected = false;
158
- }
159
- }
160
-
161
- if (needsStaticArea) {
162
- this.staticAreaItem._removeFragmentFromStaticArea();
163
- }
164
-
165
- RenderScheduler.cancelRender(this);
166
- }
167
-
168
- /**
169
- * @private
170
- */
171
- _startObservingDOMChildren() {
172
- const shouldObserveChildren = this.constructor.getMetadata().hasSlots();
173
- if (!shouldObserveChildren) {
174
- return;
175
- }
176
-
177
- const canSlotText = this.constructor.getMetadata().canSlotText();
178
- const mutationObserverOptions = {
179
- childList: true,
180
- subtree: canSlotText,
181
- characterData: true,
182
- };
183
- DOMObserver.observeDOMNode(this, this._processChildren.bind(this), mutationObserverOptions);
184
- }
185
-
186
- /**
187
- * @private
188
- */
189
- _stopObservingDOMChildren() {
190
- DOMObserver.unobserveDOMNode(this);
191
- }
192
-
193
- /**
194
- * Note: this method is also manually called by "compatibility/patchNodeValue.js"
195
- * @private
196
- */
197
- async _processChildren() {
198
- const hasSlots = this.constructor.getMetadata().hasSlots();
199
- if (hasSlots) {
200
- await this._updateSlots();
201
- }
202
- }
203
-
204
- /**
205
- * @private
206
- */
207
- async _updateSlots() {
208
- const slotsMap = this.constructor.getMetadata().getSlots();
209
- const canSlotText = this.constructor.getMetadata().canSlotText();
210
- const domChildren = Array.from(canSlotText ? this.childNodes : this.children);
211
-
212
- // Init the _state object based on the supported slots
213
- for (const [slotName, slotData] of Object.entries(slotsMap)) { // eslint-disable-line
214
- this._clearSlot(slotName, slotData);
215
- }
216
-
217
- const autoIncrementMap = new Map();
218
- const slottedChildrenMap = new Map();
219
-
220
- const allChildrenUpgraded = domChildren.map(async (child, idx) => {
221
- // Determine the type of the child (mainly by the slot attribute)
222
- const slotName = this.constructor._getSlotName(child);
223
- const slotData = slotsMap[slotName];
224
-
225
- // Check if the slotName is supported
226
- if (slotData === undefined) {
227
- const validValues = Object.keys(slotsMap).join(", ");
228
- console.warn(`Unknown slotName: ${slotName}, ignoring`, child, `Valid values are: ${validValues}`); // eslint-disable-line
229
- return;
230
- }
231
-
232
- // For children that need individual slots, calculate them
233
- if (slotData.individualSlots) {
234
- const nextIndex = (autoIncrementMap.get(slotName) || 0) + 1;
235
- autoIncrementMap.set(slotName, nextIndex);
236
- child._individualSlot = `${slotName}-${nextIndex}`;
237
- }
238
-
239
- // Await for not-yet-defined custom elements
240
- if (child instanceof HTMLElement) {
241
- const localName = child.localName;
242
- const isCustomElement = localName.includes("-");
243
- if (isCustomElement) {
244
- const isDefined = window.customElements.get(localName);
245
- if (!isDefined) {
246
- const whenDefinedPromise = window.customElements.whenDefined(localName); // Class registered, but instances not upgraded yet
247
- let timeoutPromise = elementTimeouts.get(localName);
248
- if (!timeoutPromise) {
249
- timeoutPromise = new Promise(resolve => setTimeout(resolve, 1000));
250
- elementTimeouts.set(localName, timeoutPromise);
251
- }
252
- await Promise.race([whenDefinedPromise, timeoutPromise]);
253
- }
254
- window.customElements.upgrade(child);
255
- }
256
- }
257
-
258
- child = this.constructor.getMetadata().constructor.validateSlotValue(child, slotData);
259
-
260
- if (child.isUI5Element && slotData.listenFor) {
261
- this._attachChildPropertyUpdated(child, slotData.listenFor);
262
- }
263
-
264
- if (child.isUI5Element && slotData.invalidateParent) {
265
- child._shouldInvalidateParent = true;
266
- }
267
-
268
- if (isSlot(child)) {
269
- this._attachSlotChange(child);
270
- }
271
-
272
- const propertyName = slotData.propertyName || slotName;
273
-
274
- if (slottedChildrenMap.has(propertyName)) {
275
- slottedChildrenMap.get(propertyName).push({ child, idx });
276
- } else {
277
- slottedChildrenMap.set(propertyName, [{ child, idx }]);
278
- }
279
- });
280
-
281
- await Promise.all(allChildrenUpgraded);
282
-
283
- // Distribute the child in the _state object, keeping the Light DOM order,
284
- // not the order elements are defined.
285
- slottedChildrenMap.forEach((children, slot) => {
286
- this._state[slot] = children.sort((a, b) => a.idx - b.idx).map(_ => _.child);
287
- });
288
- this._invalidate("slots");
289
- }
290
-
291
- /**
292
- * Removes all children from the slot and detaches listeners, if any
293
- * @private
294
- */
295
- _clearSlot(slotName, slotData) {
296
- const propertyName = slotData.propertyName || slotName;
297
-
298
- let children = this._state[propertyName];
299
- if (!Array.isArray(children)) {
300
- children = [children];
301
- }
302
-
303
- children.forEach(child => {
304
- if (child && child.isUI5Element) {
305
- this._detachChildPropertyUpdated(child);
306
- child._shouldInvalidateParent = false;
307
- }
308
-
309
- if (isSlot(child)) {
310
- this._detachSlotChange(child);
311
- }
312
- });
313
-
314
- this._state[propertyName] = [];
315
- this._invalidate(propertyName, []);
316
- }
317
-
318
- /**
319
- * Do not override this method in derivatives of UI5Element
320
- * @private
321
- */
322
- attributeChangedCallback(name, oldValue, newValue) {
323
- const properties = this.constructor.getMetadata().getProperties();
324
- const realName = name.replace(/^ui5-/, "");
325
- const nameInCamelCase = kebabToCamelCase(realName);
326
- if (properties.hasOwnProperty(nameInCamelCase)) { // eslint-disable-line
327
- const propertyTypeClass = properties[nameInCamelCase].type;
328
- if (propertyTypeClass === Boolean) {
329
- newValue = newValue !== null;
330
- }
331
- if (propertyTypeClass === Integer) {
332
- newValue = parseInt(newValue);
333
- }
334
- if (propertyTypeClass === Float) {
335
- newValue = parseFloat(newValue);
336
- }
337
- this[nameInCamelCase] = newValue;
338
- }
339
- }
340
-
341
- /**
342
- * @private
343
- */
344
- _updateAttribute(name, newValue) {
345
- if (!this.constructor.getMetadata().hasAttribute(name)) {
346
- return;
347
- }
348
-
349
- if (typeof newValue === "object") {
350
- return;
351
- }
352
-
353
- const attrName = camelToKebabCase(name);
354
- const attrValue = this.getAttribute(attrName);
355
- if (typeof newValue === "boolean") {
356
- if (newValue === true && attrValue === null) {
357
- this.setAttribute(attrName, "");
358
- } else if (newValue === false && attrValue !== null) {
359
- this.removeAttribute(attrName);
360
- }
361
- } else if (attrValue !== newValue) {
362
- this.setAttribute(attrName, newValue);
363
- }
364
- }
365
-
366
- /**
367
- * @private
368
- */
369
- _upgradeProperty(prop) {
370
- if (this.hasOwnProperty(prop)) { // eslint-disable-line
371
- const value = this[prop];
372
- delete this[prop];
373
- this[prop] = value;
374
- }
375
- }
376
-
377
- /**
378
- * @private
379
- */
380
- _upgradeAllProperties() {
381
- const allProps = this.constructor.getMetadata().getPropertiesList();
382
- allProps.forEach(this._upgradeProperty, this);
383
- }
384
-
385
- /**
386
- * @private
387
- */
388
- _initializeState() {
389
- const defaultState = this.constructor._getDefaultState();
390
- this._state = Object.assign({}, defaultState);
391
- }
392
-
393
- /**
394
- * @private
395
- */
396
- _attachChildPropertyUpdated(child, listenFor) {
397
- const childMetadata = child.constructor.getMetadata(),
398
- slotName = this.constructor._getSlotName(child), // all slotted children have the same configuration
399
- childProperties = childMetadata.getProperties();
400
-
401
- let observedProps = [],
402
- notObservedProps = [];
403
-
404
- if (Array.isArray(listenFor)) {
405
- observedProps = listenFor;
406
- } else {
407
- observedProps = Array.isArray(listenFor.props) ? listenFor.props : Object.keys(childProperties);
408
- notObservedProps = Array.isArray(listenFor.exclude) ? listenFor.exclude : [];
409
- }
410
-
411
- if (!this._monitoredChildProps.has(slotName)) {
412
- this._monitoredChildProps.set(slotName, { observedProps, notObservedProps });
413
- }
414
-
415
- child.addEventListener("_property-change", this._invalidateParentOnPropertyUpdate);
416
- child._firePropertyChange = true;
417
- }
418
-
419
- /**
420
- * @private
421
- */
422
- _detachChildPropertyUpdated(child) {
423
- child.removeEventListener("_property-change", this._invalidateParentOnPropertyUpdate);
424
- child._firePropertyChange = false;
425
- }
426
-
427
- /**
428
- * @private
429
- */
430
- _propertyChange(name, value) {
431
- this._updateAttribute(name, value);
432
-
433
- if (this._firePropertyChange) {
434
- this.dispatchEvent(new CustomEvent("_property-change", {
435
- detail: { name, newValue: value },
436
- composed: false,
437
- bubbles: true,
438
- }));
439
- }
440
- }
441
-
442
- /**
443
- * @private
444
- */
445
- _invalidateParentOnPropertyUpdate(prop) {
446
- // The web component to be invalidated
447
- const parentNode = this.parentNode;
448
- if (!parentNode) {
449
- return;
450
- }
451
-
452
- const slotName = parentNode.constructor._getSlotName(this);
453
- const propsMetadata = parentNode._monitoredChildProps.get(slotName);
454
-
455
- if (!propsMetadata) {
456
- return;
457
- }
458
- const { observedProps, notObservedProps } = propsMetadata;
459
-
460
- if (observedProps.includes(prop.detail.name) && !notObservedProps.includes(prop.detail.name)) {
461
- parentNode._invalidate("_parent_", this);
462
- }
463
- }
464
-
465
- /**
466
- * @private
467
- */
468
- _attachSlotChange(child) {
469
- if (!this._invalidateOnSlotChange) {
470
- this._invalidateOnSlotChange = () => {
471
- this._invalidate("slotchange");
472
- };
473
- }
474
- child.addEventListener("slotchange", this._invalidateOnSlotChange);
475
- }
476
-
477
- /**
478
- * @private
479
- */
480
- _detachSlotChange(child) {
481
- child.removeEventListener("slotchange", this._invalidateOnSlotChange);
482
- }
483
-
484
- /**
485
- * Asynchronously re-renders an already rendered web component
486
- * @private
487
- */
488
- _invalidate() {
489
- if (this._shouldInvalidateParent) {
490
- this.parentNode._invalidate();
491
- }
492
-
493
- if (!this._upToDate) {
494
- // console.log("already invalidated", this, ...arguments);
495
- return;
496
- }
497
-
498
- if (this.getDomRef() && !this._suppressInvalidation) {
499
- this._upToDate = false;
500
- // console.log("INVAL", this, ...arguments);
501
- RenderScheduler.renderDeferred(this);
502
- }
503
- }
504
-
505
- /**
506
- * Do not call this method directly, only intended to be called by RenderScheduler.js
507
- * @protected
508
- */
509
- _render() {
510
- const hasIndividualSlots = this.constructor.getMetadata().hasIndividualSlots();
511
-
512
- // suppress invalidation to prevent state changes scheduling another rendering
513
- this._suppressInvalidation = true;
514
-
515
- if (typeof this.onBeforeRendering === "function") {
516
- this.onBeforeRendering();
517
- }
518
-
519
- // Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered
520
- if (this._onComponentStateFinalized) {
521
- this._onComponentStateFinalized();
522
- }
523
-
524
- // resume normal invalidation handling
525
- delete this._suppressInvalidation;
526
-
527
- // Update the shadow root with the render result
528
- // console.log(this.getDomRef() ? "RE-RENDER" : "FIRST RENDER", this);
529
- this._upToDate = true;
530
- this._updateShadowRoot();
531
-
532
- if (this._shouldUpdateFragment()) {
533
- this.staticAreaItem._updateFragment(this);
534
- }
535
-
536
- // Safari requires that children get the slot attribute only after the slot tags have been rendered in the shadow DOM
537
- if (hasIndividualSlots) {
538
- this._assignIndividualSlotsToChildren();
539
- }
540
-
541
- // Call the onAfterRendering hook
542
- if (typeof this.onAfterRendering === "function") {
543
- this.onAfterRendering();
544
- }
545
- }
546
-
547
- /**
548
- * @private
549
- */
550
- _updateShadowRoot() {
551
- if (!this.constructor._needsShadowDOM()) {
552
- return;
553
- }
554
-
555
- let styleToPrepend;
556
- const renderResult = executeTemplate(this.constructor.template, this);
557
-
558
- // IE11, Edge
559
- if (window.ShadyDOM) {
560
- createComponentStyleTag(this.constructor);
561
- }
562
-
563
- // Chrome
564
- if (document.adoptedStyleSheets) {
565
- this.shadowRoot.adoptedStyleSheets = getConstructableStyle(this.constructor);
566
- }
567
-
568
- // FF, Safari
569
- if (!document.adoptedStyleSheets && !window.ShadyDOM) {
570
- styleToPrepend = getEffectiveStyle(this.constructor);
571
- }
572
-
573
- this.constructor.render(renderResult, this.shadowRoot, styleToPrepend, { eventContext: this });
574
- }
575
-
576
- /**
577
- * @private
578
- */
579
- _assignIndividualSlotsToChildren() {
580
- const domChildren = Array.from(this.children);
581
-
582
- domChildren.forEach(child => {
583
- if (child._individualSlot) {
584
- child.setAttribute("slot", child._individualSlot);
585
- }
586
- });
587
- }
588
-
589
- /**
590
- * @private
591
- */
592
- _waitForDomRef() {
593
- return this._domRefReadyPromise;
594
- }
595
-
596
- /**
597
- * Returns the DOM Element inside the Shadow Root that corresponds to the opening tag in the UI5 Web Component's template
598
- * Use this method instead of "this.shadowRoot" to read the Shadow DOM, if ever necessary
599
- * @public
600
- */
601
- getDomRef() {
602
- if (!this.shadowRoot || this.shadowRoot.children.length === 0) {
603
- return;
604
- }
605
-
606
- return this.shadowRoot.children.length === 1
607
- ? this.shadowRoot.children[0] : this.shadowRoot.children[1];
608
- }
609
-
610
- /**
611
- * Returns the DOM Element marked with "data-sap-focus-ref" inside the template.
612
- * This is the element that will receive the focus by default.
613
- * @public
614
- */
615
- getFocusDomRef() {
616
- const domRef = this.getDomRef();
617
- if (domRef) {
618
- const focusRef = domRef.querySelector("[data-sap-focus-ref]");
619
- return focusRef || domRef;
620
- }
621
- }
622
-
623
- /**
624
- * Use this method in order to get a reference to element in the shadow root of a web component
625
- * @public
626
- * @param {String} refName Defines the name of the stable DOM ref
627
- */
628
- getStableDomRef(refName) {
629
- return this.getDomRef().querySelector(`[data-ui5-stable=${refName}]`);
630
- }
631
-
632
- /**
633
- * Set the focus to the element, returned by "getFocusDomRef()" (marked by "data-sap-focus-ref")
634
- * @public
635
- */
636
- async focus() {
637
- await this._waitForDomRef();
638
-
639
- const focusDomRef = this.getFocusDomRef();
640
-
641
- if (focusDomRef && typeof focusDomRef.focus === "function") {
642
- focusDomRef.focus();
643
- }
644
- }
645
-
646
- /**
647
- *
648
- * @public
649
- * @param name - name of the event
650
- * @param data - additional data for the event
651
- * @param cancelable - true, if the user can call preventDefault on the event object
652
- * @param bubbles - true, if the event bubbles
653
- * @returns {boolean} false, if the event was cancelled (preventDefault called), true otherwise
654
- */
655
- fireEvent(name, data, cancelable = false, bubbles = true) {
656
- const eventResult = this._fireEvent(name, data, cancelable, bubbles);
657
- const camelCaseEventName = kebabToCamelCase(name);
658
-
659
- if (camelCaseEventName !== name) {
660
- return eventResult && this._fireEvent(camelCaseEventName, data, cancelable);
661
- }
662
-
663
- return eventResult;
664
- }
665
-
666
- _fireEvent(name, data, cancelable = false, bubbles = true) {
667
- let compatEventResult = true; // Initialized to true, because if the event is not fired at all, it should be considered "not-prevented"
668
-
669
- const noConflictEvent = new CustomEvent(`ui5-${name}`, {
670
- detail: data,
671
- composed: false,
672
- bubbles,
673
- cancelable,
674
- });
675
-
676
- // This will be false if the compat event is prevented
677
- compatEventResult = this.dispatchEvent(noConflictEvent);
678
-
679
- if (skipOriginalEvent(name)) {
680
- return compatEventResult;
681
- }
682
-
683
- const customEvent = new CustomEvent(name, {
684
- detail: data,
685
- composed: false,
686
- bubbles,
687
- cancelable,
688
- });
689
-
690
- // This will be false if the normal event is prevented
691
- const normalEventResult = this.dispatchEvent(customEvent);
692
-
693
- // Return false if any of the two events was prevented (its result was false).
694
- return normalEventResult && compatEventResult;
695
- }
696
-
697
- /**
698
- * Returns the actual children, associated with a slot.
699
- * Useful when there are transitive slots in nested component scenarios and you don't want to get a list of the slots, but rather of their content.
700
- * @public
701
- */
702
- getSlottedNodes(slotName) {
703
- const reducer = (acc, curr) => {
704
- if (!isSlot(curr)) {
705
- return acc.concat([curr]);
706
- }
707
- return acc.concat(curr.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement));
708
- };
709
-
710
- return this[slotName].reduce(reducer, []);
711
- }
712
-
713
- get isCompact() {
714
- return getComputedStyle(this).getPropertyValue(GLOBAL_CONTENT_DENSITY_CSS_VAR) === "compact";
715
- }
716
-
717
- /**
718
- * Determines whether the component should be rendered in RTL mode or not.
719
- * Returns: "rtl", "ltr" or undefined
720
- *
721
- * @public
722
- * @returns {String|undefined}
723
- */
724
- get effectiveDir() {
725
- markAsRtlAware(this.constructor); // if a UI5 Element calls this method, it's considered to be rtl-aware
726
-
727
- const doc = window.document;
728
- const dirValues = ["ltr", "rtl"]; // exclude "auto" and "" from all calculations
729
- const locallyAppliedDir = getComputedStyle(this).getPropertyValue(GLOBAL_DIR_CSS_VAR);
730
-
731
- // In that order, inspect the CSS Var (for modern browsers), the element itself, html and body (for IE fallback)
732
- if (dirValues.includes(locallyAppliedDir)) {
733
- return locallyAppliedDir;
734
- }
735
- if (dirValues.includes(this.dir)) {
736
- return this.dir;
737
- }
738
- if (dirValues.includes(doc.documentElement.dir)) {
739
- return doc.documentElement.dir;
740
- }
741
- if (dirValues.includes(doc.body.dir)) {
742
- return doc.body.dir;
743
- }
744
-
745
- // Finally, check the configuration for explicitly set RTL or language-implied RTL
746
- return getRTL() ? "rtl" : undefined;
747
- }
748
-
749
- updateStaticAreaItemContentDensity() {
750
- if (this.staticAreaItem) {
751
- this.staticAreaItem._updateContentDensity(this.isCompact);
752
- }
753
- }
754
-
755
- /**
756
- * Used to duck-type UI5 elements without using instanceof
757
- * @returns {boolean}
758
- * @public
759
- */
760
- get isUI5Element() {
761
- return true;
762
- }
763
-
764
- /**
765
- * Do not override this method in derivatives of UI5Element, use metadata properties instead
766
- * @private
767
- */
768
- static get observedAttributes() {
769
- return this.getMetadata().getAttributesList();
770
- }
771
-
772
- /**
773
- * @private
774
- */
775
- static _getSlotName(child) {
776
- // Text nodes can only go to the default slot
777
- if (!(child instanceof HTMLElement)) {
778
- return "default";
779
- }
780
-
781
- // Discover the slot based on the real slot name (f.e. footer => footer, or content-32 => content)
782
- const slot = child.getAttribute("slot");
783
- if (slot) {
784
- const match = slot.match(/^(.+?)-\d+$/);
785
- return match ? match[1] : slot;
786
- }
787
-
788
- // Use default slot as a fallback
789
- return "default";
790
- }
791
-
792
- /**
793
- * @private
794
- */
795
- static _needsShadowDOM() {
796
- return !!this.template;
797
- }
798
-
799
- _shouldUpdateFragment() {
800
- return this.constructor._needsStaticArea() && this.staticAreaItem.isRendered();
801
- }
802
-
803
- /**
804
- * @private
805
- */
806
- static _needsStaticArea() {
807
- return typeof this.staticAreaTemplate === "function";
808
- }
809
-
810
- /**
811
- * @public
812
- */
813
- getStaticAreaItemDomRef() {
814
- return this.staticAreaItem.getDomRef();
815
- }
816
-
817
- /**
818
- * @private
819
- */
820
- static _getDefaultState() {
821
- if (this._defaultState) {
822
- return this._defaultState;
823
- }
824
-
825
- const MetadataClass = this.getMetadata();
826
- const defaultState = {};
827
- const slotsAreManaged = MetadataClass.slotsAreManaged();
828
-
829
- // Initialize properties
830
- const props = MetadataClass.getProperties();
831
- for (const propName in props) { // eslint-disable-line
832
- const propType = props[propName].type;
833
- const propDefaultValue = props[propName].defaultValue;
834
-
835
- if (propType === Boolean) {
836
- defaultState[propName] = false;
837
-
838
- if (propDefaultValue !== undefined) {
839
- console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default"); // eslint-disable-line
840
- }
841
- } else if (props[propName].multiple) {
842
- defaultState[propName] = [];
843
- } else if (propType === Object) {
844
- defaultState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : {};
845
- } else if (propType === String) {
846
- defaultState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : "";
847
- } else {
848
- defaultState[propName] = propDefaultValue;
849
- }
850
- }
851
-
852
- // Initialize slots
853
- if (slotsAreManaged) {
854
- const slots = MetadataClass.getSlots();
855
- for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
856
- const propertyName = slotData.propertyName || slotName;
857
- defaultState[propertyName] = [];
858
- }
859
- }
860
-
861
- this._defaultState = defaultState;
862
- return defaultState;
863
- }
864
-
865
- /**
866
- * @private
867
- */
868
- static _generateAccessors() {
869
- const proto = this.prototype;
870
- const slotsAreManaged = this.getMetadata().slotsAreManaged();
871
-
872
- // Properties
873
- const properties = this.getMetadata().getProperties();
874
- for (const [prop, propData] of Object.entries(properties)) { // eslint-disable-line
875
- if (!isValidPropertyName(prop)) {
876
- throw new Error(`"${prop}" is not a valid property name. Use a name that does not collide with DOM APIs`);
877
- }
878
-
879
- if (propData.type === Boolean && propData.defaultValue) {
880
- throw new Error(`Cannot set a default value for property "${prop}". All booleans are false by default.`);
881
- }
882
-
883
- if (propData.type === Array) {
884
- throw new Error(`Wrong type for property "${prop}". Properties cannot be of type Array - use "multiple: true" and set "type" to the single value type, such as "String", "Object", etc...`);
885
- }
886
-
887
- if (propData.type === Object && propData.defaultValue) {
888
- throw new Error(`Cannot set a default value for property "${prop}". All properties of type "Object" are empty objects by default.`);
889
- }
890
-
891
- if (propData.multiple && propData.defaultValue) {
892
- throw new Error(`Cannot set a default value for property "${prop}". All multiple properties are empty arrays by default.`);
893
- }
894
-
895
- Object.defineProperty(proto, prop, {
896
- get() {
897
- if (this._state[prop] !== undefined) {
898
- return this._state[prop];
899
- }
900
-
901
- const propDefaultValue = propData.defaultValue;
902
-
903
- if (propData.type === Boolean) {
904
- return false;
905
- } else if (propData.type === String) { // eslint-disable-line
906
- return propDefaultValue;
907
- } else if (propData.multiple) { // eslint-disable-line
908
- return [];
909
- } else {
910
- return propDefaultValue;
911
- }
912
- },
913
- set(value) {
914
- value = this.constructor.getMetadata().constructor.validatePropertyValue(value, propData);
915
-
916
- const oldState = this._state[prop];
917
-
918
- if (oldState !== value) {
919
- this._state[prop] = value;
920
- this._invalidate(prop, value);
921
- this._propertyChange(prop, value);
922
- }
923
- },
924
- });
925
- }
926
-
927
- // Slots
928
- if (slotsAreManaged) {
929
- const slots = this.getMetadata().getSlots();
930
- for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
931
- if (!isValidPropertyName(slotName)) {
932
- throw new Error(`"${slotName}" is not a valid property name. Use a name that does not collide with DOM APIs`);
933
- }
934
-
935
- const propertyName = slotData.propertyName || slotName;
936
- Object.defineProperty(proto, propertyName, {
937
- get() {
938
- if (this._state[propertyName] !== undefined) {
939
- return this._state[propertyName];
940
- }
941
- return [];
942
- },
943
- set() {
944
- throw new Error("Cannot set slots directly, use the DOM APIs");
945
- },
946
- });
947
- }
948
- }
949
- }
950
-
951
- /**
952
- * Returns the metadata object for this UI5 Web Component Class
953
- * @protected
954
- */
955
- static get metadata() {
956
- return metadata;
957
- }
958
-
959
- /**
960
- * Returns the CSS for this UI5 Web Component Class
961
- * @protected
962
- */
963
- static get styles() {
964
- return "";
965
- }
966
-
967
- /**
968
- * Returns the Static Area CSS for this UI5 Web Component Class
969
- * @protected
970
- */
971
- static get staticAreaStyles() {
972
- return "";
973
- }
974
-
975
- /**
976
- * Returns an array with the dependencies for this UI5 Web Component, which could be:
977
- * - composed components (used in its shadow root or static area item)
978
- * - slotted components that the component may need to communicate with
979
- *
980
- * @protected
981
- */
982
- static get dependencies() {
983
- return [];
984
- }
985
-
986
- /**
987
- * Returns a list of the unique dependencies for this UI5 Web Component
988
- *
989
- * @public
990
- */
991
- static getUniqueDependencies() {
992
- if (!uniqueDependenciesCache.has(this)) {
993
- const filtered = this.dependencies.filter((dep, index, deps) => deps.indexOf(dep) === index);
994
- uniqueDependenciesCache.set(this, filtered);
995
- }
996
-
997
- return uniqueDependenciesCache.get(this);
998
- }
999
-
1000
- /**
1001
- * Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved
1002
- *
1003
- * @returns {Promise<any[]>}
1004
- */
1005
- static whenDependenciesDefined() {
1006
- return Promise.all(this.getUniqueDependencies().map(dep => dep.define()));
1007
- }
1008
-
1009
- /**
1010
- * Hook that will be called upon custom element definition
1011
- *
1012
- * @protected
1013
- * @returns {Promise<void>}
1014
- */
1015
- static async onDefine() {
1016
- return Promise.resolve();
1017
- }
1018
-
1019
- /**
1020
- * Registers a UI5 Web Component in the browser window object
1021
- * @public
1022
- * @returns {Promise<UI5Element>}
1023
- */
1024
- static async define() {
1025
- await boot();
1026
-
1027
- await Promise.all([
1028
- this.whenDependenciesDefined(),
1029
- this.onDefine(),
1030
- ]);
1031
-
1032
- const tag = this.getMetadata().getTag();
1033
- const altTag = this.getMetadata().getAltTag();
1034
-
1035
- const definedLocally = isTagRegistered(tag);
1036
- const definedGlobally = customElements.get(tag);
1037
-
1038
- if (definedGlobally && !definedLocally) {
1039
- recordTagRegistrationFailure(tag);
1040
- } else if (!definedGlobally) {
1041
- this._generateAccessors();
1042
- registerTag(tag);
1043
- window.customElements.define(tag, this);
1044
-
1045
- if (altTag && !customElements.get(altTag)) {
1046
- class oldClassName extends this {}
1047
- registerTag(altTag);
1048
- window.customElements.define(altTag, oldClassName);
1049
- }
1050
- }
1051
- return this;
1052
- }
1053
-
1054
- /**
1055
- * Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents')
1056
- * Note: not to be confused with the "get metadata()" method, which returns an object for this class's metadata only
1057
- * @public
1058
- * @returns {UI5ElementMetadata}
1059
- */
1060
- static getMetadata() {
1061
- if (this.hasOwnProperty("_metadata")) { // eslint-disable-line
1062
- return this._metadata;
1063
- }
1064
-
1065
- const metadataObjects = [this.metadata];
1066
- let klass = this; // eslint-disable-line
1067
- while (klass !== UI5Element) {
1068
- klass = Object.getPrototypeOf(klass);
1069
- metadataObjects.unshift(klass.metadata);
1070
- }
1071
- const mergedMetadata = merge({}, ...metadataObjects);
1072
-
1073
- this._metadata = new UI5ElementMetadata(mergedMetadata);
1074
- return this._metadata;
1075
- }
1076
- }
1077
-
1078
- export default UI5Element;