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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +314 -0
  3. package/README.md +53 -7
  4. package/bundle.esm.js +20 -20
  5. package/dist/AssetRegistry.js +8 -9
  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 +20 -98
  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 +7 -95
  16. package/dist/InitialConfiguration.js +37 -21
  17. package/dist/Keys.js +98 -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/RenderScheduler.js +16 -138
  23. package/dist/Runtimes.js +107 -0
  24. package/dist/StaticArea.js +1 -29
  25. package/dist/StaticAreaItem.js +58 -65
  26. package/dist/SystemCSSVars.js +4 -25
  27. package/dist/UI5Element.js +315 -382
  28. package/dist/UI5ElementMetadata.js +132 -17
  29. package/dist/asset-registries/Icons.js +117 -14
  30. package/dist/asset-registries/Illustrations.js +30 -0
  31. package/dist/asset-registries/LocaleData.js +97 -68
  32. package/dist/asset-registries/Themes.js +29 -35
  33. package/dist/asset-registries/i18n.js +62 -49
  34. package/dist/assets/bundle.esm.81ba431e.js +43 -0
  35. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  36. package/dist/config/Icons.js +52 -0
  37. package/dist/config/Language.js +18 -20
  38. package/dist/config/Theme.js +25 -0
  39. package/dist/css/BusyIndicator.css +80 -0
  40. package/dist/css/FontFace.css +75 -0
  41. package/dist/css/OverrideFontFace.css +32 -0
  42. package/dist/css/SystemCSSVars.css +17 -0
  43. package/dist/delegate/ItemNavigation.js +238 -201
  44. package/dist/delegate/ResizeHandler.js +78 -37
  45. package/dist/delegate/ScrollEnablement.js +49 -20
  46. package/dist/features/F6Navigation.js +110 -0
  47. package/dist/features/OpenUI5Enablement.js +119 -0
  48. package/dist/features/OpenUI5Support.js +41 -6
  49. package/dist/generated/AssetParameters.js +1 -1
  50. package/dist/generated/VersionInfo.js +10 -0
  51. package/dist/generated/css/BusyIndicator.css.js +5 -0
  52. package/dist/generated/css/FontFace.css.js +5 -0
  53. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  54. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  55. package/dist/i18nBundle.js +38 -4
  56. package/dist/locale/applyDirection.js +6 -4
  57. package/dist/locale/directionChange.js +32 -0
  58. package/dist/locale/getEffectiveDir.js +28 -0
  59. package/dist/locale/languageChange.js +1 -1
  60. package/dist/renderer/LitRenderer.js +39 -18
  61. package/dist/renderer/directives/style-map.js +72 -0
  62. package/dist/renderer/executeTemplate.js +19 -2
  63. package/dist/sap/base/Log.js +241 -0
  64. package/dist/sap/base/assert.js +8 -0
  65. package/dist/sap/base/security/URLListValidator.js +148 -0
  66. package/dist/sap/base/security/encodeCSS.js +14 -0
  67. package/dist/sap/base/security/encodeXML.js +23 -0
  68. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  69. package/dist/sap/base/strings/toHex.js +8 -0
  70. package/dist/sap/base/util/now.js +7 -0
  71. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  72. package/dist/theming/CustomStyle.js +25 -5
  73. package/dist/theming/applyTheme.js +11 -16
  74. package/dist/theming/getConstructableStyle.js +7 -6
  75. package/dist/theming/getEffectiveLinksHrefs.js +27 -0
  76. package/dist/theming/getEffectiveStyle.js +24 -8
  77. package/dist/theming/getStylesString.js +4 -2
  78. package/dist/theming/getThemeDesignerTheme.js +25 -5
  79. package/dist/theming/preloadLinks.js +23 -0
  80. package/dist/types/CSSColor.js +9 -0
  81. package/dist/types/CalendarType.js +1 -1
  82. package/dist/types/DataType.js +13 -1
  83. package/dist/types/Float.js +4 -0
  84. package/dist/types/Integer.js +4 -0
  85. package/dist/types/InvisibleMessageMode.js +30 -0
  86. package/dist/types/ItemNavigationBehavior.js +2 -7
  87. package/dist/types/PopupState.js +1 -1
  88. package/dist/types/ValueState.js +1 -1
  89. package/dist/updateShadowRoot.js +29 -0
  90. package/dist/util/AriaLabelHelper.js +6 -8
  91. package/dist/util/Caret.js +32 -0
  92. package/dist/util/ColorConversion.js +398 -0
  93. package/dist/util/FocusableElements.js +22 -9
  94. package/dist/util/HTMLSanitizer.js +7 -0
  95. package/dist/util/InvisibleMessage.js +69 -0
  96. package/dist/util/PopupUtils.js +93 -0
  97. package/dist/util/SlotsHelper.js +43 -0
  98. package/dist/util/TabbableElements.js +5 -1
  99. package/dist/util/arraysAreEqual.js +15 -0
  100. package/dist/util/clamp.js +12 -0
  101. package/dist/util/createLinkInHead.js +19 -0
  102. package/dist/util/debounce.js +17 -0
  103. package/dist/util/escapeRegex.js +10 -0
  104. package/dist/util/generateHighlightedMarkup.js +42 -0
  105. package/dist/util/getActiveElement.js +11 -0
  106. package/dist/util/getClassCopy.js +10 -0
  107. package/dist/util/getEffectiveContentDensity.js +5 -0
  108. package/dist/util/getNormalizedTarget.js +16 -0
  109. package/dist/util/isDefaultSlotProvided.js +11 -0
  110. package/dist/util/isElementInView.js +15 -0
  111. package/dist/util/isNodeHidden.js +1 -1
  112. package/dist/util/isNodeTabbable.js +4 -4
  113. package/hash.txt +1 -0
  114. package/index.js +1 -1
  115. package/lib/generate-asset-parameters/index.js +8 -5
  116. package/lib/generate-styles/index.js +26 -0
  117. package/lib/generate-version-info/index.js +32 -0
  118. package/package-scripts.js +37 -28
  119. package/package.json +20 -13
  120. package/src/AssetRegistry.js +8 -9
  121. package/src/Boot.js +59 -0
  122. package/src/CSP.js +59 -0
  123. package/src/CustomElementsRegistry.js +60 -4
  124. package/src/CustomElementsScope.js +20 -98
  125. package/src/CustomElementsScopeUtils.js +108 -0
  126. package/src/DOMObserver.js +65 -0
  127. package/src/Device.js +71 -773
  128. package/src/EventProvider.js +30 -26
  129. package/src/FeaturesRegistry.js +4 -1
  130. package/src/FontFace.js +7 -95
  131. package/src/InitialConfiguration.js +37 -21
  132. package/src/Keys.js +98 -0
  133. package/src/ManagedStyles.js +83 -0
  134. package/src/MediaRange.js +109 -0
  135. package/src/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
  136. package/src/Render.js +175 -0
  137. package/src/RenderScheduler.js +16 -138
  138. package/src/Runtimes.js +107 -0
  139. package/src/StaticArea.js +1 -29
  140. package/src/StaticAreaItem.js +58 -65
  141. package/src/SystemCSSVars.js +4 -25
  142. package/src/UI5Element.js +315 -382
  143. package/src/UI5ElementMetadata.js +132 -17
  144. package/src/asset-registries/Icons.js +117 -14
  145. package/src/asset-registries/Illustrations.js +30 -0
  146. package/src/asset-registries/LocaleData.js +97 -68
  147. package/src/asset-registries/Themes.js +29 -35
  148. package/src/asset-registries/i18n.js +62 -49
  149. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  150. package/src/config/Icons.js +52 -0
  151. package/src/config/Language.js +18 -20
  152. package/src/config/Theme.js +25 -0
  153. package/src/css/BusyIndicator.css +80 -0
  154. package/src/css/FontFace.css +75 -0
  155. package/src/css/OverrideFontFace.css +32 -0
  156. package/src/css/SystemCSSVars.css +17 -0
  157. package/src/delegate/ItemNavigation.js +238 -201
  158. package/src/delegate/ResizeHandler.js +78 -37
  159. package/src/delegate/ScrollEnablement.js +49 -20
  160. package/src/features/F6Navigation.js +110 -0
  161. package/src/features/OpenUI5Enablement.js +119 -0
  162. package/src/features/OpenUI5Support.js +41 -6
  163. package/src/i18nBundle.js +38 -4
  164. package/src/locale/applyDirection.js +6 -4
  165. package/src/locale/directionChange.js +32 -0
  166. package/src/locale/getEffectiveDir.js +28 -0
  167. package/src/locale/languageChange.js +1 -1
  168. package/src/renderer/LitRenderer.js +39 -18
  169. package/src/renderer/directives/style-map.js +72 -0
  170. package/src/renderer/executeTemplate.js +19 -2
  171. package/src/theming/CustomStyle.js +25 -5
  172. package/src/theming/applyTheme.js +11 -16
  173. package/src/theming/getConstructableStyle.js +7 -6
  174. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  175. package/src/theming/getEffectiveStyle.js +24 -8
  176. package/src/theming/getStylesString.js +4 -2
  177. package/src/theming/getThemeDesignerTheme.js +25 -5
  178. package/src/theming/preloadLinks.js +23 -0
  179. package/src/types/CSSColor.js +9 -0
  180. package/src/types/CalendarType.js +1 -1
  181. package/src/types/DataType.js +13 -1
  182. package/src/types/Float.js +4 -0
  183. package/src/types/Integer.js +4 -0
  184. package/src/types/InvisibleMessageMode.js +30 -0
  185. package/src/types/ItemNavigationBehavior.js +2 -7
  186. package/src/types/PopupState.js +1 -1
  187. package/src/types/ValueState.js +1 -1
  188. package/src/updateShadowRoot.js +29 -0
  189. package/src/util/AriaLabelHelper.js +6 -8
  190. package/src/util/Caret.js +32 -0
  191. package/src/util/ColorConversion.js +398 -0
  192. package/src/util/FocusableElements.js +22 -9
  193. package/src/util/HTMLSanitizer.js +7 -0
  194. package/src/util/InvisibleMessage.js +69 -0
  195. package/src/util/PopupUtils.js +93 -0
  196. package/src/util/SlotsHelper.js +43 -0
  197. package/src/util/TabbableElements.js +5 -1
  198. package/src/util/arraysAreEqual.js +15 -0
  199. package/src/util/clamp.js +12 -0
  200. package/src/util/createLinkInHead.js +19 -0
  201. package/src/util/debounce.js +17 -0
  202. package/src/util/escapeRegex.js +10 -0
  203. package/src/util/generateHighlightedMarkup.js +42 -0
  204. package/src/util/getActiveElement.js +11 -0
  205. package/src/util/getClassCopy.js +10 -0
  206. package/src/util/getEffectiveContentDensity.js +5 -0
  207. package/src/util/getNormalizedTarget.js +16 -0
  208. package/src/util/isDefaultSlotProvided.js +11 -0
  209. package/src/util/isElementInView.js +15 -0
  210. package/src/util/isNodeHidden.js +1 -1
  211. package/src/util/isNodeTabbable.js +4 -4
  212. package/used-modules.txt +10 -0
  213. package/bundle.es5.js +0 -28
  214. package/config/.eslintrc.js +0 -3
  215. package/config/rollup.config.js +0 -1
  216. package/dist/SVGIconRegistry.js +0 -73
  217. package/dist/boot.js +0 -34
  218. package/dist/compatibility/DOMObserver.js +0 -62
  219. package/dist/compatibility/patchNodeValue.js +0 -24
  220. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  221. package/dist/config/AssetsPath.js +0 -17
  222. package/dist/delegate/CustomResize.js +0 -78
  223. package/dist/delegate/NativeResize.js +0 -45
  224. package/dist/features/PropertiesFormatSupport.js +0 -8
  225. package/dist/features/browsersupport/Edge.js +0 -6
  226. package/dist/features/browsersupport/IE11.js +0 -42
  227. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  228. package/dist/renderer/ifDefined.js +0 -21
  229. package/dist/renderer/scopeHTML.js +0 -32
  230. package/dist/resources/bundle.es5.js +0 -212
  231. package/dist/resources/bundle.es5.js.map +0 -1
  232. package/dist/resources/bundle.esm.js +0 -129
  233. package/dist/resources/bundle.esm.js.map +0 -1
  234. package/dist/test-resources/assets/Themes.js +0 -17
  235. package/dist/test-resources/elements/Child.js +0 -35
  236. package/dist/test-resources/elements/Generic.js +0 -84
  237. package/dist/test-resources/elements/GenericExt.js +0 -26
  238. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  239. package/dist/test-resources/elements/Parent.js +0 -37
  240. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  241. package/dist/test-resources/pages/AllTestElements.html +0 -42
  242. package/dist/test-resources/pages/Configuration.html +0 -20
  243. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  244. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  245. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  246. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  247. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  248. package/dist/test-resources/pages/i18n.html +0 -40
  249. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  250. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  251. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  252. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  253. package/dist/test-resources/specs/StaticArea.spec.js +0 -34
  254. package/dist/test-resources/specs/Theming.spec.js +0 -31
  255. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  256. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -96
  257. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  258. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  259. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  260. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  261. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  262. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  263. package/dist/theming/CSSVarsPonyfill.js +0 -68
  264. package/dist/theming/adaptCSSForIE.js +0 -95
  265. package/dist/theming/createComponentStyleTag.js +0 -54
  266. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  267. package/dist/thirdparty/Array.from.js +0 -16
  268. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  269. package/dist/thirdparty/Array.prototype.find.js +0 -46
  270. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  271. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  272. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  273. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  274. package/dist/thirdparty/Number.isInteger.js +0 -5
  275. package/dist/thirdparty/Number.isNaN.js +0 -1
  276. package/dist/thirdparty/Number.parseFloat.js +0 -1
  277. package/dist/thirdparty/Number.parseInt.js +0 -1
  278. package/dist/thirdparty/Object.assign.js +0 -31
  279. package/dist/thirdparty/Object.entries.js +0 -11
  280. package/dist/thirdparty/Symbol.js +0 -2
  281. package/dist/thirdparty/WeakSet.js +0 -27
  282. package/dist/thirdparty/es6-string-methods.js +0 -182
  283. package/dist/thirdparty/events-polyfills.js +0 -89
  284. package/dist/thirdparty/fetch.js +0 -1
  285. package/dist/thirdparty/template.js +0 -600
  286. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  287. package/dist/util/EffectiveAssetPath.js +0 -27
  288. package/dist/util/encodeCSS.js +0 -24
  289. package/dist/util/findNodeOwner.js +0 -35
  290. package/dist/util/isSlot.js +0 -3
  291. package/dist/webcomponentsjs/LICENSE.md +0 -19
  292. package/dist/webcomponentsjs/README.md +0 -229
  293. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  294. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  295. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  296. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  297. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  298. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  299. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  300. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  301. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  302. package/dist/webcomponentsjs/package.json +0 -46
  303. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  304. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  305. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  306. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  307. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  308. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  309. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  310. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  311. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  312. package/src/SVGIconRegistry.js +0 -73
  313. package/src/boot.js +0 -34
  314. package/src/compatibility/DOMObserver.js +0 -62
  315. package/src/compatibility/patchNodeValue.js +0 -24
  316. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  317. package/src/config/AssetsPath.js +0 -17
  318. package/src/delegate/CustomResize.js +0 -78
  319. package/src/delegate/NativeResize.js +0 -45
  320. package/src/features/PropertiesFormatSupport.js +0 -8
  321. package/src/features/browsersupport/Edge.js +0 -6
  322. package/src/features/browsersupport/IE11.js +0 -42
  323. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  324. package/src/renderer/ifDefined.js +0 -21
  325. package/src/renderer/scopeHTML.js +0 -32
  326. package/src/theming/CSSVarsPonyfill.js +0 -68
  327. package/src/theming/adaptCSSForIE.js +0 -95
  328. package/src/theming/createComponentStyleTag.js +0 -54
  329. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  330. package/src/thirdparty/Array.from.js +0 -16
  331. package/src/thirdparty/Array.prototype.fill.js +0 -44
  332. package/src/thirdparty/Array.prototype.find.js +0 -46
  333. package/src/thirdparty/Array.prototype.includes.js +0 -51
  334. package/src/thirdparty/Element.prototype.closest.js +0 -11
  335. package/src/thirdparty/Element.prototype.matches.js +0 -6
  336. package/src/thirdparty/Map.prototype.keys.js +0 -9
  337. package/src/thirdparty/Number.isInteger.js +0 -5
  338. package/src/thirdparty/Number.isNaN.js +0 -1
  339. package/src/thirdparty/Number.parseFloat.js +0 -1
  340. package/src/thirdparty/Number.parseInt.js +0 -1
  341. package/src/thirdparty/Object.assign.js +0 -31
  342. package/src/thirdparty/Object.entries.js +0 -11
  343. package/src/thirdparty/Symbol.js +0 -2
  344. package/src/thirdparty/WeakSet.js +0 -27
  345. package/src/thirdparty/es6-string-methods.js +0 -182
  346. package/src/thirdparty/events-polyfills.js +0 -89
  347. package/src/thirdparty/fetch.js +0 -1
  348. package/src/thirdparty/template.js +0 -600
  349. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  350. package/src/util/EffectiveAssetPath.js +0 -27
  351. package/src/util/encodeCSS.js +0 -24
  352. package/src/util/findNodeOwner.js +0 -35
  353. package/src/util/isSlot.js +0 -3
