@ui5/webcomponents-base 0.0.0-7b7921cd9 → 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 (300) hide show
  1. package/CHANGELOG.md +1055 -0
  2. package/README.md +2 -9
  3. package/config/wdio.conf.cjs +0 -8
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/AssetRegistry.d.ts +2 -2
  6. package/dist/AssetRegistry.js +2 -2
  7. package/dist/AssetRegistry.js.map +1 -1
  8. package/dist/Boot.d.ts +3 -2
  9. package/dist/Boot.js +8 -6
  10. package/dist/Boot.js.map +1 -1
  11. package/dist/CustomElementsScope.d.ts +4 -4
  12. package/dist/CustomElementsScope.js +2 -2
  13. package/dist/CustomElementsScope.js.map +1 -1
  14. package/dist/CustomElementsScopeUtils.d.ts +8 -1
  15. package/dist/CustomElementsScopeUtils.js +13 -1
  16. package/dist/CustomElementsScopeUtils.js.map +1 -1
  17. package/dist/Device.d.ts +2 -2
  18. package/dist/Device.js +14 -12
  19. package/dist/Device.js.map +1 -1
  20. package/dist/FontFace.js +1 -1
  21. package/dist/FontFace.js.map +1 -1
  22. package/dist/IgnoreCustomElements.d.ts +3 -5
  23. package/dist/IgnoreCustomElements.js +3 -5
  24. package/dist/IgnoreCustomElements.js.map +1 -1
  25. package/dist/InitialConfiguration.d.ts +2 -2
  26. package/dist/InitialConfiguration.js +7 -6
  27. package/dist/InitialConfiguration.js.map +1 -1
  28. package/dist/Keys.d.ts +7 -1
  29. package/dist/Keys.js +113 -106
  30. package/dist/Keys.js.map +1 -1
  31. package/dist/ManagedStyles.d.ts +5 -4
  32. package/dist/ManagedStyles.js +55 -60
  33. package/dist/ManagedStyles.js.map +1 -1
  34. package/dist/MediaRange.d.ts +6 -12
  35. package/dist/MediaRange.js +21 -31
  36. package/dist/MediaRange.js.map +1 -1
  37. package/dist/UI5Element.d.ts +48 -53
  38. package/dist/UI5Element.js +150 -101
  39. package/dist/UI5Element.js.map +1 -1
  40. package/dist/UI5ElementMetadata.d.ts +13 -13
  41. package/dist/UI5ElementMetadata.js +26 -15
  42. package/dist/UI5ElementMetadata.js.map +1 -1
  43. package/dist/asset-registries/Icons.d.ts +4 -3
  44. package/dist/asset-registries/Icons.js +28 -17
  45. package/dist/asset-registries/Icons.js.map +1 -1
  46. package/dist/asset-registries/Illustrations.d.ts +2 -0
  47. package/dist/asset-registries/Illustrations.js +51 -20
  48. package/dist/asset-registries/Illustrations.js.map +1 -1
  49. package/dist/asset-registries/LocaleData.js +1 -1
  50. package/dist/asset-registries/LocaleData.js.map +1 -1
  51. package/dist/asset-registries/Themes.d.ts +4 -3
  52. package/dist/asset-registries/Themes.js +26 -10
  53. package/dist/asset-registries/Themes.js.map +1 -1
  54. package/dist/asset-registries/i18n.d.ts +2 -2
  55. package/dist/asset-registries/i18n.js +4 -3
  56. package/dist/asset-registries/i18n.js.map +1 -1
  57. package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.d.ts +1 -2
  58. package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.js +1 -2
  59. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
  60. package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
  61. package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
  62. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
  63. package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
  64. package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
  65. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
  66. package/dist/config/AnimationMode.js +2 -1
  67. package/dist/config/AnimationMode.js.map +1 -1
  68. package/dist/config/CalendarType.d.ts +8 -1
  69. package/dist/config/CalendarType.js +18 -2
  70. package/dist/config/CalendarType.js.map +1 -1
  71. package/dist/config/Icons.d.ts +9 -24
  72. package/dist/config/Icons.js +8 -67
  73. package/dist/config/Icons.js.map +1 -1
  74. package/dist/config/Language.d.ts +1 -1
  75. package/dist/config/Language.js +6 -3
  76. package/dist/config/Language.js.map +1 -1
  77. package/dist/config/Theme.d.ts +4 -3
  78. package/dist/config/Theme.js +13 -6
  79. package/dist/config/Theme.js.map +1 -1
  80. package/dist/config/ThemeRoot.d.ts +2 -4
  81. package/dist/config/ThemeRoot.js +2 -4
  82. package/dist/config/ThemeRoot.js.map +1 -1
  83. package/dist/config/Timezone.d.ts +1 -1
  84. package/dist/config/Timezone.js +1 -1
  85. package/dist/config/Timezone.js.map +1 -1
  86. package/dist/connectToComponent.d.ts +9 -0
  87. package/dist/connectToComponent.js +59 -0
  88. package/dist/connectToComponent.js.map +1 -0
  89. package/dist/css/FontFace.css +47 -17
  90. package/dist/css/SystemCSSVars.css +0 -8
  91. package/dist/decorators/customElement.d.ts +3 -3
  92. package/dist/decorators/customElement.js +11 -6
  93. package/dist/decorators/customElement.js.map +1 -1
  94. package/dist/decorators/event.d.ts +5 -2
  95. package/dist/decorators/event.js.map +1 -1
  96. package/dist/decorators.d.ts +5 -0
  97. package/dist/decorators.js +6 -0
  98. package/dist/decorators.js.map +1 -0
  99. package/dist/delegate/ItemNavigation.d.ts +9 -8
  100. package/dist/delegate/ItemNavigation.js +13 -14
  101. package/dist/delegate/ItemNavigation.js.map +1 -1
  102. package/dist/delegate/ResizeHandler.d.ts +4 -6
  103. package/dist/delegate/ResizeHandler.js +4 -6
  104. package/dist/delegate/ResizeHandler.js.map +1 -1
  105. package/dist/delegate/ScrollEnablement.js +2 -2
  106. package/dist/delegate/ScrollEnablement.js.map +1 -1
  107. package/dist/features/InputElementsFormSupport.d.ts +18 -0
  108. package/dist/features/InputElementsFormSupport.js +40 -0
  109. package/dist/features/InputElementsFormSupport.js.map +1 -0
  110. package/dist/features/OpenUI5Enablement.d.ts +1 -1
  111. package/dist/features/OpenUI5Support.d.ts +13 -5
  112. package/dist/features/OpenUI5Support.js +87 -46
  113. package/dist/features/OpenUI5Support.js.map +1 -1
  114. package/dist/features/patchPatcher.d.ts +11 -0
  115. package/dist/features/patchPatcher.js +11 -0
  116. package/dist/features/patchPatcher.js.map +1 -0
  117. package/dist/features/patchPopup.d.ts +14 -0
  118. package/dist/features/patchPopup.js +50 -0
  119. package/dist/features/patchPopup.js.map +1 -0
  120. package/dist/generated/AssetParameters.d.ts +6 -0
  121. package/dist/generated/AssetParameters.js +3 -10
  122. package/dist/generated/AssetParameters.js.map +1 -0
  123. package/dist/generated/VersionInfo.d.ts +10 -0
  124. package/dist/generated/VersionInfo.js +9 -8
  125. package/dist/generated/VersionInfo.js.map +1 -0
  126. package/dist/generated/css/FontFace.css.js +1 -1
  127. package/dist/generated/css/FontFace.css.js.map +1 -1
  128. package/dist/generated/css/SystemCSSVars.css.js +1 -1
  129. package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
  130. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +1 -1
  131. package/dist/i18nBundle.d.ts +2 -4
  132. package/dist/i18nBundle.js +1 -4
  133. package/dist/i18nBundle.js.map +1 -1
  134. package/dist/locale/applyDirection.d.ts +3 -2
  135. package/dist/locale/applyDirection.js +3 -2
  136. package/dist/locale/applyDirection.js.map +1 -1
  137. package/dist/locale/getEffectiveDir.d.ts +1 -1
  138. package/dist/locale/getEffectiveDir.js +3 -19
  139. package/dist/locale/getEffectiveDir.js.map +1 -1
  140. package/dist/locale/timezoneChange.d.ts +5 -0
  141. package/dist/renderer/LitRenderer.d.ts +2 -2
  142. package/dist/renderer/LitRenderer.js +2 -8
  143. package/dist/renderer/LitRenderer.js.map +1 -1
  144. package/dist/renderer/directives/style-map.d.ts +13 -0
  145. package/dist/renderer/directives/style-map.js +59 -59
  146. package/dist/renderer/directives/style-map.js.map +1 -0
  147. package/dist/renderer/executeTemplate.d.ts +8 -0
  148. package/dist/renderer/executeTemplate.js +1 -0
  149. package/dist/renderer/executeTemplate.js.map +1 -1
  150. package/dist/sap/base/Log.js +698 -188
  151. package/dist/sap/base/assert.js +28 -1
  152. package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
  153. package/dist/sap/base/security/URLListValidator.js +253 -6
  154. package/dist/sap/base/security/encodeCSS.js +34 -8
  155. package/dist/sap/base/security/encodeXML.js +47 -17
  156. package/dist/sap/base/security/sanitizeHTML.js +35 -13
  157. package/dist/sap/base/strings/toHex.js +27 -2
  158. package/dist/sap/base/util/now.js +24 -3
  159. package/dist/sap/base/util/uid.js +27 -0
  160. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +112 -97
  161. package/dist/ssr-dom-shim.d.ts +1 -0
  162. package/dist/ssr-dom-shim.js +12 -0
  163. package/dist/ssr-dom-shim.js.map +1 -0
  164. package/dist/ssr-dom.d.ts +0 -0
  165. package/dist/ssr-dom.js +0 -0
  166. package/dist/theming/applyTheme.js +5 -5
  167. package/dist/theming/applyTheme.js.map +1 -1
  168. package/dist/theming/getConstructableStyle.d.ts +1 -1
  169. package/dist/theming/getConstructableStyle.js +3 -3
  170. package/dist/theming/getConstructableStyle.js.map +1 -1
  171. package/dist/theming/getEffectiveStyle.d.ts +1 -1
  172. package/dist/theming/getEffectiveStyle.js +5 -12
  173. package/dist/theming/getEffectiveStyle.js.map +1 -1
  174. package/dist/types/AnimationMode.d.ts +0 -8
  175. package/dist/types/AnimationMode.js +0 -8
  176. package/dist/types/AnimationMode.js.map +1 -1
  177. package/dist/types/AriaHasPopup.d.ts +32 -0
  178. package/dist/types/AriaHasPopup.js +34 -0
  179. package/dist/types/AriaHasPopup.js.map +1 -0
  180. package/dist/types/AriaLandmarkRole.d.ts +79 -0
  181. package/dist/types/AriaLandmarkRole.js +81 -0
  182. package/dist/types/AriaLandmarkRole.js.map +1 -0
  183. package/dist/types/AriaRole.d.ts +27 -0
  184. package/dist/types/AriaRole.js +29 -0
  185. package/dist/types/AriaRole.js.map +1 -0
  186. package/dist/types/CSSColor.d.ts +0 -4
  187. package/dist/types/CSSColor.js +0 -4
  188. package/dist/types/CSSColor.js.map +1 -1
  189. package/dist/types/CSSSize.d.ts +11 -0
  190. package/dist/types/CSSSize.js +14 -0
  191. package/dist/types/CSSSize.js.map +1 -0
  192. package/dist/types/CalendarType.d.ts +0 -9
  193. package/dist/types/CalendarType.js +0 -9
  194. package/dist/types/CalendarType.js.map +1 -1
  195. package/dist/types/DOMReference.d.ts +1 -5
  196. package/dist/types/DOMReference.js +1 -5
  197. package/dist/types/DOMReference.js.map +1 -1
  198. package/dist/types/DataType.d.ts +1 -6
  199. package/dist/types/DataType.js +1 -6
  200. package/dist/types/DataType.js.map +1 -1
  201. package/dist/types/Float.d.ts +0 -3
  202. package/dist/types/Float.js +0 -3
  203. package/dist/types/Float.js.map +1 -1
  204. package/dist/types/Integer.d.ts +0 -3
  205. package/dist/types/Integer.js +0 -3
  206. package/dist/types/Integer.js.map +1 -1
  207. package/dist/types/InvisibleMessageMode.d.ts +5 -10
  208. package/dist/types/InvisibleMessageMode.js +4 -11
  209. package/dist/types/InvisibleMessageMode.js.map +1 -1
  210. package/dist/types/ItemNavigationBehavior.d.ts +0 -6
  211. package/dist/types/ItemNavigationBehavior.js +0 -6
  212. package/dist/types/ItemNavigationBehavior.js.map +1 -1
  213. package/dist/types/MovePlacement.d.ts +20 -0
  214. package/dist/types/MovePlacement.js +22 -0
  215. package/dist/types/MovePlacement.js.map +1 -0
  216. package/dist/types/NavigationMode.d.ts +0 -8
  217. package/dist/types/NavigationMode.js +0 -8
  218. package/dist/types/NavigationMode.js.map +1 -1
  219. package/dist/types/Orientation.d.ts +16 -0
  220. package/dist/types/Orientation.js +18 -0
  221. package/dist/types/Orientation.js.map +1 -0
  222. package/dist/types/ValueState.d.ts +3 -17
  223. package/dist/types/ValueState.js +3 -17
  224. package/dist/types/ValueState.js.map +1 -1
  225. package/dist/types.d.ts +24 -1
  226. package/dist/types.js.map +1 -1
  227. package/dist/updateShadowRoot.d.ts +1 -2
  228. package/dist/updateShadowRoot.js +5 -28
  229. package/dist/updateShadowRoot.js.map +1 -1
  230. package/dist/util/ColorConversion.js +200 -195
  231. package/dist/util/ColorConversion.js.map +1 -1
  232. package/dist/util/InvisibleMessage.d.ts +1 -1
  233. package/dist/util/InvisibleMessage.js.map +1 -1
  234. package/dist/util/PopupUtils.d.ts +1 -3
  235. package/dist/util/PopupUtils.js +1 -15
  236. package/dist/util/PopupUtils.js.map +1 -1
  237. package/dist/util/clamp.js +2 -1
  238. package/dist/util/clamp.js.map +1 -1
  239. package/dist/util/createLinkInHead.d.ts +1 -1
  240. package/dist/util/createLinkInHead.js +1 -1
  241. package/dist/util/createLinkInHead.js.map +1 -1
  242. package/dist/util/detectNavigatorLanguage.d.ts +2 -2
  243. package/dist/util/detectNavigatorLanguage.js +6 -1
  244. package/dist/util/detectNavigatorLanguage.js.map +1 -1
  245. package/dist/util/dragAndDrop/DragRegistry.d.ts +12 -0
  246. package/dist/util/dragAndDrop/DragRegistry.js +68 -0
  247. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
  248. package/dist/util/dragAndDrop/findClosestPosition.d.ts +7 -0
  249. package/dist/util/dragAndDrop/findClosestPosition.js +59 -0
  250. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
  251. package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
  252. package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
  253. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
  254. package/dist/util/getClassCopy.d.ts +62 -42
  255. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -2
  256. package/dist/util/getDesigntimePropertyAsArray.js +2 -1
  257. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -1
  258. package/dist/util/getParentElement.d.ts +2 -0
  259. package/dist/util/getParentElement.js +5 -0
  260. package/dist/util/getParentElement.js.map +1 -0
  261. package/dist/util/isElementContainingBlock.d.ts +2 -0
  262. package/dist/util/isElementContainingBlock.js +11 -0
  263. package/dist/util/isElementContainingBlock.js.map +1 -0
  264. package/index.js +3 -19
  265. package/package-scripts.cjs +22 -19
  266. package/package.json +23 -8
  267. package/src/css/FontFace.css +47 -17
  268. package/src/css/SystemCSSVars.css +0 -8
  269. package/tsconfig.json +6 -0
  270. package/.eslintignore +0 -16
  271. package/.eslintrc.cjs +0 -3
  272. package/bundle.esm.js +0 -67
  273. package/dist/CSP.d.ts +0 -30
  274. package/dist/CSP.js +0 -51
  275. package/dist/CSP.js.map +0 -1
  276. package/dist/StaticAreaItem.d.ts +0 -36
  277. package/dist/StaticAreaItem.js +0 -102
  278. package/dist/StaticAreaItem.js.map +0 -1
  279. package/dist/api.json +0 -1
  280. package/dist/assets/Boot.34b7cea0.css +0 -1
  281. package/dist/assets/Boot.ef9171c9.js +0 -9
  282. package/dist/assets/bundle.esm.183f95f0.js +0 -50
  283. package/dist/assets-meta/IconCollectionsAlias.js.map +0 -1
  284. package/dist/config/RTL.d.ts +0 -7
  285. package/dist/config/RTL.js +0 -37
  286. package/dist/config/RTL.js.map +0 -1
  287. package/dist/theming/getEffectiveLinksHrefs.d.ts +0 -3
  288. package/dist/theming/getEffectiveLinksHrefs.js +0 -17
  289. package/dist/theming/getEffectiveLinksHrefs.js.map +0 -1
  290. package/dist/theming/preloadLinks.d.ts +0 -3
  291. package/dist/theming/preloadLinks.js +0 -19
  292. package/dist/theming/preloadLinks.js.map +0 -1
  293. package/dist/util/createStyleInHead.d.ts +0 -8
  294. package/dist/util/createStyleInHead.js +0 -18
  295. package/dist/util/createStyleInHead.js.map +0 -1
  296. package/lib/generate-asset-parameters/index.js +0 -27
  297. package/lib/generate-styles/index.js +0 -31
  298. package/lib/generate-version-info/index.js +0 -32
  299. package/src/renderer/directives/style-map.js +0 -72
  300. package/used-modules.txt +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.js","sourceRoot":"","sources":["../../src/config/Theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,qBAAqB,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAElF,IAAI,QAAgB,CAAC;AAErB;;;;GAIG;AACH,MAAM,QAAQ,GAAG,GAAW,EAAE;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC3B,QAAQ,GAAG,kBAAkB,EAAE,CAAC;KAChC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;IACvD,IAAI,QAAQ,KAAK,KAAK,EAAE;QACvB,OAAO;KACP;IAED,QAAQ,GAAG,KAAK,CAAC;IAEjB,+BAA+B;IAC/B,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,sBAAsB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,GAAW,EAAE;IACpC,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;IACjC,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAChC,OAAO,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,GAAG,KAAK,MAAM,CAAC;AAClE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAChC,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAEhC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;QAChC,OAAO,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;KAC1E;IAED,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEzE,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,eAAe,GACf,CAAC","sourcesContent":["import { getTheme as getConfiguredTheme } from \"../InitialConfiguration.js\";\nimport { reRenderAllUI5Elements } from \"../Render.js\";\nimport applyTheme from \"../theming/applyTheme.js\";\nimport getThemeDesignerTheme from \"../theming/getThemeDesignerTheme.js\";\nimport { DEFAULT_THEME, SUPPORTED_THEMES } from \"../generated/AssetParameters.js\";\n\nlet curTheme: string;\n\n/**\n * Returns the current theme.\n * @public\n * @returns {string} the current theme name\n */\nconst getTheme = (): string => {\n\tif (curTheme === undefined) {\n\t\tcurTheme = getConfiguredTheme();\n\t}\n\n\treturn curTheme;\n};\n\n/**\n * Applies a new theme after fetching its assets from the network.\n * @public\n * @param {string} theme the name of the new theme\n * @returns {Promise<void>} a promise that is resolved when the new theme assets have been fetched and applied to the DOM\n */\nconst setTheme = async (theme: string): Promise<void> => {\n\tif (curTheme === theme) {\n\t\treturn;\n\t}\n\n\tcurTheme = theme;\n\n\t// Update CSS Custom Properties\n\tawait applyTheme(curTheme);\n\tawait reRenderAllUI5Elements({ themeAware: true });\n};\n\n/**\n * Returns the default theme.\n *\n * Note: Default theme might be different than the configurated one.\n *\n * @public\n * @returns {string}\n */\nconst getDefaultTheme = (): string => {\n\treturn DEFAULT_THEME;\n};\n\n/**\n * Returns if the given theme name is the one currently applied.\n * @private\n * @param {string} theme\n * @returns {boolean}\n */\nconst isTheme = (theme: string) => {\n\tconst currentTheme = getTheme();\n\treturn currentTheme === theme || currentTheme === `${theme}_exp`;\n};\n\n/**\n * Returns if the currently set theme is part of legacy theme families (\"sap_belize\" or \"sap_fiori_3\").\n * <b>Note</b>: in addition, the method checks the base theme of a custom theme, built via the ThemeDesigner.\n *\n * @private\n * @returns { boolean }\n */\nconst isLegacyThemeFamily = () => {\n\tconst currentTheme = getTheme();\n\n\tif (!isKnownTheme(currentTheme)) {\n\t\treturn !getThemeDesignerTheme()?.baseThemeName?.startsWith(\"sap_horizon\");\n\t}\n\n\treturn !currentTheme.startsWith(\"sap_horizon\");\n};\n\nconst isKnownTheme = (theme: string) => SUPPORTED_THEMES.includes(theme);\n\nexport {\n\tgetTheme,\n\tsetTheme,\n\tisTheme,\n\tisLegacyThemeFamily,\n\tgetDefaultTheme,\n};\n"]}
