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

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 (471) hide show
  1. package/.eslintignore +4 -0
  2. package/CHANGELOG.md +407 -0
  3. package/README.md +30 -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 +80 -34
  36. package/dist/assets/bundle.esm.39b5ade5.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 +244 -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 +41 -0
  108. package/dist/util/Caret.js +32 -0
  109. package/dist/util/ColorConversion.js +370 -0
  110. package/dist/util/FocusableElements.js +30 -11
  111. package/dist/util/HTMLSanitizer.js +7 -0
  112. package/dist/util/InvisibleMessage.js +60 -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/findNodeOwner.js +35 -0
  124. package/dist/util/generateHighlightedMarkup.js +42 -0
  125. package/dist/util/getActiveElement.js +11 -0
  126. package/dist/util/getClassCopy.js +10 -0
  127. package/dist/util/getEffectiveContentDensity.js +5 -0
  128. package/dist/util/getFileExtension.js +21 -0
  129. package/dist/util/getNormalizedTarget.js +16 -0
  130. package/dist/util/getSingletonElementInstance.js +13 -0
  131. package/dist/util/isDefaultSlotProvided.js +11 -0
  132. package/dist/util/isElementInView.js +15 -0
  133. package/dist/util/isNodeHidden.js +1 -5
  134. package/dist/util/isNodeTabbable.js +4 -4
  135. package/dist/util/isValidPropertyName.js +11 -2
  136. package/dist/util/setToArray.js +10 -0
  137. package/hash.txt +1 -0
  138. package/index.js +1 -1
  139. package/lib/generate-asset-parameters/index.js +25 -0
  140. package/lib/generate-styles/index.js +26 -0
  141. package/lib/generate-version-info/index.js +32 -0
  142. package/package-scripts.js +41 -27
  143. package/package.json +22 -14
  144. package/src/AssetRegistry.js +8 -6
  145. package/src/Boot.js +59 -0
  146. package/src/CSP.js +59 -0
  147. package/src/CustomElementsRegistry.js +95 -0
  148. package/src/CustomElementsScope.js +30 -0
  149. package/src/CustomElementsScopeUtils.js +108 -0
  150. package/src/DOMObserver.js +65 -0
  151. package/src/Device.js +71 -773
  152. package/src/EventProvider.js +38 -26
  153. package/src/FeaturesRegistry.js +4 -1
  154. package/src/FontFace.js +20 -56
  155. package/src/InitialConfiguration.js +64 -17
  156. package/src/Keys.js +295 -0
  157. package/src/ManagedStyles.js +83 -0
  158. package/src/MediaRange.js +109 -0
  159. package/src/PropertiesFileFormat.js +95 -0
  160. package/src/Render.js +175 -0
  161. package/src/RenderQueue.js +41 -17
  162. package/src/RenderScheduler.js +24 -145
  163. package/src/Runtimes.js +107 -0
  164. package/src/StaticArea.js +2 -34
  165. package/src/StaticAreaItem.js +69 -35
  166. package/src/SystemCSSVars.js +10 -0
  167. package/src/Theming.js +3 -44
  168. package/src/UI5Element.js +497 -306
  169. package/src/UI5ElementMetadata.js +198 -19
  170. package/src/asset-registries/Icons.js +125 -14
  171. package/src/asset-registries/Illustrations.js +30 -0
  172. package/src/asset-registries/LocaleData.js +114 -51
  173. package/src/asset-registries/Themes.js +37 -30
  174. package/src/asset-registries/i18n.js +80 -34
  175. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  176. package/src/config/AnimationMode.js +16 -2
  177. package/src/config/CalendarType.js +7 -7
  178. package/src/config/FormatSettings.js +5 -1
  179. package/src/config/Icons.js +52 -0
  180. package/src/config/Language.js +62 -3
  181. package/src/config/NoConflict.js +10 -3
  182. package/src/config/Theme.js +32 -3
  183. package/src/css/BusyIndicator.css +80 -0
  184. package/src/css/FontFace.css +75 -0
  185. package/src/css/OverrideFontFace.css +32 -0
  186. package/src/css/SystemCSSVars.css +17 -0
  187. package/src/delegate/ItemNavigation.js +244 -127
  188. package/src/delegate/ResizeHandler.js +78 -38
  189. package/src/delegate/ScrollEnablement.js +122 -14
  190. package/src/features/F6Navigation.js +110 -0
  191. package/src/features/OpenUI5Enablement.js +119 -0
  192. package/src/features/OpenUI5Support.js +125 -0
  193. package/src/getSharedResource.js +30 -0
  194. package/src/i18nBundle.js +62 -11
  195. package/{dist → src/locale}/Locale.js +0 -10
  196. package/src/locale/RTLAwareRegistry.js +14 -0
  197. package/src/locale/applyDirection.js +17 -0
  198. package/src/locale/directionChange.js +32 -0
  199. package/src/locale/getEffectiveDir.js +28 -0
  200. package/src/locale/getLocale.js +41 -0
  201. package/src/locale/languageChange.js +22 -0
  202. package/src/locale/nextFallbackLocale.js +28 -0
  203. package/src/{util → locale}/normalizeLocale.js +8 -31
  204. package/src/renderer/LitRenderer.js +44 -7
  205. package/src/renderer/directives/style-map.js +72 -0
  206. package/src/renderer/executeTemplate.js +34 -0
  207. package/src/theming/CustomStyle.js +47 -6
  208. package/src/theming/ThemeLoaded.js +22 -0
  209. package/src/theming/applyTheme.js +79 -0
  210. package/src/theming/getConstructableStyle.js +30 -0
  211. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  212. package/src/theming/getEffectiveStyle.js +39 -0
  213. package/src/theming/getStylesString.js +15 -0
  214. package/src/theming/getThemeDesignerTheme.js +87 -0
  215. package/src/theming/preloadLinks.js +23 -0
  216. package/src/thirdparty/_merge.js +32 -0
  217. package/src/thirdparty/isPlainObject.js +18 -0
  218. package/src/thirdparty/merge.js +10 -0
  219. package/src/types/CSSColor.js +9 -0
  220. package/src/{dates → types}/CalendarType.js +2 -2
  221. package/src/types/DataType.js +13 -1
  222. package/src/types/Float.js +14 -0
  223. package/src/types/Integer.js +4 -0
  224. package/src/types/InvisibleMessageMode.js +30 -0
  225. package/src/types/ItemNavigationBehavior.js +2 -7
  226. package/src/types/NavigationMode.js +1 -0
  227. package/src/types/PopupState.js +1 -1
  228. package/src/types/ValueState.js +2 -1
  229. package/src/updateShadowRoot.js +29 -0
  230. package/src/util/AriaLabelHelper.js +41 -0
  231. package/src/util/Caret.js +32 -0
  232. package/src/util/ColorConversion.js +370 -0
  233. package/src/util/FocusableElements.js +30 -11
  234. package/src/util/HTMLSanitizer.js +7 -0
  235. package/src/util/InvisibleMessage.js +60 -0
  236. package/src/util/PopupUtils.js +93 -0
  237. package/src/util/SlotsHelper.js +43 -0
  238. package/src/util/StringHelper.js +17 -2
  239. package/src/util/TabbableElements.js +9 -2
  240. package/src/util/arraysAreEqual.js +15 -0
  241. package/src/util/clamp.js +12 -0
  242. package/src/util/createLinkInHead.js +19 -0
  243. package/src/util/debounce.js +17 -0
  244. package/src/util/detectNavigatorLanguage.js +3 -1
  245. package/src/util/escapeRegex.js +10 -0
  246. package/src/util/findNodeOwner.js +35 -0
  247. package/src/util/generateHighlightedMarkup.js +42 -0
  248. package/src/util/getActiveElement.js +11 -0
  249. package/src/util/getClassCopy.js +10 -0
  250. package/src/util/getEffectiveContentDensity.js +5 -0
  251. package/src/util/getFileExtension.js +21 -0
  252. package/src/util/getNormalizedTarget.js +16 -0
  253. package/src/util/getSingletonElementInstance.js +13 -0
  254. package/src/util/isDefaultSlotProvided.js +11 -0
  255. package/src/util/isElementInView.js +15 -0
  256. package/src/util/isNodeHidden.js +1 -5
  257. package/src/util/isNodeTabbable.js +4 -4
  258. package/src/util/isValidPropertyName.js +11 -2
  259. package/src/util/setToArray.js +10 -0
  260. package/used-modules.txt +10 -0
  261. package/bundle.es5.js +0 -28
  262. package/config/.eslintrc.js +0 -3
  263. package/config/rollup.config.js +0 -1
  264. package/dist/Assets.js +0 -2
  265. package/dist/CSS.js +0 -48
  266. package/dist/FormatSettings.js +0 -31
  267. package/dist/LocaleProvider.js +0 -34
  268. package/dist/ResourceLoaderOverrides.js +0 -38
  269. package/dist/SVGIconRegistry.js +0 -54
  270. package/dist/boot.js +0 -25
  271. package/dist/compatibility/DOMObserver.js +0 -62
  272. package/dist/compatibility/patchNodeValue.js +0 -24
  273. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  274. package/dist/dates/CalendarDate.js +0 -203
  275. package/dist/dates/CalendarUtils.js +0 -99
  276. package/dist/delegate/CustomResize.js +0 -78
  277. package/dist/delegate/NativeResize.js +0 -44
  278. package/dist/events/PseudoEvents.js +0 -58
  279. package/dist/features/browsersupport/Edge.js +0 -6
  280. package/dist/features/browsersupport/IE11.js +0 -41
  281. package/dist/features/calendar/Buddhist.js +0 -1
  282. package/dist/features/calendar/Islamic.js +0 -1
  283. package/dist/features/calendar/Japanese.js +0 -1
  284. package/dist/features/calendar/Persian.js +0 -1
  285. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
  286. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
  287. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
  288. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
  289. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
  290. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
  291. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
  292. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
  293. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
  294. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
  295. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
  296. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
  297. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
  298. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
  299. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
  300. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
  301. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
  302. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
  303. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
  304. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
  305. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
  306. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
  307. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
  308. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
  309. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
  310. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
  311. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
  312. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
  313. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
  314. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
  315. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
  316. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
  317. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
  318. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
  319. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
  320. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
  321. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
  322. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
  323. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
  324. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
  325. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
  326. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
  327. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
  328. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
  329. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
  330. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
  331. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
  332. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
  333. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
  334. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
  335. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
  336. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
  337. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
  338. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
  339. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
  340. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
  341. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
  342. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
  343. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
  344. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
  345. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
  346. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
  347. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
  348. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
  349. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
  350. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
  351. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
  352. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
  353. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
  354. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
  355. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
  356. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
  357. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
  358. package/dist/json-imports/LocaleData.js +0 -171
  359. package/dist/renderer/ifDefined.js +0 -21
  360. package/dist/resources/bundle.es5.js +0 -12643
  361. package/dist/resources/bundle.es5.js.map +0 -1
  362. package/dist/resources/bundle.esm.js +0 -7450
  363. package/dist/resources/bundle.esm.js.map +0 -1
  364. package/dist/shims/Core-shim.js +0 -52
  365. package/dist/shims/jquery-shim.js +0 -89
  366. package/dist/test-resources/assets/Themes.js +0 -11
  367. package/dist/test-resources/elements/Child.js +0 -35
  368. package/dist/test-resources/elements/Generic.js +0 -83
  369. package/dist/test-resources/elements/GenericExt.js +0 -26
  370. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  371. package/dist/test-resources/elements/Parent.js +0 -36
  372. package/dist/test-resources/pages/AllTestElements.html +0 -42
  373. package/dist/test-resources/pages/Configuration.html +0 -20
  374. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  375. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  376. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  377. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  378. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  379. package/dist/test-resources/specs/Theming.spec.js +0 -31
  380. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  381. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -93
  382. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  383. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  384. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  385. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  386. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  387. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  388. package/dist/theming/StyleInjection.js +0 -67
  389. package/dist/thirdparty/Array.from.js +0 -16
  390. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  391. package/dist/thirdparty/Array.prototype.find.js +0 -46
  392. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  393. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  394. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  395. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  396. package/dist/thirdparty/Number.isInteger.js +0 -5
  397. package/dist/thirdparty/Number.isNaN.js +0 -1
  398. package/dist/thirdparty/Number.parseInt.js +0 -1
  399. package/dist/thirdparty/Object.assign.js +0 -31
  400. package/dist/thirdparty/Object.entries.js +0 -11
  401. package/dist/thirdparty/Symbol.js +0 -2
  402. package/dist/thirdparty/WeakSet.js +0 -27
  403. package/dist/thirdparty/events-polyfills.js +0 -89
  404. package/dist/thirdparty/fetch.js +0 -1
  405. package/dist/thirdparty/template.js +0 -600
  406. package/dist/util/CSSTransformUtils.js +0 -90
  407. package/dist/webcomponentsjs/LICENSE.md +0 -19
  408. package/dist/webcomponentsjs/README.md +0 -229
  409. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  410. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  411. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  412. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  413. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  414. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  415. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  416. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  417. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  418. package/dist/webcomponentsjs/package.json +0 -46
  419. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  420. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  421. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  422. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  423. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  424. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  425. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  426. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  427. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  428. package/src/Assets.js +0 -2
  429. package/src/CSS.js +0 -48
  430. package/src/FormatSettings.js +0 -31
  431. package/src/LocaleProvider.js +0 -34
  432. package/src/ResourceLoaderOverrides.js +0 -38
  433. package/src/SVGIconRegistry.js +0 -54
  434. package/src/boot.js +0 -25
  435. package/src/compatibility/DOMObserver.js +0 -62
  436. package/src/compatibility/patchNodeValue.js +0 -24
  437. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  438. package/src/dates/CalendarDate.js +0 -203
  439. package/src/dates/CalendarUtils.js +0 -99
  440. package/src/delegate/CustomResize.js +0 -78
  441. package/src/delegate/NativeResize.js +0 -44
  442. package/src/events/PseudoEvents.js +0 -58
  443. package/src/features/browsersupport/Edge.js +0 -6
  444. package/src/features/browsersupport/IE11.js +0 -41
  445. package/src/features/calendar/Buddhist.js +0 -1
  446. package/src/features/calendar/Islamic.js +0 -1
  447. package/src/features/calendar/Japanese.js +0 -1
  448. package/src/features/calendar/Persian.js +0 -1
  449. package/src/json-imports/LocaleData.js +0 -171
  450. package/src/renderer/ifDefined.js +0 -21
  451. package/src/shims/Core-shim.js +0 -52
  452. package/src/shims/jquery-shim.js +0 -89
  453. package/src/theming/StyleInjection.js +0 -67
  454. package/src/thirdparty/Array.from.js +0 -16
  455. package/src/thirdparty/Array.prototype.fill.js +0 -44
  456. package/src/thirdparty/Array.prototype.find.js +0 -46
  457. package/src/thirdparty/Array.prototype.includes.js +0 -51
  458. package/src/thirdparty/Element.prototype.closest.js +0 -11
  459. package/src/thirdparty/Element.prototype.matches.js +0 -6
  460. package/src/thirdparty/Map.prototype.keys.js +0 -9
  461. package/src/thirdparty/Number.isInteger.js +0 -5
  462. package/src/thirdparty/Number.isNaN.js +0 -1
  463. package/src/thirdparty/Number.parseInt.js +0 -1
  464. package/src/thirdparty/Object.assign.js +0 -31
  465. package/src/thirdparty/Object.entries.js +0 -11
  466. package/src/thirdparty/Symbol.js +0 -2
  467. package/src/thirdparty/WeakSet.js +0 -27
  468. package/src/thirdparty/events-polyfills.js +0 -89
  469. package/src/thirdparty/fetch.js +0 -1
  470. package/src/thirdparty/template.js +0 -600
  471. package/src/util/CSSTransformUtils.js +0 -90
