@ui5/webcomponents-base 0.0.0-e463d2345 → 0.0.0-e818f286e

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 (469) hide show
  1. package/.eslintignore +4 -0
  2. package/CHANGELOG.md +437 -0
  3. package/README.md +53 -7
  4. package/bundle.esm.js +24 -20
  5. package/dist/AssetRegistry.js +8 -6
  6. package/dist/Boot.js +59 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +95 -0
  9. package/dist/CustomElementsScope.js +30 -0
  10. package/dist/CustomElementsScopeUtils.js +108 -0
  11. package/dist/DOMObserver.js +65 -0
  12. package/dist/Device.js +71 -773
  13. package/dist/EventProvider.js +38 -26
  14. package/dist/FeaturesRegistry.js +4 -1
  15. package/dist/FontFace.js +20 -56
  16. package/dist/InitialConfiguration.js +64 -17
  17. package/dist/Keys.js +295 -0
  18. package/dist/ManagedStyles.js +83 -0
  19. package/dist/MediaRange.js +109 -0
  20. package/dist/PropertiesFileFormat.js +95 -0
  21. package/dist/Render.js +175 -0
  22. package/dist/RenderQueue.js +41 -17
  23. package/dist/RenderScheduler.js +24 -145
  24. package/dist/Runtimes.js +107 -0
  25. package/dist/StaticArea.js +2 -34
  26. package/dist/StaticAreaItem.js +69 -35
  27. package/dist/SystemCSSVars.js +10 -0
  28. package/dist/Theming.js +3 -44
  29. package/dist/UI5Element.js +497 -306
  30. package/dist/UI5ElementMetadata.js +198 -19
  31. package/dist/asset-registries/Icons.js +125 -14
  32. package/dist/asset-registries/Illustrations.js +30 -0
  33. package/dist/asset-registries/LocaleData.js +114 -51
  34. package/dist/asset-registries/Themes.js +37 -30
  35. package/dist/asset-registries/i18n.js +81 -33
  36. package/dist/assets/bundle.esm.81ba431e.js +43 -0
  37. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  38. package/dist/config/AnimationMode.js +16 -2
  39. package/dist/config/CalendarType.js +7 -7
  40. package/dist/config/FormatSettings.js +5 -1
  41. package/dist/config/Icons.js +52 -0
  42. package/dist/config/Language.js +62 -3
  43. package/dist/config/NoConflict.js +10 -3
  44. package/dist/config/Theme.js +32 -3
  45. package/dist/css/BusyIndicator.css +80 -0
  46. package/dist/css/FontFace.css +75 -0
  47. package/dist/css/OverrideFontFace.css +32 -0
  48. package/dist/css/SystemCSSVars.css +17 -0
  49. package/dist/delegate/ItemNavigation.js +249 -127
  50. package/dist/delegate/ResizeHandler.js +78 -38
  51. package/dist/delegate/ScrollEnablement.js +122 -14
  52. package/dist/features/F6Navigation.js +110 -0
  53. package/dist/features/OpenUI5Enablement.js +119 -0
  54. package/dist/features/OpenUI5Support.js +125 -0
  55. package/dist/generated/AssetParameters.js +13 -0
  56. package/dist/generated/VersionInfo.js +10 -0
  57. package/dist/generated/css/BusyIndicator.css.js +5 -0
  58. package/dist/generated/css/FontFace.css.js +5 -0
  59. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  60. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  61. package/dist/getSharedResource.js +30 -0
  62. package/dist/i18nBundle.js +62 -11
  63. package/{src → dist/locale}/Locale.js +0 -10
  64. package/dist/locale/RTLAwareRegistry.js +14 -0
  65. package/dist/locale/applyDirection.js +17 -0
  66. package/dist/locale/directionChange.js +32 -0
  67. package/dist/locale/getEffectiveDir.js +28 -0
  68. package/dist/locale/getLocale.js +41 -0
  69. package/dist/locale/languageChange.js +22 -0
  70. package/dist/locale/nextFallbackLocale.js +28 -0
  71. package/dist/{util → locale}/normalizeLocale.js +8 -31
  72. package/dist/renderer/LitRenderer.js +44 -7
  73. package/dist/renderer/directives/style-map.js +72 -0
  74. package/dist/renderer/executeTemplate.js +34 -0
  75. package/dist/sap/base/Log.js +241 -0
  76. package/dist/sap/base/assert.js +8 -0
  77. package/dist/sap/base/security/URLListValidator.js +148 -0
  78. package/dist/sap/base/security/encodeCSS.js +14 -0
  79. package/dist/sap/base/security/encodeXML.js +23 -0
  80. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  81. package/dist/sap/base/strings/toHex.js +8 -0
  82. package/dist/sap/base/util/now.js +7 -0
  83. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  84. package/dist/theming/CustomStyle.js +47 -6
  85. package/dist/theming/ThemeLoaded.js +22 -0
  86. package/dist/theming/applyTheme.js +79 -0
  87. package/dist/theming/getConstructableStyle.js +30 -0
  88. package/dist/theming/getEffectiveLinksHrefs.js +27 -0
  89. package/dist/theming/getEffectiveStyle.js +39 -0
  90. package/dist/theming/getStylesString.js +15 -0
  91. package/dist/theming/getThemeDesignerTheme.js +87 -0
  92. package/dist/theming/preloadLinks.js +23 -0
  93. package/dist/thirdparty/_merge.js +32 -0
  94. package/dist/thirdparty/isPlainObject.js +18 -0
  95. package/dist/thirdparty/merge.js +10 -0
  96. package/dist/types/CSSColor.js +9 -0
  97. package/dist/{dates → types}/CalendarType.js +2 -2
  98. package/dist/types/DataType.js +13 -1
  99. package/dist/types/Float.js +14 -0
  100. package/dist/types/Integer.js +4 -0
  101. package/dist/types/InvisibleMessageMode.js +30 -0
  102. package/dist/types/ItemNavigationBehavior.js +2 -7
  103. package/dist/types/NavigationMode.js +1 -0
  104. package/dist/types/PopupState.js +1 -1
  105. package/dist/types/ValueState.js +2 -1
  106. package/dist/updateShadowRoot.js +29 -0
  107. package/dist/util/AriaLabelHelper.js +39 -0
  108. package/dist/util/Caret.js +32 -0
  109. package/dist/util/ColorConversion.js +398 -0
  110. package/dist/util/FocusableElements.js +30 -11
  111. package/dist/util/HTMLSanitizer.js +7 -0
  112. package/dist/util/InvisibleMessage.js +69 -0
  113. package/dist/util/PopupUtils.js +93 -0
  114. package/dist/util/SlotsHelper.js +43 -0
  115. package/dist/util/StringHelper.js +17 -2
  116. package/dist/util/TabbableElements.js +9 -2
  117. package/dist/util/arraysAreEqual.js +15 -0
  118. package/dist/util/clamp.js +12 -0
  119. package/dist/util/createLinkInHead.js +19 -0
  120. package/dist/util/debounce.js +17 -0
  121. package/dist/util/detectNavigatorLanguage.js +3 -1
  122. package/dist/util/escapeRegex.js +10 -0
  123. package/dist/util/generateHighlightedMarkup.js +42 -0
  124. package/dist/util/getActiveElement.js +11 -0
  125. package/dist/util/getClassCopy.js +10 -0
  126. package/dist/util/getEffectiveContentDensity.js +5 -0
  127. package/dist/util/getFileExtension.js +21 -0
  128. package/dist/util/getNormalizedTarget.js +16 -0
  129. package/dist/util/getSingletonElementInstance.js +13 -0
  130. package/dist/util/isDefaultSlotProvided.js +11 -0
  131. package/dist/util/isElementInView.js +15 -0
  132. package/dist/util/isNodeHidden.js +1 -5
  133. package/dist/util/isNodeTabbable.js +4 -4
  134. package/dist/util/isValidPropertyName.js +11 -2
  135. package/dist/util/setToArray.js +10 -0
  136. package/hash.txt +1 -0
  137. package/index.js +1 -1
  138. package/lib/generate-asset-parameters/index.js +25 -0
  139. package/lib/generate-styles/index.js +26 -0
  140. package/lib/generate-version-info/index.js +32 -0
  141. package/package-scripts.js +41 -27
  142. package/package.json +22 -14
  143. package/src/AssetRegistry.js +8 -6
  144. package/src/Boot.js +59 -0
  145. package/src/CSP.js +59 -0
  146. package/src/CustomElementsRegistry.js +95 -0
  147. package/src/CustomElementsScope.js +30 -0
  148. package/src/CustomElementsScopeUtils.js +108 -0
  149. package/src/DOMObserver.js +65 -0
  150. package/src/Device.js +71 -773
  151. package/src/EventProvider.js +38 -26
  152. package/src/FeaturesRegistry.js +4 -1
  153. package/src/FontFace.js +20 -56
  154. package/src/InitialConfiguration.js +64 -17
  155. package/src/Keys.js +295 -0
  156. package/src/ManagedStyles.js +83 -0
  157. package/src/MediaRange.js +109 -0
  158. package/src/PropertiesFileFormat.js +95 -0
  159. package/src/Render.js +175 -0
  160. package/src/RenderQueue.js +41 -17
  161. package/src/RenderScheduler.js +24 -145
  162. package/src/Runtimes.js +107 -0
  163. package/src/StaticArea.js +2 -34
  164. package/src/StaticAreaItem.js +69 -35
  165. package/src/SystemCSSVars.js +10 -0
  166. package/src/Theming.js +3 -44
  167. package/src/UI5Element.js +497 -306
  168. package/src/UI5ElementMetadata.js +198 -19
  169. package/src/asset-registries/Icons.js +125 -14
  170. package/src/asset-registries/Illustrations.js +30 -0
  171. package/src/asset-registries/LocaleData.js +114 -51
  172. package/src/asset-registries/Themes.js +37 -30
  173. package/src/asset-registries/i18n.js +81 -33
  174. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  175. package/src/config/AnimationMode.js +16 -2
  176. package/src/config/CalendarType.js +7 -7
  177. package/src/config/FormatSettings.js +5 -1
  178. package/src/config/Icons.js +52 -0
  179. package/src/config/Language.js +62 -3
  180. package/src/config/NoConflict.js +10 -3
  181. package/src/config/Theme.js +32 -3
  182. package/src/css/BusyIndicator.css +80 -0
  183. package/src/css/FontFace.css +75 -0
  184. package/src/css/OverrideFontFace.css +32 -0
  185. package/src/css/SystemCSSVars.css +17 -0
  186. package/src/delegate/ItemNavigation.js +249 -127
  187. package/src/delegate/ResizeHandler.js +78 -38
  188. package/src/delegate/ScrollEnablement.js +122 -14
  189. package/src/features/F6Navigation.js +110 -0
  190. package/src/features/OpenUI5Enablement.js +119 -0
  191. package/src/features/OpenUI5Support.js +125 -0
  192. package/src/getSharedResource.js +30 -0
  193. package/src/i18nBundle.js +62 -11
  194. package/{dist → src/locale}/Locale.js +0 -10
  195. package/src/locale/RTLAwareRegistry.js +14 -0
  196. package/src/locale/applyDirection.js +17 -0
  197. package/src/locale/directionChange.js +32 -0
  198. package/src/locale/getEffectiveDir.js +28 -0
  199. package/src/locale/getLocale.js +41 -0
  200. package/src/locale/languageChange.js +22 -0
  201. package/src/locale/nextFallbackLocale.js +28 -0
  202. package/src/{util → locale}/normalizeLocale.js +8 -31
  203. package/src/renderer/LitRenderer.js +44 -7
  204. package/src/renderer/directives/style-map.js +72 -0
  205. package/src/renderer/executeTemplate.js +34 -0
  206. package/src/theming/CustomStyle.js +47 -6
  207. package/src/theming/ThemeLoaded.js +22 -0
  208. package/src/theming/applyTheme.js +79 -0
  209. package/src/theming/getConstructableStyle.js +30 -0
  210. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  211. package/src/theming/getEffectiveStyle.js +39 -0
  212. package/src/theming/getStylesString.js +15 -0
  213. package/src/theming/getThemeDesignerTheme.js +87 -0
  214. package/src/theming/preloadLinks.js +23 -0
  215. package/src/thirdparty/_merge.js +32 -0
  216. package/src/thirdparty/isPlainObject.js +18 -0
  217. package/src/thirdparty/merge.js +10 -0
  218. package/src/types/CSSColor.js +9 -0
  219. package/src/{dates → types}/CalendarType.js +2 -2
  220. package/src/types/DataType.js +13 -1
  221. package/src/types/Float.js +14 -0
  222. package/src/types/Integer.js +4 -0
  223. package/src/types/InvisibleMessageMode.js +30 -0
  224. package/src/types/ItemNavigationBehavior.js +2 -7
  225. package/src/types/NavigationMode.js +1 -0
  226. package/src/types/PopupState.js +1 -1
  227. package/src/types/ValueState.js +2 -1
  228. package/src/updateShadowRoot.js +29 -0
  229. package/src/util/AriaLabelHelper.js +39 -0
  230. package/src/util/Caret.js +32 -0
  231. package/src/util/ColorConversion.js +398 -0
  232. package/src/util/FocusableElements.js +30 -11
  233. package/src/util/HTMLSanitizer.js +7 -0
  234. package/src/util/InvisibleMessage.js +69 -0
  235. package/src/util/PopupUtils.js +93 -0
  236. package/src/util/SlotsHelper.js +43 -0
  237. package/src/util/StringHelper.js +17 -2
  238. package/src/util/TabbableElements.js +9 -2
  239. package/src/util/arraysAreEqual.js +15 -0
  240. package/src/util/clamp.js +12 -0
  241. package/src/util/createLinkInHead.js +19 -0
  242. package/src/util/debounce.js +17 -0
  243. package/src/util/detectNavigatorLanguage.js +3 -1
  244. package/src/util/escapeRegex.js +10 -0
  245. package/src/util/generateHighlightedMarkup.js +42 -0
  246. package/src/util/getActiveElement.js +11 -0
  247. package/src/util/getClassCopy.js +10 -0
  248. package/src/util/getEffectiveContentDensity.js +5 -0
  249. package/src/util/getFileExtension.js +21 -0
  250. package/src/util/getNormalizedTarget.js +16 -0
  251. package/src/util/getSingletonElementInstance.js +13 -0
  252. package/src/util/isDefaultSlotProvided.js +11 -0
  253. package/src/util/isElementInView.js +15 -0
  254. package/src/util/isNodeHidden.js +1 -5
  255. package/src/util/isNodeTabbable.js +4 -4
  256. package/src/util/isValidPropertyName.js +11 -2
  257. package/src/util/setToArray.js +10 -0
  258. package/used-modules.txt +10 -0
  259. package/bundle.es5.js +0 -28
  260. package/config/.eslintrc.js +0 -3
  261. package/config/rollup.config.js +0 -1
  262. package/dist/Assets.js +0 -2
  263. package/dist/CSS.js +0 -48
  264. package/dist/FormatSettings.js +0 -31
  265. package/dist/LocaleProvider.js +0 -34
  266. package/dist/ResourceLoaderOverrides.js +0 -38
  267. package/dist/SVGIconRegistry.js +0 -54
  268. package/dist/boot.js +0 -25
  269. package/dist/compatibility/DOMObserver.js +0 -62
  270. package/dist/compatibility/patchNodeValue.js +0 -24
  271. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  272. package/dist/dates/CalendarDate.js +0 -203
  273. package/dist/dates/CalendarUtils.js +0 -99
  274. package/dist/delegate/CustomResize.js +0 -78
  275. package/dist/delegate/NativeResize.js +0 -44
  276. package/dist/events/PseudoEvents.js +0 -58
  277. package/dist/features/browsersupport/Edge.js +0 -6
  278. package/dist/features/browsersupport/IE11.js +0 -41
  279. package/dist/features/calendar/Buddhist.js +0 -1
  280. package/dist/features/calendar/Islamic.js +0 -1
  281. package/dist/features/calendar/Japanese.js +0 -1
  282. package/dist/features/calendar/Persian.js +0 -1
  283. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
  284. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
  285. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
  286. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
  287. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
  288. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
  289. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
  290. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
  291. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
  292. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
  293. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
  294. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
  295. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
  296. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
  297. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
  298. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
  299. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
  300. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
  301. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
  302. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
  303. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
  304. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
  305. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
  306. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
  307. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
  308. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
  309. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
  310. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
  311. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
  312. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
  313. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
  314. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
  315. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
  316. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
  317. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
  318. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
  319. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
  320. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
  321. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
  322. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
  323. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
  324. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
  325. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
  326. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
  327. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
  328. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
  329. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
  330. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
  331. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
  332. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
  333. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
  334. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
  335. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
  336. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
  337. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
  338. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
  339. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
  340. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
  341. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
  342. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
  343. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
  344. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
  345. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
  346. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
  347. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
  348. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
  349. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
  350. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
  351. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
  352. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
  353. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
  354. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
  355. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
  356. package/dist/json-imports/LocaleData.js +0 -171
  357. package/dist/renderer/ifDefined.js +0 -21
  358. package/dist/resources/bundle.es5.js +0 -12643
  359. package/dist/resources/bundle.es5.js.map +0 -1
  360. package/dist/resources/bundle.esm.js +0 -7450
  361. package/dist/resources/bundle.esm.js.map +0 -1
  362. package/dist/shims/Core-shim.js +0 -52
  363. package/dist/shims/jquery-shim.js +0 -89
  364. package/dist/test-resources/assets/Themes.js +0 -11
  365. package/dist/test-resources/elements/Child.js +0 -35
  366. package/dist/test-resources/elements/Generic.js +0 -83
  367. package/dist/test-resources/elements/GenericExt.js +0 -26
  368. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  369. package/dist/test-resources/elements/Parent.js +0 -36
  370. package/dist/test-resources/pages/AllTestElements.html +0 -42
  371. package/dist/test-resources/pages/Configuration.html +0 -20
  372. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  373. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  374. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  375. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  376. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  377. package/dist/test-resources/specs/Theming.spec.js +0 -31
  378. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  379. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -93
  380. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  381. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  382. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  383. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  384. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  385. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  386. package/dist/theming/StyleInjection.js +0 -67
  387. package/dist/thirdparty/Array.from.js +0 -16
  388. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  389. package/dist/thirdparty/Array.prototype.find.js +0 -46
  390. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  391. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  392. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  393. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  394. package/dist/thirdparty/Number.isInteger.js +0 -5
  395. package/dist/thirdparty/Number.isNaN.js +0 -1
  396. package/dist/thirdparty/Number.parseInt.js +0 -1
  397. package/dist/thirdparty/Object.assign.js +0 -31
  398. package/dist/thirdparty/Object.entries.js +0 -11
  399. package/dist/thirdparty/Symbol.js +0 -2
  400. package/dist/thirdparty/WeakSet.js +0 -27
  401. package/dist/thirdparty/events-polyfills.js +0 -89
  402. package/dist/thirdparty/fetch.js +0 -1
  403. package/dist/thirdparty/template.js +0 -600
  404. package/dist/util/CSSTransformUtils.js +0 -90
  405. package/dist/webcomponentsjs/LICENSE.md +0 -19
  406. package/dist/webcomponentsjs/README.md +0 -229
  407. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  408. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  409. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  410. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  411. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  412. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  413. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  414. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  415. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  416. package/dist/webcomponentsjs/package.json +0 -46
  417. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  418. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  419. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  420. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  421. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  422. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  423. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  424. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  425. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  426. package/src/Assets.js +0 -2
  427. package/src/CSS.js +0 -48
  428. package/src/FormatSettings.js +0 -31
  429. package/src/LocaleProvider.js +0 -34
  430. package/src/ResourceLoaderOverrides.js +0 -38
  431. package/src/SVGIconRegistry.js +0 -54
  432. package/src/boot.js +0 -25
  433. package/src/compatibility/DOMObserver.js +0 -62
  434. package/src/compatibility/patchNodeValue.js +0 -24
  435. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  436. package/src/dates/CalendarDate.js +0 -203
  437. package/src/dates/CalendarUtils.js +0 -99
  438. package/src/delegate/CustomResize.js +0 -78
  439. package/src/delegate/NativeResize.js +0 -44
  440. package/src/events/PseudoEvents.js +0 -58
  441. package/src/features/browsersupport/Edge.js +0 -6
  442. package/src/features/browsersupport/IE11.js +0 -41
  443. package/src/features/calendar/Buddhist.js +0 -1
  444. package/src/features/calendar/Islamic.js +0 -1
  445. package/src/features/calendar/Japanese.js +0 -1
  446. package/src/features/calendar/Persian.js +0 -1
  447. package/src/json-imports/LocaleData.js +0 -171
  448. package/src/renderer/ifDefined.js +0 -21
  449. package/src/shims/Core-shim.js +0 -52
  450. package/src/shims/jquery-shim.js +0 -89
  451. package/src/theming/StyleInjection.js +0 -67
  452. package/src/thirdparty/Array.from.js +0 -16
  453. package/src/thirdparty/Array.prototype.fill.js +0 -44
  454. package/src/thirdparty/Array.prototype.find.js +0 -46
  455. package/src/thirdparty/Array.prototype.includes.js +0 -51
  456. package/src/thirdparty/Element.prototype.closest.js +0 -11
  457. package/src/thirdparty/Element.prototype.matches.js +0 -6
  458. package/src/thirdparty/Map.prototype.keys.js +0 -9
  459. package/src/thirdparty/Number.isInteger.js +0 -5
  460. package/src/thirdparty/Number.isNaN.js +0 -1
  461. package/src/thirdparty/Number.parseInt.js +0 -1
  462. package/src/thirdparty/Object.assign.js +0 -31
  463. package/src/thirdparty/Object.entries.js +0 -11
  464. package/src/thirdparty/Symbol.js +0 -2
  465. package/src/thirdparty/WeakSet.js +0 -27
  466. package/src/thirdparty/events-polyfills.js +0 -89
  467. package/src/thirdparty/fetch.js +0 -1
  468. package/src/thirdparty/template.js +0 -600
  469. package/src/util/CSSTransformUtils.js +0 -90
