@ui5/webcomponents-base 0.0.0-5f8ce9393 → 0.0.0-6cb3eb0db
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 +196 -0
- package/README.md +26 -1
- package/bundle.esm.js +18 -12
- package/dist/AssetRegistry.js +8 -6
- package/dist/Boot.js +43 -0
- package/dist/CustomElementsRegistry.js +39 -0
- 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 +35 -10
- package/dist/Keys.js +248 -0
- 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 -145
- package/dist/StaticArea.js +1 -39
- package/dist/StaticAreaItem.js +67 -50
- package/dist/SystemCSSVars.js +31 -0
- package/dist/Theming.js +3 -54
- package/dist/UI5Element.js +486 -318
- package/dist/UI5ElementMetadata.js +182 -19
- package/dist/asset-registries/Icons.js +118 -14
- package/dist/asset-registries/Illustrations.js +30 -0
- package/dist/asset-registries/LocaleData.js +97 -55
- package/dist/asset-registries/Themes.js +35 -32
- package/dist/asset-registries/i18n.js +80 -34
- package/dist/config/AnimationMode.js +11 -1
- package/dist/config/CalendarType.js +3 -7
- package/dist/config/Language.js +58 -2
- package/dist/config/Theme.js +2 -2
- package/dist/delegate/ItemNavigation.js +245 -172
- package/dist/delegate/ResizeHandler.js +78 -38
- package/dist/delegate/ScrollEnablement.js +101 -19
- package/dist/features/OpenUI5Support.js +57 -8
- package/dist/generated/AssetParameters.js +13 -0
- package/dist/getSharedResource.js +30 -0
- package/dist/i18nBundle.js +31 -10
- package/dist/isLegacyBrowser.js +3 -0
- package/dist/{Locale.js → locale/Locale.js} +0 -10
- 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 +41 -0
- package/dist/locale/languageChange.js +22 -0
- package/dist/locale/nextFallbackLocale.js +28 -0
- package/{src/util → dist/locale}/normalizeLocale.js +8 -31
- package/dist/renderer/LitRenderer.js +21 -4
- package/dist/renderer/executeTemplate.js +17 -0
- package/dist/resources/bundle.esm.js +20 -106
- 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 +11 -5
- package/dist/test-resources/elements/Generic.js +1 -0
- package/dist/test-resources/elements/Parent.js +7 -2
- package/dist/test-resources/elements/WithStaticArea.js +77 -0
- package/dist/test-resources/pages/AllTestElements.html +5 -5
- 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 +78 -0
- 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 +78 -0
- package/dist/theming/createThemePropertiesStyleTag.js +20 -0
- package/dist/theming/getConstructableStyle.js +30 -0
- package/dist/theming/getEffectiveStyle.js +30 -0
- package/dist/theming/getStylesString.js +13 -0
- package/dist/theming/getThemeDesignerTheme.js +67 -0
- package/dist/thirdparty/_merge.js +32 -0
- package/dist/thirdparty/isPlainObject.js +18 -0
- package/dist/thirdparty/merge.js +10 -0
- package/dist/types/CSSColor.js +9 -0
- package/{src/dates → dist/types}/CalendarType.js +2 -2
- 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 +2 -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/StringHelper.js +17 -2
- package/dist/util/TabbableElements.js +5 -2
- package/dist/util/arraysAreEqual.js +15 -0
- package/dist/util/clamp.js +12 -0
- package/dist/util/debounce.js +17 -0
- package/dist/util/detectNavigatorLanguage.js +3 -1
- package/dist/util/encodeCSS.js +24 -0
- package/dist/util/findNodeOwner.js +35 -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/getFileExtension.js +21 -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 +11 -2
- package/dist/util/setToArray.js +10 -0
- package/hash.txt +1 -0
- package/index.js +1 -1
- package/lib/generate-asset-parameters/index.js +22 -0
- package/package-scripts.js +37 -17
- package/package.json +20 -12
- package/src/AssetRegistry.js +8 -6
- package/src/Boot.js +43 -0
- package/src/CustomElementsRegistry.js +39 -0
- 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 +35 -10
- package/src/Keys.js +248 -0
- 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 -145
- package/src/StaticArea.js +1 -39
- package/src/StaticAreaItem.js +67 -50
- package/src/SystemCSSVars.js +31 -0
- package/src/Theming.js +3 -54
- package/src/UI5Element.js +486 -318
- package/src/UI5ElementMetadata.js +182 -19
- package/src/asset-registries/Icons.js +118 -14
- package/src/asset-registries/Illustrations.js +30 -0
- package/src/asset-registries/LocaleData.js +97 -55
- package/src/asset-registries/Themes.js +35 -32
- package/src/asset-registries/i18n.js +80 -34
- package/src/config/AnimationMode.js +11 -1
- package/src/config/CalendarType.js +3 -7
- package/src/config/Language.js +58 -2
- package/src/config/Theme.js +2 -2
- package/src/delegate/ItemNavigation.js +245 -172
- package/src/delegate/ResizeHandler.js +78 -38
- package/src/delegate/ScrollEnablement.js +101 -19
- package/src/features/OpenUI5Support.js +57 -8
- package/src/getSharedResource.js +30 -0
- package/src/i18nBundle.js +31 -10
- package/src/isLegacyBrowser.js +3 -0
- package/src/{Locale.js → locale/Locale.js} +0 -10
- 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 +41 -0
- package/src/locale/languageChange.js +22 -0
- package/src/locale/nextFallbackLocale.js +28 -0
- package/{dist/util → src/locale}/normalizeLocale.js +8 -31
- 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 +78 -0
- package/src/theming/createThemePropertiesStyleTag.js +20 -0
- package/src/theming/getConstructableStyle.js +30 -0
- package/src/theming/getEffectiveStyle.js +30 -0
- package/src/theming/getStylesString.js +13 -0
- package/src/theming/getThemeDesignerTheme.js +67 -0
- package/src/thirdparty/_merge.js +32 -0
- package/src/thirdparty/isPlainObject.js +18 -0
- package/src/thirdparty/merge.js +10 -0
- package/src/types/CSSColor.js +9 -0
- package/{dist/dates → src/types}/CalendarType.js +2 -2
- 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 +2 -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/StringHelper.js +17 -2
- package/src/util/TabbableElements.js +5 -2
- package/src/util/arraysAreEqual.js +15 -0
- package/src/util/clamp.js +12 -0
- package/src/util/debounce.js +17 -0
- package/src/util/detectNavigatorLanguage.js +3 -1
- package/src/util/encodeCSS.js +24 -0
- package/src/util/findNodeOwner.js +35 -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/getFileExtension.js +21 -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 +11 -2
- package/src/util/setToArray.js +10 -0
- package/used-modules.txt +7 -0
- package/bundle.es5.js +0 -28
- package/dist/Assets.js +0 -2
- package/dist/CSS.js +0 -48
- package/dist/FormatSettings.js +0 -31
- package/dist/LocaleProvider.js +0 -34
- package/dist/ResourceLoaderOverrides.js +0 -38
- package/dist/SVGIconRegistry.js +0 -54
- 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/dates/CalendarDate.js +0 -203
- package/dist/dates/CalendarUtils.js +0 -99
- package/dist/delegate/CustomResize.js +0 -78
- package/dist/delegate/NativeResize.js +0 -44
- package/dist/events/PseudoEvents.js +0 -58
- package/dist/features/browsersupport/Edge.js +0 -6
- package/dist/features/browsersupport/IE11.js +0 -41
- package/dist/features/calendar/Buddhist.js +0 -1
- package/dist/features/calendar/Islamic.js +0 -1
- package/dist/features/calendar/Japanese.js +0 -1
- package/dist/features/calendar/Persian.js +0 -1
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
- package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
- package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
- package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
- package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
- package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
- package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
- package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
- package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
- package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
- package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
- package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
- package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
- package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
- package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
- package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
- package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
- package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
- package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
- package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
- package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
- package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
- package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
- package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
- package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
- package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
- package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
- package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
- package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
- package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
- package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
- package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
- package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
- package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
- package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
- package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
- package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
- package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
- package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
- package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
- package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
- package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
- package/dist/json-imports/LocaleData.js +0 -171
- 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/shims/Core-shim.js +0 -52
- package/dist/shims/jquery-shim.js +0 -89
- package/dist/test-resources/dev-helpers/ExternalThemePresent.js +0 -3
- package/dist/theming/StyleInjection.js +0 -67
- 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/events-polyfills.js +0 -89
- package/dist/thirdparty/fetch.js +0 -1
- package/dist/thirdparty/template.js +0 -600
- package/dist/util/CSSTransformUtils.js +0 -90
- 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/Assets.js +0 -2
- package/src/CSS.js +0 -48
- package/src/FormatSettings.js +0 -31
- package/src/LocaleProvider.js +0 -34
- package/src/ResourceLoaderOverrides.js +0 -38
- package/src/SVGIconRegistry.js +0 -54
- 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/dates/CalendarDate.js +0 -203
- package/src/dates/CalendarUtils.js +0 -99
- package/src/delegate/CustomResize.js +0 -78
- package/src/delegate/NativeResize.js +0 -44
- package/src/events/PseudoEvents.js +0 -58
- package/src/features/browsersupport/Edge.js +0 -6
- package/src/features/browsersupport/IE11.js +0 -41
- package/src/features/calendar/Buddhist.js +0 -1
- package/src/features/calendar/Islamic.js +0 -1
- package/src/features/calendar/Japanese.js +0 -1
- package/src/features/calendar/Persian.js +0 -1
- package/src/json-imports/LocaleData.js +0 -171
- package/src/renderer/ifDefined.js +0 -21
- package/src/shims/Core-shim.js +0 -52
- package/src/shims/jquery-shim.js +0 -89
- package/src/theming/StyleInjection.js +0 -67
- 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/events-polyfills.js +0 -89
- package/src/thirdparty/fetch.js +0 -1
- package/src/thirdparty/template.js +0 -600
- package/src/util/CSSTransformUtils.js +0 -90
|
@@ -1,15 +1,37 @@
|
|
|
1
|
+
import { supportsTouch } from "../Device.js";
|
|
1
2
|
import EventProvider from "../EventProvider.js";
|
|
2
3
|
import scroll from "../animations/scroll.js";
|
|
3
4
|
|
|
4
5
|
const scrollEventName = "scroll";
|
|
5
|
-
const touchEndEventName = "touchend";
|
|
6
|
+
const touchEndEventName = supportsTouch() ? "touchend" : "mouseup";
|
|
6
7
|
|
|
7
8
|
class ScrollEnablement extends EventProvider {
|
|
8
9
|
constructor(containerComponent) {
|
|
9
10
|
super();
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
this.containerComponent = containerComponent;
|
|
12
|
+
this.mouseMove = this.ontouchmove.bind(this);
|
|
13
|
+
this.mouseUp = this.ontouchend.bind(this);
|
|
14
|
+
this.touchStart = this.ontouchstart.bind(this);
|
|
15
|
+
|
|
16
|
+
this.supportsTouch = supportsTouch();
|
|
17
|
+
|
|
18
|
+
// On Android devices touchmove is thrown one more time than neccessary (together with touchend)
|
|
19
|
+
// so we have to cache the previus coordinates in order to provide correct parameters in the
|
|
20
|
+
// event for Android
|
|
21
|
+
this.cachedValue = {};
|
|
22
|
+
|
|
23
|
+
// In components like Carousel you need to know if the user has clicked on something or swiped
|
|
24
|
+
// in order to throw the needed event or not
|
|
25
|
+
this.startX = 0;
|
|
26
|
+
this.startY = 0;
|
|
27
|
+
|
|
28
|
+
if (this.supportsTouch) {
|
|
29
|
+
containerComponent.addEventListener("touchstart", this.touchStart, { passive: true });
|
|
30
|
+
containerComponent.addEventListener("touchmove", this.mouseMove, { passive: true });
|
|
31
|
+
containerComponent.addEventListener("touchend", this.mouseUp, { passive: true });
|
|
32
|
+
} else {
|
|
33
|
+
containerComponent.addEventListener("mousedown", this.touchStart, { passive: true });
|
|
34
|
+
}
|
|
13
35
|
}
|
|
14
36
|
|
|
15
37
|
set scrollContainer(container) {
|
|
@@ -20,12 +42,41 @@ class ScrollEnablement extends EventProvider {
|
|
|
20
42
|
return this._container;
|
|
21
43
|
}
|
|
22
44
|
|
|
23
|
-
|
|
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
|
+
|
|
24
69
|
this._container.scrollLeft = left;
|
|
25
70
|
this._container.scrollTop = top;
|
|
26
71
|
}
|
|
27
72
|
|
|
28
|
-
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
|
+
|
|
29
80
|
return scroll({
|
|
30
81
|
element: this._container,
|
|
31
82
|
dx,
|
|
@@ -43,19 +94,29 @@ class ScrollEnablement extends EventProvider {
|
|
|
43
94
|
|
|
44
95
|
_isTouchInside(touch) {
|
|
45
96
|
const rect = this._container.getBoundingClientRect();
|
|
46
|
-
const x = touch.clientX;
|
|
47
|
-
const y = touch.clientY;
|
|
97
|
+
const x = this.supportsTouch ? touch.clientX : touch.x;
|
|
98
|
+
const y = this.supportsTouch ? touch.clientY : touch.y;
|
|
48
99
|
|
|
49
100
|
return x >= rect.left && x <= rect.right
|
|
50
101
|
&& y >= rect.top && y <= rect.bottom;
|
|
51
102
|
}
|
|
52
103
|
|
|
53
104
|
ontouchstart(event) {
|
|
54
|
-
const touch = event.touches[0];
|
|
55
|
-
|
|
56
|
-
this.
|
|
105
|
+
const touch = this.supportsTouch ? event.touches[0] : null;
|
|
106
|
+
|
|
107
|
+
if (!this.supportsTouch) {
|
|
108
|
+
document.addEventListener("mouseup", this.mouseUp, { passive: true });
|
|
109
|
+
document.addEventListener("mousemove", this.mouseMove, { passive: true });
|
|
110
|
+
} else {
|
|
111
|
+
// Needed only on mobile
|
|
112
|
+
this.startX = touch.pageX;
|
|
113
|
+
this.startY = touch.pageY;
|
|
114
|
+
}
|
|
57
115
|
|
|
58
|
-
this.
|
|
116
|
+
this._prevDragX = this.supportsTouch ? touch.pageX : event.x;
|
|
117
|
+
this._prevDragY = this.supportsTouch ? touch.pageY : event.y;
|
|
118
|
+
|
|
119
|
+
this._canScroll = this._isTouchInside(this.supportsTouch ? touch : event);
|
|
59
120
|
}
|
|
60
121
|
|
|
61
122
|
ontouchmove(event) {
|
|
@@ -64,10 +125,10 @@ class ScrollEnablement extends EventProvider {
|
|
|
64
125
|
}
|
|
65
126
|
|
|
66
127
|
const container = this._container;
|
|
67
|
-
const touch = event.touches[0];
|
|
128
|
+
const touch = this.supportsTouch ? event.touches[0] : null;
|
|
68
129
|
|
|
69
|
-
const dragX = touch.pageX;
|
|
70
|
-
const dragY = touch.pageY;
|
|
130
|
+
const dragX = this.supportsTouch ? touch.pageX : event.x;
|
|
131
|
+
const dragY = this.supportsTouch ? touch.pageY : event.y;
|
|
71
132
|
|
|
72
133
|
container.scrollLeft += this._prevDragX - dragX;
|
|
73
134
|
container.scrollTop += this._prevDragY - dragY;
|
|
@@ -77,29 +138,50 @@ class ScrollEnablement extends EventProvider {
|
|
|
77
138
|
isRight: dragX < this._prevDragX,
|
|
78
139
|
});
|
|
79
140
|
|
|
141
|
+
this.cachedValue.dragX = this._prevDragX;
|
|
142
|
+
this.cachedValue.dragY = this._prevDragY;
|
|
143
|
+
|
|
80
144
|
this._prevDragX = dragX;
|
|
81
145
|
this._prevDragY = dragY;
|
|
82
146
|
}
|
|
83
147
|
|
|
84
148
|
ontouchend(event) {
|
|
149
|
+
if (this.supportsTouch) {
|
|
150
|
+
const deltaX = Math.abs(event.changedTouches[0].pageX - this.startX);
|
|
151
|
+
const deltaY = Math.abs(event.changedTouches[0].pageY - this.startY);
|
|
152
|
+
|
|
153
|
+
if (deltaX < 10 && deltaY < 10) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
85
158
|
if (!this._canScroll) {
|
|
86
159
|
return;
|
|
87
160
|
}
|
|
88
161
|
|
|
89
162
|
const container = this._container;
|
|
90
|
-
const dragX = event.pageX;
|
|
91
|
-
const dragY = event.pageY;
|
|
163
|
+
const dragX = this.supportsTouch ? event.changedTouches[0].pageX : event.x;
|
|
164
|
+
const dragY = this.supportsTouch ? event.changedTouches[0].pageY : event.y;
|
|
92
165
|
|
|
93
166
|
container.scrollLeft += this._prevDragX - dragX;
|
|
94
167
|
container.scrollTop += this._prevDragY - dragY;
|
|
95
168
|
|
|
169
|
+
const useCachedValues = dragX === this._prevDragX;
|
|
170
|
+
const _dragX = useCachedValues ? this.cachedValue.dragX : dragX;
|
|
171
|
+
// const _dragY = useCachedValues ? this.cachedValue.dragY : dragY; add if needed
|
|
172
|
+
|
|
96
173
|
this.fireEvent(touchEndEventName, {
|
|
97
|
-
isLeft:
|
|
98
|
-
isRight:
|
|
174
|
+
isLeft: _dragX < this._prevDragX,
|
|
175
|
+
isRight: _dragX > this._prevDragX,
|
|
99
176
|
});
|
|
100
177
|
|
|
101
178
|
this._prevDragX = dragX;
|
|
102
179
|
this._prevDragY = dragY;
|
|
180
|
+
|
|
181
|
+
if (!this.supportsTouch) {
|
|
182
|
+
document.removeEventListener("mousemove", this.mouseMove, { passive: true });
|
|
183
|
+
document.removeEventListener("mouseup", this.mouseUp);
|
|
184
|
+
}
|
|
103
185
|
}
|
|
104
186
|
}
|
|
105
187
|
|
|
@@ -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(),
|
|
@@ -35,22 +44,24 @@ const getConfigurationSettingsObject = () => {
|
|
|
35
44
|
rtl: config.getRTL(),
|
|
36
45
|
calendarType: config.getCalendarType(),
|
|
37
46
|
formatSettings: {
|
|
38
|
-
firstDayOfWeek: LocaleData.getInstance(config.getLocale()).getFirstDayOfWeek(),
|
|
47
|
+
firstDayOfWeek: LocaleData ? LocaleData.getInstance(config.getLocale()).getFirstDayOfWeek() : undefined,
|
|
39
48
|
},
|
|
40
49
|
};
|
|
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");
|
|
50
|
-
return LocaleData.getInstance(config.getLocale()).
|
|
59
|
+
const LocaleData = window.sap.ui.require("sap/ui/core/LocaleData");
|
|
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
|
}
|
|
@@ -65,12 +77,49 @@ const attachListeners = () => {
|
|
|
65
77
|
listenForThemeChange();
|
|
66
78
|
};
|
|
67
79
|
|
|
80
|
+
const cssVariablesLoaded = () => {
|
|
81
|
+
const core = getCore();
|
|
82
|
+
if (!core) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const link = [...document.head.children].find(el => el.id === "sap-ui-theme-sap.ui.core"); // more reliable than querySelector early
|
|
87
|
+
if (!link) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return !!link.href.match(/\/css(-|_)variables\.css/);
|
|
92
|
+
};
|
|
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
|
+
|
|
68
114
|
const OpenUI5Support = {
|
|
69
115
|
isLoaded,
|
|
70
116
|
init,
|
|
71
117
|
getConfigurationSettingsObject,
|
|
72
118
|
getLocaleDataObject,
|
|
73
119
|
attachListeners,
|
|
120
|
+
cssVariablesLoaded,
|
|
121
|
+
getNextZIndex,
|
|
122
|
+
setInitialZIndex,
|
|
74
123
|
};
|
|
75
124
|
|
|
76
125
|
registerFeature("OpenUI5Support", OpenUI5Support);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import getSingletonElementInstance from "./util/getSingletonElementInstance.js";
|
|
2
|
+
|
|
3
|
+
const getSharedResourcesInstance = () => getSingletonElementInstance("ui5-shared-resources", document.head);
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Use this method to initialize/get resources that you would like to be shared among UI5 Web Components runtime instances.
|
|
7
|
+
* The data will be accessed via a singleton "ui5-shared-resources" HTML element in the "head" element of the page.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
* @param namespace Unique ID of the resource, may contain "." to denote hierarchy
|
|
11
|
+
* @param initialValue Object or primitive that will be used as an initial value if the resource does not exist
|
|
12
|
+
* @returns {*}
|
|
13
|
+
*/
|
|
14
|
+
const getSharedResource = (namespace, initialValue) => {
|
|
15
|
+
const parts = namespace.split(".");
|
|
16
|
+
let current = getSharedResourcesInstance();
|
|
17
|
+
|
|
18
|
+
for (let i = 0; i < parts.length; i++) {
|
|
19
|
+
const part = parts[i];
|
|
20
|
+
const lastPart = i === parts.length - 1;
|
|
21
|
+
if (!Object.prototype.hasOwnProperty.call(current, part)) {
|
|
22
|
+
current[part] = lastPart ? initialValue : {};
|
|
23
|
+
}
|
|
24
|
+
current = current[part];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return current;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default getSharedResource;
|
package/src/i18nBundle.js
CHANGED
|
@@ -1,24 +1,41 @@
|
|
|
1
|
-
import { fetchI18nBundle, getI18nBundleData } from "./asset-registries/i18n.js";
|
|
1
|
+
import { registerI18nLoader, fetchI18nBundle, getI18nBundleData } from "./asset-registries/i18n.js";
|
|
2
2
|
import formatMessage from "./util/formatMessage.js";
|
|
3
3
|
|
|
4
4
|
const I18nBundleInstances = new Map();
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @class
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
6
10
|
class I18nBundle {
|
|
7
11
|
constructor(packageName) {
|
|
8
12
|
this.packageName = packageName;
|
|
9
13
|
}
|
|
10
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Returns a text in the currently loaded language
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
* @param {Object|String} textObj key/defaultText pair or just the key
|
|
20
|
+
* @param params Values for the placeholders
|
|
21
|
+
* @returns {*}
|
|
22
|
+
*/
|
|
11
23
|
getText(textObj, ...params) {
|
|
12
|
-
if (
|
|
24
|
+
if (typeof textObj === "string") {
|
|
25
|
+
textObj = { key: textObj, defaultText: textObj };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (!textObj || !textObj.key) {
|
|
13
29
|
return "";
|
|
14
30
|
}
|
|
15
|
-
const bundle = getI18nBundleData(this.packageName);
|
|
16
31
|
|
|
17
|
-
|
|
18
|
-
|
|
32
|
+
const bundle = getI18nBundleData(this.packageName);
|
|
33
|
+
if (bundle && !bundle[textObj.key]) {
|
|
34
|
+
console.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`); // eslint-disable-line
|
|
19
35
|
}
|
|
36
|
+
const messageText = bundle && bundle[textObj.key] ? bundle[textObj.key] : (textObj.defaultText || textObj.key);
|
|
20
37
|
|
|
21
|
-
return formatMessage(
|
|
38
|
+
return formatMessage(messageText, params);
|
|
22
39
|
}
|
|
23
40
|
}
|
|
24
41
|
|
|
@@ -27,9 +44,13 @@ const getI18nBundle = packageName => {
|
|
|
27
44
|
return I18nBundleInstances.get(packageName);
|
|
28
45
|
}
|
|
29
46
|
|
|
30
|
-
const
|
|
31
|
-
I18nBundleInstances.set(packageName,
|
|
32
|
-
return
|
|
47
|
+
const i18nBundle = new I18nBundle(packageName);
|
|
48
|
+
I18nBundleInstances.set(packageName, i18nBundle);
|
|
49
|
+
return i18nBundle;
|
|
33
50
|
};
|
|
34
51
|
|
|
35
|
-
export {
|
|
52
|
+
export {
|
|
53
|
+
registerI18nLoader,
|
|
54
|
+
fetchI18nBundle,
|
|
55
|
+
getI18nBundle,
|
|
56
|
+
};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import getDesigntimePropertyAsArray from "./util/getDesigntimePropertyAsArray.js";
|
|
2
|
-
|
|
3
1
|
const rLocale = /^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?((?:-[0-9A-Z]{5,8}|-[0-9][0-9A-Z]{3})*)((?:-[0-9A-WYZ](?:-[0-9A-Z]{2,8})+)*)(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i;
|
|
4
2
|
|
|
5
3
|
class Locale {
|
|
@@ -88,14 +86,6 @@ class Locale {
|
|
|
88
86
|
}
|
|
89
87
|
return r.join("-");
|
|
90
88
|
}
|
|
91
|
-
|
|
92
|
-
static get _cldrLocales() {
|
|
93
|
-
return getDesigntimePropertyAsArray("$cldr-locales:ar,ar_EG,ar_SA,bg,br,ca,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,kk,ko,lt,lv,ms,nb,nl,nl_BE,nn,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$");
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
static get _coreI18nLocales() {
|
|
97
|
-
return getDesigntimePropertyAsArray("$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,ko,lt,lv,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$");
|
|
98
|
-
}
|
|
99
89
|
}
|
|
100
90
|
|
|
101
91
|
export default Locale;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { reRenderAllUI5Elements } from "../Render.js";
|
|
2
|
+
import { fireDirectionChange } from "./directionChange.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Re-renders all RTL-aware UI5 Elements.
|
|
6
|
+
* Call this method whenever you change the "dir" property anywhere in your HTML page
|
|
7
|
+
* Example: document.body.dir = "rtl"; applyDirection();
|
|
8
|
+
*
|
|
9
|
+
* @returns {Promise<void>}
|
|
10
|
+
*/
|
|
11
|
+
const applyDirection = async () => {
|
|
12
|
+
const listenersResults = fireDirectionChange();
|
|
13
|
+
await Promise.all(listenersResults);
|
|
14
|
+
await reRenderAllUI5Elements({ rtlAware: true });
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default applyDirection;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import EventProvider from "../EventProvider.js";
|
|
2
|
+
|
|
3
|
+
const eventProvider = new EventProvider();
|
|
4
|
+
const DIR_CHANGE = "directionChange";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Attach a callback that will be executed whenever the application calls the "applyDirection" function
|
|
8
|
+
* @public
|
|
9
|
+
* @param listener
|
|
10
|
+
*/
|
|
11
|
+
const attachDirectionChange = listener => {
|
|
12
|
+
eventProvider.attachEvent(DIR_CHANGE, listener);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Detach a callback that was passed with "attachDirectionChange"
|
|
17
|
+
* @public
|
|
18
|
+
* @param listener
|
|
19
|
+
*/
|
|
20
|
+
const detachDirectionChange = listener => {
|
|
21
|
+
eventProvider.detachEvent(DIR_CHANGE, listener);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const fireDirectionChange = () => {
|
|
25
|
+
return eventProvider.fireEvent(DIR_CHANGE);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
attachDirectionChange,
|
|
30
|
+
detachDirectionChange,
|
|
31
|
+
fireDirectionChange,
|
|
32
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getRTL } from "../config/RTL.js";
|
|
2
|
+
|
|
3
|
+
const GLOBAL_DIR_CSS_VAR = "--_ui5_dir";
|
|
4
|
+
|
|
5
|
+
const getEffectiveDir = element => {
|
|
6
|
+
const doc = window.document;
|
|
7
|
+
const dirValues = ["ltr", "rtl"]; // exclude "auto" and "" from all calculations
|
|
8
|
+
const locallyAppliedDir = getComputedStyle(element).getPropertyValue(GLOBAL_DIR_CSS_VAR);
|
|
9
|
+
|
|
10
|
+
// In that order, inspect the CSS Var (for modern browsers), the element itself, html and body (for IE fallback)
|
|
11
|
+
if (dirValues.includes(locallyAppliedDir)) {
|
|
12
|
+
return locallyAppliedDir;
|
|
13
|
+
}
|
|
14
|
+
if (dirValues.includes(element.dir)) {
|
|
15
|
+
return element.dir;
|
|
16
|
+
}
|
|
17
|
+
if (dirValues.includes(doc.documentElement.dir)) {
|
|
18
|
+
return doc.documentElement.dir;
|
|
19
|
+
}
|
|
20
|
+
if (dirValues.includes(doc.body.dir)) {
|
|
21
|
+
return doc.body.dir;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Finally, check the configuration for explicitly set RTL or language-implied RTL
|
|
25
|
+
return getRTL() ? "rtl" : undefined;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default getEffectiveDir;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import detectNavigatorLanguage from "../util/detectNavigatorLanguage.js";
|
|
2
|
+
import { getLanguage as getConfigLanguage } from "../config/Language.js";
|
|
3
|
+
import Locale from "./Locale.js";
|
|
4
|
+
|
|
5
|
+
const cache = new Map();
|
|
6
|
+
|
|
7
|
+
const getLocaleInstance = lang => {
|
|
8
|
+
if (!cache.has(lang)) {
|
|
9
|
+
cache.set(lang, new Locale(lang));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return cache.get(lang);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const convertToLocaleOrNull = lang => {
|
|
16
|
+
try {
|
|
17
|
+
if (lang && typeof lang === "string") {
|
|
18
|
+
return getLocaleInstance(lang);
|
|
19
|
+
}
|
|
20
|
+
} catch (e) {
|
|
21
|
+
// ignore
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Returns the locale based on the parameter or configured language Configuration#getLanguage
|
|
27
|
+
* If no language has been configured - a new locale based on browser language is returned
|
|
28
|
+
*/
|
|
29
|
+
const getLocale = lang => {
|
|
30
|
+
if (lang) {
|
|
31
|
+
return convertToLocaleOrNull(lang);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (getConfigLanguage()) {
|
|
35
|
+
return getLocaleInstance(getConfigLanguage());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return convertToLocaleOrNull(detectNavigatorLanguage());
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export default getLocale;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import EventProvider from "../EventProvider.js";
|
|
2
|
+
|
|
3
|
+
const eventProvider = new EventProvider();
|
|
4
|
+
const LANG_CHANGE = "languageChange";
|
|
5
|
+
|
|
6
|
+
const attachLanguageChange = listener => {
|
|
7
|
+
eventProvider.attachEvent(LANG_CHANGE, listener);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const detachLanguageChange = listener => {
|
|
11
|
+
eventProvider.detachEvent(LANG_CHANGE, listener);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const fireLanguageChange = lang => {
|
|
15
|
+
return eventProvider.fireEventAsync(LANG_CHANGE, lang);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
attachLanguageChange,
|
|
20
|
+
detachLanguageChange,
|
|
21
|
+
fireLanguageChange,
|
|
22
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DEFAULT_LOCALE } from "../generated/AssetParameters.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the next fallback locale for the given locale.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} locale Locale string in Java format (underscores) or null
|
|
7
|
+
* @returns {string} Next fallback Locale or "en" if no fallbacks found.
|
|
8
|
+
*/
|
|
9
|
+
const nextFallbackLocale = locale => {
|
|
10
|
+
if (!locale) {
|
|
11
|
+
return DEFAULT_LOCALE;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (locale === "zh_HK") {
|
|
15
|
+
return "zh_TW";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// if there are multiple segments (separated by underscores), remove the last one
|
|
19
|
+
const p = locale.lastIndexOf("_");
|
|
20
|
+
if (p >= 0) {
|
|
21
|
+
return locale.slice(0, p);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// for any language but the default, fallback to the default first before falling back to the 'raw' language (empty string)
|
|
25
|
+
return locale !== DEFAULT_LOCALE ? DEFAULT_LOCALE : "";
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default nextFallbackLocale;
|