1
+ {"version":3,"file":"Theme.js","sourceRoot":"","sources":["../../src/config/Theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,qBAAqB,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE5C,IAAI,QAAgB,CAAC;AAErB;;;;GAIG;AACH,MAAM,QAAQ,GAAG,GAAW,EAAE;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC3B,QAAQ,GAAG,kBAAkB,EAAE,CAAC;KAChC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;IACvD,IAAI,QAAQ,KAAK,KAAK,EAAE;QACvB,OAAO;KACP;IAED,QAAQ,GAAG,KAAK,CAAC;IAEjB,IAAI,QAAQ,EAAE,EAAE;QACf,+BAA+B;QAC/B,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,sBAAsB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;KACnD;AACF,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,GAAW,EAAE;IACpC,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;IACjC,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAChC,OAAO,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,GAAG,KAAK,MAAM,CAAC;AAClE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAChC,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAEhC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;QAChC,OAAO,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;KAC1E;IAED,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,KAAK,IAAI,EAAE;IAC3C,MAAM,IAAI,EAAE,CAAC;IACb,OAAO,mBAAmB,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEzE,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,GACf,CAAC","sourcesContent":["import { getTheme as getConfiguredTheme } from \"../InitialConfiguration.js\";\nimport { reRenderAllUI5Elements } from \"../Render.js\";\nimport applyTheme from \"../theming/applyTheme.js\";\nimport getThemeDesignerTheme from \"../theming/getThemeDesignerTheme.js\";\nimport { DEFAULT_THEME, SUPPORTED_THEMES } from \"../generated/AssetParameters.js\";\nimport { boot, isBooted } from \"../Boot.js\";\n\nlet curTheme: string;\n\n/**\n * Returns the current theme.\n * @public\n * @returns {string} the current theme name\n */\nconst getTheme = (): string => {\n\tif (curTheme === undefined) {\n\t\tcurTheme = getConfiguredTheme();\n\t}\n\n\treturn curTheme;\n};\n\n/**\n * Applies a new theme after fetching its assets from the network.\n * @public\n * @param {string} theme the name of the new theme\n * @returns {Promise<void>} a promise that is resolved when the new theme assets have been fetched and applied to the DOM\n */\nconst setTheme = async (theme: string): Promise<void> => {\n\tif (curTheme === theme) {\n\t\treturn;\n\t}\n\n\tcurTheme = theme;\n\n\tif (isBooted()) {\n\t\t// Update CSS Custom Properties\n\t\tawait applyTheme(curTheme);\n\t\tawait reRenderAllUI5Elements({ themeAware: true });\n\t}\n};\n\n/**\n * Returns the default theme.\n *\n * Note: Default theme might be different than the configurated one.\n *\n * @public\n * @returns {string}\n */\nconst getDefaultTheme = (): string => {\n\treturn DEFAULT_THEME;\n};\n\n/**\n * Returns if the given theme name is the one currently applied.\n * @private\n * @param {string} theme\n * @returns {boolean}\n */\nconst isTheme = (theme: string) => {\n\tconst currentTheme = getTheme();\n\treturn currentTheme === theme || currentTheme === `${theme}_exp`;\n};\n\n/**\n * Returns if the currently set theme is part of legacy theme families (\"sap_fiori_3\").\n * **Note**: in addition, the method checks the base theme of a custom theme, built via the ThemeDesigner.\n *\n * @private\n * @returns { boolean }\n */\nconst isLegacyThemeFamily = () => {\n\tconst currentTheme = getTheme();\n\n\tif (!isKnownTheme(currentTheme)) {\n\t\treturn !getThemeDesignerTheme()?.baseThemeName?.startsWith(\"sap_horizon\");\n\t}\n\n\treturn !currentTheme.startsWith(\"sap_horizon\");\n};\n\nconst isLegacyThemeFamilyAsync = async () => {\n\tawait boot();\n\treturn isLegacyThemeFamily();\n};\n\nconst isKnownTheme = (theme: string) => SUPPORTED_THEMES.includes(theme);\n\nexport {\n\tgetTheme,\n\tsetTheme,\n\tisTheme,\n\tisLegacyThemeFamily,\n\tisLegacyThemeFamilyAsync,\n\tgetDefaultTheme,\n};\n"]}
@@ -10,12 +10,10 @@ declare const getThemeRoot: () => string | undefined;
10
10
  * Sets theme root for the current theme.
11
11
  * When set, the framework will validate the theme root and fetch the theme styles (CSS variables) from this location.
12
12
  *
13
- * <b>Note:</b> The feature is specific to custom themes, created with the `UI Theme Designer`.
13
+ * **Note:** The feature is specific to custom themes, created with the `UI Theme Designer`.
14
14
  * The provided theme root is used only as a base to construct the actual location of the theme styles: `{themeRoot}/.../css_variables.css`.
15
15
  *
16
- * <br/>
17
- *
18
- * <b>Note:</b> Certain security restrictions will apply before fetching the theme assets.
16
+ * **Note:** Certain security restrictions will apply before fetching the theme assets.
19
17
  * Absolute URLs to a different origin than the current page will result in using the current page as an origin.
20
18
  * To allow specific origins, use &lt;meta name="sap-allowedThemeOrigins" content="https://my-example-host.com/"&gt; tag inside the &lt;head&gt; of the page.
21
19
  *
@@ -20,12 +20,10 @@ const getThemeRoot = () => {
20
20
  * Sets theme root for the current theme.
21
21
  * When set, the framework will validate the theme root and fetch the theme styles (CSS variables) from this location.
22
22
  *
23
- * <b>Note:</b> The feature is specific to custom themes, created with the `UI Theme Designer`.
23
+ * **Note:** The feature is specific to custom themes, created with the `UI Theme Designer`.
24
24
  * The provided theme root is used only as a base to construct the actual location of the theme styles: `{themeRoot}/.../css_variables.css`.
25
25
  *
26
- * <br/>
27
- *
28
- * <b>Note:</b> Certain security restrictions will apply before fetching the theme assets.
26
+ * **Note:** Certain security restrictions will apply before fetching the theme assets.
29
27
  * Absolute URLs to a different origin than the current page will result in using the current page as an origin.
30
28
  * To allow specific origins, use &lt;meta name="sap-allowedThemeOrigins" content="https://my-example-host.com/"&gt; tag inside the &lt;head&gt; of the page.
31
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeRoot.js","sourceRoot":"","sources":["../../src/config/ThemeRoot.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,IAAI,aAAiC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,GAAuB,EAAE;IAC7C,IAAI,aAAa,KAAK,SAAS,EAAE;QAChC,aAAa,GAAG,sBAAsB,EAAE,CAAC;KACzC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,YAAY,GAAG,CAAC,SAAiB,EAA6B,EAAE;IACrE,IAAI,aAAa,KAAK,SAAS,EAAE;QAChC,OAAO;KACP;IAED,aAAa,GAAG,SAAS,CAAC;IAE1B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,OAAO,SAAS,0FAA0F,CAAC,CAAC,CAAC,sBAAsB;QAChJ,OAAO;KACP;IAED,OAAO,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;IACzC,OAAO,GAAG,YAAY,EAAG,gBAAgB,KAAK,oBAAoB,CAAC,CAAC,0CAA0C;AAC/G,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,gCAAgC,KAAK,IAAI,CAAC,CAAC;IAE/E,IAAI,IAAI,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,MAAM,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,6BAA6B,GAC7B,CAAC","sourcesContent":["import createLinkInHead from \"../util/createLinkInHead.js\";\nimport validateThemeRoot from \"../validateThemeRoot.js\";\nimport { getThemeRoot as getConfiguredThemeRoot } from \"../InitialConfiguration.js\";\nimport { getTheme } from \"./Theme.js\";\n\nlet currThemeRoot: string | undefined;\n\n/**\n * Returns the current theme root.\n *\n * @public\n * @since 1.14.0\n * @returns { string } the current theme root\n */\nconst getThemeRoot = (): string | undefined => {\n\tif (currThemeRoot === undefined) {\n\t\tcurrThemeRoot = getConfiguredThemeRoot();\n\t}\n\n\treturn currThemeRoot;\n};\n\n/**\n * Sets theme root for the current theme.\n * When set, the framework will validate the theme root and fetch the theme styles (CSS variables) from this location.\n *\n * <b>Note:</b> The feature is specific to custom themes, created with the `UI Theme Designer`.\n * The provided theme root is used only as a base to construct the actual location of the theme styles: `{themeRoot}/.../css_variables.css`.\n *\n * <br/>\n *\n * <b>Note:</b> Certain security restrictions will apply before fetching the theme assets.\n * Absolute URLs to a different origin than the current page will result in using the current page as an origin.\n * To allow specific origins, use &lt;meta name=\"sap-allowedThemeOrigins\" content=\"https://my-example-host.com/\"&gt; tag inside the &lt;head&gt; of the page.\n *\n * @public\n * @since 1.14.0\n * @param { string } themeRoot the new theme root\n * @returns { Promise<void> }\n */\nconst setThemeRoot = (themeRoot: string): Promise<void> | undefined => {\n\tif (currThemeRoot === themeRoot) {\n\t\treturn;\n\t}\n\n\tcurrThemeRoot = themeRoot;\n\n\tif (!validateThemeRoot(themeRoot)) {\n\t\tconsole.warn(`The ${themeRoot} is not valid. Check the allowed origins as suggested in the \"setThemeRoot\" description.`); // eslint-disable-line\n\t\treturn;\n\t}\n\n\treturn attachCustomThemeStylesToHead(getTheme());\n};\n\nconst formatThemeLink = (theme: string) => {\n\treturn `${getThemeRoot()!}Base/baseLib/${theme}/css_variables.css`; // theme root is always set at this point.\n};\n\nconst attachCustomThemeStylesToHead = async (theme: string): Promise<void> => {\n\tconst link = document.querySelector(`[sap-ui-webcomponents-theme=\"${theme}\"]`);\n\n\tif (link) {\n\t\tdocument.head.removeChild(link);\n\t}\n\n\tawait createLinkInHead(formatThemeLink(theme), { \"sap-ui-webcomponents-theme\": theme });\n};\n\nexport {\n\tgetThemeRoot,\n\tsetThemeRoot,\n\tattachCustomThemeStylesToHead,\n};\n"]}
1
+ {"version":3,"file":"ThemeRoot.js","sourceRoot":"","sources":["../../src/config/ThemeRoot.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,IAAI,aAAiC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,GAAuB,EAAE;IAC7C,IAAI,aAAa,KAAK,SAAS,EAAE;QAChC,aAAa,GAAG,sBAAsB,EAAE,CAAC;KACzC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,YAAY,GAAG,CAAC,SAAiB,EAA6B,EAAE;IACrE,IAAI,aAAa,KAAK,SAAS,EAAE;QAChC,OAAO;KACP;IAED,aAAa,GAAG,SAAS,CAAC;IAE1B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,OAAO,SAAS,0FAA0F,CAAC,CAAC,CAAC,sBAAsB;QAChJ,OAAO;KACP;IAED,OAAO,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;IACzC,OAAO,GAAG,YAAY,EAAG,gBAAgB,KAAK,oBAAoB,CAAC,CAAC,0CAA0C;AAC/G,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,gCAAgC,KAAK,IAAI,CAAC,CAAC;IAE/E,IAAI,IAAI,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,MAAM,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,6BAA6B,GAC7B,CAAC","sourcesContent":["import createLinkInHead from \"../util/createLinkInHead.js\";\nimport validateThemeRoot from \"../validateThemeRoot.js\";\nimport { getThemeRoot as getConfiguredThemeRoot } from \"../InitialConfiguration.js\";\nimport { getTheme } from \"./Theme.js\";\n\nlet currThemeRoot: string | undefined;\n\n/**\n * Returns the current theme root.\n *\n * @public\n * @since 1.14.0\n * @returns { string } the current theme root\n */\nconst getThemeRoot = (): string | undefined => {\n\tif (currThemeRoot === undefined) {\n\t\tcurrThemeRoot = getConfiguredThemeRoot();\n\t}\n\n\treturn currThemeRoot;\n};\n\n/**\n * Sets theme root for the current theme.\n * When set, the framework will validate the theme root and fetch the theme styles (CSS variables) from this location.\n *\n * **Note:** The feature is specific to custom themes, created with the `UI Theme Designer`.\n * The provided theme root is used only as a base to construct the actual location of the theme styles: `{themeRoot}/.../css_variables.css`.\n *\n * **Note:** Certain security restrictions will apply before fetching the theme assets.\n * Absolute URLs to a different origin than the current page will result in using the current page as an origin.\n * To allow specific origins, use &lt;meta name=\"sap-allowedThemeOrigins\" content=\"https://my-example-host.com/\"&gt; tag inside the &lt;head&gt; of the page.\n *\n * @public\n * @since 1.14.0\n * @param { string } themeRoot the new theme root\n * @returns { Promise<void> }\n */\nconst setThemeRoot = (themeRoot: string): Promise<void> | undefined => {\n\tif (currThemeRoot === themeRoot) {\n\t\treturn;\n\t}\n\n\tcurrThemeRoot = themeRoot;\n\n\tif (!validateThemeRoot(themeRoot)) {\n\t\tconsole.warn(`The ${themeRoot} is not valid. Check the allowed origins as suggested in the \"setThemeRoot\" description.`); // eslint-disable-line\n\t\treturn;\n\t}\n\n\treturn attachCustomThemeStylesToHead(getTheme());\n};\n\nconst formatThemeLink = (theme: string) => {\n\treturn `${getThemeRoot()!}Base/baseLib/${theme}/css_variables.css`; // theme root is always set at this point.\n};\n\nconst attachCustomThemeStylesToHead = async (theme: string): Promise<void> => {\n\tconst link = document.querySelector(`[sap-ui-webcomponents-theme=\"${theme}\"]`);\n\n\tif (link) {\n\t\tdocument.head.removeChild(link);\n\t}\n\n\tawait createLinkInHead(formatThemeLink(theme), { \"sap-ui-webcomponents-theme\": theme });\n};\n\nexport {\n\tgetThemeRoot,\n\tsetThemeRoot,\n\tattachCustomThemeStylesToHead,\n};\n"]}
@@ -7,7 +7,7 @@
7
7
  declare const getTimezone: () => string | undefined;
8
8
  /**
9
9
  * Sets the IANA timezone ID.
10
- * <b>For example:</b> "America/New_York", "Europe/London", "Australia/Sydney", "Asia/Bishkek", etc.
10
+ * **For example:** "America/New_York", "Europe/London", "Australia/Sydney", "Asia/Bishkek", etc.
11
11
  *>
12
12
  * @param {string} timezone
13
13
  * @private
@@ -14,7 +14,7 @@ const getTimezone = () => {
14
14
  };
15
15
  /**
16
16
  * Sets the IANA timezone ID.
17
- * <b>For example:</b> "America/New_York", "Europe/London", "Australia/Sydney", "Asia/Bishkek", etc.
17
+ * **For example:** "America/New_York", "Europe/London", "Australia/Sydney", "Asia/Bishkek", etc.
18
18
  *>
19
19
  * @param {string} timezone
20
20
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"Timezone.js","sourceRoot":"","sources":["../../src/config/Timezone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAElF,IAAI,YAAgC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,GAAG,GAAuB,EAAE;IAC5C,IAAI,YAAY,KAAK,SAAS,EAAE;QAC/B,YAAY,GAAG,qBAAqB,EAAE,CAAC;KACvC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxC,IAAI,YAAY,KAAK,QAAQ,EAAE;QAC9B,OAAO;KACP;IAED,YAAY,GAAG,QAAQ,CAAC;AACzB,CAAC,CAAC;AAEF,OAAO,EACN,WAAW,EACX,WAAW,GACX,CAAC","sourcesContent":["import { getTimezone as getConfiguredTimezone } from \"../InitialConfiguration.js\";\n\nlet currTimezone: string | undefined;\n\n/**\n * Returns the configured IANA timezone ID.\n *\n * @private\n * @returns {string}\n */\nconst getTimezone = (): string | undefined => {\n\tif (currTimezone === undefined) {\n\t\tcurrTimezone = getConfiguredTimezone();\n\t}\n\treturn currTimezone;\n};\n\n/**\n * Sets the IANA timezone ID.\n * <b>For example:</b> \"America/New_York\", \"Europe/London\", \"Australia/Sydney\", \"Asia/Bishkek\", etc.\n *>\n * @param {string} timezone\n * @private\n * @returns { Promise<void> }\n */\nconst setTimezone = (timezone: string) => {\n\tif (currTimezone === timezone) {\n\t\treturn;\n\t}\n\n\tcurrTimezone = timezone;\n};\n\nexport {\n\tgetTimezone,\n\tsetTimezone,\n};\n"]}
1
+ {"version":3,"file":"Timezone.js","sourceRoot":"","sources":["../../src/config/Timezone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAElF,IAAI,YAAgC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,GAAG,GAAuB,EAAE;IAC5C,IAAI,YAAY,KAAK,SAAS,EAAE;QAC/B,YAAY,GAAG,qBAAqB,EAAE,CAAC;KACvC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxC,IAAI,YAAY,KAAK,QAAQ,EAAE;QAC9B,OAAO;KACP;IAED,YAAY,GAAG,QAAQ,CAAC;AACzB,CAAC,CAAC;AAEF,OAAO,EACN,WAAW,EACX,WAAW,GACX,CAAC","sourcesContent":["import { getTimezone as getConfiguredTimezone } from \"../InitialConfiguration.js\";\n\nlet currTimezone: string | undefined;\n\n/**\n * Returns the configured IANA timezone ID.\n *\n * @private\n * @returns {string}\n */\nconst getTimezone = (): string | undefined => {\n\tif (currTimezone === undefined) {\n\t\tcurrTimezone = getConfiguredTimezone();\n\t}\n\treturn currTimezone;\n};\n\n/**\n * Sets the IANA timezone ID.\n * **For example:** \"America/New_York\", \"Europe/London\", \"Australia/Sydney\", \"Asia/Bishkek\", etc.\n *>\n * @param {string} timezone\n * @private\n * @returns { Promise<void> }\n */\nconst setTimezone = (timezone: string) => {\n\tif (currTimezone === timezone) {\n\t\treturn;\n\t}\n\n\tcurrTimezone = timezone;\n};\n\nexport {\n\tgetTimezone,\n\tsetTimezone,\n};\n"]}
@@ -0,0 +1,9 @@
1
+ import type UI5Element from "./UI5Element.js";
2
+ type ConnectOptions = {
3
+ host: UI5Element;
4
+ propName: string;
5
+ onConnect?: (friend: HTMLElement) => void;
6
+ onDisconnect?: (friend: HTMLElement) => void;
7
+ };
8
+ declare const connectToComponent: (options: ConnectOptions) => HTMLElement | undefined;
9
+ export default connectToComponent;
@@ -0,0 +1,59 @@
1
+ import { renderDeferred } from "./Render.js";
2
+ const MISSING_ELEMENT_POLL_TIMEOUT = 500; // how often to poll for not-yet-in-DOM friend elements
3
+ const connections = new Map();
4
+ const intervals = new Map();
5
+ const connectToComponent = (options) => {
6
+ const host = options.host;
7
+ const propName = options.propName;
8
+ const friend = host[propName];
9
+ let connectedTo;
10
+ if (friend === undefined || friend === "") {
11
+ connectedTo = undefined; // do not return early even if a "menu" property is not set - it may have been set before and cleanup must run
12
+ }
13
+ else if (friend instanceof HTMLElement) {
14
+ connectedTo = friend;
15
+ }
16
+ else {
17
+ const rootNode = host.getRootNode();
18
+ connectedTo = (rootNode.getElementById && rootNode.getElementById(friend)) || undefined;
19
+ }
20
+ const key = `${host._id}-${propName}`;
21
+ const prevConnectedTo = connections.get(key);
22
+ // Not connected - return undefined
23
+ if (!connectedTo) {
24
+ if (prevConnectedTo) { // but first disconnect, if needed
25
+ options.onDisconnect && options.onDisconnect(prevConnectedTo);
26
+ connections.delete(key);
27
+ }
28
+ // if friend element not in DOM yet, start polling
29
+ if (typeof friend === "string" && friend && !intervals.has(key)) {
30
+ const interval = setInterval(() => {
31
+ const rootNode = host.getRootNode();
32
+ const found = (rootNode.getElementById && rootNode.getElementById(friend));
33
+ if (found) {
34
+ clearInterval(intervals.get(key));
35
+ intervals.delete(key);
36
+ renderDeferred(host);
37
+ }
38
+ }, MISSING_ELEMENT_POLL_TIMEOUT);
39
+ intervals.set(key, interval);
40
+ }
41
+ return;
42
+ }
43
+ // If connected, but still polling, stop polling
44
+ if (intervals.has(key)) {
45
+ clearInterval(intervals.get(key));
46
+ intervals.delete(key);
47
+ }
48
+ // Connected - either for the first time, or to something else
49
+ if (prevConnectedTo !== connectedTo) {
50
+ if (prevConnectedTo) {
51
+ options.onDisconnect && options.onDisconnect(prevConnectedTo);
52
+ }
53
+ options.onConnect && options.onConnect(connectedTo);
54
+ connections.set(key, connectedTo);
55
+ }
56
+ return connections.get(key);
57
+ };
58
+ export default connectToComponent;
59
+ //# sourceMappingURL=connectToComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectToComponent.js","sourceRoot":"","sources":["../src/connectToComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,4BAA4B,GAAG,GAAG,CAAC,CAAC,uDAAuD;AACjG,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;AACnD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;AAS9C,MAAM,kBAAkB,GAAG,CAAC,OAAuB,EAA2B,EAAE;IAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAA6B,CAAqC,CAAC;IAEvF,IAAI,WAAoC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;QAC1C,WAAW,GAAG,SAAS,CAAC,CAAC,8GAA8G;KACvI;SAAM,IAAI,MAAM,YAAY,WAAW,EAAE;QACzC,WAAW,GAAG,MAAM,CAAC;KACrB;SAAM;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAc,CAAC;QAChD,WAAW,GAAG,CAAC,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC;KACxF;IAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE7C,mCAAmC;IACnC,IAAI,CAAC,WAAW,EAAE;QACjB,IAAI,eAAe,EAAE,EAAE,kCAAkC;YACxD,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YAC9D,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB;QAED,kDAAkD;QAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAc,CAAC;gBAChD,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE3E,IAAI,KAAK,EAAE;oBACV,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtB,cAAc,CAAC,IAAI,CAAC,CAAC;iBACrB;YACF,CAAC,EAAE,4BAA4B,CAAC,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC7B;QAED,OAAO;KACP;IAED,gDAAgD;IAChD,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACvB,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACtB;IAED,8DAA8D;IAC9D,IAAI,eAAe,KAAK,WAAW,EAAE;QACpC,IAAI,eAAe,EAAE;YACpB,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;SAC9D;QACD,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KAClC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import type UI5Element from \"./UI5Element.js\";\nimport { renderDeferred } from \"./Render.js\";\nimport { Interval } from \"./types.js\";\n\nconst MISSING_ELEMENT_POLL_TIMEOUT = 500; // how often to poll for not-yet-in-DOM friend elements\nconst connections = new Map<string, HTMLElement>();\nconst intervals = new Map<string, Interval>();\n\ntype ConnectOptions = {\n\thost: UI5Element;\n\tpropName: string;\n\tonConnect?: (friend: HTMLElement) => void;\n\tonDisconnect?: (friend: HTMLElement) => void;\n}\n\nconst connectToComponent = (options: ConnectOptions): HTMLElement | undefined => {\n\tconst host = options.host;\n\tconst propName = options.propName;\n\tconst friend = host[propName as keyof typeof host] as HTMLElement | string | undefined;\n\n\tlet connectedTo: HTMLElement | undefined;\n\tif (friend === undefined || friend === \"\") {\n\t\tconnectedTo = undefined; // do not return early even if a \"menu\" property is not set - it may have been set before and cleanup must run\n\t} else if (friend instanceof HTMLElement) {\n\t\tconnectedTo = friend;\n\t} else {\n\t\tconst rootNode = host.getRootNode() as Document;\n\t\tconnectedTo = (rootNode.getElementById && rootNode.getElementById(friend)) || undefined;\n\t}\n\n\tconst key = `${host._id}-${propName}`;\n\tconst prevConnectedTo = connections.get(key);\n\n\t// Not connected - return undefined\n\tif (!connectedTo) {\n\t\tif (prevConnectedTo) { // but first disconnect, if needed\n\t\t\toptions.onDisconnect && options.onDisconnect(prevConnectedTo);\n\t\t\tconnections.delete(key);\n\t\t}\n\n\t\t// if friend element not in DOM yet, start polling\n\t\tif (typeof friend === \"string\" && friend && !intervals.has(key)) {\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tconst rootNode = host.getRootNode() as Document;\n\t\t\t\tconst found = (rootNode.getElementById && rootNode.getElementById(friend));\n\n\t\t\t\tif (found) {\n\t\t\t\t\tclearInterval(intervals.get(key));\n\t\t\t\t\tintervals.delete(key);\n\t\t\t\t\trenderDeferred(host);\n\t\t\t\t}\n\t\t\t}, MISSING_ELEMENT_POLL_TIMEOUT);\n\t\t\tintervals.set(key, interval);\n\t\t}\n\n\t\treturn;\n\t}\n\n\t// If connected, but still polling, stop polling\n\tif (intervals.has(key)) {\n\t\tclearInterval(intervals.get(key));\n\t\tintervals.delete(key);\n\t}\n\n\t// Connected - either for the first time, or to something else\n\tif (prevConnectedTo !== connectedTo) {\n\t\tif (prevConnectedTo) {\n\t\t\toptions.onDisconnect && options.onDisconnect(prevConnectedTo);\n\t\t}\n\t\toptions.onConnect && options.onConnect(connectedTo);\n\t\tconnections.set(key, connectedTo);\n\t}\n\n\treturn connections.get(key);\n};\n\nexport default connectToComponent;\n"]}
@@ -2,65 +2,95 @@
2
2
  font-family: "72";
3
3
  font-style: normal;
4
4
  font-weight: 400;
5
- src: local("72"),
6
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format("woff2");
5
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Regular.woff2?ui5-webcomponents) format("woff2"), local("72");
6
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
7
7
  }
