@ui5/webcomponents-base 0.0.0-dff5837d7 → 0.0.0-ec448881d

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 (351) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +336 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +16 -7
  5. package/dist/AssetRegistry.js +8 -7
  6. package/dist/Boot.js +59 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +60 -4
  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 +30 -26
  14. package/dist/FeaturesRegistry.js +4 -1
  15. package/dist/FontFace.js +19 -62
  16. package/dist/InitialConfiguration.js +43 -8
  17. package/dist/Keys.js +125 -0
  18. package/dist/ManagedStyles.js +83 -0
  19. package/dist/MediaRange.js +109 -0
  20. package/dist/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
  21. package/dist/Render.js +175 -0
  22. package/dist/RenderQueue.js +41 -17
  23. package/dist/RenderScheduler.js +24 -158
  24. package/dist/Runtimes.js +107 -0
  25. package/dist/StaticArea.js +1 -39
  26. package/dist/StaticAreaItem.js +58 -62
  27. package/dist/SystemCSSVars.js +4 -25
  28. package/dist/Theming.js +2 -1
  29. package/dist/UI5Element.js +391 -350
  30. package/dist/UI5ElementMetadata.js +158 -18
  31. package/dist/asset-registries/Icons.js +117 -13
  32. package/dist/asset-registries/Illustrations.js +30 -0
  33. package/dist/asset-registries/LocaleData.js +105 -66
  34. package/dist/asset-registries/Themes.js +29 -34
  35. package/dist/asset-registries/i18n.js +63 -48
  36. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  37. package/dist/config/AnimationMode.js +11 -1
  38. package/dist/config/Icons.js +52 -0
  39. package/dist/config/Language.js +33 -6
  40. package/dist/config/Theme.js +25 -0
  41. package/dist/css/BusyIndicator.css +80 -0
  42. package/dist/css/FontFace.css +75 -0
  43. package/dist/css/OverrideFontFace.css +32 -0
  44. package/dist/css/SystemCSSVars.css +17 -0
  45. package/dist/delegate/ItemNavigation.js +239 -170
  46. package/dist/delegate/ResizeHandler.js +78 -37
  47. package/dist/delegate/ScrollEnablement.js +49 -20
  48. package/dist/features/F6Navigation.js +106 -0
  49. package/dist/features/OpenUI5Enablement.js +119 -0
  50. package/dist/features/OpenUI5Support.js +42 -7
  51. package/dist/generated/AssetParameters.js +1 -1
  52. package/dist/generated/VersionInfo.js +10 -0
  53. package/dist/generated/css/BusyIndicator.css.js +5 -0
  54. package/dist/generated/css/FontFace.css.js +5 -0
  55. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  56. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  57. package/dist/getSharedResource.js +30 -0
  58. package/dist/i18nBundle.js +58 -5
  59. package/dist/isLegacyBrowser.js +3 -0
  60. package/dist/locale/applyDirection.js +6 -4
  61. package/dist/locale/directionChange.js +32 -0
  62. package/dist/locale/getEffectiveDir.js +28 -0
  63. package/dist/locale/getLocale.js +12 -2
  64. package/dist/locale/languageChange.js +1 -1
  65. package/dist/renderer/LitRenderer.js +44 -7
  66. package/dist/renderer/directives/style-map.js +72 -0
  67. package/dist/renderer/executeTemplate.js +34 -0
  68. package/dist/resources/bundle.esm.js +15 -112
  69. package/dist/resources/bundle.esm.js.map +1 -1
  70. package/dist/sap/base/Log.js +241 -0
  71. package/dist/sap/base/assert.js +8 -0
  72. package/dist/sap/base/security/URLListValidator.js +148 -0
  73. package/dist/sap/base/security/encodeCSS.js +14 -0
  74. package/dist/sap/base/security/encodeXML.js +23 -0
  75. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  76. package/dist/sap/base/strings/toHex.js +8 -0
  77. package/dist/sap/base/util/now.js +7 -0
  78. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  79. package/dist/test-resources/assets/Themes.js +10 -6
  80. package/dist/test-resources/elements/Parent.js +6 -2
  81. package/dist/test-resources/elements/WithStaticArea.js +2 -1
  82. package/dist/test-resources/pages/AllTestElements.html +3 -3
  83. package/dist/test-resources/pages/Configuration.html +0 -2
  84. package/dist/test-resources/pages/ConfigurationScript.html +0 -2
  85. package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
  86. package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
  87. package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
  88. package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
  89. package/dist/test-resources/pages/i18n.html +33 -0
  90. package/dist/test-resources/specs/ConfigurationChange.spec.js +10 -8
  91. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  92. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  93. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  94. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  95. package/dist/test-resources/specs/StaticArea.spec.js +56 -12
  96. package/dist/test-resources/specs/Theming.spec.js +23 -10
  97. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  98. package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
  99. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  100. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  101. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  102. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  103. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  104. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  105. package/dist/theming/CustomStyle.js +47 -6
  106. package/dist/theming/ThemeLoaded.js +22 -0
  107. package/dist/theming/applyTheme.js +13 -15
  108. package/dist/theming/getConstructableStyle.js +15 -10
  109. package/dist/theming/getEffectiveLinksHrefs.js +27 -0
  110. package/dist/theming/getEffectiveStyle.js +32 -8
  111. package/dist/theming/getStylesString.js +15 -0
  112. package/dist/theming/getThemeDesignerTheme.js +25 -5
  113. package/dist/theming/preloadLinks.js +23 -0
  114. package/dist/types/CSSColor.js +9 -0
  115. package/dist/types/CalendarType.js +1 -1
  116. package/dist/types/DataType.js +13 -1
  117. package/dist/types/Float.js +4 -0
  118. package/dist/types/Integer.js +4 -0
  119. package/dist/types/InvisibleMessageMode.js +30 -0
  120. package/dist/types/ItemNavigationBehavior.js +2 -7
  121. package/dist/types/PopupState.js +1 -1
  122. package/dist/types/ValueState.js +1 -1
  123. package/dist/updateShadowRoot.js +30 -0
  124. package/dist/util/AriaLabelHelper.js +41 -0
  125. package/dist/util/Caret.js +45 -0
  126. package/dist/util/ColorConversion.js +370 -0
  127. package/dist/util/FocusableElements.js +22 -9
  128. package/dist/util/HTMLSanitizer.js +7 -0
  129. package/dist/util/InvisibleMessage.js +60 -0
  130. package/dist/util/PopupUtils.js +93 -0
  131. package/dist/util/SlotsHelper.js +43 -0
  132. package/dist/util/TabbableElements.js +5 -1
  133. package/dist/util/arraysAreEqual.js +15 -0
  134. package/dist/util/clamp.js +12 -0
  135. package/dist/util/createLinkInHead.js +19 -0
  136. package/dist/util/debounce.js +17 -0
  137. package/dist/util/escapeRegex.js +10 -0
  138. package/dist/util/generateHighlightedMarkup.js +42 -0
  139. package/dist/util/getActiveElement.js +11 -0
  140. package/dist/util/getClassCopy.js +10 -0
  141. package/dist/util/getEffectiveContentDensity.js +5 -0
  142. package/dist/util/getNormalizedTarget.js +16 -0
  143. package/dist/util/getSingletonElementInstance.js +13 -0
  144. package/dist/util/isElementInView.js +15 -0
  145. package/dist/util/isNodeHidden.js +1 -1
  146. package/dist/util/isNodeTabbable.js +4 -4
  147. package/dist/util/isValidPropertyName.js +6 -5
  148. package/hash.txt +1 -0
  149. package/index.js +1 -1
  150. package/lib/generate-asset-parameters/index.js +8 -5
  151. package/lib/generate-styles/index.js +26 -0
  152. package/lib/generate-version-info/index.js +32 -0
  153. package/package-scripts.js +30 -19
  154. package/package.json +19 -13
  155. package/src/AssetRegistry.js +8 -7
  156. package/src/Boot.js +59 -0
  157. package/src/CSP.js +59 -0
  158. package/src/CustomElementsRegistry.js +60 -4
  159. package/src/CustomElementsScope.js +30 -0
  160. package/src/CustomElementsScopeUtils.js +108 -0
  161. package/src/DOMObserver.js +65 -0
  162. package/src/Device.js +71 -773
  163. package/src/EventProvider.js +30 -26
  164. package/src/FeaturesRegistry.js +4 -1
  165. package/src/FontFace.js +19 -62
  166. package/src/InitialConfiguration.js +43 -8
  167. package/src/Keys.js +125 -0
  168. package/src/ManagedStyles.js +83 -0
  169. package/src/MediaRange.js +109 -0
  170. package/src/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
  171. package/src/Render.js +175 -0
  172. package/src/RenderQueue.js +41 -17
  173. package/src/RenderScheduler.js +24 -158
  174. package/src/Runtimes.js +107 -0
  175. package/src/StaticArea.js +1 -39
  176. package/src/StaticAreaItem.js +58 -62
  177. package/src/SystemCSSVars.js +4 -25
  178. package/src/Theming.js +2 -1
  179. package/src/UI5Element.js +391 -350
  180. package/src/UI5ElementMetadata.js +158 -18
  181. package/src/asset-registries/Icons.js +117 -13
  182. package/src/asset-registries/Illustrations.js +30 -0
  183. package/src/asset-registries/LocaleData.js +105 -66
  184. package/src/asset-registries/Themes.js +29 -34
  185. package/src/asset-registries/i18n.js +63 -48
  186. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  187. package/src/config/AnimationMode.js +11 -1
  188. package/src/config/Icons.js +52 -0
  189. package/src/config/Language.js +33 -6
  190. package/src/config/Theme.js +25 -0
  191. package/src/css/BusyIndicator.css +80 -0
  192. package/src/css/FontFace.css +75 -0
  193. package/src/css/OverrideFontFace.css +32 -0
  194. package/src/css/SystemCSSVars.css +17 -0
  195. package/src/delegate/ItemNavigation.js +239 -170
  196. package/src/delegate/ResizeHandler.js +78 -37
  197. package/src/delegate/ScrollEnablement.js +49 -20
  198. package/src/features/F6Navigation.js +106 -0
  199. package/src/features/OpenUI5Enablement.js +119 -0
  200. package/src/features/OpenUI5Support.js +42 -7
  201. package/src/getSharedResource.js +30 -0
  202. package/src/i18nBundle.js +58 -5
  203. package/src/isLegacyBrowser.js +3 -0
  204. package/src/locale/applyDirection.js +6 -4
  205. package/src/locale/directionChange.js +32 -0
  206. package/src/locale/getEffectiveDir.js +28 -0
  207. package/src/locale/getLocale.js +12 -2
  208. package/src/locale/languageChange.js +1 -1
  209. package/src/renderer/LitRenderer.js +44 -7
  210. package/src/renderer/directives/style-map.js +72 -0
  211. package/src/renderer/executeTemplate.js +34 -0
  212. package/src/theming/CustomStyle.js +47 -6
  213. package/src/theming/ThemeLoaded.js +22 -0
  214. package/src/theming/applyTheme.js +13 -15
  215. package/src/theming/getConstructableStyle.js +15 -10
  216. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  217. package/src/theming/getEffectiveStyle.js +32 -8
  218. package/src/theming/getStylesString.js +15 -0
  219. package/src/theming/getThemeDesignerTheme.js +25 -5
  220. package/src/theming/preloadLinks.js +23 -0
  221. package/src/types/CSSColor.js +9 -0
  222. package/src/types/CalendarType.js +1 -1
  223. package/src/types/DataType.js +13 -1
  224. package/src/types/Float.js +4 -0
  225. package/src/types/Integer.js +4 -0
  226. package/src/types/InvisibleMessageMode.js +30 -0
  227. package/src/types/ItemNavigationBehavior.js +2 -7
  228. package/src/types/PopupState.js +1 -1
  229. package/src/types/ValueState.js +1 -1
  230. package/src/updateShadowRoot.js +30 -0
  231. package/src/util/AriaLabelHelper.js +41 -0
  232. package/src/util/Caret.js +45 -0
  233. package/src/util/ColorConversion.js +370 -0
  234. package/src/util/FocusableElements.js +22 -9
  235. package/src/util/HTMLSanitizer.js +7 -0
  236. package/src/util/InvisibleMessage.js +60 -0
  237. package/src/util/PopupUtils.js +93 -0
  238. package/src/util/SlotsHelper.js +43 -0
  239. package/src/util/TabbableElements.js +5 -1
  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/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/getNormalizedTarget.js +16 -0
  250. package/src/util/getSingletonElementInstance.js +13 -0
  251. package/src/util/isElementInView.js +15 -0
  252. package/src/util/isNodeHidden.js +1 -1
  253. package/src/util/isNodeTabbable.js +4 -4
  254. package/src/util/isValidPropertyName.js +6 -5
  255. package/used-modules.txt +10 -0
  256. package/bundle.es5.js +0 -28
  257. package/dist/SVGIconRegistry.js +0 -60
  258. package/dist/boot.js +0 -34
  259. package/dist/compatibility/DOMObserver.js +0 -62
  260. package/dist/compatibility/patchNodeValue.js +0 -24
  261. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  262. package/dist/delegate/CustomResize.js +0 -78
  263. package/dist/delegate/NativeResize.js +0 -44
  264. package/dist/features/PropertiesFormatSupport.js +0 -8
  265. package/dist/features/browsersupport/Edge.js +0 -6
  266. package/dist/features/browsersupport/IE11.js +0 -41
  267. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  268. package/dist/renderer/ifDefined.js +0 -21
  269. package/dist/resources/bundle.es5.js +0 -212
  270. package/dist/resources/bundle.es5.js.map +0 -1
  271. package/dist/theming/CSSVarsPonyfill.js +0 -24
  272. package/dist/theming/adaptCSSForIE.js +0 -90
  273. package/dist/theming/createComponentStyleTag.js +0 -49
  274. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  275. package/dist/thirdparty/Array.from.js +0 -16
  276. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  277. package/dist/thirdparty/Array.prototype.find.js +0 -46
  278. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  279. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  280. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  281. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  282. package/dist/thirdparty/Number.isInteger.js +0 -5
  283. package/dist/thirdparty/Number.isNaN.js +0 -1
  284. package/dist/thirdparty/Number.parseInt.js +0 -1
  285. package/dist/thirdparty/Object.assign.js +0 -31
  286. package/dist/thirdparty/Object.entries.js +0 -11
  287. package/dist/thirdparty/Symbol.js +0 -2
  288. package/dist/thirdparty/WeakSet.js +0 -27
  289. package/dist/thirdparty/es6-string-methods.js +0 -182
  290. package/dist/thirdparty/events-polyfills.js +0 -89
  291. package/dist/thirdparty/fetch.js +0 -1
  292. package/dist/thirdparty/template.js +0 -600
  293. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  294. package/dist/util/isSlot.js +0 -3
  295. package/dist/webcomponentsjs/LICENSE.md +0 -19
  296. package/dist/webcomponentsjs/README.md +0 -229
  297. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  298. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  299. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  300. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  301. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  302. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  303. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  304. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  305. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  306. package/dist/webcomponentsjs/package.json +0 -46
  307. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  308. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  309. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  310. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  311. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  312. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  313. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  314. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  315. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  316. package/src/SVGIconRegistry.js +0 -60
  317. package/src/boot.js +0 -34
  318. package/src/compatibility/DOMObserver.js +0 -62
  319. package/src/compatibility/patchNodeValue.js +0 -24
  320. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  321. package/src/delegate/CustomResize.js +0 -78
  322. package/src/delegate/NativeResize.js +0 -44
  323. package/src/features/PropertiesFormatSupport.js +0 -8
  324. package/src/features/browsersupport/Edge.js +0 -6
  325. package/src/features/browsersupport/IE11.js +0 -41
  326. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  327. package/src/renderer/ifDefined.js +0 -21
  328. package/src/theming/CSSVarsPonyfill.js +0 -24
  329. package/src/theming/adaptCSSForIE.js +0 -90
  330. package/src/theming/createComponentStyleTag.js +0 -49
  331. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  332. package/src/thirdparty/Array.from.js +0 -16
  333. package/src/thirdparty/Array.prototype.fill.js +0 -44
  334. package/src/thirdparty/Array.prototype.find.js +0 -46
  335. package/src/thirdparty/Array.prototype.includes.js +0 -51
  336. package/src/thirdparty/Element.prototype.closest.js +0 -11
  337. package/src/thirdparty/Element.prototype.matches.js +0 -6
  338. package/src/thirdparty/Map.prototype.keys.js +0 -9
  339. package/src/thirdparty/Number.isInteger.js +0 -5
  340. package/src/thirdparty/Number.isNaN.js +0 -1
  341. package/src/thirdparty/Number.parseInt.js +0 -1
  342. package/src/thirdparty/Object.assign.js +0 -31
  343. package/src/thirdparty/Object.entries.js +0 -11
  344. package/src/thirdparty/Symbol.js +0 -2
  345. package/src/thirdparty/WeakSet.js +0 -27
  346. package/src/thirdparty/es6-string-methods.js +0 -182
  347. package/src/thirdparty/events-polyfills.js +0 -89
  348. package/src/thirdparty/fetch.js +0 -1
  349. package/src/thirdparty/template.js +0 -600
  350. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  351. package/src/util/isSlot.js +0 -3
