@ui5/webcomponents-base 0.0.0-f6676abdd → 0.0.0-f6c8f637f

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 (617) hide show
  1. package/AGENTS.md +193 -0
  2. package/CHANGELOG.md +683 -0
  3. package/CLAUDE.md +1 -0
  4. package/LICENSE.txt +201 -0
  5. package/README.md +7 -7
  6. package/cypress.config.js +1 -1
  7. package/dist/.tsbuildinfobuild +1 -1
  8. package/dist/Assets-fetch.d.ts +1 -0
  9. package/dist/Assets-fetch.js +3 -0
  10. package/dist/Assets-fetch.js.map +1 -0
  11. package/dist/Assets-node.d.ts +12 -0
  12. package/dist/Assets-node.js +14 -0
  13. package/dist/Assets-node.js.map +1 -0
  14. package/dist/Assets.d.ts +1 -0
  15. package/dist/Assets.js +3 -0
  16. package/dist/Assets.js.map +1 -0
  17. package/dist/Boot.d.ts +2 -1
  18. package/dist/Boot.js +44 -14
  19. package/dist/Boot.js.map +1 -1
  20. package/dist/CustomElementsRegistry.js +1 -1
  21. package/dist/CustomElementsRegistry.js.map +1 -1
  22. package/dist/CustomElementsScopeUtils.d.ts +1 -1
  23. package/dist/CustomElementsScopeUtils.js +1 -1
  24. package/dist/CustomElementsScopeUtils.js.map +1 -1
  25. package/dist/DragAndDrop.d.ts +2 -0
  26. package/dist/DragAndDrop.js +5 -0
  27. package/dist/DragAndDrop.js.map +1 -0
  28. package/dist/FontFace.js +0 -8
  29. package/dist/FontFace.js.map +1 -1
  30. package/dist/InitialConfiguration.js +7 -0
  31. package/dist/InitialConfiguration.js.map +1 -1
  32. package/dist/Keys.d.ts +4 -1
  33. package/dist/Keys.js +4 -1
  34. package/dist/Keys.js.map +1 -1
  35. package/dist/ScrollbarStyles.d.ts +2 -0
  36. package/dist/ScrollbarStyles.js +9 -0
  37. package/dist/ScrollbarStyles.js.map +1 -0
  38. package/dist/UI5Element.d.ts +27 -10
  39. package/dist/UI5Element.js +77 -33
  40. package/dist/UI5Element.js.map +1 -1
  41. package/dist/UI5ElementMetadata.d.ts +1 -1
  42. package/dist/UI5ElementMetadata.js.map +1 -1
  43. package/dist/asset-registries/Icons.d.ts +42 -8
  44. package/dist/asset-registries/Icons.js +51 -8
  45. package/dist/asset-registries/Icons.js.map +1 -1
  46. package/dist/asset-registries/Illustrations.d.ts +133 -8
  47. package/dist/asset-registries/Illustrations.js +82 -1
  48. package/dist/asset-registries/Illustrations.js.map +1 -1
  49. package/dist/asset-registries/LocaleData.js +2 -1
  50. package/dist/asset-registries/LocaleData.js.map +1 -1
  51. package/dist/asset-registries/Themes.d.ts +5 -2
  52. package/dist/asset-registries/Themes.js +3 -3
  53. package/dist/asset-registries/Themes.js.map +1 -1
  54. package/dist/config/Language.d.ts +2 -1
  55. package/dist/config/Language.js +12 -1
  56. package/dist/config/Language.js.map +1 -1
  57. package/dist/config/Theme.d.ts +13 -1
  58. package/dist/config/Theme.js +18 -1
  59. package/dist/config/Theme.js.map +1 -1
  60. package/dist/config/ThemeRoot.d.ts +3 -1
  61. package/dist/config/ThemeRoot.js +3 -1
  62. package/dist/config/ThemeRoot.js.map +1 -1
  63. package/dist/css/MultipleDragGhost.css +17 -0
  64. package/dist/css/OpenUI5PopupStyles.css +10 -0
  65. package/dist/css/ScrollbarStyles.css +3 -0
  66. package/dist/css/SystemCSSVars.css +28 -3
  67. package/dist/custom-elements-internal.json +2890 -0
  68. package/dist/custom-elements.json +2587 -0
  69. package/dist/decorators/i18n.js +1 -1
  70. package/dist/decorators/i18n.js.map +1 -1
  71. package/dist/features/F6Navigation.d.ts +1 -0
  72. package/dist/features/F6Navigation.js +30 -15
  73. package/dist/features/F6Navigation.js.map +1 -1
  74. package/dist/features/InputElementsFormSupport.d.ts +1 -1
  75. package/dist/features/InputElementsFormSupport.js +6 -2
  76. package/dist/features/InputElementsFormSupport.js.map +1 -1
  77. package/dist/features/OpenUI5Support.d.ts +15 -4
  78. package/dist/features/OpenUI5Support.js +83 -42
  79. package/dist/features/OpenUI5Support.js.map +1 -1
  80. package/dist/features/insertOpenUI5PopupStyles.d.ts +2 -0
  81. package/dist/features/insertOpenUI5PopupStyles.js +9 -0
  82. package/dist/features/insertOpenUI5PopupStyles.js.map +1 -0
  83. package/dist/features/patchPatcher.d.ts +7 -6
  84. package/dist/features/patchPatcher.js +14 -4
  85. package/dist/features/patchPatcher.js.map +1 -1
  86. package/dist/features/patchPopup.d.ts +26 -8
  87. package/dist/features/patchPopup.js +118 -25
  88. package/dist/features/patchPopup.js.map +1 -1
  89. package/dist/generated/AssetParameters.js +1 -1
  90. package/dist/generated/AssetParameters.js.map +1 -1
  91. package/dist/generated/VersionInfo.js +4 -4
  92. package/dist/generated/VersionInfo.js.map +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_en.json +1 -0
  94. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  95. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  96. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  97. package/dist/generated/css/FontFace.css.d.ts +1 -1
  98. package/dist/generated/css/FontFace.css.js +36 -1
  99. package/dist/generated/css/FontFace.css.js.map +1 -1
  100. package/dist/generated/css/MultipleDragGhost.css.d.ts +2 -0
  101. package/dist/generated/css/MultipleDragGhost.css.js +2 -0
  102. package/dist/generated/css/MultipleDragGhost.css.js.map +1 -0
  103. package/dist/generated/css/OpenUI5PopupStyles.css.d.ts +2 -0
  104. package/dist/generated/css/OpenUI5PopupStyles.css.js +2 -0
  105. package/dist/generated/css/OpenUI5PopupStyles.css.js.map +1 -0
  106. package/dist/generated/css/ScrollbarStyles.css.d.ts +2 -0
  107. package/dist/generated/css/ScrollbarStyles.css.js +2 -0
  108. package/dist/generated/css/ScrollbarStyles.css.js.map +1 -0
  109. package/dist/generated/css/SystemCSSVars.css.d.ts +1 -1
  110. package/dist/generated/css/SystemCSSVars.css.js +1 -1
  111. package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
  112. package/dist/generated/i18n/i18n-defaults.d.ts +3 -0
  113. package/dist/generated/i18n/i18n-defaults.js +3 -0
  114. package/dist/generated/i18n/i18n-defaults.js.map +1 -0
  115. package/dist/generated/json-imports/i18n-fetch.d.ts +1 -0
  116. package/dist/generated/json-imports/i18n-fetch.js +2 -0
  117. package/dist/generated/json-imports/i18n-fetch.js.map +1 -0
  118. package/dist/generated/json-imports/i18n-node.d.ts +1 -0
  119. package/dist/generated/json-imports/i18n-node.js +2 -0
  120. package/dist/generated/json-imports/i18n-node.js.map +1 -0
  121. package/dist/generated/json-imports/i18n.d.ts +1 -0
  122. package/dist/generated/json-imports/i18n.js +2 -0
  123. package/dist/generated/json-imports/i18n.js.map +1 -0
  124. package/dist/index.d.ts +44 -3
  125. package/dist/index.js +91 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/jsx-runtime.d.ts +1 -0
  128. package/dist/jsx-runtime.js.map +1 -1
  129. package/dist/jsx-utils.js +11 -2
  130. package/dist/jsx-utils.js.map +1 -1
  131. package/dist/locale/nextFallbackLocale.js +6 -2
  132. package/dist/locale/nextFallbackLocale.js.map +1 -1
  133. package/dist/prod/AssetRegistry.js +2 -0
  134. package/dist/prod/AssetRegistry.js.map +7 -0
  135. package/dist/prod/Assets-fetch.js +2 -0
  136. package/dist/prod/Assets-fetch.js.map +7 -0
  137. package/dist/prod/Assets-node.js +2 -0
  138. package/dist/prod/Assets-node.js.map +7 -0
  139. package/dist/prod/Assets.js +2 -0
  140. package/dist/prod/Assets.js.map +7 -0
  141. package/dist/prod/Boot.js +2 -0
  142. package/dist/prod/Boot.js.map +7 -0
  143. package/dist/prod/CustomElementsRegistry.js +10 -0
  144. package/dist/prod/CustomElementsRegistry.js.map +7 -0
  145. package/dist/prod/CustomElementsScope.js +2 -0
  146. package/dist/prod/CustomElementsScope.js.map +7 -0
  147. package/dist/prod/CustomElementsScopeUtils.js +2 -0
  148. package/dist/prod/CustomElementsScopeUtils.js.map +7 -0
  149. package/dist/prod/DOMObserver.js +2 -0
  150. package/dist/prod/DOMObserver.js.map +7 -0
  151. package/dist/prod/Device.js +2 -0
  152. package/dist/prod/Device.js.map +7 -0
  153. package/dist/prod/DragAndDrop.js +2 -0
  154. package/dist/prod/DragAndDrop.js.map +7 -0
  155. package/dist/prod/EventProvider.js +2 -0
  156. package/dist/prod/EventProvider.js.map +7 -0
  157. package/dist/prod/FeaturesRegistry.js +2 -0
  158. package/dist/prod/FeaturesRegistry.js.map +7 -0
  159. package/dist/prod/FontFace.js +2 -0
  160. package/dist/prod/FontFace.js.map +7 -0
  161. package/dist/prod/IgnoreCustomElements.js +2 -0
  162. package/dist/prod/IgnoreCustomElements.js.map +7 -0
  163. package/dist/prod/InitialConfiguration.js +2 -0
  164. package/dist/prod/InitialConfiguration.js.map +7 -0
  165. package/dist/prod/Keys.js +2 -0
  166. package/dist/prod/Keys.js.map +7 -0
  167. package/dist/prod/Location.js +2 -0
  168. package/dist/prod/Location.js.map +7 -0
  169. package/dist/prod/ManagedStyles.js +2 -0
  170. package/dist/prod/ManagedStyles.js.map +7 -0
  171. package/dist/prod/MediaRange.js +2 -0
  172. package/dist/prod/MediaRange.js.map +7 -0
  173. package/dist/prod/PropertiesFileFormat.js +3 -0
  174. package/dist/prod/PropertiesFileFormat.js.map +7 -0
  175. package/dist/prod/Render.js +2 -0
  176. package/dist/prod/Render.js.map +7 -0
  177. package/dist/prod/RenderQueue.js +2 -0
  178. package/dist/prod/RenderQueue.js.map +7 -0
  179. package/dist/prod/Runtimes.js +2 -0
  180. package/dist/prod/Runtimes.js.map +7 -0
  181. package/dist/prod/ScrollbarStyles.js +2 -0
  182. package/dist/prod/ScrollbarStyles.js.map +7 -0
  183. package/dist/prod/SystemCSSVars.js +2 -0
  184. package/dist/prod/SystemCSSVars.js.map +7 -0
  185. package/dist/prod/Theming.js +2 -0
  186. package/dist/prod/Theming.js.map +7 -0
  187. package/dist/prod/UI5Element.js +2 -0
  188. package/dist/prod/UI5Element.js.map +7 -0
  189. package/dist/prod/UI5ElementMetadata.js +2 -0
  190. package/dist/prod/UI5ElementMetadata.js.map +7 -0
  191. package/dist/prod/animations/AnimationQueue.js +2 -0
  192. package/dist/prod/animations/AnimationQueue.js.map +7 -0
  193. package/dist/prod/animations/animate.js +2 -0
  194. package/dist/prod/animations/animate.js.map +7 -0
  195. package/dist/prod/animations/scroll.js +2 -0
  196. package/dist/prod/animations/scroll.js.map +7 -0
  197. package/dist/prod/animations/slideDown.js +2 -0
  198. package/dist/prod/animations/slideDown.js.map +7 -0
  199. package/dist/prod/animations/slideUp.js +2 -0
  200. package/dist/prod/animations/slideUp.js.map +7 -0
  201. package/dist/prod/asset-registries/Icons.js +2 -0
  202. package/dist/prod/asset-registries/Icons.js.map +7 -0
  203. package/dist/prod/asset-registries/Illustrations.js +2 -0
  204. package/dist/prod/asset-registries/Illustrations.js.map +7 -0
  205. package/dist/prod/asset-registries/LocaleData.js +2 -0
  206. package/dist/prod/asset-registries/LocaleData.js.map +7 -0
  207. package/dist/prod/asset-registries/Themes.js +2 -0
  208. package/dist/prod/asset-registries/Themes.js.map +7 -0
  209. package/dist/prod/asset-registries/i18n.js +2 -0
  210. package/dist/prod/asset-registries/i18n.js.map +7 -0
  211. package/dist/prod/asset-registries/util/IconCollectionsAlias.js +2 -0
  212. package/dist/prod/asset-registries/util/IconCollectionsAlias.js.map +7 -0
  213. package/dist/prod/asset-registries/util/IconCollectionsByTheme.js +2 -0
  214. package/dist/prod/asset-registries/util/IconCollectionsByTheme.js.map +7 -0
  215. package/dist/prod/asset-registries/util/getIconCollectionByTheme.js +2 -0
  216. package/dist/prod/asset-registries/util/getIconCollectionByTheme.js.map +7 -0
  217. package/dist/prod/config/AnimationMode.js +2 -0
  218. package/dist/prod/config/AnimationMode.js.map +7 -0
  219. package/dist/prod/config/CalendarType.js +2 -0
  220. package/dist/prod/config/CalendarType.js.map +7 -0
  221. package/dist/prod/config/ConfigurationReset.js +2 -0
  222. package/dist/prod/config/ConfigurationReset.js.map +7 -0
  223. package/dist/prod/config/Fonts.js +2 -0
  224. package/dist/prod/config/Fonts.js.map +7 -0
  225. package/dist/prod/config/FormatSettings.js +2 -0
  226. package/dist/prod/config/FormatSettings.js.map +7 -0
  227. package/dist/prod/config/Icons.js +2 -0
  228. package/dist/prod/config/Icons.js.map +7 -0
  229. package/dist/prod/config/Language.js +2 -0
  230. package/dist/prod/config/Language.js.map +7 -0
  231. package/dist/prod/config/NoConflict.js +2 -0
  232. package/dist/prod/config/NoConflict.js.map +7 -0
  233. package/dist/prod/config/Theme.js +2 -0
  234. package/dist/prod/config/Theme.js.map +7 -0
  235. package/dist/prod/config/ThemeRoot.js +2 -0
  236. package/dist/prod/config/ThemeRoot.js.map +7 -0
  237. package/dist/prod/config/Timezone.js +2 -0
  238. package/dist/prod/config/Timezone.js.map +7 -0
  239. package/dist/prod/config/Tooltips.js +2 -0
  240. package/dist/prod/config/Tooltips.js.map +7 -0
  241. package/dist/prod/connectToComponent.js +2 -0
  242. package/dist/prod/connectToComponent.js.map +7 -0
  243. package/dist/prod/converters/DOMReference.js +2 -0
  244. package/dist/prod/converters/DOMReference.js.map +7 -0
  245. package/dist/prod/decorators/bound.js +2 -0
  246. package/dist/prod/decorators/bound.js.map +7 -0
  247. package/dist/prod/decorators/customElement.js +2 -0
  248. package/dist/prod/decorators/customElement.js.map +7 -0
  249. package/dist/prod/decorators/event-strict.js +2 -0
  250. package/dist/prod/decorators/event-strict.js.map +7 -0
  251. package/dist/prod/decorators/event.js +2 -0
  252. package/dist/prod/decorators/event.js.map +7 -0
  253. package/dist/prod/decorators/i18n.js +2 -0
  254. package/dist/prod/decorators/i18n.js.map +7 -0
  255. package/dist/prod/decorators/property.js +2 -0
  256. package/dist/prod/decorators/property.js.map +7 -0
  257. package/dist/prod/decorators/query.js +2 -0
  258. package/dist/prod/decorators/query.js.map +7 -0
  259. package/dist/prod/decorators/queryAll.js +2 -0
  260. package/dist/prod/decorators/queryAll.js.map +7 -0
  261. package/dist/prod/decorators/slot.js +2 -0
  262. package/dist/prod/decorators/slot.js.map +7 -0
  263. package/dist/prod/decorators.js +2 -0
  264. package/dist/prod/decorators.js.map +7 -0
  265. package/dist/prod/delegate/ItemNavigation.js +2 -0
  266. package/dist/prod/delegate/ItemNavigation.js.map +7 -0
  267. package/dist/prod/delegate/ResizeHandler.js +2 -0
  268. package/dist/prod/delegate/ResizeHandler.js.map +7 -0
  269. package/dist/prod/delegate/ScrollEnablement.js +2 -0
  270. package/dist/prod/delegate/ScrollEnablement.js.map +7 -0
  271. package/dist/prod/features/F6Navigation.js +2 -0
  272. package/dist/prod/features/F6Navigation.js.map +7 -0
  273. package/dist/prod/features/InputElementsFormSupport.js +2 -0
  274. package/dist/prod/features/InputElementsFormSupport.js.map +7 -0
  275. package/dist/prod/features/LegacyDateFormats.js +2 -0
  276. package/dist/prod/features/LegacyDateFormats.js.map +7 -0
  277. package/dist/prod/features/OpenUI5Element.js +2 -0
  278. package/dist/prod/features/OpenUI5Element.js.map +7 -0
  279. package/dist/prod/features/OpenUI5Enablement.js +21 -0
  280. package/dist/prod/features/OpenUI5Enablement.js.map +7 -0
  281. package/dist/prod/features/OpenUI5Support.js +2 -0
  282. package/dist/prod/features/OpenUI5Support.js.map +7 -0
  283. package/dist/prod/features/insertOpenUI5PopupStyles.js +2 -0
  284. package/dist/prod/features/insertOpenUI5PopupStyles.js.map +7 -0
  285. package/dist/prod/features/patchPatcher.js +2 -0
  286. package/dist/prod/features/patchPatcher.js.map +7 -0
  287. package/dist/prod/features/patchPopup.js +2 -0
  288. package/dist/prod/features/patchPopup.js.map +7 -0
  289. package/dist/prod/generated/AssetParameters.js +2 -0
  290. package/dist/prod/generated/AssetParameters.js.map +7 -0
  291. package/dist/prod/generated/VersionInfo.js +2 -0
  292. package/dist/prod/generated/VersionInfo.js.map +7 -0
  293. package/dist/prod/generated/assets/i18n/messagebundle_en.json +1 -0
  294. package/dist/prod/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  295. package/dist/prod/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  296. package/dist/prod/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  297. package/dist/prod/generated/css/BusyIndicator.css.js +2 -0
  298. package/dist/prod/generated/css/BusyIndicator.css.js.map +7 -0
  299. package/dist/prod/generated/css/FontFace.css.js +37 -0
  300. package/dist/prod/generated/css/FontFace.css.js.map +7 -0
  301. package/dist/prod/generated/css/MultipleDragGhost.css.js +2 -0
  302. package/dist/prod/generated/css/MultipleDragGhost.css.js.map +7 -0
  303. package/dist/prod/generated/css/OpenUI5PopupStyles.css.js +2 -0
  304. package/dist/prod/generated/css/OpenUI5PopupStyles.css.js.map +7 -0
  305. package/dist/prod/generated/css/ScrollbarStyles.css.js +2 -0
  306. package/dist/prod/generated/css/ScrollbarStyles.css.js.map +7 -0
  307. package/dist/prod/generated/css/SystemCSSVars.css.js +2 -0
  308. package/dist/prod/generated/css/SystemCSSVars.css.js.map +7 -0
  309. package/dist/prod/generated/i18n/i18n-defaults.js +2 -0
  310. package/dist/prod/generated/i18n/i18n-defaults.js.map +7 -0
  311. package/dist/prod/generated/json-imports/i18n-fetch.js +2 -0
  312. package/dist/prod/generated/json-imports/i18n-fetch.js.map +7 -0
  313. package/dist/prod/generated/json-imports/i18n-node.js +2 -0
  314. package/dist/prod/generated/json-imports/i18n-node.js.map +7 -0
  315. package/dist/prod/generated/json-imports/i18n.js +2 -0
  316. package/dist/prod/generated/json-imports/i18n.js.map +7 -0
  317. package/dist/prod/getSharedResource.js +2 -0
  318. package/dist/prod/getSharedResource.js.map +7 -0
  319. package/dist/prod/global.d.js +2 -0
  320. package/dist/prod/global.d.js.map +7 -0
  321. package/dist/prod/i18nBundle.js +2 -0
  322. package/dist/prod/i18nBundle.js.map +7 -0
  323. package/dist/prod/index.js +2 -0
  324. package/dist/prod/index.js.map +7 -0
  325. package/dist/prod/jsx-dev-runtime.js +2 -0
  326. package/dist/prod/jsx-dev-runtime.js.map +7 -0
  327. package/dist/prod/jsx-runtime.js +2 -0
  328. package/dist/prod/jsx-runtime.js.map +7 -0
  329. package/dist/prod/jsx-utils.js +2 -0
  330. package/dist/prod/jsx-utils.js.map +7 -0
  331. package/dist/prod/locale/Locale.js +2 -0
  332. package/dist/prod/locale/Locale.js.map +7 -0
  333. package/dist/prod/locale/RTLAwareRegistry.js +2 -0
  334. package/dist/prod/locale/RTLAwareRegistry.js.map +7 -0
  335. package/dist/prod/locale/applyDirection.js +2 -0
  336. package/dist/prod/locale/applyDirection.js.map +7 -0
  337. package/dist/prod/locale/directionChange.js +2 -0
  338. package/dist/prod/locale/directionChange.js.map +7 -0
  339. package/dist/prod/locale/getEffectiveDir.js +2 -0
  340. package/dist/prod/locale/getEffectiveDir.js.map +7 -0
  341. package/dist/prod/locale/getLocale.js +2 -0
  342. package/dist/prod/locale/getLocale.js.map +7 -0
  343. package/dist/prod/locale/languageChange.js +2 -0
  344. package/dist/prod/locale/languageChange.js.map +7 -0
  345. package/dist/prod/locale/nextFallbackLocale.js +2 -0
  346. package/dist/prod/locale/nextFallbackLocale.js.map +7 -0
  347. package/dist/prod/locale/normalizeLocale.js +2 -0
  348. package/dist/prod/locale/normalizeLocale.js.map +7 -0
  349. package/dist/prod/renderer/JsxRenderer.js +2 -0
  350. package/dist/prod/renderer/JsxRenderer.js.map +7 -0
  351. package/dist/prod/renderer/LitRenderer.js +2 -0
  352. package/dist/prod/renderer/LitRenderer.js.map +7 -0
  353. package/dist/prod/renderer/directives/style-map.js +6 -0
  354. package/dist/prod/renderer/directives/style-map.js.map +7 -0
  355. package/dist/prod/renderer/executeTemplate.js +2 -0
  356. package/dist/prod/renderer/executeTemplate.js.map +7 -0
  357. package/dist/prod/sap/base/Log.js +750 -0
  358. package/dist/prod/sap/base/assert.js +34 -0
  359. package/dist/prod/sap/base/config/MemoryConfigurationProvider.js +20 -0
  360. package/dist/prod/sap/base/security/URLListValidator.js +406 -0
  361. package/dist/prod/sap/base/security/encodeCSS.js +40 -0
  362. package/dist/prod/sap/base/security/encodeXML.js +53 -0
  363. package/dist/prod/sap/base/security/sanitizeHTML.js +38 -0
  364. package/dist/prod/sap/base/strings/toHex.js +33 -0
  365. package/dist/prod/sap/base/util/now.js +28 -0
  366. package/dist/prod/sap/base/util/uid.js +27 -0
  367. package/dist/prod/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
  368. package/dist/prod/ssr-dom-shim.js +2 -0
  369. package/dist/prod/ssr-dom-shim.js.map +7 -0
  370. package/dist/prod/ssr-dom.js +2 -0
  371. package/dist/prod/ssr-dom.js.map +7 -0
  372. package/dist/prod/theming/CustomStyle.js +2 -0
  373. package/dist/prod/theming/CustomStyle.js.map +7 -0
  374. package/dist/prod/theming/ThemeLoaded.js +2 -0
  375. package/dist/prod/theming/ThemeLoaded.js.map +7 -0
  376. package/dist/prod/theming/ThemeRegistered.js +2 -0
  377. package/dist/prod/theming/ThemeRegistered.js.map +7 -0
  378. package/dist/prod/theming/applyTheme.js +2 -0
  379. package/dist/prod/theming/applyTheme.js.map +7 -0
  380. package/dist/prod/theming/componentStyles.js +3 -0
  381. package/dist/prod/theming/componentStyles.js.map +7 -0
  382. package/dist/prod/theming/getConstructableStyle.js +2 -0
  383. package/dist/prod/theming/getConstructableStyle.js.map +7 -0
  384. package/dist/prod/theming/getEffectiveStyle.js +2 -0
  385. package/dist/prod/theming/getEffectiveStyle.js.map +7 -0
  386. package/dist/prod/theming/getStylesString.js +2 -0
  387. package/dist/prod/theming/getStylesString.js.map +7 -0
  388. package/dist/prod/theming/getThemeDesignerTheme.js +2 -0
  389. package/dist/prod/theming/getThemeDesignerTheme.js.map +7 -0
  390. package/dist/prod/thirdparty/_merge.js +2 -0
  391. package/dist/prod/thirdparty/_merge.js.map +7 -0
  392. package/dist/prod/thirdparty/isPlainObject.js +2 -0
  393. package/dist/prod/thirdparty/isPlainObject.js.map +7 -0
  394. package/dist/prod/thirdparty/merge.js +2 -0
  395. package/dist/prod/thirdparty/merge.js.map +7 -0
  396. package/dist/prod/thirdparty/preact/jsx.d.js +2 -0
  397. package/dist/prod/thirdparty/preact/jsx.d.js.map +7 -0
  398. package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js +2 -0
  399. package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js.map +7 -0
  400. package/dist/prod/thirdparty/preact/jsxRuntime.module.js +1 -0
  401. package/dist/prod/thirdparty/preact/preact.module.d.js +2 -0
  402. package/dist/prod/thirdparty/preact/preact.module.d.js.map +7 -0
  403. package/dist/prod/thirdparty/preact/preact.module.js +1 -0
  404. package/dist/prod/types/AnimationMode.js +2 -0
  405. package/dist/prod/types/AnimationMode.js.map +7 -0
  406. package/dist/prod/types/CalendarType.js +2 -0
  407. package/dist/prod/types/CalendarType.js.map +7 -0
  408. package/dist/prod/types/InvisibleMessageMode.js +2 -0
  409. package/dist/prod/types/InvisibleMessageMode.js.map +7 -0
  410. package/dist/prod/types/ItemNavigationBehavior.js +2 -0
  411. package/dist/prod/types/ItemNavigationBehavior.js.map +7 -0
  412. package/dist/prod/types/MovePlacement.js +2 -0
  413. package/dist/prod/types/MovePlacement.js.map +7 -0
  414. package/dist/prod/types/NavigationMode.js +2 -0
  415. package/dist/prod/types/NavigationMode.js.map +7 -0
  416. package/dist/prod/types/Orientation.js +2 -0
  417. package/dist/prod/types/Orientation.js.map +7 -0
  418. package/dist/prod/types/SortOrder.js +2 -0
  419. package/dist/prod/types/SortOrder.js.map +7 -0
  420. package/dist/prod/types/ValueState.js +2 -0
  421. package/dist/prod/types/ValueState.js.map +7 -0
  422. package/dist/prod/types.js +2 -0
  423. package/dist/prod/types.js.map +7 -0
  424. package/dist/prod/updateShadowRoot.js +2 -0
  425. package/dist/prod/updateShadowRoot.js.map +7 -0
  426. package/dist/prod/util/AccessibilityTextsHelper.js +2 -0
  427. package/dist/prod/util/AccessibilityTextsHelper.js.map +7 -0
  428. package/dist/prod/util/Caret.js +2 -0
  429. package/dist/prod/util/Caret.js.map +7 -0
  430. package/dist/prod/util/ColorConversion.js +2 -0
  431. package/dist/prod/util/ColorConversion.js.map +7 -0
  432. package/dist/prod/util/FetchHelper.js +2 -0
  433. package/dist/prod/util/FetchHelper.js.map +7 -0
  434. package/dist/prod/util/FocusableElements.js +2 -0
  435. package/dist/prod/util/FocusableElements.js.map +7 -0
  436. package/dist/prod/util/HTMLSanitizer.js +2 -0
  437. package/dist/prod/util/HTMLSanitizer.js.map +7 -0
  438. package/dist/prod/util/InvisibleMessage.js +2 -0
  439. package/dist/prod/util/InvisibleMessage.js.map +7 -0
  440. package/dist/prod/util/PopupUtils.js +2 -0
  441. package/dist/prod/util/PopupUtils.js.map +7 -0
  442. package/dist/prod/util/SelectionAssistant.js +2 -0
  443. package/dist/prod/util/SelectionAssistant.js.map +7 -0
  444. package/dist/prod/util/SlotsHelper.js +2 -0
  445. package/dist/prod/util/SlotsHelper.js.map +7 -0
  446. package/dist/prod/util/StringHelper.js +2 -0
  447. package/dist/prod/util/StringHelper.js.map +7 -0
  448. package/dist/prod/util/TabbableElements.js +2 -0
  449. package/dist/prod/util/TabbableElements.js.map +7 -0
  450. package/dist/prod/util/arraysAreEqual.js +2 -0
  451. package/dist/prod/util/arraysAreEqual.js.map +7 -0
  452. package/dist/prod/util/clamp.js +2 -0
  453. package/dist/prod/util/clamp.js.map +7 -0
  454. package/dist/prod/util/createInstanceChecker.js +2 -0
  455. package/dist/prod/util/createInstanceChecker.js.map +7 -0
  456. package/dist/prod/util/createLinkInHead.js +2 -0
  457. package/dist/prod/util/createLinkInHead.js.map +7 -0
  458. package/dist/prod/util/debounce.js +2 -0
  459. package/dist/prod/util/debounce.js.map +7 -0
  460. package/dist/prod/util/detectNavigatorLanguage.js +2 -0
  461. package/dist/prod/util/detectNavigatorLanguage.js.map +7 -0
  462. package/dist/prod/util/dragAndDrop/DragRegistry.js +2 -0
  463. package/dist/prod/util/dragAndDrop/DragRegistry.js.map +7 -0
  464. package/dist/prod/util/dragAndDrop/findClosestPosition.js +2 -0
  465. package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +7 -0
  466. package/dist/prod/util/dragAndDrop/handleDragOver.js +2 -0
  467. package/dist/prod/util/dragAndDrop/handleDragOver.js.map +7 -0
  468. package/dist/prod/util/dragAndDrop/handleDrop.js +2 -0
  469. package/dist/prod/util/dragAndDrop/handleDrop.js.map +7 -0
  470. package/dist/prod/util/dragAndDrop/longDragOverHandler.js +2 -0
  471. package/dist/prod/util/dragAndDrop/longDragOverHandler.js.map +7 -0
  472. package/dist/prod/util/escapeRegex.js +2 -0
  473. package/dist/prod/util/escapeRegex.js.map +7 -0
  474. package/dist/prod/util/fixSafariActiveState.js +2 -0
  475. package/dist/prod/util/fixSafariActiveState.js.map +7 -0
  476. package/dist/prod/util/formatMessage.js +2 -0
  477. package/dist/prod/util/formatMessage.js.map +7 -0
  478. package/dist/prod/util/generateHighlightedMarkup.js +2 -0
  479. package/dist/prod/util/generateHighlightedMarkup.js.map +7 -0
  480. package/dist/prod/util/getActiveElement.js +2 -0
  481. package/dist/prod/util/getActiveElement.js.map +7 -0
  482. package/dist/prod/util/getClassCopy.js +2 -0
  483. package/dist/prod/util/getClassCopy.js.map +7 -0
  484. package/dist/prod/util/getDesigntimePropertyAsArray.js +2 -0
  485. package/dist/prod/util/getDesigntimePropertyAsArray.js.map +7 -0
  486. package/dist/prod/util/getEffectiveContentDensity.js +2 -0
  487. package/dist/prod/util/getEffectiveContentDensity.js.map +7 -0
  488. package/dist/prod/util/getFastNavigationGroups.js +2 -0
  489. package/dist/prod/util/getFastNavigationGroups.js.map +7 -0
  490. package/dist/prod/util/getFileExtension.js +2 -0
  491. package/dist/prod/util/getFileExtension.js.map +7 -0
  492. package/dist/prod/util/getNormalizedTarget.js +2 -0
  493. package/dist/prod/util/getNormalizedTarget.js.map +7 -0
  494. package/dist/prod/util/getParentElement.js +2 -0
  495. package/dist/prod/util/getParentElement.js.map +7 -0
  496. package/dist/prod/util/getSingletonElementInstance.js +2 -0
  497. package/dist/prod/util/getSingletonElementInstance.js.map +7 -0
  498. package/dist/prod/util/hash2str.js +2 -0
  499. package/dist/prod/util/hash2str.js.map +7 -0
  500. package/dist/prod/util/isElementClickable.js +2 -0
  501. package/dist/prod/util/isElementClickable.js.map +7 -0
  502. package/dist/prod/util/isElementHidden.js +2 -0
  503. package/dist/prod/util/isElementHidden.js.map +7 -0
  504. package/dist/prod/util/isElementInView.js +2 -0
  505. package/dist/prod/util/isElementInView.js.map +7 -0
  506. package/dist/prod/util/isElementTabbable.js +2 -0
  507. package/dist/prod/util/isElementTabbable.js.map +7 -0
  508. package/dist/prod/util/isEventMarked.js +2 -0
  509. package/dist/prod/util/isEventMarked.js.map +7 -0
  510. package/dist/prod/util/isValidPropertyName.js +2 -0
  511. package/dist/prod/util/isValidPropertyName.js.map +7 -0
  512. package/dist/prod/util/throttle.js +2 -0
  513. package/dist/prod/util/throttle.js.map +7 -0
  514. package/dist/prod/util/toLowercaseEnumValue.js +2 -0
  515. package/dist/prod/util/toLowercaseEnumValue.js.map +7 -0
  516. package/dist/prod/util/valueStateNavigation.js +2 -0
  517. package/dist/prod/util/valueStateNavigation.js.map +7 -0
  518. package/dist/prod/util/whenDOMReady.js +2 -0
  519. package/dist/prod/util/whenDOMReady.js.map +7 -0
  520. package/dist/prod/util/willShowContent.js +2 -0
  521. package/dist/prod/util/willShowContent.js.map +7 -0
  522. package/dist/prod/validateThemeRoot.js +2 -0
  523. package/dist/prod/validateThemeRoot.js.map +7 -0
  524. package/dist/renderer/JsxRenderer.js +12 -2
  525. package/dist/renderer/JsxRenderer.js.map +1 -1
  526. package/dist/ssr-dom-shim.js +2 -1
  527. package/dist/ssr-dom-shim.js.map +1 -1
  528. package/dist/theming/applyTheme.d.ts +2 -0
  529. package/dist/theming/applyTheme.js +20 -5
  530. package/dist/theming/applyTheme.js.map +1 -1
  531. package/dist/theming/componentStyles.d.ts +3 -0
  532. package/dist/theming/componentStyles.js +15 -0
  533. package/dist/theming/componentStyles.js.map +1 -0
  534. package/dist/thirdparty/preact/jsx.d.ts +1 -1
  535. package/dist/thirdparty/preact/jsxRuntime.module.d.ts +3 -3
  536. package/dist/thirdparty/preact/preact.module.js +1 -1
  537. package/dist/types.d.ts +9 -3
  538. package/dist/types.js.map +1 -1
  539. package/dist/updateShadowRoot.js +2 -1
  540. package/dist/updateShadowRoot.js.map +1 -1
  541. package/dist/util/FocusableElements.js +31 -5
  542. package/dist/util/FocusableElements.js.map +1 -1
  543. package/dist/util/HTMLSanitizer.d.ts +2 -0
  544. package/dist/util/HTMLSanitizer.js +2 -2
  545. package/dist/util/HTMLSanitizer.js.map +1 -1
  546. package/dist/util/SelectionAssistant.js +0 -8
  547. package/dist/util/SelectionAssistant.js.map +1 -1
  548. package/dist/util/TabbableElements.js +2 -2
  549. package/dist/util/TabbableElements.js.map +1 -1
  550. package/dist/util/createInstanceChecker.d.ts +2 -0
  551. package/dist/util/createInstanceChecker.js +7 -0
  552. package/dist/util/createInstanceChecker.js.map +1 -0
  553. package/dist/util/dragAndDrop/DragRegistry.d.ts +14 -8
  554. package/dist/util/dragAndDrop/DragRegistry.js +42 -50
  555. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -1
  556. package/dist/util/dragAndDrop/findClosestPosition.d.ts +2 -1
  557. package/dist/util/dragAndDrop/findClosestPosition.js +45 -41
  558. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -1
  559. package/dist/util/getClassCopy.d.ts +5 -3
  560. package/dist/util/getParentElement.d.ts +2 -0
  561. package/dist/util/getParentElement.js +5 -0
  562. package/dist/util/getParentElement.js.map +1 -0
  563. package/dist/util/isElementHidden.js +2 -1
  564. package/dist/util/isElementHidden.js.map +1 -1
  565. package/dist/util/isEventMarked.d.ts +2 -0
  566. package/dist/util/isEventMarked.js +6 -0
  567. package/dist/util/isEventMarked.js.map +1 -0
  568. package/dist/util/valueStateNavigation.d.ts +8 -0
  569. package/dist/util/valueStateNavigation.js +40 -0
  570. package/dist/util/valueStateNavigation.js.map +1 -0
  571. package/dist/validateThemeRoot.js +6 -2
  572. package/dist/validateThemeRoot.js.map +1 -1
  573. package/dist/vscode.html-custom-data.json +22 -0
  574. package/package-scripts.cjs +65 -34
  575. package/package.json +33 -25
  576. package/src/css/MultipleDragGhost.css +17 -0
  577. package/src/css/OpenUI5PopupStyles.css +10 -0
  578. package/src/css/ScrollbarStyles.css +3 -0
  579. package/src/css/SystemCSSVars.css +28 -3
  580. package/src/i18n/messagebundle.properties +5 -0
  581. package/src/i18n/messagebundle_en.properties +2 -0
  582. package/src/i18n/messagebundle_en_US_sappsd.properties +2 -0
  583. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  584. package/src/i18n/messagebundle_en_US_saptrc.properties +2 -0
  585. package/src/thirdparty/preact/preact.module.js +1 -1
  586. package/tsconfig.json +0 -1
  587. package/cypress/specs/Accessor.cy.tsx +0 -79
  588. package/cypress/specs/Boot.cy.tsx +0 -19
  589. package/cypress/specs/ConfigurationChange.cy.tsx +0 -41
  590. package/cypress/specs/ConfigurationScript.cy.tsx +0 -117
  591. package/cypress/specs/ConfigurationURL.cy.tsx +0 -182
  592. package/cypress/specs/CustomMount.cy.tsx +0 -34
  593. package/cypress/specs/CustomTheme.cy.tsx +0 -36
  594. package/cypress/specs/EventProvider.cy.tsx +0 -59
  595. package/cypress/specs/SystemDOMElements.cy.tsx +0 -8
  596. package/cypress/specs/Theming.cy.tsx +0 -74
  597. package/cypress/specs/UI5ElementInvalidation.cy.tsx +0 -252
  598. package/cypress/specs/UI5ElementLifecycle.cy.tsx +0 -82
  599. package/cypress/specs/UI5ElementListenForChildPropChanges.cy.tsx +0 -83
  600. package/cypress/specs/UI5ElementMetadataExt.cy.tsx +0 -42
  601. package/cypress/specs/UI5ElementPropertyValidation.cy.tsx +0 -16
  602. package/cypress/specs/UI5ElementPropsAndAttrs.cy.tsx +0 -113
  603. package/cypress/specs/UI5ElementShadowDOM.cy.tsx +0 -30
  604. package/cypress/specs/UI5ElementSlots.cy.tsx +0 -136
  605. package/cypress/specs/WithComplexTemplate.cy.tsx +0 -32
  606. package/cypress/tsconfig.json +0 -22
  607. package/dist/css/FontFace.css +0 -96
  608. package/dist/css/OverrideFontFace.css +0 -32
  609. package/dist/generated/css/OverrideFontFace.css.d.ts +0 -2
  610. package/dist/generated/css/OverrideFontFace.css.js +0 -2
  611. package/dist/generated/css/OverrideFontFace.css.js.map +0 -1
  612. package/dist/util/getEffectiveScrollbarStyle.d.ts +0 -2
  613. package/dist/util/getEffectiveScrollbarStyle.js +0 -34
  614. package/dist/util/getEffectiveScrollbarStyle.js.map +0 -1
  615. package/index.js +0 -208
  616. package/src/css/FontFace.css +0 -96
  617. package/src/css/OverrideFontFace.css +0 -32
