@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.
- package/.eslintignore +3 -0
- package/CHANGELOG.md +314 -0
- package/README.md +53 -7
- package/bundle.esm.js +20 -20
- package/dist/AssetRegistry.js +8 -9
- package/dist/Boot.js +59 -0
- package/dist/CSP.js +59 -0
- package/dist/CustomElementsRegistry.js +60 -4
- package/dist/CustomElementsScope.js +20 -98
- package/dist/CustomElementsScopeUtils.js +108 -0
- package/dist/DOMObserver.js +65 -0
- package/dist/Device.js +71 -773
- package/dist/EventProvider.js +30 -26
- package/dist/FeaturesRegistry.js +4 -1
- package/dist/FontFace.js +7 -95
- package/dist/InitialConfiguration.js +37 -21
- package/dist/Keys.js +98 -0
- package/dist/ManagedStyles.js +83 -0
- package/dist/MediaRange.js +109 -0
- package/dist/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
- package/dist/Render.js +175 -0
- package/dist/RenderScheduler.js +16 -138
- package/dist/Runtimes.js +107 -0
- package/dist/StaticArea.js +1 -29
- package/dist/StaticAreaItem.js +58 -65
- package/dist/SystemCSSVars.js +4 -25
- package/dist/UI5Element.js +315 -382
- package/dist/UI5ElementMetadata.js +132 -17
- package/dist/asset-registries/Icons.js +117 -14
- package/dist/asset-registries/Illustrations.js +30 -0
- package/dist/asset-registries/LocaleData.js +97 -68
- package/dist/asset-registries/Themes.js +29 -35
- package/dist/asset-registries/i18n.js +62 -49
- package/dist/assets/bundle.esm.81ba431e.js +43 -0
- package/dist/assets-meta/IconCollectionsAlias.js +18 -0
- package/dist/config/Icons.js +52 -0
- package/dist/config/Language.js +18 -20
- package/dist/config/Theme.js +25 -0
- package/dist/css/BusyIndicator.css +80 -0
- package/dist/css/FontFace.css +75 -0
- package/dist/css/OverrideFontFace.css +32 -0
- package/dist/css/SystemCSSVars.css +17 -0
- package/dist/delegate/ItemNavigation.js +238 -201
- package/dist/delegate/ResizeHandler.js +78 -37
- package/dist/delegate/ScrollEnablement.js +49 -20
- package/dist/features/F6Navigation.js +110 -0
- package/dist/features/OpenUI5Enablement.js +119 -0
- package/dist/features/OpenUI5Support.js +41 -6
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/generated/VersionInfo.js +10 -0
- package/dist/generated/css/BusyIndicator.css.js +5 -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/i18nBundle.js +38 -4
- package/dist/locale/applyDirection.js +6 -4
- package/dist/locale/directionChange.js +32 -0
- package/dist/locale/getEffectiveDir.js +28 -0
- package/dist/locale/languageChange.js +1 -1
- package/dist/renderer/LitRenderer.js +39 -18
- package/dist/renderer/directives/style-map.js +72 -0
- package/dist/renderer/executeTemplate.js +19 -2
- 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/theming/CustomStyle.js +25 -5
- package/dist/theming/applyTheme.js +11 -16
- package/dist/theming/getConstructableStyle.js +7 -6
- package/dist/theming/getEffectiveLinksHrefs.js +27 -0
- package/dist/theming/getEffectiveStyle.js +24 -8
- package/dist/theming/getStylesString.js +4 -2
- 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 +4 -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/PopupState.js +1 -1
- package/dist/types/ValueState.js +1 -1
- package/dist/updateShadowRoot.js +29 -0
- package/dist/util/AriaLabelHelper.js +6 -8
- package/dist/util/Caret.js +32 -0
- package/dist/util/ColorConversion.js +398 -0
- package/dist/util/FocusableElements.js +22 -9
- package/dist/util/HTMLSanitizer.js +7 -0
- package/dist/util/InvisibleMessage.js +69 -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/getNormalizedTarget.js +16 -0
- package/dist/util/isDefaultSlotProvided.js +11 -0
- package/dist/util/isElementInView.js +15 -0
- package/dist/util/isNodeHidden.js +1 -1
- package/dist/util/isNodeTabbable.js +4 -4
- package/hash.txt +1 -0
- package/index.js +1 -1
- package/lib/generate-asset-parameters/index.js +8 -5
- package/lib/generate-styles/index.js +26 -0
- package/lib/generate-version-info/index.js +32 -0
- package/package-scripts.js +37 -28
- package/package.json +20 -13
- package/src/AssetRegistry.js +8 -9
- package/src/Boot.js +59 -0
- package/src/CSP.js +59 -0
- package/src/CustomElementsRegistry.js +60 -4
- package/src/CustomElementsScope.js +20 -98
- package/src/CustomElementsScopeUtils.js +108 -0
- package/src/DOMObserver.js +65 -0
- package/src/Device.js +71 -773
- package/src/EventProvider.js +30 -26
- package/src/FeaturesRegistry.js +4 -1
- package/src/FontFace.js +7 -95
- package/src/InitialConfiguration.js +37 -21
- package/src/Keys.js +98 -0
- package/src/ManagedStyles.js +83 -0
- package/src/MediaRange.js +109 -0
- package/src/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
- package/src/Render.js +175 -0
- package/src/RenderScheduler.js +16 -138
- package/src/Runtimes.js +107 -0
- package/src/StaticArea.js +1 -29
- package/src/StaticAreaItem.js +58 -65
- package/src/SystemCSSVars.js +4 -25
- package/src/UI5Element.js +315 -382
- package/src/UI5ElementMetadata.js +132 -17
- package/src/asset-registries/Icons.js +117 -14
- package/src/asset-registries/Illustrations.js +30 -0
- package/src/asset-registries/LocaleData.js +97 -68
- package/src/asset-registries/Themes.js +29 -35
- package/src/asset-registries/i18n.js +62 -49
- package/src/assets-meta/IconCollectionsAlias.js +18 -0
- package/src/config/Icons.js +52 -0
- package/src/config/Language.js +18 -20
- package/src/config/Theme.js +25 -0
- package/src/css/BusyIndicator.css +80 -0
- package/src/css/FontFace.css +75 -0
- package/src/css/OverrideFontFace.css +32 -0
- package/src/css/SystemCSSVars.css +17 -0
- package/src/delegate/ItemNavigation.js +238 -201
- package/src/delegate/ResizeHandler.js +78 -37
- package/src/delegate/ScrollEnablement.js +49 -20
- package/src/features/F6Navigation.js +110 -0
- package/src/features/OpenUI5Enablement.js +119 -0
- package/src/features/OpenUI5Support.js +41 -6
- package/src/i18nBundle.js +38 -4
- package/src/locale/applyDirection.js +6 -4
- package/src/locale/directionChange.js +32 -0
- package/src/locale/getEffectiveDir.js +28 -0
- package/src/locale/languageChange.js +1 -1
- package/src/renderer/LitRenderer.js +39 -18
- package/src/renderer/directives/style-map.js +72 -0
- package/src/renderer/executeTemplate.js +19 -2
- package/src/theming/CustomStyle.js +25 -5
- package/src/theming/applyTheme.js +11 -16
- package/src/theming/getConstructableStyle.js +7 -6
- package/src/theming/getEffectiveLinksHrefs.js +27 -0
- package/src/theming/getEffectiveStyle.js +24 -8
- package/src/theming/getStylesString.js +4 -2
- 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 +4 -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/PopupState.js +1 -1
- package/src/types/ValueState.js +1 -1
- package/src/updateShadowRoot.js +29 -0
- package/src/util/AriaLabelHelper.js +6 -8
- package/src/util/Caret.js +32 -0
- package/src/util/ColorConversion.js +398 -0
- package/src/util/FocusableElements.js +22 -9
- package/src/util/HTMLSanitizer.js +7 -0
- package/src/util/InvisibleMessage.js +69 -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/getNormalizedTarget.js +16 -0
- package/src/util/isDefaultSlotProvided.js +11 -0
- package/src/util/isElementInView.js +15 -0
- package/src/util/isNodeHidden.js +1 -1
- package/src/util/isNodeTabbable.js +4 -4
- package/used-modules.txt +10 -0
- package/bundle.es5.js +0 -28
- package/config/.eslintrc.js +0 -3
- package/config/rollup.config.js +0 -1
- package/dist/SVGIconRegistry.js +0 -73
- package/dist/boot.js +0 -34
- package/dist/compatibility/DOMObserver.js +0 -62
- package/dist/compatibility/patchNodeValue.js +0 -24
- package/dist/compatibility/whenPolyfillLoaded.js +0 -26
- package/dist/config/AssetsPath.js +0 -17
- package/dist/delegate/CustomResize.js +0 -78
- package/dist/delegate/NativeResize.js +0 -45
- package/dist/features/PropertiesFormatSupport.js +0 -8
- package/dist/features/browsersupport/Edge.js +0 -6
- package/dist/features/browsersupport/IE11.js +0 -42
- package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/dist/renderer/ifDefined.js +0 -21
- package/dist/renderer/scopeHTML.js +0 -32
- package/dist/resources/bundle.es5.js +0 -212
- package/dist/resources/bundle.es5.js.map +0 -1
- package/dist/resources/bundle.esm.js +0 -129
- package/dist/resources/bundle.esm.js.map +0 -1
- package/dist/test-resources/assets/Themes.js +0 -17
- package/dist/test-resources/elements/Child.js +0 -35
- package/dist/test-resources/elements/Generic.js +0 -84
- package/dist/test-resources/elements/GenericExt.js +0 -26
- package/dist/test-resources/elements/NoShadowDOM.js +0 -13
- package/dist/test-resources/elements/Parent.js +0 -37
- package/dist/test-resources/elements/WithStaticArea.js +0 -76
- package/dist/test-resources/pages/AllTestElements.html +0 -42
- package/dist/test-resources/pages/Configuration.html +0 -20
- package/dist/test-resources/pages/ConfigurationScript.html +0 -36
- package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
- package/dist/test-resources/pages/i18n.html +0 -40
- package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
- package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
- package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
- package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
- package/dist/test-resources/specs/StaticArea.spec.js +0 -34
- package/dist/test-resources/specs/Theming.spec.js +0 -31
- package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
- package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -96
- package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
- package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
- package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
- package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
- package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
- package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
- package/dist/theming/CSSVarsPonyfill.js +0 -68
- package/dist/theming/adaptCSSForIE.js +0 -95
- package/dist/theming/createComponentStyleTag.js +0 -54
- 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.parseFloat.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/util/EffectiveAssetPath.js +0 -27
- package/dist/util/encodeCSS.js +0 -24
- package/dist/util/findNodeOwner.js +0 -35
- package/dist/util/isSlot.js +0 -3
- 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 -73
- package/src/boot.js +0 -34
- package/src/compatibility/DOMObserver.js +0 -62
- package/src/compatibility/patchNodeValue.js +0 -24
- package/src/compatibility/whenPolyfillLoaded.js +0 -26
- package/src/config/AssetsPath.js +0 -17
- package/src/delegate/CustomResize.js +0 -78
- package/src/delegate/NativeResize.js +0 -45
- package/src/features/PropertiesFormatSupport.js +0 -8
- package/src/features/browsersupport/Edge.js +0 -6
- package/src/features/browsersupport/IE11.js +0 -42
- package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/src/renderer/ifDefined.js +0 -21
- package/src/renderer/scopeHTML.js +0 -32
- package/src/theming/CSSVarsPonyfill.js +0 -68
- package/src/theming/adaptCSSForIE.js +0 -95
- package/src/theming/createComponentStyleTag.js +0 -54
- 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.parseFloat.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
- package/src/util/EffectiveAssetPath.js +0 -27
- package/src/util/encodeCSS.js +0 -24
- package/src/util/findNodeOwner.js +0 -35
- package/src/util/isSlot.js +0 -3
|
@@ -1,65 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
let resizeObserver;
|
|
2
|
+
const observedElements = new Map();
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const getResizeObserver = () => {
|
|
5
|
+
if (!resizeObserver) {
|
|
6
|
+
resizeObserver = new window.ResizeObserver(entries => {
|
|
7
|
+
entries.forEach(entry => {
|
|
8
|
+
const callbacks = observedElements.get(entry.target);
|
|
9
|
+
callbacks.forEach(callback => callback());
|
|
10
|
+
});
|
|
11
|
+
});
|
|
8
12
|
}
|
|
13
|
+
return resizeObserver;
|
|
14
|
+
};
|
|
9
15
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
static attachListener(ref, callback) {
|
|
18
|
-
ResizeHandler.Implementation.attachListener.call(ResizeHandler.Implementation, ref, callback);
|
|
16
|
+
let observe = (element, callback) => {
|
|
17
|
+
const callbacks = observedElements.get(element) || [];
|
|
18
|
+
|
|
19
|
+
// if no callbacks have been added for this element - start observing it
|
|
20
|
+
if (!callbacks.length) {
|
|
21
|
+
getResizeObserver().observe(element);
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
// save the callbacks in an array
|
|
25
|
+
observedElements.set(element, [...callbacks, callback]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
let unobserve = (element, callback) => {
|
|
29
|
+
const callbacks = observedElements.get(element) || [];
|
|
30
|
+
if (callbacks.length === 0) {
|
|
31
|
+
return;
|
|
29
32
|
}
|
|
30
33
|
|
|
34
|
+
const filteredCallbacks = callbacks.filter(fn => fn !== callback);
|
|
35
|
+
if (filteredCallbacks.length === 0) {
|
|
36
|
+
getResizeObserver().unobserve(element);
|
|
37
|
+
observedElements.delete(element);
|
|
38
|
+
} else {
|
|
39
|
+
observedElements.set(element, filteredCallbacks);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
31
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Allows to register/deregister resize observers for a DOM element
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
47
|
+
* @class
|
|
48
|
+
*/
|
|
49
|
+
class ResizeHandler {
|
|
32
50
|
/**
|
|
33
51
|
* @static
|
|
34
52
|
* @public
|
|
35
|
-
* @param {*}
|
|
53
|
+
* @param {*} element UI5 Web Component or DOM Element to be observed
|
|
36
54
|
* @param {*} callback Callback to be executed
|
|
37
|
-
* @memberof ResizeHandler
|
|
38
55
|
*/
|
|
39
|
-
static register(
|
|
40
|
-
if (
|
|
41
|
-
|
|
56
|
+
static register(element, callback) {
|
|
57
|
+
if (element.isUI5Element) {
|
|
58
|
+
element = element.getDomRef();
|
|
42
59
|
}
|
|
43
60
|
|
|
44
|
-
|
|
61
|
+
if (element instanceof HTMLElement) {
|
|
62
|
+
observe(element, callback);
|
|
63
|
+
} else {
|
|
64
|
+
console.warn("Cannot register ResizeHandler for element", element); // eslint-disable-line
|
|
65
|
+
}
|
|
45
66
|
}
|
|
46
67
|
|
|
47
|
-
|
|
48
68
|
/**
|
|
49
69
|
* @static
|
|
50
70
|
* @public
|
|
51
|
-
* @param {*}
|
|
52
|
-
* @
|
|
71
|
+
* @param {*} element UI5 Web Component or DOM Element to be unobserved
|
|
72
|
+
* @param {*} callback Callback to be removed
|
|
53
73
|
*/
|
|
54
|
-
static deregister(
|
|
55
|
-
if (
|
|
56
|
-
|
|
74
|
+
static deregister(element, callback) {
|
|
75
|
+
if (element.isUI5Element) {
|
|
76
|
+
element = element.getDomRef();
|
|
57
77
|
}
|
|
58
78
|
|
|
59
|
-
|
|
79
|
+
if (element instanceof HTMLElement) {
|
|
80
|
+
unobserve(element, callback);
|
|
81
|
+
} else {
|
|
82
|
+
console.warn("Cannot deregister ResizeHandler for element", element); // eslint-disable-line
|
|
83
|
+
}
|
|
60
84
|
}
|
|
61
85
|
}
|
|
62
86
|
|
|
63
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Set a function to be executed whenever a DOM node needs to be observed for size change.
|
|
89
|
+
* @public
|
|
90
|
+
* @param fn
|
|
91
|
+
*/
|
|
92
|
+
const setResizeHandlerObserveFn = fn => {
|
|
93
|
+
observe = fn;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Set a function to be executed whenever a DOM node needs to no longer be observed for size changes
|
|
98
|
+
* @public
|
|
99
|
+
* @param fn
|
|
100
|
+
*/
|
|
101
|
+
const setResizeHandlerUnobserveFn = fn => {
|
|
102
|
+
unobserve = fn;
|
|
103
|
+
};
|
|
64
104
|
|
|
65
105
|
export default ResizeHandler;
|
|
106
|
+
export { setResizeHandlerObserveFn, setResizeHandlerUnobserveFn };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { supportsTouch } from "../Device.js";
|
|
2
2
|
import EventProvider from "../EventProvider.js";
|
|
3
3
|
import scroll from "../animations/scroll.js";
|
|
4
4
|
|
|
5
5
|
const scrollEventName = "scroll";
|
|
6
|
-
const touchEndEventName =
|
|
6
|
+
const touchEndEventName = supportsTouch() ? "touchend" : "mouseup";
|
|
7
7
|
|
|
8
8
|
class ScrollEnablement extends EventProvider {
|
|
9
9
|
constructor(containerComponent) {
|
|
@@ -13,7 +13,7 @@ class ScrollEnablement extends EventProvider {
|
|
|
13
13
|
this.mouseUp = this.ontouchend.bind(this);
|
|
14
14
|
this.touchStart = this.ontouchstart.bind(this);
|
|
15
15
|
|
|
16
|
-
this.
|
|
16
|
+
this.supportsTouch = supportsTouch();
|
|
17
17
|
|
|
18
18
|
// On Android devices touchmove is thrown one more time than neccessary (together with touchend)
|
|
19
19
|
// so we have to cache the previus coordinates in order to provide correct parameters in the
|
|
@@ -25,7 +25,7 @@ class ScrollEnablement extends EventProvider {
|
|
|
25
25
|
this.startX = 0;
|
|
26
26
|
this.startY = 0;
|
|
27
27
|
|
|
28
|
-
if (this.
|
|
28
|
+
if (this.supportsTouch) {
|
|
29
29
|
containerComponent.addEventListener("touchstart", this.touchStart, { passive: true });
|
|
30
30
|
containerComponent.addEventListener("touchmove", this.mouseMove, { passive: true });
|
|
31
31
|
containerComponent.addEventListener("touchend", this.mouseUp, { passive: true });
|
|
@@ -42,12 +42,41 @@ class ScrollEnablement extends EventProvider {
|
|
|
42
42
|
return this._container;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted
|
|
47
|
+
*
|
|
48
|
+
* @param left
|
|
49
|
+
* @param top
|
|
50
|
+
* @param retryCount
|
|
51
|
+
* @param retryInterval
|
|
52
|
+
* @returns {Promise<void>} resolved when scrolled successfully
|
|
53
|
+
*/
|
|
54
|
+
async scrollTo(left, top, retryCount = 0, retryInterval = 0) {
|
|
55
|
+
let containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
|
|
56
|
+
|
|
57
|
+
/* eslint-disable no-loop-func, no-await-in-loop */
|
|
58
|
+
while (!containerPainted && retryCount > 0) {
|
|
59
|
+
await new Promise(resolve => {
|
|
60
|
+
setTimeout(() => {
|
|
61
|
+
containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
|
|
62
|
+
retryCount--;
|
|
63
|
+
resolve();
|
|
64
|
+
}, retryInterval);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/* eslint-disable no-loop-func, no-await-in-loop */
|
|
68
|
+
|
|
46
69
|
this._container.scrollLeft = left;
|
|
47
70
|
this._container.scrollTop = top;
|
|
48
71
|
}
|
|
49
72
|
|
|
50
|
-
move(dx, dy) {
|
|
73
|
+
move(dx, dy, disableAnimation) {
|
|
74
|
+
if (disableAnimation) {
|
|
75
|
+
this._container.scrollLeft += dx;
|
|
76
|
+
this._container.scrollTop += dy;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
51
80
|
return scroll({
|
|
52
81
|
element: this._container,
|
|
53
82
|
dx,
|
|
@@ -65,17 +94,17 @@ class ScrollEnablement extends EventProvider {
|
|
|
65
94
|
|
|
66
95
|
_isTouchInside(touch) {
|
|
67
96
|
const rect = this._container.getBoundingClientRect();
|
|
68
|
-
const x = this.
|
|
69
|
-
const y = this.
|
|
97
|
+
const x = this.supportsTouch ? touch.clientX : touch.x;
|
|
98
|
+
const y = this.supportsTouch ? touch.clientY : touch.y;
|
|
70
99
|
|
|
71
100
|
return x >= rect.left && x <= rect.right
|
|
72
101
|
&& y >= rect.top && y <= rect.bottom;
|
|
73
102
|
}
|
|
74
103
|
|
|
75
104
|
ontouchstart(event) {
|
|
76
|
-
const touch = this.
|
|
105
|
+
const touch = this.supportsTouch ? event.touches[0] : null;
|
|
77
106
|
|
|
78
|
-
if (!this.
|
|
107
|
+
if (!this.supportsTouch) {
|
|
79
108
|
document.addEventListener("mouseup", this.mouseUp, { passive: true });
|
|
80
109
|
document.addEventListener("mousemove", this.mouseMove, { passive: true });
|
|
81
110
|
} else {
|
|
@@ -84,10 +113,10 @@ class ScrollEnablement extends EventProvider {
|
|
|
84
113
|
this.startY = touch.pageY;
|
|
85
114
|
}
|
|
86
115
|
|
|
87
|
-
this._prevDragX = this.
|
|
88
|
-
this._prevDragY = this.
|
|
116
|
+
this._prevDragX = this.supportsTouch ? touch.pageX : event.x;
|
|
117
|
+
this._prevDragY = this.supportsTouch ? touch.pageY : event.y;
|
|
89
118
|
|
|
90
|
-
this._canScroll = this._isTouchInside(this.
|
|
119
|
+
this._canScroll = this._isTouchInside(this.supportsTouch ? touch : event);
|
|
91
120
|
}
|
|
92
121
|
|
|
93
122
|
ontouchmove(event) {
|
|
@@ -96,10 +125,10 @@ class ScrollEnablement extends EventProvider {
|
|
|
96
125
|
}
|
|
97
126
|
|
|
98
127
|
const container = this._container;
|
|
99
|
-
const touch = this.
|
|
128
|
+
const touch = this.supportsTouch ? event.touches[0] : null;
|
|
100
129
|
|
|
101
|
-
const dragX = this.
|
|
102
|
-
const dragY = this.
|
|
130
|
+
const dragX = this.supportsTouch ? touch.pageX : event.x;
|
|
131
|
+
const dragY = this.supportsTouch ? touch.pageY : event.y;
|
|
103
132
|
|
|
104
133
|
container.scrollLeft += this._prevDragX - dragX;
|
|
105
134
|
container.scrollTop += this._prevDragY - dragY;
|
|
@@ -117,7 +146,7 @@ class ScrollEnablement extends EventProvider {
|
|
|
117
146
|
}
|
|
118
147
|
|
|
119
148
|
ontouchend(event) {
|
|
120
|
-
if (this.
|
|
149
|
+
if (this.supportsTouch) {
|
|
121
150
|
const deltaX = Math.abs(event.changedTouches[0].pageX - this.startX);
|
|
122
151
|
const deltaY = Math.abs(event.changedTouches[0].pageY - this.startY);
|
|
123
152
|
|
|
@@ -131,8 +160,8 @@ class ScrollEnablement extends EventProvider {
|
|
|
131
160
|
}
|
|
132
161
|
|
|
133
162
|
const container = this._container;
|
|
134
|
-
const dragX = this.
|
|
135
|
-
const dragY = this.
|
|
163
|
+
const dragX = this.supportsTouch ? event.changedTouches[0].pageX : event.x;
|
|
164
|
+
const dragY = this.supportsTouch ? event.changedTouches[0].pageY : event.y;
|
|
136
165
|
|
|
137
166
|
container.scrollLeft += this._prevDragX - dragX;
|
|
138
167
|
container.scrollTop += this._prevDragY - dragY;
|
|
@@ -149,7 +178,7 @@ class ScrollEnablement extends EventProvider {
|
|
|
149
178
|
this._prevDragX = dragX;
|
|
150
179
|
this._prevDragY = dragY;
|
|
151
180
|
|
|
152
|
-
if (!this.
|
|
181
|
+
if (!this.supportsTouch) {
|
|
153
182
|
document.removeEventListener("mousemove", this.mouseMove, { passive: true });
|
|
154
183
|
document.removeEventListener("mouseup", this.mouseUp);
|
|
155
184
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { registerFeature } from "../FeaturesRegistry.js";
|
|
2
|
+
import { isF6Next, isF6Previous } from "../Keys.js";
|
|
3
|
+
import { getFirstFocusableElement } from "../util/FocusableElements.js";
|
|
4
|
+
|
|
5
|
+
class F6Navigation {
|
|
6
|
+
init() {
|
|
7
|
+
this.keydownHandler = this._keydownHandler.bind(this);
|
|
8
|
+
this.attachEventListeners();
|
|
9
|
+
this.selectedGroup = null;
|
|
10
|
+
this.groups = [];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
attachEventListeners() {
|
|
14
|
+
document.addEventListener("keydown", this.keydownHandler);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async _keydownHandler(event) {
|
|
18
|
+
if (isF6Next(event)) {
|
|
19
|
+
this.updateGroups();
|
|
20
|
+
if (this.groups.length < 1) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
|
|
26
|
+
const nextIndex = this.groups.indexOf(this.selectedGroup);
|
|
27
|
+
let nextElement = null;
|
|
28
|
+
|
|
29
|
+
if (nextIndex > -1) {
|
|
30
|
+
if (nextIndex + 1 >= this.groups.length) {
|
|
31
|
+
nextElement = this.groups[0];
|
|
32
|
+
} else {
|
|
33
|
+
nextElement = this.groups[nextIndex + 1];
|
|
34
|
+
}
|
|
35
|
+
} else {
|
|
36
|
+
nextElement = this.groups[0];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const elementToFocus = await getFirstFocusableElement(nextElement.isUI5Element ? nextElement.getDomRef() : nextElement, true);
|
|
40
|
+
elementToFocus.focus();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (isF6Previous(event)) {
|
|
44
|
+
this.updateGroups();
|
|
45
|
+
if (this.groups.length < 1) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
|
|
51
|
+
const nextIndex = this.groups.indexOf(this.selectedGroup);
|
|
52
|
+
let nextElement = null;
|
|
53
|
+
|
|
54
|
+
if (nextIndex > -1) {
|
|
55
|
+
if (nextIndex - 1 < 0) {
|
|
56
|
+
nextElement = this.groups[this.groups.length - 1];
|
|
57
|
+
} else {
|
|
58
|
+
// Handle the situation where the first focusable element of two neighbor groups is the same
|
|
59
|
+
// For example:
|
|
60
|
+
// <ui5-flexible-column-layout>
|
|
61
|
+
// <ui5-list>
|
|
62
|
+
// <ui5-li>List Item</ui5-li>
|
|
63
|
+
// </ui5-list>
|
|
64
|
+
// </ui5-flexible-column-layout>
|
|
65
|
+
// Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)
|
|
66
|
+
|
|
67
|
+
const firstFocusable = await getFirstFocusableElement(this.groups[nextIndex - 1], true);
|
|
68
|
+
const shouldSkipParent = firstFocusable === await getFirstFocusableElement(this.groups[nextIndex], true);
|
|
69
|
+
|
|
70
|
+
nextElement = this.groups[shouldSkipParent ? nextIndex - 2 : nextIndex - 1];
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
nextElement = this.groups[this.groups.length - 1];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const elementToFocus = await getFirstFocusableElement(nextElement.isUI5Element ? nextElement.getDomRef() : nextElement, true);
|
|
77
|
+
elementToFocus.focus();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
removeEventListeners() {
|
|
82
|
+
document.removeEventListener("keydown", this.keydownHandler);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
updateGroups() {
|
|
86
|
+
this.setSelectedGroup(document.activeElement);
|
|
87
|
+
this.setGroups();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
setGroups() {
|
|
91
|
+
this.groups = Array.from(document.querySelectorAll("[data-sap-ui-fastnavgroup='true']")).filter(group => group.clientWidth && window.getComputedStyle(group).visibility !== "hidden");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
setSelectedGroup(element) {
|
|
95
|
+
while (element && element.getAttribute("data-sap-ui-fastnavgroup") !== "true" && element !== document.querySelector("html")) {
|
|
96
|
+
element = element.parentElement ? element.parentNode : element.parentNode.host;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
this.selectedGroup = element;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
destroy() {
|
|
103
|
+
this.removeEventListeners();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const F6HelperInstance = new F6Navigation();
|
|
108
|
+
registerFeature("F6Navigation", F6HelperInstance);
|
|
109
|
+
|
|
110
|
+
export default F6Navigation;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { registerFeature } from "../FeaturesRegistry.js";
|
|
2
|
+
import BusyIndicatorStyles from "../generated/css/BusyIndicator.css.js";
|
|
3
|
+
import merge from "../thirdparty/merge.js";
|
|
4
|
+
import {
|
|
5
|
+
isTabPrevious,
|
|
6
|
+
} from "../Keys.js";
|
|
7
|
+
|
|
8
|
+
const busyIndicatorMetadata = {
|
|
9
|
+
properties: {
|
|
10
|
+
__isBusy: {
|
|
11
|
+
type: Boolean,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const getBusyIndicatorStyles = () => {
|
|
17
|
+
return BusyIndicatorStyles;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const wrapTemplateResultInBusyMarkup = (html, host, templateResult) => {
|
|
21
|
+
if (host.isOpenUI5Component && host.__isBusy) {
|
|
22
|
+
templateResult = html`
|
|
23
|
+
<div class="busy-indicator-wrapper">
|
|
24
|
+
<span tabindex="0" busy-indicator-before-span @focusin=${host.__suppressFocusIn}></span>
|
|
25
|
+
${templateResult}
|
|
26
|
+
<div class="busy-indicator-overlay"></div>
|
|
27
|
+
<div busy-indicator
|
|
28
|
+
class="busy-indicator-busy-area"
|
|
29
|
+
tabindex="0"
|
|
30
|
+
role="progressbar"
|
|
31
|
+
@keydown=${host.__suppressFocusBack}
|
|
32
|
+
aria-valuemin="0"
|
|
33
|
+
aria-valuemax="100"
|
|
34
|
+
aria-valuetext="Busy">
|
|
35
|
+
<div>
|
|
36
|
+
<div class="busy-indicator-circle circle-animation-0"></div>
|
|
37
|
+
<div class="busy-indicator-circle circle-animation-1"></div>
|
|
38
|
+
<div class="busy-indicator-circle circle-animation-2"></div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>`;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return templateResult;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const enrichBusyIndicatorMetadata = UI5Element => {
|
|
48
|
+
UI5Element.metadata = merge(UI5Element.metadata, busyIndicatorMetadata);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const enrichBusyIndicatorMethods = UI5ElementPrototype => {
|
|
52
|
+
Object.defineProperties(UI5ElementPrototype, {
|
|
53
|
+
"__redirectFocus": { value: true, writable: true },
|
|
54
|
+
"__suppressFocusBack": {
|
|
55
|
+
get() {
|
|
56
|
+
const that = this;
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
handleEvent: e => {
|
|
60
|
+
if (isTabPrevious(e)) {
|
|
61
|
+
const beforeElem = that.shadowRoot.querySelector("[busy-indicator-before-span]");
|
|
62
|
+
that.__redirectFocus = false;
|
|
63
|
+
beforeElem.focus();
|
|
64
|
+
that.__redirectFocus = true;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
capture: true,
|
|
68
|
+
passive: false,
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
"isOpenUI5Component": { get: () => { return true; } },
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
UI5ElementPrototype.__suppressFocusIn = function handleFocusIn() {
|
|
76
|
+
const busyIndicator = this.shadowRoot.querySelector("[busy-indicator]");
|
|
77
|
+
if (busyIndicator && this.__redirectFocus) {
|
|
78
|
+
busyIndicator.focus();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
UI5ElementPrototype.getDomRef = function getDomRef() {
|
|
83
|
+
// If a component set _getRealDomRef to its children, use the return value of this function
|
|
84
|
+
if (typeof this._getRealDomRef === "function") {
|
|
85
|
+
return this._getRealDomRef();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!this.shadowRoot || this.shadowRoot.children.length === 0) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const children = [...this.shadowRoot.children].filter(child => !["link", "style"].includes(child.localName));
|
|
93
|
+
|
|
94
|
+
if (children.length !== 1) {
|
|
95
|
+
console.warn(`The shadow DOM for ${this.constructor.getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (this.__isBusy) {
|
|
99
|
+
return children[0].querySelector(".busy-indicator-wrapper > :not([busy-indicator-before-span]):not(.busy-indicator-overlay):not(.busy-indicator-busy-area)");
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return children[0];
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const enrichBusyIndicatorSettings = UI5Element => {
|
|
107
|
+
enrichBusyIndicatorMetadata(UI5Element);
|
|
108
|
+
enrichBusyIndicatorMethods(UI5Element.prototype);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const OpenUI5Enablement = {
|
|
112
|
+
enrichBusyIndicatorSettings,
|
|
113
|
+
wrapTemplateResultInBusyMarkup,
|
|
114
|
+
getBusyIndicatorStyles,
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export default OpenUI5Enablement;
|
|
118
|
+
|
|
119
|
+
registerFeature("OpenUI5Enablement", OpenUI5Enablement);
|
|
@@ -1,32 +1,41 @@
|
|
|
1
1
|
import { registerFeature } from "../FeaturesRegistry.js";
|
|
2
2
|
import { setTheme } from "../config/Theme.js";
|
|
3
|
+
import { getCurrentZIndex } from "../util/PopupUtils.js";
|
|
3
4
|
|
|
4
|
-
const
|
|
5
|
-
const
|
|
5
|
+
const getCore = () => {
|
|
6
|
+
const sap = window.sap;
|
|
7
|
+
const core = sap && sap.ui && typeof sap.ui.getCore === "function" && sap.ui.getCore();
|
|
8
|
+
return core;
|
|
9
|
+
};
|
|
6
10
|
|
|
7
11
|
const isLoaded = () => {
|
|
8
|
-
return !!
|
|
12
|
+
return !!getCore();
|
|
9
13
|
};
|
|
10
14
|
|
|
11
15
|
const init = () => {
|
|
16
|
+
const core = getCore();
|
|
12
17
|
if (!core) {
|
|
13
18
|
return Promise.resolve();
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
return new Promise(resolve => {
|
|
17
22
|
core.attachInit(() => {
|
|
18
|
-
sap.ui.require(["sap/ui/core/LocaleData"],
|
|
23
|
+
window.sap.ui.require(["sap/ui/core/LocaleData", "sap/ui/core/Popup"], (LocaleData, Popup) => {
|
|
24
|
+
Popup.setInitialZIndex(getCurrentZIndex());
|
|
25
|
+
resolve();
|
|
26
|
+
});
|
|
19
27
|
});
|
|
20
28
|
});
|
|
21
29
|
};
|
|
22
30
|
|
|
23
31
|
const getConfigurationSettingsObject = () => {
|
|
32
|
+
const core = getCore();
|
|
24
33
|
if (!core) {
|
|
25
34
|
return;
|
|
26
35
|
}
|
|
27
36
|
|
|
28
37
|
const config = core.getConfiguration();
|
|
29
|
-
const LocaleData = sap.ui.require("sap/ui/core/LocaleData");
|
|
38
|
+
const LocaleData = window.sap.ui.require("sap/ui/core/LocaleData");
|
|
30
39
|
|
|
31
40
|
return {
|
|
32
41
|
animationMode: config.getAnimationMode(),
|
|
@@ -41,16 +50,18 @@ const getConfigurationSettingsObject = () => {
|
|
|
41
50
|
};
|
|
42
51
|
|
|
43
52
|
const getLocaleDataObject = () => {
|
|
53
|
+
const core = getCore();
|
|
44
54
|
if (!core) {
|
|
45
55
|
return;
|
|
46
56
|
}
|
|
47
57
|
|
|
48
58
|
const config = core.getConfiguration();
|
|
49
|
-
const LocaleData = sap.ui.require("sap/ui/core/LocaleData");
|
|
59
|
+
const LocaleData = window.sap.ui.require("sap/ui/core/LocaleData");
|
|
50
60
|
return LocaleData.getInstance(config.getLocale())._get();
|
|
51
61
|
};
|
|
52
62
|
|
|
53
63
|
const listenForThemeChange = () => {
|
|
64
|
+
const core = getCore();
|
|
54
65
|
const config = core.getConfiguration();
|
|
55
66
|
core.attachThemeChanged(async () => {
|
|
56
67
|
await setTheme(config.getTheme());
|
|
@@ -58,6 +69,7 @@ const listenForThemeChange = () => {
|
|
|
58
69
|
};
|
|
59
70
|
|
|
60
71
|
const attachListeners = () => {
|
|
72
|
+
const core = getCore();
|
|
61
73
|
if (!core) {
|
|
62
74
|
return;
|
|
63
75
|
}
|
|
@@ -66,6 +78,7 @@ const attachListeners = () => {
|
|
|
66
78
|
};
|
|
67
79
|
|
|
68
80
|
const cssVariablesLoaded = () => {
|
|
81
|
+
const core = getCore();
|
|
69
82
|
if (!core) {
|
|
70
83
|
return;
|
|
71
84
|
}
|
|
@@ -78,6 +91,26 @@ const cssVariablesLoaded = () => {
|
|
|
78
91
|
return !!link.href.match(/\/css(-|_)variables\.css/);
|
|
79
92
|
};
|
|
80
93
|
|
|
94
|
+
const getNextZIndex = () => {
|
|
95
|
+
const core = getCore();
|
|
96
|
+
if (!core) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const Popup = window.sap.ui.require("sap/ui/core/Popup");
|
|
101
|
+
return Popup.getNextZIndex();
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const setInitialZIndex = () => {
|
|
105
|
+
const core = getCore();
|
|
106
|
+
if (!core) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const Popup = window.sap.ui.require("sap/ui/core/Popup");
|
|
111
|
+
Popup.setInitialZIndex(getCurrentZIndex());
|
|
112
|
+
};
|
|
113
|
+
|
|
81
114
|
const OpenUI5Support = {
|
|
82
115
|
isLoaded,
|
|
83
116
|
init,
|
|
@@ -85,6 +118,8 @@ const OpenUI5Support = {
|
|
|
85
118
|
getLocaleDataObject,
|
|
86
119
|
attachListeners,
|
|
87
120
|
cssVariablesLoaded,
|
|
121
|
+
getNextZIndex,
|
|
122
|
+
setInitialZIndex,
|
|
88
123
|
};
|
|
89
124
|
|
|
90
125
|
registerFeature("OpenUI5Support", OpenUI5Support);
|