@ui5/webcomponents-base 0.0.0-0fcda382e → 0.0.0-11d529e8a
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 +2 -0
- package/CHANGELOG.md +137 -0
- package/README.md +26 -1
- package/bundle.esm.js +17 -7
- package/dist/AssetRegistry.js +8 -6
- package/dist/Boot.js +43 -0
- package/dist/CustomElementsRegistry.js +24 -8
- package/dist/CustomElementsScope.js +108 -0
- package/dist/DOMObserver.js +65 -0
- package/dist/Device.js +58 -779
- package/dist/EventProvider.js +38 -26
- package/dist/FontFace.js +52 -7
- package/dist/InitialConfiguration.js +32 -8
- package/dist/Keys.js +89 -2
- package/dist/MediaRange.js +109 -0
- package/dist/PropertiesFileFormat.js +95 -0
- package/dist/Render.js +173 -0
- package/dist/RenderQueue.js +41 -17
- package/dist/RenderScheduler.js +24 -126
- package/dist/StaticArea.js +1 -39
- package/dist/StaticAreaItem.js +64 -62
- package/dist/SystemCSSVars.js +31 -0
- package/dist/Theming.js +2 -1
- package/dist/UI5Element.js +427 -299
- package/dist/UI5ElementMetadata.js +157 -19
- package/dist/asset-registries/Icons.js +118 -14
- package/dist/asset-registries/Illustrations.js +30 -0
- package/dist/asset-registries/LocaleData.js +90 -65
- package/dist/asset-registries/Themes.js +23 -32
- package/dist/asset-registries/i18n.js +72 -30
- package/dist/config/AnimationMode.js +11 -1
- package/dist/config/Language.js +58 -2
- package/dist/delegate/ItemNavigation.js +244 -171
- package/dist/delegate/ResizeHandler.js +78 -38
- package/dist/delegate/ScrollEnablement.js +49 -20
- package/dist/features/OpenUI5Support.js +42 -7
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/getSharedResource.js +30 -0
- package/dist/i18nBundle.js +27 -4
- 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 +21 -4
- 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/sanitizeHTML.js +16 -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 +35 -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 +7 -5
- 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 +9 -7
- 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 +28 -7
- package/dist/theming/ThemeLoaded.js +22 -0
- package/dist/theming/applyTheme.js +2 -5
- package/dist/theming/getConstructableStyle.js +15 -10
- package/dist/theming/getEffectiveStyle.js +23 -8
- package/dist/theming/getStylesString.js +13 -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 +26 -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 +25 -8
- package/dist/util/HTMLSanitizer.js +7 -0
- package/dist/util/InvisibleMessage.js +58 -0
- package/dist/util/PopupUtils.js +93 -0
- package/dist/util/SlotsHelper.js +43 -0
- package/dist/util/TabbableElements.js +1 -1
- package/dist/util/arraysAreEqual.js +15 -0
- package/dist/util/clamp.js +12 -0
- package/dist/util/debounce.js +17 -0
- package/dist/util/encodeCSS.js +24 -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/package-scripts.js +33 -18
- package/package.json +20 -11
- package/src/AssetRegistry.js +8 -6
- package/src/Boot.js +43 -0
- package/src/CustomElementsRegistry.js +24 -8
- package/src/CustomElementsScope.js +108 -0
- package/src/DOMObserver.js +65 -0
- package/src/Device.js +58 -779
- package/src/EventProvider.js +38 -26
- package/src/FontFace.js +52 -7
- package/src/InitialConfiguration.js +32 -8
- package/src/Keys.js +89 -2
- package/src/MediaRange.js +109 -0
- package/src/PropertiesFileFormat.js +95 -0
- package/src/Render.js +173 -0
- package/src/RenderQueue.js +41 -17
- package/src/RenderScheduler.js +24 -126
- package/src/StaticArea.js +1 -39
- package/src/StaticAreaItem.js +64 -62
- package/src/SystemCSSVars.js +31 -0
- package/src/Theming.js +2 -1
- package/src/UI5Element.js +427 -299
- package/src/UI5ElementMetadata.js +157 -19
- package/src/asset-registries/Icons.js +118 -14
- package/src/asset-registries/Illustrations.js +30 -0
- package/src/asset-registries/LocaleData.js +90 -65
- package/src/asset-registries/Themes.js +23 -32
- package/src/asset-registries/i18n.js +72 -30
- package/src/config/AnimationMode.js +11 -1
- package/src/config/Language.js +58 -2
- package/src/delegate/ItemNavigation.js +244 -171
- package/src/delegate/ResizeHandler.js +78 -38
- package/src/delegate/ScrollEnablement.js +49 -20
- package/src/features/OpenUI5Support.js +42 -7
- package/src/getSharedResource.js +30 -0
- package/src/i18nBundle.js +27 -4
- 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 +21 -4
- package/src/renderer/executeTemplate.js +17 -0
- package/src/theming/CustomStyle.js +28 -7
- package/src/theming/ThemeLoaded.js +22 -0
- package/src/theming/applyTheme.js +2 -5
- package/src/theming/getConstructableStyle.js +15 -10
- package/src/theming/getEffectiveStyle.js +23 -8
- package/src/theming/getStylesString.js +13 -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 +26 -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 +25 -8
- package/src/util/HTMLSanitizer.js +7 -0
- package/src/util/InvisibleMessage.js +58 -0
- package/src/util/PopupUtils.js +93 -0
- package/src/util/SlotsHelper.js +43 -0
- package/src/util/TabbableElements.js +1 -1
- package/src/util/arraysAreEqual.js +15 -0
- package/src/util/clamp.js +12 -0
- package/src/util/debounce.js +17 -0
- package/src/util/encodeCSS.js +24 -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 +7 -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/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/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,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
|
};
|
|
@@ -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/dist/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
|
+
};
|