@ui5/webcomponents-base 0.0.0-e463d2345 → 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 +4 -0
- package/CHANGELOG.md +437 -0
- package/README.md +53 -7
- package/bundle.esm.js +24 -20
- package/dist/AssetRegistry.js +8 -6
- package/dist/Boot.js +59 -0
- package/dist/CSP.js +59 -0
- package/dist/CustomElementsRegistry.js +95 -0
- package/dist/CustomElementsScope.js +30 -0
- package/dist/CustomElementsScopeUtils.js +108 -0
- package/dist/DOMObserver.js +65 -0
- package/dist/Device.js +71 -773
- package/dist/EventProvider.js +38 -26
- package/dist/FeaturesRegistry.js +4 -1
- package/dist/FontFace.js +20 -56
- package/dist/InitialConfiguration.js +64 -17
- package/dist/Keys.js +295 -0
- package/dist/ManagedStyles.js +83 -0
- package/dist/MediaRange.js +109 -0
- package/dist/PropertiesFileFormat.js +95 -0
- package/dist/Render.js +175 -0
- package/dist/RenderQueue.js +41 -17
- package/dist/RenderScheduler.js +24 -145
- package/dist/Runtimes.js +107 -0
- package/dist/StaticArea.js +2 -34
- package/dist/StaticAreaItem.js +69 -35
- package/dist/SystemCSSVars.js +10 -0
- package/dist/Theming.js +3 -44
- package/dist/UI5Element.js +497 -306
- package/dist/UI5ElementMetadata.js +198 -19
- package/dist/asset-registries/Icons.js +125 -14
- package/dist/asset-registries/Illustrations.js +30 -0
- package/dist/asset-registries/LocaleData.js +114 -51
- package/dist/asset-registries/Themes.js +37 -30
- package/dist/asset-registries/i18n.js +81 -33
- package/dist/assets/bundle.esm.81ba431e.js +43 -0
- package/dist/assets-meta/IconCollectionsAlias.js +18 -0
- package/dist/config/AnimationMode.js +16 -2
- package/dist/config/CalendarType.js +7 -7
- package/dist/config/FormatSettings.js +5 -1
- package/dist/config/Icons.js +52 -0
- package/dist/config/Language.js +62 -3
- package/dist/config/NoConflict.js +10 -3
- package/dist/config/Theme.js +32 -3
- 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 +249 -127
- package/dist/delegate/ResizeHandler.js +78 -38
- package/dist/delegate/ScrollEnablement.js +122 -14
- package/dist/features/F6Navigation.js +110 -0
- package/dist/features/OpenUI5Enablement.js +119 -0
- package/dist/features/OpenUI5Support.js +125 -0
- package/dist/generated/AssetParameters.js +13 -0
- 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/getSharedResource.js +30 -0
- package/dist/i18nBundle.js +62 -11
- package/{src → dist/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/dist/{util → locale}/normalizeLocale.js +8 -31
- package/dist/renderer/LitRenderer.js +44 -7
- package/dist/renderer/directives/style-map.js +72 -0
- package/dist/renderer/executeTemplate.js +34 -0
- 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 +47 -6
- package/dist/theming/ThemeLoaded.js +22 -0
- package/dist/theming/applyTheme.js +79 -0
- package/dist/theming/getConstructableStyle.js +30 -0
- package/dist/theming/getEffectiveLinksHrefs.js +27 -0
- package/dist/theming/getEffectiveStyle.js +39 -0
- package/dist/theming/getStylesString.js +15 -0
- package/dist/theming/getThemeDesignerTheme.js +87 -0
- package/dist/theming/preloadLinks.js +23 -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/dist/{dates → 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 +29 -0
- package/dist/util/AriaLabelHelper.js +39 -0
- package/dist/util/Caret.js +32 -0
- package/dist/util/ColorConversion.js +398 -0
- package/dist/util/FocusableElements.js +30 -11
- 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/StringHelper.js +17 -2
- package/dist/util/TabbableElements.js +9 -2
- 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/detectNavigatorLanguage.js +3 -1
- 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/getFileExtension.js +21 -0
- package/dist/util/getNormalizedTarget.js +16 -0
- package/dist/util/getSingletonElementInstance.js +13 -0
- package/dist/util/isDefaultSlotProvided.js +11 -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 +25 -0
- package/lib/generate-styles/index.js +26 -0
- package/lib/generate-version-info/index.js +32 -0
- package/package-scripts.js +41 -27
- package/package.json +22 -14
- package/src/AssetRegistry.js +8 -6
- package/src/Boot.js +59 -0
- package/src/CSP.js +59 -0
- package/src/CustomElementsRegistry.js +95 -0
- package/src/CustomElementsScope.js +30 -0
- package/src/CustomElementsScopeUtils.js +108 -0
- package/src/DOMObserver.js +65 -0
- package/src/Device.js +71 -773
- package/src/EventProvider.js +38 -26
- package/src/FeaturesRegistry.js +4 -1
- package/src/FontFace.js +20 -56
- package/src/InitialConfiguration.js +64 -17
- package/src/Keys.js +295 -0
- package/src/ManagedStyles.js +83 -0
- package/src/MediaRange.js +109 -0
- package/src/PropertiesFileFormat.js +95 -0
- package/src/Render.js +175 -0
- package/src/RenderQueue.js +41 -17
- package/src/RenderScheduler.js +24 -145
- package/src/Runtimes.js +107 -0
- package/src/StaticArea.js +2 -34
- package/src/StaticAreaItem.js +69 -35
- package/src/SystemCSSVars.js +10 -0
- package/src/Theming.js +3 -44
- package/src/UI5Element.js +497 -306
- package/src/UI5ElementMetadata.js +198 -19
- package/src/asset-registries/Icons.js +125 -14
- package/src/asset-registries/Illustrations.js +30 -0
- package/src/asset-registries/LocaleData.js +114 -51
- package/src/asset-registries/Themes.js +37 -30
- package/src/asset-registries/i18n.js +81 -33
- package/src/assets-meta/IconCollectionsAlias.js +18 -0
- package/src/config/AnimationMode.js +16 -2
- package/src/config/CalendarType.js +7 -7
- package/src/config/FormatSettings.js +5 -1
- package/src/config/Icons.js +52 -0
- package/src/config/Language.js +62 -3
- package/src/config/NoConflict.js +10 -3
- package/src/config/Theme.js +32 -3
- 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 +249 -127
- package/src/delegate/ResizeHandler.js +78 -38
- package/src/delegate/ScrollEnablement.js +122 -14
- package/src/features/F6Navigation.js +110 -0
- package/src/features/OpenUI5Enablement.js +119 -0
- package/src/features/OpenUI5Support.js +125 -0
- package/src/getSharedResource.js +30 -0
- package/src/i18nBundle.js +62 -11
- package/{dist → src/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/src/{util → locale}/normalizeLocale.js +8 -31
- package/src/renderer/LitRenderer.js +44 -7
- package/src/renderer/directives/style-map.js +72 -0
- package/src/renderer/executeTemplate.js +34 -0
- package/src/theming/CustomStyle.js +47 -6
- package/src/theming/ThemeLoaded.js +22 -0
- package/src/theming/applyTheme.js +79 -0
- package/src/theming/getConstructableStyle.js +30 -0
- package/src/theming/getEffectiveLinksHrefs.js +27 -0
- package/src/theming/getEffectiveStyle.js +39 -0
- package/src/theming/getStylesString.js +15 -0
- package/src/theming/getThemeDesignerTheme.js +87 -0
- package/src/theming/preloadLinks.js +23 -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/src/{dates → 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 +29 -0
- package/src/util/AriaLabelHelper.js +39 -0
- package/src/util/Caret.js +32 -0
- package/src/util/ColorConversion.js +398 -0
- package/src/util/FocusableElements.js +30 -11
- 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/StringHelper.js +17 -2
- package/src/util/TabbableElements.js +9 -2
- 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/detectNavigatorLanguage.js +3 -1
- 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/getFileExtension.js +21 -0
- package/src/util/getNormalizedTarget.js +16 -0
- package/src/util/getSingletonElementInstance.js +13 -0
- package/src/util/isDefaultSlotProvided.js +11 -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 +10 -0
- package/bundle.es5.js +0 -28
- package/config/.eslintrc.js +0 -3
- package/config/rollup.config.js +0 -1
- 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 -25
- 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 -12643
- package/dist/resources/bundle.es5.js.map +0 -1
- package/dist/resources/bundle.esm.js +0 -7450
- package/dist/resources/bundle.esm.js.map +0 -1
- package/dist/shims/Core-shim.js +0 -52
- package/dist/shims/jquery-shim.js +0 -89
- package/dist/test-resources/assets/Themes.js +0 -11
- package/dist/test-resources/elements/Child.js +0 -35
- package/dist/test-resources/elements/Generic.js +0 -83
- 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 -36
- 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/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/Theming.spec.js +0 -31
- package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
- package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -93
- 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/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 -25
- 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
|
@@ -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,35 +1,86 @@
|
|
|
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
|
+
let customGetI18nBundle;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @class
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
6
12
|
class I18nBundle {
|
|
7
13
|
constructor(packageName) {
|
|
8
14
|
this.packageName = packageName;
|
|
9
15
|
}
|
|
10
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Returns a text in the currently loaded language
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
* @param {Object|String} textObj key/defaultText pair or just the key
|
|
22
|
+
* @param params Values for the placeholders
|
|
23
|
+
* @returns {*}
|
|
24
|
+
*/
|
|
11
25
|
getText(textObj, ...params) {
|
|
12
|
-
if (
|
|
26
|
+
if (typeof textObj === "string") {
|
|
27
|
+
textObj = { key: textObj, defaultText: textObj };
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!textObj || !textObj.key) {
|
|
13
31
|
return "";
|
|
14
32
|
}
|
|
15
|
-
const bundle = getI18nBundleData(this.packageName);
|
|
16
33
|
|
|
17
|
-
|
|
18
|
-
|
|
34
|
+
const bundle = getI18nBundleData(this.packageName);
|
|
35
|
+
if (bundle && !bundle[textObj.key]) {
|
|
36
|
+
console.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`); // eslint-disable-line
|
|
19
37
|
}
|
|
38
|
+
const messageText = bundle && bundle[textObj.key] ? bundle[textObj.key] : (textObj.defaultText || textObj.key);
|
|
20
39
|
|
|
21
|
-
return formatMessage(
|
|
40
|
+
return formatMessage(messageText, params);
|
|
22
41
|
}
|
|
23
42
|
}
|
|
24
43
|
|
|
25
|
-
const
|
|
44
|
+
const getI18nBundleSync = packageName => {
|
|
26
45
|
if (I18nBundleInstances.has(packageName)) {
|
|
27
46
|
return I18nBundleInstances.get(packageName);
|
|
28
47
|
}
|
|
29
48
|
|
|
30
|
-
const
|
|
31
|
-
I18nBundleInstances.set(packageName,
|
|
32
|
-
return
|
|
49
|
+
const i18nBundle = new I18nBundle(packageName);
|
|
50
|
+
I18nBundleInstances.set(packageName, i18nBundle);
|
|
51
|
+
return i18nBundle;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Allows developers to provide a custom getI18nBundle implementation
|
|
56
|
+
* If this function is called, the custom implementation will be used for all components and will completely
|
|
57
|
+
* replace the default implementation.
|
|
58
|
+
*
|
|
59
|
+
* @public
|
|
60
|
+
* @param customGet the function to use instead of the standard getI18nBundle implementation
|
|
61
|
+
*/
|
|
62
|
+
const registerCustomI18nBundleGetter = customGet => {
|
|
63
|
+
customGetI18nBundle = customGet;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Fetches and returns the I18nBundle instance for the given package
|
|
68
|
+
*
|
|
69
|
+
* @public
|
|
70
|
+
* @param packageName
|
|
71
|
+
* @returns {Promise<I18nBundle>}
|
|
72
|
+
*/
|
|
73
|
+
const getI18nBundle = async packageName => {
|
|
74
|
+
if (customGetI18nBundle) {
|
|
75
|
+
return customGetI18nBundle(packageName);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
await fetchI18nBundle(packageName);
|
|
79
|
+
return getI18nBundleSync(packageName);
|
|
33
80
|
};
|
|
34
81
|
|
|
35
|
-
export {
|
|
82
|
+
export {
|
|
83
|
+
registerI18nLoader,
|
|
84
|
+
getI18nBundle,
|
|
85
|
+
registerCustomI18nBundleGetter,
|
|
86
|
+
};
|
|
@@ -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;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { DEFAULT_LOCALE } from "../generated/AssetParameters.js";
|
|
2
|
+
|
|
1
3
|
const localeRegEX = /^((?:[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;
|
|
2
4
|
const SAPSupportabilityLocales = /(?:^|-)(saptrc|sappsd)(?:-|$)/i;
|
|
3
5
|
|
|
@@ -12,11 +14,15 @@ const M_ISO639_NEW_TO_OLD = {
|
|
|
12
14
|
/**
|
|
13
15
|
* Normalizes the given locale in BCP-47 syntax.
|
|
14
16
|
* @param {string} locale locale to normalize
|
|
15
|
-
* @returns {string} Normalized locale
|
|
17
|
+
* @returns {string} Normalized locale, "undefined" if the locale can't be normalized or the default locale, if no locale provided.
|
|
16
18
|
*/
|
|
17
19
|
const normalizeLocale = locale => {
|
|
18
20
|
let m;
|
|
19
21
|
|
|
22
|
+
if (!locale) {
|
|
23
|
+
return DEFAULT_LOCALE;
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
if (typeof locale === "string" && (m = localeRegEX.exec(locale.replace(/_/g, "-")))) {/* eslint-disable-line */
|
|
21
27
|
let language = m[1].toLowerCase();
|
|
22
28
|
let region = m[3] ? m[3].toUpperCase() : undefined;
|
|
@@ -45,33 +51,4 @@ const normalizeLocale = locale => {
|
|
|
45
51
|
}
|
|
46
52
|
};
|
|
47
53
|
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Calculates the next fallback locale for the given locale.
|
|
51
|
-
*
|
|
52
|
-
* @param {string} locale Locale string in Java format (underscores) or null
|
|
53
|
-
* @returns {string|null} Next fallback Locale or null if there is no more fallback
|
|
54
|
-
*/
|
|
55
|
-
const nextFallbackLocale = locale => {
|
|
56
|
-
if (!locale) {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (locale === "zh_HK") {
|
|
61
|
-
return "zh_TW";
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// if there are multiple segments (separated by underscores), remove the last one
|
|
65
|
-
const p = locale.lastIndexOf("_");
|
|
66
|
-
if (p >= 0) {
|
|
67
|
-
return locale.slice(0, p);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// for any language but 'en', fallback to 'en' first before falling back to the 'raw' language (empty string)
|
|
71
|
-
return locale !== "en" ? "en" : "";
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export {
|
|
75
|
-
normalizeLocale,
|
|
76
|
-
nextFallbackLocale,
|
|
77
|
-
};
|
|
54
|
+
export default normalizeLocale;
|
|
@@ -1,15 +1,52 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
render,
|
|
3
|
+
html,
|
|
4
|
+
svg,
|
|
5
|
+
} from "lit-html";
|
|
6
|
+
import { getFeature } from "../FeaturesRegistry.js";
|
|
2
7
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
8
|
+
const effectiveHtml = (...args) => {
|
|
9
|
+
const LitStatic = getFeature("LitStatic");
|
|
10
|
+
const fn = LitStatic ? LitStatic.html : html;
|
|
11
|
+
return fn(...args);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const effectiveSvg = (...args) => {
|
|
15
|
+
const LitStatic = getFeature("LitStatic");
|
|
16
|
+
const fn = LitStatic ? LitStatic.svg : svg;
|
|
17
|
+
return fn(...args);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const litRender = (templateResult, domNode, styleStrOrHrefsArr, forStaticArea, { host } = {}) => {
|
|
21
|
+
const OpenUI5Enablement = getFeature("OpenUI5Enablement");
|
|
22
|
+
if (OpenUI5Enablement && !forStaticArea) {
|
|
23
|
+
templateResult = OpenUI5Enablement.wrapTemplateResultInBusyMarkup(effectiveHtml, host, templateResult);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (typeof styleStrOrHrefsArr === "string") {
|
|
27
|
+
templateResult = effectiveHtml`<style>${styleStrOrHrefsArr}</style>${templateResult}`;
|
|
28
|
+
} else if (Array.isArray(styleStrOrHrefsArr) && styleStrOrHrefsArr.length) {
|
|
29
|
+
templateResult = effectiveHtml`${styleStrOrHrefsArr.map(href => effectiveHtml`<link type="text/css" rel="stylesheet" href="${href}">`)}${templateResult}`;
|
|
6
30
|
}
|
|
7
|
-
render(templateResult, domNode, {
|
|
31
|
+
render(templateResult, domNode, { host });
|
|
8
32
|
};
|
|
9
33
|
|
|
10
|
-
|
|
34
|
+
const scopeTag = (tag, tags, suffix) => {
|
|
35
|
+
const LitStatic = getFeature("LitStatic");
|
|
36
|
+
if (LitStatic) {
|
|
37
|
+
return LitStatic.unsafeStatic((tags || []).includes(tag) ? `${tag}-${suffix}` : tag);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
effectiveHtml as html,
|
|
43
|
+
effectiveSvg as svg,
|
|
44
|
+
};
|
|
45
|
+
export { scopeTag };
|
|
11
46
|
export { repeat } from "lit-html/directives/repeat.js";
|
|
12
47
|
export { classMap } from "lit-html/directives/class-map.js";
|
|
13
|
-
export { styleMap } from "
|
|
48
|
+
export { styleMap } from "./directives/style-map.js";
|
|
49
|
+
export { ifDefined } from "lit-html/directives/if-defined.js";
|
|
50
|
+
export { unsafeHTML } from "lit-html/directives/unsafe-html.js";
|
|
14
51
|
|
|
15
52
|
export default litRender;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2018 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This is the original style-map.js directive from lit-html 2 with the only difference that "render" is not called even for the first rendering (update is used instead)
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { noChange } from 'lit-html';
|
|
12
|
+
import { directive, Directive, PartType, } from 'lit-html/directive.js';
|
|
13
|
+
class StyleMapDirective extends Directive {
|
|
14
|
+
constructor(partInfo) {
|
|
15
|
+
var _a;
|
|
16
|
+
super(partInfo);
|
|
17
|
+
if (partInfo.type !== PartType.ATTRIBUTE ||
|
|
18
|
+
partInfo.name !== 'style' ||
|
|
19
|
+
((_a = partInfo.strings) === null || _a === void 0 ? void 0 : _a.length) > 2) {
|
|
20
|
+
throw new Error('The `styleMap` directive must be used in the `style` attribute ' +
|
|
21
|
+
'and must be the only part in the attribute.');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
render(styleInfo) {
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
update(part, [styleInfo]) {
|
|
28
|
+
const { style } = part.element;
|
|
29
|
+
if (this._previousStyleProperties === undefined) {
|
|
30
|
+
this._previousStyleProperties = new Set();
|
|
31
|
+
for (const name in styleInfo) {
|
|
32
|
+
this._previousStyleProperties.add(name);
|
|
33
|
+
}
|
|
34
|
+
// return this.render(styleInfo);
|
|
35
|
+
}
|
|
36
|
+
// Remove old properties that no longer exist in styleInfo
|
|
37
|
+
// We use forEach() instead of for-of so that re don't require down-level
|
|
38
|
+
// iteration.
|
|
39
|
+
this._previousStyleProperties.forEach((name) => {
|
|
40
|
+
// If the name isn't in styleInfo or it's null/undefined
|
|
41
|
+
if (styleInfo[name] == null) {
|
|
42
|
+
this._previousStyleProperties.delete(name);
|
|
43
|
+
if (name.includes('-')) {
|
|
44
|
+
style.removeProperty(name);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Note reset using empty string (vs null) as IE11 does not always
|
|
48
|
+
// reset via null (https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style#setting_styles)
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
style[name] = '';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Add or update properties
|
|
55
|
+
for (const name in styleInfo) {
|
|
56
|
+
const value = styleInfo[name];
|
|
57
|
+
if (value != null) {
|
|
58
|
+
this._previousStyleProperties.add(name);
|
|
59
|
+
if (name.includes('-')) {
|
|
60
|
+
style.setProperty(name, value);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
+
style[name] = value;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return noChange;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export const styleMap = directive(StyleMapDirective);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from "../CustomElementsScopeUtils.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Runs a component's template with the component's current state, while also scoping HTML
|
|
5
|
+
*
|
|
6
|
+
* @param template - the template to execute
|
|
7
|
+
* @param component - the component
|
|
8
|
+
* @public
|
|
9
|
+
* @returns {*}
|
|
10
|
+
*/
|
|
11
|
+
const executeTemplate = (template, component) => {
|
|
12
|
+
const tagsToScope = getTagsToScope(component);
|
|
13
|
+
const scope = getCustomElementsScopingSuffix();
|
|
14
|
+
return template(component, tagsToScope, scope);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Returns all tags, used inside component's template subject to scoping.
|
|
19
|
+
* @param component - the component
|
|
20
|
+
* @returns {Array[]}
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
23
|
+
const getTagsToScope = component => {
|
|
24
|
+
const componentTag = component.constructor.getMetadata().getPureTag();
|
|
25
|
+
const tagsToScope = component.constructor.getUniqueDependencies().map(dep => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
|
|
26
|
+
|
|
27
|
+
if (shouldScopeCustomElement(componentTag)) {
|
|
28
|
+
tagsToScope.push(componentTag);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return tagsToScope;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default executeTemplate;
|
|
@@ -1,19 +1,60 @@
|
|
|
1
|
-
|
|
1
|
+
import { reRenderAllUI5Elements } from "../Render.js";
|
|
2
|
+
import getSharedResource from "../getSharedResource.js";
|
|
3
|
+
import EventProvider from "../EventProvider.js";
|
|
2
4
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
const eventProvider = getSharedResource("CustomStyle.eventProvider", new EventProvider());
|
|
6
|
+
const CUSTOM_CSS_CHANGE = "CustomCSSChange";
|
|
7
|
+
|
|
8
|
+
const attachCustomCSSChange = listener => {
|
|
9
|
+
eventProvider.attachEvent(CUSTOM_CSS_CHANGE, listener);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const detachCustomCSSChange = listener => {
|
|
13
|
+
eventProvider.detachEvent(CUSTOM_CSS_CHANGE, listener);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const fireCustomCSSChange = tag => {
|
|
17
|
+
return eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const customCSSFor = getSharedResource("CustomStyle.customCSSFor", {});
|
|
21
|
+
|
|
22
|
+
// Listen to the eventProvider, in case other copies of this CustomStyle module fire this
|
|
23
|
+
// event, and this copy would therefore need to reRender the ui5 webcomponents; but
|
|
24
|
+
// don't reRender if it was this copy that fired the event to begin with.
|
|
25
|
+
let skipRerender;
|
|
26
|
+
attachCustomCSSChange(tag => {
|
|
27
|
+
if (!skipRerender) {
|
|
28
|
+
reRenderAllUI5Elements({ tag });
|
|
6
29
|
}
|
|
30
|
+
});
|
|
7
31
|
|
|
32
|
+
const addCustomCSS = (tag, css) => {
|
|
8
33
|
if (!customCSSFor[tag]) {
|
|
9
34
|
customCSSFor[tag] = [];
|
|
10
35
|
}
|
|
11
|
-
|
|
12
36
|
customCSSFor[tag].push(css);
|
|
37
|
+
|
|
38
|
+
skipRerender = true;
|
|
39
|
+
try {
|
|
40
|
+
// The event is fired and the attached event listeners are all called synchronously
|
|
41
|
+
// The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy
|
|
42
|
+
// of CustomStyle.js which is firing the `CustomCSSChange` event.
|
|
43
|
+
fireCustomCSSChange(tag);
|
|
44
|
+
} finally {
|
|
45
|
+
skipRerender = false;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return reRenderAllUI5Elements({ tag });
|
|
13
49
|
};
|
|
14
50
|
|
|
15
51
|
const getCustomCSS = tag => {
|
|
16
52
|
return customCSSFor[tag] ? customCSSFor[tag].join("") : "";
|
|
17
53
|
};
|
|
18
54
|
|
|
19
|
-
export {
|
|
55
|
+
export {
|
|
56
|
+
addCustomCSS,
|
|
57
|
+
getCustomCSS,
|
|
58
|
+
attachCustomCSSChange,
|
|
59
|
+
detachCustomCSSChange,
|
|
60
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import EventProvider from "../EventProvider.js";
|
|
2
|
+
|
|
3
|
+
const eventProvider = new EventProvider();
|
|
4
|
+
const THEME_LOADED = "themeLoaded";
|
|
5
|
+
|
|
6
|
+
const attachThemeLoaded = listener => {
|
|
7
|
+
eventProvider.attachEvent(THEME_LOADED, listener);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const detachThemeLoaded = listener => {
|
|
11
|
+
eventProvider.detachEvent(THEME_LOADED, listener);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const fireThemeLoaded = theme => {
|
|
15
|
+
return eventProvider.fireEvent(THEME_LOADED, theme);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
attachThemeLoaded,
|
|
20
|
+
detachThemeLoaded,
|
|
21
|
+
fireThemeLoaded,
|
|
22
|
+
};
|