@ui5/webcomponents-base 0.0.0-8db0ce01a → 0.0.0-8e1845415
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 +5 -1
- package/CHANGELOG.md +466 -0
- package/README.md +53 -7
- package/bundle.esm.js +21 -13
- 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 +9 -0
- package/dist/Boot.js +49 -29
- package/dist/Boot.js.map +1 -0
- package/dist/CSP.d.ts +30 -0
- package/dist/CSP.js +51 -0
- 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 +150 -84
- package/dist/Device.js.map +1 -0
- package/dist/EventProvider.d.ts +25 -0
- package/dist/EventProvider.js +67 -88
- 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 +17 -110
- package/dist/FontFace.js.map +1 -0
- package/dist/InitialConfiguration.d.ts +22 -0
- package/dist/InitialConfiguration.js +112 -127
- package/dist/InitialConfiguration.js.map +1 -0
- package/dist/Keys.d.ts +57 -0
- package/dist/Keys.js +174 -229
- package/dist/Keys.js.map +1 -0
- package/dist/ManagedStyles.d.ts +8 -0
- package/dist/ManagedStyles.js +77 -0
- 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 +82 -112
- 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 +86 -83
- package/dist/StaticAreaItem.js.map +1 -0
- package/dist/SystemCSSVars.d.ts +2 -0
- package/dist/SystemCSSVars.js +6 -28
- 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 +918 -997
- package/dist/UI5Element.js.map +1 -0
- package/dist/UI5ElementMetadata.d.ts +150 -0
- package/dist/UI5ElementMetadata.js +278 -298
- 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 -105
- package/dist/asset-registries/Icons.js.map +1 -0
- package/dist/asset-registries/Illustrations.d.ts +17 -0
- package/dist/asset-registries/Illustrations.js +46 -0
- 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 -118
- package/dist/asset-registries/LocaleData.js.map +1 -0
- package/dist/asset-registries/Themes.d.ts +11 -0
- package/dist/asset-registries/Themes.js +41 -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/Boot.6335ce08.css +1 -0
- package/dist/assets/bundle.esm.f40d91c9.js +24 -0
- package/dist/assets/i18nBundle.cf399e86.js +37 -0
- package/dist/assets-meta/IconCollectionsAlias.d.ts +31 -0
- package/dist/assets-meta/IconCollectionsAlias.js +38 -0
- 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 +45 -22
- 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 +66 -0
- package/dist/css/OverrideFontFace.css +32 -0
- package/dist/css/SystemCSSVars.css +17 -0
- 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/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/delegate/ItemNavigation.d.ts +113 -0
- package/dist/delegate/ItemNavigation.js +277 -246
- 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 -174
- 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 -0
- 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 -0
- 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 -0
- 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 +67 -44
- 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 +34 -24
- package/dist/renderer/LitRenderer.js.map +1 -0
- package/dist/renderer/directives/style-map.js +72 -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 +240 -0
- package/dist/sap/base/assert.js +7 -0
- package/dist/sap/base/security/URLListValidator.js +159 -0
- package/dist/sap/base/security/encodeCSS.js +14 -0
- package/dist/sap/base/security/encodeXML.js +23 -0
- package/dist/sap/base/security/sanitizeHTML.js +16 -0
- package/dist/sap/base/strings/toHex.js +8 -0
- package/dist/sap/base/util/now.js +7 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
- package/dist/theming/CustomStyle.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/ThemeRegistered.d.ts +5 -0
- package/dist/theming/ThemeRegistered.js +14 -0
- package/dist/theming/ThemeRegistered.js.map +1 -0
- package/dist/theming/applyTheme.d.ts +2 -0
- package/dist/theming/applyTheme.js +63 -65
- 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 +17 -0
- 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 -11
- package/dist/theming/getStylesString.js.map +1 -0
- package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
- package/dist/theming/getThemeDesignerTheme.js +73 -60
- package/dist/theming/getThemeDesignerTheme.js.map +1 -0
- package/dist/theming/preloadLinks.d.ts +3 -0
- package/dist/theming/preloadLinks.js +19 -0
- 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 +15 -0
- package/dist/types/CSSColor.js +14 -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 -14
- package/dist/types/DataType.js.map +1 -0
- package/dist/types/Float.d.ts +17 -0
- package/dist/types/Float.js +17 -6
- package/dist/types/Float.js.map +1 -0
- package/dist/types/Integer.d.ts +17 -0
- package/dist/types/Integer.js +17 -5
- package/dist/types/Integer.js.map +1 -0
- package/dist/types/InvisibleMessageMode.d.ts +25 -0
- package/dist/types/InvisibleMessageMode.js +27 -0
- 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 +27 -15
- 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 -68
- package/dist/util/FocusableElements.js.map +1 -0
- package/dist/util/HTMLSanitizer.d.ts +3 -0
- package/dist/util/HTMLSanitizer.js +6 -0
- package/dist/util/HTMLSanitizer.js.map +1 -0
- package/dist/util/InvisibleMessage.d.ts +10 -0
- package/dist/util/InvisibleMessage.js +56 -0
- 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 +21 -0
- 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/index.js +1 -1
- package/lib/generate-asset-parameters/index.js +8 -5
- package/lib/generate-styles/index.js +31 -0
- package/lib/generate-version-info/index.js +32 -0
- package/package-scripts.js +50 -22
- package/package.json +18 -9
- package/src/Boot.ts +82 -0
- package/src/CSP.ts +66 -0
- 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.ts +87 -0
- package/src/FeaturesRegistry.ts +14 -0
- package/src/FontFace.ts +31 -0
- package/src/{InitialConfiguration.js → InitialConfiguration.ts} +63 -18
- 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} +27 -20
- package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
- package/src/Runtimes.ts +114 -0
- package/src/{StaticAreaItem.js → StaticAreaItem.ts} +39 -22
- package/src/SystemCSSVars.ts +10 -0
- package/src/{UI5Element.js → UI5Element.ts} +312 -187
- package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +138 -60
- 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} +47 -25
- package/src/asset-registries/Themes.ts +75 -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 +66 -0
- package/src/css/OverrideFontFace.css +32 -0
- package/src/css/SystemCSSVars.css +17 -0
- package/src/decorators/customElement.ts +57 -0
- package/src/decorators/event.ts +28 -0
- package/src/decorators/property.ts +30 -0
- package/src/decorators/slot.ts +49 -0
- package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +131 -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.ts +108 -0
- 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/directives/style-map.js +72 -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/ThemeRegistered.ts +24 -0
- package/src/theming/applyTheme.ts +91 -0
- 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.ts +24 -0
- 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} +11 -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 +24 -0
- package/src/types/Integer.ts +24 -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.ts +9 -0
- package/src/util/InvisibleMessage.ts +69 -0
- 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.ts +25 -0
- 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 +10 -0
- 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/config/AssetsPath.js +0 -17
- package/dist/isLegacyBrowser.js +0 -3
- package/dist/renderer/ifDefined.js +0 -21
- package/dist/renderer/scopeHTML.js +0 -32
- package/dist/resources/bundle.esm.js +0 -121
- 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 -76
- package/dist/test-resources/pages/AllTestElements.html +0 -39
- 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 -35
- 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/StaticArea.spec.js +0 -36
- 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/theming/createThemePropertiesStyleTag.js +0 -20
- 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 -100
- package/src/EventProvider.js +0 -91
- package/src/FeaturesRegistry.js +0 -11
- package/src/FontFace.js +0 -118
- package/src/Keys.js +0 -233
- package/src/RenderScheduler.js +0 -44
- package/src/SystemCSSVars.js +0 -31
- 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 -121
- package/src/asset-registries/Themes.js +0 -78
- package/src/config/AnimationMode.js +0 -23
- package/src/config/AssetsPath.js +0 -17
- package/src/config/FormatSettings.js +0 -13
- package/src/config/NoConflict.js +0 -51
- package/src/config/Theme.js +0 -28
- package/src/delegate/ResizeHandler.js +0 -106
- package/src/delegate/ScrollEnablement.js +0 -182
- package/src/features/OpenUI5Support.js +0 -125
- package/src/i18nBundle.js +0 -55
- 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 -31
- package/src/renderer/executeTemplate.js +0 -17
- package/src/renderer/ifDefined.js +0 -21
- package/src/renderer/scopeHTML.js +0 -32
- package/src/theming/CustomStyle.js +0 -40
- package/src/theming/applyTheme.js +0 -78
- package/src/theming/createThemePropertiesStyleTag.js +0 -20
- package/src/theming/getStylesString.js +0 -13
- package/src/theming/getThemeDesignerTheme.js +0 -67
- 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 -25
- package/src/types/Float.js +0 -10
- package/src/types/Integer.js +0 -9
- 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 -26
- 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 -73
- 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/{Theming.js → Theming.ts} +0 -0
- /package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type UI5Element from "../UI5Element.js";
|
|
2
|
+
import type { Renderer } from "../UI5Element.js";
|
|
3
|
+
import type { TemplateFunction as Template } from "../renderer/executeTemplate.js";
|
|
4
|
+
import type { ComponentStylesData as Styles } from "../types.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns a custom element class decorator.
|
|
8
|
+
*
|
|
9
|
+
* @param { string | object } tagNameOrComponentSettings
|
|
10
|
+
* @returns { ClassDecorator }
|
|
11
|
+
*/
|
|
12
|
+
const customElement = (tagNameOrComponentSettings: string | {
|
|
13
|
+
tag?: string,
|
|
14
|
+
renderer?: Renderer,
|
|
15
|
+
styles?: Styles,
|
|
16
|
+
template?: Template,
|
|
17
|
+
dependencies?: Array<typeof UI5Element>,
|
|
18
|
+
staticAreaStyles?: Styles,
|
|
19
|
+
staticAreaTemplate?: Template,
|
|
20
|
+
languageAware?: boolean,
|
|
21
|
+
themeAware?: boolean,
|
|
22
|
+
fastNavigation?: boolean,
|
|
23
|
+
}): ClassDecorator => {
|
|
24
|
+
return (target: any) => {
|
|
25
|
+
if (!Object.prototype.hasOwnProperty.call(target, "metadata")) {
|
|
26
|
+
target.metadata = {};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (typeof tagNameOrComponentSettings === "string") {
|
|
30
|
+
target.metadata.tag = tagNameOrComponentSettings;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
tag,
|
|
36
|
+
languageAware = false,
|
|
37
|
+
themeAware = false,
|
|
38
|
+
fastNavigation = false,
|
|
39
|
+
} = tagNameOrComponentSettings;
|
|
40
|
+
|
|
41
|
+
target.metadata.tag = tag;
|
|
42
|
+
target.metadata.languageAware = languageAware;
|
|
43
|
+
target.metadata.themeAware = themeAware;
|
|
44
|
+
target.metadata.fastNavigation = fastNavigation;
|
|
45
|
+
|
|
46
|
+
["render", "renderer", "template", "staticAreaTemplate", "styles", "staticAreaStyles", "dependencies"].forEach((customElementEntity: string) => {
|
|
47
|
+
const _customElementEntity = customElementEntity === "render" ? "renderer" : customElementEntity;
|
|
48
|
+
const customElementEntityValue = tagNameOrComponentSettings[_customElementEntity as keyof typeof tag];
|
|
49
|
+
|
|
50
|
+
customElementEntityValue && Object.defineProperty(target, customElementEntity, {
|
|
51
|
+
get: () => customElementEntityValue,
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
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, "metadata")) {
|
|
13
|
+
target.metadata = {};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const metadata = target.metadata;
|
|
17
|
+
if (!metadata.events) {
|
|
18
|
+
metadata.events = {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const eventsMetadata = metadata.events;
|
|
22
|
+
if (!eventsMetadata[name]) {
|
|
23
|
+
eventsMetadata[name] = data;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default event;
|
|
@@ -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;
|
|
@@ -5,12 +5,32 @@ import {
|
|
|
5
5
|
isRight,
|
|
6
6
|
isHome,
|
|
7
7
|
isEnd,
|
|
8
|
+
isPageDown,
|
|
9
|
+
isPageUp,
|
|
8
10
|
} from "../Keys.js";
|
|
9
11
|
import getActiveElement from "../util/getActiveElement.js";
|
|
10
12
|
|
|
11
13
|
import NavigationMode from "../types/NavigationMode.js";
|
|
12
14
|
import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
|
|
13
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
|
+
|
|
14
34
|
/**
|
|
15
35
|
* The ItemNavigation class manages the calculations to determine the correct "tabindex" for a group of related items inside a root component.
|
|
16
36
|
* Important: ItemNavigation only does the calculations and does not change "tabindex" directly, this is a responsibility of the developer.
|
|
@@ -45,36 +65,47 @@ import ItemNavigationBehavior from "../types/ItemNavigationBehavior.js";
|
|
|
45
65
|
* @public
|
|
46
66
|
*/
|
|
47
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
|
+
|
|
48
84
|
/**
|
|
49
85
|
*
|
|
50
86
|
* @param rootWebComponent the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
|
|
51
|
-
* @param options Object with configuration options:
|
|
87
|
+
* @param {ItemNavigationOptions} options Object with configuration options:
|
|
52
88
|
* - currentIndex: the index of the item that will be initially selected (from which navigation will begin)
|
|
53
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)
|
|
54
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
|
|
91
|
+
* - skipItemsSize: tells how many items upon PAGE_UP and PAGE_DOWN should be skipped to applying the focus on the next item
|
|
55
92
|
* - behavior (Static|Cycling): tells what to do when trying to navigate beyond the first and last items
|
|
56
93
|
* Static means that nothing happens if the user tries to navigate beyond the first/last item.
|
|
57
94
|
* Cycling means that when the user navigates beyond the last item they go to the first and vice versa.
|
|
58
95
|
* - getItemsCallback: function that, when called, returns an array with all items the user can navigate among
|
|
59
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
|
|
60
97
|
*/
|
|
61
|
-
constructor(rootWebComponent, options
|
|
62
|
-
this._setRootComponent(rootWebComponent);
|
|
63
|
-
this._initOptions(options);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
_setRootComponent(rootWebComponent) {
|
|
98
|
+
constructor(rootWebComponent: UI5Element, options: ItemNavigationOptions) {
|
|
67
99
|
if (!rootWebComponent.isUI5Element) {
|
|
68
100
|
throw new Error("The root web component must be a UI5 Element instance");
|
|
69
101
|
}
|
|
102
|
+
|
|
70
103
|
this.rootWebComponent = rootWebComponent;
|
|
71
104
|
this.rootWebComponent.addEventListener("keydown", this._onkeydown.bind(this));
|
|
72
105
|
this.rootWebComponent._onComponentStateFinalized = () => {
|
|
73
106
|
this._init();
|
|
74
107
|
};
|
|
75
|
-
}
|
|
76
108
|
|
|
77
|
-
_initOptions(options) {
|
|
78
109
|
if (typeof options.getItemsCallback !== "function") {
|
|
79
110
|
throw new Error("getItemsCallback is required");
|
|
80
111
|
}
|
|
@@ -85,6 +116,7 @@ class ItemNavigation {
|
|
|
85
116
|
this._behavior = options.behavior || ItemNavigationBehavior.Static;
|
|
86
117
|
this._navigationMode = options.navigationMode || NavigationMode.Auto;
|
|
87
118
|
this._affectedPropertiesNames = options.affectedPropertiesNames || [];
|
|
119
|
+
this._skipItemsSize = options.skipItemsSize || null;
|
|
88
120
|
}
|
|
89
121
|
|
|
90
122
|
/**
|
|
@@ -94,7 +126,7 @@ class ItemNavigation {
|
|
|
94
126
|
* @public
|
|
95
127
|
* @param current the new selected item
|
|
96
128
|
*/
|
|
97
|
-
setCurrentItem(current) {
|
|
129
|
+
setCurrentItem(current: ITabbable) {
|
|
98
130
|
const currentItemIndex = this._getItems().indexOf(current);
|
|
99
131
|
|
|
100
132
|
if (currentItemIndex === -1) {
|
|
@@ -112,7 +144,7 @@ class ItemNavigation {
|
|
|
112
144
|
* @public
|
|
113
145
|
* @param newRowSize
|
|
114
146
|
*/
|
|
115
|
-
setRowSize(newRowSize) {
|
|
147
|
+
setRowSize(newRowSize: number) {
|
|
116
148
|
this._rowSize = newRowSize;
|
|
117
149
|
}
|
|
118
150
|
|
|
@@ -122,26 +154,35 @@ class ItemNavigation {
|
|
|
122
154
|
});
|
|
123
155
|
}
|
|
124
156
|
|
|
125
|
-
_onkeydown(event) {
|
|
157
|
+
_onkeydown(event: KeyboardEvent) {
|
|
126
158
|
if (!this._canNavigate()) {
|
|
127
159
|
return;
|
|
128
160
|
}
|
|
129
161
|
|
|
130
162
|
const horizontalNavigationOn = this._navigationMode === NavigationMode.Horizontal || this._navigationMode === NavigationMode.Auto;
|
|
131
163
|
const verticalNavigationOn = this._navigationMode === NavigationMode.Vertical || this._navigationMode === NavigationMode.Auto;
|
|
164
|
+
const isRTL = this.rootWebComponent.effectiveDir === "rtl";
|
|
132
165
|
|
|
133
|
-
if (
|
|
134
|
-
this.
|
|
135
|
-
} else if (
|
|
136
|
-
this.
|
|
166
|
+
if (isRTL && isLeft(event) && horizontalNavigationOn) {
|
|
167
|
+
this._handleRight();
|
|
168
|
+
} else if (isRTL && isRight(event) && horizontalNavigationOn) {
|
|
169
|
+
this._handleLeft();
|
|
137
170
|
} else if (isLeft(event) && horizontalNavigationOn) {
|
|
138
171
|
this._handleLeft();
|
|
139
172
|
} else if (isRight(event) && horizontalNavigationOn) {
|
|
140
173
|
this._handleRight();
|
|
174
|
+
} else if (isUp(event) && verticalNavigationOn) {
|
|
175
|
+
this._handleUp();
|
|
176
|
+
} else if (isDown(event) && verticalNavigationOn) {
|
|
177
|
+
this._handleDown();
|
|
141
178
|
} else if (isHome(event)) {
|
|
142
179
|
this._handleHome();
|
|
143
180
|
} else if (isEnd(event)) {
|
|
144
181
|
this._handleEnd();
|
|
182
|
+
} else if (isPageUp(event)) {
|
|
183
|
+
this._handlePageUp();
|
|
184
|
+
} else if (isPageDown(event)) {
|
|
185
|
+
this._handlePageDown();
|
|
145
186
|
} else {
|
|
146
187
|
return; // if none of the supported keys is pressed, we don't want to prevent the event or update the item navigation
|
|
147
188
|
}
|
|
@@ -222,6 +263,66 @@ class ItemNavigation {
|
|
|
222
263
|
this._currentIndex += (homeEndRange - 1 - this._currentIndex % homeEndRange); // eslint-disable-line
|
|
223
264
|
}
|
|
224
265
|
|
|
266
|
+
_handlePageUp() {
|
|
267
|
+
if (this._rowSize > 1) {
|
|
268
|
+
// eslint-disable-next-line
|
|
269
|
+
// TODO: handle page up on matrix (grid) layout - ColorPalette, ProductSwitch.
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
this._handlePageUpFlat();
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
_handlePageDown() {
|
|
276
|
+
if (this._rowSize > 1) {
|
|
277
|
+
// eslint-disable-next-line
|
|
278
|
+
// TODO: handle page up on matrix (grid) layout - ColorPalette, ProductSwitch.
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
this._handlePageDownFlat();
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Handles PAGE_UP in a flat list-like structure, both vertically and horizontally.
|
|
286
|
+
*/
|
|
287
|
+
_handlePageUpFlat() {
|
|
288
|
+
if (this._skipItemsSize === null) {
|
|
289
|
+
// Move the focus to the very top (as Home).
|
|
290
|
+
this._currentIndex -= this._currentIndex;
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (this._currentIndex + 1 > this._skipItemsSize) {
|
|
295
|
+
// When there are more than "skipItemsSize" number of items to the top,
|
|
296
|
+
// move the focus up/left with the predefined number.
|
|
297
|
+
this._currentIndex -= this._skipItemsSize;
|
|
298
|
+
} else {
|
|
299
|
+
// Otherwise, move the focus to the very top (as Home).
|
|
300
|
+
this._currentIndex -= this._currentIndex;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Handles PAGE_DOWN in a flat list-like structure, both vertically and horizontally.
|
|
306
|
+
*/
|
|
307
|
+
_handlePageDownFlat() {
|
|
308
|
+
if (this._skipItemsSize === null) {
|
|
309
|
+
// Move the focus to the very bottom (as End).
|
|
310
|
+
this._currentIndex = this._getItems().length - 1;
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
const currentToEndRange = this._getItems().length - this._currentIndex - 1;
|
|
315
|
+
|
|
316
|
+
if (currentToEndRange > this._skipItemsSize) {
|
|
317
|
+
// When there are more than "skipItemsSize" number of items until the bottom,
|
|
318
|
+
// move the focus down/right with the predefined number.
|
|
319
|
+
this._currentIndex += this._skipItemsSize;
|
|
320
|
+
} else {
|
|
321
|
+
// Otherwise, move the focus to the very bottom (as End).
|
|
322
|
+
this._currentIndex = this._getItems().length - 1;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
225
326
|
_applyTabIndex() {
|
|
226
327
|
const items = this._getItems();
|
|
227
328
|
for (let i = 0; i < items.length; i++) {
|
|
@@ -229,15 +330,15 @@ class ItemNavigation {
|
|
|
229
330
|
}
|
|
230
331
|
|
|
231
332
|
this._affectedPropertiesNames.forEach(propName => {
|
|
232
|
-
const prop = this.rootWebComponent[propName];
|
|
233
|
-
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 };
|
|
234
335
|
});
|
|
235
336
|
}
|
|
236
337
|
|
|
237
338
|
_focusCurrentItem() {
|
|
238
339
|
const currentItem = this._getCurrentItem();
|
|
239
340
|
if (currentItem) {
|
|
240
|
-
currentItem.focus();
|
|
341
|
+
currentItem.focus({ focusVisible: true } as FocusOptions);
|
|
241
342
|
}
|
|
242
343
|
}
|
|
243
344
|
|
|
@@ -252,7 +353,7 @@ class ItemNavigation {
|
|
|
252
353
|
const items = this._getItems();
|
|
253
354
|
|
|
254
355
|
if (!items.length) {
|
|
255
|
-
return
|
|
356
|
+
return;
|
|
256
357
|
}
|
|
257
358
|
|
|
258
359
|
// normalize the index
|
|
@@ -270,16 +371,23 @@ class ItemNavigation {
|
|
|
270
371
|
return;
|
|
271
372
|
}
|
|
272
373
|
|
|
273
|
-
if (currentItem
|
|
374
|
+
if (instanceOfUI5Element(currentItem)) {
|
|
274
375
|
return currentItem.getFocusDomRef();
|
|
275
376
|
}
|
|
276
377
|
|
|
277
|
-
|
|
378
|
+
const currentItemDOMRef = this.rootWebComponent.getDomRef();
|
|
379
|
+
if (!currentItemDOMRef) {
|
|
278
380
|
return;
|
|
279
381
|
}
|
|
280
382
|
|
|
281
|
-
|
|
383
|
+
if (currentItem.id) {
|
|
384
|
+
return currentItemDOMRef.querySelector(`#${currentItem.id}`) as HTMLElement;
|
|
385
|
+
}
|
|
282
386
|
}
|
|
283
387
|
}
|
|
284
388
|
|
|
285
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
|
+
};
|