@@ -1,10 +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
- import { getEffectiveAssetPath } from "../util/EffectiveAssetPath.js";
5
2
 
6
- const themeURLs = new Map();
7
3
  const themeStyles = new Map();
4
+ const loaders = new Map();
8
5
  const registeredPackages = new Set();
9
6
  const registeredThemes = new Set();
10
7
 
@@ -16,29 +13,19 @@ const registeredThemes = new Set();
16
13
  * Example usage:
17
14
  * 1) Pass the CSS Vars as a string directly.
18
15
  * registerThemeProperties("my-package", "my_theme", ":root{--var1: red;}");
19
- * 2) Pass the CSS Vars as an object directly
20
- * registerThemeProperties("my-package", "my_theme", {"_": ":root{--var1: red;}"});
21
- * 3) Pass a URL to a CSS file, containing the CSS Vars. Will be fetched on demand, not upon registration.
22
- * registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.css");
23
- * 4) Pass a URL to a JSON file, containing the CSS Vars in its "_" property. Will be fetched on demand, not upon registration.
24
- * registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.json");
25
16
  *
26
17
  * @public
27
18
  * @param packageName - the NPM package for which CSS Vars are registered
28
19
  * @param themeName - the theme which the CSS Vars implement
29
- * @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
30
22
  */