@@ -0,0 +1,30 @@
1
+ import getSingletonElementInstance from "./util/getSingletonElementInstance.js";
2
+
3
+ const getSharedResourcesInstance = () => getSingletonElementInstance("ui5-shared-resources", document.head);
4
+
5
+ /**
6
+ * Use this method to initialize/get resources that you would like to be shared among UI5 Web Components runtime instances.
7
+ * The data will be accessed via a singleton "ui5-shared-resources" HTML element in the "head" element of the page.
8
+ *
9
+ * @public
10
+ * @param namespace Unique ID of the resource, may contain "." to denote hierarchy
11
+ * @param initialValue Object or primitive that will be used as an initial value if the resource does not exist
12
+ * @returns {*}
13
+ */
14
+ const getSharedResource = (namespace, initialValue) => {
15
+ const parts = namespace.split(".");
16
+ let current = getSharedResourcesInstance();
17
+
18
+ for (let i = 0; i < parts.length; i++) {
19
+ const part = parts[i];
20
+ const lastPart = i === parts.length - 1;
21
+ if (!Object.prototype.hasOwnProperty.call(current, part)) {
22
+ current[part] = lastPart ? initialValue : {};
23
+ }
24
+ current = current[part];
25
+ }
26
+
27
+ return current;
28
+ };
29
+
30
+ export default getSharedResource;
package/src/i18nBundle.js CHANGED
@@ -1,35 +1,86 @@
1
- import { fetchI18nBundle, getI18nBundleData } from "./asset-registries/i18n.js";
1
+ import { registerI18nLoader, fetchI18nBundle, getI18nBundleData } from "./asset-registries/i18n.js";
2
2
  import formatMessage from "./util/formatMessage.js";
