@ui5/webcomponents-base 0.0.0-7a547f8cc → 0.0.0-7c7170d4a

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 (551) hide show
  1. package/.npsrc.json +3 -0
  2. package/CHANGELOG.md +1273 -0
  3. package/README.md +5 -8
  4. package/config/wdio.conf.cjs +392 -0
  5. package/dist/.tsbuildinfo +1 -0
  6. package/dist/AssetRegistry.d.ts +2 -2
  7. package/dist/AssetRegistry.js +2 -2
  8. package/dist/AssetRegistry.js.map +1 -1
  9. package/dist/Boot.d.ts +6 -4
  10. package/dist/Boot.js +31 -6
  11. package/dist/Boot.js.map +1 -1
  12. package/dist/CustomElementsRegistry.js.map +1 -1
  13. package/dist/CustomElementsScope.d.ts +4 -4
  14. package/dist/CustomElementsScope.js +2 -2
  15. package/dist/CustomElementsScope.js.map +1 -1
  16. package/dist/CustomElementsScopeUtils.d.ts +8 -1
  17. package/dist/CustomElementsScopeUtils.js +13 -1
  18. package/dist/CustomElementsScopeUtils.js.map +1 -1
  19. package/dist/DOMObserver.js.map +1 -1
  20. package/dist/Device.d.ts +2 -2
  21. package/dist/Device.js +14 -12
  22. package/dist/Device.js.map +1 -1
  23. package/dist/EventProvider.js +1 -1
  24. package/dist/EventProvider.js.map +1 -1
  25. package/dist/FeaturesRegistry.js.map +1 -1
  26. package/dist/FontFace.js +1 -1
  27. package/dist/FontFace.js.map +1 -1
  28. package/dist/IgnoreCustomElements.d.ts +25 -0
  29. package/dist/IgnoreCustomElements.js +37 -0
  30. package/dist/IgnoreCustomElements.js.map +1 -0
  31. package/dist/InitialConfiguration.d.ts +7 -2
  32. package/dist/InitialConfiguration.js +16 -6
  33. package/dist/InitialConfiguration.js.map +1 -1
  34. package/dist/Keys.d.ts +7 -1
  35. package/dist/Keys.js +113 -106
  36. package/dist/Keys.js.map +1 -1
  37. package/dist/ManagedStyles.d.ts +5 -4
  38. package/dist/ManagedStyles.js +54 -52
  39. package/dist/ManagedStyles.js.map +1 -1
  40. package/dist/MarkedEvents.js.map +1 -1
  41. package/dist/MediaRange.d.ts +6 -12
  42. package/dist/MediaRange.js +21 -31
  43. package/dist/MediaRange.js.map +1 -1
  44. package/dist/PropertiesFileFormat.js.map +1 -1
  45. package/dist/Render.js.map +1 -1
  46. package/dist/RenderQueue.js.map +1 -1
  47. package/dist/Runtimes.js.map +1 -1
  48. package/dist/StaticArea.d.ts +3 -0
  49. package/dist/StaticArea.js +4 -3
  50. package/dist/StaticArea.js.map +1 -1
  51. package/dist/SystemCSSVars.js.map +1 -1
  52. package/dist/Theming.js.map +1 -1
  53. package/dist/UI5Element.d.ts +59 -58
  54. package/dist/UI5Element.js +165 -116
  55. package/dist/UI5Element.js.map +1 -1
  56. package/dist/UI5ElementMetadata.d.ts +13 -13
  57. package/dist/UI5ElementMetadata.js +26 -15
  58. package/dist/UI5ElementMetadata.js.map +1 -1
  59. package/dist/animations/AnimationQueue.js.map +1 -1
  60. package/dist/animations/animate.js.map +1 -1
  61. package/dist/animations/scroll.js.map +1 -1
  62. package/dist/animations/slideDown.js.map +1 -1
  63. package/dist/animations/slideUp.js.map +1 -1
  64. package/dist/asset-registries/Icons.d.ts +22 -13
  65. package/dist/asset-registries/Icons.js +63 -31
  66. package/dist/asset-registries/Icons.js.map +1 -1
  67. package/dist/asset-registries/Illustrations.d.ts +3 -1
  68. package/dist/asset-registries/Illustrations.js +51 -20
  69. package/dist/asset-registries/Illustrations.js.map +1 -1
  70. package/dist/asset-registries/LocaleData.js +1 -1
  71. package/dist/asset-registries/LocaleData.js.map +1 -1
  72. package/dist/asset-registries/Themes.d.ts +5 -3
  73. package/dist/asset-registries/Themes.js +28 -10
  74. package/dist/asset-registries/Themes.js.map +1 -1
  75. package/dist/asset-registries/i18n.d.ts +2 -2
  76. package/dist/asset-registries/i18n.js +12 -5
  77. package/dist/asset-registries/i18n.js.map +1 -1
  78. package/dist/asset-registries/util/IconCollectionsAlias.d.ts +30 -0
  79. package/dist/asset-registries/util/IconCollectionsAlias.js +37 -0
  80. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
  81. package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
  82. package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
  83. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
  84. package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
  85. package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
  86. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
  87. package/dist/config/AnimationMode.d.ts +2 -2
  88. package/dist/config/AnimationMode.js +2 -1
  89. package/dist/config/AnimationMode.js.map +1 -1
  90. package/dist/config/CalendarType.d.ts +8 -1
  91. package/dist/config/CalendarType.js +18 -2
  92. package/dist/config/CalendarType.js.map +1 -1
  93. package/dist/config/FormatSettings.d.ts +5 -1
  94. package/dist/config/FormatSettings.js +5 -1
  95. package/dist/config/FormatSettings.js.map +1 -1
  96. package/dist/config/Icons.d.ts +31 -21
  97. package/dist/config/Icons.js +28 -32
  98. package/dist/config/Icons.js.map +1 -1
  99. package/dist/config/Language.d.ts +11 -2
  100. package/dist/config/Language.js +19 -4
  101. package/dist/config/Language.js.map +1 -1
  102. package/dist/config/NoConflict.js +1 -0
  103. package/dist/config/NoConflict.js.map +1 -1
  104. package/dist/config/Theme.d.ts +16 -5
  105. package/dist/config/Theme.js +35 -9
  106. package/dist/config/Theme.js.map +1 -1
  107. package/dist/config/ThemeRoot.d.ts +27 -0
  108. package/dist/config/ThemeRoot.js +57 -0
  109. package/dist/config/ThemeRoot.js.map +1 -0
  110. package/dist/config/Timezone.d.ts +17 -0
  111. package/dist/config/Timezone.js +30 -0
  112. package/dist/config/Timezone.js.map +1 -0
  113. package/dist/connectToComponent.d.ts +9 -0
  114. package/dist/connectToComponent.js +59 -0
  115. package/dist/connectToComponent.js.map +1 -0
  116. package/dist/css/FontFace.css +47 -17
  117. package/dist/css/SystemCSSVars.css +0 -8
  118. package/dist/decorators/customElement.d.ts +17 -2
  119. package/dist/decorators/customElement.js +31 -5
  120. package/dist/decorators/customElement.js.map +1 -1
  121. package/dist/decorators/event.d.ts +5 -2
  122. package/dist/decorators/event.js +6 -6
  123. package/dist/decorators/event.js.map +1 -1
  124. package/dist/decorators/property.js +6 -6
  125. package/dist/decorators/property.js.map +1 -1
  126. package/dist/decorators/slot.js +9 -9
  127. package/dist/decorators/slot.js.map +1 -1
  128. package/dist/decorators.d.ts +5 -0
  129. package/dist/decorators.js +6 -0
  130. package/dist/decorators.js.map +1 -0
  131. package/dist/delegate/ItemNavigation.d.ts +9 -8
  132. package/dist/delegate/ItemNavigation.js +13 -14
  133. package/dist/delegate/ItemNavigation.js.map +1 -1
  134. package/dist/delegate/ResizeHandler.d.ts +4 -6
  135. package/dist/delegate/ResizeHandler.js +11 -11
  136. package/dist/delegate/ResizeHandler.js.map +1 -1
  137. package/dist/delegate/ScrollEnablement.js +2 -2
  138. package/dist/delegate/ScrollEnablement.js.map +1 -1
  139. package/dist/features/F6Navigation.js.map +1 -1
  140. package/dist/features/InputElementsFormSupport.d.ts +18 -0
  141. package/dist/features/InputElementsFormSupport.js +40 -0
  142. package/dist/features/InputElementsFormSupport.js.map +1 -0
  143. package/dist/features/LegacyDateFormats.d.ts +18 -0
  144. package/dist/features/LegacyDateFormats.js +20 -0
  145. package/dist/features/LegacyDateFormats.js.map +1 -0
  146. package/dist/features/OpenUI5Element.js.map +1 -1
  147. package/dist/features/OpenUI5Enablement.d.ts +1 -1
  148. package/dist/features/OpenUI5Enablement.js.map +1 -1
  149. package/dist/features/OpenUI5Support.d.ts +16 -5
  150. package/dist/features/OpenUI5Support.js +89 -46
  151. package/dist/features/OpenUI5Support.js.map +1 -1
  152. package/dist/features/patchPatcher.d.ts +11 -0
  153. package/dist/features/patchPatcher.js +11 -0
  154. package/dist/features/patchPatcher.js.map +1 -0
  155. package/dist/features/patchPopup.d.ts +14 -0
  156. package/dist/features/patchPopup.js +50 -0
  157. package/dist/features/patchPopup.js.map +1 -0
  158. package/dist/generated/AssetParameters.d.ts +6 -0
  159. package/dist/generated/AssetParameters.js +4 -9
  160. package/dist/generated/AssetParameters.js.map +1 -0
  161. package/dist/generated/VersionInfo.d.ts +10 -0
  162. package/dist/generated/VersionInfo.js +9 -8
  163. package/dist/generated/VersionInfo.js.map +1 -0
  164. package/dist/generated/css/BusyIndicator.css.js.map +1 -1
  165. package/dist/generated/css/FontFace.css.js +1 -1
  166. package/dist/generated/css/FontFace.css.js.map +1 -1
  167. package/dist/generated/css/OverrideFontFace.css.js.map +1 -1
  168. package/dist/generated/css/SystemCSSVars.css.js +1 -1
  169. package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
  170. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +4 -0
  171. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +8 -10
  172. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +1 -0
  173. package/dist/getSharedResource.d.ts +1 -1
  174. package/dist/getSharedResource.js +8 -2
  175. package/dist/getSharedResource.js.map +1 -1
  176. package/dist/global.d.ts +2 -0
  177. package/dist/i18nBundle.d.ts +2 -4
  178. package/dist/i18nBundle.js +3 -5
  179. package/dist/i18nBundle.js.map +1 -1
  180. package/dist/locale/Locale.js.map +1 -1
  181. package/dist/locale/RTLAwareRegistry.d.ts +1 -1
  182. package/dist/locale/RTLAwareRegistry.js.map +1 -1
  183. package/dist/locale/applyDirection.d.ts +3 -2
  184. package/dist/locale/applyDirection.js +3 -2
  185. package/dist/locale/applyDirection.js.map +1 -1
  186. package/dist/locale/directionChange.js.map +1 -1
  187. package/dist/locale/getEffectiveDir.d.ts +1 -1
  188. package/dist/locale/getEffectiveDir.js +3 -19
  189. package/dist/locale/getEffectiveDir.js.map +1 -1
  190. package/dist/locale/getLocale.js.map +1 -1
  191. package/dist/locale/languageChange.js.map +1 -1
  192. package/dist/locale/nextFallbackLocale.js.map +1 -1
  193. package/dist/locale/normalizeLocale.js.map +1 -1
  194. package/dist/locale/timezoneChange.d.ts +5 -0
  195. package/dist/renderer/LitRenderer.d.ts +5 -5
  196. package/dist/renderer/LitRenderer.js +2 -8
  197. package/dist/renderer/LitRenderer.js.map +1 -1
  198. package/dist/renderer/directives/style-map.d.ts +13 -0
  199. package/dist/renderer/directives/style-map.js +59 -59
  200. package/dist/renderer/directives/style-map.js.map +1 -0
  201. package/dist/renderer/executeTemplate.d.ts +8 -0
  202. package/dist/renderer/executeTemplate.js +2 -1
  203. package/dist/renderer/executeTemplate.js.map +1 -1
  204. package/dist/sap/base/Log.js +698 -188
  205. package/dist/sap/base/assert.js +28 -1
  206. package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
  207. package/dist/sap/base/security/URLListValidator.js +253 -6
  208. package/dist/sap/base/security/encodeCSS.js +34 -8
  209. package/dist/sap/base/security/encodeXML.js +47 -17
  210. package/dist/sap/base/security/sanitizeHTML.js +35 -13
  211. package/dist/sap/base/strings/toHex.js +27 -2
  212. package/dist/sap/base/util/now.js +24 -3
  213. package/dist/sap/base/util/uid.js +27 -0
  214. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +112 -97
  215. package/dist/ssr-dom-shim.d.ts +1 -0
  216. package/dist/ssr-dom-shim.js +12 -0
  217. package/dist/ssr-dom-shim.js.map +1 -0
  218. package/dist/ssr-dom.d.ts +0 -0
  219. package/dist/ssr-dom.js +0 -0
  220. package/dist/theming/CustomStyle.js.map +1 -1
  221. package/dist/theming/ThemeLoaded.js.map +1 -1
  222. package/dist/theming/ThemeRegistered.d.ts +4 -0
  223. package/dist/theming/ThemeRegistered.js +11 -0
  224. package/dist/theming/ThemeRegistered.js.map +1 -0
  225. package/dist/theming/applyTheme.js +8 -7
  226. package/dist/theming/applyTheme.js.map +1 -1
  227. package/dist/theming/getConstructableStyle.d.ts +1 -1
  228. package/dist/theming/getConstructableStyle.js +3 -3
  229. package/dist/theming/getConstructableStyle.js.map +1 -1
  230. package/dist/theming/getEffectiveStyle.d.ts +1 -1
  231. package/dist/theming/getEffectiveStyle.js +5 -12
  232. package/dist/theming/getEffectiveStyle.js.map +1 -1
  233. package/dist/theming/getStylesString.d.ts +1 -1
  234. package/dist/theming/getStylesString.js.map +1 -1
  235. package/dist/theming/getThemeDesignerTheme.js.map +1 -1
  236. package/dist/thirdparty/_merge.js.map +1 -1
  237. package/dist/thirdparty/isPlainObject.js.map +1 -1
  238. package/dist/thirdparty/merge.js.map +1 -1
  239. package/dist/types/AnimationMode.d.ts +0 -8
  240. package/dist/types/AnimationMode.js +0 -8
  241. package/dist/types/AnimationMode.js.map +1 -1
  242. package/dist/types/AriaHasPopup.d.ts +32 -0
  243. package/dist/types/AriaHasPopup.js +34 -0
  244. package/dist/types/AriaHasPopup.js.map +1 -0
  245. package/dist/types/AriaLandmarkRole.d.ts +79 -0
  246. package/dist/types/AriaLandmarkRole.js +81 -0
  247. package/dist/types/AriaLandmarkRole.js.map +1 -0
  248. package/dist/types/AriaRole.d.ts +27 -0
  249. package/dist/types/AriaRole.js +29 -0
  250. package/dist/types/AriaRole.js.map +1 -0
  251. package/dist/types/CSSColor.d.ts +0 -5
  252. package/dist/types/CSSColor.js +0 -5
  253. package/dist/types/CSSColor.js.map +1 -1
  254. package/dist/types/CSSSize.d.ts +11 -0
  255. package/dist/types/CSSSize.js +14 -0
  256. package/dist/types/CSSSize.js.map +1 -0
  257. package/dist/types/CalendarType.d.ts +0 -9
  258. package/dist/types/CalendarType.js +0 -9
  259. package/dist/types/CalendarType.js.map +1 -1
  260. package/dist/types/DOMReference.d.ts +1 -5
  261. package/dist/types/DOMReference.js +1 -5
  262. package/dist/types/DOMReference.js.map +1 -1
  263. package/dist/types/DataType.d.ts +1 -6
  264. package/dist/types/DataType.js +1 -6
  265. package/dist/types/DataType.js.map +1 -1
  266. package/dist/types/Float.d.ts +0 -4
  267. package/dist/types/Float.js +0 -4
  268. package/dist/types/Float.js.map +1 -1
  269. package/dist/types/Integer.d.ts +0 -4
  270. package/dist/types/Integer.js +0 -4
  271. package/dist/types/Integer.js.map +1 -1
  272. package/dist/types/InvisibleMessageMode.d.ts +5 -10
  273. package/dist/types/InvisibleMessageMode.js +4 -11
  274. package/dist/types/InvisibleMessageMode.js.map +1 -1
  275. package/dist/types/ItemNavigationBehavior.d.ts +0 -6
  276. package/dist/types/ItemNavigationBehavior.js +0 -6
  277. package/dist/types/ItemNavigationBehavior.js.map +1 -1
  278. package/dist/types/MovePlacement.d.ts +20 -0
  279. package/dist/types/MovePlacement.js +22 -0
  280. package/dist/types/MovePlacement.js.map +1 -0
  281. package/dist/types/NavigationMode.d.ts +0 -8
  282. package/dist/types/NavigationMode.js +0 -8
  283. package/dist/types/NavigationMode.js.map +1 -1
  284. package/dist/types/Orientation.d.ts +16 -0
  285. package/dist/types/Orientation.js +18 -0
  286. package/dist/types/Orientation.js.map +1 -0
  287. package/dist/types/ValueState.d.ts +3 -17
  288. package/dist/types/ValueState.js +3 -17
  289. package/dist/types/ValueState.js.map +1 -1
  290. package/dist/types.d.ts +24 -1
  291. package/dist/types.js.map +1 -1
  292. package/dist/updateShadowRoot.d.ts +1 -2
  293. package/dist/updateShadowRoot.js +5 -21
  294. package/dist/updateShadowRoot.js.map +1 -1
  295. package/dist/util/AriaLabelHelper.d.ts +10 -1
  296. package/dist/util/AriaLabelHelper.js +135 -8
  297. package/dist/util/AriaLabelHelper.js.map +1 -1
  298. package/dist/util/Caret.js.map +1 -1
  299. package/dist/util/ColorConversion.js +200 -195
  300. package/dist/util/ColorConversion.js.map +1 -1
  301. package/dist/util/FetchHelper.js.map +1 -1
  302. package/dist/util/FocusableElements.js +4 -3
  303. package/dist/util/FocusableElements.js.map +1 -1
  304. package/dist/util/HTMLSanitizer.js.map +1 -1
  305. package/dist/util/InvisibleMessage.js.map +1 -1
  306. package/dist/util/PopupUtils.d.ts +1 -3
  307. package/dist/util/PopupUtils.js +1 -15
  308. package/dist/util/PopupUtils.js.map +1 -1
  309. package/dist/util/SlotsHelper.js.map +1 -1
  310. package/dist/util/StringHelper.js.map +1 -1
  311. package/dist/util/TabbableElements.js.map +1 -1
  312. package/dist/util/arraysAreEqual.js.map +1 -1
  313. package/dist/util/clamp.js +2 -1
  314. package/dist/util/clamp.js.map +1 -1
  315. package/dist/util/createLinkInHead.d.ts +1 -1
  316. package/dist/util/createLinkInHead.js +1 -1
  317. package/dist/util/createLinkInHead.js.map +1 -1
  318. package/dist/util/debounce.js.map +1 -1
  319. package/dist/util/detectNavigatorLanguage.d.ts +2 -2
  320. package/dist/util/detectNavigatorLanguage.js +6 -1
  321. package/dist/util/detectNavigatorLanguage.js.map +1 -1
  322. package/dist/util/dragAndDrop/DragRegistry.d.ts +12 -0
  323. package/dist/util/dragAndDrop/DragRegistry.js +68 -0
  324. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
  325. package/dist/util/dragAndDrop/findClosestPosition.d.ts +7 -0
  326. package/dist/util/dragAndDrop/findClosestPosition.js +59 -0
  327. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
  328. package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
  329. package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
  330. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
  331. package/dist/util/escapeRegex.js.map +1 -1
  332. package/dist/util/formatMessage.js.map +1 -1
  333. package/dist/util/generateHighlightedMarkup.js.map +1 -1
  334. package/dist/util/getActiveElement.js.map +1 -1
  335. package/dist/util/getClassCopy.d.ts +68 -48
  336. package/dist/util/getClassCopy.js.map +1 -1
  337. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -2
  338. package/dist/util/getDesigntimePropertyAsArray.js +2 -1
  339. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -1
  340. package/dist/util/getEffectiveContentDensity.js.map +1 -1
  341. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -1
  342. package/dist/util/getFastNavigationGroups.js.map +1 -1
  343. package/dist/util/getFileExtension.js.map +1 -1
  344. package/dist/util/getNormalizedTarget.js.map +1 -1
  345. package/dist/util/getParentElement.d.ts +2 -0
  346. package/dist/util/getParentElement.js +5 -0
  347. package/dist/util/getParentElement.js.map +1 -0
  348. package/dist/util/getSingletonElementInstance.d.ts +10 -1
  349. package/dist/util/getSingletonElementInstance.js +11 -2
  350. package/dist/util/getSingletonElementInstance.js.map +1 -1
  351. package/dist/util/isElementClickable.js.map +1 -1
  352. package/dist/util/isElementContainingBlock.d.ts +2 -0
  353. package/dist/util/isElementContainingBlock.js +11 -0
  354. package/dist/util/isElementContainingBlock.js.map +1 -0
  355. package/dist/util/isElementHidden.js.map +1 -1
  356. package/dist/util/isElementInView.js.map +1 -1
  357. package/dist/util/isElementTabbable.js.map +1 -1
  358. package/dist/util/isValidPropertyName.js.map +1 -1
  359. package/dist/util/whenDOMReady.js.map +1 -1
  360. package/dist/util/willShowContent.js.map +1 -1
  361. package/dist/validateThemeRoot.js +14 -13
  362. package/dist/validateThemeRoot.js.map +1 -1
  363. package/index.js +211 -1
  364. package/{package-scripts.js → package-scripts.cjs} +26 -23
  365. package/package.json +24 -8
  366. package/src/css/FontFace.css +47 -17
  367. package/src/css/SystemCSSVars.css +0 -8
  368. package/tsconfig.json +7 -0
  369. package/.eslintignore +0 -16
  370. package/bundle.esm.js +0 -60
  371. package/config/wdio.conf.js +0 -1
  372. package/dist/CSP.d.ts +0 -30
  373. package/dist/CSP.js +0 -51
  374. package/dist/CSP.js.map +0 -1
  375. package/dist/StaticAreaItem.d.ts +0 -36
  376. package/dist/StaticAreaItem.js +0 -99
  377. package/dist/StaticAreaItem.js.map +0 -1
  378. package/dist/api.json +0 -1
  379. package/dist/assets/bundle.esm.c3e922da.js +0 -56
  380. package/dist/assets-meta/IconCollectionsAlias.d.ts +0 -17
  381. package/dist/assets-meta/IconCollectionsAlias.js +0 -18
  382. package/dist/assets-meta/IconCollectionsAlias.js.map +0 -1
  383. package/dist/config/RTL.d.ts +0 -7
  384. package/dist/config/RTL.js +0 -37
  385. package/dist/config/RTL.js.map +0 -1
  386. package/dist/config/ThemeRoots.d.ts +0 -4
  387. package/dist/config/ThemeRoots.js +0 -28
  388. package/dist/config/ThemeRoots.js.map +0 -1
  389. package/dist/decorators/fastNavigation.d.ts +0 -7
  390. package/dist/decorators/fastNavigation.js +0 -13
  391. package/dist/decorators/fastNavigation.js.map +0 -1
  392. package/dist/decorators/languageAware.d.ts +0 -7
  393. package/dist/decorators/languageAware.js +0 -13
  394. package/dist/decorators/languageAware.js.map +0 -1
  395. package/dist/decorators/themeAware.d.ts +0 -7
  396. package/dist/decorators/themeAware.js +0 -13
  397. package/dist/decorators/themeAware.js.map +0 -1
  398. package/dist/theming/getEffectiveLinksHrefs.d.ts +0 -3
  399. package/dist/theming/getEffectiveLinksHrefs.js +0 -17
  400. package/dist/theming/getEffectiveLinksHrefs.js.map +0 -1
  401. package/dist/theming/preloadLinks.d.ts +0 -3
  402. package/dist/theming/preloadLinks.js +0 -19
  403. package/dist/theming/preloadLinks.js.map +0 -1
  404. package/dist/util/createStyleInHead.d.ts +0 -8
  405. package/dist/util/createStyleInHead.js +0 -18
  406. package/dist/util/createStyleInHead.js.map +0 -1
  407. package/lib/generate-asset-parameters/index.js +0 -25
  408. package/lib/generate-styles/index.js +0 -31
  409. package/lib/generate-version-info/index.js +0 -32
  410. package/src/AssetRegistry.ts +0 -11
  411. package/src/Boot.ts +0 -65
  412. package/src/CSP.ts +0 -66
  413. package/src/CustomElementsRegistry.ts +0 -98
  414. package/src/CustomElementsScope.ts +0 -33
  415. package/src/CustomElementsScopeUtils.ts +0 -115
  416. package/src/DOMObserver.ts +0 -28
  417. package/src/Device.ts +0 -203
  418. package/src/EventProvider.ts +0 -87
  419. package/src/FeaturesRegistry.ts +0 -14
  420. package/src/FontFace.ts +0 -31
  421. package/src/InitialConfiguration.ts +0 -207
  422. package/src/Keys.ts +0 -295
  423. package/src/ManagedStyles.ts +0 -92
  424. package/src/MarkedEvents.ts +0 -20
  425. package/src/MediaRange.ts +0 -110
  426. package/src/PropertiesFileFormat.ts +0 -95
  427. package/src/Render.ts +0 -180
  428. package/src/RenderQueue.ts +0 -71
  429. package/src/Runtimes.ts +0 -114
  430. package/src/StaticArea.ts +0 -3
  431. package/src/StaticAreaItem.ts +0 -113
  432. package/src/SystemCSSVars.ts +0 -10
  433. package/src/Theming.ts +0 -4
  434. package/src/UI5Element.ts +0 -1156
  435. package/src/UI5ElementMetadata.ts +0 -389
  436. package/src/animations/AnimationQueue.ts +0 -43
  437. package/src/animations/animate.ts +0 -64
  438. package/src/animations/scroll.ts +0 -21
  439. package/src/animations/slideDown.ts +0 -72
  440. package/src/animations/slideUp.ts +0 -67
  441. package/src/asset-registries/Icons.ts +0 -162
  442. package/src/asset-registries/Illustrations.ts +0 -75
  443. package/src/asset-registries/LocaleData.ts +0 -172
  444. package/src/asset-registries/Themes.ts +0 -67
  445. package/src/asset-registries/i18n.ts +0 -118
  446. package/src/assets-meta/IconCollectionsAlias.ts +0 -18
  447. package/src/config/AnimationMode.ts +0 -33
  448. package/src/config/CalendarType.ts +0 -23
  449. package/src/config/FormatSettings.ts +0 -21
  450. package/src/config/Icons.ts +0 -59
  451. package/src/config/Language.ts +0 -72
  452. package/src/config/NoConflict.ts +0 -67
  453. package/src/config/RTL.ts +0 -45
  454. package/src/config/Theme.ts +0 -64
  455. package/src/config/ThemeRoots.ts +0 -41
  456. package/src/decorators/customElement.ts +0 -17
  457. package/src/decorators/event.ts +0 -28
  458. package/src/decorators/fastNavigation.ts +0 -14
  459. package/src/decorators/languageAware.ts +0 -14
  460. package/src/decorators/property.ts +0 -30
  461. package/src/decorators/slot.ts +0 -49
  462. package/src/decorators/themeAware.ts +0 -14
  463. package/src/delegate/ItemNavigation.ts +0 -393
  464. package/src/delegate/ResizeHandler.ts +0 -100
  465. package/src/delegate/ScrollEnablement.ts +0 -224
  466. package/src/features/F6Navigation.ts +0 -195
  467. package/src/features/OpenUI5Element.ts +0 -11
  468. package/src/features/OpenUI5Enablement.ts +0 -117
  469. package/src/features/OpenUI5Support.ts +0 -148
  470. package/src/generated/css/BusyIndicator.css.ts +0 -9
  471. package/src/generated/css/FontFace.css.ts +0 -9
  472. package/src/generated/css/OverrideFontFace.css.ts +0 -9
  473. package/src/generated/css/SystemCSSVars.css.ts +0 -9
  474. package/src/getSharedResource.ts +0 -39
  475. package/src/global.d.ts +0 -38
  476. package/src/i18nBundle.ts +0 -108
  477. package/src/locale/Locale.ts +0 -101
  478. package/src/locale/RTLAwareRegistry.ts +0 -16
  479. package/src/locale/applyDirection.ts +0 -18
  480. package/src/locale/directionChange.ts +0 -34
  481. package/src/locale/getEffectiveDir.ts +0 -28
  482. package/src/locale/getLocale.ts +0 -46
  483. package/src/locale/languageChange.ts +0 -24
  484. package/src/locale/nextFallbackLocale.ts +0 -28
  485. package/src/locale/normalizeLocale.ts +0 -56
  486. package/src/renderer/LitRenderer.ts +0 -60
  487. package/src/renderer/directives/style-map.js +0 -72
  488. package/src/renderer/executeTemplate.ts +0 -40
  489. package/src/theming/CustomStyle.ts +0 -64
  490. package/src/theming/ThemeLoaded.ts +0 -24
  491. package/src/theming/applyTheme.ts +0 -90
  492. package/src/theming/getConstructableStyle.ts +0 -31
  493. package/src/theming/getEffectiveLinksHrefs.ts +0 -26
  494. package/src/theming/getEffectiveStyle.ts +0 -41
  495. package/src/theming/getStylesString.ts +0 -15
  496. package/src/theming/getThemeDesignerTheme.ts +0 -101
  497. package/src/theming/preloadLinks.ts +0 -24
  498. package/src/thirdparty/_merge.ts +0 -32
  499. package/src/thirdparty/isPlainObject.ts +0 -18
  500. package/src/thirdparty/merge.ts +0 -5
  501. package/src/types/AnimationMode.ts +0 -33
  502. package/src/types/CSSColor.ts +0 -20
  503. package/src/types/CalendarType.ts +0 -38
  504. package/src/types/DOMReference.ts +0 -28
  505. package/src/types/DataType.ts +0 -51
  506. package/src/types/Float.ts +0 -25
  507. package/src/types/Integer.ts +0 -25
  508. package/src/types/InvisibleMessageMode.ts +0 -27
  509. package/src/types/ItemNavigationBehavior.ts +0 -26
  510. package/src/types/NavigationMode.ts +0 -33
  511. package/src/types/ValueState.ts +0 -47
  512. package/src/types.ts +0 -30
  513. package/src/updateShadowRoot.ts +0 -37
  514. package/src/util/AriaLabelHelper.ts +0 -63
  515. package/src/util/Caret.ts +0 -28
  516. package/src/util/ColorConversion.ts +0 -399
  517. package/src/util/FetchHelper.ts +0 -31
  518. package/src/util/FocusableElements.ts +0 -92
  519. package/src/util/HTMLSanitizer.ts +0 -9
  520. package/src/util/InvisibleMessage.ts +0 -69
  521. package/src/util/PopupUtils.ts +0 -112
  522. package/src/util/SlotsHelper.ts +0 -39
  523. package/src/util/StringHelper.ts +0 -26
  524. package/src/util/TabbableElements.ts +0 -70
  525. package/src/util/arraysAreEqual.ts +0 -15
  526. package/src/util/clamp.ts +0 -12
  527. package/src/util/createLinkInHead.ts +0 -25
  528. package/src/util/createStyleInHead.ts +0 -20
  529. package/src/util/debounce.ts +0 -18
  530. package/src/util/detectNavigatorLanguage.ts +0 -13
  531. package/src/util/escapeRegex.ts +0 -11
  532. package/src/util/formatMessage.ts +0 -24
  533. package/src/util/generateHighlightedMarkup.ts +0 -43
  534. package/src/util/getActiveElement.ts +0 -11
  535. package/src/util/getClassCopy.ts +0 -12
  536. package/src/util/getDesigntimePropertyAsArray.ts +0 -4
  537. package/src/util/getEffectiveContentDensity.ts +0 -5
  538. package/src/util/getEffectiveScrollbarStyle.ts +0 -5
  539. package/src/util/getFastNavigationGroups.ts +0 -63
  540. package/src/util/getFileExtension.ts +0 -21
  541. package/src/util/getNormalizedTarget.ts +0 -16
  542. package/src/util/getSingletonElementInstance.ts +0 -13
  543. package/src/util/isElementClickable.ts +0 -19
  544. package/src/util/isElementHidden.ts +0 -9
  545. package/src/util/isElementInView.ts +0 -15
  546. package/src/util/isElementTabbable.ts +0 -37
  547. package/src/util/isValidPropertyName.ts +0 -29
  548. package/src/util/whenDOMReady.ts +0 -13
  549. package/src/util/willShowContent.ts +0 -7
  550. package/src/validateThemeRoot.ts +0 -58
  551. package/used-modules.txt +0 -10