@@ -1,9 +1,7 @@
1
- import { fetchJsonOnce, fetchTextOnce } from "../util/FetchHelper.js";
2
1
  import { DEFAULT_THEME } from "../generated/AssetParameters.js";
3
- import getFileExtension from "../util/getFileExtension.js";
4
2
 
5
- const themeURLs = new Map();
6
3
  const themeStyles = new Map();
4
+ const loaders = new Map();
7
5
  const registeredPackages = new Set();
8
6
  const registeredThemes = new Set();
9
7
 
@@ -15,29 +13,19 @@ const registeredThemes = new Set();
15
13
  * Example usage:
16
14
  * 1) Pass the CSS Vars as a string directly.
17
15
  * registerThemeProperties("my-package", "my_theme", ":root{--var1: red;}");
18
- * 2) Pass the CSS Vars as an object directly
19
- * registerThemeProperties("my-package", "my_theme", {"_": ":root{--var1: red;}"});
20
- * 3) Pass a URL to a CSS file, containing the CSS Vars. Will be fetched on demand, not upon registration.
21
- * registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.css");
22
- * 4) Pass a URL to a JSON file, containing the CSS Vars in its "_" property. Will be fetched on demand, not upon registration.
23
- * registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.json");
24
16
  *
25
17
  * @public
