@ui5/webcomponents-base 0.0.0-4180fe799 → 0.0.0-4738ea0dc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +3 -1
- package/CHANGELOG.md +437 -0
- package/README.md +28 -6
- package/bundle.esm.js +15 -11
- 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 +35 -30
- 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 +69 -30
- package/dist/CustomElementsRegistry.js.map +1 -0
- package/dist/CustomElementsScope.d.ts +7 -0
- package/dist/CustomElementsScope.js +11 -108
- package/dist/CustomElementsScope.js.map +1 -0
- package/dist/CustomElementsScopeUtils.d.ts +55 -0
- package/dist/CustomElementsScopeUtils.js +90 -0
- 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 +148 -89
- 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 -7
- 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 +112 -131
- package/dist/InitialConfiguration.js.map +1 -0
- package/dist/Keys.d.ts +57 -0
- package/dist/Keys.js +174 -244
- 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 +86 -0
- 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 +85 -84
- 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 +378 -0
- package/dist/UI5Element.js +917 -980
- package/dist/UI5Element.js.map +1 -0
- package/dist/UI5ElementMetadata.d.ts +150 -0
- package/dist/UI5ElementMetadata.js +278 -306
- 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 -0
- package/dist/asset-registries/Icons.d.ts +30 -0
- package/dist/asset-registries/Icons.js +88 -123
- package/dist/asset-registries/Icons.js.map +1 -0
- package/dist/asset-registries/Illustrations.d.ts +17 -0
- package/dist/asset-registries/Illustrations.js +41 -25
- 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 -127
- package/dist/asset-registries/LocaleData.js.map +1 -0
- package/dist/asset-registries/Themes.d.ts +11 -0
- package/dist/asset-registries/Themes.js +38 -66
- package/dist/asset-registries/Themes.js.map +1 -0
- package/dist/asset-registries/i18n.d.ts +23 -0
- package/dist/asset-registries/i18n.js +55 -81
- package/dist/asset-registries/i18n.js.map +1 -0
- package/dist/assets/bundle.esm.0059c2ef.js +60 -0
- package/dist/assets-meta/IconCollectionsAlias.d.ts +31 -0
- package/dist/assets-meta/IconCollectionsAlias.js +30 -10
- 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 +15 -0
- package/dist/config/FormatSettings.js +15 -9
- package/dist/config/FormatSettings.js.map +1 -0
- package/dist/config/Icons.d.ts +55 -0
- package/dist/config/Icons.js +103 -0
- 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 +26 -20
- package/dist/config/RTL.js.map +1 -0
- package/dist/config/Theme.d.ts +28 -0
- package/dist/config/Theme.js +38 -29
- package/dist/config/Theme.js.map +1 -0
- package/dist/config/ThemeRoots.d.ts +4 -0
- package/dist/config/ThemeRoots.js +28 -0
- package/dist/config/ThemeRoots.js.map +1 -0
- package/dist/css/BusyIndicator.css +80 -0
- package/dist/css/FontFace.css +31 -10
- package/dist/decorators/customElement.d.ts +23 -0
- package/dist/decorators/customElement.js +31 -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 -312
- package/dist/delegate/ItemNavigation.js.map +1 -0
- package/dist/delegate/ResizeHandler.d.ts +25 -0
- package/dist/delegate/ResizeHandler.js +70 -91
- package/dist/delegate/ResizeHandler.js.map +1 -0
- package/dist/delegate/ScrollEnablement.d.ts +49 -0
- package/dist/delegate/ScrollEnablement.js +157 -180
- package/dist/delegate/ScrollEnablement.js.map +1 -0
- package/dist/features/F6Navigation.d.ts +19 -0
- package/dist/features/F6Navigation.js +151 -0
- package/dist/features/F6Navigation.js.map +1 -0
- package/dist/features/LegacyDateFormats.d.ts +18 -0
- package/dist/features/LegacyDateFormats.js +20 -0
- package/dist/features/LegacyDateFormats.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 +96 -0
- package/dist/features/OpenUI5Enablement.js.map +1 -0
- package/dist/features/OpenUI5Support.d.ts +25 -0
- package/dist/features/OpenUI5Support.js +92 -119
- package/dist/features/OpenUI5Support.js.map +1 -0
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/generated/VersionInfo.js +10 -0
- package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
- package/dist/generated/css/BusyIndicator.css.js +7 -0
- package/dist/generated/css/BusyIndicator.css.js.map +1 -0
- package/dist/generated/css/FontFace.css.d.ts +3 -0
- package/dist/generated/css/FontFace.css.js +7 -5
- package/dist/generated/css/FontFace.css.js.map +1 -0
- package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
- package/dist/generated/css/OverrideFontFace.css.js +7 -5
- package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
- package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
- package/dist/generated/css/SystemCSSVars.css.js +7 -5
- package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
- package/dist/getSharedResource.d.ts +11 -0
- package/dist/getSharedResource.js +21 -17
- package/dist/getSharedResource.js.map +1 -0
- package/dist/global.d.ts +38 -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 +31 -24
- package/dist/renderer/LitRenderer.js.map +1 -0
- package/dist/renderer/executeTemplate.d.ts +13 -0
- package/dist/renderer/executeTemplate.js +20 -7
- 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/sap/base/security/encodeCSS.js +14 -0
- package/dist/sap/base/security/encodeXML.js +23 -0
- package/dist/sap/base/strings/toHex.js +8 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
- package/dist/theming/CustomStyle.d.ts +6 -0
- package/dist/theming/CustomStyle.js +39 -31
- 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 +60 -60
- 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 +13 -16
- package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
- package/dist/theming/getEffectiveStyle.d.ts +3 -0
- package/dist/theming/getEffectiveStyle.js +25 -23
- 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 +73 -61
- 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 +15 -5
- package/dist/types/CSSColor.js.map +1 -0
- package/dist/types/CalendarType.d.ts +37 -0
- package/dist/types/CalendarType.js +35 -18
- package/dist/types/CalendarType.js.map +1 -0
- package/dist/types/DOMReference.d.ts +17 -0
- package/dist/types/DOMReference.js +25 -0
- package/dist/types/DOMReference.js.map +1 -0
- package/dist/types/DataType.d.ts +25 -0
- package/dist/types/DataType.js +33 -26
- package/dist/types/DataType.js.map +1 -0
- package/dist/types/Float.d.ts +18 -0
- package/dist/types/Float.js +18 -10
- package/dist/types/Float.js.map +1 -0
- package/dist/types/Integer.d.ts +18 -0
- package/dist/types/Integer.js +18 -9
- package/dist/types/Integer.js.map +1 -0
- package/dist/types/InvisibleMessageMode.d.ts +25 -0
- package/dist/types/InvisibleMessageMode.js +20 -23
- 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 +41 -19
- 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 +25 -17
- package/dist/updateShadowRoot.js.map +1 -0
- package/dist/util/AriaLabelHelper.d.ts +15 -0
- package/dist/util/AriaLabelHelper.js +166 -36
- package/dist/util/AriaLabelHelper.js.map +1 -0
- package/dist/util/Caret.d.ts +7 -0
- package/dist/util/Caret.js +16 -38
- package/dist/util/Caret.js.map +1 -0
- package/dist/util/ColorConversion.d.ts +30 -0
- package/dist/util/ColorConversion.js +315 -348
- 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 +66 -72
- 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 +42 -44
- 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 -43
- 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 -12
- 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 +11 -0
- 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 +41 -0
- 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 +398 -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 +4 -0
- package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
- package/dist/util/getFastNavigationGroups.d.ts +2 -0
- package/dist/util/getFastNavigationGroups.js +51 -0
- 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 +14 -0
- 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 +47 -0
- package/dist/validateThemeRoot.js.map +1 -0
- package/lib/generate-asset-parameters/index.js +8 -4
- package/lib/generate-styles/index.js +24 -11
- package/lib/generate-version-info/index.js +32 -0
- package/package-scripts.js +34 -28
- package/package.json +7 -6
- package/src/Boot.ts +65 -0
- package/src/{CSP.js → CSP.ts} +14 -7
- package/src/CustomElementsRegistry.ts +98 -0
- package/src/CustomElementsScope.ts +33 -0
- package/src/{CustomElementsScope.js → CustomElementsScopeUtils.ts} +14 -7
- package/src/DOMObserver.ts +28 -0
- package/src/Device.ts +203 -0
- 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} +54 -13
- 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.ts +114 -0
- package/src/{StaticAreaItem.js → StaticAreaItem.ts} +33 -18
- package/src/{UI5Element.js → UI5Element.ts} +289 -148
- package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +129 -59
- 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.ts +161 -0
- package/src/asset-registries/Illustrations.ts +75 -0
- package/src/asset-registries/{LocaleData.js → LocaleData.ts} +42 -29
- package/src/asset-registries/Themes.ts +72 -0
- package/src/asset-registries/{i18n.js → i18n.ts} +21 -24
- package/src/assets-meta/IconCollectionsAlias.ts +41 -0
- package/src/config/AnimationMode.ts +33 -0
- package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
- package/src/config/FormatSettings.ts +35 -0
- package/src/config/Icons.ts +126 -0
- package/src/config/{Language.js → Language.ts} +22 -18
- package/src/config/NoConflict.ts +67 -0
- package/src/config/{RTL.js → RTL.ts} +18 -4
- package/src/config/Theme.ts +64 -0
- package/src/config/ThemeRoots.ts +41 -0
- package/src/css/BusyIndicator.css +80 -0
- package/src/css/FontFace.css +31 -10
- package/src/decorators/customElement.ts +57 -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} +65 -23
- package/src/delegate/ResizeHandler.ts +100 -0
- package/src/delegate/ScrollEnablement.ts +224 -0
- package/src/features/F6Navigation.ts +195 -0
- package/src/features/LegacyDateFormats.ts +40 -0
- package/src/features/OpenUI5Element.ts +11 -0
- package/src/features/OpenUI5Enablement.ts +117 -0
- package/src/features/OpenUI5Support.ts +153 -0
- package/src/generated/css/BusyIndicator.css.ts +9 -0
- package/src/generated/css/FontFace.css.ts +9 -0
- package/src/generated/css/OverrideFontFace.css.ts +9 -0
- package/src/generated/css/SystemCSSVars.css.ts +9 -0
- package/src/{getSharedResource.js → getSharedResource.ts} +13 -4
- package/src/global.d.ts +38 -0
- package/src/{i18nBundle.js → i18nBundle.ts} +44 -22
- 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.ts +40 -0
- package/src/theming/CustomStyle.ts +64 -0
- package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
- package/src/theming/{applyTheme.js → applyTheme.ts} +30 -15
- package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
- package/src/theming/getEffectiveLinksHrefs.ts +26 -0
- package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +15 -4
- package/src/theming/getStylesString.ts +15 -0
- package/src/theming/getThemeDesignerTheme.ts +101 -0
- 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} +12 -1
- package/src/types/CalendarType.ts +38 -0
- package/src/types/DOMReference.ts +28 -0
- package/src/types/DataType.ts +51 -0
- package/src/types/Float.ts +25 -0
- package/src/types/Integer.ts +25 -0
- 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 +42 -0
- package/src/util/AriaLabelHelper.ts +218 -0
- package/src/util/Caret.ts +28 -0
- package/src/util/ColorConversion.ts +399 -0
- package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
- package/src/util/FocusableElements.ts +92 -0
- package/src/util/{HTMLSanitizer.js → HTMLSanitizer.ts} +2 -0
- package/src/util/{InvisibleMessage.js → InvisibleMessage.ts} +25 -14
- 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} +10 -4
- 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.ts +43 -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.ts +5 -0
- package/src/util/getFastNavigationGroups.ts +63 -0
- package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
- package/src/util/getNormalizedTarget.ts +16 -0
- 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.ts +58 -0
- package/tsconfig.json +13 -0
- package/used-modules.txt +4 -1
- package/config/.eslintrc.js +0 -3
- package/config/rollup.config.js +0 -1
- package/dist/RenderScheduler.js +0 -44
- package/dist/animations/config.js +0 -5
- package/dist/isLegacyBrowser.js +0 -3
- package/dist/resources/bundle.esm.js +0 -37
- package/dist/resources/bundle.esm.js.map +0 -1
- package/dist/test-resources/assets/Themes.js +0 -17
- package/dist/test-resources/elements/Child.js +0 -35
- package/dist/test-resources/elements/Generic.js +0 -84
- package/dist/test-resources/elements/GenericExt.js +0 -26
- package/dist/test-resources/elements/NoShadowDOM.js +0 -13
- package/dist/test-resources/elements/Parent.js +0 -41
- package/dist/test-resources/elements/WithStaticArea.js +0 -77
- package/dist/test-resources/pages/AllTestElements.html +0 -42
- package/dist/test-resources/pages/Configuration.html +0 -18
- package/dist/test-resources/pages/ConfigurationScript.html +0 -34
- package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
- package/dist/test-resources/pages/i18n.html +0 -33
- package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
- package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
- package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -93
- package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
- package/dist/test-resources/specs/EventProvider.spec.js +0 -63
- package/dist/test-resources/specs/StaticArea.spec.js +0 -78
- package/dist/test-resources/specs/Theming.spec.js +0 -33
- package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
- package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
- package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
- package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
- package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
- package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
- package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
- package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
- package/dist/types/CSSSize.js +0 -9
- package/dist/types/PopupState.js +0 -37
- package/dist/util/encodeCSS.js +0 -24
- package/dist/util/findNodeOwner.js +0 -35
- 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/hash.txt +0 -1
- package/src/Boot.js +0 -43
- package/src/CustomElementsRegistry.js +0 -39
- package/src/DOMObserver.js +0 -65
- package/src/Device.js +0 -107
- package/src/FeaturesRegistry.js +0 -11
- package/src/Keys.js +0 -248
- 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/Icons.js +0 -139
- package/src/asset-registries/Illustrations.js +0 -30
- package/src/asset-registries/Themes.js +0 -78
- package/src/assets-meta/IconCollectionsAlias.js +0 -18
- 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 -42
- package/src/delegate/ResizeHandler.js +0 -106
- package/src/delegate/ScrollEnablement.js +0 -188
- package/src/features/OpenUI5Support.js +0 -125
- package/src/isLegacyBrowser.js +0 -3
- package/src/locale/RTLAwareRegistry.js +0 -14
- package/src/locale/languageChange.js +0 -22
- package/src/renderer/LitRenderer.js +0 -34
- package/src/renderer/executeTemplate.js +0 -17
- package/src/theming/CustomStyle.js +0 -40
- package/src/theming/getEffectiveLinksHrefs.js +0 -20
- package/src/theming/getStylesString.js +0 -15
- package/src/theming/getThemeDesignerTheme.js +0 -68
- package/src/thirdparty/merge.js +0 -10
- package/src/types/AnimationMode.js +0 -7
- package/src/types/CSSSize.js +0 -9
- package/src/types/CalendarType.js +0 -22
- package/src/types/DataType.js +0 -37
- package/src/types/Float.js +0 -14
- package/src/types/Integer.js +0 -13
- package/src/types/InvisibleMessageMode.js +0 -30
- package/src/types/ItemNavigationBehavior.js +0 -16
- package/src/types/NavigationMode.js +0 -7
- package/src/types/PopupState.js +0 -37
- package/src/types/ValueState.js +0 -22
- package/src/updateShadowRoot.js +0 -30
- package/src/util/AriaLabelHelper.js +0 -41
- package/src/util/Caret.js +0 -45
- package/src/util/ColorConversion.js +0 -370
- package/src/util/FocusableElements.js +0 -77
- package/src/util/PopupUtils.js +0 -93
- package/src/util/TabbableElements.js +0 -47
- package/src/util/encodeCSS.js +0 -24
- package/src/util/findNodeOwner.js +0 -35
- package/src/util/getEffectiveContentDensity.js +0 -5
- 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
- /package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
- /package/src/{StaticArea.js → StaticArea.ts} +0 -0
- /package/src/{SystemCSSVars.js → SystemCSSVars.ts} +0 -0
- /package/src/{Theming.js → Theming.ts} +0 -0
- /package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
|
@@ -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, "metadata")) {
|
|
8
|
+
target.metadata = {};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
target.metadata.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, "metadata")) {
|
|
8
|
+
target.metadata = {};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
target.metadata.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, "metadata")) {
|
|
15
|
+
ctor.metadata = {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const metadata = ctor.metadata;
|
|
19
|
+
if (!metadata.properties) {
|
|
20
|
+
metadata.properties = {};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const propsMetadata = metadata.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, "metadata")) {
|
|
15
|
+
ctor.metadata = {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const metadata = ctor.metadata;
|
|
19
|
+
if (!metadata.slots) {
|
|
20
|
+
metadata.slots = {};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const slotMetadata = metadata.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.metadata.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, "metadata")) {
|
|
8
|
+
target.metadata = {};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
target.metadata.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,22 +154,27 @@ 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
|
}
|
|
133
161
|
|
|
134
162
|
const horizontalNavigationOn = this._navigationMode === NavigationMode.Horizontal || this._navigationMode === NavigationMode.Auto;
|
|
135
163
|
const verticalNavigationOn = this._navigationMode === NavigationMode.Vertical || this._navigationMode === NavigationMode.Auto;
|
|
164
|
+
const isRTL = this.rootWebComponent.effectiveDir === "rtl";
|
|
136
165
|
|
|
137
|
-
if (
|
|
138
|
-
this.
|
|
139
|
-
} else if (
|
|
140
|
-
this.
|
|
166
|
+
if (isRTL && isLeft(event) && horizontalNavigationOn) {
|
|
167
|
+
this._handleRight();
|
|
168
|
+
} else if (isRTL && isRight(event) && horizontalNavigationOn) {
|
|
169
|
+
this._handleLeft();
|
|
141
170
|
} else if (isLeft(event) && horizontalNavigationOn) {
|
|
142
171
|
this._handleLeft();
|
|
143
172
|
} else if (isRight(event) && horizontalNavigationOn) {
|
|
144
173
|
this._handleRight();
|
|
174
|
+
} else if (isUp(event) && verticalNavigationOn) {
|
|
175
|
+
this._handleUp();
|
|
176
|
+
} else if (isDown(event) && verticalNavigationOn) {
|
|
177
|
+
this._handleDown();
|
|
145
178
|
} else if (isHome(event)) {
|
|
146
179
|
this._handleHome();
|
|
147
180
|
} else if (isEnd(event)) {
|
|
@@ -255,6 +288,7 @@ class ItemNavigation {
|
|
|
255
288
|
if (this._skipItemsSize === null) {
|
|
256
289
|
// Move the focus to the very top (as Home).
|
|
257
290
|
this._currentIndex -= this._currentIndex;
|
|
291
|
+
return;
|
|
258
292
|
}
|
|
259
293
|
|
|
260
294
|
if (this._currentIndex + 1 > this._skipItemsSize) {
|
|
@@ -274,6 +308,7 @@ class ItemNavigation {
|
|
|
274
308
|
if (this._skipItemsSize === null) {
|
|
275
309
|
// Move the focus to the very bottom (as End).
|
|
276
310
|
this._currentIndex = this._getItems().length - 1;
|
|
311
|
+
return;
|
|
277
312
|
}
|
|
278
313
|
|
|
279
314
|
const currentToEndRange = this._getItems().length - this._currentIndex - 1;
|
|
@@ -295,15 +330,15 @@ class ItemNavigation {
|
|
|
295
330
|
}
|
|
296
331
|
|
|
297
332
|
this._affectedPropertiesNames.forEach(propName => {
|
|
298
|
-
const prop = this.rootWebComponent[propName];
|
|
299
|
-
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 };
|
|
300
335
|
});
|
|
301
336
|
}
|
|
302
337
|
|
|
303
338
|
_focusCurrentItem() {
|
|
304
339
|
const currentItem = this._getCurrentItem();
|
|
305
340
|
if (currentItem) {
|
|
306
|
-
currentItem.focus();
|
|
341
|
+
currentItem.focus({ focusVisible: true } as FocusOptions);
|
|
307
342
|
}
|
|
308
343
|
}
|
|
309
344
|
|
|
@@ -318,7 +353,7 @@ class ItemNavigation {
|
|
|
318
353
|
const items = this._getItems();
|
|
319
354
|
|
|
320
355
|
if (!items.length) {
|
|
321
|
-
return
|
|
356
|
+
return;
|
|
322
357
|
}
|
|
323
358
|
|
|
324
359
|
// normalize the index
|
|
@@ -336,16 +371,23 @@ class ItemNavigation {
|
|
|
336
371
|
return;
|
|
337
372
|
}
|
|
338
373
|
|
|
339
|
-
if (currentItem
|
|
374
|
+
if (instanceOfUI5Element(currentItem)) {
|
|
340
375
|
return currentItem.getFocusDomRef();
|
|
341
376
|
}
|
|
342
377
|
|
|
343
|
-
|
|
378
|
+
const currentItemDOMRef = this.rootWebComponent.getDomRef();
|
|
379
|
+
if (!currentItemDOMRef) {
|
|
344
380
|
return;
|
|
345
381
|
}
|
|
346
382
|
|
|
347
|
-
|
|
383
|
+
if (currentItem.id) {
|
|
384
|
+
return currentItemDOMRef.querySelector(`#${currentItem.id}`) as HTMLElement;
|
|
385
|
+
}
|
|
348
386
|
}
|
|
349
387
|
}
|
|
350
388
|
|
|
351
389
|
export default ItemNavigation;
|
|
390
|
+
|
|
391
|
+
export {
|
|
392
|
+
ITabbable,
|
|
393
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { instanceOfUI5Element } from "../UI5Element.js";
|
|
2
|
+
|
|
3
|
+
type ResizeObserverCallback = () => Promise<void> | void;
|
|
4
|
+
|
|
5
|
+
let resizeObserver: ResizeObserver;
|
|
6
|
+
const observedElements = new Map<HTMLElement, Array<ResizeObserverCallback>>();
|
|
7
|
+
|
|
8
|
+
const getResizeObserver = () => {
|
|
9
|
+
if (!resizeObserver) {
|
|
10
|
+
resizeObserver = new window.ResizeObserver(entries => {
|
|
11
|
+
entries.forEach(entry => {
|
|
12
|
+
const callbacks = observedElements.get(entry.target as HTMLElement);
|
|
13
|
+
// Callbacks could be async and we need to handle returned promises to comply with the eslint "no-misused-promises" rule.
|
|
14
|
+
// Although Promise.all awaits all, we don't additonal task after calling the callbacks and should not make any difference.
|
|
15
|
+
callbacks && Promise.all(callbacks.map((callback: ResizeObserverCallback) => callback()));
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return resizeObserver;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const observe = (element: HTMLElement, callback: ResizeObserverCallback) => {
|
|
23
|
+
const callbacks = observedElements.get(element) || [];
|
|
24
|
+
|
|
25
|
+
// if no callbacks have been added for this element - start observing it
|
|
26
|
+
if (!callbacks.length) {
|
|
27
|
+
getResizeObserver().observe(element);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// save the callbacks in an array
|
|
31
|
+
observedElements.set(element, [...callbacks, callback]);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const unobserve = (element: HTMLElement, callback: ResizeObserverCallback) => {
|
|
35
|
+
const callbacks = observedElements.get(element) || [];
|
|
36
|
+
if (callbacks.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const filteredCallbacks = callbacks.filter((fn: ResizeObserverCallback) => fn !== callback);
|
|
41
|
+
if (filteredCallbacks.length === 0) {
|
|
42
|
+
getResizeObserver().unobserve(element);
|
|
43
|
+
observedElements.delete(element);
|
|
44
|
+
} else {
|
|
45
|
+
observedElements.set(element, filteredCallbacks);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Allows to register/deregister resize observers for a DOM element
|
|
51
|
+
*
|
|
52
|
+
* @public
|
|
53
|
+
* @class
|
|
54
|
+
*/
|
|
55
|
+
class ResizeHandler {
|
|
56
|
+
/**
|
|
57
|
+
* @static
|
|
58
|
+
* @public
|
|
59
|
+
* @param {*} element UI5 Web Component or DOM Element to be observed
|
|
60
|
+
* @param {*} callback Callback to be executed
|
|
61
|
+
*/
|
|
62
|
+
static register(element: HTMLElement, callback: ResizeObserverCallback) {
|
|
63
|
+
let effectiveElement: HTMLElement | undefined = element;
|
|
64
|
+
|
|
65
|
+
if (instanceOfUI5Element(effectiveElement)) {
|
|
66
|
+
effectiveElement = effectiveElement.getDomRef();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (effectiveElement instanceof HTMLElement) {
|
|
70
|
+
observe(effectiveElement, callback);
|
|
71
|
+
} else {
|
|
72
|
+
console.warn("Cannot register ResizeHandler for element", element); // eslint-disable-line
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @static
|
|
78
|
+
* @public
|
|
79
|
+
* @param {*} element UI5 Web Component or DOM Element to be unobserved
|
|
80
|
+
* @param {*} callback Callback to be removed
|
|
81
|
+
*/
|
|
82
|
+
static deregister(element: HTMLElement, callback: ResizeObserverCallback) {
|
|
83
|
+
let effectiveElement: HTMLElement | undefined = element;
|
|
84
|
+
|
|
85
|
+
if (instanceOfUI5Element(effectiveElement)) {
|
|
86
|
+
effectiveElement = effectiveElement.getDomRef();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (effectiveElement instanceof HTMLElement) {
|
|
90
|
+
unobserve(effectiveElement, callback);
|
|
91
|
+
} else {
|
|
92
|
+
console.warn("Cannot deregister ResizeHandler for element", element); // eslint-disable-line
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default ResizeHandler;
|
|
98
|
+
export type {
|
|
99
|
+
ResizeObserverCallback,
|
|
100
|
+
};
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { supportsTouch } from "../Device.js";
|
|
2
|
+
import EventProvider from "../EventProvider.js";
|
|
3
|
+
import scroll from "../animations/scroll.js";
|
|
4
|
+
import type UI5Element from "../UI5Element.js";
|
|
5
|
+
|
|
6
|
+
const scrollEventName = "scroll";
|
|
7
|
+
const touchEndEventName = supportsTouch() ? "touchend" : "mouseup";
|
|
8
|
+
|
|
9
|
+
type ScrollEnablementEventListenerParam = {
|
|
10
|
+
isLeft: boolean;
|
|
11
|
+
isRight: boolean
|
|
12
|
+
}
|
|
13
|
+
type ScrollEnablementEventListenerReturn = void;
|
|
14
|
+
|
|
15
|
+
class ScrollEnablement extends EventProvider<ScrollEnablementEventListenerParam, ScrollEnablementEventListenerReturn> {
|
|
16
|
+
containerComponent: UI5Element;
|
|
17
|
+
mouseMove: (event: MouseEvent | TouchEvent) => void;
|
|
18
|
+
mouseUp: (event: MouseEvent | TouchEvent) => void;
|
|
19
|
+
touchStart: (event: MouseEvent | TouchEvent) => void;
|
|
20
|
+
cachedValue: { dragX: number, dragY: number };
|
|
21
|
+
startX: number;
|
|
22
|
+
startY: number;
|
|
23
|
+
_container?: HTMLElement;
|
|
24
|
+
supportsTouch = supportsTouch();
|
|
25
|
+
_canScroll?: boolean;
|
|
26
|
+
_prevDragX?: number;
|
|
27
|
+
_prevDragY?: number;
|
|
28
|
+
|
|
29
|
+
constructor(containerComponent: UI5Element) {
|
|
30
|
+
super();
|
|
31
|
+
this.containerComponent = containerComponent;
|
|
32
|
+
this.mouseMove = this.ontouchmove.bind(this);
|
|
33
|
+
this.mouseUp = this.ontouchend.bind(this);
|
|
34
|
+
this.touchStart = this.ontouchstart.bind(this);
|
|
35
|
+
|
|
36
|
+
this.supportsTouch = supportsTouch();
|
|
37
|
+
|
|
38
|
+
// On Android devices touchmove is thrown one more time than neccessary (together with touchend)
|
|
39
|
+
// so we have to cache the previus coordinates in order to provide correct parameters in the
|
|
40
|
+
// event for Android
|
|
41
|
+
this.cachedValue = { dragX: 0, dragY: 0 };
|
|
42
|
+
|
|
43
|
+
// In components like Carousel you need to know if the user has clicked on something or swiped
|
|
44
|
+
// in order to throw the needed event or not
|
|
45
|
+
this.startX = 0;
|
|
46
|
+
this.startY = 0;
|
|
47
|
+
|
|
48
|
+
if (this.supportsTouch) {
|
|
49
|
+
containerComponent.addEventListener("touchstart", this.touchStart, { passive: true });
|
|
50
|
+
containerComponent.addEventListener("touchmove", this.mouseMove, { passive: true });
|
|
51
|
+
containerComponent.addEventListener("touchend", this.mouseUp, { passive: true });
|
|
52
|
+
} else {
|
|
53
|
+
containerComponent.addEventListener("mousedown", this.touchStart, { passive: true });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
set scrollContainer(container: HTMLElement) {
|
|
58
|
+
this._container = container;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get scrollContainer() {
|
|
62
|
+
return this._container!;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted
|
|
67
|
+
*
|
|
68
|
+
* @param left
|
|
69
|
+
* @param top
|
|
70
|
+
* @param retryCount
|
|
71
|
+
* @param retryInterval
|
|
72
|
+
* @returns {Promise<void>} resolved when scrolled successfully
|
|
73
|
+
*/
|
|
74
|
+
async scrollTo(left: number, top: number, retryCount = 0, retryInterval = 0) {
|
|
75
|
+
let containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
|
|
76
|
+
|
|
77
|
+
/* eslint-disable no-loop-func, no-await-in-loop */
|
|
78
|
+
while (!containerPainted && retryCount > 0) {
|
|
79
|
+
await new Promise<void>(resolve => {
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
|
|
82
|
+
retryCount--;
|
|
83
|
+
resolve();
|
|
84
|
+
}, retryInterval);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/* eslint-disable no-loop-func, no-await-in-loop */
|
|
88
|
+
|
|
89
|
+
this._container!.scrollLeft = left;
|
|
90
|
+
this._container!.scrollTop = top;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
move(dx: number, dy: number, disableAnimation: boolean) {
|
|
94
|
+
if (disableAnimation) {
|
|
95
|
+
this._container!.scrollLeft += dx;
|
|
96
|
+
this._container!.scrollTop += dy;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (this._container) {
|
|
101
|
+
return scroll(this._container, dx, dy);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
getScrollLeft() {
|
|
106
|
+
return this._container!.scrollLeft;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
getScrollTop() {
|
|
110
|
+
return this._container!.scrollTop;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
_isTouchInside(event: TouchEvent | MouseEvent) {
|
|
114
|
+
let touch = null;
|
|
115
|
+
if (this.supportsTouch && event instanceof TouchEvent) {
|
|
116
|
+
touch = event.touches[0];
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const rect = this._container!.getBoundingClientRect();
|
|
120
|
+
const x = this.supportsTouch ? (touch as TouchInit).clientX : (event as MouseEvent).x;
|
|
121
|
+
const y = this.supportsTouch ? (touch as TouchInit).clientY : (event as MouseEvent).y;
|
|
122
|
+
|
|
123
|
+
return x! >= rect.left && x! <= rect.right
|
|
124
|
+
&& y! >= rect.top && y! <= rect.bottom;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
ontouchstart(event: TouchEvent | MouseEvent) {
|
|
128
|
+
let touch = null;
|
|
129
|
+
if (this.supportsTouch && event instanceof TouchEvent) {
|
|
130
|
+
touch = event.touches[0];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (!this.supportsTouch) {
|
|
134
|
+
document.addEventListener("mouseup", this.mouseUp, { passive: true });
|
|
135
|
+
document.addEventListener("mousemove", this.mouseMove, { passive: true });
|
|
136
|
+
} else {
|
|
137
|
+
// Needed only on mobile
|
|
138
|
+
this.startX = touch!.pageX;
|
|
139
|
+
this.startY = touch!.pageY;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (this.supportsTouch && event instanceof TouchEvent) {
|
|
143
|
+
this._prevDragX = touch!.pageX;
|
|
144
|
+
this._prevDragY = touch!.pageY;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (event instanceof MouseEvent) {
|
|
148
|
+
this._prevDragX = event.x;
|
|
149
|
+
this._prevDragY = event.y;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
this._canScroll = this._isTouchInside(event);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
ontouchmove(event: TouchEvent | MouseEvent) {
|
|
156
|
+
if (!this._canScroll) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const container = this._container;
|
|
161
|
+
const touch = this.supportsTouch ? (event as TouchEvent).touches[0] : null;
|
|
162
|
+
|
|
163
|
+
const dragX = this.supportsTouch ? (touch as TouchInit).pageX : (event as MouseEvent).x;
|
|
164
|
+
const dragY = this.supportsTouch ? (touch as TouchInit).pageY : (event as MouseEvent).y;
|
|
165
|
+
|
|
166
|
+
container!.scrollLeft += this._prevDragX! - dragX!;
|
|
167
|
+
container!.scrollTop += this._prevDragY! - dragY!;
|
|
168
|
+
|
|
169
|
+
this.fireEvent(scrollEventName, {
|
|
170
|
+
isLeft: dragX! > this._prevDragX!,
|
|
171
|
+
isRight: dragX! < this._prevDragX!,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
this.cachedValue.dragX = this._prevDragX!;
|
|
175
|
+
this.cachedValue.dragY = this._prevDragY!;
|
|
176
|
+
|
|
177
|
+
this._prevDragX = dragX;
|
|
178
|
+
this._prevDragY = dragY;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
ontouchend(event: TouchEvent | MouseEvent) {
|
|
182
|
+
if (this.supportsTouch) {
|
|
183
|
+
const deltaX = Math.abs((event as TouchEvent).changedTouches[0].pageX - this.startX);
|
|
184
|
+
const deltaY = Math.abs((event as TouchEvent).changedTouches[0].pageY - this.startY);
|
|
185
|
+
|
|
186
|
+
if (deltaX < 10 && deltaY < 10) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!this._canScroll) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const container = this._container;
|
|
196
|
+
const dragX = this.supportsTouch ? (event as TouchEvent).changedTouches[0].pageX : (event as MouseEvent).x;
|
|
197
|
+
const dragY = this.supportsTouch ? (event as TouchEvent).changedTouches[0].pageY : (event as MouseEvent).y;
|
|
198
|
+
|
|
199
|
+
container!.scrollLeft += this._prevDragX! - dragX;
|
|
200
|
+
container!.scrollTop += this._prevDragY! - dragY;
|
|
201
|
+
|
|
202
|
+
const useCachedValues = dragX === this._prevDragX;
|
|
203
|
+
const _dragX = useCachedValues ? this.cachedValue.dragX : dragX;
|
|
204
|
+
// const _dragY = useCachedValues ? this.cachedValue.dragY : dragY; add if needed
|
|
205
|
+
|
|
206
|
+
this.fireEvent(touchEndEventName, {
|
|
207
|
+
isLeft: _dragX < this._prevDragX!,
|
|
208
|
+
isRight: _dragX > this._prevDragX!,
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
this._prevDragX = dragX;
|
|
212
|
+
this._prevDragY = dragY;
|
|
213
|
+
|
|
214
|
+
if (!this.supportsTouch) {
|
|
215
|
+
document.removeEventListener("mousemove", this.mouseMove);
|
|
216
|
+
document.removeEventListener("mouseup", this.mouseUp);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export default ScrollEnablement;
|
|
222
|
+
export type {
|
|
223
|
+
ScrollEnablementEventListenerParam,
|
|
224
|
+
};
|