8
8
 
9
9
  @font-face {
10
10
  font-family: "72full";
11
11
  font-style: normal;
12
12
  font-weight: 400;
13
- src: local('72-full'),
14
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format("woff2");
15
-
13
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Regular-full.woff2?ui5-webcomponents) format("woff2"), local('72-full');
16
14
  }
17
15
 
18
16
  @font-face {
19
17
  font-family: "72";
20
18
  font-style: normal;
21
19
  font-weight: 700;
22
- src: local('72-Bold'),
23
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2");
20
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"), local('72-Bold');
21
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
24
22
  }
25
23
 
26
24
  @font-face {
27
25
  font-family: "72full";
28
26
  font-style: normal;
29
27
  font-weight: 700;
30
- src: local('72-Bold-full'),
31
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2");
28
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2");
32
29
  }
33
30
 
34
31
  @font-face {
35
32
  font-family: '72-Bold';
36
33
  font-style: normal;
37
- src: local('72-Bold'),
38
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2");
34
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"), local('72-Bold');
35
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
39
36
  }
40
37
 
41
38
  @font-face {
42
39
  font-family: '72-Boldfull';
43
40
  font-style: normal;
44
- src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2");
41
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2");
45
42
  }
46
43
 
47
44
  @font-face {
48
45
  font-family: '72-Light';
49
46
  font-style: normal;
50
- src: local('72-Light'),
51
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format("woff2");
47
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Light.woff2?ui5-webcomponents) format("woff2"), local('72-Light');
48
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
52
49
  }