@@ -1,11 +1,12 @@
1
+ // eslint-disable-next-line import/no-extraneous-dependencies
2
+ import "@ui5/webcomponents-base/dist/ssr-dom.js";
1
3
  import merge from "./thirdparty/merge.js";
2
4
  import { boot } from "./Boot.js";
3
5
  import UI5ElementMetadata from "./UI5ElementMetadata.js";
4
6
  import EventProvider from "./EventProvider.js";
5
- import getSingletonElementInstance from "./util/getSingletonElementInstance.js";
6
- import StaticAreaItem from "./StaticAreaItem.js";
7
7
  import updateShadowRoot from "./updateShadowRoot.js";
8
- import { renderDeferred, renderImmediately, cancelRender } from "./Render.js";
8
+ import { shouldIgnoreCustomElement } from "./IgnoreCustomElements.js";
9
+ import { renderDeferred, renderImmediately, cancelRender, } from "./Render.js";
9
10
  import { registerTag, isTagRegistered, recordTagRegistrationFailure } from "./CustomElementsRegistry.js";
10
11
  import { observeDOMNode, unobserveDOMNode } from "./DOMObserver.js";
11
12
  import { skipOriginalEvent } from "./config/NoConflict.js";
@@ -15,7 +16,9 @@ import isValidPropertyName from "./util/isValidPropertyName.js";
15
16
  import { getSlotName, getSlottedNodesList } from "./util/SlotsHelper.js";