31
- const registerThemeProperties = (packageName, themeName, style) => {
32
- if (style._) {
33
- // JSON object like ({"_": ":root"})
34
- themeStyles.set(`${packageName}_${themeName}`, style._);
35
- } else if (style.includes(":root") || style === "") {
36
- // pure string, including empty string
37
- themeStyles.set(`${packageName}_${themeName}`, style);
38
- } else {
39
- // url for fetching
40
- themeURLs.set(`${packageName}_${themeName}`, style);
41
- }
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);
42
29
  registeredPackages.add(packageName);
43
30
  registeredThemes.add(themeName);
44
31
  };
@@ -51,25 +38,31 @@ const getThemeProperties = async (packageName, themeName) => {
51
38
 
52
39
  if (!registeredThemes.has(themeName)) {
53
40
  const regThemesStr = [...registeredThemes.values()].join(", ");
54
- console.warn(`You have requested a non-registered theme - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
55
- 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);
56
43
  }
57
44
 
58
- const data = await fetchThemeProperties(packageName, themeName);
59
- const themeProps = data._ || data;
60
-
61
- themeStyles.set(`${packageName}_${themeName}`, themeProps);
62
- return themeProps;
45
+ return _getThemeProperties(packageName, themeName);
63
46
  };
64
47
 
65
- const fetchThemeProperties = async (packageName, themeName) => {
66
- const url = themeURLs.get(`${packageName}_${themeName}`);
67
-
68
- if (!url) {
69
- 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;
70
61
  }
62
+ const themeProps = data._ || data;
71
63
 
72
- return getFileExtension(url) === ".css" ? fetchTextOnce(url) : fetchJsonOnce(getEffectiveAssetPath(url));
64
+ themeStyles.set(`${packageName}_${themeName}`, themeProps);
65
+ return themeProps;
73
66
  };
74
67
 
75
68
  const getRegisteredPackages = () => {
@@ -81,6 +74,7 @@ const isThemeRegistered = theme => {
81
74
  };
82
75
 
83
76
  export {
77
+ registerThemePropertiesLoader,
84
78
  registerThemeProperties,
85
79
  getThemeProperties,
86
80
  getRegisteredPackages,
@@ -1,23 +1,33 @@
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";
8
- import { getEffectiveAssetPath } from "../util/EffectiveAssetPath.js";
9
- import { getUseDefaultLanguage } from "../config/Language.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();
10
11
 
11
12
  const bundleData = new Map();
12
- const bundleURLs = new Map();
13
+ const bundlePromises = new Map();
14
+ const loaders = new Map();
13
15
 
14
16
  /**
15
- * Sets a map with texts and ID the are related to.
16
- * @param {string} packageName package ID that the i18n bundle will be related to
17
- * @param {Object} data an object with string locales as keys and text translataions as values
17
+ * Registers i18n loader function for given package and locale.
18
+ *
18
19
  * @public
20
+ * @param {string} packageName for which package this loader can fetch data
21
+ * @param {string} localeId locale that this loader can handle
22
+ * @param {function} loader async function that will be passed a localeId and should return a JSON object
19
23
  */
20
- const setI18nBundleData = (packageName, data) => {
24
+ const registerI18nLoader = (packageName, localeId, loader) => {
25
+ // register loader by key
26
+ const bundleKey = `${packageName}/${localeId}`;
27
+ loaders.set(bundleKey, loader);
28
+ };
29
+
30
+ const _setI18nBundleData = (packageName, data) => {
21
31
  bundleData.set(packageName, data);
22
32
  };
23
33
 
@@ -26,18 +36,36 @@ const getI18nBundleData = packageName => {
26
36
  };
27
37
 
28
38
  /**
29
- * Registers a map of locale/url information, to be used by the <code>fetchI18nBundle</code> method.
30
- * Note: In order to be able to register ".properties" files, you must import the following module:
31
- * import "@ui5/webcomponents-base/dist/features/PropertiesFormatSupport.js";
32
- *
33
- * @param {string} packageName package ID that the i18n bundle will be related to
34
- * @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", ...}
35
- *
36
39
  * @public
40
+ * @deprecated
37
41
  */
38
- const registerI18nBundle = (packageName, bundle) => {
39
- const oldBundle = bundleURLs.get(packageName) || {};
40
- bundleURLs.set(packageName, Object.assign({}, oldBundle, bundle));
42
+ const registerI18nBundle = (_packageName, _bundle) => {
43
+ throw new Error("This method has been removed. Use `registerI18nLoader` instead.");
44
+ };
45
+
46
+ const _hasLoader = (packageName, localeId) => {
47
+ const bundleKey = `${packageName}/${localeId}`;
48
+ return loaders.has(bundleKey);
49
+ };
50
+
51
+ // load bundle over the network once
52
+ const _loadMessageBundleOnce = (packageName, localeId) => {
53
+ const bundleKey = `${packageName}/${localeId}`;
54
+ const loadMessageBundle = loaders.get(bundleKey);
55
+
56
+ if (!bundlePromises.get(bundleKey)) {
57
+ bundlePromises.set(bundleKey, loadMessageBundle(localeId));
58
+ }
59
+
60
+ return bundlePromises.get(bundleKey);
61
+ };
62
+
63
+ const _showAssetsWarningOnce = packageName => {
64
+ if (!warningShown.has(packageName)) {
65
+ console.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
66
+ ` 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 */
67
+ warningShown.add(packageName);
68
+ }
41
69
  };
42
70
 
43
71
  /**
@@ -50,50 +78,35 @@ const registerI18nBundle = (packageName, bundle) => {
50
78
  * @public
51
79
  */
52
80
  const fetchI18nBundle = async packageName => {
53
- const bundlesForPackage = bundleURLs.get(packageName);
54
-
55
- if (!bundlesForPackage) {
56
- console.warn(`Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
57
- ` You need to import ${packageName}/dist/Assets.js with a build tool that supports JSON imports.`); /* eslint-disable-line */
58
- return;
59
- }
60
-
61
81
  const language = getLocale().getLanguage();
62
82
  const region = getLocale().getRegion();
63
- const useDefaultLanguage = getUseDefaultLanguage();
64
83
  let localeId = normalizeLocale(language + (region ? `-${region}` : ``));
65
84
 
66
- while (localeId !== DEFAULT_LANGUAGE && !bundlesForPackage[localeId]) {
85
+ while (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {
67
86
  localeId = nextFallbackLocale(localeId);
68
87
  }
69
88
 
70
- if (useDefaultLanguage && localeId === DEFAULT_LANGUAGE) {
71
- setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)
89
+ // use default language unless configured to always fetch it from the network
90
+ const fetchDefaultLanguage = getFetchDefaultLanguage();
91
+ if (localeId === DEFAULT_LANGUAGE && !fetchDefaultLanguage) {
92
+ _setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)
72
93
  return;
73
94
  }
74
95
 
75
- const bundleURL = bundlesForPackage[localeId];
76
-
77
- if (typeof bundleURL === "object") { // inlined from build
78
- setI18nBundleData(packageName, bundleURL);
96
+ if (!_hasLoader(packageName, localeId)) {
97
+ _showAssetsWarningOnce(packageName);
79
98
  return;
80
99
  }
81
100
 
82
- const content = await fetchTextOnce(getEffectiveAssetPath(bundleURL));
83
- let parser;
84
- if (content.startsWith("{")) {
85
- parser = JSON.parse;
86
- } else {
87
- const PropertiesFormatSupport = getFeature("PropertiesFormatSupport");
88
- if (!PropertiesFormatSupport) {
89
- throw new Error(`In order to support .properties files, please: import "@ui5/webcomponents-base/dist/features/PropertiesFormatSupport.js";`);
101
+ try {
102
+ const data = await _loadMessageBundleOnce(packageName, localeId);
103
+ _setI18nBundleData(packageName, data);
104
+ } catch (e) {
105
+ if (!reportedErrors.has(e.message)) {
106
+ reportedErrors.add(e.message);
107
+ console.error(e.message); /* eslint-disable-line */
90
108
  }
91
- parser = PropertiesFormatSupport.parser;
92
109
  }
93
-
94
- const data = parser(content);
95
-
96
- setI18nBundleData(packageName, data);
97
110
  };
98
111
 
99
112
  // When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles
@@ -103,8 +116,8 @@ attachLanguageChange(() => {
103
116
  });
104
117
 
105
118
  export {
119
+ registerI18nLoader,
106
120
  fetchI18nBundle,
107
121
  registerI18nBundle,
108
- setI18nBundleData,
109
122
  getI18nBundleData,
110
123
  };
@@ -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;
@@ -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,12 +1,12 @@
1
1
  import {
2
2
  getLanguage as getConfiguredLanguage,
3
- getUseDefaultLanguage as getConfiguredUseDefaultLanguage,
3
+ getFetchDefaultLanguage as getConfiguredFetchDefaultLanguage,
4
4
  } from "../InitialConfiguration.js";
5
5
  import { fireLanguageChange } from "../locale/languageChange.js";
6
- import RenderScheduler from "../RenderScheduler.js";
6
+ import { reRenderAllUI5Elements } from "../Render.js";
7
7
 
8
8
  let language;
9
- let useDefaultLanguage;
9
+ let fetchDefaultLanguage;
10
10
 
11
11
  /**
12
12
  * Returns the currently configured language, or the browser language as a fallback
@@ -33,38 +33,36 @@ const setLanguage = async newLanguage => {
33
33
 
34
34
  language = newLanguage;
35
35
 
36
- const listenersResults = fireLanguageChange(newLanguage);
37
- await Promise.all(listenersResults);
38
- RenderScheduler.reRenderAllUI5Elements({ languageAware: true });
39
- return RenderScheduler.whenFinished();
36
+ await fireLanguageChange(newLanguage);
37
+ await reRenderAllUI5Elements({ languageAware: true });
40
38
  };
41
39
 
42
40
  /**
43
- * Defines if the default language, that is inlined, should be used,
44
- * instead of fetching the language over the network.
45
- * <b>Note:</b> By default the language will be fetched.
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.
46
44
  *
47
- * @param {Boolean} useDefaultLanguage
45
+ * @param {Boolean} fetchDefaultLanguage
48
46
  */
49
- const setUseDefaultLanguage = useDefaultLang => {
50
- useDefaultLanguage = useDefaultLang;
47
+ const setFetchDefaultLanguage = fetchDefaultLang => {
48
+ fetchDefaultLanguage = fetchDefaultLang;
51
49
  };
52
50
 
53
51
  /**
54
- * Returns if the default language, that is inlined, should be used.
52
+ * Returns if the default language, that is inlined, should be fetched over the network.
55
53
  * @returns {Boolean}
56
54
  */
57
- const getUseDefaultLanguage = () => {
58
- if (useDefaultLanguage === undefined) {
59
- setUseDefaultLanguage(getConfiguredUseDefaultLanguage());
55
+ const getFetchDefaultLanguage = () => {
56
+ if (fetchDefaultLanguage === undefined) {
57
+ setFetchDefaultLanguage(getConfiguredFetchDefaultLanguage());
60
58
  }
61
59
 
62
- return useDefaultLanguage;
60
+ return fetchDefaultLanguage;
63
61
  };
64
62
 
65
63
  export {
66
64
  getLanguage,
67
65
  setLanguage,
68
- setUseDefaultLanguage,
69
- getUseDefaultLanguage,
66
+ setFetchDefaultLanguage,
67
+ getFetchDefaultLanguage,
70
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
+ }