53
50
 
54
51
  @font-face {
55
52
  font-family: '72-Lightfull';
56
53
  font-style: normal;
57
- src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff2?ui5-webcomponents) format("woff2");
54
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Light-full.woff2?ui5-webcomponents) format("woff2");
55
+ }
56
+
57
+ @font-face {
58
+ font-family: '72Mono';
59
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72Mono-Regular.woff2?ui5-webcomponents) format('woff2'), local('72Mono');
60
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
61
+ }
62
+
63
+ @font-face {
64
+ font-family: '72Monofull';
65
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72Mono-Regular-full.woff2?ui5-webcomponents) format('woff2');
66
+ }
67
+
68
+ @font-face {
69
+ font-family: '72Mono-Bold';
70
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72Mono-Bold.woff2?ui5-webcomponents) format('woff2'), local('72Mono-Bold');
71
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
72
+ }
73
+
74
+ @font-face {
75
+ font-family: '72Mono-Boldfull';
76
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72Mono-Bold-full.woff2?ui5-webcomponents) format('woff2');
58
77
  }
59
78
 
60
79
  @font-face {
61
80
  font-family: "72Black";
62
81
  font-style: bold;
63
82
  font-weight: 900;
64
- src: local('72Black'),
65
- url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format("woff2");
83
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format("woff2"), local('72Black');
84
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
66
85
  }