16
17
  import arraysAreEqual from "./util/arraysAreEqual.js";
17
18
  import { markAsRtlAware } from "./locale/RTLAwareRegistry.js";
18
- import preloadLinks from "./theming/preloadLinks.js";
19
+ import executeTemplate, { getTagsToScope } from "./renderer/executeTemplate.js";
20
+ import { attachFormElementInternals, setFormValue } from "./features/InputElementsFormSupport.js";
21
+ const DEV_MODE = true;
19
22
  let autoId = 0;
20
23
  const elementTimeouts = new Map();
21
24
  const uniqueDependenciesCache = new Map();
@@ -34,16 +37,28 @@ function _invalidate(changeInfo) {
34
37
  this.onInvalidation(changeInfo);
35
38
  this._changedState.push(changeInfo);
36
39
  renderDeferred(this);
37
- this._eventProvider.fireEvent("invalidate", { ...changeInfo, target: this });
40
+ this._invalidationEventProvider.fireEvent("invalidate", { ...changeInfo, target: this });
38
41
  }
39
- let metadata = {};
40
42
  /**
43
+ * looks up a property descsriptor including in the prototype chain
44
+ * @param proto the starting prototype
45
+ * @param name the property to look for
46
+ * @returns the property descriptor if found directly or in the prototype chaing, undefined if not found
47
+ */
48
+ function getPropertyDescriptor(proto, name) {
49
+ do {
50
+ const descriptor = Object.getOwnPropertyDescriptor(proto, name);
51
+ if (descriptor) {
52
+ return descriptor;
53
+ }
54
+ // go up the prototype chain
55
+ proto = Object.getPrototypeOf(proto);
56
+ } while (proto && proto !== HTMLElement.prototype);
57
+ }
58
+ /**
59
+ * @class
41
60
  * Base class for all UI5 Web Components
42
61
  *
43
- * @class
44
- * @constructor
45
- * @author SAP SE
46
- * @alias sap.ui.webc.base.UI5Element
47
62
  * @extends HTMLElement
48
63
  * @public
49
64
  */
