@ui5/webcomponents-base 1.9.3 → 1.10.0
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 +1 -0
- package/CHANGELOG.md +0 -8
- package/bundle.esm.js +4 -1
- package/dist/AssetRegistry.d.ts +5 -0
- package/dist/AssetRegistry.js +2 -7
- package/dist/AssetRegistry.js.map +1 -0
- package/dist/Boot.d.ts +8 -0
- package/dist/Boot.js +29 -48
- package/dist/Boot.js.map +1 -0
- package/dist/CSP.d.ts +30 -0
- package/dist/CSP.js +16 -24
- package/dist/CSP.js.map +1 -0
- package/dist/CustomElementsRegistry.d.ts +5 -0
- package/dist/CustomElementsRegistry.js +66 -83
- package/dist/CustomElementsRegistry.js.map +1 -0
- package/dist/CustomElementsScope.d.ts +7 -0
- package/dist/CustomElementsScope.js +10 -29
- package/dist/CustomElementsScope.js.map +1 -0
- package/dist/CustomElementsScopeUtils.d.ts +55 -0
- package/dist/CustomElementsScopeUtils.js +34 -52
- package/dist/CustomElementsScopeUtils.js.map +1 -0
- package/dist/DOMObserver.d.ts +11 -0
- package/dist/DOMObserver.js +12 -54
- package/dist/DOMObserver.js.map +1 -0
- package/dist/Device.d.ts +12 -0
- package/dist/Device.js +53 -83
- package/dist/Device.js.map +1 -0
- package/dist/EventProvider.d.ts +25 -0
- package/dist/EventProvider.js +67 -82
- package/dist/EventProvider.js.map +1 -0
- package/dist/FeaturesRegistry.d.ts +3 -0
- package/dist/FeaturesRegistry.js +5 -10
- package/dist/FeaturesRegistry.js.map +1 -0
- package/dist/FontFace.d.ts +2 -0
- package/dist/FontFace.js +14 -19
- package/dist/FontFace.js.map +1 -0
- package/dist/InitialConfiguration.d.ts +22 -0
- package/dist/InitialConfiguration.js +107 -146
- package/dist/InitialConfiguration.js.map +1 -0
- package/dist/Keys.d.ts +57 -0
- package/dist/Keys.js +174 -291
- package/dist/Keys.js.map +1 -0
- package/dist/ManagedStyles.d.ts +8 -0
- package/dist/ManagedStyles.js +62 -68
- package/dist/ManagedStyles.js.map +1 -0
- package/dist/MarkedEvents.d.ts +9 -0
- package/dist/MarkedEvents.js +15 -0
- package/dist/MarkedEvents.js.map +1 -0
- package/dist/MediaRange.d.ts +37 -0
- package/dist/MediaRange.js +54 -65
- package/dist/MediaRange.js.map +1 -0
- package/dist/PropertiesFileFormat.d.ts +8 -0
- package/dist/PropertiesFileFormat.js +72 -82
- package/dist/PropertiesFileFormat.js.map +1 -0
- package/dist/Render.d.ts +47 -0
- package/dist/Render.js +81 -113
- package/dist/Render.js.map +1 -0
- package/dist/RenderQueue.d.ts +19 -0
- package/dist/RenderQueue.js +52 -62
- package/dist/RenderQueue.js.map +1 -0
- package/dist/Runtimes.d.ts +27 -0
- package/dist/Runtimes.js +49 -70
- package/dist/Runtimes.js.map +1 -0
- package/dist/StaticArea.d.ts +0 -0
- package/dist/StaticArea.js +4 -1
- package/dist/StaticArea.js.map +1 -0
- package/dist/StaticAreaItem.d.ts +36 -0
- package/dist/StaticAreaItem.js +84 -94
- package/dist/StaticAreaItem.js.map +1 -0
- package/dist/SystemCSSVars.d.ts +2 -0
- package/dist/SystemCSSVars.js +4 -5
- package/dist/SystemCSSVars.js.map +1 -0
- package/dist/Theming.d.ts +3 -0
- package/dist/Theming.js +1 -1
- package/dist/Theming.js.map +1 -0
- package/dist/UI5Element.d.ts +373 -0
- package/dist/UI5Element.js +928 -1006
- package/dist/UI5Element.js.map +1 -0
- package/dist/UI5ElementMetadata.d.ts +150 -0
- package/dist/UI5ElementMetadata.js +277 -313
- package/dist/UI5ElementMetadata.js.map +1 -0
- package/dist/animations/AnimationQueue.d.ts +8 -0
- package/dist/animations/AnimationQueue.js +31 -38
- package/dist/animations/AnimationQueue.js.map +1 -0
- package/dist/animations/animate.d.ts +14 -0
- package/dist/animations/animate.js +46 -51
- package/dist/animations/animate.js.map +1 -0
- package/dist/animations/scroll.d.ts +5 -0
- package/dist/animations/scroll.js +18 -27
- package/dist/animations/scroll.js.map +1 -0
- package/dist/animations/slideDown.d.ts +5 -0
- package/dist/animations/slideDown.js +53 -78
- package/dist/animations/slideDown.js.map +1 -0
- package/dist/animations/slideUp.d.ts +5 -0
- package/dist/animations/slideUp.js +49 -70
- package/dist/animations/slideUp.js.map +1 -0
- package/dist/api.json +1 -1
- package/dist/asset-registries/Icons.d.ts +30 -0
- package/dist/asset-registries/Icons.js +85 -118
- package/dist/asset-registries/Icons.js.map +1 -0
- package/dist/asset-registries/Illustrations.d.ts +17 -0
- package/dist/asset-registries/Illustrations.js +37 -50
- package/dist/asset-registries/Illustrations.js.map +1 -0
- package/dist/asset-registries/LocaleData.d.ts +7 -0
- package/dist/asset-registries/LocaleData.js +104 -126
- package/dist/asset-registries/LocaleData.js.map +1 -0
- package/dist/asset-registries/Themes.d.ts +10 -0
- package/dist/asset-registries/Themes.js +36 -68
- package/dist/asset-registries/Themes.js.map +1 -0
- package/dist/asset-registries/i18n.d.ts +23 -0
- package/dist/asset-registries/i18n.js +52 -80
- package/dist/asset-registries/i18n.js.map +1 -0
- package/dist/assets/bundle.esm.3d967c4e.js +56 -0
- package/dist/assets-meta/IconCollectionsAlias.d.ts +17 -0
- package/dist/assets-meta/IconCollectionsAlias.js +4 -4
- package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
- package/dist/config/AnimationMode.d.ts +14 -0
- package/dist/config/AnimationMode.js +21 -18
- package/dist/config/AnimationMode.js.map +1 -0
- package/dist/config/CalendarType.d.ts +8 -0
- package/dist/config/CalendarType.js +13 -12
- package/dist/config/CalendarType.js.map +1 -0
- package/dist/config/FormatSettings.d.ts +11 -0
- package/dist/config/FormatSettings.js +10 -8
- package/dist/config/FormatSettings.js.map +1 -0
- package/dist/config/Icons.d.ts +30 -0
- package/dist/config/Icons.js +28 -32
- package/dist/config/Icons.js.map +1 -0
- package/dist/config/Language.d.ts +31 -0
- package/dist/config/Language.js +31 -43
- package/dist/config/Language.js.map +1 -0
- package/dist/config/NoConflict.d.ts +20 -0
- package/dist/config/NoConflict.js +40 -41
- package/dist/config/NoConflict.js.map +1 -0
- package/dist/config/RTL.d.ts +7 -0
- package/dist/config/RTL.js +23 -20
- package/dist/config/RTL.js.map +1 -0
- package/dist/config/Theme.d.ts +28 -0
- package/dist/config/Theme.js +34 -36
- package/dist/config/Theme.js.map +1 -0
- package/dist/config/ThemeRoots.d.ts +4 -0
- package/dist/config/ThemeRoots.js +18 -29
- package/dist/config/ThemeRoots.js.map +1 -0
- package/dist/decorators/customElement.d.ts +8 -0
- package/dist/decorators/customElement.js +16 -0
- package/dist/decorators/customElement.js.map +1 -0
- package/dist/decorators/event.d.ts +10 -0
- package/dist/decorators/event.js +24 -0
- package/dist/decorators/event.js.map +1 -0
- package/dist/decorators/fastNavigation.d.ts +7 -0
- package/dist/decorators/fastNavigation.js +13 -0
- package/dist/decorators/fastNavigation.js.map +1 -0
- package/dist/decorators/languageAware.d.ts +7 -0
- package/dist/decorators/languageAware.js +13 -0
- package/dist/decorators/languageAware.js.map +1 -0
- package/dist/decorators/property.d.ts +9 -0
- package/dist/decorators/property.js +24 -0
- package/dist/decorators/property.js.map +1 -0
- package/dist/decorators/slot.d.ts +9 -0
- package/dist/decorators/slot.js +37 -0
- package/dist/decorators/slot.js.map +1 -0
- package/dist/decorators/themeAware.d.ts +7 -0
- package/dist/decorators/themeAware.js +13 -0
- package/dist/decorators/themeAware.js.map +1 -0
- package/dist/delegate/ItemNavigation.d.ts +113 -0
- package/dist/delegate/ItemNavigation.js +277 -317
- package/dist/delegate/ItemNavigation.js.map +1 -0
- package/dist/delegate/ResizeHandler.d.ts +24 -0
- package/dist/delegate/ResizeHandler.js +68 -91
- package/dist/delegate/ResizeHandler.js.map +1 -0
- package/dist/delegate/ScrollEnablement.d.ts +48 -0
- package/dist/delegate/ScrollEnablement.js +157 -180
- package/dist/delegate/ScrollEnablement.js.map +1 -0
- package/dist/features/F6Navigation.d.ts +16 -0
- package/dist/features/F6Navigation.js +105 -109
- package/dist/features/F6Navigation.js.map +1 -0
- package/dist/features/OpenUI5Element.d.ts +9 -0
- package/dist/features/OpenUI5Element.js +5 -0
- package/dist/features/OpenUI5Element.js.map +1 -0
- package/dist/features/OpenUI5Enablement.d.ts +11 -0
- package/dist/features/OpenUI5Enablement.js +89 -112
- package/dist/features/OpenUI5Enablement.js.map +1 -0
- package/dist/features/OpenUI5Support.d.ts +23 -0
- package/dist/features/OpenUI5Support.js +91 -120
- package/dist/features/OpenUI5Support.js.map +1 -0
- package/dist/generated/VersionInfo.js +4 -4
- package/dist/getSharedResource.d.ts +11 -0
- package/dist/getSharedResource.js +12 -16
- package/dist/getSharedResource.js.map +1 -0
- package/dist/i18nBundle.d.ts +43 -0
- package/dist/i18nBundle.js +56 -64
- package/dist/i18nBundle.js.map +1 -0
- package/dist/locale/Locale.d.ts +22 -0
- package/dist/locale/Locale.js +75 -87
- package/dist/locale/Locale.js.map +1 -0
- package/dist/locale/RTLAwareRegistry.d.ts +4 -0
- package/dist/locale/RTLAwareRegistry.js +6 -11
- package/dist/locale/RTLAwareRegistry.js.map +1 -0
- package/dist/locale/applyDirection.d.ts +10 -0
- package/dist/locale/applyDirection.js +7 -7
- package/dist/locale/applyDirection.js.map +1 -0
- package/dist/locale/directionChange.d.ts +15 -0
- package/dist/locale/directionChange.js +7 -15
- package/dist/locale/directionChange.js.map +1 -0
- package/dist/locale/getEffectiveDir.d.ts +2 -0
- package/dist/locale/getEffectiveDir.js +20 -24
- package/dist/locale/getEffectiveDir.js.map +1 -0
- package/dist/locale/getLocale.d.ts +7 -0
- package/dist/locale/getLocale.js +26 -29
- package/dist/locale/getLocale.js.map +1 -0
- package/dist/locale/languageChange.d.ts +5 -0
- package/dist/locale/languageChange.js +8 -16
- package/dist/locale/languageChange.js.map +1 -0
- package/dist/locale/nextFallbackLocale.d.ts +8 -0
- package/dist/locale/nextFallbackLocale.js +15 -19
- package/dist/locale/nextFallbackLocale.js.map +1 -0
- package/dist/locale/normalizeLocale.d.ts +7 -0
- package/dist/locale/normalizeLocale.js +34 -41
- package/dist/locale/normalizeLocale.js.map +1 -0
- package/dist/renderer/LitRenderer.d.ts +14 -0
- package/dist/renderer/LitRenderer.js +28 -39
- package/dist/renderer/LitRenderer.js.map +1 -0
- package/dist/renderer/executeTemplate.d.ts +13 -0
- package/dist/renderer/executeTemplate.js +12 -16
- package/dist/renderer/executeTemplate.js.map +1 -0
- package/dist/sap/base/Log.js +28 -29
- package/dist/sap/base/assert.js +5 -6
- package/dist/sap/base/security/URLListValidator.js +13 -2
- package/dist/theming/CustomStyle.d.ts +6 -0
- package/dist/theming/CustomStyle.js +29 -43
- package/dist/theming/CustomStyle.js.map +1 -0
- package/dist/theming/ThemeLoaded.d.ts +5 -0
- package/dist/theming/ThemeLoaded.js +8 -16
- package/dist/theming/ThemeLoaded.js.map +1 -0
- package/dist/theming/applyTheme.d.ts +2 -0
- package/dist/theming/applyTheme.js +59 -68
- package/dist/theming/applyTheme.js.map +1 -0
- package/dist/theming/getConstructableStyle.d.ts +9 -0
- package/dist/theming/getConstructableStyle.js +12 -17
- package/dist/theming/getConstructableStyle.js.map +1 -0
- package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
- package/dist/theming/getEffectiveLinksHrefs.js +12 -22
- package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
- package/dist/theming/getEffectiveStyle.d.ts +3 -0
- package/dist/theming/getEffectiveStyle.js +24 -31
- package/dist/theming/getEffectiveStyle.js.map +1 -0
- package/dist/theming/getStylesString.d.ts +3 -0
- package/dist/theming/getStylesString.js +9 -13
- package/dist/theming/getStylesString.js.map +1 -0
- package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
- package/dist/theming/getThemeDesignerTheme.js +72 -79
- package/dist/theming/getThemeDesignerTheme.js.map +1 -0
- package/dist/theming/preloadLinks.d.ts +3 -0
- package/dist/theming/preloadLinks.js +13 -17
- package/dist/theming/preloadLinks.js.map +1 -0
- package/dist/thirdparty/_merge.d.ts +2 -0
- package/dist/thirdparty/_merge.js +7 -4
- package/dist/thirdparty/_merge.js.map +1 -0
- package/dist/thirdparty/isPlainObject.d.ts +2 -0
- package/dist/thirdparty/isPlainObject.js +11 -10
- package/dist/thirdparty/isPlainObject.js.map +1 -0
- package/dist/thirdparty/merge.d.ts +2 -0
- package/dist/thirdparty/merge.js +4 -8
- package/dist/thirdparty/merge.js.map +1 -0
- package/dist/types/AnimationMode.d.ts +32 -0
- package/dist/types/AnimationMode.js +33 -6
- package/dist/types/AnimationMode.js.map +1 -0
- package/dist/types/CSSColor.d.ts +16 -0
- package/dist/types/CSSColor.js +6 -7
- package/dist/types/CSSColor.js.map +1 -0
- package/dist/types/CalendarType.d.ts +37 -0
- package/dist/types/CalendarType.js +33 -53
- package/dist/types/CalendarType.js.map +1 -0
- package/dist/types/DOMReference.d.ts +17 -0
- package/dist/types/DOMReference.js +12 -15
- package/dist/types/DOMReference.js.map +1 -0
- package/dist/types/DataType.d.ts +25 -0
- package/dist/types/DataType.js +33 -32
- package/dist/types/DataType.js.map +1 -0
- package/dist/types/Float.d.ts +18 -0
- package/dist/types/Float.js +9 -12
- package/dist/types/Float.js.map +1 -0
- package/dist/types/Integer.d.ts +18 -0
- package/dist/types/Integer.js +9 -11
- package/dist/types/Integer.js.map +1 -0
- package/dist/types/InvisibleMessageMode.d.ts +25 -0
- package/dist/types/InvisibleMessageMode.js +19 -38
- package/dist/types/InvisibleMessageMode.js.map +1 -0
- package/dist/types/ItemNavigationBehavior.d.ts +24 -0
- package/dist/types/ItemNavigationBehavior.js +22 -12
- package/dist/types/ItemNavigationBehavior.js.map +1 -0
- package/dist/types/NavigationMode.d.ts +32 -0
- package/dist/types/NavigationMode.js +33 -6
- package/dist/types/NavigationMode.js.map +1 -0
- package/dist/types/ValueState.d.ts +42 -0
- package/dist/types/ValueState.js +38 -58
- package/dist/types/ValueState.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/updateShadowRoot.d.ts +8 -0
- package/dist/updateShadowRoot.js +21 -16
- package/dist/updateShadowRoot.js.map +1 -0
- package/dist/util/AriaLabelHelper.d.ts +6 -0
- package/dist/util/AriaLabelHelper.js +34 -46
- package/dist/util/AriaLabelHelper.js.map +1 -0
- package/dist/util/Caret.d.ts +7 -0
- package/dist/util/Caret.js +16 -25
- package/dist/util/Caret.js.map +1 -0
- package/dist/util/ColorConversion.d.ts +30 -0
- package/dist/util/ColorConversion.js +311 -372
- package/dist/util/ColorConversion.js.map +1 -0
- package/dist/util/FetchHelper.d.ts +3 -0
- package/dist/util/FetchHelper.js +19 -25
- package/dist/util/FetchHelper.js.map +1 -0
- package/dist/util/FocusableElements.d.ts +4 -0
- package/dist/util/FocusableElements.js +54 -71
- package/dist/util/FocusableElements.js.map +1 -0
- package/dist/util/HTMLSanitizer.d.ts +3 -0
- package/dist/util/HTMLSanitizer.js +4 -5
- package/dist/util/HTMLSanitizer.js.map +1 -0
- package/dist/util/InvisibleMessage.d.ts +10 -0
- package/dist/util/InvisibleMessage.js +40 -53
- package/dist/util/InvisibleMessage.js.map +1 -0
- package/dist/util/PopupUtils.d.ts +7 -0
- package/dist/util/PopupUtils.js +58 -77
- package/dist/util/PopupUtils.js.map +1 -0
- package/dist/util/SlotsHelper.d.ts +9 -0
- package/dist/util/SlotsHelper.js +22 -35
- package/dist/util/SlotsHelper.js.map +1 -0
- package/dist/util/StringHelper.d.ts +3 -0
- package/dist/util/StringHelper.js +17 -20
- package/dist/util/StringHelper.js.map +1 -0
- package/dist/util/TabbableElements.d.ts +17 -0
- package/dist/util/TabbableElements.js +53 -47
- package/dist/util/TabbableElements.js.map +1 -0
- package/dist/util/arraysAreEqual.d.ts +2 -0
- package/dist/util/arraysAreEqual.js +10 -12
- package/dist/util/arraysAreEqual.js.map +1 -0
- package/dist/util/clamp.d.ts +9 -0
- package/dist/util/clamp.js +2 -2
- package/dist/util/clamp.js.map +1 -0
- package/dist/util/createLinkInHead.d.ts +7 -0
- package/dist/util/createLinkInHead.js +14 -17
- package/dist/util/createLinkInHead.js.map +1 -0
- package/dist/util/createStyleInHead.d.ts +8 -0
- package/dist/util/createStyleInHead.js +10 -10
- package/dist/util/createStyleInHead.js.map +1 -0
- package/dist/util/debounce.d.ts +2 -0
- package/dist/util/debounce.js +6 -8
- package/dist/util/debounce.js.map +1 -0
- package/dist/util/detectNavigatorLanguage.d.ts +2 -0
- package/dist/util/detectNavigatorLanguage.js +7 -10
- package/dist/util/detectNavigatorLanguage.js.map +1 -0
- package/dist/util/escapeRegex.d.ts +8 -0
- package/dist/util/escapeRegex.js +8 -7
- package/dist/util/escapeRegex.js.map +1 -0
- package/dist/util/formatMessage.d.ts +2 -0
- package/dist/util/formatMessage.js +15 -19
- package/dist/util/formatMessage.js.map +1 -0
- package/dist/util/generateHighlightedMarkup.d.ts +9 -0
- package/dist/util/generateHighlightedMarkup.js +26 -27
- package/dist/util/generateHighlightedMarkup.js.map +1 -0
- package/dist/util/getActiveElement.d.ts +2 -0
- package/dist/util/getActiveElement.js +6 -8
- package/dist/util/getActiveElement.js.map +1 -0
- package/dist/util/getClassCopy.d.ts +400 -0
- package/dist/util/getClassCopy.js +7 -7
- package/dist/util/getClassCopy.js.map +1 -0
- package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
- package/dist/util/getDesigntimePropertyAsArray.js +4 -3
- package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
- package/dist/util/getEffectiveContentDensity.d.ts +2 -0
- package/dist/util/getEffectiveContentDensity.js +2 -3
- package/dist/util/getEffectiveContentDensity.js.map +1 -0
- package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
- package/dist/util/getEffectiveScrollbarStyle.js +1 -2
- package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
- package/dist/util/getFastNavigationGroups.d.ts +2 -0
- package/dist/util/getFastNavigationGroups.js +44 -56
- package/dist/util/getFastNavigationGroups.js.map +1 -0
- package/dist/util/getFileExtension.d.ts +12 -0
- package/dist/util/getFileExtension.js +9 -11
- package/dist/util/getFileExtension.js.map +1 -0
- package/dist/util/getNormalizedTarget.d.ts +7 -0
- package/dist/util/getNormalizedTarget.js +7 -9
- package/dist/util/getNormalizedTarget.js.map +1 -0
- package/dist/util/getSingletonElementInstance.d.ts +2 -0
- package/dist/util/getSingletonElementInstance.js +7 -10
- package/dist/util/getSingletonElementInstance.js.map +1 -0
- package/dist/util/isElementClickable.d.ts +2 -0
- package/dist/util/isElementClickable.js +16 -0
- package/dist/util/isElementClickable.js.map +1 -0
- package/dist/util/isElementHidden.d.ts +2 -0
- package/dist/util/isElementHidden.js +8 -0
- package/dist/util/isElementHidden.js.map +1 -0
- package/dist/util/isElementInView.d.ts +6 -0
- package/dist/util/isElementInView.js +6 -9
- package/dist/util/isElementInView.js.map +1 -0
- package/dist/util/isElementTabbable.d.ts +9 -0
- package/dist/util/isElementTabbable.js +30 -0
- package/dist/util/isElementTabbable.js.map +1 -0
- package/dist/util/isValidPropertyName.d.ts +8 -0
- package/dist/util/isValidPropertyName.js +16 -17
- package/dist/util/isValidPropertyName.js.map +1 -0
- package/dist/util/whenDOMReady.d.ts +2 -0
- package/dist/util/whenDOMReady.js +11 -10
- package/dist/util/whenDOMReady.js.map +1 -0
- package/dist/util/willShowContent.d.ts +2 -0
- package/dist/util/willShowContent.js +7 -0
- package/dist/util/willShowContent.js.map +1 -0
- package/dist/validateThemeRoot.d.ts +2 -0
- package/dist/validateThemeRoot.js +41 -52
- package/dist/validateThemeRoot.js.map +1 -0
- package/global.d.ts +44 -0
- package/package-scripts.js +14 -5
- package/package.json +4 -4
- package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
- package/src/Boot.ts +61 -0
- package/src/{CSP.js → CSP.ts} +14 -7
- package/src/{CustomElementsRegistry.js → CustomElementsRegistry.ts} +19 -16
- package/src/{CustomElementsScope.js → CustomElementsScope.ts} +8 -5
- package/src/{CustomElementsScopeUtils.js → CustomElementsScopeUtils.ts} +14 -7
- package/src/DOMObserver.ts +28 -0
- package/src/{Device.js → Device.ts} +17 -14
- package/src/{EventProvider.js → EventProvider.ts} +9 -7
- package/src/FeaturesRegistry.ts +14 -0
- package/src/{FontFace.js → FontFace.ts} +3 -2
- package/src/{InitialConfiguration.js → InitialConfiguration.ts} +33 -12
- package/src/Keys.ts +295 -0
- package/src/ManagedStyles.ts +92 -0
- package/src/MarkedEvents.ts +20 -0
- package/src/{MediaRange.js → MediaRange.ts} +54 -53
- package/src/{PropertiesFileFormat.js → PropertiesFileFormat.ts} +8 -8
- package/src/{Render.js → Render.ts} +25 -20
- package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
- package/src/{Runtimes.js → Runtimes.ts} +15 -8
- package/src/{StaticArea.js → StaticArea.ts} +0 -0
- package/src/{StaticAreaItem.js → StaticAreaItem.ts} +26 -22
- package/src/{SystemCSSVars.js → SystemCSSVars.ts} +0 -0
- package/src/{Theming.js → Theming.ts} +0 -0
- package/src/{UI5Element.js → UI5Element.ts} +263 -153
- package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +120 -58
- package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
- package/src/animations/animate.ts +64 -0
- package/src/animations/scroll.ts +21 -0
- package/src/animations/{slideDown.js → slideDown.ts} +27 -34
- package/src/animations/{slideUp.js → slideUp.ts} +28 -32
- package/src/asset-registries/{Icons.js → Icons.ts} +63 -38
- package/src/asset-registries/Illustrations.ts +75 -0
- package/src/asset-registries/{LocaleData.js → LocaleData.ts} +35 -21
- package/src/asset-registries/{Themes.js → Themes.ts} +14 -29
- package/src/asset-registries/{i18n.js → i18n.ts} +18 -23
- package/src/assets-meta/{IconCollectionsAlias.js → IconCollectionsAlias.ts} +0 -0
- package/src/config/AnimationMode.ts +33 -0
- package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
- package/src/config/FormatSettings.ts +21 -0
- package/src/config/{Icons.js → Icons.ts} +19 -12
- package/src/config/{Language.js → Language.ts} +22 -18
- package/src/config/NoConflict.ts +67 -0
- package/src/config/{RTL.js → RTL.ts} +14 -4
- package/src/config/Theme.ts +64 -0
- package/src/config/{ThemeRoots.js → ThemeRoots.ts} +9 -7
- package/src/decorators/customElement.ts +17 -0
- package/src/decorators/event.ts +28 -0
- package/src/decorators/fastNavigation.ts +14 -0
- package/src/decorators/languageAware.ts +14 -0
- package/src/decorators/property.ts +30 -0
- package/src/decorators/slot.ts +49 -0
- package/src/decorators/themeAware.ts +14 -0
- package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +56 -19
- package/src/delegate/{ResizeHandler.js → ResizeHandler.ts} +25 -36
- package/src/delegate/ScrollEnablement.ts +221 -0
- package/src/features/{F6Navigation.js → F6Navigation.ts} +50 -25
- package/src/features/OpenUI5Element.ts +11 -0
- package/src/features/OpenUI5Enablement.ts +117 -0
- package/src/features/OpenUI5Support.ts +148 -0
- package/src/{getSharedResource.js → getSharedResource.ts} +3 -3
- package/src/{i18nBundle.js → i18nBundle.ts} +45 -23
- package/src/locale/{Locale.js → Locale.ts} +15 -5
- package/src/locale/RTLAwareRegistry.ts +16 -0
- package/src/locale/{applyDirection.js → applyDirection.ts} +4 -3
- package/src/locale/{directionChange.js → directionChange.ts} +6 -4
- package/src/locale/{getEffectiveDir.js → getEffectiveDir.ts} +1 -1
- package/src/locale/{getLocale.js → getLocale.ts} +12 -7
- package/src/locale/languageChange.ts +24 -0
- package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
- package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +5 -3
- package/src/renderer/LitRenderer.ts +60 -0
- package/src/renderer/{executeTemplate.js → executeTemplate.ts} +11 -5
- package/src/theming/{CustomStyle.js → CustomStyle.ts} +11 -9
- package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
- package/src/theming/{applyTheme.js → applyTheme.ts} +16 -10
- package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
- package/src/theming/getEffectiveLinksHrefs.ts +26 -0
- package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +9 -7
- package/src/theming/getStylesString.ts +15 -0
- package/src/theming/{getThemeDesignerTheme.js → getThemeDesignerTheme.ts} +22 -8
- package/src/theming/{preloadLinks.js → preloadLinks.ts} +3 -2
- package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
- package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
- package/src/thirdparty/merge.ts +5 -0
- package/src/types/AnimationMode.ts +33 -0
- package/src/types/{CSSColor.js → CSSColor.ts} +3 -3
- package/src/types/CalendarType.ts +38 -0
- package/src/types/{DOMReference.js → DOMReference.ts} +4 -4
- package/src/types/DataType.ts +51 -0
- package/src/types/{Float.js → Float.ts} +5 -5
- package/src/types/{Integer.js → Integer.ts} +5 -4
- package/src/types/InvisibleMessageMode.ts +27 -0
- package/src/types/ItemNavigationBehavior.ts +26 -0
- package/src/types/NavigationMode.ts +33 -0
- package/src/types/ValueState.ts +47 -0
- package/src/types.ts +30 -0
- package/src/updateShadowRoot.ts +37 -0
- package/src/util/AriaLabelHelper.ts +63 -0
- package/src/util/{Caret.js → Caret.ts} +5 -9
- package/src/util/{ColorConversion.js → ColorConversion.ts} +183 -182
- package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
- package/src/util/FocusableElements.ts +82 -0
- package/src/util/{HTMLSanitizer.js → HTMLSanitizer.ts} +2 -0
- package/src/util/{InvisibleMessage.js → InvisibleMessage.ts} +6 -6
- package/src/util/PopupUtils.ts +112 -0
- package/src/util/{SlotsHelper.js → SlotsHelper.ts} +9 -13
- package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
- package/src/util/TabbableElements.ts +70 -0
- package/src/util/{arraysAreEqual.js → arraysAreEqual.ts} +1 -1
- package/src/util/{clamp.js → clamp.ts} +1 -1
- package/src/util/{createLinkInHead.js → createLinkInHead.ts} +6 -5
- package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
- package/src/util/{debounce.js → debounce.ts} +5 -4
- package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
- package/src/util/escapeRegex.ts +11 -0
- package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
- package/src/util/{generateHighlightedMarkup.js → generateHighlightedMarkup.ts} +7 -6
- package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
- package/src/util/{getClassCopy.js → getClassCopy.ts} +3 -1
- package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
- package/src/util/getEffectiveContentDensity.ts +5 -0
- package/src/util/{getEffectiveScrollbarStyle.js → getEffectiveScrollbarStyle.ts} +0 -0
- package/src/util/{getFastNavigationGroups.js → getFastNavigationGroups.ts} +10 -10
- package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
- package/src/util/{getNormalizedTarget.js → getNormalizedTarget.ts} +2 -2
- package/src/util/{getSingletonElementInstance.js → getSingletonElementInstance.ts} +1 -1
- package/src/util/isElementClickable.ts +19 -0
- package/src/util/isElementHidden.ts +9 -0
- package/src/util/{isElementInView.js → isElementInView.ts} +1 -1
- package/src/util/isElementTabbable.ts +37 -0
- package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +1 -1
- package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
- package/src/util/willShowContent.ts +7 -0
- package/src/{validateThemeRoot.js → validateThemeRoot.ts} +4 -4
- package/tsconfig.json +13 -0
- package/dist/RenderScheduler.js +0 -44
- package/dist/animations/config.js +0 -5
- package/dist/assets/bundle.esm.e2bd78ba.js +0 -55
- package/dist/types/CSSSize.js +0 -20
- package/dist/types/PopupState.js +0 -57
- package/dist/util/isDefaultSlotProvided.js +0 -11
- package/dist/util/isDescendantOf.js +0 -15
- package/dist/util/isNodeClickable.js +0 -19
- package/dist/util/isNodeHidden.js +0 -9
- package/dist/util/isNodeTabbable.js +0 -28
- package/dist/util/setToArray.js +0 -10
- package/src/Boot.js +0 -63
- package/src/DOMObserver.js +0 -65
- package/src/FeaturesRegistry.js +0 -14
- package/src/Keys.js +0 -295
- package/src/ManagedStyles.js +0 -83
- package/src/RenderScheduler.js +0 -44
- package/src/animations/animate.js +0 -53
- package/src/animations/config.js +0 -5
- package/src/animations/scroll.js +0 -28
- package/src/asset-registries/Illustrations.js +0 -59
- package/src/config/AnimationMode.js +0 -23
- package/src/config/FormatSettings.js +0 -13
- package/src/config/NoConflict.js +0 -51
- package/src/config/Theme.js +0 -53
- package/src/delegate/ScrollEnablement.js +0 -188
- package/src/features/OpenUI5Enablement.js +0 -119
- package/src/features/OpenUI5Support.js +0 -126
- package/src/locale/RTLAwareRegistry.js +0 -14
- package/src/locale/languageChange.js +0 -22
- package/src/renderer/LitRenderer.js +0 -52
- package/src/theming/getEffectiveLinksHrefs.js +0 -27
- package/src/theming/getStylesString.js +0 -15
- package/src/thirdparty/merge.js +0 -10
- package/src/types/AnimationMode.js +0 -7
- package/src/types/CSSSize.js +0 -20
- package/src/types/CalendarType.js +0 -59
- package/src/types/DataType.js +0 -43
- package/src/types/InvisibleMessageMode.js +0 -46
- package/src/types/ItemNavigationBehavior.js +0 -16
- package/src/types/NavigationMode.js +0 -7
- package/src/types/PopupState.js +0 -57
- package/src/types/ValueState.js +0 -64
- package/src/updateShadowRoot.js +0 -29
- package/src/util/AriaLabelHelper.js +0 -56
- package/src/util/FocusableElements.js +0 -79
- package/src/util/PopupUtils.js +0 -93
- package/src/util/TabbableElements.js +0 -51
- package/src/util/escapeRegex.js +0 -10
- package/src/util/getEffectiveContentDensity.js +0 -5
- package/src/util/isDefaultSlotProvided.js +0 -11
- package/src/util/isDescendantOf.js +0 -15
- package/src/util/isNodeClickable.js +0 -19
- package/src/util/isNodeHidden.js +0 -9
- package/src/util/isNodeTabbable.js +0 -28
- package/src/util/setToArray.js +0 -10
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { getTheme, isThemeFamily } from "./Theme.js";
|
|
2
2
|
|
|
3
|
-
const IconCollectionConfiguration = new Map();
|
|
3
|
+
const IconCollectionConfiguration = new Map<string, string>();
|
|
4
|
+
|
|
5
|
+
enum IconCollection {
|
|
6
|
+
v4 = "SAP-icons",
|
|
7
|
+
v5 = "SAP-icons-v5",
|
|
8
|
+
}
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
|
-
* Sets the default icon collection (v4 or v5) per theme,
|
|
11
|
+
* Sets the default icon collection (SAP-icons font v4 or SAP-icons font v5) per theme,
|
|
7
12
|
* which will be applied in case icon collection is not specified.
|
|
8
13
|
*
|
|
9
|
-
* Note: by default SAP-icons-v5 is used in SAP Horizon and
|
|
10
|
-
* @
|
|
11
|
-
* @param {
|
|
14
|
+
* Note: by default SAP-icons-v5 is used in all SAP Horizon variants and SAP-icons-v4 for all the rest.
|
|
15
|
+
* @public
|
|
16
|
+
* @param {string} theme
|
|
17
|
+
* @param {IconCollection} collectionName
|
|
12
18
|
*/
|
|
13
|
-
const setDefaultIconCollection = (theme, collectionName) => {
|
|
19
|
+
const setDefaultIconCollection = (theme: string, collectionName: "horizon" | IconCollection) => {
|
|
14
20
|
if (collectionName === "horizon") {
|
|
15
|
-
collectionName =
|
|
21
|
+
collectionName = IconCollection.v5;
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
IconCollectionConfiguration.set(theme, collectionName);
|
|
@@ -22,17 +28,18 @@ const setDefaultIconCollection = (theme, collectionName) => {
|
|
|
22
28
|
* Returns the default icon collection (v4 or v5) for given theme,
|
|
23
29
|
* that is configured.
|
|
24
30
|
*
|
|
25
|
-
* @param {
|
|
26
|
-
* @
|
|
31
|
+
* @param {string} theme
|
|
32
|
+
* @public
|
|
33
|
+
* @returns {string | undefined}
|
|
27
34
|
*/
|
|
28
|
-
const getDefaultIconCollection = theme => {
|
|
35
|
+
const getDefaultIconCollection = (theme: string): string | undefined => {
|
|
29
36
|
return IconCollectionConfiguration.get(theme);
|
|
30
37
|
};
|
|
31
38
|
|
|
32
39
|
/**
|
|
33
40
|
* Returns the effective icon collection that will be applied for icon web components
|
|
34
41
|
* whenever namespace is not specified.
|
|
35
|
-
* @returns {
|
|
42
|
+
* @returns {string}
|
|
36
43
|
*/
|
|
37
44
|
const getEffectiveDefaultIconCollection = () => {
|
|
38
45
|
const currentTheme = getTheme();
|
|
@@ -42,7 +49,7 @@ const getEffectiveDefaultIconCollection = () => {
|
|
|
42
49
|
return currentThemeConfiguration;
|
|
43
50
|
}
|
|
44
51
|
|
|
45
|
-
return isThemeFamily("sap_horizon") ?
|
|
52
|
+
return isThemeFamily("sap_horizon") ? IconCollection.v5 : IconCollection.v4;
|
|
46
53
|
};
|
|
47
54
|
|
|
48
55
|
export {
|
|
@@ -5,35 +5,37 @@ import {
|
|
|
5
5
|
import { fireLanguageChange } from "../locale/languageChange.js";
|
|
6
6
|
import { reRenderAllUI5Elements } from "../Render.js";
|
|
7
7
|
|
|
8
|
-
let
|
|
9
|
-
let fetchDefaultLanguage;
|
|
8
|
+
let curLanguage: string | undefined;
|
|
9
|
+
let fetchDefaultLanguage: boolean;
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Returns the currently configured language, or the browser language as a fallback
|
|
13
|
-
* @
|
|
12
|
+
* Returns the currently configured language, or the browser language as a fallback.
|
|
13
|
+
* @public
|
|
14
|
+
* @returns {string}
|
|
14
15
|
*/
|
|
15
|
-
const getLanguage = () => {
|
|
16
|
-
if (
|
|
17
|
-
|
|
16
|
+
const getLanguage = (): string | undefined => {
|
|
17
|
+
if (curLanguage === undefined) {
|
|
18
|
+
curLanguage = getConfiguredLanguage();
|
|
18
19
|
}
|
|
19
|
-
return
|
|
20
|
+
return curLanguage;
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* Changes the current language, re-fetches all message bundles, updates all language-aware components
|
|
24
|
-
* and returns a promise that resolves when all rendering is done
|
|
25
|
+
* and returns a promise that resolves when all rendering is done.
|
|
25
26
|
*
|
|
26
|
-
* @param
|
|
27
|
+
* @param {string} language
|
|
28
|
+
* @public
|
|
27
29
|
* @returns {Promise<void>}
|
|
28
30
|
*/
|
|
29
|
-
const setLanguage = async
|
|
30
|
-
if (
|
|
31
|
+
const setLanguage = async (language: string): Promise<void> => {
|
|
32
|
+
if (curLanguage === language) {
|
|
31
33
|
return;
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
curLanguage = language;
|
|
35
37
|
|
|
36
|
-
await fireLanguageChange(
|
|
38
|
+
await fireLanguageChange(language);
|
|
37
39
|
await reRenderAllUI5Elements({ languageAware: true });
|
|
38
40
|
};
|
|
39
41
|
|
|
@@ -42,17 +44,19 @@ const setLanguage = async newLanguage => {
|
|
|
42
44
|
* fetched over the network instead of using the inlined one.
|
|
43
45
|
* <b>Note:</b> By default the language will not be fetched.
|
|
44
46
|
*
|
|
45
|
-
* @
|
|
47
|
+
* @public
|
|
48
|
+
* @param {boolean} fetchDefaultLang
|
|
46
49
|
*/
|
|
47
|
-
const setFetchDefaultLanguage = fetchDefaultLang => {
|
|
50
|
+
const setFetchDefaultLanguage = (fetchDefaultLang: boolean) => {
|
|
48
51
|
fetchDefaultLanguage = fetchDefaultLang;
|
|
49
52
|
};
|
|
50
53
|
|
|
51
54
|
/**
|
|
52
55
|
* Returns if the default language, that is inlined, should be fetched over the network.
|
|
53
|
-
* @
|
|
56
|
+
* @public
|
|
57
|
+
* @returns {boolean}
|
|
54
58
|
*/
|
|
55
|
-
const getFetchDefaultLanguage = () => {
|
|
59
|
+
const getFetchDefaultLanguage = (): boolean => {
|
|
56
60
|
if (fetchDefaultLanguage === undefined) {
|
|
57
61
|
setFetchDefaultLanguage(getConfiguredFetchDefaultLanguage());
|
|
58
62
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { getNoConflict as getConfiguredNoConflict } from "../InitialConfiguration.js";
|
|
2
|
+
|
|
3
|
+
// Fire these events even with noConflict: true
|
|
4
|
+
const excludeList = [
|
|
5
|
+
"value-changed",
|
|
6
|
+
];
|
|
7
|
+
|
|
8
|
+
type NoConflictData = boolean | { events: Array<string>};
|
|
9
|
+
|
|
10
|
+
let noConflict: NoConflictData;
|
|
11
|
+
|
|
12
|
+
const shouldFireOriginalEvent = (eventName: string) => {
|
|
13
|
+
return excludeList.includes(eventName);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const shouldNotFireOriginalEvent = (eventName: string) => {
|
|
17
|
+
const nc = getNoConflict();
|
|
18
|
+
// return !(nc.events && nc.events.includes && nc.events.includes(eventName));
|
|
19
|
+
return !(typeof nc !== "boolean" && nc.events && nc.events.includes && nc.events.includes(eventName));
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns if the "noConflict" configuration is set.
|
|
24
|
+
* @public
|
|
25
|
+
* @returns { NoConflictData }
|
|
26
|
+
*/
|
|
27
|
+
const getNoConflict = (): NoConflictData => {
|
|
28
|
+
if (noConflict === undefined) {
|
|
29
|
+
noConflict = getConfiguredNoConflict();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return noConflict;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Sets the "noConflict" mode.
|
|
37
|
+
* - When "false" (default value), all custom events are fired with and without the "ui5-" prefix.
|
|
38
|
+
* - When "true", all custom events are fired with the "ui5-" prefix only.
|
|
39
|
+
* - When an object is supplied, just the specified events will be fired with the "ui5-" prefix.
|
|
40
|
+
* @public
|
|
41
|
+
* @param { NoConflictData } noConflictData
|
|
42
|
+
*/
|
|
43
|
+
const setNoConflict = (noConflictData: NoConflictData) => {
|
|
44
|
+
noConflict = noConflictData;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const skipOriginalEvent = (eventName: string) => {
|
|
48
|
+
const nc = getNoConflict();
|
|
49
|
+
|
|
50
|
+
// Always fire these events
|
|
51
|
+
if (shouldFireOriginalEvent(eventName)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Read from the configuration
|
|
56
|
+
if (nc === true) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return !shouldNotFireOriginalEvent(eventName);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export {
|
|
64
|
+
getNoConflict,
|
|
65
|
+
setNoConflict,
|
|
66
|
+
skipOriginalEvent,
|
|
67
|
+
};
|
|
@@ -12,16 +12,26 @@ const M_ISO639_OLD_TO_NEW = {
|
|
|
12
12
|
|
|
13
13
|
const A_RTL_LOCALES = getDesigntimePropertyAsArray("$cldr-rtl-locales:ar,fa,he$") || [];
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Checks whether the language is using RTL
|
|
17
|
+
* @param {string} language
|
|
18
|
+
* @returns {boolean} whether the language is using RTL
|
|
19
|
+
*/
|
|
20
|
+
const impliesRTL = (language: string) => {
|
|
21
|
+
language = (language && M_ISO639_OLD_TO_NEW[language as keyof typeof M_ISO639_OLD_TO_NEW]) || language;
|
|
17
22
|
|
|
18
23
|
return A_RTL_LOCALES.indexOf(language) >= 0;
|
|
19
24
|
};
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Gets the effective RTL setting by first checking the configuration
|
|
28
|
+
* and if not set using the currently set language or the navigator language if the language is not explicitly set.
|
|
29
|
+
* @returns {boolean} whether RTL should be used
|
|
30
|
+
*/
|
|
31
|
+
const getRTL = (): boolean => {
|
|
22
32
|
const configurationRTL = getConfiguredRTL();
|
|
23
33
|
|
|
24
|
-
if (configurationRTL !==
|
|
34
|
+
if (configurationRTL !== undefined) {
|
|
25
35
|
return !!configurationRTL;
|
|
26
36
|
}
|
|
27
37
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { getTheme as getConfiguredTheme } from "../InitialConfiguration.js";
|
|
2
|
+
import { reRenderAllUI5Elements } from "../Render.js";
|
|
3
|
+
import applyTheme from "../theming/applyTheme.js";
|
|
4
|
+
|
|
5
|
+
let curTheme: string;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Returns the current theme.
|
|
9
|
+
* @public
|
|
10
|
+
* @returns {string} the current theme name
|
|
11
|
+
*/
|
|
12
|
+
const getTheme = (): string => {
|
|
13
|
+
if (curTheme === undefined) {
|
|
14
|
+
curTheme = getConfiguredTheme();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return curTheme;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Applies a new theme after fetching its assets from the network.
|
|
22
|
+
* @public
|
|
23
|
+
* @param {string} theme the name of the new theme
|
|
24
|
+
* @returns {Promise<void>} a promise that is resolved when the new theme assets have been fetched and applied to the DOM
|
|
25
|
+
*/
|
|
26
|
+
const setTheme = async (theme: string): Promise<void> => {
|
|
27
|
+
if (curTheme === theme) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
curTheme = theme;
|
|
32
|
+
|
|
33
|
+
// Update CSS Custom Properties
|
|
34
|
+
await applyTheme(curTheme);
|
|
35
|
+
await reRenderAllUI5Elements({ themeAware: true });
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Returns if the given theme name is the one currently applied.
|
|
40
|
+
* @private
|
|
41
|
+
* @param {string} theme
|
|
42
|
+
* @returns {boolean}
|
|
43
|
+
*/
|
|
44
|
+
const isTheme = (theme: string) => {
|
|
45
|
+
const currentTheme = getTheme();
|
|
46
|
+
return currentTheme === theme || currentTheme === `${theme}_exp`;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Returns if the current theme is part of given theme family.
|
|
51
|
+
* @private
|
|
52
|
+
* @param {string} theme the theme family
|
|
53
|
+
* @returns {boolean}
|
|
54
|
+
*/
|
|
55
|
+
const isThemeFamily = (theme: string) => {
|
|
56
|
+
return getTheme().startsWith(theme);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
getTheme,
|
|
61
|
+
setTheme,
|
|
62
|
+
isTheme,
|
|
63
|
+
isThemeFamily,
|
|
64
|
+
};
|
|
@@ -2,9 +2,9 @@ import createLinkInHead from "../util/createLinkInHead.js";
|
|
|
2
2
|
import validateThemeRoot from "../validateThemeRoot.js";
|
|
3
3
|
import { getThemeRoot as getConfiguredThemeRoot } from "../InitialConfiguration.js";
|
|
4
4
|
|
|
5
|
-
let themeRoot;
|
|
5
|
+
let themeRoot: string | undefined;
|
|
6
6
|
|
|
7
|
-
const getThemeRoot = () => {
|
|
7
|
+
const getThemeRoot = (): string | undefined => {
|
|
8
8
|
if (themeRoot === undefined) {
|
|
9
9
|
themeRoot = getConfiguredThemeRoot();
|
|
10
10
|
}
|
|
@@ -12,17 +12,19 @@ const getThemeRoot = () => {
|
|
|
12
12
|
return themeRoot;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
const setThemeRoot = (theme, newThemeRoot) => {
|
|
15
|
+
const setThemeRoot = (theme: string, newThemeRoot: string) => {
|
|
16
16
|
themeRoot = validateThemeRoot(newThemeRoot);
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
if (themeRoot) {
|
|
19
|
+
attachCustomThemeStylesToHead(theme);
|
|
20
|
+
}
|
|
19
21
|
};
|
|
20
22
|
|
|
21
|
-
const formatThemeLink = theme => {
|
|
22
|
-
return `${getThemeRoot()}Base/baseLib/${theme}/css_variables.css`;
|
|
23
|
+
const formatThemeLink = (theme: string) => {
|
|
24
|
+
return `${getThemeRoot()!}Base/baseLib/${theme}/css_variables.css`; // theme root is always set.
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
const attachCustomThemeStylesToHead = async theme => {
|
|
27
|
+
const attachCustomThemeStylesToHead = async (theme: string) => {
|
|
26
28
|
const link = document.querySelector(`[sap-ui-webcomponents-theme="${theme}"]`);
|
|
27
29
|
|
|
28
30
|
if (link) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a custom element class decorator.
|
|
3
|
+
*
|
|
4
|
+
* @param { string } tag
|
|
5
|
+
* @returns { ClassDecorator }
|
|
6
|
+
*/
|
|
7
|
+
const customElement = (tag: string): ClassDecorator => {
|
|
8
|
+
return (target: any) => {
|
|
9
|
+
if (!Object.prototype.hasOwnProperty.call(target, "decoratorMetadata")) {
|
|
10
|
+
target.decoratorMetadata = {};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
target.decoratorMetadata.tag = tag;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default customElement;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { EventData } from "../UI5ElementMetadata.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns an event class decorator.
|
|
5
|
+
*
|
|
6
|
+
* @param { string } name the event name
|
|
7
|
+
* @param { EventData } data the event data
|
|
8
|
+
* @returns { ClassDecorator }
|
|
9
|
+
*/
|
|
10
|
+
const event = (name: string, data: EventData = {}): ClassDecorator => {
|
|
11
|
+
return (target: any) => {
|
|
12
|
+
if (!Object.prototype.hasOwnProperty.call(target, "decoratorMetadata")) {
|
|
13
|
+
target.decoratorMetadata = {};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const decoratorMetadata = target.decoratorMetadata;
|
|
17
|
+
if (!decoratorMetadata.events) {
|
|
18
|
+
decoratorMetadata.events = {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const eventsMetadata = decoratorMetadata.events;
|
|
22
|
+
if (!eventsMetadata[name]) {
|
|
23
|
+
eventsMetadata[name] = data;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default event;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class decorator, that sets the fastNavigation metadata.
|
|
3
|
+
* @param { any } target the decorated class
|
|
4
|
+
* @returns { void }
|
|
5
|
+
*/
|
|
6
|
+
const fastNavigation = (target: any): void => {
|
|
7
|
+
if (!Object.prototype.hasOwnProperty.call(target, "decoratorMetadata")) {
|
|
8
|
+
target.decoratorMetadata = {};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
target.decoratorMetadata.fastNavigation = true;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default fastNavigation;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class decorator, that sets the languageAware metadata.
|
|
3
|
+
* @param { any } target the decorated class
|
|
4
|
+
* @returns { void }
|
|
5
|
+
*/
|
|
6
|
+
const languageAware = (target: any): void => {
|
|
7
|
+
if (!Object.prototype.hasOwnProperty.call(target, "decoratorMetadata")) {
|
|
8
|
+
target.decoratorMetadata = {};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
target.decoratorMetadata.languageAware = true;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default languageAware;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type UI5Element from "../UI5Element.js";
|
|
2
|
+
import { Property } from "../UI5ElementMetadata.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns a property decorator.
|
|
6
|
+
*
|
|
7
|
+
* @param { Property } propData
|
|
8
|
+
* @returns { PropertyDecorator }
|
|
9
|
+
*/
|
|
10
|
+
const property = (propData?: Property): PropertyDecorator => {
|
|
11
|
+
return (target: any, propertyKey: string | symbol) => {
|
|
12
|
+
const ctor = target.constructor as typeof UI5Element;
|
|
13
|
+
|
|
14
|
+
if (!Object.prototype.hasOwnProperty.call(ctor, "decoratorMetadata")) {
|
|
15
|
+
ctor.decoratorMetadata = {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const decoratorMetadata = ctor.decoratorMetadata;
|
|
19
|
+
if (!decoratorMetadata.properties) {
|
|
20
|
+
decoratorMetadata.properties = {};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const propsMetadata = decoratorMetadata.properties;
|
|
24
|
+
if (!propsMetadata[propertyKey as string]) {
|
|
25
|
+
propsMetadata[propertyKey as string] = propData || { type: String };
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default property;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type UI5Element from "../UI5Element.js";
|
|
2
|
+
import { Slot } from "../UI5ElementMetadata.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns a slot decorator.
|
|
6
|
+
*
|
|
7
|
+
* @param { Slot } slotData
|
|
8
|
+
* @returns { PropertyDecorator }
|
|
9
|
+
*/
|
|
10
|
+
const slot = (slotData?: Slot): PropertyDecorator => {
|
|
11
|
+
return (target: any, slotKey: string | symbol) => {
|
|
12
|
+
const ctor = target.constructor as typeof UI5Element;
|
|
13
|
+
|
|
14
|
+
if (!Object.prototype.hasOwnProperty.call(ctor, "decoratorMetadata")) {
|
|
15
|
+
ctor.decoratorMetadata = {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const decoratorMetadata = ctor.decoratorMetadata;
|
|
19
|
+
if (!decoratorMetadata.slots) {
|
|
20
|
+
decoratorMetadata.slots = {};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const slotMetadata = decoratorMetadata.slots;
|
|
24
|
+
|
|
25
|
+
if (slotData?.default && slotMetadata.default) {
|
|
26
|
+
throw new Error("Only one slot can be the default slot.");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const key = slotData?.default ? "default" : slotKey as string;
|
|
30
|
+
slotData = slotData || { type: HTMLElement };
|
|
31
|
+
|
|
32
|
+
if (!slotData.type) {
|
|
33
|
+
slotData.type = HTMLElement;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (!slotMetadata[key]) {
|
|
37
|
+
slotMetadata[key] = slotData;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (slotData.default) {
|
|
41
|
+
delete slotMetadata.default.default;
|
|
42
|
+
slotMetadata.default.propertyName = slotKey as string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
ctor.decoratorMetadata.managedSlots = true;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default slot;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class decorator, that sets the themeAware metadata.
|
|
3
|
+
* @param { any } target the decorated class
|
|
4
|
+
* @returns { void }
|
|
5
|
+
*/
|
|
6
|
+
const themeAware = (target: any): void => {
|
|
7
|
+
if (!Object.prototype.hasOwnProperty.call(target, "decoratorMetadata")) {
|
|
8
|
+
target.decoratorMetadata = {};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
target.decoratorMetadata.themeAware = true;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default themeAware;
|
|
@@ -13,6 +13,24 @@ import getActiveElement from "../util/getActiveElement.js";
|
|
|
13
13
|
import NavigationMode from "../types/NavigationMode.js";
|
|
14
14
|
import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
|
|
15
15
|
|
|
16
|
+
import type UI5Element from "../UI5Element.js";
|
|
17
|
+
import { instanceOfUI5Element } from "../UI5Element.js";
|
|
18
|
+
|
|
19
|
+
interface ITabbable {
|
|
20
|
+
id: string,
|
|
21
|
+
_tabIndex: string,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type ItemNavigationOptions = {
|
|
25
|
+
currentIndex?: number,
|
|
26
|
+
navigationMode?: NavigationMode,
|
|
27
|
+
rowSize?: number
|
|
28
|
+
skipItemsSize?: number,
|
|
29
|
+
behavior?: ItemNavigationBehavior,
|
|
30
|
+
getItemsCallback: () => Array<ITabbable>,
|
|
31
|
+
affectedPropertiesNames?: Array<string>,
|
|
32
|
+
};
|
|
33
|
+
|
|
16
34
|
/**
|
|
17
35
|
* The ItemNavigation class manages the calculations to determine the correct "tabindex" for a group of related items inside a root component.
|
|
18
36
|
* Important: ItemNavigation only does the calculations and does not change "tabindex" directly, this is a responsibility of the developer.
|
|
@@ -47,10 +65,26 @@ import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
|
|
|
47
65
|
* @public
|
|
48
66
|
*/
|
|
49
67
|
class ItemNavigation {
|
|
68
|
+
rootWebComponent: UI5Element;
|
|
69
|
+
|
|
70
|
+
_getItems: () => Array<ITabbable>;
|
|
71
|
+
|
|
72
|
+
_currentIndex: number;
|
|
73
|
+
|
|
74
|
+
_rowSize: number;
|
|
75
|
+
|
|
76
|
+
_behavior: ItemNavigationBehavior;
|
|
77
|
+
|
|
78
|
+
_navigationMode: NavigationMode;
|
|
79
|
+
|
|
80
|
+
_affectedPropertiesNames: Array<string>;
|
|
81
|
+
|
|
82
|
+
_skipItemsSize: number | null;
|
|
83
|
+
|
|
50
84
|
/**
|
|
51
85
|
*
|
|
52
86
|
* @param rootWebComponent the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
|
|
53
|
-
* @param options Object with configuration options:
|
|
87
|
+
* @param {ItemNavigationOptions} options Object with configuration options:
|
|
54
88
|
* - currentIndex: the index of the item that will be initially selected (from which navigation will begin)
|
|
55
89
|
* - navigationMode (Auto|Horizontal|Vertical): whether the items are displayed horizontally (Horizontal), vertically (Vertical) or as a matrix (Auto) meaning the user can navigate in both directions (up/down and left/right)
|
|
56
90
|
* - rowSize: tells how many items per row there are when the items are not rendered as a flat list but rather as a matrix. Relevant for navigationMode=Auto
|
|
@@ -61,23 +95,17 @@ class ItemNavigation {
|
|
|
61
95
|
* - getItemsCallback: function that, when called, returns an array with all items the user can navigate among
|
|
62
96
|
* - affectedPropertiesNames: a list of metadata properties on the root component which, upon user navigation, will be reassigned by address thus causing the root component to invalidate
|
|
63
97
|
*/
|
|
64
|
-
constructor(rootWebComponent, options
|
|
65
|
-
this._setRootComponent(rootWebComponent);
|
|
66
|
-
this._initOptions(options);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
_setRootComponent(rootWebComponent) {
|
|
98
|
+
constructor(rootWebComponent: UI5Element, options: ItemNavigationOptions) {
|
|
70
99
|
if (!rootWebComponent.isUI5Element) {
|
|
71
100
|
throw new Error("The root web component must be a UI5 Element instance");
|
|
72
101
|
}
|
|
102
|
+
|
|
73
103
|
this.rootWebComponent = rootWebComponent;
|
|
74
104
|
this.rootWebComponent.addEventListener("keydown", this._onkeydown.bind(this));
|
|
75
105
|
this.rootWebComponent._onComponentStateFinalized = () => {
|
|
76
106
|
this._init();
|
|
77
107
|
};
|
|
78
|
-
}
|
|
79
108
|
|
|
80
|
-
_initOptions(options) {
|
|
81
109
|
if (typeof options.getItemsCallback !== "function") {
|
|
82
110
|
throw new Error("getItemsCallback is required");
|
|
83
111
|
}
|
|
@@ -98,7 +126,7 @@ class ItemNavigation {
|
|
|
98
126
|
* @public
|
|
99
127
|
* @param current the new selected item
|
|
100
128
|
*/
|
|
101
|
-
setCurrentItem(current) {
|
|
129
|
+
setCurrentItem(current: ITabbable) {
|
|
102
130
|
const currentItemIndex = this._getItems().indexOf(current);
|
|
103
131
|
|
|
104
132
|
if (currentItemIndex === -1) {
|
|
@@ -116,7 +144,7 @@ class ItemNavigation {
|
|
|
116
144
|
* @public
|
|
117
145
|
* @param newRowSize
|
|
118
146
|
*/
|
|
119
|
-
setRowSize(newRowSize) {
|
|
147
|
+
setRowSize(newRowSize: number) {
|
|
120
148
|
this._rowSize = newRowSize;
|
|
121
149
|
}
|
|
122
150
|
|
|
@@ -126,7 +154,7 @@ class ItemNavigation {
|
|
|
126
154
|
});
|
|
127
155
|
}
|
|
128
156
|
|
|
129
|
-
_onkeydown(event) {
|
|
157
|
+
_onkeydown(event: KeyboardEvent) {
|
|
130
158
|
if (!this._canNavigate()) {
|
|
131
159
|
return;
|
|
132
160
|
}
|
|
@@ -260,6 +288,7 @@ class ItemNavigation {
|
|
|
260
288
|
if (this._skipItemsSize === null) {
|
|
261
289
|
// Move the focus to the very top (as Home).
|
|
262
290
|
this._currentIndex -= this._currentIndex;
|
|
291
|
+
return;
|
|
263
292
|
}
|
|
264
293
|
|
|
265
294
|
if (this._currentIndex + 1 > this._skipItemsSize) {
|
|
@@ -279,6 +308,7 @@ class ItemNavigation {
|
|
|
279
308
|
if (this._skipItemsSize === null) {
|
|
280
309
|
// Move the focus to the very bottom (as End).
|
|
281
310
|
this._currentIndex = this._getItems().length - 1;
|
|
311
|
+
return;
|
|
282
312
|
}
|
|
283
313
|
|
|
284
314
|
const currentToEndRange = this._getItems().length - this._currentIndex - 1;
|
|
@@ -300,15 +330,15 @@ class ItemNavigation {
|
|
|
300
330
|
}
|
|
301
331
|
|
|
302
332
|
this._affectedPropertiesNames.forEach(propName => {
|
|
303
|
-
const prop = this.rootWebComponent[propName];
|
|
304
|
-
this.rootWebComponent[propName] = Array.isArray(prop) ? [...prop] : { ...prop };
|
|
333
|
+
const prop = (this.rootWebComponent as Record<string, any>)[propName];
|
|
334
|
+
(this.rootWebComponent as Record<string, any>)[propName] = Array.isArray(prop) ? [...prop] : { ...prop };
|
|
305
335
|
});
|
|
306
336
|
}
|
|
307
337
|
|
|
308
338
|
_focusCurrentItem() {
|
|
309
339
|
const currentItem = this._getCurrentItem();
|
|
310
340
|
if (currentItem) {
|
|
311
|
-
currentItem.focus();
|
|
341
|
+
currentItem.focus({ focusVisible: true } as FocusOptions);
|
|
312
342
|
}
|
|
313
343
|
}
|
|
314
344
|
|
|
@@ -323,7 +353,7 @@ class ItemNavigation {
|
|
|
323
353
|
const items = this._getItems();
|
|
324
354
|
|
|
325
355
|
if (!items.length) {
|
|
326
|
-
return
|
|
356
|
+
return;
|
|
327
357
|
}
|
|
328
358
|
|
|
329
359
|
// normalize the index
|
|
@@ -341,16 +371,23 @@ class ItemNavigation {
|
|
|
341
371
|
return;
|
|
342
372
|
}
|
|
343
373
|
|
|
344
|
-
if (currentItem
|
|
374
|
+
if (instanceOfUI5Element(currentItem)) {
|
|
345
375
|
return currentItem.getFocusDomRef();
|
|
346
376
|
}
|
|
347
377
|
|
|
348
|
-
|
|
378
|
+
const currentItemDOMRef = this.rootWebComponent.getDomRef();
|
|
379
|
+
if (!currentItemDOMRef) {
|
|
349
380
|
return;
|
|
350
381
|
}
|
|
351
382
|
|
|
352
|
-
|
|
383
|
+
if (currentItem.id) {
|
|
384
|
+
return currentItemDOMRef.querySelector(`#${currentItem.id}`) as HTMLElement;
|
|
385
|
+
}
|
|
353
386
|
}
|
|
354
387
|
}
|
|
355
388
|
|
|
356
389
|
export default ItemNavigation;
|
|
390
|
+
|
|
391
|
+
export {
|
|
392
|
+
ITabbable,
|
|
393
|
+
};
|