86
+
87
+ @font-face {
88
+ font-family: '72Blackfull';
89
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black-full.woff2?ui5-webcomponents) format('woff2');
90
+ }
91
+
92
+ @font-face {
93
+ font-family: "72-SemiboldDuplex";
94
+ src: url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-SemiboldDuplex.woff2?ui5-webcomponents) format("woff2"), local('72-SemiboldDuplex');
95
+ unicode-range: U+00, U+0D, U+20-7E, U+A0-FF, U+131, U+152-153, U+161, U+178, U+17D-17E, U+192, U+237, U+2C6, U+2DC, U+3BC, U+1E9E, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122;
96
+ }
@@ -7,11 +7,3 @@
7
7
  .sapUiSizeCompact {
8
8
  --_ui5_content_density:compact;
9
9
  }
10
-
11
- [dir="rtl"] {
12
- --_ui5_dir:rtl;
13
- }
14
-
15
- [dir="ltr"] {
16
- --_ui5_dir:ltr;
17
- }
@@ -8,16 +8,16 @@ import type { ComponentStylesData as Styles } from "../types.js";
8
8
  * @param { string | object } tagNameOrComponentSettings
9
9
  * @returns { ClassDecorator }
10
10
  */
11
- declare const customElement: (tagNameOrComponentSettings: string | {
11
+ declare const customElement: (tagNameOrComponentSettings?: string | {
12
12
  tag?: string;
13
13
  renderer?: Renderer;
14
14
  styles?: Styles;
15
15
  template?: Template;
16
16
  dependencies?: Array<typeof UI5Element>;
17
- staticAreaStyles?: Styles;
18
- staticAreaTemplate?: Template;
19
17
  languageAware?: boolean;
20
18
  themeAware?: boolean;
21
19
  fastNavigation?: boolean;
20
+ formAssociated?: boolean;
21
+ shadowRootOptions?: Partial<ShadowRootInit>;
22
22
  }) => ClassDecorator;
23
23
  export default customElement;
@@ -4,7 +4,7 @@
4
4
  * @param { string | object } tagNameOrComponentSettings
5
5
  * @returns { ClassDecorator }
6
6
  */
7
- const customElement = (tagNameOrComponentSettings) => {
7
+ const customElement = (tagNameOrComponentSettings = {}) => {
8
8
  return (target) => {
9
9
  if (!Object.prototype.hasOwnProperty.call(target, "metadata")) {
10
10
  target.metadata = {};
@@ -13,7 +13,7 @@ const customElement = (tagNameOrComponentSettings) => {
13
13
  target.metadata.tag = tagNameOrComponentSettings;
14
14
  return;
15
15
  }
16
- const { tag, languageAware, themeAware, fastNavigation, } = tagNameOrComponentSettings;
16
+ const { tag, languageAware, themeAware, fastNavigation, formAssociated, shadowRootOptions, } = tagNameOrComponentSettings;
17
17
  target.metadata.tag = tag;
18
18
  if (languageAware) {
19
19
  target.metadata.languageAware = languageAware;
@@ -24,11 +24,16 @@ const customElement = (tagNameOrComponentSettings) => {
24
24
  if (fastNavigation) {
25
25
  target.metadata.fastNavigation = fastNavigation;
26
26
  }
27
- ["render", "renderer", "template", "staticAreaTemplate", "styles", "staticAreaStyles", "dependencies"].forEach((customElementEntity) => {
28
- const _customElementEntity = customElementEntity === "render" ? "renderer" : customElementEntity;
29
- const customElementEntityValue = tagNameOrComponentSettings[_customElementEntity];
27
+ if (formAssociated) {
28
+ target.metadata.formAssociated = formAssociated;
29
+ }
30
+ if (shadowRootOptions) {
31
+ target.metadata.shadowRootOptions = shadowRootOptions;
32
+ }
33
+ ["renderer", "template", "styles", "dependencies"].forEach((customElementEntity) => {
34
+ const customElementEntityValue = tagNameOrComponentSettings[customElementEntity];
30
35
  customElementEntityValue && Object.defineProperty(target, customElementEntity, {
31
- get: () => customElementEntityValue,
36
+ get: () => tagNameOrComponentSettings[customElementEntity],
32
37
  });
33
38
  });
34
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"customElement.js","sourceRoot":"","sources":["../../src/decorators/customElement.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,0BAWtB,EAAkB,EAAE;IACpB,OAAO,CAAC,MAAW,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;YAC9D,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SACrB;QAED,IAAI,OAAO,0BAA0B,KAAK,QAAQ,EAAE;YACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,0BAA0B,CAAC;YACjD,OAAO;SACP;QAED,MAAM,EACL,GAAG,EACH,aAAa,EACb,UAAU,EACV,cAAc,GACb,GAAG,0BAA0B,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,IAAI,aAAa,EAAE;YAClB,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAC;SAC9C;QACD,IAAI,UAAU,EAAE;YACf,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;SACxC;QACD,IAAI,cAAc,EAAE;YACnB,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;SAChD;QAED,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,mBAA2B,EAAE,EAAE;YAC9I,MAAM,oBAAoB,GAAG,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC;YACjG,MAAM,wBAAwB,GAAG,0BAA0B,CAAC,oBAAwC,CAAC,CAAC;YAEtG,wBAAwB,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE;gBAC9E,GAAG,EAAE,GAAG,EAAE,CAAC,wBAAwB;aACnC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import type UI5Element from \"../UI5Element.js\";\nimport type { Renderer } from \"../UI5Element.js\";\nimport type { TemplateFunction as Template } from \"../renderer/executeTemplate.js\";\nimport type { ComponentStylesData as Styles } from \"../types.js\";\n\n/**\n * Returns a custom element class decorator.\n *\n * @param { string | object } tagNameOrComponentSettings\n * @returns { ClassDecorator }\n */\nconst customElement = (tagNameOrComponentSettings: string | {\n\ttag?: string,\n\trenderer?: Renderer,\n\tstyles?: Styles,\n\ttemplate?: Template,\n\tdependencies?: Array<typeof UI5Element>,\n\tstaticAreaStyles?: Styles,\n\tstaticAreaTemplate?: Template,\n\tlanguageAware?: boolean,\n\tthemeAware?: boolean,\n\tfastNavigation?: boolean,\n}): ClassDecorator => {\n\treturn (target: any) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(target, \"metadata\")) {\n\t\t\ttarget.metadata = {};\n\t\t}\n\n\t\tif (typeof tagNameOrComponentSettings === \"string\") {\n\t\t\ttarget.metadata.tag = tagNameOrComponentSettings;\n\t\t\treturn;\n\t\t}\n\n\t\tconst {\n\t\t\ttag,\n\t\t\tlanguageAware,\n\t\t\tthemeAware,\n\t\t\tfastNavigation,\n\t\t } = tagNameOrComponentSettings;\n\n\t\ttarget.metadata.tag = tag;\n\t\tif (languageAware) {\n\t\t\ttarget.metadata.languageAware = languageAware;\n\t\t}\n\t\tif (themeAware) {\n\t\t\ttarget.metadata.themeAware = themeAware;\n\t\t}\n\t\tif (fastNavigation) {\n\t\t\ttarget.metadata.fastNavigation = fastNavigation;\n\t\t}\n\n\t\t[\"render\", \"renderer\", \"template\", \"staticAreaTemplate\", \"styles\", \"staticAreaStyles\", \"dependencies\"].forEach((customElementEntity: string) => {\n\t\t\tconst _customElementEntity = customElementEntity === \"render\" ? \"renderer\" : customElementEntity;\n\t\t\tconst customElementEntityValue = tagNameOrComponentSettings[_customElementEntity as keyof typeof tag];\n\n\t\t\tcustomElementEntityValue && Object.defineProperty(target, customElementEntity, {\n\t\t\t\tget: () => customElementEntityValue,\n\t\t\t});\n\t\t});\n\t};\n};\n\nexport default customElement;\n"]}
1
+ {"version":3,"file":"customElement.js","sourceRoot":"","sources":["../../src/decorators/customElement.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,6BAWnB,EAAE,EAAkB,EAAE;IACzB,OAAO,CAAC,MAAW,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;YAC9D,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SACrB;QAED,IAAI,OAAO,0BAA0B,KAAK,QAAQ,EAAE;YACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,0BAA0B,CAAC;YACjD,OAAO;SACP;QAED,MAAM,EACL,GAAG,EACH,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,iBAAiB,GAChB,GAAG,0BAA0B,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,IAAI,aAAa,EAAE;YAClB,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAC;SAC9C;QACD,IAAI,UAAU,EAAE;YACf,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;SACxC;QACD,IAAI,cAAc,EAAE;YACnB,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;SAChD;QACD,IAAI,cAAc,EAAE;YACnB,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;SAChD;QAED,IAAI,iBAAiB,EAAE;YACtB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;SACtD;QAED,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,mBAA2B,EAAE,EAAE;YAC1F,MAAM,wBAAwB,GAAG,0BAA0B,CAAC,mBAAuC,CAAC,CAAC;YAErG,wBAAwB,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE;gBAC9E,GAAG,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,mBAAuC,CAAC;aAC9E,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import type UI5Element from \"../UI5Element.js\";\nimport type { Renderer } from \"../UI5Element.js\";\nimport type { TemplateFunction as Template } from \"../renderer/executeTemplate.js\";\nimport type { ComponentStylesData as Styles } from \"../types.js\";\n\n/**\n * Returns a custom element class decorator.\n *\n * @param { string | object } tagNameOrComponentSettings\n * @returns { ClassDecorator }\n */\nconst customElement = (tagNameOrComponentSettings: string | {\n\ttag?: string,\n\trenderer?: Renderer,\n\tstyles?: Styles,\n\ttemplate?: Template,\n\tdependencies?: Array<typeof UI5Element>,\n\tlanguageAware?: boolean,\n\tthemeAware?: boolean,\n\tfastNavigation?: boolean,\n\tformAssociated?: boolean,\n\tshadowRootOptions?: Partial<ShadowRootInit>,\n} = {}): ClassDecorator => {\n\treturn (target: any) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(target, \"metadata\")) {\n\t\t\ttarget.metadata = {};\n\t\t}\n\n\t\tif (typeof tagNameOrComponentSettings === \"string\") {\n\t\t\ttarget.metadata.tag = tagNameOrComponentSettings;\n\t\t\treturn;\n\t\t}\n\n\t\tconst {\n\t\t\ttag,\n\t\t\tlanguageAware,\n\t\t\tthemeAware,\n\t\t\tfastNavigation,\n\t\t\tformAssociated,\n\t\t\tshadowRootOptions,\n\t\t } = tagNameOrComponentSettings;\n\n\t\ttarget.metadata.tag = tag;\n\t\tif (languageAware) {\n\t\t\ttarget.metadata.languageAware = languageAware;\n\t\t}\n\t\tif (themeAware) {\n\t\t\ttarget.metadata.themeAware = themeAware;\n\t\t}\n\t\tif (fastNavigation) {\n\t\t\ttarget.metadata.fastNavigation = fastNavigation;\n\t\t}\n\t\tif (formAssociated) {\n\t\t\ttarget.metadata.formAssociated = formAssociated;\n\t\t}\n\n\t\tif (shadowRootOptions) {\n\t\t\ttarget.metadata.shadowRootOptions = shadowRootOptions;\n\t\t}\n\n\t\t[\"renderer\", \"template\", \"styles\", \"dependencies\"].forEach((customElementEntity: string) => {\n\t\t\tconst customElementEntityValue = tagNameOrComponentSettings[customElementEntity as keyof typeof tag];\n\n\t\t\tcustomElementEntityValue && Object.defineProperty(target, customElementEntity, {\n\t\t\t\tget: () => tagNameOrComponentSettings[customElementEntity as keyof typeof tag],\n\t\t\t});\n\t\t});\n\t};\n};\n\nexport default customElement;\n"]}
@@ -1,4 +1,3 @@
1
- import { EventData } from "../UI5ElementMetadata.js";
2
1
  /**
3
2
  * Returns an event class decorator.
4
3
  *
@@ -6,5 +5,9 @@ import { EventData } from "../UI5ElementMetadata.js";
6
5
  * @param { EventData } data the event data
7
6
  * @returns { ClassDecorator }
8
7
  */
9
- declare const event: (name: string, data?: EventData) => ClassDecorator;
8
+ declare const event: <EventDetail>(name: string, data?: {
9
+ detail?: Record<keyof EventDetail, {
10
+ type: any;
11
+ }> | undefined;
12
+ }) => ClassDecorator;
10
13
  export default event;
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/decorators/event.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,OAAkB,EAAE,EAAkB,EAAE;IACpE,OAAO,CAAC,MAAW,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;YAC9D,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SACrB;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;SACrB;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC1B,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAC5B;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["import { EventData } from \"../UI5ElementMetadata.js\";\n\n/**\n * Returns an event class decorator.\n *\n * @param { string } name the event name\n * @param { EventData } data the event data\n * @returns { ClassDecorator }\n */\nconst event = (name: string, data: EventData = {}): ClassDecorator => {\n\treturn (target: any) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(target, \"metadata\")) {\n\t\t\ttarget.metadata = {};\n\t\t}\n\n\t\tconst metadata = target.metadata;\n\t\tif (!metadata.events) {\n\t\t\tmetadata.events = {};\n\t\t}\n\n\t\tconst eventsMetadata = metadata.events;\n\t\tif (!eventsMetadata[name]) {\n\t\t\teventsMetadata[name] = data;\n\t\t}\n\t};\n};\n\nexport default event;\n"]}
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/decorators/event.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,KAAK,GAAG,CAAc,IAAY,EAAE,OAA8D,EAAE,EAAkB,EAAE;IAC7H,OAAO,CAAC,MAAW,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;YAC9D,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SACrB;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACrB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;SACrB;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC1B,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAC5B;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["/**\n * Returns an event class decorator.\n *\n * @param { string } name the event name\n * @param { EventData } data the event data\n * @returns { ClassDecorator }\n */\nconst event = <EventDetail>(name: string, data: { detail?: Record<keyof EventDetail, { type: any }> } = {}): ClassDecorator => {\n\treturn (target: any) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(target, \"metadata\")) {\n\t\t\ttarget.metadata = {};\n\t\t}\n\n\t\tconst metadata = target.metadata;\n\t\tif (!metadata.events) {\n\t\t\tmetadata.events = {};\n\t\t}\n\n\t\tconst eventsMetadata = metadata.events;\n\t\tif (!eventsMetadata[name]) {\n\t\t\teventsMetadata[name] = data;\n\t\t}\n\t};\n};\n\nexport default event;\n"]}
@@ -0,0 +1,5 @@
1
+ import customElement from "./decorators/customElement.js";
2
+ import event from "./decorators/event.js";
3
+ import property from "./decorators/property.js";
4
+ import slot from "./decorators/slot.js";
5
+ export { customElement, event, property, slot, };
@@ -0,0 +1,6 @@
1
+ import customElement from "./decorators/customElement.js";
2
+ import event from "./decorators/event.js";
3
+ import property from "./decorators/property.js";
4
+ import slot from "./decorators/slot.js";
5
+ export { customElement, event, property, slot, };
6
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAExC,OAAO,EACN,aAAa,EACb,KAAK,EACL,QAAQ,EACR,IAAI,GACJ,CAAC","sourcesContent":["import customElement from \"./decorators/customElement.js\";\nimport event from \"./decorators/event.js\";\nimport property from \"./decorators/property.js\";\nimport slot from \"./decorators/slot.js\";\n\nexport {\n\tcustomElement,\n\tevent,\n\tproperty,\n\tslot,\n};\n"]}
@@ -3,7 +3,7 @@ import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
3
3
  import type UI5Element from "../UI5Element.js";
4
4
  interface ITabbable {
5
5
  id: string;
6
- _tabIndex: string;
6
+ forcedTabIndex: string;
7
7
  }
8
8
  type ItemNavigationOptions = {
9
9
  currentIndex?: number;
@@ -27,18 +27,18 @@ type ItemNavigationOptions = {
27
27
  * 1) Use the "getItemsCallback" constructor property to pass a callback to ItemNavigation, which, whenever called, will return the list of items to navigate among.
28
28
  *
29
29
  * Each item passed to ItemNavigation via "getItemsCallback" must be:
30
- * - A) either a UI5Element with a "_tabIndex" property
31
- * - B) or an Object with "id" and "_tabIndex" properties which represents a part of the root component's shadow DOM.
30
+ * - A) either a UI5Element with a "forcedTabIndex" property
31
+ * - B) or an Object with "id" and "forcedTabIndex" properties which represents a part of the root component's shadow DOM.
32
32
  * The "id" must be a valid ID within the shadow root of the component ItemNavigation operates on.
33
33
  * This object must not be a DOM object because, as said, ItemNavigation will not set "tabindex" on it. It must be a representation of a DOM object only
34
34
  * and the developer has the responsibility to update the "tabindex" in the component's DOM.
35
35
  * - C) a combination of the above
36
36
  *
37
- * Whenever the user navigates with the keyboard, ItemNavigation will modify the "_tabIndex" properties of the items.
38
- * It is the items' responsibilities to re-render themselves and apply the correct value of "tabindex" (i.e. to map the "_tabIndex" ItemNavigation set to them to the "tabindex" property).
39
- * If the items of the ItemNavigation are UI5Elements themselves, this can happen naturally since they will be invalidated by their "_tabIndex" property.
40
- * If the items are Objects with "id" and "_tabIndex" however, it is the developer's responsibility to apply these and the easiest way is to have the root component invalidated by ItemNavigation.
41
- * To do so, set the "affectedPropertiesNames" constructor property to point to one or more of the root component's properties that need refreshing when "_tabIndex" is changed deeply.
37
+ * Whenever the user navigates with the keyboard, ItemNavigation will modify the "forcedTabIndex" properties of the items.
38
+ * It is the items' responsibilities to re-render themselves and apply the correct value of "tabindex" (i.e. to map the "forcedTabIndex" ItemNavigation set to them to the "tabindex" property).
39
+ * If the items of the ItemNavigation are UI5Elements themselves, this can happen naturally since they will be invalidated by their "forcedTabIndex" property.
40
+ * If the items are Objects with "id" and "forcedTabIndex" however, it is the developer's responsibility to apply these and the easiest way is to have the root component invalidated by ItemNavigation.
41
+ * To do so, set the "affectedPropertiesNames" constructor property to point to one or more of the root component's properties that need refreshing when "forcedTabIndex" is changed deeply.
42
42
  *
43
43
  * 2) Call the "setCurrentItem" method of ItemNavigation whenever you want to change the current item.