3
3
 
4
4
  const I18nBundleInstances = new Map();
5
5
 
6
+ let customGetI18nBundle;
7
+
8
+ /**
9
+ * @class
10
+ * @public
11
+ */
6
12
  class I18nBundle {
7
13
  constructor(packageName) {
8
14
  this.packageName = packageName;
9
15
  }
10
16
 
17
+ /**
18
+ * Returns a text in the currently loaded language
19
+ *
20
+ * @public
21
+ * @param {Object|String} textObj key/defaultText pair or just the key
22
+ * @param params Values for the placeholders
23
+ * @returns {*}
24
+ */
11
25
  getText(textObj, ...params) {
12
- if (!textObj || !textObj.key || !textObj.defaultText) {
26
+ if (typeof textObj === "string") {
27
+ textObj = { key: textObj, defaultText: textObj };
28
+ }
29
+
30
+ if (!textObj || !textObj.key) {
13
31
  return "";
14
32
  }
15
- const bundle = getI18nBundleData(this.packageName);
16
33
 
17
- if (!bundle || !bundle[textObj.key]) {
18
- return formatMessage(textObj.defaultText, params); // Fallback to "en"
34
+ const bundle = getI18nBundleData(this.packageName);
35
+ if (bundle && !bundle[textObj.key]) {
36
+ console.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`); // eslint-disable-line
19
37
  }
38
+ const messageText = bundle && bundle[textObj.key] ? bundle[textObj.key] : (textObj.defaultText || textObj.key);
20
39
 
21
- return formatMessage(bundle[textObj.key], params);
40
+ return formatMessage(messageText, params);
22
41
  }
23
42
  }
24
43
 
25
- const getI18nBundle = packageName => {
44
+ const getI18nBundleSync = packageName => {
26
45
  if (I18nBundleInstances.has(packageName)) {
27
46
  return I18nBundleInstances.get(packageName);
28
47
  }
29
48
 
30
- const i18nBunle = new I18nBundle(packageName);
31
- I18nBundleInstances.set(packageName, i18nBunle);
32
- return i18nBunle;
49
+ const i18nBundle = new I18nBundle(packageName);
50
+ I18nBundleInstances.set(packageName, i18nBundle);
51
+ return i18nBundle;
52
+ };
53
+
54
+ /**
55
+ * Allows developers to provide a custom getI18nBundle implementation
56
+ * If this function is called, the custom implementation will be used for all components and will completely
57
+ * replace the default implementation.
58
+ *
59
+ * @public
60
+ * @param customGet the function to use instead of the standard getI18nBundle implementation
61
+ */
62
+ const registerCustomI18nBundleGetter = customGet => {
63
+ customGetI18nBundle = customGet;
64
+ };
65
+
66
+ /**
67
+ * Fetches and returns the I18nBundle instance for the given package
68
+ *
69
+ * @public
70
+ * @param packageName
71
+ * @returns {Promise<I18nBundle>}
72
+ */
73
+ const getI18nBundle = async packageName => {
74
+ if (customGetI18nBundle) {
75
+ return customGetI18nBundle(packageName);
76
+ }
77
+
78
+ await fetchI18nBundle(packageName);
79
+ return getI18nBundleSync(packageName);
33
80
  };
34
81
 
35
- export { fetchI18nBundle, getI18nBundle };
82
+ export {
83
+ registerI18nLoader,
84
+ getI18nBundle,
85
+ registerCustomI18nBundleGetter,
86
+ };
@@ -1,5 +1,3 @@
1
- import getDesigntimePropertyAsArray from "./util/getDesigntimePropertyAsArray.js";
2
-
3
1
  const rLocale = /^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?((?:-[0-9A-Z]{5,8}|-[0-9][0-9A-Z]{3})*)((?:-[0-9A-WYZ](?:-[0-9A-Z]{2,8})+)*)(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i;
4
2
 
5
3
  class Locale {
@@ -88,14 +86,6 @@ class Locale {
88
86
  }
89
87
  return r.join("-");
90
88
  }
91
-
92
- static get _cldrLocales() {
93
- return getDesigntimePropertyAsArray("$cldr-locales:ar,ar_EG,ar_SA,bg,br,ca,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,kk,ko,lt,lv,ms,nb,nl,nl_BE,nn,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$");
94
- }
95
-
96
- static get _coreI18nLocales() {
97
- return getDesigntimePropertyAsArray("$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,ko,lt,lv,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$");
98
- }
99
89
  }
100
90
 
101
91
  export default Locale;
@@ -0,0 +1,14 @@
1
+ const rtlAwareSet = new Set();
2
+
3
+ const markAsRtlAware = klass => {
4
+ rtlAwareSet.add(klass);
5
+ };
6
+
7
+ const isRtlAware = klass => {
8
+ return rtlAwareSet.has(klass);
9
+ };
10
+
11
+ export {
12
+ markAsRtlAware,
13
+ isRtlAware,
14
+ };
@@ -0,0 +1,17 @@
1
+ import { reRenderAllUI5Elements } from "../Render.js";
2
+ import { fireDirectionChange } from "./directionChange.js";
3
+
4
+ /**
5
+ * Re-renders all RTL-aware UI5 Elements.
6
+ * Call this method whenever you change the "dir" property anywhere in your HTML page
7
+ * Example: document.body.dir = "rtl"; applyDirection();
8
+ *
9
+ * @returns {Promise<void>}
10
+ */
11
+ const applyDirection = async () => {
12
+ const listenersResults = fireDirectionChange();
13
+ await Promise.all(listenersResults);
14
+ await reRenderAllUI5Elements({ rtlAware: true });
15
+ };
16
+
17
+ export default applyDirection;
@@ -0,0 +1,32 @@
1
+ import EventProvider from "../EventProvider.js";
2
+
3
+ const eventProvider = new EventProvider();
4
+ const DIR_CHANGE = "directionChange";
5
+
6
+ /**
7
+ * Attach a callback that will be executed whenever the application calls the "applyDirection" function
8
+ * @public
9
+ * @param listener
10
+ */
11
+ const attachDirectionChange = listener => {
12
+ eventProvider.attachEvent(DIR_CHANGE, listener);
13
+ };
14
+
15
+ /**
16
+ * Detach a callback that was passed with "attachDirectionChange"
17
+ * @public
18
+ * @param listener
19
+ */
20
+ const detachDirectionChange = listener => {
21
+ eventProvider.detachEvent(DIR_CHANGE, listener);
22
+ };
23
+
24
+ const fireDirectionChange = () => {
25
+ return eventProvider.fireEvent(DIR_CHANGE);
26
+ };
27
+
28
+ export {
29
+ attachDirectionChange,
30
+ detachDirectionChange,
31
+ fireDirectionChange,
32
+ };
@@ -0,0 +1,28 @@
1
+ import { getRTL } from "../config/RTL.js";
2
+
3
+ const GLOBAL_DIR_CSS_VAR = "--_ui5_dir";
4
+
5
+ const getEffectiveDir = element => {
6
+ const doc = window.document;
7
+ const dirValues = ["ltr", "rtl"]; // exclude "auto" and "" from all calculations
8
+ const locallyAppliedDir = getComputedStyle(element).getPropertyValue(GLOBAL_DIR_CSS_VAR);
9
+
10
+ // In that order, inspect the CSS Var (for modern browsers), the element itself, html and body (for IE fallback)
11
+ if (dirValues.includes(locallyAppliedDir)) {
12
+ return locallyAppliedDir;
13
+ }
14
+ if (dirValues.includes(element.dir)) {
15
+ return element.dir;
16
+ }
17
+ if (dirValues.includes(doc.documentElement.dir)) {
18
+ return doc.documentElement.dir;
19
+ }
20
+ if (dirValues.includes(doc.body.dir)) {
21
+ return doc.body.dir;
22
+ }
23
+
24
+ // Finally, check the configuration for explicitly set RTL or language-implied RTL
25
+ return getRTL() ? "rtl" : undefined;
26
+ };
27
+
28
+ export default getEffectiveDir;
@@ -0,0 +1,41 @@
1
+ import detectNavigatorLanguage from "../util/detectNavigatorLanguage.js";
2
+ import { getLanguage as getConfigLanguage } from "../config/Language.js";
3
+ import Locale from "./Locale.js";
4
+
5
+ const cache = new Map();
6
+
7
+ const getLocaleInstance = lang => {
8
+ if (!cache.has(lang)) {
9
+ cache.set(lang, new Locale(lang));
10
+ }
11
+
12
+ return cache.get(lang);
13
+ };
14
+
15
+ const convertToLocaleOrNull = lang => {
16
+ try {
17
+ if (lang && typeof lang === "string") {
18
+ return getLocaleInstance(lang);
19
+ }
20
+ } catch (e) {
21
+ // ignore
22
+ }
23
+ };
24
+
25
+ /**
26
+ * Returns the locale based on the parameter or configured language Configuration#getLanguage
27
+ * If no language has been configured - a new locale based on browser language is returned
28
+ */
29
+ const getLocale = lang => {
30
+ if (lang) {
31
+ return convertToLocaleOrNull(lang);
32
+ }
33
+
34
+ if (getConfigLanguage()) {
35
+ return getLocaleInstance(getConfigLanguage());
36
+ }
37
+
38
+ return convertToLocaleOrNull(detectNavigatorLanguage());
39
+ };
40
+
41
+ export default getLocale;
@@ -0,0 +1,22 @@
1
+ import EventProvider from "../EventProvider.js";
2
+
3
+ const eventProvider = new EventProvider();
4
+ const LANG_CHANGE = "languageChange";
5
+
6
+ const attachLanguageChange = listener => {
7
+ eventProvider.attachEvent(LANG_CHANGE, listener);
8
+ };
9
+
10
+ const detachLanguageChange = listener => {
11
+ eventProvider.detachEvent(LANG_CHANGE, listener);
12
+ };
13
+
14
+ const fireLanguageChange = lang => {
15
+ return eventProvider.fireEventAsync(LANG_CHANGE, lang);
16
+ };
17
+
18
+ export {
19
+ attachLanguageChange,
20
+ detachLanguageChange,
21
+ fireLanguageChange,
22
+ };
@@ -0,0 +1,28 @@
1
+ import { DEFAULT_LOCALE } from "../generated/AssetParameters.js";
2
+
3
+ /**
4
+ * Calculates the next fallback locale for the given locale.
5
+ *
6
+ * @param {string} locale Locale string in Java format (underscores) or null
7
+ * @returns {string} Next fallback Locale or "en" if no fallbacks found.
8
+ */
9
+ const nextFallbackLocale = locale => {
10
+ if (!locale) {
11
+ return DEFAULT_LOCALE;
12
+ }
13
+
14
+ if (locale === "zh_HK") {
15
+ return "zh_TW";
16
+ }
17
+
18
+ // if there are multiple segments (separated by underscores), remove the last one
19
+ const p = locale.lastIndexOf("_");
20
+ if (p >= 0) {
21
+ return locale.slice(0, p);
22
+ }
23
+
24
+ // for any language but the default, fallback to the default first before falling back to the 'raw' language (empty string)
25
+ return locale !== DEFAULT_LOCALE ? DEFAULT_LOCALE : "";
26
+ };
27
+
28
+ export default nextFallbackLocale;
@@ -1,3 +1,5 @@
1
+ import { DEFAULT_LOCALE } from "../generated/AssetParameters.js";
2
+
1
3
  const localeRegEX = /^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?((?:-[0-9A-Z]{5,8}|-[0-9][0-9A-Z]{3})*)((?:-[0-9A-WYZ](?:-[0-9A-Z]{2,8})+)*)(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i;
2
4
  const SAPSupportabilityLocales = /(?:^|-)(saptrc|sappsd)(?:-|$)/i;
3
5
 
@@ -12,11 +14,15 @@ const M_ISO639_NEW_TO_OLD = {
12
14
  /**
13
15
  * Normalizes the given locale in BCP-47 syntax.
14
16
  * @param {string} locale locale to normalize
15
- * @returns {string} Normalized locale or undefined if the locale can't be normalized
17
+ * @returns {string} Normalized locale, "undefined" if the locale can't be normalized or the default locale, if no locale provided.
16
18
  */
17
19
  const normalizeLocale = locale => {
18
20
  let m;
19
21
 
22
+ if (!locale) {
23
+ return DEFAULT_LOCALE;
24
+ }
25
+
20
26
  if (typeof locale === "string" && (m = localeRegEX.exec(locale.replace(/_/g, "-")))) {/* eslint-disable-line */
21
27
  let language = m[1].toLowerCase();
22
28
  let region = m[3] ? m[3].toUpperCase() : undefined;
@@ -45,33 +51,4 @@ const normalizeLocale = locale => {
45
51
  }
46
52
  };
47
53
 
48
-
49
- /**
50
- * Calculates the next fallback locale for the given locale.
51
- *
52
- * @param {string} locale Locale string in Java format (underscores) or null
53
- * @returns {string|null} Next fallback Locale or null if there is no more fallback
54
- */
55
- const nextFallbackLocale = locale => {
56
- if (!locale) {
57
- return null;
58
- }
59
-
60
- if (locale === "zh_HK") {
61
- return "zh_TW";
62
- }
63
-
64
- // if there are multiple segments (separated by underscores), remove the last one
65
- const p = locale.lastIndexOf("_");
66
- if (p >= 0) {
67
- return locale.slice(0, p);
68
- }
69
-
70
- // for any language but 'en', fallback to 'en' first before falling back to the 'raw' language (empty string)
71
- return locale !== "en" ? "en" : "";
72
- };
73
-
74
- export {
75
- normalizeLocale,
76
- nextFallbackLocale,
77
- };
54
+ export default normalizeLocale;
@@ -1,15 +1,52 @@
1
- import { html, render } from "lit-html/lit-html.js";
1
+ import {
2
+ render,
3
+ html,
4
+ svg,
5
+ } from "lit-html";
6
+ import { getFeature } from "../FeaturesRegistry.js";
2
7
 
3
- const litRender = (templateResult, domNode, styles, { eventContext } = {}) => {
4
- if (styles) {
5
- templateResult = html`<style>${styles}</style>${templateResult}`;
8
+ const effectiveHtml = (...args) => {
9
+ const LitStatic = getFeature("LitStatic");
10
+ const fn = LitStatic ? LitStatic.html : html;
11
+ return fn(...args);
12
+ };
13
+
14
+ const effectiveSvg = (...args) => {
15
+ const LitStatic = getFeature("LitStatic");
16
+ const fn = LitStatic ? LitStatic.svg : svg;
17
+ return fn(...args);
18
+ };
19
+
20
+ const litRender = (templateResult, domNode, styleStrOrHrefsArr, forStaticArea, { host } = {}) => {
21
+ const OpenUI5Enablement = getFeature("OpenUI5Enablement");
22
+ if (OpenUI5Enablement && !forStaticArea) {
23
+ templateResult = OpenUI5Enablement.wrapTemplateResultInBusyMarkup(effectiveHtml, host, templateResult);
24
+ }
25
+
26
+ if (typeof styleStrOrHrefsArr === "string") {
27
+ templateResult = effectiveHtml`<style>${styleStrOrHrefsArr}</style>${templateResult}`;
28
+ } else if (Array.isArray(styleStrOrHrefsArr) && styleStrOrHrefsArr.length) {
29
+ templateResult = effectiveHtml`${styleStrOrHrefsArr.map(href => effectiveHtml`<link type="text/css" rel="stylesheet" href="${href}">`)}${templateResult}`;
6
30
  }
7
- render(templateResult, domNode, { eventContext });
31
+ render(templateResult, domNode, { host });
8
32
  };
9
33
 
10
- export { html, svg } from "lit-html/lit-html.js";
34
+ const scopeTag = (tag, tags, suffix) => {
35
+ const LitStatic = getFeature("LitStatic");
36
+ if (LitStatic) {
37
+ return LitStatic.unsafeStatic((tags || []).includes(tag) ? `${tag}-${suffix}` : tag);
38
+ }
39
+ };
40
+
41
+ export {
42
+ effectiveHtml as html,
43
+ effectiveSvg as svg,
44
+ };
45
+ export { scopeTag };
11
46
  export { repeat } from "lit-html/directives/repeat.js";
12
47
  export { classMap } from "lit-html/directives/class-map.js";
13
- export { styleMap } from "lit-html/directives/style-map.js";
48
+ export { styleMap } from "./directives/style-map.js";
49
+ export { ifDefined } from "lit-html/directives/if-defined.js";
50
+ export { unsafeHTML } from "lit-html/directives/unsafe-html.js";
14
51
 
15
52
  export default litRender;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2018 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+
7
+ /**
8
+ * This is the original style-map.js directive from lit-html 2 with the only difference that "render" is not called even for the first rendering (update is used instead)
9
+ */
10
+
11
+ import { noChange } from 'lit-html';
12
+ import { directive, Directive, PartType, } from 'lit-html/directive.js';
13
+ class StyleMapDirective extends Directive {
14
+ constructor(partInfo) {
15
+ var _a;
16
+ super(partInfo);
17
+ if (partInfo.type !== PartType.ATTRIBUTE ||
18
+ partInfo.name !== 'style' ||
19
+ ((_a = partInfo.strings) === null || _a === void 0 ? void 0 : _a.length) > 2) {
20
+ throw new Error('The `styleMap` directive must be used in the `style` attribute ' +
21
+ 'and must be the only part in the attribute.');
22
+ }
23
+ }
24
+ render(styleInfo) {
25
+ return "";
26
+ }
27
+ update(part, [styleInfo]) {
28
+ const { style } = part.element;
29
+ if (this._previousStyleProperties === undefined) {
30
+ this._previousStyleProperties = new Set();
31
+ for (const name in styleInfo) {
32
+ this._previousStyleProperties.add(name);
33
+ }
34
+ // return this.render(styleInfo);
35
+ }
36
+ // Remove old properties that no longer exist in styleInfo
37
+ // We use forEach() instead of for-of so that re don't require down-level
38
+ // iteration.
39
+ this._previousStyleProperties.forEach((name) => {
40
+ // If the name isn't in styleInfo or it's null/undefined
41
+ if (styleInfo[name] == null) {
42
+ this._previousStyleProperties.delete(name);
43
+ if (name.includes('-')) {
44
+ style.removeProperty(name);
45
+ }
46
+ else {
47
+ // Note reset using empty string (vs null) as IE11 does not always
48
+ // reset via null (https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style#setting_styles)
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ style[name] = '';
51
+ }
52
+ }
53
+ });
54
+ // Add or update properties
55
+ for (const name in styleInfo) {
56
+ const value = styleInfo[name];
57
+ if (value != null) {
58
+ this._previousStyleProperties.add(name);
59
+ if (name.includes('-')) {
60
+ style.setProperty(name, value);
61
+ }
62
+ else {
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ style[name] = value;
65
+ }
66
+ }
67
+ }
68
+ return noChange;
69
+ }
70
+ }
71
+
72
+ export const styleMap = directive(StyleMapDirective);
@@ -0,0 +1,34 @@
1
+ import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from "../CustomElementsScopeUtils.js";
2
+
3
+ /**
4
+ * Runs a component's template with the component's current state, while also scoping HTML
5
+ *
6
+ * @param template - the template to execute
7
+ * @param component - the component
8
+ * @public
9
+ * @returns {*}
10
+ */
11
+ const executeTemplate = (template, component) => {
12
+ const tagsToScope = getTagsToScope(component);
13
+ const scope = getCustomElementsScopingSuffix();
14
+ return template(component, tagsToScope, scope);
15
+ };
16
+
17
+ /**
18
+ * Returns all tags, used inside component's template subject to scoping.
19
+ * @param component - the component
20
+ * @returns {Array[]}
21
+ * @private
22
+ */
23
+ const getTagsToScope = component => {
24
+ const componentTag = component.constructor.getMetadata().getPureTag();
25
+ const tagsToScope = component.constructor.getUniqueDependencies().map(dep => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
26
+
27
+ if (shouldScopeCustomElement(componentTag)) {
28
+ tagsToScope.push(componentTag);
29
+ }
30
+
31
+ return tagsToScope;
32
+ };
33
+
34
+ export default executeTemplate;
@@ -1,19 +1,60 @@
1
- const customCSSFor = {};
1
+ import { reRenderAllUI5Elements } from "../Render.js";
2
+ import getSharedResource from "../getSharedResource.js";
3
+ import EventProvider from "../EventProvider.js";
2
4
 
3
- const addCustomCSS = (tag, css, ...rest) => {
4
- if (rest.length) {
5
- throw new Error("addCustomCSS no longer accepts theme specific CSS. new signature is `addCustomCSS(tag, css)`");
5
+ const eventProvider = getSharedResource("CustomStyle.eventProvider", new EventProvider());
6
+ const CUSTOM_CSS_CHANGE = "CustomCSSChange";
7
+
8
+ const attachCustomCSSChange = listener => {
9
+ eventProvider.attachEvent(CUSTOM_CSS_CHANGE, listener);
10
+ };
11
+
12
+ const detachCustomCSSChange = listener => {
13
+ eventProvider.detachEvent(CUSTOM_CSS_CHANGE, listener);
14
+ };
15
+
16
+ const fireCustomCSSChange = tag => {
17
+ return eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);
18
+ };
19
+
20
+ const customCSSFor = getSharedResource("CustomStyle.customCSSFor", {});
21
+
22
+ // Listen to the eventProvider, in case other copies of this CustomStyle module fire this
23
+ // event, and this copy would therefore need to reRender the ui5 webcomponents; but
24
+ // don't reRender if it was this copy that fired the event to begin with.
25
+ let skipRerender;
26
+ attachCustomCSSChange(tag => {
27
+ if (!skipRerender) {
28
+ reRenderAllUI5Elements({ tag });
6
29
  }
30
+ });
7
31
 
32
+ const addCustomCSS = (tag, css) => {
8
33
  if (!customCSSFor[tag]) {
9
34
  customCSSFor[tag] = [];
10
35
  }
11
-
12
36
  customCSSFor[tag].push(css);
37
+
38
+ skipRerender = true;
39
+ try {
40
+ // The event is fired and the attached event listeners are all called synchronously
41
+ // The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy
42
+ // of CustomStyle.js which is firing the `CustomCSSChange` event.
43
+ fireCustomCSSChange(tag);
44
+ } finally {
45
+ skipRerender = false;
46
+ }
47
+
48
+ return reRenderAllUI5Elements({ tag });
13
49
  };
14
50
 
15
51
  const getCustomCSS = tag => {
16
52
  return customCSSFor[tag] ? customCSSFor[tag].join("") : "";
17
53
  };
18
54
 
19
- export { addCustomCSS, getCustomCSS };
55
+ export {
56
+ addCustomCSS,
57
+ getCustomCSS,
58
+ attachCustomCSSChange,
59
+ detachCustomCSSChange,
60
+ };
@@ -0,0 +1,22 @@
1
+ import EventProvider from "../EventProvider.js";
2
+
3
+ const eventProvider = new EventProvider();
4
+ const THEME_LOADED = "themeLoaded";
5
+
6
+ const attachThemeLoaded = listener => {
7
+ eventProvider.attachEvent(THEME_LOADED, listener);
8
+ };
9
+
10
+ const detachThemeLoaded = listener => {
11
+ eventProvider.detachEvent(THEME_LOADED, listener);
12
+ };
13
+
14
+ const fireThemeLoaded = theme => {
15
+ return eventProvider.fireEvent(THEME_LOADED, theme);
16
+ };
17
+
18
+ export {
19
+ attachThemeLoaded,
20
+ detachThemeLoaded,
21
+ fireThemeLoaded,
22
+ };