@@ -57,7 +72,8 @@ class UI5Element extends HTMLElement {
57
72
  this._fullyConnected = false; // A flag telling whether the UI5Element's onEnterDOM hook was called (since it's possible to have the element removed from DOM before that)
58
73
  this._childChangeListeners = new Map(); // used to store lazy listeners per slot for the child change event of every child inside that slot
59
74
  this._slotChangeListeners = new Map(); // used to store lazy listeners per slot for the slotchange event of all slot children inside that slot
60
- this._eventProvider = new EventProvider(); // used by parent components for listening to changes to child components
75
+ this._invalidationEventProvider = new EventProvider(); // used by parent components for listening to changes to child components
76
+ this._componentStateFinalizedEventProvider = new EventProvider(); // used by friend classes for synchronization
61
77
  let deferredResolve;
62
78
  this._domRefReadyPromise = new Promise(resolve => {
63
79
  deferredResolve = resolve;
@@ -67,7 +83,8 @@ class UI5Element extends HTMLElement {
67
83
  this._state = { ...ctor.getMetadata().getInitialState() };
68
84
  this._upgradeAllProperties();
69
85
  if (ctor._needsShadowDOM()) {
70
- this.attachShadow({ mode: "open" });
86
+ const defaultOptions = { mode: "open" };
87
+ this.attachShadow({ ...defaultOptions, ...ctor.getMetadata().getShadowRootOptions() });
71
88
  }
72
89
  }
73
90
  /**
@@ -82,11 +99,36 @@ class UI5Element extends HTMLElement {
82
99
  }
83
100
  return this.__id;
84
101
  }
102
+ render() {
103
+ const template = this.constructor.template;
104
+ return executeTemplate(template, this);
105
+ }
85
106
  /**
86
107
  * Do not call this method from derivatives of UI5Element, use "onEnterDOM" only
87
108
  * @private
88
109
  */
89
110
  async connectedCallback() {
111
+ if (DEV_MODE) {
112
+ const rootNode = this.getRootNode();
113
+ // when an element is connected, check if it exists in the `dependencies` of the parent
114
+ if (rootNode instanceof ShadowRoot && instanceOfUI5Element(rootNode.host)) {
115
+ const klass = rootNode.host.constructor;
116
+ const hasDependency = getTagsToScope(rootNode.host).includes(this.constructor.getMetadata().getPureTag());
117
+ if (!hasDependency) {
118
+ // eslint-disable-next-line no-console
119
+ console.error(`[UI5-FWK] ${this.constructor.getMetadata().getTag()} not found in dependencies of ${klass.getMetadata().getTag()}`);
120
+ }
121
+ }
122
+ }
123
+ if (DEV_MODE) {
124
+ const props = this.constructor.getMetadata().getProperties();
125
+ for (const [prop, propData] of Object.entries(props)) { // eslint-disable-line
126
+ if (Object.hasOwn(this, prop)) {
127
+ // eslint-disable-next-line no-console
128
+ console.error(`[UI5-FWK] ${this.constructor.getMetadata().getTag()} has a property [${prop}] that is shadowed by the instance. Updates to this property will not invalidate the component. Possible reason is TS target ES2022 or TS useDefineForClassFields`);
129
+ }
130
+ }
131
+ }
90
132
  const ctor = this.constructor;
91
133
  this.setAttribute(ctor.getMetadata().getPureTag(), "");
92
134
  if (ctor.getMetadata().supportsF6FastNavigation()) {
@@ -122,9 +164,7 @@ class UI5Element extends HTMLElement {
122
164
  this.onExitDOM();
123
165
  this._fullyConnected = false;
124
166
  }
125
- if (this.staticAreaItem && this.staticAreaItem.parentElement) {
126
- this.staticAreaItem.parentElement.removeChild(this.staticAreaItem);
127
- }
167
+ this._domRefReadyPromise._deferredResolve();
128
168
  cancelRender(this);
129
169
  }
130
170
  /**
@@ -152,14 +192,16 @@ class UI5Element extends HTMLElement {
152
192
  */
153
193
  _startObservingDOMChildren() {
154
194
  const ctor = this.constructor;
155
- const shouldObserveChildren = ctor.getMetadata().hasSlots();
195
+ const metadata = ctor.getMetadata();
196
+ const shouldObserveChildren = metadata.hasSlots();
156
197
  if (!shouldObserveChildren) {
157
198
  return;
158
199
  }
159
- const canSlotText = ctor.getMetadata().canSlotText();
200
+ const canSlotText = metadata.canSlotText();
201
+ const hasClonedSlot = Object.keys(metadata.getSlots()).some(slotName => metadata.getSlots()[slotName].cloned);
160
202
  const mutationObserverOptions = {
161
203
  childList: true,
162
- subtree: canSlotText,
204
+ subtree: canSlotText || hasClonedSlot,
163
205
  characterData: canSlotText,
164
206
  };
165
207
  observeDOMNode(this, this._processChildren.bind(this), mutationObserverOptions);
@@ -220,11 +262,11 @@ class UI5Element extends HTMLElement {
220
262
  // Await for not-yet-defined custom elements
221
263
  if (child instanceof HTMLElement) {
222
264
  const localName = child.localName;
223
- const isCustomElement = localName.includes("-");
224
- if (isCustomElement) {
225
- const isDefined = window.customElements.get(localName);
265
+ const shouldWaitForCustomElement = localName.includes("-") && !shouldIgnoreCustomElement(localName);
266
+ if (shouldWaitForCustomElement) {
267
+ const isDefined = customElements.get(localName);
226
268
  if (!isDefined) {
227
- const whenDefinedPromise = window.customElements.whenDefined(localName); // Class registered, but instances not upgraded yet
269
+ const whenDefinedPromise = customElements.whenDefined(localName); // Class registered, but instances not upgraded yet
228
270
  let timeoutPromise = elementTimeouts.get(localName);
229
271
  if (!timeoutPromise) {
230
272
  timeoutPromise = new Promise(resolve => setTimeout(resolve, 1000));
@@ -232,7 +274,7 @@ class UI5Element extends HTMLElement {
232
274
  }
233
275
  await Promise.race([whenDefinedPromise, timeoutPromise]);
234
276
  }
235
- window.customElements.upgrade(child);
277
+ customElements.upgrade(child);
236
278
  }
237
279
  }
238
280
  child = ctor.getMetadata().constructor.validateSlotValue(child, slotData);
@@ -272,6 +314,9 @@ class UI5Element extends HTMLElement {
272
314
  reason: "children",
273
315
  });
274
316
  invalidated = true;
317
+ if (ctor.getMetadata().isFormAssociated()) {
318
+ setFormValue(this);
319
+ }
275
320
  }
276
321
  }
277
322
  // If none of the slots had an invalidation due to changes to immediate children,
@@ -307,26 +352,26 @@ class UI5Element extends HTMLElement {
307
352
  /**
308
353
  * Attach a callback that will be executed whenever the component is invalidated
309
354
  *
310
- * @param {InvalidationInfo} callback
355
+ * @param callback
311
356
  * @public
312
357
  */
313
358
  attachInvalidate(callback) {
314
- this._eventProvider.attachEvent("invalidate", callback);
359
+ this._invalidationEventProvider.attachEvent("invalidate", callback);
315
360
  }
316
361
  /**
317
362
  * Detach the callback that is executed whenever the component is invalidated
318
363
  *
319
- * @param {InvalidationInfo} callback
364
+ * @param callback
320
365
  * @public
321
366
  */
322
367
  detachInvalidate(callback) {
323
- this._eventProvider.detachEvent("invalidate", callback);
368
+ this._invalidationEventProvider.detachEvent("invalidate", callback);
324
369
  }
325
370
  /**
326
371
  * Callback that is executed whenever a monitored child changes its state
327
372
  *
328
- * @param {sting} slotName the slot in which a child was invalidated
329
- * @param { ChangeInfo } childChangeInfo the changeInfo object for the child in the given slot
373
+ * @param slotName the slot in which a child was invalidated
374
+ * @param childChangeInfo the changeInfo object for the child in the given slot
330
375
  * @private
331
376
  */
332
377
  _onChildChange(slotName, childChangeInfo) {
@@ -373,6 +418,16 @@ class UI5Element extends HTMLElement {
373
418
  this[nameInCamelCase] = newPropertyValue;
374
419
  }
375
420
  }
421
+ formAssociatedCallback() {
422
+ const ctor = this.constructor;
423
+ if (!ctor.getMetadata().isFormAssociated()) {
424
+ return;
425
+ }
426
+ attachFormElementInternals(this);
427
+ }
428
+ static get formAssociated() {
429
+ return this.getMetadata().isFormAssociated();
430
+ }
376
431
  /**
377
432
  * @private
378
433
  */
@@ -436,7 +491,6 @@ class UI5Element extends HTMLElement {
436
491
  * Returns a singleton event listener for the "change" event of a child in a given slot
437
492
  *
438
493
  * @param slotName the name of the slot, where the child is
439
- * @returns {ChildChangeListener}
440
494
  * @private
441
495
  */
442
496
  _getChildChangeListener(slotName) {
@@ -449,7 +503,6 @@ class UI5Element extends HTMLElement {
449
503
  * Returns a singleton slotchange event listener that invalidates the component due to changes in the given slot
450
504
  *
451
505
  * @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is
452
- * @returns {SlotChangeListener}
453
506
  * @private
454
507
  */
455
508
  _getSlotChangeListener(slotName) {
@@ -501,9 +554,9 @@ class UI5Element extends HTMLElement {
501
554
  * 1) children: immediate children (HTML elements or text nodes) were added, removed or reordered in the slot
502
555
  * 2) textcontent: text nodes in the slot changed value (or nested text nodes were added or changed value). Can only trigger for slots of "type: Node"
503
556
  * 3) slotchange: a slot element, slotted inside that slot had its "slotchange" event listener called. This practically means that transitively slotted children changed.
504
- * Can only trigger if the child of a slot is a slot element itself.
557
+ * Can only trigger if the child of a slot is a slot element itself.
505
558
  * 4) childchange: indicates that a UI5Element child in that slot was invalidated and in turn invalidated the component.
506
- * Can only trigger for slots with "invalidateOnChildChange" metadata descriptor
559
+ * Can only trigger for slots with "invalidateOnChildChange" metadata descriptor
507
560
  *
508
561
  * - newValue: the new value of the property (for type="property" only)
509
562
  *
@@ -525,9 +578,7 @@ class UI5Element extends HTMLElement {
525
578
  this._suppressInvalidation = true;
526
579
  this.onBeforeRendering();
527
580
  // Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered
528
- if (this._onComponentStateFinalized) {
529
- this._onComponentStateFinalized();
530
- }
581
+ this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized");
531
582
  // resume normal invalidation handling
532
583
  this._suppressInvalidation = false;
533
584
  // Update the shadow root with the render result
@@ -556,9 +607,6 @@ class UI5Element extends HTMLElement {
556
607
  if (ctor._needsShadowDOM()) {
557
608
  updateShadowRoot(this);
558
609
  }
559
- if (this.staticAreaItem) {
560
- this.staticAreaItem.update();
561
- }
562
610
  // Safari requires that children get the slot attribute only after the slot tags have been rendered in the shadow DOM
563
611
  if (hasIndividualSlots) {
564
612
  this._assignIndividualSlotsToChildren();
@@ -598,11 +646,7 @@ class UI5Element extends HTMLElement {
598
646
  if (!this.shadowRoot || this.shadowRoot.children.length === 0) {
599
647
  return;
600
648
  }
601
- const children = [...this.shadowRoot.children].filter(child => !["link", "style"].includes(child.localName));
602
- if (children.length !== 1) {
603
- console.warn(`The shadow DOM for ${this.constructor.getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line
604
- }
605
- return children[0];
649
+ return this.shadowRoot.children[0];
606
650
  }
607
651
  /**
608
652
  * Returns the DOM Element marked with "data-sap-focus-ref" inside the template.
@@ -627,7 +671,7 @@ class UI5Element extends HTMLElement {
627
671
  }
628
672
  /**
629
673
  * Set the focus to the element, returned by "getFocusDomRef()" (marked by "data-sap-focus-ref")
630
- * @param {FocusOptions} focusOptions additional options for the focus
674
+ * @param focusOptions additional options for the focus
631
675
  * @public
632
676
  */
633
677
  async focus(focusOptions) {
@@ -644,13 +688,13 @@ class UI5Element extends HTMLElement {
644
688
  * @param data - additional data for the event
645
689
  * @param cancelable - true, if the user can call preventDefault on the event object
646
690
  * @param bubbles - true, if the event bubbles
647
- * @returns {boolean} false, if the event was cancelled (preventDefault called), true otherwise
691
+ * @returns false, if the event was cancelled (preventDefault called), true otherwise
648
692
  */
649
693
  fireEvent(name, data, cancelable = false, bubbles = true) {
650
694
  const eventResult = this._fireEvent(name, data, cancelable, bubbles);
651
695
  const camelCaseEventName = kebabToCamelCase(name);
652
696
  if (camelCaseEventName !== name) {
653
- return eventResult && this._fireEvent(camelCaseEventName, data, cancelable);
697
+ return eventResult && this._fireEvent(camelCaseEventName, data, cancelable, bubbles);
654
698
  }
655
699
  return eventResult;
656
700
  }
@@ -685,12 +729,30 @@ class UI5Element extends HTMLElement {
685
729
  getSlottedNodes(slotName) {
686
730
  return getSlottedNodesList(this[slotName]);
687
731
  }
732
+ /**
733
+ * Attach a callback that will be executed whenever the component's state is finalized
734
+ *
735
+ * @param callback
736
+ * @public
737
+ */
738
+ attachComponentStateFinalized(callback) {
739
+ this._componentStateFinalizedEventProvider.attachEvent("componentStateFinalized", callback);
740
+ }
741
+ /**
742
+ * Detach the callback that is executed whenever the component's state is finalized
743
+ *
744
+ * @param callback
745
+ * @public
746
+ */
747
+ detachComponentStateFinalized(callback) {
748
+ this._componentStateFinalizedEventProvider.detachEvent("componentStateFinalized", callback);
749
+ }
688
750
  /**
689
751
  * Determines whether the component should be rendered in RTL mode or not.
690
752
  * Returns: "rtl", "ltr" or undefined
691
753
  *
692
754
  * @public
693
- * @returns {String|undefined}
755
+ * @default undefined
694
756
  */
695
757
  get effectiveDir() {
696
758
  markAsRtlAware(this.constructor); // if a UI5 Element calls this method, it's considered to be rtl-aware
@@ -698,8 +760,8 @@ class UI5Element extends HTMLElement {
698
760
  }
699
761
  /**
700
762
  * Used to duck-type UI5 elements without using instanceof
701
- * @returns {boolean}
702
763
  * @public
764
+ * @default true
703
765
  */
704
766
  get isUI5Element() {
705
767
  return true;
@@ -708,39 +770,24 @@ class UI5Element extends HTMLElement {
708
770
  return {};
709
771
  }
710
772
  /**
711
- * Do not override this method in derivatives of UI5Element, use metadata properties instead
773
+ * Returns the component accessibility info.
712
774
  * @private
713
775
  */
714
- static get observedAttributes() {
715
- return this.getMetadata().getAttributesList();
776
+ get accessibilityInfo() {
777
+ return {};
716
778
  }
717
779
  /**
780
+ * Do not override this method in derivatives of UI5Element, use metadata properties instead
718
781
  * @private
719
782
  */
720
- static _needsShadowDOM() {
721
- return !!this.template;
783
+ static get observedAttributes() {
784
+ return this.getMetadata().getAttributesList();
722
785
  }
723
786
  /**
724
787
  * @private
725
788
  */
726
- static _needsStaticArea() {
727
- return !!this.staticAreaTemplate;
728
- }
729
- /**
730
- * @public
731
- */
732
- getStaticAreaItemDomRef() {
733
- if (!this.constructor._needsStaticArea()) {
734
- throw new Error("This component does not use the static area");
735
- }
736
- if (!this.staticAreaItem) {
737
- this.staticAreaItem = StaticAreaItem.createInstance();
738
- this.staticAreaItem.setOwnerElement(this);
739
- }
740
- if (!this.staticAreaItem.parentElement) {
741
- getSingletonElementInstance("ui5-static-area").appendChild(this.staticAreaItem);
742
- }
743
- return this.staticAreaItem.getDomRef();
789
+ static _needsShadowDOM() {
790
+ return !!this.template || Object.prototype.hasOwnProperty.call(this.prototype, "render");
744
791
  }
745
792
  /**
746
793
  * @private
@@ -766,8 +813,25 @@ class UI5Element extends HTMLElement {
766
813
  if (propData.multiple && propData.defaultValue) {
767
814
  throw new Error(`Cannot set a default value for property "${prop}". All multiple properties are empty arrays by default.`);
768
815
  }
816
+ const descriptor = getPropertyDescriptor(proto, prop);
817
+ // if the decorator is on a setter, proxy the new setter to it
818
+ let origSet;
819
+ if (descriptor?.set) {
820
+ // eslint-disable-next-line @typescript-eslint/unbound-method
821
+ origSet = descriptor.set;
822
+ }
823
+ // if the decorator is on a setter, there will be a corresponding getter - proxy the new getter to it
824
+ let origGet;
825
+ if (descriptor?.get) {
826
+ // eslint-disable-next-line @typescript-eslint/unbound-method
827
+ origGet = descriptor.get;
828
+ }
769
829
  Object.defineProperty(proto, prop, {
770
830
  get() {
831
+ // proxy the getter to the original accessor if there was one
832
+ if (origGet) {
833
+ return origGet.call(this);
834
+ }
771
835
  if (this._state[prop] !== undefined) {
772
836
  return this._state[prop];
773
837
  }
@@ -792,7 +856,7 @@ class UI5Element extends HTMLElement {
792
856
  value = metadataCtor.validatePropertyValue(value, propData);
793
857
  const propertyType = propData.type;
794
858
  let propertyValidator = propData.validator;
795
- const oldState = this._state[prop];
859
+ const oldState = origGet ? origGet.call(this) : this._state[prop];
796
860
  if (propertyType && propertyType.isDataTypeClass) {
797
861
  propertyValidator = propertyType;
798
862
  }
@@ -806,13 +870,22 @@ class UI5Element extends HTMLElement {
806
870
  isDifferent = oldState !== value;
807
871
  }
808
872
  if (isDifferent) {
809
- this._state[prop] = value;
873
+ // if the decorator is on a setter, use it for storage
874
+ if (origSet) {
875
+ origSet.call(this, value);
876
+ }
877
+ else {
878
+ this._state[prop] = value;
879
+ }
810
880
  _invalidate.call(this, {
811
881
  type: "property",
812
882
  name: prop,
813
883
  newValue: value,
814
884
  oldValue: oldState,
815
885
  });
886
+ if (ctor.getMetadata().isFormAssociated()) {
887
+ setFormValue(this);
888
+ }
816
889
  this._updateAttribute(prop, value);
817
890
  }
818
891
  },
@@ -840,34 +913,6 @@ class UI5Element extends HTMLElement {
840
913
  }
841
914
  }
842
915
  }
843
- /**
844
- * Returns the metadata object for this UI5 Web Component Class
845
- * @protected
846
- */
847
- static get metadata() {
848
- return metadata;
849
- }
850
- /**
851
- * Sets a new metadata object for this UI5 Web Component Class
852
- * @protected
853
- */
854
- static set metadata(newMetadata) {
855
- metadata = newMetadata;
856
- }
857
- /**
858
- * Returns the CSS for this UI5 Web Component Class
859
- * @protected
860
- */
861
- static get styles() {
862
- return "";
863
- }
864
- /**
865
- * Returns the Static Area CSS for this UI5 Web Component Class
866
- * @protected
867
- */
868
- static get staticAreaStyles() {
869
- return "";
870
- }
871
916
  /**
872
917
  * Returns an array with the dependencies for this UI5 Web Component, which could be:
873
918
  * - composed components (used in its shadow root or static area item)
@@ -892,8 +937,6 @@ class UI5Element extends HTMLElement {
892
937
  }
893
938
  /**
894
939
  * Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved
895
- *
896
- * @returns {Promise}
897
940
  */
898
941
  static whenDependenciesDefined() {
899
942
  return Promise.all(this.getUniqueDependencies().map(dep => dep.define()));
@@ -902,7 +945,6 @@ class UI5Element extends HTMLElement {
902
945
  * Hook that will be called upon custom element definition
903
946
  *
904
947
  * @protected
905
- * @returns {Promise<void>}
906
948
  */
907
949
  static async onDefine() {
908
950
  return Promise.resolve();
@@ -910,7 +952,6 @@ class UI5Element extends HTMLElement {
910
952
  /**
911
953
  * Registers a UI5 Web Component in the browser window object
912
954
  * @public
913
- * @returns {Promise<UI5Element>}
914
955
  */
915
956
  static async define() {
916
957
  await boot();
@@ -927,8 +968,7 @@ class UI5Element extends HTMLElement {
927
968
  else if (!definedGlobally) {
928
969
  this._generateAccessors();
929
970
  registerTag(tag);
930
- window.customElements.define(tag, this);
931
- preloadLinks(this);
971
+ customElements.define(tag, this);
932
972
  }
933
973
  return this;
934
974
  }
@@ -936,33 +976,42 @@ class UI5Element extends HTMLElement {
936
976
  * Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents')
937
977
  * Note: not to be confused with the "get metadata()" method, which returns an object for this class's metadata only
938
978
  * @public
939
- * @returns {UI5ElementMetadata}
940
979
  */
941
980
  static getMetadata() {
942
981
  if (this.hasOwnProperty("_metadata")) { // eslint-disable-line
943
982
  return this._metadata;
944
983
  }
945
- const effectiveMetadata = Object.keys(this.metadata).length ? this.metadata : this.decoratorMetadata;
946
- const metadataObjects = [effectiveMetadata];
984
+ const metadataObjects = [this.metadata];
947
985
  let klass = this; // eslint-disable-line
948
986
  while (klass !== UI5Element) {
949
987
  klass = Object.getPrototypeOf(klass);
950
- const effectiveKlassMetadata = Object.keys(klass.metadata).length ? klass.metadata : klass.decoratorMetadata;
951
- metadataObjects.unshift(effectiveKlassMetadata);
988
+ metadataObjects.unshift(klass.metadata);
952
989
  }
953
990
  const mergedMetadata = merge({}, ...metadataObjects);
954
991
  this._metadata = new UI5ElementMetadata(mergedMetadata);
955
992
  return this._metadata;
956
993
  }
994
+ get validity() { return this._internals?.validity; }
995
+ get validationMessage() { return this._internals?.validationMessage; }
996
+ checkValidity() { return this._internals?.checkValidity(); }
997
+ reportValidity() { return this._internals?.reportValidity(); }
957
998
  }
958
- UI5Element.decoratorMetadata = {};
999
+ /**
1000
+ * Returns the metadata object for this UI5 Web Component Class
1001
+ * @protected
1002
+ */
1003
+ UI5Element.metadata = {};
1004
+ /**
1005
+ * Returns the CSS for this UI5 Web Component Class
1006
+ * @protected
1007
+ */
1008
+ UI5Element.styles = "";
959
1009
  /**
960
1010
  * Always use duck-typing to cover all runtimes on the page.
961
- * @returns {boolean}
962
1011
  */
963
1012
  const instanceOfUI5Element = (object) => {
964
1013
  return "isUI5Element" in object;
965
1014
  };
966
1015
  export default UI5Element;
967
- export { instanceOfUI5Element };
1016
+ export { instanceOfUI5Element, };
968
1017
  //# sourceMappingURL=UI5Element.js.map