26
18
  * @param packageName - the NPM package for which CSS Vars are registered
27
19
  * @param themeName - the theme which the CSS Vars implement
28
- * @param style - can be one of four options: a string, an object with a "_" property, URL to a CSS file, or URL to a JSON file with a "_" property
20
+ * @param style - the style content directly
21
+ * @deprecated
29
22
  */
30
- const registerThemeProperties = (packageName, themeName, style) => {
31
- if (style._) {
32
- // JSON object like ({"_": ":root"})
33
- themeStyles.set(`${packageName}_${themeName}`, style._);
34
- } else if (style.includes(":root") || style === "") {
35
- // pure string, including empty string
36
- themeStyles.set(`${packageName}_${themeName}`, style);
37
- } else {
38
- // url for fetching
39
- themeURLs.set(`${packageName}_${themeName}`, style);
40
- }
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);
41
29
  registeredPackages.add(packageName);
42
30
  registeredThemes.add(themeName);
43
31
  };
@@ -50,25 +38,31 @@ const getThemeProperties = async (packageName, themeName) => {
50
38
 
51
39
  if (!registeredThemes.has(themeName)) {
52
40
  const regThemesStr = [...registeredThemes.values()].join(", ");
53
- console.warn(`You have requested a non-registered theme - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
54
- return themeStyles.get(`${packageName}_${DEFAULT_THEME}`);
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);
55
43
  }
56
44
 
57
- const data = await fetchThemeProperties(packageName, themeName);
58
- const themeProps = data._ || data;
59
-
60
- themeStyles.set(`${packageName}_${themeName}`, themeProps);
61
- return themeProps;
45
+ return _getThemeProperties(packageName, themeName);
62
46
  };
63
47
 
64
- const fetchThemeProperties = async (packageName, themeName) => {
65
- const url = themeURLs.get(`${packageName}_${themeName}`);
66
-
67
- if (!url) {
68
- 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;
54
+ }
55
+ let data;
56
+ try {
57
+ data = await loader(themeName);
58
+ } catch (e) {
59
+ console.error(packageName, e.message); /* eslint-disable-line */
60
+ return;
69
61
  }
62
+ const themeProps = data._ || data;
70
63
 
71
- return getFileExtension(url) === ".css" ? fetchTextOnce(url) : fetchJsonOnce(url);
64
+ themeStyles.set(`${packageName}_${themeName}`, themeProps);
65
+ return themeProps;
72
66
  };
73
67
 
74
68
  const getRegisteredPackages = () => {
@@ -80,6 +74,7 @@ const isThemeRegistered = theme => {
80
74
  };
81
75
 
82
76
  export {
77
+ registerThemePropertiesLoader,
83
78
  registerThemeProperties,
84
79
  getThemeProperties,
85
80
  getRegisteredPackages,
@@ -1,21 +1,31 @@
1
- import { getFeature } from "../FeaturesRegistry.js";
2
1
  import getLocale from "../locale/getLocale.js";
3
2
  import { attachLanguageChange } from "../locale/languageChange.js";
4
- import { fetchTextOnce } from "../util/FetchHelper.js";
5
3
  import normalizeLocale from "../locale/normalizeLocale.js";
6
4
  import nextFallbackLocale from "../locale/nextFallbackLocale.js";
7
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();
8
11
 
9
12
  const bundleData = new Map();
10
- const bundleURLs = new Map();
13
+ const bundlePromises = new Map();
14
+ const loaders = new Map();
11
15
 
12
16
  /**
13
- * Sets a map with texts and ID the are related to.
14
- * @param {string} packageName package ID that the i18n bundle will be related to
15
- * @param {Object} data an object with string locales as keys and text translataions as values
16
- * @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
17
21
  */
18
- 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) => {
19
29
  bundleData.set(packageName, data);
20
30
  };
21
31
 
@@ -24,18 +34,36 @@ const getI18nBundleData = packageName => {
24
34
  };
25
35
 
26
36
  /**
27
- * Registers a map of locale/url information, to be used by the <code>fetchI18nBundle</code> method.
28
- * Note: In order to be able to register ".properties" files, you must import the following module:
29
- * import "@ui5/webcomponents-base/dist/features/PropertiesFormatSupport.js";
30
- *
31
- * @param {string} packageName package ID that the i18n bundle will be related to
32
- * @param {Object} bundle an object with string locales as keys and the URLs (in .json or .properties format - see the note above) where the corresponding locale can be fetched from, f.e {"en": "path/en.json", ...}
33
- *
34
37
  * @public
38
+ * @deprecated
35
39
  */
36
- const registerI18nBundle = (packageName, bundle) => {
37
- const oldBundle = bundleURLs.get(packageName) || {};
38
- bundleURLs.set(packageName, Object.assign({}, oldBundle, 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
+ }
39
67
  };
40
68
 
41
69
  /**
@@ -48,48 +76,35 @@ const registerI18nBundle = (packageName, bundle) => {
48
76
  * @public
49
77
  */
50
78
  const fetchI18nBundle = async packageName => {
51
- const bundlesForPackage = bundleURLs.get(packageName);
52
-
53
- if (!bundlesForPackage) {
54
- console.warn(`Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
55
- ` You need to import ${packageName}/dist/Assets.js with a build tool that supports JSON imports.`); /* eslint-disable-line */
56
- return;
57
- }
58
-
59
79
  const language = getLocale().getLanguage();
80
+ const region = getLocale().getRegion();
81
+ let localeId = normalizeLocale(language + (region ? `-${region}` : ``));
60
82
 
61
- let localeId = normalizeLocale(language);
62
- while (localeId !== DEFAULT_LANGUAGE && !bundlesForPackage[localeId]) {
83
+ while (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {
63
84
  localeId = nextFallbackLocale(localeId);
64
85
  }
65
86
 
66
- if (!bundlesForPackage[localeId]) {
67
- setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)
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)
68
91
  return;
69
92
  }
70
93
 
71
- const bundleURL = bundlesForPackage[localeId];
72
-
73
- if (typeof bundleURL === "object") { // inlined from build
74
- setI18nBundleData(packageName, bundleURL);
94
+ if (!_hasLoader(packageName, localeId)) {
95
+ _showAssetsWarningOnce(packageName);
75
96
  return;
76
97
  }
77
98
 
78
- const content = await fetchTextOnce(bundleURL);
79
- let parser;
80
- if (content.startsWith("{")) {
81
- parser = JSON.parse;
82
- } else {
83
- const PropertiesFormatSupport = getFeature("PropertiesFormatSupport");
84
- if (!PropertiesFormatSupport) {
85
- throw new Error(`In order to support .properties files, please: import "@ui5/webcomponents-base/dist/features/PropertiesFormatSupport.js";`);
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 */
86
106
  }
87
- parser = PropertiesFormatSupport.parser;
88
107
  }
89
-
90
- const data = parser(content);
91
-
92
- setI18nBundleData(packageName, data);
93
108
  };
94
109
 
95
110
  // When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles
@@ -99,8 +114,8 @@ attachLanguageChange(() => {
99
114
  });
100
115
 
101
116
  export {
117
+ registerI18nLoader,
102
118
  fetchI18nBundle,
103
119
  registerI18nBundle,
104
- setI18nBundleData,
105
120
  getI18nBundleData,
106
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,4 +1,5 @@
1
1
  import { getAnimationMode as getConfiguredAnimationMode } from "../InitialConfiguration.js";
2
+ import AnimationMode from "../types/AnimationMode.js";
2
3
 
3
4
  let animationMode;
4
5
 
@@ -10,4 +11,13 @@ const getAnimationMode = () => {
10
11
  return animationMode;
11
12
  };
12
13
 
13
- 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
+ };
@@ -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,8 +1,12 @@
1
- import { getLanguage as getConfiguredLanguage } from "../InitialConfiguration.js";
1
+ import {
2
+ getLanguage as getConfiguredLanguage,
3
+ getFetchDefaultLanguage as getConfiguredFetchDefaultLanguage,
4
+ } from "../InitialConfiguration.js";
2
5
  import { fireLanguageChange } from "../locale/languageChange.js";
3
- import RenderScheduler from "../RenderScheduler.js";
6
+ import { reRenderAllUI5Elements } from "../Render.js";
4
7
 
5
8
  let language;
9
+ let fetchDefaultLanguage;
6
10
 
7
11
  /**
8
12
  * Returns the currently configured language, or the browser language as a fallback
@@ -29,13 +33,36 @@ const setLanguage = async newLanguage => {
29
33
 
30
34
  language = newLanguage;
31
35
 
32
- const listenersResults = fireLanguageChange(newLanguage);
33
- await Promise.all(listenersResults);
34
- RenderScheduler.reRenderAllUI5Elements({ languageAware: true });
35
- return RenderScheduler.whenFinished();
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;
36
61
  };
37
62
 
38
63
  export {
39
64
  getLanguage,
40
65
  setLanguage,
66
+ setFetchDefaultLanguage,
67
+ getFetchDefaultLanguage,
41
68
  };
@@ -1,4 +1,5 @@
1
1
  import { getTheme as getConfiguredTheme } from "../InitialConfiguration.js";
2
+ import { reRenderAllUI5Elements } from "../Render.js";
2
3
  import applyTheme from "../theming/applyTheme.js";
3
4
 
4
5
  let theme;
@@ -20,9 +21,33 @@ const setTheme = async newTheme => {
20
21
 
21
22
  // Update CSS Custom Properties
22
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);
23
46
  };
24
47
 
25
48
  export {
26
49
  getTheme,
27
50
  setTheme,
51
+ isTheme,
52
+ isThemeFamily,
28
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
+ }
@@ -0,0 +1,75 @@
1
+ @font-face {
2
+ font-family: "72";
3
+ font-style: normal;
4
+ font-weight: 400;
5
+ src: local("72"),
6
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format("woff2"),
7
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff?ui5-webcomponents) format("woff");
8
+ }
9
+
10
+ @font-face {
11
+ font-family: "72full";
12
+ font-style: normal;
13
+ font-weight: 400;
14
+ src: local('72-full'),
15
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format("woff2"),
16
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff?ui5-webcomponents) format("woff");
17
+
18
+ }
19
+
20
+ @font-face {
21
+ font-family: "72";
22
+ font-style: normal;
23
+ font-weight: 700;
24
+ src: local('72-Bold'),
25
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"),
26
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format("woff");
27
+ }
28
+
29
+ @font-face {
30
+ font-family: "72full";
31
+ font-style: normal;
32
+ font-weight: 700;
33
+ src: local('72-Bold-full'),
34
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2"),
35
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format("woff");
36
+ }
37
+
38
+ @font-face {
39
+ font-family: '72-Bold';
40
+ font-style: normal;
41
+ src: local('72-Bold'),
42
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"),
43
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format("woff");
44
+ }
45
+
46
+ @font-face {
47
+ font-family: '72-Boldfull';
48
+ font-style: normal;
49
+ src: url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2"),
50
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format("woff");
51
+ }
52
+
53
+ @font-face {
54
+ font-family: '72-Light';
55
+ font-style: normal;
56
+ src: local('72-Light'),
57
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format("woff2"),
58
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff?ui5-webcomponents) format("woff");
59
+ }
60
+
61
+ @font-face {
62
+ font-family: '72-Lightfull';
63
+ font-style: normal;
64
+ src: url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff2?ui5-webcomponents) format("woff2"),
65
+ url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff?ui5-webcomponents) format("woff");
66
+ }
67
+
68
+ @font-face {
69
+ font-family: "72Black";
70
+ font-style: bold;
71
+ font-weight: 900;
72
+ src: local('72Black'),
73
+ url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format("woff2"),
74
+ url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff?ui5-webcomponents) format("woff");
75
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Some diacritics are supported by the 72 font:
3
+ * * Grave
4
+ * * Acute
5
+ * * Circumflex
6
+ * * Tilde
7
+ *
8
+ * However, the following diacritics and the combination of multiple diacritics (including the supported ones) are not supported:
9
+ * * Breve
10
+ * * Horn
11
+ * * Dot below
12
+ * * Hook above
13
+ *
14
+ *
15
+ * Override for the characters that aren't covered by the '72' font to other system fonts
16
+ *
17
+ * U+0102-0103: A and a with Breve
18
+ * U+01A0-01A1: O and o with Horn
19
+ * U+01AF-01B0: U and u with Horn
20
+ * U+1EA0-1EB7: A and a with diacritics that are not supported by the font and combination of multiple diacritics
21
+ * U+1EB8-1EC7: E and e with diacritics that are not supported by the font and combination of multiple diacritics
22
+ * U+1EC8-1ECB: I and i with diacritics that are not supported by the font and combination of multiple diacritics
23
+ * U+1ECC-1EE3: O and o with diacritics that are not supported by the font and combination of multiple diacritics
24
+ * U+1EE4-1EF1: U and u with diacritics that are not supported by the font and combination of multiple diacritics
25
+ * U+1EF4-1EF7: Y and y with diacritics that are not supported by the font and combination of multiple diacritics
26
+ *
27
+ */
28
+ @font-face {
29
+ font-family: '72override';
30
+ unicode-range: U+0102-0103, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EB7, U+1EB8-1EC7, U+1EC8-1ECB, U+1ECC-1EE3, U+1EE4-1EF1, U+1EF4-1EF7;
31
+ src: local('Arial'), local('Helvetica'), local('sans-serif');
32
+ }
@@ -0,0 +1,17 @@
1
+ :root {
2
+ --_ui5_content_density:cozy;
3
+ }
4
+
5
+ [data-ui5-compact-size],
6
+ .ui5-content-density-compact,
7
+ .sapUiSizeCompact {
8
+ --_ui5_content_density:compact;
9
+ }
10
+
11
+ [dir="rtl"] {
12
+ --_ui5_dir:rtl;
13
+ }
14
+
15
+ [dir="ltr"] {
16
+ --_ui5_dir:ltr;
17
+ }