44
44
  * This is most commonly required if the user for example clicks on an item and thus selects it directly.
@@ -56,6 +56,7 @@ declare class ItemNavigation {
56
56
  _navigationMode: NavigationMode;
57
57
  _affectedPropertiesNames: Array<string>;
58
58
  _skipItemsSize: number | null;
59
+ _initBound: () => void;
59
60
  /**
60
61
  *
61
62
  * @param rootWebComponent the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
@@ -16,18 +16,18 @@ import { instanceOfUI5Element } from "../UI5Element.js";
16
16
  * 1) Use the "getItemsCallback" constructor property to pass a callback to ItemNavigation, which, whenever called, will return the list of items to navigate among.
17
17
  *
18
18
  * Each item passed to ItemNavigation via "getItemsCallback" must be:
19
- * - A) either a UI5Element with a "_tabIndex" property
20
- * - B) or an Object with "id" and "_tabIndex" properties which represents a part of the root component's shadow DOM.
19
+ * - A) either a UI5Element with a "forcedTabIndex" property
20
+ * - B) or an Object with "id" and "forcedTabIndex" properties which represents a part of the root component's shadow DOM.
21
21
  * The "id" must be a valid ID within the shadow root of the component ItemNavigation operates on.
22
22
  * This object must not be a DOM object because, as said, ItemNavigation will not set "tabindex" on it. It must be a representation of a DOM object only
23
23
  * and the developer has the responsibility to update the "tabindex" in the component's DOM.
24
24
  * - C) a combination of the above
25
25
  *
26
- * Whenever the user navigates with the keyboard, ItemNavigation will modify the "_tabIndex" properties of the items.
27
- * It is the items' responsibilities to re-render themselves and apply the correct value of "tabindex" (i.e. to map the "_tabIndex" ItemNavigation set to them to the "tabindex" property).
28
- * If the items of the ItemNavigation are UI5Elements themselves, this can happen naturally since they will be invalidated by their "_tabIndex" property.
29
- * If the items are Objects with "id" and "_tabIndex" however, it is the developer's responsibility to apply these and the easiest way is to have the root component invalidated by ItemNavigation.
30
- * To do so, set the "affectedPropertiesNames" constructor property to point to one or more of the root component's properties that need refreshing when "_tabIndex" is changed deeply.
26
+ * Whenever the user navigates with the keyboard, ItemNavigation will modify the "forcedTabIndex" properties of the items.
27
+ * It is the items' responsibilities to re-render themselves and apply the correct value of "tabindex" (i.e. to map the "forcedTabIndex" ItemNavigation set to them to the "tabindex" property).
28
+ * If the items of the ItemNavigation are UI5Elements themselves, this can happen naturally since they will be invalidated by their "forcedTabIndex" property.
29
+ * If the items are Objects with "id" and "forcedTabIndex" however, it is the developer's responsibility to apply these and the easiest way is to have the root component invalidated by ItemNavigation.
30
+ * To do so, set the "affectedPropertiesNames" constructor property to point to one or more of the root component's properties that need refreshing when "forcedTabIndex" is changed deeply.
31
31
  *
32
32
  * 2) Call the "setCurrentItem" method of ItemNavigation whenever you want to change the current item.
33
33
  * This is most commonly required if the user for example clicks on an item and thus selects it directly.
@@ -57,9 +57,8 @@ class ItemNavigation {
57
57
  }
58
58
  this.rootWebComponent = rootWebComponent;
59
59
  this.rootWebComponent.addEventListener("keydown", this._onkeydown.bind(this));
60
- this.rootWebComponent._onComponentStateFinalized = () => {
61
- this._init();
62
- };
60
+ this._initBound = this._init.bind(this);
61
+ this.rootWebComponent.attachComponentStateFinalized(this._initBound);
63
62
  if (typeof options.getItemsCallback !== "function") {
64
63
  throw new Error("getItemsCallback is required");
65
64
  }
@@ -98,7 +97,7 @@ class ItemNavigation {
98
97
  }
99
98
  _init() {
100
99
  this._getItems().forEach((item, idx) => {
101
- item._tabIndex = (idx === this._currentIndex) ? "0" : "-1";
100
+ item.forcedTabIndex = (idx === this._currentIndex) ? "0" : "-1";
102
101
  });
103
102
  }
104
103
  _onkeydown(event) {
@@ -266,7 +265,7 @@ class ItemNavigation {
266
265
  _applyTabIndex() {
267
266
  const items = this._getItems();
268
267
  for (let i = 0; i < items.length; i++) {
269
- items[i]._tabIndex = i === this._currentIndex ? "0" : "-1";
268
+ items[i].forcedTabIndex = i === this._currentIndex ? "0" : "-1";
270
269
  }
271
270
  this._affectedPropertiesNames.forEach(propName => {
272
271
  const prop = this.rootWebComponent[propName];
@@ -276,7 +275,7 @@ class ItemNavigation {
276
275
  _focusCurrentItem() {
277
276
  const currentItem = this._getCurrentItem();
278
277
  if (currentItem) {
279
- currentItem.focus({ focusVisible: true });
278
+ currentItem.focus();
280
279
  }
281
280
  }
282
281
  _canNavigate() {
@@ -308,7 +307,7 @@ class ItemNavigation {
308
307
  return;
309
308
  }
310
309
  if (currentItem.id) {
311
- return currentItemDOMRef.querySelector(`#${currentItem.id}`);
310
+ return currentItemDOMRef.querySelector(`[id="${currentItem.id}"]`);
312
311
  }
313
312
  }
314
313
  }