@@ -1,7 +1,7 @@
1
- import { fetchJsonOnce } from "../util/FetchHelper.js";
1
+ import { DEFAULT_THEME } from "../generated/AssetParameters.js";
2
2
 
3
- const themeURLs = new Map();
4
3
  const themeStyles = new Map();
4
+ const loaders = new Map();
5
5
  const registeredPackages = new Set();
6
6
  const registeredThemes = new Set();
7
7
 
@@ -13,63 +13,70 @@ const registeredThemes = new Set();
13
13
  * Example usage:
14
14
  * 1) Pass the CSS Vars as a string directly.
15
15
  * registerThemeProperties("my-package", "my_theme", ":root{--var1: red;}");
16
- * 2) Pass the CSS Vars as an object directly
17
- * registerThemeProperties("my-package", "my_theme", {"_": ":root{--var1: red;}"});
18
- * 3) Pass a URL to a JSON file, containing the CSS Vars in its "_" property. Will be fetched on demand, not upon registration.
19
- * registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.json");
20
16
  *
21
17
  * @public
22
18
  * @param packageName - the NPM package for which CSS Vars are registered
23
19
  * @param themeName - the theme which the CSS Vars implement
24
- * @param style - can be one of three options: a string, an object with a "_" property or a URL to a JSON file with a "_" property
20
+ * @param style - the style content directly
21
+ * @deprecated
25
22
  */
