@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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import DataType from "./types/DataType.js";
|
|
2
2
|
import isDescendantOf from "./util/isDescendantOf.js";
|
|
3
3
|
import { camelToKebabCase } from "./util/StringHelper.js";
|
|
4
|
+
import { getSlottedElements } from "./util/SlotsHelper.js";
|
|
5
|
+
import { getEffectiveScopingSuffixForTag } from "./CustomElementsScopeUtils.js";
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
*
|
|
@@ -12,6 +14,50 @@ class UI5ElementMetadata {
|
|
|
12
14
|
this.metadata = metadata;
|
|
13
15
|
}
|
|
14
16
|
|
|
17
|
+
getInitialState() {
|
|
18
|
+
if (Object.prototype.hasOwnProperty.call(this, "_initialState")) {
|
|
19
|
+
return this._initialState;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const initialState = {};
|
|
23
|
+
const slotsAreManaged = this.slotsAreManaged();
|
|
24
|
+
|
|
25
|
+
// Initialize properties
|
|
26
|
+
const props = this.getProperties();
|
|
27
|
+
for (const propName in props) { // eslint-disable-line
|
|
28
|
+
const propType = props[propName].type;
|
|
29
|
+
const propDefaultValue = props[propName].defaultValue;
|
|
30
|
+
|
|
31
|
+
if (propType === Boolean) {
|
|
32
|
+
initialState[propName] = false;
|
|
33
|
+
|
|
34
|
+
if (propDefaultValue !== undefined) {
|
|
35
|
+
console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default"); // eslint-disable-line
|
|
36
|
+
}
|
|
37
|
+
} else if (props[propName].multiple) {
|
|
38
|
+
initialState[propName] = [];
|
|
39
|
+
} else if (propType === Object) {
|
|
40
|
+
initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : {};
|
|
41
|
+
} else if (propType === String) {
|
|
42
|
+
initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : "";
|
|
43
|
+
} else {
|
|
44
|
+
initialState[propName] = propDefaultValue;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Initialize slots
|
|
49
|
+
if (slotsAreManaged) {
|
|
50
|
+
const slots = this.getSlots();
|
|
51
|
+
for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
|
|
52
|
+
const propertyName = slotData.propertyName || slotName;
|
|
53
|
+
initialState[propertyName] = [];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this._initialState = initialState;
|
|
58
|
+
return initialState;
|
|
59
|
+
}
|
|
60
|
+
|
|
15
61
|
/**
|
|
16
62
|
* Only intended for use by UI5Element.js
|
|
17
63
|
* @protected
|
|
@@ -32,12 +78,44 @@ class UI5ElementMetadata {
|
|
|
32
78
|
return validateSingleSlot(value, slotData);
|
|
33
79
|
}
|
|
34
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Returns the tag of the UI5 Element without the scope
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
getPureTag() {
|
|
86
|
+
return this.metadata.tag;
|
|
87
|
+
}
|
|
88
|
+
|
|
35
89
|
/**
|
|
36
90
|
* Returns the tag of the UI5 Element
|
|
37
91
|
* @public
|
|
38
92
|
*/
|
|
39
93
|
getTag() {
|
|
40
|
-
|
|
94
|
+
const pureTag = this.metadata.tag;
|
|
95
|
+
const suffix = getEffectiveScopingSuffixForTag(pureTag);
|
|
96
|
+
if (!suffix) {
|
|
97
|
+
return pureTag;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return `${pureTag}-${suffix}`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Used to get the tag we need to register for backwards compatibility
|
|
105
|
+
* @public
|
|
106
|
+
*/
|
|
107
|
+
getAltTag() {
|
|
108
|
+
const pureAltTag = this.metadata.altTag;
|
|
109
|
+
if (!pureAltTag) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const suffix = getEffectiveScopingSuffixForTag(pureAltTag);
|
|
114
|
+
if (!suffix) {
|
|
115
|
+
return pureAltTag;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return `${pureAltTag}-${suffix}`;
|
|
41
119
|
}
|
|
42
120
|
|
|
43
121
|
/**
|
|
@@ -48,7 +126,7 @@ class UI5ElementMetadata {
|
|
|
48
126
|
*/
|
|
49
127
|
hasAttribute(propName) {
|
|
50
128
|
const propData = this.getProperties()[propName];
|
|
51
|
-
return propData.type !== Object && !propData.noAttribute;
|
|
129
|
+
return propData.type !== Object && !propData.noAttribute && !propData.multiple;
|
|
52
130
|
}
|
|
53
131
|
|
|
54
132
|
/**
|
|
@@ -77,6 +155,15 @@ class UI5ElementMetadata {
|
|
|
77
155
|
return this.metadata.slots || {};
|
|
78
156
|
}
|
|
79
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Determines whether this UI5 Element has a default slot of type Node, therefore can slot text
|
|
160
|
+
* @returns {boolean}
|
|
161
|
+
*/
|
|
162
|
+
canSlotText() {
|
|
163
|
+
const defaultSlot = this.getSlots().default;
|
|
164
|
+
return defaultSlot && defaultSlot.type === Node;
|
|
165
|
+
}
|
|
166
|
+
|
|
80
167
|
/**
|
|
81
168
|
* Determines whether this UI5 Element supports any slots
|
|
82
169
|
* @public
|
|
@@ -85,6 +172,30 @@ class UI5ElementMetadata {
|
|
|
85
172
|
return !!Object.entries(this.getSlots()).length;
|
|
86
173
|
}
|
|
87
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Determines whether this UI5 Element supports any slots with "individualSlots: true"
|
|
177
|
+
* @public
|
|
178
|
+
*/
|
|
179
|
+
hasIndividualSlots() {
|
|
180
|
+
return this.slotsAreManaged() && Object.entries(this.getSlots()).some(([_slotName, slotData]) => slotData.individualSlots);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Determines whether this UI5 Element needs to invalidate if children are added/removed/changed
|
|
185
|
+
* @public
|
|
186
|
+
*/
|
|
187
|
+
slotsAreManaged() {
|
|
188
|
+
return !!this.metadata.managedSlots;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Determines whether this control supports F6 fast navigation
|
|
193
|
+
* @public
|
|
194
|
+
*/
|
|
195
|
+
supportsF6FastNavigation() {
|
|
196
|
+
return !!this.metadata.fastNavigation;
|
|
197
|
+
}
|
|
198
|
+
|
|
88
199
|
/**
|
|
89
200
|
* Returns an object with key-value pairs of properties and their metadata definitions
|
|
90
201
|
* @public
|
|
@@ -100,6 +211,90 @@ class UI5ElementMetadata {
|
|
|
100
211
|
getEvents() {
|
|
101
212
|
return this.metadata.events || {};
|
|
102
213
|
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)
|
|
217
|
+
* @returns {boolean}
|
|
218
|
+
*/
|
|
219
|
+
isLanguageAware() {
|
|
220
|
+
return !!this.metadata.languageAware;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Determines whether this UI5 Element has any theme dependant carachteristics.
|
|
225
|
+
* @returns {boolean}
|
|
226
|
+
*/
|
|
227
|
+
isThemeAware() {
|
|
228
|
+
return !!this.metadata.themeAware;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Matches a changed entity (property/slot) with the given name against the "invalidateOnChildChange" configuration
|
|
233
|
+
* and determines whether this should cause and invalidation
|
|
234
|
+
*
|
|
235
|
+
* @param slotName the name of the slot in which a child was changed
|
|
236
|
+
* @param type the type of change in the child: "property" or "slot"
|
|
237
|
+
* @param name the name of the property/slot that changed
|
|
238
|
+
* @returns {boolean}
|
|
239
|
+
*/
|
|
240
|
+
shouldInvalidateOnChildChange(slotName, type, name) {
|
|
241
|
+
const config = this.getSlots()[slotName].invalidateOnChildChange;
|
|
242
|
+
|
|
243
|
+
// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component
|
|
244
|
+
if (config === undefined) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// The simple format was used: invalidateOnChildChange: true/false;
|
|
249
|
+
if (typeof config === "boolean") {
|
|
250
|
+
return config;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// The complex format was used: invalidateOnChildChange: { properties, slots }
|
|
254
|
+
if (typeof config === "object") {
|
|
255
|
+
// A property was changed
|
|
256
|
+
if (type === "property") {
|
|
257
|
+
// The config object does not have a properties field
|
|
258
|
+
if (config.properties === undefined) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// The config object has the short format: properties: true/false
|
|
263
|
+
if (typeof config.properties === "boolean") {
|
|
264
|
+
return config.properties;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// The config object has the complex format: properties: [...]
|
|
268
|
+
if (Array.isArray(config.properties)) {
|
|
269
|
+
return config.properties.includes(name);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
throw new Error("Wrong format for invalidateOnChildChange.properties: boolean or array is expected");
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// A slot was changed
|
|
276
|
+
if (type === "slot") {
|
|
277
|
+
// The config object does not have a slots field
|
|
278
|
+
if (config.slots === undefined) {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// The config object has the short format: slots: true/false
|
|
283
|
+
if (typeof config.slots === "boolean") {
|
|
284
|
+
return config.slots;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// The config object has the complex format: slots: [...]
|
|
288
|
+
if (Array.isArray(config.slots)) {
|
|
289
|
+
return config.slots.includes(name);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected");
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected");
|
|
297
|
+
}
|
|
103
298
|
}
|
|
104
299
|
|
|
105
300
|
const validateSingleProperty = (value, propData) => {
|
|
@@ -120,23 +315,7 @@ const validateSingleProperty = (value, propData) => {
|
|
|
120
315
|
};
|
|
121
316
|
|
|
122
317
|
const validateSingleSlot = (value, slotData) => {
|
|
123
|
-
|
|
124
|
-
return value;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const getSlottedNodes = el => {
|
|
128
|
-
const isTag = el instanceof HTMLElement;
|
|
129
|
-
const isSlot = isTag && el.localName === "slot";
|
|
130
|
-
|
|
131
|
-
if (isSlot) {
|
|
132
|
-
return el.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return [el];
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
const slottedNodes = getSlottedNodes(value);
|
|
139
|
-
slottedNodes.forEach(el => {
|
|
318
|
+
value && getSlottedElements(value).forEach(el => {
|
|
140
319
|
if (!(el instanceof slotData.type)) {
|
|
141
320
|
throw new Error(`${el} is not of type ${slotData.type}`);
|
|
142
321
|
}
|
|
@@ -1,24 +1,135 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import getSharedResource from "../getSharedResource.js";
|
|
2
|
+
import IconCollectionsAlias from "../assets-meta/IconCollectionsAlias.js";
|
|
3
|
+
import { getEffectiveDefaultIconCollection } from "../config/Icons.js";
|
|
3
4
|
|
|
5
|
+
const loaders = new Map();
|
|
6
|
+
const registry = getSharedResource("SVGIcons.registry", new Map());
|
|
7
|
+
const iconCollectionPromises = getSharedResource("SVGIcons.promises", new Map());
|
|
8
|
+
|
|
9
|
+
const ICON_NOT_FOUND = "ICON_NOT_FOUND";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated
|
|
13
|
+
*/
|
|
4
14
|
const registerIconBundle = async (collectionName, bundleData) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
resolveFn = resolve;
|
|
8
|
-
});
|
|
9
|
-
registerCollectionPromise(collectionName, collectionFetched);
|
|
15
|
+
throw new Error("This method has been removed. Use `registerIconLoader` instead.");
|
|
16
|
+
};
|
|
10
17
|
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
const registerIconLoader = async (collectionName, loader) => {
|
|
19
|
+
loaders.set(collectionName, loader);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const _loadIconCollectionOnce = async collectionName => {
|
|
23
|
+
if (!iconCollectionPromises.has(collectionName)) {
|
|
24
|
+
if (!loaders.has(collectionName)) {
|
|
25
|
+
throw new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the "AllIcons.js" module for the respective package.`);
|
|
26
|
+
}
|
|
27
|
+
const loadIcons = loaders.get(collectionName);
|
|
28
|
+
iconCollectionPromises.set(collectionName, loadIcons(collectionName));
|
|
13
29
|
}
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
|
|
31
|
+
return iconCollectionPromises.get(collectionName);
|
|
16
32
|
};
|
|
17
33
|
|
|
18
|
-
const
|
|
34
|
+
const _fillRegistry = bundleData => {
|
|
19
35
|
Object.keys(bundleData.data).forEach(iconName => {
|
|
20
|
-
|
|
36
|
+
const iconData = bundleData.data[iconName];
|
|
37
|
+
|
|
38
|
+
registerIcon(iconName, {
|
|
39
|
+
pathData: iconData.path,
|
|
40
|
+
ltr: iconData.ltr,
|
|
41
|
+
accData: iconData.acc,
|
|
42
|
+
collection: bundleData.collection,
|
|
43
|
+
packageName: bundleData.packageName,
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// set
|
|
49
|
+
const registerIcon = (name, { pathData, ltr, accData, collection, packageName } = {}) => { // eslint-disable-line
|
|
50
|
+
if (!collection) {
|
|
51
|
+
collection = getEffectiveDefaultIconCollection();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const key = `${collection}/${name}`;
|
|
55
|
+
registry.set(key, {
|
|
56
|
+
pathData,
|
|
57
|
+
ltr,
|
|
58
|
+
accData,
|
|
59
|
+
packageName,
|
|
21
60
|
});
|
|
22
61
|
};
|
|
23
62
|
|
|
24
|
-
|
|
63
|
+
const _parseName = name => {
|
|
64
|
+
// silently support ui5-compatible URIs
|
|
65
|
+
if (name.startsWith("sap-icon://")) {
|
|
66
|
+
name = name.replace("sap-icon://", "");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
let collection;
|
|
70
|
+
[name, collection] = name.split("/").reverse();
|
|
71
|
+
collection = collection || getEffectiveDefaultIconCollection();
|
|
72
|
+
|
|
73
|
+
// Normalize collection name.
|
|
74
|
+
// - resolve `SAP-icons-TNT` to `tnt`.
|
|
75
|
+
// - resolve `BusinessSuiteInAppSymbols` to `business-suite`.
|
|
76
|
+
// - resolve `horizon` to `SAP-icons-v5`,
|
|
77
|
+
// Note: aliases can be made as a feature, if more collections need it or more aliases are needed.
|
|
78
|
+
collection = _normalizeCollection(collection);
|
|
79
|
+
name = name.replace("icon-", "");
|
|
80
|
+
|
|
81
|
+
const registryKey = `${collection}/${name}`;
|
|
82
|
+
return { name, collection, registryKey };
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const getIconDataSync = nameProp => {
|
|
86
|
+
const { registryKey } = _parseName(nameProp);
|
|
87
|
+
return registry.get(registryKey);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const getIconData = async nameProp => {
|
|
91
|
+
const { collection, registryKey } = _parseName(nameProp);
|
|
92
|
+
|
|
93
|
+
let iconData = ICON_NOT_FOUND;
|
|
94
|
+
try {
|
|
95
|
+
iconData = await _loadIconCollectionOnce(collection);
|
|
96
|
+
} catch (e) {
|
|
97
|
+
console.error(e.message); /* eslint-disable-line */
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (iconData === ICON_NOT_FOUND) {
|
|
101
|
+
return iconData;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (!registry.has(registryKey)) {
|
|
105
|
+
// not filled by another await. many getters will await on the same loader, but fill only once
|
|
106
|
+
_fillRegistry(iconData);
|
|
107
|
+
}
|
|
108
|
+
return registry.get(registryKey);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// test page usage only
|
|
112
|
+
const _getRegisteredNames = async () => {
|
|
113
|
+
// fetch one icon of each collection to trigger the bundle load
|
|
114
|
+
await getIconData("edit");
|
|
115
|
+
await getIconData("tnt/arrow");
|
|
116
|
+
await getIconData("business-suite/3d");
|
|
117
|
+
return Array.from(registry.keys());
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const _normalizeCollection = collectionName => {
|
|
121
|
+
if (IconCollectionsAlias[collectionName]) {
|
|
122
|
+
return IconCollectionsAlias[collectionName];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return collectionName;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export {
|
|
129
|
+
registerIconBundle,
|
|
130
|
+
registerIconLoader,
|
|
131
|
+
getIconData,
|
|
132
|
+
getIconDataSync,
|
|
133
|
+
registerIcon,
|
|
134
|
+
_getRegisteredNames,
|
|
135
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import getSharedResource from "../getSharedResource.js";
|
|
2
|
+
|
|
3
|
+
const registry = getSharedResource("SVGIllustration.registry", new Map());
|
|
4
|
+
const ILLUSTRATION_NOT_FOUND = "ILLUSTRATION_NOT_FOUND";
|
|
5
|
+
|
|
6
|
+
const registerIllustration = (name, { dialogSvg, sceneSvg, spotSvg, set, title, subtitle } = {}) => { // eslint-disable-line
|
|
7
|
+
registry.set(`${set}/${name}`, {
|
|
8
|
+
dialogSvg,
|
|
9
|
+
sceneSvg,
|
|
10
|
+
spotSvg,
|
|
11
|
+
title,
|
|
12
|
+
subtitle,
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const getIllustrationDataSync = nameProp => {
|
|
17
|
+
let set = "fiori";
|
|
18
|
+
|
|
19
|
+
if (nameProp.startsWith("Tnt")) {
|
|
20
|
+
set = "tnt";
|
|
21
|
+
nameProp = nameProp.replace(/^Tnt/, "");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return registry.get(`${set}/${nameProp}`) || ILLUSTRATION_NOT_FOUND;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
getIllustrationDataSync,
|
|
29
|
+
registerIllustration,
|
|
30
|
+
};
|
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { attachLanguageChange } from "../locale/languageChange.js";
|
|
2
|
+
import getLocale from "../locale/getLocale.js";
|
|
3
|
+
import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from "../generated/AssetParameters.js";
|
|
4
|
+
import { getFeature } from "../FeaturesRegistry.js";
|
|
3
5
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
// externally configurable mapping function for resolving (localeId -> URL)
|
|
10
|
-
// default implementation - ui5 CDN
|
|
11
|
-
let cldrMappingFn = locale => `https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/${locale}.json`;
|
|
6
|
+
const localeDataMap = new Map();
|
|
7
|
+
const loaders = new Map();
|
|
8
|
+
const cldrPromises = new Map();
|
|
9
|
+
const reportedErrors = new Set();
|
|
10
|
+
let warningShown = false;
|
|
12
11
|
|
|
13
12
|
const M_ISO639_OLD_TO_NEW = {
|
|
14
13
|
"iw": "he",
|
|
15
14
|
"ji": "yi",
|
|
16
15
|
"in": "id",
|
|
17
|
-
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const DEV_MODE = false;
|
|
19
|
+
|
|
20
|
+
const _showAssetsWarningOnce = localeId => {
|
|
21
|
+
if (warningShown) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!DEV_MODE) {
|
|
26
|
+
console.warn(`[LocaleData] Supported locale "${localeId}" not configured, import the "Assets.js" module from the webcomponents package you are using.`); /* eslint-disable-line */
|
|
27
|
+
} else {
|
|
28
|
+
console.warn(`[LocaleData] Note: in dev mode, CLDR assets might be disabled for performance reasons. Try running "ENABLE_CLDR=1 yarn start" to test CLDR assets.`); /* eslint-disable-line */
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
warningShown = true;
|
|
18
32
|
};
|
|
19
33
|
|
|
20
34
|
const calcLocale = (language, region, script) => {
|
|
@@ -33,69 +47,118 @@ const calcLocale = (language, region, script) => {
|
|
|
33
47
|
}
|
|
34
48
|
}
|
|
35
49
|
|
|
50
|
+
// Special case 3: for Serbian, there are cyrillic and latin scripts, "sh" and "sr-latn" map to "latin", "sr" maps to cyrillic.
|
|
51
|
+
if (language === "sh" || (language === "sr" && script === "Latn")) {
|
|
52
|
+
language = "sr";
|
|
53
|
+
region = "Latn";
|
|
54
|
+
}
|
|
55
|
+
|
|
36
56
|
// try language + region
|
|
37
57
|
let localeId = `${language}_${region}`;
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
|
|
58
|
+
if (SUPPORTED_LOCALES.includes(localeId)) {
|
|
59
|
+
if (loaders.has(localeId)) {
|
|
60
|
+
// supported and has loader
|
|
61
|
+
return localeId;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// supported, no loader - fallback to default and warn
|
|
65
|
+
_showAssetsWarningOnce(localeId);
|
|
66
|
+
return DEFAULT_LOCALE;
|
|
41
67
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
68
|
+
|
|
69
|
+
// not supported, try language only
|
|
70
|
+
localeId = language;
|
|
71
|
+
if (SUPPORTED_LOCALES.includes(localeId)) {
|
|
72
|
+
if (loaders.has(localeId)) {
|
|
73
|
+
// supported and has loader
|
|
74
|
+
return localeId;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// supported, no loader - fallback to default and warn
|
|
78
|
+
_showAssetsWarningOnce(localeId);
|
|
79
|
+
return DEFAULT_LOCALE;
|
|
45
80
|
}
|
|
46
81
|
|
|
47
|
-
|
|
82
|
+
// not supported - fallback to default locale
|
|
83
|
+
return DEFAULT_LOCALE;
|
|
48
84
|
};
|
|
49
85
|
|
|
86
|
+
// internal set data
|
|
87
|
+
const setLocaleData = (localeId, content) => {
|
|
88
|
+
localeDataMap.set(localeId, content);
|
|
89
|
+
};
|
|
50
90
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
91
|
+
// external getSync
|
|
92
|
+
const getLocaleData = localeId => {
|
|
93
|
+
// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead
|
|
94
|
+
if (!loaders.has(localeId)) {
|
|
95
|
+
localeId = DEFAULT_LOCALE;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const content = localeDataMap.get(localeId);
|
|
99
|
+
if (!content) {
|
|
100
|
+
throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return content;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
// load bundle over the network once
|
|
107
|
+
const _loadCldrOnce = localeId => {
|
|
108
|
+
const loadCldr = loaders.get(localeId);
|
|
109
|
+
|
|
110
|
+
if (!cldrPromises.get(localeId)) {
|
|
111
|
+
cldrPromises.set(localeId, loadCldr(localeId));
|
|
54
112
|
}
|
|
55
113
|
|
|
56
|
-
|
|
57
|
-
missingLocales.forEach(locale => {
|
|
58
|
-
cldrUrls[locale] = cldrMappingFn(locale);
|
|
59
|
-
});
|
|
114
|
+
return cldrPromises.get(localeId);
|
|
60
115
|
};
|
|
61
116
|
|
|
117
|
+
// external getAsync
|
|
62
118
|
const fetchCldr = async (language, region, script) => {
|
|
63
|
-
resolveMissingMappings();
|
|
64
119
|
const localeId = calcLocale(language, region, script);
|
|
65
120
|
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
registerModuleContent(`sap/ui/core/cldr/${localeId}.json`, cldrContent);
|
|
121
|
+
// reuse OpenUI5 CLDR if present
|
|
122
|
+
const OpenUI5Support = getFeature("OpenUI5Support");
|
|
123
|
+
if (OpenUI5Support) {
|
|
124
|
+
const cldrContent = OpenUI5Support.getLocaleDataObject();
|
|
125
|
+
if (cldrContent) {
|
|
126
|
+
// only if openui5 actually returned valid content
|
|
127
|
+
setLocaleData(localeId, cldrContent);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
76
130
|
}
|
|
77
|
-
};
|
|
78
131
|
|
|
79
|
-
|
|
80
|
-
|
|
132
|
+
// fetch it
|
|
133
|
+
try {
|
|
134
|
+
const cldrContent = await _loadCldrOnce(localeId);
|
|
135
|
+
setLocaleData(localeId, cldrContent);
|
|
136
|
+
} catch (e) {
|
|
137
|
+
if (!reportedErrors.has(e.message)) {
|
|
138
|
+
reportedErrors.add(e.message);
|
|
139
|
+
console.error(e.message); /* eslint-disable-line */
|
|
140
|
+
}
|
|
141
|
+
}
|
|
81
142
|
};
|
|
82
143
|
|
|
83
|
-
const
|
|
84
|
-
|
|
144
|
+
const registerLocaleDataLoader = (localeId, loader) => {
|
|
145
|
+
loaders.set(localeId, loader);
|
|
85
146
|
};
|
|
86
147
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
148
|
+
// register default loader for "en" from ui5 CDN (dev workflow without assets)
|
|
149
|
+
registerLocaleDataLoader("en", async runtimeLocaleId => {
|
|
150
|
+
return (await fetch(`https://ui5.sap.com/1.103.0/resources/sap/ui/core/cldr/en.json`)).json();
|
|
151
|
+
});
|
|
90
152
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
153
|
+
// When the language changes dynamically (the user calls setLanguage),
|
|
154
|
+
// re-fetch the required CDRD data.
|
|
155
|
+
attachLanguageChange(() => {
|
|
156
|
+
const locale = getLocale();
|
|
157
|
+
return fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());
|
|
158
|
+
});
|
|
94
159
|
|
|
95
160
|
export {
|
|
161
|
+
registerLocaleDataLoader,
|
|
96
162
|
fetchCldr,
|
|
97
|
-
|
|
98
|
-
setCldrData,
|
|
99
|
-
getCldrData,
|
|
100
|
-
_registerMappingFunction,
|
|
163
|
+
getLocaleData,
|
|
101
164
|
};
|