package/AGENTS.md ADDED
@@ -0,0 +1,193 @@
1
+ # CLAUDE.md - UI5 Web Components Development Guide
2
+
3
+ This file provides guidance for AI coding assistants when developing web components built on `@ui5/webcomponents-base`.
4
+
5
+ ## Component Architecture
6
+
7
+ Components use decorator-based definitions with Preact JSX templates:
8
+
9
+ ```typescript
10
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
11
+ import { customElement, property, slot } from "@ui5/webcomponents-base/dist/decorators.js";
12
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
13
+
14
+ @customElement({
15
+ tag: "my-button",
16
+ renderer: jsxRenderer,
17
+ template: MyButtonTemplate,
18
+ styles: myButtonCss,
19
+ languageAware: true, // Re-render on language change
20
+ themeAware: true, // Re-render on theme change
21
+ })
22
+ class MyButton extends UI5Element {
23
+ @property() design: `${ButtonDesign}` = "Default";
24
+ @property({ type: Boolean }) disabled = false;
25
+ @slot({ type: HTMLElement, "default": true }) content!: Array<HTMLElement>;
26
+ }
27
+ ```
28
+
29
+ **Recommended file structure for a component:**
30
+ - `src/ComponentName.ts` - Component class with decorators
31
+ - `src/ComponentNameTemplate.tsx` - JSX template
32
+ - `src/themes/ComponentName.css` - Styles (use CSS variables for theming)
33
+ - `src/i18n/messagebundle*.properties` - Translations (if language-aware)
34
+
35
+ ## Critical Development Rules
36
+
37
+ ### DOM Manipulation Anti-Pattern
38
+
39
+ Accessing DOM elements via `@query` or `querySelector` is allowed only for calling methods like `.focus()`:
40
+
41
+ ```typescript
42
+ @query("[ui5-input]")
43
+ _input!: Input;
44
+
45
+ // GOOD - calling methods
46
+ this._input?.focus();
47
+
48
+ // BAD - modifying properties directly
49
+ this._input.value = "don't do this";
50
+ ```
51
+
52
+ Always modify child component state through the template:
53
+
54
+ ```tsx
55
+ // GOOD - use the template for state
56
+ <Input value={this.inputValue} />
57
+ ```
58
+
59
+ ### Always Use Template Literal Types for Enums
60
+
61
+ This pattern eliminates runtime overhead from enum objects:
62
+
63
+ **Imports:**
64
+ ```typescript
65
+ // BAD - imports the enum object (runtime overhead)
66
+ import ButtonDesign from "./types/ButtonDesign.js";
67
+
68
+ // GOOD - import type only (no runtime overhead)
69
+ import type ButtonDesign from "./types/ButtonDesign.js";
70
+ ```
71
+
72
+ **Property types:**
73
+ ```typescript
74
+ // BAD - uses enum object at runtime
75
+ design: ButtonDesign = ButtonDesign.Default;
76
+
77
+ // GOOD - template literal type with string value
78
+ design: `${ButtonDesign}` = "Default";
79
+ ```
80
+
81
+ **Value comparisons:**
82
+ ```typescript
83
+ // BAD - runtime enum access
84
+ if (this.design !== ButtonDesign.Transparent) { }
85
+
86
+ // GOOD - string comparison (IDE autocomplete + TS type safety)
87
+ if (this.design !== "Transparent") { }
88
+ ```
89
+
90
+ ### Scoping-Safe Code (Required for Micro-Frontend Support)
91
+
92
+ UI5 Web Components support tag name scoping for micro-frontend scenarios where multiple versions may coexist. Always use attribute selectors:
93
+
94
+ **In TypeScript:**
95
+ ```typescript
96
+ // BAD - hard-coded tag names break when scoped
97
+ this.shadowRoot.querySelector("ui5-popover")
98
+ element.tagName === "UI5-BUTTON"
99
+
100
+ // GOOD - attribute selectors work with any scoping
101
+ this.shadowRoot.querySelector("[ui5-popover]")
102
+ ```
103
+
104
+ **In CSS:**
105
+ ```css
106
+ /* BAD - tag selector breaks with scoping */
107
+ ui5-button.accept-btn { color: green; }
108
+
109
+ /* GOOD - attribute selector works with scoping */
110
+ [ui5-button].accept-btn { color: green; }
111
+ ```
112
+
113
+ ### No `instanceof` Checks
114
+
115
+ `instanceof` fails when multiple versions of the framework are loaded. Use duck-typing instead:
116
+
117
+ ```typescript
118
+ // BAD - fails with multiple framework versions
119
+ if (element instanceof Button) { }
120
+
121
+ // BAD - tag name could be scoped (e.g., "UI5-BUTTON-F5331039")
122
+ if (element.tagName === "UI5-BUTTON") { }
123
+
124
+ // GOOD - use createInstanceChecker helper
125
+ import createInstanceChecker from "@ui5/webcomponents-base/dist/util/createInstanceChecker.js";
126
+
127
+ // In your component class:
128
+ class MyItem extends UI5Element {
129
+ readonly isMyItem = true; // Duck-typing marker
130
+ }
131
+ export const isInstanceOfMyItem = createInstanceChecker<MyItem>("isMyItem");
132
+
133
+ // Usage:
134
+ if (isInstanceOfMyItem(element)) {
135
+ // element is typed as MyItem
136
+ }
137
+ ```
138
+
139
+ ### Property and Event Conventions
140
+
141
+ - **Never change public properties programmatically** - only in response to user interaction
142
+ - **Use `noAttribute: true`** for private/internal properties not used in CSS selectors
143
+ - **Fire events for all user interactions** - applications rely on events for state management
144
+ - **Import icons explicitly** - don't rely on bundled icon imports
145
+
146
+ ```typescript
147
+ @property({ noAttribute: true })
148
+ _internalState = false; // Won't create HTML attribute
149
+
150
+ // Fire events for user interactions
151
+ this.fireDecoratorEvent("change", { value: this.value });
152
+ ```
153
+
154
+ ## Testing with Cypress
155
+
156
+ Tests use Cypress component testing with JSX mounting:
157
+
158
+ ```typescript
159
+ import MyButton from "../../src/MyButton.js";
160
+
161
+ describe("MyButton", () => {
162
+ it("fires click event", () => {
163
+ cy.mount(<MyButton>Click me</MyButton>);
164
+
165
+ // Use attribute selector for scoping safety
166
+ cy.get("[my-button]").then(($btn) => {
167
+ $btn[0].addEventListener("click", cy.stub().as("clicked"));
168
+ });
169
+
170
+ // Use cypress-real-events for realistic interaction
171
+ cy.get("[my-button]").realClick();
172
+ cy.get("@clicked").should("have.been.called");
173
+ });
174
+ });
175
+ ```
176
+
177
+ **Key testing patterns:**
178
+ - Use `cypress-real-events`: `realClick()`, `realPress()`, `realType()` instead of Cypress simulated events
179
+ - Always use attribute selectors `[my-component]` not tag selectors `my-component`
180
+ - Use `.only` to run a single test case when debugging, remove before committing
181
+
182
+ ## Summary of Rules
183
+
184
+ | Rule | Bad | Good |
185
+ |------|-----|------|
186
+ | Enum imports | `import Enum from "..."` | `import type Enum from "..."` |
187
+ | Enum types | `prop: Enum` | `prop: \`${Enum}\`` |
188
+ | Enum values | `Enum.Value` | `"Value"` |
189
+ | DOM queries | `querySelector("ui5-tag")` | `querySelector("[ui5-tag]")` |
190
+ | CSS selectors | `ui5-tag { }` | `[ui5-tag] { }` |
191
+ | Type checks | `instanceof Component` | `isInstanceOfComponent(el)` |
192
+ | Tag comparison | `el.tagName === "UI5-TAG"` | Use instance checker |
193
+ | DOM mutation | `this._ref.value = x` | `<Comp value={x} />` in template |