26
- const registerThemeProperties = (packageName, themeName, style) => {
27
- if (style._) {
28
- // JSON object like ({"_": ":root"})
29
- themeStyles.set(`${packageName}_${themeName}`, style._);
30
- } else if (style.includes(":root")) {
31
- // pure string
32
- themeStyles.set(`${packageName}_${themeName}`, style);
33
- } else {
34
- // url for fetching
35
- themeURLs.set(`${packageName}_${themeName}`, style);
36
- }
23
+ const registerThemeProperties = (_packageName, _themeName, _style) => {
24
+ throw new Error("`registerThemeProperties` has been depracated. Use `registerThemePropertiesLoader` instead.");
25
+ };
26
+
27
+ const registerThemePropertiesLoader = (packageName, themeName, loader) => {
28
+ loaders.set(`${packageName}/${themeName}`, loader);
37
29
  registeredPackages.add(packageName);
38
30
  registeredThemes.add(themeName);
39
31
  };
40
32
 
41
33
  const getThemeProperties = async (packageName, themeName) => {
42
34
  const style = themeStyles.get(`${packageName}_${themeName}`);
43
- if (style) {
35
+ if (style !== undefined) { // it's valid for style to be an empty string
44
36
  return style;
45
37
  }
46
38
 
47
39
  if (!registeredThemes.has(themeName)) {
48
40
  const regThemesStr = [...registeredThemes.values()].join(", ");
49
- console.warn(`You have requested a non-registered theme - falling back to sap_fiori_3. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
50
- return themeStyles.get(`${packageName}_sap_fiori_3`);
41
+ console.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
42
+ return _getThemeProperties(packageName, DEFAULT_THEME);
51
43
  }
52
44
 
53
- const data = await fetchThemeProperties(packageName, themeName);
54
- themeStyles.set(`${packageName}_${themeName}`, data._);
55
- return data._;
45
+ return _getThemeProperties(packageName, themeName);
56
46
  };
57
47
 
58
- const fetchThemeProperties = async (packageName, themeName) => {
59
- const url = themeURLs.get(`${packageName}_${themeName}`);
60
-
61
- if (!url) {
62
- throw new Error(`You have to import the ${packageName}/dist/Assets.js module to switch to additional themes`);
48
+ const _getThemeProperties = async (packageName, themeName) => {
49
+ const loader = loaders.get(`${packageName}/${themeName}`);
50
+ if (!loader) {
51
+ // no themes for package
52
+ console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
53
+ return;
63
54
  }
64
- return fetchJsonOnce(url);
55
+ let data;
56
+ try {
57
+ data = await loader(themeName);
58
+ } catch (e) {
59
+ console.error(packageName, e.message); /* eslint-disable-line */
60
+ return;
61
+ }
62
+ const themeProps = data._ || data;
63
+
64
+ themeStyles.set(`${packageName}_${themeName}`, themeProps);
65
+ return themeProps;
65
66
  };
66
67
 
67
68
  const getRegisteredPackages = () => {
68
69
  return registeredPackages;
69
70
  };
70
71
 
72
+ const isThemeRegistered = theme => {
73
+ return registeredThemes.has(theme);
74
+ };
75
+
71
76
  export {
77
+ registerThemePropertiesLoader,
72
78
  registerThemeProperties,
73
79
  getThemeProperties,
74
80
  getRegisteredPackages,
81
+ isThemeRegistered,
75
82
  };
@@ -1,19 +1,31 @@
1
- import "../shims/jquery-shim.js";
2
- import "../shims/Core-shim.js";
3
- import { getLanguage } from "../LocaleProvider.js";
4
- import { fetchJsonOnce } from "../util/FetchHelper.js";
5
- import { normalizeLocale, nextFallbackLocale } from "../util/normalizeLocale.js";
1
+ import getLocale from "../locale/getLocale.js";
2
+ import { attachLanguageChange } from "../locale/languageChange.js";
3
+ import normalizeLocale from "../locale/normalizeLocale.js";
4
+ import nextFallbackLocale from "../locale/nextFallbackLocale.js";
5
+ import { DEFAULT_LANGUAGE } from "../generated/AssetParameters.js";
6
+ import { getFetchDefaultLanguage } from "../config/Language.js";
7
+
8
+ // contains package names for which the warning has been shown
9
+ const warningShown = new Set();
10
+ const reportedErrors = new Set();
6
11
 
7
12
  const bundleData = new Map();
8
- const bundleURLs = new Map();
13
+ const bundlePromises = new Map();
14
+ const loaders = new Map();
9
15
 
10
16
  /**
11
- * Sets a map with texts and ID the are related to.
12
- * @param {string} packageName package ID that the i18n bundle will be related to
13
- * @param {Object} data an object with string locales as keys and text translataions as values
14
- * @public
17
+ *
18
+ * @param {string} packageName for which package this loader can fetch data
19
+ * @param {function} loader async function that will be passed a localeId and should return a JSON object
20
+ * @param {Array} localeIds Array of locale IDs that this loader can handle
15
21
  */
16
- const setI18nBundleData = (packageName, data) => {
22
+ const registerI18nLoader = (packageName, localeId, loader) => {
23
+ // register loader by key
24
+ const bundleKey = `${packageName}/${localeId}`;
25
+ loaders.set(bundleKey, loader);
26
+ };
27
+
28
+ const _setI18nBundleData = (packageName, data) => {
17
29
  bundleData.set(packageName, data);
18
30
  };
19
31
 
@@ -22,13 +34,36 @@ const getI18nBundleData = packageName => {
22
34
  };
23
35
 
24
36
  /**
25
- * Registers a map of locale/url information, to be used by the <code>fetchI18nBundle</code> method.
26
- * @param {string} packageName package ID that the i18n bundle will be related to
27
- * @param {Object} bundle an object with string locales as keys and the URLs of where the corresponding locale can be fetched from, f.e {"en": "path/en.json", ...}
28
37
  * @public
38
+ * @deprecated
29
39
  */
30
- const registerI18nBundle = (packageName, bundle) => {
31
- bundleURLs.set(packageName, bundle);
40
+ const registerI18nBundle = (_packageName, _bundle) => {
41
+ throw new Error("This method has been removed. Use `registerI18nLoader` instead.");
42
+ };
43
+
44
+ const _hasLoader = (packageName, localeId) => {
45
+ const bundleKey = `${packageName}/${localeId}`;
46
+ return loaders.has(bundleKey);
47
+ };
48
+
49
+ // load bundle over the network once
50
+ const _loadMessageBundleOnce = (packageName, localeId) => {
51
+ const bundleKey = `${packageName}/${localeId}`;
52
+ const loadMessageBundle = loaders.get(bundleKey);
53
+
54
+ if (!bundlePromises.get(bundleKey)) {
55
+ bundlePromises.set(bundleKey, loadMessageBundle(localeId));
56
+ }
57
+
58
+ return bundlePromises.get(bundleKey);
59
+ };
60
+
61
+ const _showAssetsWarningOnce = packageName => {
62
+ if (!warningShown.has(packageName)) {
63
+ console.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
64
+ ` Add \`import "${packageName}/dist/Assets.js"\` in your bundle and make sure your build tool supports dynamic imports and JSON imports. See section "Assets" in the documentation for more information.`); /* eslint-disable-line */
65
+ warningShown.add(packageName);
66
+ }
32
67
  };
33
68
 
34
69
  /**
@@ -41,35 +76,46 @@ const registerI18nBundle = (packageName, bundle) => {
41
76
  * @public
42
77
  */
43
78
  const fetchI18nBundle = async packageName => {
44
- const bundlesForPackage = bundleURLs.get(packageName);
45
-
46
- if (!bundlesForPackage) {
47
- console.warn(`Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
48
- ` You need to import ${packageName}/dist/Assets.js with a build tool that supports JSON imports.`); /* eslint-disable-line */
49
- return;
50
- }
51
-
52
- const language = getLanguage();
79
+ const language = getLocale().getLanguage();
80
+ const region = getLocale().getRegion();
81
+ let localeId = normalizeLocale(language + (region ? `-${region}` : ``));
53
82
 
54
- let localeId = normalizeLocale(language);
55
- while (!bundlesForPackage[localeId]) {
83
+ while (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {
56
84
  localeId = nextFallbackLocale(localeId);
57
85
  }
58
86
 
59
- const bundleURL = bundlesForPackage[localeId];
87
+ // use default language unless configured to always fetch it from the network
88
+ const fetchDefaultLanguage = getFetchDefaultLanguage();
89
+ if (localeId === DEFAULT_LANGUAGE && !fetchDefaultLanguage) {
90
+ _setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)
91
+ return;
92
+ }
60
93
 
61
- if (typeof bundleURL === "object") { // inlined from build
62
- setI18nBundleData(packageName, bundleURL);
63
- return bundleURL;
94
+ if (!_hasLoader(packageName, localeId)) {
95
+ _showAssetsWarningOnce(packageName);
96
+ return;
64
97
  }
65
98
 
66
- const data = await fetchJsonOnce(bundleURL);
67
- setI18nBundleData(packageName, data);
99
+ try {
100
+ const data = await _loadMessageBundleOnce(packageName, localeId);
101
+ _setI18nBundleData(packageName, data);
102
+ } catch (e) {
103
+ if (!reportedErrors.has(e.message)) {
104
+ reportedErrors.add(e.message);
105
+ console.error(e.message); /* eslint-disable-line */
106
+ }
107
+ }
68
108
  };
69
109
 
110
+ // When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles
111
+ attachLanguageChange(() => {
112
+ const allPackages = [...bundleData.keys()];
113
+ return Promise.all(allPackages.map(fetchI18nBundle));
114
+ });
115
+
70
116
  export {
117
+ registerI18nLoader,
71
118
  fetchI18nBundle,
72
119
  registerI18nBundle,
73
- setI18nBundleData,
74
120
  getI18nBundleData,
75
121
  };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Supported icon collection names and aliases.
3
+ *
4
+ * Users might specify a collection, using both the key and the value in the following key-value pairs,
5
+ * e.g the following pairs are completely exchangeable:
6
+ * "SAP-icons-TNT/actor" and "tnt/actor", "BusinessSuiteInAppSymbols/3d" and "business-suite/3d",
7
+ * "SAP-icons-v5/accept" and "horizon/accept".
8
+ *
9
+ * Note: technically, in the code we maintain the collections under the "value" name - "tnt", "business-suite",
10
+ * SAP-icons-v5" and "SAP-icons"(which does not have an alias).
11
+ */
12
+ const IconCollectionsAlias = {
13
+ "SAP-icons-TNT": "tnt",
14
+ "BusinessSuiteInAppSymbols": "business-suite",
15
+ "horizon": "SAP-icons-v5",
16
+ };
17
+
18
+ export default IconCollectionsAlias;
@@ -1,9 +1,23 @@
1
1
  import { getAnimationMode as getConfiguredAnimationMode } from "../InitialConfiguration.js";
2
+ import AnimationMode from "../types/AnimationMode.js";
2
3
 
3
- const animationMode = getConfiguredAnimationMode();
4
+ let animationMode;
4
5
 
5
6
  const getAnimationMode = () => {
7
+ if (animationMode === undefined) {
8
+ animationMode = getConfiguredAnimationMode();
9
+ }
10
+
6
11
  return animationMode;
7
12
  };
8
13
 
9
- export { getAnimationMode }; // eslint-disable-line
14
+ const setAnimationMode = newAnimationMode => {
15
+ if (Object.values(AnimationMode).includes(newAnimationMode)) {
16
+ animationMode = newAnimationMode;
17
+ }
18
+ };
19
+
20
+ export {
21
+ getAnimationMode,
22
+ setAnimationMode,
23
+ };
@@ -1,15 +1,15 @@
1
- import CalendarType from "@ui5/webcomponents-utils/dist/sap/ui/core/CalendarType.js";
1
+ import CalendarType from "../types/CalendarType.js";
2
2
  import { getCalendarType as getConfiguredCalendarType } from "../InitialConfiguration.js";
3
3
 
4
- const calendarType = getConfiguredCalendarType();
4
+ let calendarType;
5
5
 
6
6
  const getCalendarType = () => {
7
- if (calendarType) {
8
- const type = Object.keys(CalendarType).find(calType => calType === calendarType);
7
+ if (calendarType === undefined) {
8
+ calendarType = getConfiguredCalendarType();
9
+ }
9
10
 
10
- if (type) {
11
- return type;
12
- }
11
+ if (CalendarType.isValid(calendarType)) {
12
+ return calendarType;
13
13
  }
14
14
 
15
15
  return CalendarType.Gregorian;
@@ -1,8 +1,12 @@
1
1
  import { getFormatSettings } from "../InitialConfiguration.js";
2
2
 
3
- const formatSettings = getFormatSettings();
3
+ let formatSettings;
4
4
 
5
5
  const getFirstDayOfWeek = () => {
6
+ if (formatSettings === undefined) {
7
+ formatSettings = getFormatSettings();
8
+ }
9
+
6
10
  return formatSettings.firstDayOfWeek;
7
11
  };
8
12
 
@@ -0,0 +1,52 @@
1
+ import { getTheme, isThemeFamily } from "./Theme.js";
2
+
3
+ const IconCollectionConfiguration = new Map();
4
+
5
+ /**
6
+ * Sets the default icon collection (v4 or v5) per theme,
7
+ * which will be applied in case icon collection is not specified.
8
+ *
9
+ * Note: by default SAP-icons-v5 is used in SAP Horizon and SAP-icons-v4 for all the rest.
10
+ * @param {String} theme
11
+ * @param {String} collectionName
12
+ */
13
+ const setDefaultIconCollection = (theme, collectionName) => {
14
+ if (collectionName === "horizon") {
15
+ collectionName = "SAP-icons-v5";
16
+ }
17
+
18
+ IconCollectionConfiguration.set(theme, collectionName);
19
+ };
20
+
21
+ /**
22
+ * Returns the default icon collection (v4 or v5) for given theme,
23
+ * that is configured.
24
+ *
25
+ * @param {String} theme
26
+ * @returns {String}
27
+ */
28
+ const getDefaultIconCollection = theme => {
29
+ return IconCollectionConfiguration.get(theme);
30
+ };
31
+
32
+ /**
33
+ * Returns the effective icon collection that will be applied for icon web components
34
+ * whenever namespace is not specified.
35
+ * @returns {String}
36
+ */
37
+ const getEffectiveDefaultIconCollection = () => {
38
+ const currentTheme = getTheme();
39
+ const currentThemeConfiguration = IconCollectionConfiguration.get(currentTheme);
40
+
41
+ if (currentThemeConfiguration) {
42
+ return currentThemeConfiguration;
43
+ }
44
+
45
+ return isThemeFamily("sap_horizon") ? "SAP-icons-v5" : "SAP-icons";
46
+ };
47
+
48
+ export {
49
+ setDefaultIconCollection,
50
+ getDefaultIconCollection,
51
+ getEffectiveDefaultIconCollection,
52
+ };
@@ -1,9 +1,68 @@
1
- import { getLanguage as getConfiguredLanguage } from "../InitialConfiguration.js";
1
+ import {
2
+ getLanguage as getConfiguredLanguage,
3
+ getFetchDefaultLanguage as getConfiguredFetchDefaultLanguage,
4
+ } from "../InitialConfiguration.js";
5
+ import { fireLanguageChange } from "../locale/languageChange.js";
6
+ import { reRenderAllUI5Elements } from "../Render.js";
2
7
 
3
- const language = getConfiguredLanguage();
8
+ let language;
9
+ let fetchDefaultLanguage;
4
10
 
11
+ /**
12
+ * Returns the currently configured language, or the browser language as a fallback
13
+ * @returns {String}
14
+ */
5
15
  const getLanguage = () => {
16
+ if (language === undefined) {
17
+ language = getConfiguredLanguage();
18
+ }
6
19
  return language;
7
20
  };
8
21
 
9
- export { getLanguage }; // eslint-disable-line
22
+ /**
23
+ * Changes the current language, re-fetches all message bundles, updates all language-aware components
24
+ * and returns a promise that resolves when all rendering is done
25
+ *
26
+ * @param newLanguage
27
+ * @returns {Promise<void>}
28
+ */
29
+ const setLanguage = async newLanguage => {
30
+ if (language === newLanguage) {
31
+ return;
32
+ }
33
+
34
+ language = newLanguage;
35
+
36
+ await fireLanguageChange(newLanguage);
37
+ await reRenderAllUI5Elements({ languageAware: true });
38
+ };
39
+
40
+ /**
41
+ * Defines if the default language, that is inlined, should be
42
+ * fetched over the network instead of using the inlined one.
43
+ * <b>Note:</b> By default the language will not be fetched.
44
+ *
45
+ * @param {Boolean} fetchDefaultLanguage
46
+ */
47
+ const setFetchDefaultLanguage = fetchDefaultLang => {
48
+ fetchDefaultLanguage = fetchDefaultLang;
49
+ };
50
+
51
+ /**
52
+ * Returns if the default language, that is inlined, should be fetched over the network.
53
+ * @returns {Boolean}
54
+ */
55
+ const getFetchDefaultLanguage = () => {
56
+ if (fetchDefaultLanguage === undefined) {
57
+ setFetchDefaultLanguage(getConfiguredFetchDefaultLanguage());
58
+ }
59
+
60
+ return fetchDefaultLanguage;
61
+ };
62
+
63
+ export {
64
+ getLanguage,
65
+ setLanguage,
66
+ setFetchDefaultLanguage,
67
+ getFetchDefaultLanguage,
68
+ };
@@ -9,24 +9,31 @@ const shouldFireOriginalEvent = eventName => {
9
9
  return excludeList.includes(eventName);
10
10
  };
11
11
 
12
- let noConflict = getConfiguredNoConflict();
12
+ let noConflict;
13
13
 
14
14
  const shouldNotFireOriginalEvent = eventName => {
15
- return !(noConflict.events && noConflict.events.includes && noConflict.events.includes(eventName));
15
+ const nc = getNoConflict();
16
+ return !(nc.events && nc.events.includes && nc.events.includes(eventName));
16
17
  };
17
18
 
18
19
  const getNoConflict = () => {
20
+ if (noConflict === undefined) {
21
+ noConflict = getConfiguredNoConflict();
22
+ }
23
+
19
24
  return noConflict;
20
25
  };
21
26
 
22
27
  const skipOriginalEvent = eventName => {
28
+ const nc = getNoConflict();
29
+
23
30
  // Always fire these events
24
31
  if (shouldFireOriginalEvent(eventName)) {
25
32
  return false;
26
33
  }
27
34
 
28
35
  // Read from the configuration
29
- if (noConflict === true) {
36
+ if (nc === true) {
30
37
  return true;
31
38
  }
32
39
 
@@ -1,9 +1,14 @@
1
1
  import { getTheme as getConfiguredTheme } from "../InitialConfiguration.js";
2
- import { _applyTheme } from "../Theming.js";
2
+ import { reRenderAllUI5Elements } from "../Render.js";
3
+ import applyTheme from "../theming/applyTheme.js";
3
4
 
4
- let theme = getConfiguredTheme();
5
+ let theme;
5
6
 
6
7
  const getTheme = () => {
8
+ if (theme === undefined) {
9
+ theme = getConfiguredTheme();
10
+ }
11
+
7
12
  return theme;
8
13
  };
9
14
 
@@ -15,10 +20,34 @@ const setTheme = async newTheme => {
15
20
  theme = newTheme;
16
21
 
17
22
  // Update CSS Custom Properties
18
- await _applyTheme(theme);
23
+ await applyTheme(theme);
24
+ await reRenderAllUI5Elements({ themeAware: true });
25
+ };
26
+
27
+ /**
28
+ * Returns if the given theme name is the one currently applied.
29
+ * @private
30
+ * @param {String}
31
+ * @returns {boolean}
32
+ */
33
+ const isTheme = _theme => {
34
+ const currentTheme = getTheme();
35
+ return currentTheme === _theme || currentTheme === `${_theme}_exp`;
36
+ };
37
+
38
+ /**
39
+ * Returns if the current theme is part of given theme family
40
+ * @private
41
+ * @param {String} the theme family
42
+ * @returns {boolean}
43
+ */
44
+ const isThemeFamily = _theme => {
45
+ return getTheme().startsWith(_theme);
19
46
  };
20
47
 
21
48
  export {
22
49
  getTheme,
23
50
  setTheme,
51
+ isTheme,
52
+ isThemeFamily,
24
53
  };
@@ -0,0 +1,80 @@
1
+ .busy-indicator-wrapper {
2
+ position: relative;
3
+ height: 100%;
4
+ width: 100%;
5
+ }
6
+
7
+ .busy-indicator-overlay {
8
+ display: var(--ui5_web_components_busy_indicator_display);
9
+ position: absolute;
10
+ inset: 0;
11
+ background: var(--ui5_web_components_busy_indicator_background-color);
12
+ z-index: 99;
13
+ }
14
+
15
+ .busy-indicator-busy-area {
16
+ display: var(--ui5_web_components_busy_indicator_display);
17
+ position: absolute;
18
+ z-index: 99;
19
+ inset: 0;
20
+ justify-content: center;
21
+ align-items: center;
22
+ background-color: inherit;
23
+ flex-direction: column;
24
+ color: var(--_ui5_busy_indicator_color);
25
+ }
26
+
27
+ :host([__is-busy]) .busy-indicator-wrapper > :not(.busy-indicator-busy-area):not(.busy-indicator-overlay):not([busy-indicator-before-span]) {
28
+ --ui5_web_components_busy_indicator_display: none;
29
+ }
30
+
31
+ .busy-indicator-busy-area:focus {
32
+ outline: var(--_ui5_busy_indicator_focus_outline);
33
+ outline-offset: -.125rem;
34
+ }
35
+
36
+ .busy-indicator-circle {
37
+ width: 1rem;
38
+ height: 1rem;
39
+ display: inline-block;
40
+ background-color: currentColor;
41
+ border-radius: 50%;
42
+ }
43
+
44
+ .circle-animation-0 {
45
+ animation: grow 1.6s infinite cubic-bezier(0.32, 0.06, 0.85, 1.11);
46
+ }
47
+
48
+ .circle-animation-1 {
49
+ animation: grow 1.6s infinite cubic-bezier(0.32, 0.06, 0.85, 1.11);
50
+ animation-delay: 200ms;
51
+ }
52
+
53
+ .circle-animation-2 {
54
+ animation: grow 1.6s infinite cubic-bezier(0.32, 0.06, 0.85, 1.11);
55
+ animation-delay: 400ms;
56
+ }
57
+
58
+ .sapUiLocalBusy {
59
+ --ui5_web_components_busy_indicator_display: none;
60
+ }
61
+
62
+ .busy-indicator-wrapper [ui5-busy-indicator] {
63
+ display: none;
64
+ }
65
+
66
+ @keyframes grow {
67
+ 0%, 50%, 100% {
68
+ -webkit-transform: scale(0.5);
69
+ -moz-transform: scale(0.5);
70
+ -ms-transform: scale(0.5);
71
+ transform: scale(0.5);
72
+ }
73
+
74
+ 25% {
75
+ -webkit-transform: scale(1);
76
+ -moz-transform: scale(1);
77
+ -ms-transform: scale(1);
78
+ transform: scale(1);
79
+ }
80
+ }