@ui5/webcomponents-base 0.0.0-0fcda382e → 0.0.0-1929d08ff
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.
- package/.eslintignore +4 -0
- package/CHANGELOG.md +234 -0
- package/README.md +26 -2
- package/bundle.esm.js +16 -7
- package/dist/AssetRegistry.js +8 -6
- package/dist/Boot.js +59 -0
- package/dist/CSP.js +59 -0
- package/dist/CustomElementsRegistry.js +79 -7
- package/dist/CustomElementsScope.js +108 -0
- package/dist/DOMObserver.js +65 -0
- package/dist/Device.js +69 -776
- package/dist/EventProvider.js +38 -26
- package/dist/FeaturesRegistry.js +4 -1
- package/dist/FontFace.js +19 -62
- package/dist/InitialConfiguration.js +43 -8
- package/dist/Keys.js +121 -2
- package/dist/ManagedStyles.js +83 -0
- package/dist/MediaRange.js +109 -0
- package/dist/PropertiesFileFormat.js +95 -0
- package/dist/Render.js +175 -0
- package/dist/RenderQueue.js +41 -17
- package/dist/RenderScheduler.js +24 -126
- package/dist/Runtimes.js +107 -0
- package/dist/StaticArea.js +1 -39
- package/dist/StaticAreaItem.js +58 -62
- package/dist/SystemCSSVars.js +10 -0
- package/dist/Theming.js +2 -1
- package/dist/UI5Element.js +426 -301
- package/dist/UI5ElementMetadata.js +173 -19
- package/dist/asset-registries/Icons.js +129 -14
- package/dist/asset-registries/Illustrations.js +30 -0
- package/dist/asset-registries/LocaleData.js +99 -65
- package/dist/asset-registries/Themes.js +23 -32
- package/dist/asset-registries/i18n.js +72 -30
- package/dist/assets-meta/IconCollectionsAlias.js +18 -0
- package/dist/config/AnimationMode.js +11 -1
- package/dist/config/Language.js +58 -2
- package/dist/config/Theme.js +14 -0
- package/dist/css/FontFace.css +45 -0
- package/dist/css/OverrideFontFace.css +32 -0
- package/dist/css/SystemCSSVars.css +17 -0
- package/dist/delegate/ItemNavigation.js +244 -171
- package/dist/delegate/ResizeHandler.js +78 -38
- package/dist/delegate/ScrollEnablement.js +49 -20
- package/dist/features/F6Navigation.js +106 -0
- package/dist/features/OpenUI5Support.js +42 -7
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/generated/VersionInfo.js +10 -0
- package/dist/generated/css/FontFace.css.js +5 -0
- package/dist/generated/css/OverrideFontFace.css.js +5 -0
- package/dist/generated/css/SystemCSSVars.css.js +5 -0
- package/dist/getSharedResource.js +30 -0
- package/dist/i18nBundle.js +58 -5
- package/dist/isLegacyBrowser.js +3 -0
- package/dist/locale/RTLAwareRegistry.js +14 -0
- package/dist/locale/applyDirection.js +17 -0
- package/dist/locale/directionChange.js +32 -0
- package/dist/locale/getEffectiveDir.js +28 -0
- package/dist/locale/getLocale.js +12 -2
- package/dist/locale/languageChange.js +22 -0
- package/dist/renderer/LitRenderer.js +26 -7
- package/dist/renderer/directives/style-map.js +72 -0
- package/dist/renderer/executeTemplate.js +17 -0
- package/dist/resources/bundle.esm.js +17 -109
- package/dist/resources/bundle.esm.js.map +1 -1
- package/dist/sap/base/Log.js +241 -0
- package/dist/sap/base/assert.js +8 -0
- package/dist/sap/base/security/URLListValidator.js +148 -0
- package/dist/sap/base/security/encodeCSS.js +14 -0
- package/dist/sap/base/security/encodeXML.js +23 -0
- package/dist/sap/base/security/sanitizeHTML.js +16 -0
- package/dist/sap/base/strings/toHex.js +8 -0
- package/dist/sap/base/util/now.js +7 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
- package/dist/test-resources/assets/Themes.js +10 -6
- package/dist/test-resources/elements/Parent.js +6 -2
- package/dist/test-resources/elements/WithStaticArea.js +2 -1
- package/dist/test-resources/pages/AllTestElements.html +3 -3
- package/dist/test-resources/pages/Configuration.html +0 -2
- package/dist/test-resources/pages/ConfigurationScript.html +1 -3
- package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
- package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
- package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
- package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
- package/dist/test-resources/pages/i18n.html +33 -0
- package/dist/test-resources/specs/ConfigurationChange.spec.js +11 -9
- package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
- package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
- package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
- package/dist/test-resources/specs/EventProvider.spec.js +63 -0
- package/dist/test-resources/specs/StaticArea.spec.js +56 -12
- package/dist/test-resources/specs/Theming.spec.js +12 -10
- package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
- package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
- package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
- package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
- package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
- package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
- package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
- package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
- package/dist/theming/CustomStyle.js +47 -6
- package/dist/theming/ThemeLoaded.js +22 -0
- package/dist/theming/applyTheme.js +13 -15
- package/dist/theming/getConstructableStyle.js +15 -10
- package/dist/theming/getEffectiveLinksHrefs.js +20 -0
- package/dist/theming/getEffectiveStyle.js +23 -8
- package/dist/theming/getStylesString.js +15 -0
- package/dist/theming/getThemeDesignerTheme.js +25 -5
- package/dist/theming/preloadLinks.js +23 -0
- package/dist/types/CSSColor.js +9 -0
- package/dist/types/CalendarType.js +1 -1
- package/dist/types/DataType.js +13 -1
- package/dist/types/Float.js +14 -0
- package/dist/types/Integer.js +4 -0
- package/dist/types/InvisibleMessageMode.js +30 -0
- package/dist/types/ItemNavigationBehavior.js +2 -7
- package/dist/types/NavigationMode.js +1 -0
- package/dist/types/PopupState.js +1 -1
- package/dist/types/ValueState.js +1 -1
- package/dist/updateShadowRoot.js +30 -0
- package/dist/util/AriaLabelHelper.js +41 -0
- package/dist/util/Caret.js +45 -0
- package/dist/util/ColorConversion.js +370 -0
- package/dist/util/FocusableElements.js +30 -11
- package/dist/util/HTMLSanitizer.js +7 -0
- package/dist/util/InvisibleMessage.js +60 -0
- package/dist/util/PopupUtils.js +93 -0
- package/dist/util/SlotsHelper.js +43 -0
- package/dist/util/TabbableElements.js +5 -1
- package/dist/util/arraysAreEqual.js +15 -0
- package/dist/util/clamp.js +12 -0
- package/dist/util/createLinkInHead.js +19 -0
- package/dist/util/debounce.js +17 -0
- package/dist/util/escapeRegex.js +10 -0
- package/dist/util/generateHighlightedMarkup.js +42 -0
- package/dist/util/getActiveElement.js +11 -0
- package/dist/util/getClassCopy.js +10 -0
- package/dist/util/getEffectiveContentDensity.js +5 -0
- package/dist/util/getSingletonElementInstance.js +13 -0
- package/dist/util/isElementInView.js +15 -0
- package/dist/util/isNodeHidden.js +1 -5
- package/dist/util/isNodeTabbable.js +4 -4
- package/dist/util/isValidPropertyName.js +9 -3
- package/dist/util/setToArray.js +10 -0
- package/hash.txt +1 -0
- package/index.js +1 -1
- package/lib/generate-asset-parameters/index.js +0 -1
- package/lib/generate-styles/index.js +18 -0
- package/lib/generate-version-info/index.js +27 -0
- package/package-scripts.js +39 -19
- package/package.json +19 -12
- package/src/AssetRegistry.js +8 -6
- package/src/Boot.js +59 -0
- package/src/CSP.js +59 -0
- package/src/CustomElementsRegistry.js +79 -7
- package/src/CustomElementsScope.js +108 -0
- package/src/DOMObserver.js +65 -0
- package/src/Device.js +69 -776
- package/src/EventProvider.js +38 -26
- package/src/FeaturesRegistry.js +4 -1
- package/src/FontFace.js +19 -62
- package/src/InitialConfiguration.js +43 -8
- package/src/Keys.js +121 -2
- package/src/ManagedStyles.js +83 -0
- package/src/MediaRange.js +109 -0
- package/src/PropertiesFileFormat.js +95 -0
- package/src/Render.js +175 -0
- package/src/RenderQueue.js +41 -17
- package/src/RenderScheduler.js +24 -126
- package/src/Runtimes.js +107 -0
- package/src/StaticArea.js +1 -39
- package/src/StaticAreaItem.js +58 -62
- package/src/SystemCSSVars.js +10 -0
- package/src/Theming.js +2 -1
- package/src/UI5Element.js +426 -301
- package/src/UI5ElementMetadata.js +173 -19
- package/src/asset-registries/Icons.js +129 -14
- package/src/asset-registries/Illustrations.js +30 -0
- package/src/asset-registries/LocaleData.js +99 -65
- package/src/asset-registries/Themes.js +23 -32
- package/src/asset-registries/i18n.js +72 -30
- package/src/assets-meta/IconCollectionsAlias.js +18 -0
- package/src/config/AnimationMode.js +11 -1
- package/src/config/Language.js +58 -2
- package/src/config/Theme.js +14 -0
- package/src/css/FontFace.css +45 -0
- package/src/css/OverrideFontFace.css +32 -0
- package/src/css/SystemCSSVars.css +17 -0
- package/src/delegate/ItemNavigation.js +244 -171
- package/src/delegate/ResizeHandler.js +78 -38
- package/src/delegate/ScrollEnablement.js +49 -20
- package/src/features/F6Navigation.js +106 -0
- package/src/features/OpenUI5Support.js +42 -7
- package/src/getSharedResource.js +30 -0
- package/src/i18nBundle.js +58 -5
- package/src/isLegacyBrowser.js +3 -0
- package/src/locale/RTLAwareRegistry.js +14 -0
- package/src/locale/applyDirection.js +17 -0
- package/src/locale/directionChange.js +32 -0
- package/src/locale/getEffectiveDir.js +28 -0
- package/src/locale/getLocale.js +12 -2
- package/src/locale/languageChange.js +22 -0
- package/src/renderer/LitRenderer.js +26 -7
- package/src/renderer/directives/style-map.js +72 -0
- package/src/renderer/executeTemplate.js +17 -0
- package/src/theming/CustomStyle.js +47 -6
- package/src/theming/ThemeLoaded.js +22 -0
- package/src/theming/applyTheme.js +13 -15
- package/src/theming/getConstructableStyle.js +15 -10
- package/src/theming/getEffectiveLinksHrefs.js +20 -0
- package/src/theming/getEffectiveStyle.js +23 -8
- package/src/theming/getStylesString.js +15 -0
- package/src/theming/getThemeDesignerTheme.js +25 -5
- package/src/theming/preloadLinks.js +23 -0
- package/src/types/CSSColor.js +9 -0
- package/src/types/CalendarType.js +1 -1
- package/src/types/DataType.js +13 -1
- package/src/types/Float.js +14 -0
- package/src/types/Integer.js +4 -0
- package/src/types/InvisibleMessageMode.js +30 -0
- package/src/types/ItemNavigationBehavior.js +2 -7
- package/src/types/NavigationMode.js +1 -0
- package/src/types/PopupState.js +1 -1
- package/src/types/ValueState.js +1 -1
- package/src/updateShadowRoot.js +30 -0
- package/src/util/AriaLabelHelper.js +41 -0
- package/src/util/Caret.js +45 -0
- package/src/util/ColorConversion.js +370 -0
- package/src/util/FocusableElements.js +30 -11
- package/src/util/HTMLSanitizer.js +7 -0
- package/src/util/InvisibleMessage.js +60 -0
- package/src/util/PopupUtils.js +93 -0
- package/src/util/SlotsHelper.js +43 -0
- package/src/util/TabbableElements.js +5 -1
- package/src/util/arraysAreEqual.js +15 -0
- package/src/util/clamp.js +12 -0
- package/src/util/createLinkInHead.js +19 -0
- package/src/util/debounce.js +17 -0
- package/src/util/escapeRegex.js +10 -0
- package/src/util/generateHighlightedMarkup.js +42 -0
- package/src/util/getActiveElement.js +11 -0
- package/src/util/getClassCopy.js +10 -0
- package/src/util/getEffectiveContentDensity.js +5 -0
- package/src/util/getSingletonElementInstance.js +13 -0
- package/src/util/isElementInView.js +15 -0
- package/src/util/isNodeHidden.js +1 -5
- package/src/util/isNodeTabbable.js +4 -4
- package/src/util/isValidPropertyName.js +9 -3
- package/src/util/setToArray.js +10 -0
- package/used-modules.txt +10 -0
- package/bundle.es5.js +0 -28
- package/dist/SVGIconRegistry.js +0 -60
- package/dist/boot.js +0 -32
- package/dist/compatibility/DOMObserver.js +0 -62
- package/dist/compatibility/patchNodeValue.js +0 -24
- package/dist/compatibility/whenPolyfillLoaded.js +0 -26
- package/dist/delegate/CustomResize.js +0 -78
- package/dist/delegate/NativeResize.js +0 -44
- package/dist/features/browsersupport/Edge.js +0 -6
- package/dist/features/browsersupport/IE11.js +0 -41
- package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/dist/renderer/ifDefined.js +0 -21
- package/dist/resources/bundle.es5.js +0 -212
- package/dist/resources/bundle.es5.js.map +0 -1
- package/dist/theming/CSSVarsPonyfill.js +0 -24
- package/dist/theming/adaptCSSForIE.js +0 -90
- package/dist/theming/createComponentStyleTag.js +0 -49
- package/dist/theming/createThemePropertiesStyleTag.js +0 -20
- package/dist/thirdparty/Array.from.js +0 -16
- package/dist/thirdparty/Array.prototype.fill.js +0 -44
- package/dist/thirdparty/Array.prototype.find.js +0 -46
- package/dist/thirdparty/Array.prototype.includes.js +0 -51
- package/dist/thirdparty/Element.prototype.closest.js +0 -11
- package/dist/thirdparty/Element.prototype.matches.js +0 -6
- package/dist/thirdparty/Map.prototype.keys.js +0 -9
- package/dist/thirdparty/Number.isInteger.js +0 -5
- package/dist/thirdparty/Number.isNaN.js +0 -1
- package/dist/thirdparty/Number.parseInt.js +0 -1
- package/dist/thirdparty/Object.assign.js +0 -31
- package/dist/thirdparty/Object.entries.js +0 -11
- package/dist/thirdparty/Symbol.js +0 -2
- package/dist/thirdparty/WeakSet.js +0 -27
- package/dist/thirdparty/es6-string-methods.js +0 -182
- package/dist/thirdparty/events-polyfills.js +0 -89
- package/dist/thirdparty/fetch.js +0 -1
- package/dist/thirdparty/template.js +0 -600
- package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
- package/dist/webcomponentsjs/LICENSE.md +0 -19
- package/dist/webcomponentsjs/README.md +0 -229
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
- package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
- package/dist/webcomponentsjs/package.json +0 -46
- package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
- package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
- package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
- package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
- package/src/SVGIconRegistry.js +0 -60
- package/src/boot.js +0 -32
- package/src/compatibility/DOMObserver.js +0 -62
- package/src/compatibility/patchNodeValue.js +0 -24
- package/src/compatibility/whenPolyfillLoaded.js +0 -26
- package/src/delegate/CustomResize.js +0 -78
- package/src/delegate/NativeResize.js +0 -44
- package/src/features/browsersupport/Edge.js +0 -6
- package/src/features/browsersupport/IE11.js +0 -41
- package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/src/renderer/ifDefined.js +0 -21
- package/src/theming/CSSVarsPonyfill.js +0 -24
- package/src/theming/adaptCSSForIE.js +0 -90
- package/src/theming/createComponentStyleTag.js +0 -49
- package/src/theming/createThemePropertiesStyleTag.js +0 -20
- package/src/thirdparty/Array.from.js +0 -16
- package/src/thirdparty/Array.prototype.fill.js +0 -44
- package/src/thirdparty/Array.prototype.find.js +0 -46
- package/src/thirdparty/Array.prototype.includes.js +0 -51
- package/src/thirdparty/Element.prototype.closest.js +0 -11
- package/src/thirdparty/Element.prototype.matches.js +0 -6
- package/src/thirdparty/Map.prototype.keys.js +0 -9
- package/src/thirdparty/Number.isInteger.js +0 -5
- package/src/thirdparty/Number.isNaN.js +0 -1
- package/src/thirdparty/Number.parseInt.js +0 -1
- package/src/thirdparty/Object.assign.js +0 -31
- package/src/thirdparty/Object.entries.js +0 -11
- package/src/thirdparty/Symbol.js +0 -2
- package/src/thirdparty/WeakSet.js +0 -27
- package/src/thirdparty/es6-string-methods.js +0 -182
- package/src/thirdparty/events-polyfills.js +0 -89
- package/src/thirdparty/fetch.js +0 -1
- package/src/thirdparty/template.js +0 -600
- package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
|
@@ -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 -
|
|
20
|
+
* @param style - the style content directly
|
|
21
|
+
* @deprecated
|
|
29
22
|
*/
|
|
30
|
-
const registerThemeProperties = (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
};
|
|
@@ -54,23 +42,25 @@ const getThemeProperties = async (packageName, themeName) => {
|
|
|
54
42
|
return themeStyles.get(`${packageName}_${DEFAULT_THEME}`);
|
|
55
43
|
}
|
|
56
44
|
|
|
57
|
-
const
|
|
45
|
+
const loader = loaders.get(`${packageName}/${themeName}`);
|
|
46
|
+
if (!loader) {
|
|
47
|
+
// no themes for package
|
|
48
|
+
console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let data;
|
|
52
|
+
try {
|
|
53
|
+
data = await loader(themeName);
|
|
54
|
+
} catch (e) {
|
|
55
|
+
console.error(packageName, e.message); /* eslint-disable-line */
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
58
|
const themeProps = data._ || data;
|
|
59
59
|
|
|
60
60
|
themeStyles.set(`${packageName}_${themeName}`, themeProps);
|
|
61
61
|
return themeProps;
|
|
62
62
|
};
|
|
63
63
|
|
|
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`);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return getFileExtension(url) === ".css" ? fetchTextOnce(url) : fetchJsonOnce(url);
|
|
72
|
-
};
|
|
73
|
-
|
|
74
64
|
const getRegisteredPackages = () => {
|
|
75
65
|
return registeredPackages;
|
|
76
66
|
};
|
|
@@ -80,6 +70,7 @@ const isThemeRegistered = theme => {
|
|
|
80
70
|
};
|
|
81
71
|
|
|
82
72
|
export {
|
|
73
|
+
registerThemePropertiesLoader,
|
|
83
74
|
registerThemeProperties,
|
|
84
75
|
getThemeProperties,
|
|
85
76
|
getRegisteredPackages,
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
import getLocale from "../locale/getLocale.js";
|
|
2
|
-
import {
|
|
2
|
+
import { attachLanguageChange } from "../locale/languageChange.js";
|
|
3
3
|
import normalizeLocale from "../locale/normalizeLocale.js";
|
|
4
4
|
import nextFallbackLocale from "../locale/nextFallbackLocale.js";
|
|
5
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
|
|
13
|
+
const bundlePromises = new Map();
|
|
14
|
+
const loaders = new Map();
|
|
9
15
|
|
|
10
16
|
/**
|
|
11
|
-
*
|
|
12
|
-
* @param {string} packageName
|
|
13
|
-
* @param {
|
|
14
|
-
* @
|
|
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
|
|
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 = (
|
|
31
|
-
|
|
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,39 +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
79
|
const language = getLocale().getLanguage();
|
|
80
|
+
const region = getLocale().getRegion();
|
|
81
|
+
let localeId = normalizeLocale(language + (region ? `-${region}` : ``));
|
|
53
82
|
|
|
54
|
-
|
|
55
|
-
while (!bundlesForPackage[localeId]) {
|
|
83
|
+
while (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {
|
|
56
84
|
localeId = nextFallbackLocale(localeId);
|
|
57
85
|
}
|
|
58
86
|
|
|
59
|
-
|
|
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)
|
|
60
91
|
return;
|
|
61
92
|
}
|
|
62
93
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (typeof bundleURL === "object") { // inlined from build
|
|
66
|
-
setI18nBundleData(packageName, bundleURL);
|
|
94
|
+
if (!_hasLoader(packageName, localeId)) {
|
|
95
|
+
_showAssetsWarningOnce(packageName);
|
|
67
96
|
return;
|
|
68
97
|
}
|
|
69
98
|
|
|
70
|
-
|
|
71
|
-
|
|
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
|
+
}
|
|
72
108
|
};
|
|
73
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
|
+
|
|
74
116
|
export {
|
|
117
|
+
registerI18nLoader,
|
|
75
118
|
fetchI18nBundle,
|
|
76
119
|
registerI18nBundle,
|
|
77
|
-
setI18nBundleData,
|
|
78
120
|
getI18nBundleData,
|
|
79
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
|
-
|
|
14
|
+
const setAnimationMode = newAnimationMode => {
|
|
15
|
+
if (Object.values(AnimationMode).includes(newAnimationMode)) {
|
|
16
|
+
animationMode = newAnimationMode;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
getAnimationMode,
|
|
22
|
+
setAnimationMode,
|
|
23
|
+
};
|
package/src/config/Language.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
|
-
import {
|
|
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
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 = () => {
|
|
6
16
|
if (language === undefined) {
|
|
7
17
|
language = getConfiguredLanguage();
|
|
@@ -9,4 +19,50 @@ const getLanguage = () => {
|
|
|
9
19
|
return language;
|
|
10
20
|
};
|
|
11
21
|
|
|
12
|
-
|
|
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
|
+
};
|
package/src/config/Theme.js
CHANGED
|
@@ -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,22 @@ 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`;
|
|
23
36
|
};
|
|
24
37
|
|
|
25
38
|
export {
|
|
26
39
|
getTheme,
|
|
27
40
|
setTheme,
|
|
41
|
+
isTheme,
|
|
28
42
|
};
|
|
@@ -0,0 +1,45 @@
|
|
|
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/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format("woff2"),
|
|
7
|
+
url(https://ui5.sap.com/sdk/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/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format("woff2"),
|
|
16
|
+
url(https://ui5.sap.com/sdk/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/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"),
|
|
26
|
+
url(https://ui5.sap.com/sdk/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/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2"),
|
|
35
|
+
url(https://ui5.sap.com/sdk/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: "72Black";
|
|
40
|
+
font-style: bold;
|
|
41
|
+
font-weight: 900;
|
|
42
|
+
src: local('72Black'),
|
|
43
|
+
url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format("woff2"),
|
|
44
|
+
url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff?ui5-webcomponents) format("woff");
|
|
45
|
+
}
|
|
@@ -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
|
+
}
|