@ui5/webcomponents-base 0.0.0-38861c872 → 0.0.0-38f83ffef
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/CHANGELOG.md +1369 -0
- package/README.md +2 -13
- package/cypress.config.js +3 -0
- package/dist/.tsbuildinfobuild +1 -0
- package/dist/Boot.d.ts +3 -2
- package/dist/Boot.js +11 -7
- package/dist/Boot.js.map +1 -1
- package/dist/CustomElementsRegistry.d.ts +2 -1
- package/dist/CustomElementsRegistry.js +5 -2
- package/dist/CustomElementsRegistry.js.map +1 -1
- package/dist/CustomElementsScopeUtils.d.ts +3 -1
- package/dist/CustomElementsScopeUtils.js +8 -1
- package/dist/CustomElementsScopeUtils.js.map +1 -1
- package/dist/DOMObserver.js.map +1 -1
- package/dist/Device.d.ts +16 -2
- package/dist/Device.js +10 -14
- package/dist/Device.js.map +1 -1
- package/dist/EventProvider.js.map +1 -1
- package/dist/FontFace.js +6 -1
- package/dist/FontFace.js.map +1 -1
- package/dist/IgnoreCustomElements.d.ts +3 -5
- package/dist/IgnoreCustomElements.js +3 -5
- package/dist/IgnoreCustomElements.js.map +1 -1
- package/dist/InitialConfiguration.d.ts +9 -3
- package/dist/InitialConfiguration.js +26 -8
- package/dist/InitialConfiguration.js.map +1 -1
- package/dist/Keys.d.ts +4 -1
- package/dist/Keys.js +6 -1
- package/dist/Keys.js.map +1 -1
- package/dist/Location.d.ts +11 -0
- package/dist/Location.js +49 -0
- package/dist/Location.js.map +1 -0
- package/dist/ManagedStyles.d.ts +4 -6
- package/dist/ManagedStyles.js +30 -114
- package/dist/ManagedStyles.js.map +1 -1
- package/dist/MediaRange.d.ts +6 -6
- package/dist/MediaRange.js +16 -16
- package/dist/MediaRange.js.map +1 -1
- package/dist/PropertiesFileFormat.js.map +1 -1
- package/dist/Render.js.map +1 -1
- package/dist/RenderQueue.js.map +1 -1
- package/dist/Runtimes.js +11 -0
- package/dist/Runtimes.js.map +1 -1
- package/dist/SystemCSSVars.js.map +1 -1
- package/dist/UI5Element.d.ts +93 -51
- package/dist/UI5Element.js +364 -207
- package/dist/UI5Element.js.map +1 -1
- package/dist/UI5ElementMetadata.d.ts +33 -17
- package/dist/UI5ElementMetadata.js +25 -62
- package/dist/UI5ElementMetadata.js.map +1 -1
- package/dist/animations/AnimationQueue.js.map +1 -1
- package/dist/animations/animate.js.map +1 -1
- package/dist/animations/slideUp.js.map +1 -1
- package/dist/asset-registries/Icons.d.ts +1 -1
- package/dist/asset-registries/Icons.js +1 -1
- package/dist/asset-registries/Icons.js.map +1 -1
- package/dist/asset-registries/Illustrations.d.ts +1 -0
- package/dist/asset-registries/Illustrations.js +1 -0
- package/dist/asset-registries/Illustrations.js.map +1 -1
- package/dist/asset-registries/LocaleData.js +1 -1
- package/dist/asset-registries/LocaleData.js.map +1 -1
- package/dist/asset-registries/Themes.d.ts +3 -6
- package/dist/asset-registries/Themes.js +1 -2
- package/dist/asset-registries/Themes.js.map +1 -1
- package/dist/asset-registries/i18n.d.ts +2 -2
- package/dist/asset-registries/i18n.js +2 -2
- package/dist/asset-registries/i18n.js.map +1 -1
- package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -1
- package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +1 -1
- package/dist/asset-registries/util/IconCollectionsByTheme.js +1 -1
- package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -1
- package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +3 -3
- package/dist/asset-registries/util/getIconCollectionByTheme.js +3 -3
- package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -1
- package/dist/config/AnimationMode.js +6 -1
- package/dist/config/AnimationMode.js.map +1 -1
- package/dist/config/CalendarType.js +5 -0
- package/dist/config/CalendarType.js.map +1 -1
- package/dist/config/ConfigurationReset.d.ts +4 -0
- package/dist/config/ConfigurationReset.js +11 -0
- package/dist/config/ConfigurationReset.js.map +1 -0
- package/dist/config/Fonts.d.ts +16 -0
- package/dist/config/Fonts.js +30 -0
- package/dist/config/Fonts.js.map +1 -0
- package/dist/config/FormatSettings.js +4 -0
- package/dist/config/FormatSettings.js.map +1 -1
- package/dist/config/Icons.d.ts +7 -7
- package/dist/config/Icons.js +7 -7
- package/dist/config/Icons.js.map +1 -1
- package/dist/config/Language.d.ts +1 -1
- package/dist/config/Language.js +11 -3
- package/dist/config/Language.js.map +1 -1
- package/dist/config/NoConflict.js +4 -0
- package/dist/config/NoConflict.js.map +1 -1
- package/dist/config/Theme.d.ts +4 -3
- package/dist/config/Theme.js +18 -8
- package/dist/config/Theme.js.map +1 -1
- package/dist/config/ThemeRoot.d.ts +2 -4
- package/dist/config/ThemeRoot.js +6 -4
- package/dist/config/ThemeRoot.js.map +1 -1
- package/dist/config/Timezone.d.ts +1 -1
- package/dist/config/Timezone.js +5 -1
- package/dist/config/Timezone.js.map +1 -1
- package/dist/config/Tooltips.d.ts +19 -0
- package/dist/config/Tooltips.js +29 -0
- package/dist/config/Tooltips.js.map +1 -0
- package/dist/connectToComponent.js.map +1 -1
- package/dist/converters/DOMReference.d.ts +5 -0
- package/dist/converters/DOMReference.js +13 -0
- package/dist/converters/DOMReference.js.map +1 -0
- package/dist/css/SystemCSSVars.css +0 -8
- package/dist/custom-elements-internal.json +496 -2829
- package/dist/custom-elements.json +414 -2813
- package/dist/decorators/bound.d.ts +1 -0
- package/dist/decorators/bound.js +34 -0
- package/dist/decorators/bound.js.map +1 -0
- package/dist/decorators/customElement.d.ts +42 -2
- package/dist/decorators/customElement.js +13 -5
- package/dist/decorators/customElement.js.map +1 -1
- package/dist/decorators/event-strict.d.ts +15 -0
- package/dist/decorators/event-strict.js +26 -0
- package/dist/decorators/event-strict.js.map +1 -0
- package/dist/decorators/event.d.ts +8 -2
- package/dist/decorators/event.js +3 -0
- package/dist/decorators/event.js.map +1 -1
- package/dist/decorators/i18n.d.ts +17 -0
- package/dist/decorators/i18n.js +32 -0
- package/dist/decorators/i18n.js.map +1 -0
- package/dist/decorators/property.d.ts +1 -1
- package/dist/decorators/property.js +1 -1
- package/dist/decorators/property.js.map +1 -1
- package/dist/decorators/query.d.ts +25 -0
- package/dist/decorators/query.js +32 -0
- package/dist/decorators/query.js.map +1 -0
- package/dist/decorators/queryAll.d.ts +27 -0
- package/dist/decorators/queryAll.js +34 -0
- package/dist/decorators/queryAll.js.map +1 -0
- package/dist/decorators/slot.d.ts +1 -1
- package/dist/decorators/slot.js.map +1 -1
- package/dist/decorators.d.ts +8 -0
- package/dist/decorators.js +9 -0
- package/dist/decorators.js.map +1 -0
- package/dist/delegate/ItemNavigation.d.ts +8 -8
- package/dist/delegate/ItemNavigation.js +9 -9
- package/dist/delegate/ItemNavigation.js.map +1 -1
- package/dist/delegate/ResizeHandler.js.map +1 -1
- package/dist/delegate/ScrollEnablement.js.map +1 -1
- package/dist/features/F6Navigation.d.ts +4 -3
- package/dist/features/F6Navigation.js +50 -11
- package/dist/features/F6Navigation.js.map +1 -1
- package/dist/features/InputElementsFormSupport.d.ts +15 -0
- package/dist/features/InputElementsFormSupport.js +39 -0
- package/dist/features/InputElementsFormSupport.js.map +1 -0
- package/dist/features/LegacyDateFormats.js.map +1 -1
- package/dist/features/OpenUI5Enablement.d.ts +2 -2
- package/dist/features/OpenUI5Enablement.js.map +1 -1
- package/dist/features/OpenUI5Support.d.ts +2 -3
- package/dist/features/OpenUI5Support.js +35 -44
- package/dist/features/OpenUI5Support.js.map +1 -1
- package/dist/features/patchPatcher.d.ts +11 -0
- package/dist/features/patchPatcher.js +11 -0
- package/dist/features/patchPatcher.js.map +1 -0
- package/dist/features/patchPopup.d.ts +15 -0
- package/dist/features/patchPopup.js +70 -0
- package/dist/features/patchPopup.js.map +1 -0
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/generated/AssetParameters.js.map +1 -1
- package/dist/generated/VersionInfo.js +5 -5
- package/dist/generated/VersionInfo.js.map +1 -1
- package/dist/generated/css/BusyIndicator.css.d.ts +2 -3
- package/dist/generated/css/BusyIndicator.css.js +1 -6
- package/dist/generated/css/BusyIndicator.css.js.map +1 -1
- package/dist/generated/css/FontFace.css.d.ts +2 -3
- package/dist/generated/css/FontFace.css.js +1 -6
- package/dist/generated/css/FontFace.css.js.map +1 -1
- package/dist/generated/css/OverrideFontFace.css.d.ts +2 -3
- package/dist/generated/css/OverrideFontFace.css.js +1 -6
- package/dist/generated/css/OverrideFontFace.css.js.map +1 -1
- package/dist/generated/css/SystemCSSVars.css.d.ts +2 -3
- package/dist/generated/css/SystemCSSVars.css.js +1 -6
- package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
- package/dist/getSharedResource.js.map +1 -1
- package/dist/i18nBundle.js.map +1 -1
- package/dist/index.d.ts +48 -0
- package/dist/index.js +88 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx-dev-runtime.d.ts +4 -0
- package/dist/jsx-dev-runtime.js +43 -0
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.d.ts +50 -0
- package/dist/jsx-runtime.js +27 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/jsx-utils.d.ts +3 -0
- package/dist/jsx-utils.js +48 -0
- package/dist/jsx-utils.js.map +1 -0
- package/dist/locale/Locale.js.map +1 -1
- package/dist/locale/applyDirection.d.ts +3 -2
- package/dist/locale/applyDirection.js +3 -2
- package/dist/locale/applyDirection.js.map +1 -1
- package/dist/locale/getEffectiveDir.d.ts +1 -1
- package/dist/locale/getEffectiveDir.js +3 -19
- package/dist/locale/getEffectiveDir.js.map +1 -1
- package/dist/locale/getLocale.js.map +1 -1
- package/dist/locale/nextFallbackLocale.js +6 -2
- package/dist/locale/nextFallbackLocale.js.map +1 -1
- package/dist/locale/normalizeLocale.js.map +1 -1
- package/dist/prod/AssetRegistry.js +2 -0
- package/dist/prod/AssetRegistry.js.map +7 -0
- package/dist/prod/Boot.js +2 -0
- package/dist/prod/Boot.js.map +7 -0
- package/dist/prod/CustomElementsRegistry.js +10 -0
- package/dist/prod/CustomElementsRegistry.js.map +7 -0
- package/dist/prod/CustomElementsScope.js +2 -0
- package/dist/prod/CustomElementsScope.js.map +7 -0
- package/dist/prod/CustomElementsScopeUtils.js +2 -0
- package/dist/prod/CustomElementsScopeUtils.js.map +7 -0
- package/dist/prod/DOMObserver.js +2 -0
- package/dist/prod/DOMObserver.js.map +7 -0
- package/dist/prod/Device.js +2 -0
- package/dist/prod/Device.js.map +7 -0
- package/dist/prod/EventProvider.js +2 -0
- package/dist/prod/EventProvider.js.map +7 -0
- package/dist/prod/FeaturesRegistry.js +2 -0
- package/dist/prod/FeaturesRegistry.js.map +7 -0
- package/dist/prod/FontFace.js +2 -0
- package/dist/prod/FontFace.js.map +7 -0
- package/dist/prod/IgnoreCustomElements.js +2 -0
- package/dist/prod/IgnoreCustomElements.js.map +7 -0
- package/dist/prod/InitialConfiguration.js +2 -0
- package/dist/prod/InitialConfiguration.js.map +7 -0
- package/dist/prod/Keys.js +2 -0
- package/dist/prod/Keys.js.map +7 -0
- package/dist/prod/Location.js +2 -0
- package/dist/prod/Location.js.map +7 -0
- package/dist/prod/ManagedStyles.js +2 -0
- package/dist/prod/ManagedStyles.js.map +7 -0
- package/dist/prod/MediaRange.js +2 -0
- package/dist/prod/MediaRange.js.map +7 -0
- package/dist/prod/PropertiesFileFormat.js +3 -0
- package/dist/prod/PropertiesFileFormat.js.map +7 -0
- package/dist/prod/Render.js +2 -0
- package/dist/prod/Render.js.map +7 -0
- package/dist/prod/RenderQueue.js +2 -0
- package/dist/prod/RenderQueue.js.map +7 -0
- package/dist/prod/Runtimes.js +2 -0
- package/dist/prod/Runtimes.js.map +7 -0
- package/dist/prod/SystemCSSVars.js +2 -0
- package/dist/prod/SystemCSSVars.js.map +7 -0
- package/dist/prod/Theming.js +2 -0
- package/dist/prod/Theming.js.map +7 -0
- package/dist/prod/UI5Element.js +2 -0
- package/dist/prod/UI5Element.js.map +7 -0
- package/dist/prod/UI5ElementMetadata.js +2 -0
- package/dist/prod/UI5ElementMetadata.js.map +7 -0
- package/dist/prod/animations/AnimationQueue.js +2 -0
- package/dist/prod/animations/AnimationQueue.js.map +7 -0
- package/dist/prod/animations/animate.js +2 -0
- package/dist/prod/animations/animate.js.map +7 -0
- package/dist/prod/animations/scroll.js +2 -0
- package/dist/prod/animations/scroll.js.map +7 -0
- package/dist/prod/animations/slideDown.js +2 -0
- package/dist/prod/animations/slideDown.js.map +7 -0
- package/dist/prod/animations/slideUp.js +2 -0
- package/dist/prod/animations/slideUp.js.map +7 -0
- package/dist/prod/asset-registries/Icons.js +2 -0
- package/dist/prod/asset-registries/Icons.js.map +7 -0
- package/dist/prod/asset-registries/Illustrations.js +2 -0
- package/dist/prod/asset-registries/Illustrations.js.map +7 -0
- package/dist/prod/asset-registries/LocaleData.js +2 -0
- package/dist/prod/asset-registries/LocaleData.js.map +7 -0
- package/dist/prod/asset-registries/Themes.js +2 -0
- package/dist/prod/asset-registries/Themes.js.map +7 -0
- package/dist/prod/asset-registries/i18n.js +2 -0
- package/dist/prod/asset-registries/i18n.js.map +7 -0
- package/dist/prod/asset-registries/util/IconCollectionsAlias.js +2 -0
- package/dist/prod/asset-registries/util/IconCollectionsAlias.js.map +7 -0
- package/dist/prod/asset-registries/util/IconCollectionsByTheme.js +2 -0
- package/dist/prod/asset-registries/util/IconCollectionsByTheme.js.map +7 -0
- package/dist/prod/asset-registries/util/getIconCollectionByTheme.js +2 -0
- package/dist/prod/asset-registries/util/getIconCollectionByTheme.js.map +7 -0
- package/dist/prod/config/AnimationMode.js +2 -0
- package/dist/prod/config/AnimationMode.js.map +7 -0
- package/dist/prod/config/CalendarType.js +2 -0
- package/dist/prod/config/CalendarType.js.map +7 -0
- package/dist/prod/config/ConfigurationReset.js +2 -0
- package/dist/prod/config/ConfigurationReset.js.map +7 -0
- package/dist/prod/config/Fonts.js +2 -0
- package/dist/prod/config/Fonts.js.map +7 -0
- package/dist/prod/config/FormatSettings.js +2 -0
- package/dist/prod/config/FormatSettings.js.map +7 -0
- package/dist/prod/config/Icons.js +2 -0
- package/dist/prod/config/Icons.js.map +7 -0
- package/dist/prod/config/Language.js +2 -0
- package/dist/prod/config/Language.js.map +7 -0
- package/dist/prod/config/NoConflict.js +2 -0
- package/dist/prod/config/NoConflict.js.map +7 -0
- package/dist/prod/config/Theme.js +2 -0
- package/dist/prod/config/Theme.js.map +7 -0
- package/dist/prod/config/ThemeRoot.js +2 -0
- package/dist/prod/config/ThemeRoot.js.map +7 -0
- package/dist/prod/config/Timezone.js +2 -0
- package/dist/prod/config/Timezone.js.map +7 -0
- package/dist/prod/config/Tooltips.js +2 -0
- package/dist/prod/config/Tooltips.js.map +7 -0
- package/dist/prod/connectToComponent.js +2 -0
- package/dist/prod/connectToComponent.js.map +7 -0
- package/dist/prod/converters/DOMReference.js +2 -0
- package/dist/prod/converters/DOMReference.js.map +7 -0
- package/dist/prod/decorators/bound.js +2 -0
- package/dist/prod/decorators/bound.js.map +7 -0
- package/dist/prod/decorators/customElement.js +2 -0
- package/dist/prod/decorators/customElement.js.map +7 -0
- package/dist/prod/decorators/event-strict.js +2 -0
- package/dist/prod/decorators/event-strict.js.map +7 -0
- package/dist/prod/decorators/event.js +2 -0
- package/dist/prod/decorators/event.js.map +7 -0
- package/dist/prod/decorators/i18n.js +2 -0
- package/dist/prod/decorators/i18n.js.map +7 -0
- package/dist/prod/decorators/property.js +2 -0
- package/dist/prod/decorators/property.js.map +7 -0
- package/dist/prod/decorators/query.js +2 -0
- package/dist/prod/decorators/query.js.map +7 -0
- package/dist/prod/decorators/queryAll.js +2 -0
- package/dist/prod/decorators/queryAll.js.map +7 -0
- package/dist/prod/decorators/slot.js +2 -0
- package/dist/prod/decorators/slot.js.map +7 -0
- package/dist/prod/decorators.js +2 -0
- package/dist/prod/decorators.js.map +7 -0
- package/dist/prod/delegate/ItemNavigation.js +2 -0
- package/dist/prod/delegate/ItemNavigation.js.map +7 -0
- package/dist/prod/delegate/ResizeHandler.js +2 -0
- package/dist/prod/delegate/ResizeHandler.js.map +7 -0
- package/dist/prod/delegate/ScrollEnablement.js +2 -0
- package/dist/prod/delegate/ScrollEnablement.js.map +7 -0
- package/dist/prod/features/F6Navigation.js +2 -0
- package/dist/prod/features/F6Navigation.js.map +7 -0
- package/dist/prod/features/InputElementsFormSupport.js +2 -0
- package/dist/prod/features/InputElementsFormSupport.js.map +7 -0
- package/dist/prod/features/LegacyDateFormats.js +2 -0
- package/dist/prod/features/LegacyDateFormats.js.map +7 -0
- package/dist/prod/features/OpenUI5Element.js +2 -0
- package/dist/prod/features/OpenUI5Element.js.map +7 -0
- package/dist/prod/features/OpenUI5Enablement.js +21 -0
- package/dist/prod/features/OpenUI5Enablement.js.map +7 -0
- package/dist/prod/features/OpenUI5Support.js +2 -0
- package/dist/prod/features/OpenUI5Support.js.map +7 -0
- package/dist/prod/features/patchPatcher.js +2 -0
- package/dist/prod/features/patchPatcher.js.map +7 -0
- package/dist/prod/features/patchPopup.js +2 -0
- package/dist/prod/features/patchPopup.js.map +7 -0
- package/dist/prod/generated/AssetParameters.js +2 -0
- package/dist/prod/generated/AssetParameters.js.map +7 -0
- package/dist/prod/generated/VersionInfo.js +2 -0
- package/dist/prod/generated/VersionInfo.js.map +7 -0
- package/dist/prod/generated/css/BusyIndicator.css.js +2 -0
- package/dist/prod/generated/css/BusyIndicator.css.js.map +7 -0
- package/dist/prod/generated/css/FontFace.css.js +2 -0
- package/dist/prod/generated/css/FontFace.css.js.map +7 -0
- package/dist/prod/generated/css/OverrideFontFace.css.js +2 -0
- package/dist/prod/generated/css/OverrideFontFace.css.js.map +7 -0
- package/dist/prod/generated/css/SystemCSSVars.css.js +2 -0
- package/dist/prod/generated/css/SystemCSSVars.css.js.map +7 -0
- package/dist/prod/getSharedResource.js +2 -0
- package/dist/prod/getSharedResource.js.map +7 -0
- package/dist/prod/global.d.js +2 -0
- package/dist/prod/global.d.js.map +7 -0
- package/dist/prod/i18nBundle.js +2 -0
- package/dist/prod/i18nBundle.js.map +7 -0
- package/dist/prod/index.js +2 -0
- package/dist/prod/index.js.map +7 -0
- package/dist/prod/jsx-dev-runtime.js +2 -0
- package/dist/prod/jsx-dev-runtime.js.map +7 -0
- package/dist/prod/jsx-runtime.js +2 -0
- package/dist/prod/jsx-runtime.js.map +7 -0
- package/dist/prod/jsx-utils.js +2 -0
- package/dist/prod/jsx-utils.js.map +7 -0
- package/dist/prod/locale/Locale.js +2 -0
- package/dist/prod/locale/Locale.js.map +7 -0
- package/dist/prod/locale/RTLAwareRegistry.js +2 -0
- package/dist/prod/locale/RTLAwareRegistry.js.map +7 -0
- package/dist/prod/locale/applyDirection.js +2 -0
- package/dist/prod/locale/applyDirection.js.map +7 -0
- package/dist/prod/locale/directionChange.js +2 -0
- package/dist/prod/locale/directionChange.js.map +7 -0
- package/dist/prod/locale/getEffectiveDir.js +2 -0
- package/dist/prod/locale/getEffectiveDir.js.map +7 -0
- package/dist/prod/locale/getLocale.js +2 -0
- package/dist/prod/locale/getLocale.js.map +7 -0
- package/dist/prod/locale/languageChange.js +2 -0
- package/dist/prod/locale/languageChange.js.map +7 -0
- package/dist/prod/locale/nextFallbackLocale.js +2 -0
- package/dist/prod/locale/nextFallbackLocale.js.map +7 -0
- package/dist/prod/locale/normalizeLocale.js +2 -0
- package/dist/prod/locale/normalizeLocale.js.map +7 -0
- package/dist/prod/renderer/JsxRenderer.js +2 -0
- package/dist/prod/renderer/JsxRenderer.js.map +7 -0
- package/dist/prod/renderer/LitRenderer.js +2 -0
- package/dist/prod/renderer/LitRenderer.js.map +7 -0
- package/dist/prod/renderer/directives/style-map.js +6 -0
- package/dist/prod/renderer/directives/style-map.js.map +7 -0
- package/dist/prod/renderer/executeTemplate.js +2 -0
- package/dist/prod/renderer/executeTemplate.js.map +7 -0
- package/dist/prod/sap/base/Log.js +750 -0
- package/dist/prod/sap/base/assert.js +34 -0
- package/dist/prod/sap/base/config/MemoryConfigurationProvider.js +20 -0
- package/dist/prod/sap/base/security/URLListValidator.js +406 -0
- package/dist/prod/sap/base/security/encodeCSS.js +40 -0
- package/dist/prod/sap/base/security/encodeXML.js +53 -0
- package/dist/prod/sap/base/security/sanitizeHTML.js +38 -0
- package/dist/prod/sap/base/strings/toHex.js +33 -0
- package/dist/prod/sap/base/util/now.js +28 -0
- package/dist/prod/sap/base/util/uid.js +27 -0
- package/dist/prod/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
- package/dist/prod/ssr-dom-shim.js +2 -0
- package/dist/prod/ssr-dom-shim.js.map +7 -0
- package/dist/prod/ssr-dom.js +2 -0
- package/dist/prod/ssr-dom.js.map +7 -0
- package/dist/prod/theming/CustomStyle.js +2 -0
- package/dist/prod/theming/CustomStyle.js.map +7 -0
- package/dist/prod/theming/ThemeLoaded.js +2 -0
- package/dist/prod/theming/ThemeLoaded.js.map +7 -0
- package/dist/prod/theming/ThemeRegistered.js +2 -0
- package/dist/prod/theming/ThemeRegistered.js.map +7 -0
- package/dist/prod/theming/applyTheme.js +2 -0
- package/dist/prod/theming/applyTheme.js.map +7 -0
- package/dist/prod/theming/getConstructableStyle.js +2 -0
- package/dist/prod/theming/getConstructableStyle.js.map +7 -0
- package/dist/prod/theming/getEffectiveStyle.js +2 -0
- package/dist/prod/theming/getEffectiveStyle.js.map +7 -0
- package/dist/prod/theming/getStylesString.js +2 -0
- package/dist/prod/theming/getStylesString.js.map +7 -0
- package/dist/prod/theming/getThemeDesignerTheme.js +2 -0
- package/dist/prod/theming/getThemeDesignerTheme.js.map +7 -0
- package/dist/prod/thirdparty/_merge.js +2 -0
- package/dist/prod/thirdparty/_merge.js.map +7 -0
- package/dist/prod/thirdparty/isPlainObject.js +2 -0
- package/dist/prod/thirdparty/isPlainObject.js.map +7 -0
- package/dist/prod/thirdparty/merge.js +2 -0
- package/dist/prod/thirdparty/merge.js.map +7 -0
- package/dist/prod/thirdparty/preact/jsx.d.js +2 -0
- package/dist/prod/thirdparty/preact/jsx.d.js.map +7 -0
- package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js +2 -0
- package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js.map +7 -0
- package/dist/prod/thirdparty/preact/jsxRuntime.module.js +1 -0
- package/dist/prod/thirdparty/preact/preact.module.d.js +2 -0
- package/dist/prod/thirdparty/preact/preact.module.d.js.map +7 -0
- package/dist/prod/thirdparty/preact/preact.module.js +1 -0
- package/dist/prod/types/AnimationMode.js +2 -0
- package/dist/prod/types/AnimationMode.js.map +7 -0
- package/dist/prod/types/CalendarType.js +2 -0
- package/dist/prod/types/CalendarType.js.map +7 -0
- package/dist/prod/types/InvisibleMessageMode.js +2 -0
- package/dist/prod/types/InvisibleMessageMode.js.map +7 -0
- package/dist/prod/types/ItemNavigationBehavior.js +2 -0
- package/dist/prod/types/ItemNavigationBehavior.js.map +7 -0
- package/dist/prod/types/MovePlacement.js +2 -0
- package/dist/prod/types/MovePlacement.js.map +7 -0
- package/dist/prod/types/NavigationMode.js +2 -0
- package/dist/prod/types/NavigationMode.js.map +7 -0
- package/dist/prod/types/Orientation.js +2 -0
- package/dist/prod/types/Orientation.js.map +7 -0
- package/dist/prod/types/SortOrder.js +2 -0
- package/dist/prod/types/SortOrder.js.map +7 -0
- package/dist/prod/types/ValueState.js +2 -0
- package/dist/prod/types/ValueState.js.map +7 -0
- package/dist/prod/types.js +2 -0
- package/dist/prod/types.js.map +7 -0
- package/dist/prod/updateShadowRoot.js +2 -0
- package/dist/prod/updateShadowRoot.js.map +7 -0
- package/dist/prod/util/AccessibilityTextsHelper.js +2 -0
- package/dist/prod/util/AccessibilityTextsHelper.js.map +7 -0
- package/dist/prod/util/Caret.js +2 -0
- package/dist/prod/util/Caret.js.map +7 -0
- package/dist/prod/util/ColorConversion.js +2 -0
- package/dist/prod/util/ColorConversion.js.map +7 -0
- package/dist/prod/util/FetchHelper.js +2 -0
- package/dist/prod/util/FetchHelper.js.map +7 -0
- package/dist/prod/util/FocusableElements.js +2 -0
- package/dist/prod/util/FocusableElements.js.map +7 -0
- package/dist/prod/util/HTMLSanitizer.js +2 -0
- package/dist/prod/util/HTMLSanitizer.js.map +7 -0
- package/dist/prod/util/InvisibleMessage.js +2 -0
- package/dist/prod/util/InvisibleMessage.js.map +7 -0
- package/dist/prod/util/PopupUtils.js +2 -0
- package/dist/prod/util/PopupUtils.js.map +7 -0
- package/dist/prod/util/SelectionAssistant.js +2 -0
- package/dist/prod/util/SelectionAssistant.js.map +7 -0
- package/dist/prod/util/SlotsHelper.js +2 -0
- package/dist/prod/util/SlotsHelper.js.map +7 -0
- package/dist/prod/util/StringHelper.js +2 -0
- package/dist/prod/util/StringHelper.js.map +7 -0
- package/dist/prod/util/TabbableElements.js +2 -0
- package/dist/prod/util/TabbableElements.js.map +7 -0
- package/dist/prod/util/arraysAreEqual.js +2 -0
- package/dist/prod/util/arraysAreEqual.js.map +7 -0
- package/dist/prod/util/clamp.js +2 -0
- package/dist/prod/util/clamp.js.map +7 -0
- package/dist/prod/util/createLinkInHead.js +2 -0
- package/dist/prod/util/createLinkInHead.js.map +7 -0
- package/dist/prod/util/debounce.js +2 -0
- package/dist/prod/util/debounce.js.map +7 -0
- package/dist/prod/util/detectNavigatorLanguage.js +2 -0
- package/dist/prod/util/detectNavigatorLanguage.js.map +7 -0
- package/dist/prod/util/dragAndDrop/DragRegistry.js +2 -0
- package/dist/prod/util/dragAndDrop/DragRegistry.js.map +7 -0
- package/dist/prod/util/dragAndDrop/findClosestPosition.js +2 -0
- package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +7 -0
- package/dist/prod/util/dragAndDrop/handleDragOver.js +2 -0
- package/dist/prod/util/dragAndDrop/handleDragOver.js.map +7 -0
- package/dist/prod/util/dragAndDrop/handleDrop.js +2 -0
- package/dist/prod/util/dragAndDrop/handleDrop.js.map +7 -0
- package/dist/prod/util/dragAndDrop/longDragOverHandler.js +2 -0
- package/dist/prod/util/dragAndDrop/longDragOverHandler.js.map +7 -0
- package/dist/prod/util/escapeRegex.js +2 -0
- package/dist/prod/util/escapeRegex.js.map +7 -0
- package/dist/prod/util/fixSafariActiveState.js +2 -0
- package/dist/prod/util/fixSafariActiveState.js.map +7 -0
- package/dist/prod/util/formatMessage.js +2 -0
- package/dist/prod/util/formatMessage.js.map +7 -0
- package/dist/prod/util/generateHighlightedMarkup.js +2 -0
- package/dist/prod/util/generateHighlightedMarkup.js.map +7 -0
- package/dist/prod/util/getActiveElement.js +2 -0
- package/dist/prod/util/getActiveElement.js.map +7 -0
- package/dist/prod/util/getClassCopy.js +2 -0
- package/dist/prod/util/getClassCopy.js.map +7 -0
- package/dist/prod/util/getDesigntimePropertyAsArray.js +2 -0
- package/dist/prod/util/getDesigntimePropertyAsArray.js.map +7 -0
- package/dist/prod/util/getEffectiveContentDensity.js +2 -0
- package/dist/prod/util/getEffectiveContentDensity.js.map +7 -0
- package/dist/prod/util/getEffectiveScrollbarStyle.js +28 -0
- package/dist/prod/util/getEffectiveScrollbarStyle.js.map +7 -0
- package/dist/prod/util/getFastNavigationGroups.js +2 -0
- package/dist/prod/util/getFastNavigationGroups.js.map +7 -0
- package/dist/prod/util/getFileExtension.js +2 -0
- package/dist/prod/util/getFileExtension.js.map +7 -0
- package/dist/prod/util/getNormalizedTarget.js +2 -0
- package/dist/prod/util/getNormalizedTarget.js.map +7 -0
- package/dist/prod/util/getParentElement.js +2 -0
- package/dist/prod/util/getParentElement.js.map +7 -0
- package/dist/prod/util/getSingletonElementInstance.js +2 -0
- package/dist/prod/util/getSingletonElementInstance.js.map +7 -0
- package/dist/prod/util/hash2str.js +2 -0
- package/dist/prod/util/hash2str.js.map +7 -0
- package/dist/prod/util/isElementClickable.js +2 -0
- package/dist/prod/util/isElementClickable.js.map +7 -0
- package/dist/prod/util/isElementHidden.js +2 -0
- package/dist/prod/util/isElementHidden.js.map +7 -0
- package/dist/prod/util/isElementInView.js +2 -0
- package/dist/prod/util/isElementInView.js.map +7 -0
- package/dist/prod/util/isElementTabbable.js +2 -0
- package/dist/prod/util/isElementTabbable.js.map +7 -0
- package/dist/prod/util/isValidPropertyName.js +2 -0
- package/dist/prod/util/isValidPropertyName.js.map +7 -0
- package/dist/prod/util/throttle.js +2 -0
- package/dist/prod/util/throttle.js.map +7 -0
- package/dist/prod/util/toLowercaseEnumValue.js +2 -0
- package/dist/prod/util/toLowercaseEnumValue.js.map +7 -0
- package/dist/prod/util/whenDOMReady.js +2 -0
- package/dist/prod/util/whenDOMReady.js.map +7 -0
- package/dist/prod/util/willShowContent.js +2 -0
- package/dist/prod/util/willShowContent.js.map +7 -0
- package/dist/prod/validateThemeRoot.js +2 -0
- package/dist/prod/validateThemeRoot.js.map +7 -0
- package/dist/renderer/JsxRenderer.d.ts +3 -0
- package/dist/renderer/JsxRenderer.js +26 -0
- package/dist/renderer/JsxRenderer.js.map +1 -0
- package/dist/renderer/LitRenderer.d.ts +1 -1
- package/dist/renderer/LitRenderer.js +5 -10
- package/dist/renderer/LitRenderer.js.map +1 -1
- package/dist/renderer/directives/style-map.d.ts +13 -0
- package/dist/renderer/directives/style-map.js +59 -59
- package/dist/renderer/directives/style-map.js.map +1 -0
- package/dist/renderer/executeTemplate.d.ts +3 -4
- package/dist/renderer/executeTemplate.js +1 -19
- package/dist/renderer/executeTemplate.js.map +1 -1
- package/dist/sap/base/Log.js +698 -188
- package/dist/sap/base/assert.js +28 -1
- package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
- package/dist/sap/base/security/URLListValidator.js +253 -6
- package/dist/sap/base/security/encodeCSS.js +34 -8
- package/dist/sap/base/security/encodeXML.js +47 -17
- package/dist/sap/base/security/sanitizeHTML.js +35 -13
- package/dist/sap/base/strings/toHex.js +27 -2
- package/dist/sap/base/util/now.js +24 -3
- package/dist/sap/base/util/uid.js +27 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +2 -2
- package/dist/ssr-dom-shim.d.ts +1 -0
- package/dist/ssr-dom-shim.js +63 -0
- package/dist/ssr-dom-shim.js.map +1 -0
- package/dist/ssr-dom.d.ts +1 -0
- package/dist/ssr-dom.js +3 -0
- package/dist/ssr-dom.js.map +1 -0
- package/dist/theming/CustomStyle.js.map +1 -1
- package/dist/theming/applyTheme.js +1 -1
- package/dist/theming/applyTheme.js.map +1 -1
- package/dist/theming/getConstructableStyle.d.ts +2 -2
- package/dist/theming/getConstructableStyle.js +3 -3
- package/dist/theming/getConstructableStyle.js.map +1 -1
- package/dist/theming/getEffectiveStyle.d.ts +1 -1
- package/dist/theming/getEffectiveStyle.js +5 -12
- package/dist/theming/getEffectiveStyle.js.map +1 -1
- package/dist/theming/getStylesString.js +2 -4
- package/dist/theming/getStylesString.js.map +1 -1
- package/dist/theming/getThemeDesignerTheme.js +2 -1
- package/dist/theming/getThemeDesignerTheme.js.map +1 -1
- package/dist/thirdparty/_merge.js.map +1 -1
- package/dist/thirdparty/isPlainObject.js.map +1 -1
- package/dist/thirdparty/preact/jsx.d.ts +2616 -0
- package/dist/thirdparty/preact/jsxRuntime.module.d.ts +62 -0
- package/dist/thirdparty/preact/jsxRuntime.module.js +1 -0
- package/dist/thirdparty/preact/preact.module.d.ts +398 -0
- package/dist/thirdparty/preact/preact.module.js +1 -0
- package/dist/types/MovePlacement.d.ts +20 -0
- package/dist/types/MovePlacement.js +22 -0
- package/dist/types/MovePlacement.js.map +1 -0
- package/dist/types/Orientation.d.ts +16 -0
- package/dist/types/Orientation.js +18 -0
- package/dist/types/Orientation.js.map +1 -0
- package/dist/types/SortOrder.d.ts +24 -0
- package/dist/types/SortOrder.js +26 -0
- package/dist/types/SortOrder.js.map +1 -0
- package/dist/types/ValueState.d.ts +3 -3
- package/dist/types/ValueState.js +3 -3
- package/dist/types/ValueState.js.map +1 -1
- package/dist/types.d.ts +37 -14
- package/dist/types.js.map +1 -1
- package/dist/updateShadowRoot.d.ts +1 -2
- package/dist/updateShadowRoot.js +4 -29
- package/dist/updateShadowRoot.js.map +1 -1
- package/dist/util/{AriaLabelHelper.d.ts → AccessibilityTextsHelper.d.ts} +4 -2
- package/dist/util/{AriaLabelHelper.js → AccessibilityTextsHelper.js} +36 -8
- package/dist/util/AccessibilityTextsHelper.js.map +1 -0
- package/dist/util/Caret.js.map +1 -1
- package/dist/util/ColorConversion.d.ts +2 -1
- package/dist/util/ColorConversion.js +35 -23
- package/dist/util/ColorConversion.js.map +1 -1
- package/dist/util/FetchHelper.js.map +1 -1
- package/dist/util/FocusableElements.js +40 -12
- package/dist/util/FocusableElements.js.map +1 -1
- package/dist/util/HTMLSanitizer.d.ts +2 -0
- package/dist/util/HTMLSanitizer.js +2 -2
- package/dist/util/HTMLSanitizer.js.map +1 -1
- package/dist/util/InvisibleMessage.js +2 -2
- package/dist/util/InvisibleMessage.js.map +1 -1
- package/dist/util/PopupUtils.d.ts +1 -3
- package/dist/util/PopupUtils.js +1 -15
- package/dist/util/PopupUtils.js.map +1 -1
- package/dist/util/SelectionAssistant.d.ts +12 -0
- package/dist/util/SelectionAssistant.js +79 -0
- package/dist/util/SelectionAssistant.js.map +1 -0
- package/dist/util/SlotsHelper.js.map +1 -1
- package/dist/util/StringHelper.d.ts +3 -1
- package/dist/util/StringHelper.js +15 -1
- package/dist/util/StringHelper.js.map +1 -1
- package/dist/util/TabbableElements.js +3 -10
- package/dist/util/TabbableElements.js.map +1 -1
- package/dist/util/arraysAreEqual.js.map +1 -1
- package/dist/util/clamp.js +2 -1
- package/dist/util/clamp.js.map +1 -1
- package/dist/util/createLinkInHead.d.ts +1 -1
- package/dist/util/createLinkInHead.js +1 -1
- package/dist/util/createLinkInHead.js.map +1 -1
- package/dist/util/debounce.js.map +1 -1
- package/dist/util/detectNavigatorLanguage.js +4 -0
- package/dist/util/detectNavigatorLanguage.js.map +1 -1
- package/dist/util/dragAndDrop/DragRegistry.d.ts +33 -0
- package/dist/util/dragAndDrop/DragRegistry.js +66 -0
- package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
- package/dist/util/dragAndDrop/findClosestPosition.d.ts +12 -0
- package/dist/util/dragAndDrop/findClosestPosition.js +106 -0
- package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
- package/dist/util/dragAndDrop/handleDragOver.d.ts +16 -0
- package/dist/util/dragAndDrop/handleDragOver.js +42 -0
- package/dist/util/dragAndDrop/handleDragOver.js.map +1 -0
- package/dist/util/dragAndDrop/handleDrop.d.ts +5 -0
- package/dist/util/dragAndDrop/handleDrop.js +22 -0
- package/dist/util/dragAndDrop/handleDrop.js.map +1 -0
- package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
- package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
- package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
- package/dist/util/fixSafariActiveState.d.ts +2 -0
- package/dist/util/fixSafariActiveState.js +11 -0
- package/dist/util/fixSafariActiveState.js.map +1 -0
- package/dist/util/formatMessage.js.map +1 -1
- package/dist/util/generateHighlightedMarkup.js.map +1 -1
- package/dist/util/getActiveElement.js.map +1 -1
- package/dist/util/getClassCopy.d.ts +114 -88
- package/dist/util/getEffectiveScrollbarStyle.d.ts +1 -1
- package/dist/util/getEffectiveScrollbarStyle.js +33 -1
- package/dist/util/getEffectiveScrollbarStyle.js.map +1 -1
- package/dist/util/getFastNavigationGroups.js +6 -1
- package/dist/util/getFastNavigationGroups.js.map +1 -1
- package/dist/util/getFileExtension.js.map +1 -1
- package/dist/util/getNormalizedTarget.js.map +1 -1
- package/dist/util/getParentElement.d.ts +1 -1
- package/dist/util/getParentElement.js +2 -2
- package/dist/util/getParentElement.js.map +1 -1
- package/dist/util/getSingletonElementInstance.js.map +1 -1
- package/dist/util/hash2str.d.ts +1 -0
- package/dist/util/hash2str.js +14 -0
- package/dist/util/hash2str.js.map +1 -0
- package/dist/util/isElementClickable.js.map +1 -1
- package/dist/util/isElementHidden.js.map +1 -1
- package/dist/util/isElementTabbable.js +2 -2
- package/dist/util/isElementTabbable.js.map +1 -1
- package/dist/util/isValidPropertyName.js.map +1 -1
- package/dist/util/throttle.d.ts +2 -0
- package/dist/util/throttle.js +20 -0
- package/dist/util/throttle.js.map +1 -0
- package/dist/util/toLowercaseEnumValue.d.ts +3 -0
- package/dist/util/toLowercaseEnumValue.js +4 -0
- package/dist/util/toLowercaseEnumValue.js.map +1 -0
- package/dist/util/whenDOMReady.js.map +1 -1
- package/dist/validateThemeRoot.js +3 -2
- package/dist/validateThemeRoot.js.map +1 -1
- package/dist/vscode.html-custom-data.json +22 -0
- package/package-scripts.cjs +20 -13
- package/package.json +36 -12
- package/src/css/SystemCSSVars.css +0 -8
- package/src/thirdparty/preact/jsxRuntime.module.js +1 -0
- package/src/thirdparty/preact/preact.module.js +1 -0
- package/src/thirdparty/preact/version.txt +1 -0
- package/tsconfig.json +18 -17
- package/.eslintignore +0 -16
- package/.eslintrc.cjs +0 -3
- package/bundle.esm.js +0 -67
- package/config/wdio.conf.cjs +0 -400
- package/dist/.tsbuildinfo +0 -1
- package/dist/CSP.d.ts +0 -30
- package/dist/CSP.js +0 -51
- package/dist/CSP.js.map +0 -1
- package/dist/MarkedEvents.d.ts +0 -9
- package/dist/MarkedEvents.js +0 -15
- package/dist/MarkedEvents.js.map +0 -1
- package/dist/StaticArea.d.ts +0 -3
- package/dist/StaticArea.js +0 -7
- package/dist/StaticArea.js.map +0 -1
- package/dist/StaticAreaItem.d.ts +0 -35
- package/dist/StaticAreaItem.js +0 -100
- package/dist/StaticAreaItem.js.map +0 -1
- package/dist/config/RTL.d.ts +0 -7
- package/dist/config/RTL.js +0 -37
- package/dist/config/RTL.js.map +0 -1
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +0 -4
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +0 -9
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +0 -1
- package/dist/theming/getEffectiveLinksHrefs.d.ts +0 -3
- package/dist/theming/getEffectiveLinksHrefs.js +0 -17
- package/dist/theming/getEffectiveLinksHrefs.js.map +0 -1
- package/dist/theming/preloadLinks.d.ts +0 -3
- package/dist/theming/preloadLinks.js +0 -19
- package/dist/theming/preloadLinks.js.map +0 -1
- package/dist/types/CSSColor.d.ts +0 -11
- package/dist/types/CSSColor.js +0 -14
- package/dist/types/CSSColor.js.map +0 -1
- package/dist/types/CSSSize.d.ts +0 -11
- package/dist/types/CSSSize.js +0 -14
- package/dist/types/CSSSize.js.map +0 -1
- package/dist/types/DOMReference.d.ts +0 -13
- package/dist/types/DOMReference.js +0 -21
- package/dist/types/DOMReference.js.map +0 -1
- package/dist/types/DataType.d.ts +0 -20
- package/dist/types/DataType.js +0 -39
- package/dist/types/DataType.js.map +0 -1
- package/dist/types/Float.d.ts +0 -14
- package/dist/types/Float.js +0 -18
- package/dist/types/Float.js.map +0 -1
- package/dist/types/Integer.d.ts +0 -14
- package/dist/types/Integer.js +0 -18
- package/dist/types/Integer.js.map +0 -1
- package/dist/util/AriaLabelHelper.js.map +0 -1
- package/dist/util/createStyleInHead.d.ts +0 -8
- package/dist/util/createStyleInHead.js +0 -18
- package/dist/util/createStyleInHead.js.map +0 -1
- package/dist/util/isElementContainingBlock.d.ts +0 -2
- package/dist/util/isElementContainingBlock.js +0 -11
- package/dist/util/isElementContainingBlock.js.map +0 -1
- package/index.js +0 -230
- package/lib/generate-asset-parameters/index.js +0 -27
- package/lib/generate-styles/index.js +0 -31
- package/lib/generate-version-info/index.js +0 -32
- package/src/renderer/directives/style-map.js +0 -72
- package/used-modules.txt +0 -10
package/dist/UI5Element.js
CHANGED
|
@@ -1,26 +1,56 @@
|
|
|
1
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
+
import "@ui5/webcomponents-base/dist/ssr-dom.js";
|
|
1
3
|
import merge from "./thirdparty/merge.js";
|
|
2
4
|
import { boot } from "./Boot.js";
|
|
3
5
|
import UI5ElementMetadata from "./UI5ElementMetadata.js";
|
|
4
6
|
import EventProvider from "./EventProvider.js";
|
|
5
|
-
import getSingletonElementInstance from "./util/getSingletonElementInstance.js";
|
|
6
|
-
import StaticAreaItem from "./StaticAreaItem.js";
|
|
7
7
|
import updateShadowRoot from "./updateShadowRoot.js";
|
|
8
8
|
import { shouldIgnoreCustomElement } from "./IgnoreCustomElements.js";
|
|
9
|
-
import { renderDeferred, renderImmediately, cancelRender } from "./Render.js";
|
|
9
|
+
import { renderDeferred, renderImmediately, cancelRender, } from "./Render.js";
|
|
10
10
|
import { registerTag, isTagRegistered, recordTagRegistrationFailure } from "./CustomElementsRegistry.js";
|
|
11
11
|
import { observeDOMNode, unobserveDOMNode } from "./DOMObserver.js";
|
|
12
12
|
import { skipOriginalEvent } from "./config/NoConflict.js";
|
|
13
13
|
import getEffectiveDir from "./locale/getEffectiveDir.js";
|
|
14
|
-
import { kebabToCamelCase, camelToKebabCase } from "./util/StringHelper.js";
|
|
14
|
+
import { kebabToCamelCase, camelToKebabCase, kebabToPascalCase } from "./util/StringHelper.js";
|
|
15
15
|
import isValidPropertyName from "./util/isValidPropertyName.js";
|
|
16
16
|
import { getSlotName, getSlottedNodesList } from "./util/SlotsHelper.js";
|
|
17
17
|
import arraysAreEqual from "./util/arraysAreEqual.js";
|
|
18
18
|
import { markAsRtlAware } from "./locale/RTLAwareRegistry.js";
|
|
19
|
-
import preloadLinks from "./theming/preloadLinks.js";
|
|
20
19
|
import executeTemplate from "./renderer/executeTemplate.js";
|
|
20
|
+
import { shouldScopeCustomElement } from "./CustomElementsScopeUtils.js";
|
|
21
|
+
import { updateFormValue, setFormValue } from "./features/InputElementsFormSupport.js";
|
|
22
|
+
import { getI18nBundle } from "./i18nBundle.js";
|
|
23
|
+
import { fetchCldr } from "./asset-registries/LocaleData.js";
|
|
24
|
+
import getLocale from "./locale/getLocale.js";
|
|
25
|
+
const DEV_MODE = true;
|
|
21
26
|
let autoId = 0;
|
|
22
27
|
const elementTimeouts = new Map();
|
|
23
28
|
const uniqueDependenciesCache = new Map();
|
|
29
|
+
const defaultConverter = {
|
|
30
|
+
fromAttribute(value, type) {
|
|
31
|
+
if (type === Boolean) {
|
|
32
|
+
return value !== null;
|
|
33
|
+
}
|
|
34
|
+
if (type === Number) {
|
|
35
|
+
return value === null ? undefined : parseFloat(value);
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
},
|
|
39
|
+
toAttribute(value, type) {
|
|
40
|
+
if (type === Boolean) {
|
|
41
|
+
return value ? "" : null;
|
|
42
|
+
}
|
|
43
|
+
// don't set attributes for arrays and objects
|
|
44
|
+
if (type === Object || type === Array) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// object, array, other
|
|
48
|
+
if (value === null || value === undefined) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return String(value);
|
|
52
|
+
},
|
|
53
|
+
};
|
|
24
54
|
/**
|
|
25
55
|
* Triggers re-rendering of a UI5Element instance due to state change.
|
|
26
56
|
* @param {ChangeInfo} changeInfo An object with information about the change that caused invalidation.
|
|
@@ -38,6 +68,22 @@ function _invalidate(changeInfo) {
|
|
|
38
68
|
renderDeferred(this);
|
|
39
69
|
this._invalidationEventProvider.fireEvent("invalidate", { ...changeInfo, target: this });
|
|
40
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* looks up a property descsriptor including in the prototype chain
|
|
73
|
+
* @param proto the starting prototype
|
|
74
|
+
* @param name the property to look for
|
|
75
|
+
* @returns the property descriptor if found directly or in the prototype chaing, undefined if not found
|
|
76
|
+
*/
|
|
77
|
+
function getPropertyDescriptor(proto, name) {
|
|
78
|
+
do {
|
|
79
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, name);
|
|
80
|
+
if (descriptor) {
|
|
81
|
+
return descriptor;
|
|
82
|
+
}
|
|
83
|
+
// go up the prototype chain
|
|
84
|
+
proto = Object.getPrototypeOf(proto);
|
|
85
|
+
} while (proto && proto !== HTMLElement.prototype);
|
|
86
|
+
}
|
|
41
87
|
/**
|
|
42
88
|
* @class
|
|
43
89
|
* Base class for all UI5 Web Components
|
|
@@ -48,6 +94,11 @@ function _invalidate(changeInfo) {
|
|
|
48
94
|
class UI5Element extends HTMLElement {
|
|
49
95
|
constructor() {
|
|
50
96
|
super();
|
|
97
|
+
this.__shouldHydrate = false;
|
|
98
|
+
// used to differentiate whether a setter is called from the constructor (from an initializer) or later
|
|
99
|
+
// setters from the constructor should not set attributes, this is delegated after the first rendering but is async
|
|
100
|
+
// setters after the constructor can set attributes synchronously for more convinient development
|
|
101
|
+
this._rendered = false;
|
|
51
102
|
const ctor = this.constructor;
|
|
52
103
|
this._changedState = []; // Filled on each invalidation, cleared on re-render (used for debugging)
|
|
53
104
|
this._suppressInvalidation = true; // A flag telling whether all invalidations should be ignored. Initialized with "true" because a UI5Element can not be invalidated until it is rendered for the first time
|
|
@@ -63,10 +114,45 @@ class UI5Element extends HTMLElement {
|
|
|
63
114
|
});
|
|
64
115
|
this._domRefReadyPromise._deferredResolve = deferredResolve;
|
|
65
116
|
this._doNotSyncAttributes = new Set(); // attributes that are excluded from attributeChangedCallback synchronization
|
|
117
|
+
this._slotsAssignedNodes = new WeakMap(); // map of all nodes, slotted (directly or transitively) per component slot
|
|
66
118
|
this._state = { ...ctor.getMetadata().getInitialState() };
|
|
67
|
-
|
|
119
|
+
// save properties set before element is upgraded, as they will be overriden by the field initializers in the constructor
|
|
120
|
+
this.initializedProperties = new Map();
|
|
121
|
+
const allProps = this.constructor.getMetadata().getPropertiesList();
|
|
122
|
+
allProps.forEach(propertyName => {
|
|
123
|
+
if (this.hasOwnProperty(propertyName)) { // eslint-disable-line
|
|
124
|
+
const value = this[propertyName];
|
|
125
|
+
this.initializedProperties.set(propertyName, value);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
this._internals = this.attachInternals();
|
|
129
|
+
this._initShadowRoot();
|
|
130
|
+
}
|
|
131
|
+
_initShadowRoot() {
|
|
132
|
+
const ctor = this.constructor;
|
|
68
133
|
if (ctor._needsShadowDOM()) {
|
|
69
|
-
|
|
134
|
+
const defaultOptions = { mode: "open" };
|
|
135
|
+
if (!this.shadowRoot) {
|
|
136
|
+
this.attachShadow({ ...defaultOptions, ...ctor.getMetadata().getShadowRootOptions() });
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// The shadow root is initially rendered. This applies to case where the component's template
|
|
140
|
+
// is inserted into the DOM declaratively using a <template> tag.
|
|
141
|
+
this.__shouldHydrate = true;
|
|
142
|
+
}
|
|
143
|
+
const slotsAreManaged = ctor.getMetadata().slotsAreManaged();
|
|
144
|
+
if (slotsAreManaged) {
|
|
145
|
+
this.shadowRoot.addEventListener("slotchange", this._onShadowRootSlotChange.bind(this));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Note: this "slotchange" listener is for slots, rendered in the component's shadow root
|
|
151
|
+
*/
|
|
152
|
+
_onShadowRootSlotChange(e) {
|
|
153
|
+
const targetShadowRoot = e.target?.getRootNode(); // the "slotchange" event target is always a slot element
|
|
154
|
+
if (targetShadowRoot === this.shadowRoot) { // only for slotchange events that originate from slots, belonging to the component's shadow root
|
|
155
|
+
this._processChildren();
|
|
70
156
|
}
|
|
71
157
|
}
|
|
72
158
|
/**
|
|
@@ -85,18 +171,24 @@ class UI5Element extends HTMLElement {
|
|
|
85
171
|
const template = this.constructor.template;
|
|
86
172
|
return executeTemplate(template, this);
|
|
87
173
|
}
|
|
88
|
-
renderStatic() {
|
|
89
|
-
const template = this.constructor.staticAreaTemplate;
|
|
90
|
-
return executeTemplate(template, this);
|
|
91
|
-
}
|
|
92
174
|
/**
|
|
93
175
|
* Do not call this method from derivatives of UI5Element, use "onEnterDOM" only
|
|
94
176
|
* @private
|
|
95
177
|
*/
|
|
96
178
|
async connectedCallback() {
|
|
179
|
+
if (DEV_MODE) {
|
|
180
|
+
const props = this.constructor.getMetadata().getProperties();
|
|
181
|
+
for (const [prop, propData] of Object.entries(props)) { // eslint-disable-line
|
|
182
|
+
if (Object.hasOwn(this, prop) && !this.initializedProperties.has(prop)) {
|
|
183
|
+
// initialized properties should not trigger this error as they will be reassigned, only property initializers will trigger this in case unsupported TS mode
|
|
184
|
+
// eslint-disable-next-line no-console
|
|
185
|
+
console.error(`[UI5-FWK] ${this.constructor.getMetadata().getTag()} has a property [${prop}] that is shadowed by the instance. Updates to this property will not invalidate the component. Possible reason is TS target ES2022 or TS useDefineForClassFields`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
97
189
|
const ctor = this.constructor;
|
|
98
190
|
this.setAttribute(ctor.getMetadata().getPureTag(), "");
|
|
99
|
-
if (ctor.getMetadata().supportsF6FastNavigation()) {
|
|
191
|
+
if (ctor.getMetadata().supportsF6FastNavigation() && !this.hasAttribute("data-sap-ui-fastnavgroup")) {
|
|
100
192
|
this.setAttribute("data-sap-ui-fastnavgroup", "true");
|
|
101
193
|
}
|
|
102
194
|
const slotsAreManaged = ctor.getMetadata().slotsAreManaged();
|
|
@@ -109,6 +201,9 @@ class UI5Element extends HTMLElement {
|
|
|
109
201
|
if (!this._inDOM) { // Component removed from DOM while _processChildren was running
|
|
110
202
|
return;
|
|
111
203
|
}
|
|
204
|
+
if (!ctor.asyncFinished) {
|
|
205
|
+
await ctor.definePromise;
|
|
206
|
+
}
|
|
112
207
|
renderImmediately(this);
|
|
113
208
|
this._domRefReadyPromise._deferredResolve();
|
|
114
209
|
this._fullyConnected = true;
|
|
@@ -129,9 +224,7 @@ class UI5Element extends HTMLElement {
|
|
|
129
224
|
this.onExitDOM();
|
|
130
225
|
this._fullyConnected = false;
|
|
131
226
|
}
|
|
132
|
-
|
|
133
|
-
this.staticAreaItem.parentElement.removeChild(this.staticAreaItem);
|
|
134
|
-
}
|
|
227
|
+
this._domRefReadyPromise._deferredResolve();
|
|
135
228
|
cancelRender(this);
|
|
136
229
|
}
|
|
137
230
|
/**
|
|
@@ -165,10 +258,9 @@ class UI5Element extends HTMLElement {
|
|
|
165
258
|
return;
|
|
166
259
|
}
|
|
167
260
|
const canSlotText = metadata.canSlotText();
|
|
168
|
-
const hasClonedSlot = Object.keys(metadata.getSlots()).some(slotName => metadata.getSlots()[slotName].cloned);
|
|
169
261
|
const mutationObserverOptions = {
|
|
170
262
|
childList: true,
|
|
171
|
-
subtree: canSlotText
|
|
263
|
+
subtree: canSlotText,
|
|
172
264
|
characterData: canSlotText,
|
|
173
265
|
};
|
|
174
266
|
observeDOMNode(this, this._processChildren.bind(this), mutationObserverOptions);
|
|
@@ -231,9 +323,9 @@ class UI5Element extends HTMLElement {
|
|
|
231
323
|
const localName = child.localName;
|
|
232
324
|
const shouldWaitForCustomElement = localName.includes("-") && !shouldIgnoreCustomElement(localName);
|
|
233
325
|
if (shouldWaitForCustomElement) {
|
|
234
|
-
const isDefined =
|
|
326
|
+
const isDefined = customElements.get(localName);
|
|
235
327
|
if (!isDefined) {
|
|
236
|
-
const whenDefinedPromise =
|
|
328
|
+
const whenDefinedPromise = customElements.whenDefined(localName); // Class registered, but instances not upgraded yet
|
|
237
329
|
let timeoutPromise = elementTimeouts.get(localName);
|
|
238
330
|
if (!timeoutPromise) {
|
|
239
331
|
timeoutPromise = new Promise(resolve => setTimeout(resolve, 1000));
|
|
@@ -241,20 +333,18 @@ class UI5Element extends HTMLElement {
|
|
|
241
333
|
}
|
|
242
334
|
await Promise.race([whenDefinedPromise, timeoutPromise]);
|
|
243
335
|
}
|
|
244
|
-
|
|
336
|
+
customElements.upgrade(child);
|
|
245
337
|
}
|
|
246
338
|
}
|
|
247
339
|
child = ctor.getMetadata().constructor.validateSlotValue(child, slotData);
|
|
248
340
|
// Listen for any invalidation on the child if invalidateOnChildChange is true or an object (ignore when false or not set)
|
|
249
341
|
if (instanceOfUI5Element(child) && slotData.invalidateOnChildChange) {
|
|
250
342
|
const childChangeListener = this._getChildChangeListener(slotName);
|
|
251
|
-
|
|
252
|
-
child.attachInvalidate.call(child, childChangeListener);
|
|
253
|
-
}
|
|
343
|
+
child.attachInvalidate.call(child, childChangeListener);
|
|
254
344
|
}
|
|
255
345
|
// Listen for the slotchange event if the child is a slot itself
|
|
256
346
|
if (child instanceof HTMLSlotElement) {
|
|
257
|
-
this._attachSlotChange(child, slotName);
|
|
347
|
+
this._attachSlotChange(child, slotName, !!slotData.invalidateOnChildChange);
|
|
258
348
|
}
|
|
259
349
|
const propertyName = slotData.propertyName || slotName;
|
|
260
350
|
if (slottedChildrenMap.has(propertyName)) {
|
|
@@ -269,6 +359,7 @@ class UI5Element extends HTMLElement {
|
|
|
269
359
|
// not the order elements are defined.
|
|
270
360
|
slottedChildrenMap.forEach((children, propertyName) => {
|
|
271
361
|
this._state[propertyName] = children.sort((a, b) => a.idx - b.idx).map(_ => _.child);
|
|
362
|
+
this._state[kebabToCamelCase(propertyName)] = this._state[propertyName];
|
|
272
363
|
});
|
|
273
364
|
// Compare the content of each slot with the cached values and invalidate for the ones that changed
|
|
274
365
|
let invalidated = false;
|
|
@@ -281,6 +372,9 @@ class UI5Element extends HTMLElement {
|
|
|
281
372
|
reason: "children",
|
|
282
373
|
});
|
|
283
374
|
invalidated = true;
|
|
375
|
+
if (ctor.getMetadata().isFormAssociated()) {
|
|
376
|
+
setFormValue(this);
|
|
377
|
+
}
|
|
284
378
|
}
|
|
285
379
|
}
|
|
286
380
|
// If none of the slots had an invalidation due to changes to immediate children,
|
|
@@ -303,15 +397,14 @@ class UI5Element extends HTMLElement {
|
|
|
303
397
|
children.forEach(child => {
|
|
304
398
|
if (instanceOfUI5Element(child)) {
|
|
305
399
|
const childChangeListener = this._getChildChangeListener(slotName);
|
|
306
|
-
|
|
307
|
-
child.detachInvalidate.call(child, childChangeListener);
|
|
308
|
-
}
|
|
400
|
+
child.detachInvalidate.call(child, childChangeListener);
|
|
309
401
|
}
|
|
310
402
|
if (child instanceof HTMLSlotElement) {
|
|
311
403
|
this._detachSlotChange(child, slotName);
|
|
312
404
|
}
|
|
313
405
|
});
|
|
314
406
|
this._state[propertyName] = [];
|
|
407
|
+
this._state[kebabToCamelCase(propertyName)] = this._state[propertyName];
|
|
315
408
|
}
|
|
316
409
|
/**
|
|
317
410
|
* Attach a callback that will be executed whenever the component is invalidated
|
|
@@ -365,23 +458,21 @@ class UI5Element extends HTMLElement {
|
|
|
365
458
|
const nameInCamelCase = kebabToCamelCase(realName);
|
|
366
459
|
if (properties.hasOwnProperty(nameInCamelCase)) { // eslint-disable-line
|
|
367
460
|
const propData = properties[nameInCamelCase];
|
|
368
|
-
const
|
|
369
|
-
|
|
370
|
-
if (propertyType && propertyType.isDataTypeClass) {
|
|
371
|
-
propertyValidator = propertyType;
|
|
372
|
-
}
|
|
373
|
-
if (propertyValidator) {
|
|
374
|
-
newPropertyValue = propertyValidator.attributeToProperty(newValue);
|
|
375
|
-
}
|
|
376
|
-
else if (propertyType === Boolean) {
|
|
377
|
-
newPropertyValue = newValue !== null;
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
newPropertyValue = newValue;
|
|
381
|
-
}
|
|
461
|
+
const converter = propData.converter ?? defaultConverter;
|
|
462
|
+
newPropertyValue = converter.fromAttribute(newValue, propData.type);
|
|
382
463
|
this[nameInCamelCase] = newPropertyValue;
|
|
383
464
|
}
|
|
384
465
|
}
|
|
466
|
+
formAssociatedCallback() {
|
|
467
|
+
const ctor = this.constructor;
|
|
468
|
+
if (!ctor.getMetadata().isFormAssociated()) {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
updateFormValue(this);
|
|
472
|
+
}
|
|
473
|
+
static get formAssociated() {
|
|
474
|
+
return this.getMetadata().isFormAssociated();
|
|
475
|
+
}
|
|
385
476
|
/**
|
|
386
477
|
* @private
|
|
387
478
|
*/
|
|
@@ -392,54 +483,32 @@ class UI5Element extends HTMLElement {
|
|
|
392
483
|
}
|
|
393
484
|
const properties = ctor.getMetadata().getProperties();
|
|
394
485
|
const propData = properties[name];
|
|
395
|
-
const propertyType = propData.type;
|
|
396
|
-
let propertyValidator = propData.validator;
|
|
397
486
|
const attrName = camelToKebabCase(name);
|
|
398
|
-
const
|
|
399
|
-
if (
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
if (newAttrValue === null) { // null means there must be no attribute for the current value of the property
|
|
405
|
-
this._doNotSyncAttributes.add(attrName); // skip the attributeChangedCallback call for this attribute
|
|
406
|
-
this.removeAttribute(attrName); // remove the attribute safely (will not trigger synchronization to the property value due to the above line)
|
|
407
|
-
this._doNotSyncAttributes.delete(attrName); // enable synchronization again for this attribute
|
|
408
|
-
}
|
|
409
|
-
else {
|
|
410
|
-
this.setAttribute(attrName, newAttrValue);
|
|
487
|
+
const converter = propData.converter || defaultConverter;
|
|
488
|
+
if (DEV_MODE) {
|
|
489
|
+
const tag = this.constructor.getMetadata().getTag();
|
|
490
|
+
if (typeof newValue === "boolean" && propData.type !== Boolean) {
|
|
491
|
+
// eslint-disable-next-line
|
|
492
|
+
console.error(`[UI5-FWK] boolean value for property [${name}] of component [${tag}] is missing "{ type: Boolean }" in its property decorator. Attribute conversion will treat it as a string. If this is intended, pass the value converted to string, otherwise add the type to the property decorator`);
|
|
411
493
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
this.setAttribute(attrName, "");
|
|
494
|
+
if (typeof newValue === "number" && propData.type !== Number) {
|
|
495
|
+
// eslint-disable-next-line
|
|
496
|
+
console.error(`[UI5-FWK] numeric value for property [${name}] of component [${tag}] is missing "{ type: Number }" in its property decorator. Attribute conversion will treat it as a string. If this is intended, pass the value converted to string, otherwise add the type to the property decorator`);
|
|
416
497
|
}
|
|
417
|
-
|
|
418
|
-
|
|
498
|
+
if (typeof newValue === "string" && propData.type && propData.type !== String) {
|
|
499
|
+
// eslint-disable-next-line
|
|
500
|
+
console.error(`[UI5-FWK] string value for property [${name}] of component [${tag}] which has a non-string type [${propData.type}] in its property decorator. Attribute conversion will stop and keep the string value in the property.`);
|
|
419
501
|
}
|
|
420
502
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
} // else { return; } // old object handling
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* @private
|
|
429
|
-
*/
|
|
430
|
-
_upgradeProperty(propertyName) {
|
|
431
|
-
if (this.hasOwnProperty(propertyName)) { // eslint-disable-line
|
|
432
|
-
const value = this[propertyName];
|
|
433
|
-
delete this[propertyName];
|
|
434
|
-
this[propertyName] = value;
|
|
503
|
+
const newAttrValue = converter.toAttribute(newValue, propData.type);
|
|
504
|
+
this._doNotSyncAttributes.add(attrName); // skip the attributeChangedCallback call for this attribute
|
|
505
|
+
if (newAttrValue === null || newAttrValue === undefined) { // null means there must be no attribute for the current value of the property
|
|
506
|
+
this.removeAttribute(attrName); // remove the attribute safely (will not trigger synchronization to the property value due to the above line)
|
|
435
507
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
_upgradeAllProperties() {
|
|
441
|
-
const allProps = this.constructor.getMetadata().getPropertiesList();
|
|
442
|
-
allProps.forEach(this._upgradeProperty.bind(this));
|
|
508
|
+
else {
|
|
509
|
+
this.setAttribute(attrName, newAttrValue); // setting attributes from properties should not trigger the property setter again
|
|
510
|
+
}
|
|
511
|
+
this._doNotSyncAttributes.delete(attrName); // enable synchronization again for this attribute
|
|
443
512
|
}
|
|
444
513
|
/**
|
|
445
514
|
* Returns a singleton event listener for the "change" event of a child in a given slot
|
|
@@ -468,11 +537,32 @@ class UI5Element extends HTMLElement {
|
|
|
468
537
|
/**
|
|
469
538
|
* @private
|
|
470
539
|
*/
|
|
471
|
-
_attachSlotChange(
|
|
540
|
+
_attachSlotChange(slot, slotName, invalidateOnChildChange) {
|
|
472
541
|
const slotChangeListener = this._getSlotChangeListener(slotName);
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
542
|
+
slot.addEventListener("slotchange", (e) => {
|
|
543
|
+
slotChangeListener.call(slot, e);
|
|
544
|
+
if (invalidateOnChildChange) {
|
|
545
|
+
// Detach listeners for UI5 Elements that used to be in this slot
|
|
546
|
+
const previousChildren = this._slotsAssignedNodes.get(slot);
|
|
547
|
+
if (previousChildren) {
|
|
548
|
+
previousChildren.forEach(child => {
|
|
549
|
+
if (instanceOfUI5Element(child)) {
|
|
550
|
+
const childChangeListener = this._getChildChangeListener(slotName);
|
|
551
|
+
child.detachInvalidate.call(child, childChangeListener);
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
// Attach listeners for UI5 Elements that are now in this slot
|
|
556
|
+
const newChildren = getSlottedNodesList([slot]);
|
|
557
|
+
this._slotsAssignedNodes.set(slot, newChildren);
|
|
558
|
+
newChildren.forEach(child => {
|
|
559
|
+
if (instanceOfUI5Element(child)) {
|
|
560
|
+
const childChangeListener = this._getChildChangeListener(slotName);
|
|
561
|
+
child.attachInvalidate.call(child, childChangeListener);
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
});
|
|
476
566
|
}
|
|
477
567
|
/**
|
|
478
568
|
* @private
|
|
@@ -482,6 +572,7 @@ class UI5Element extends HTMLElement {
|
|
|
482
572
|
}
|
|
483
573
|
/**
|
|
484
574
|
* Whenever a slot element is slotted inside a UI5 Web Component, its slotchange event invalidates the component
|
|
575
|
+
* Note: this "slotchange" listener is for slots that are children of the component (in the light dom, as opposed to slots rendered by the component in the shadow root)
|
|
485
576
|
*
|
|
486
577
|
* @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is
|
|
487
578
|
* @private
|
|
@@ -508,9 +599,9 @@ class UI5Element extends HTMLElement {
|
|
|
508
599
|
* 1) children: immediate children (HTML elements or text nodes) were added, removed or reordered in the slot
|
|
509
600
|
* 2) textcontent: text nodes in the slot changed value (or nested text nodes were added or changed value). Can only trigger for slots of "type: Node"
|
|
510
601
|
* 3) slotchange: a slot element, slotted inside that slot had its "slotchange" event listener called. This practically means that transitively slotted children changed.
|
|
511
|
-
*
|
|
602
|
+
* Can only trigger if the child of a slot is a slot element itself.
|
|
512
603
|
* 4) childchange: indicates that a UI5Element child in that slot was invalidated and in turn invalidated the component.
|
|
513
|
-
*
|
|
604
|
+
* Can only trigger for slots with "invalidateOnChildChange" metadata descriptor
|
|
514
605
|
*
|
|
515
606
|
* - newValue: the new value of the property (for type="property" only)
|
|
516
607
|
*
|
|
@@ -521,6 +612,13 @@ class UI5Element extends HTMLElement {
|
|
|
521
612
|
* @public
|
|
522
613
|
*/
|
|
523
614
|
onInvalidation(changeInfo) { } // eslint-disable-line
|
|
615
|
+
updateAttributes() {
|
|
616
|
+
const ctor = this.constructor;
|
|
617
|
+
const props = ctor.getMetadata().getProperties();
|
|
618
|
+
for (const [prop, propData] of Object.entries(props)) { // eslint-disable-line
|
|
619
|
+
this._updateAttribute(prop, this[prop]);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
524
622
|
/**
|
|
525
623
|
* Do not call this method directly, only intended to be called by js
|
|
526
624
|
* @protected
|
|
@@ -528,13 +626,29 @@ class UI5Element extends HTMLElement {
|
|
|
528
626
|
_render() {
|
|
529
627
|
const ctor = this.constructor;
|
|
530
628
|
const hasIndividualSlots = ctor.getMetadata().hasIndividualSlots();
|
|
629
|
+
// restore properties that were initialized before `define` by calling the setter
|
|
630
|
+
if (this.initializedProperties.size > 0) {
|
|
631
|
+
Array.from(this.initializedProperties.entries()).forEach(([prop, value]) => {
|
|
632
|
+
delete this[prop];
|
|
633
|
+
this[prop] = value;
|
|
634
|
+
});
|
|
635
|
+
this.initializedProperties.clear();
|
|
636
|
+
}
|
|
531
637
|
// suppress invalidation to prevent state changes scheduling another rendering
|
|
532
638
|
this._suppressInvalidation = true;
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
639
|
+
try {
|
|
640
|
+
this.onBeforeRendering();
|
|
641
|
+
if (!this._rendered) {
|
|
642
|
+
// first time rendering, previous setters might have been initializers from the constructor - update attributes here
|
|
643
|
+
this.updateAttributes();
|
|
644
|
+
}
|
|
645
|
+
// Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered
|
|
646
|
+
this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized");
|
|
647
|
+
}
|
|
648
|
+
finally {
|
|
649
|
+
// always resume normal invalidation handling
|
|
650
|
+
this._suppressInvalidation = false;
|
|
651
|
+
}
|
|
538
652
|
// Update the shadow root with the render result
|
|
539
653
|
/*
|
|
540
654
|
if (this._changedState.length) {
|
|
@@ -557,13 +671,11 @@ class UI5Element extends HTMLElement {
|
|
|
557
671
|
}
|
|
558
672
|
*/
|
|
559
673
|
this._changedState = [];
|
|
560
|
-
// Update shadow root
|
|
674
|
+
// Update shadow root
|
|
561
675
|
if (ctor._needsShadowDOM()) {
|
|
562
676
|
updateShadowRoot(this);
|
|
563
677
|
}
|
|
564
|
-
|
|
565
|
-
this.staticAreaItem.update();
|
|
566
|
-
}
|
|
678
|
+
this._rendered = true;
|
|
567
679
|
// Safari requires that children get the slot attribute only after the slot tags have been rendered in the shadow DOM
|
|
568
680
|
if (hasIndividualSlots) {
|
|
569
681
|
this._assignIndividualSlotsToChildren();
|
|
@@ -603,11 +715,7 @@ class UI5Element extends HTMLElement {
|
|
|
603
715
|
if (!this.shadowRoot || this.shadowRoot.children.length === 0) {
|
|
604
716
|
return;
|
|
605
717
|
}
|
|
606
|
-
|
|
607
|
-
if (children.length !== 1) {
|
|
608
|
-
console.warn(`The shadow DOM for ${this.constructor.getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line
|
|
609
|
-
}
|
|
610
|
-
return children[0];
|
|
718
|
+
return this.shadowRoot.children[0];
|
|
611
719
|
}
|
|
612
720
|
/**
|
|
613
721
|
* Returns the DOM Element marked with "data-sap-focus-ref" inside the template.
|
|
@@ -638,7 +746,10 @@ class UI5Element extends HTMLElement {
|
|
|
638
746
|
async focus(focusOptions) {
|
|
639
747
|
await this._waitForDomRef();
|
|
640
748
|
const focusDomRef = this.getFocusDomRef();
|
|
641
|
-
if (focusDomRef
|
|
749
|
+
if (focusDomRef === this) {
|
|
750
|
+
HTMLElement.prototype.focus.call(this, focusOptions);
|
|
751
|
+
}
|
|
752
|
+
else if (focusDomRef && typeof focusDomRef.focus === "function") {
|
|
642
753
|
focusDomRef.focus(focusOptions);
|
|
643
754
|
}
|
|
644
755
|
}
|
|
@@ -650,12 +761,39 @@ class UI5Element extends HTMLElement {
|
|
|
650
761
|
* @param cancelable - true, if the user can call preventDefault on the event object
|
|
651
762
|
* @param bubbles - true, if the event bubbles
|
|
652
763
|
* @returns false, if the event was cancelled (preventDefault called), true otherwise
|
|
764
|
+
* @deprecated use fireDecoratorEvent instead
|
|
653
765
|
*/
|
|
654
766
|
fireEvent(name, data, cancelable = false, bubbles = true) {
|
|
655
767
|
const eventResult = this._fireEvent(name, data, cancelable, bubbles);
|
|
656
|
-
const
|
|
657
|
-
|
|
658
|
-
|
|
768
|
+
const pascalCaseEventName = kebabToPascalCase(name);
|
|
769
|
+
// pascal events are more convinient for native react usage
|
|
770
|
+
// live-change:
|
|
771
|
+
// Before: onlive-change
|
|
772
|
+
// After: onLiveChange
|
|
773
|
+
if (pascalCaseEventName !== name) {
|
|
774
|
+
return eventResult && this._fireEvent(pascalCaseEventName, data, cancelable, bubbles);
|
|
775
|
+
}
|
|
776
|
+
return eventResult;
|
|
777
|
+
}
|
|
778
|
+
/**
|
|
779
|
+
* Fires a custom event, configured via the "event" decorator.
|
|
780
|
+
* @public
|
|
781
|
+
* @param name - name of the event
|
|
782
|
+
* @param data - additional data for the event
|
|
783
|
+
* @returns false, if the event was cancelled (preventDefault called), true otherwise
|
|
784
|
+
*/
|
|
785
|
+
fireDecoratorEvent(name, data) {
|
|
786
|
+
const eventData = this.getEventData(name);
|
|
787
|
+
const cancellable = eventData ? eventData.cancelable : false;
|
|
788
|
+
const bubbles = eventData ? eventData.bubbles : false;
|
|
789
|
+
const eventResult = this._fireEvent(name, data, cancellable, bubbles);
|
|
790
|
+
const pascalCaseEventName = kebabToPascalCase(name);
|
|
791
|
+
// pascal events are more convinient for native react usage
|
|
792
|
+
// live-change:
|
|
793
|
+
// Before: onlive-change
|
|
794
|
+
// After: onLiveChange
|
|
795
|
+
if (pascalCaseEventName !== name) {
|
|
796
|
+
return eventResult && this._fireEvent(pascalCaseEventName, data, cancellable, bubbles);
|
|
659
797
|
}
|
|
660
798
|
return eventResult;
|
|
661
799
|
}
|
|
@@ -682,6 +820,11 @@ class UI5Element extends HTMLElement {
|
|
|
682
820
|
// Return false if any of the two events was prevented (its result was false).
|
|
683
821
|
return normalEventResult && noConflictEventResult;
|
|
684
822
|
}
|
|
823
|
+
getEventData(name) {
|
|
824
|
+
const ctor = this.constructor;
|
|
825
|
+
const eventMap = ctor.getMetadata().getEvents();
|
|
826
|
+
return eventMap[name];
|
|
827
|
+
}
|
|
685
828
|
/**
|
|
686
829
|
* Returns the actual children, associated with a slot.
|
|
687
830
|
* Useful when there are transitive slots in nested component scenarios and you don't want to get a list of the slots, but rather of their content.
|
|
@@ -727,43 +870,44 @@ class UI5Element extends HTMLElement {
|
|
|
727
870
|
get isUI5Element() {
|
|
728
871
|
return true;
|
|
729
872
|
}
|
|
873
|
+
get isUI5AbstractElement() {
|
|
874
|
+
return !this.constructor._needsShadowDOM();
|
|
875
|
+
}
|
|
730
876
|
get classes() {
|
|
731
877
|
return {};
|
|
732
878
|
}
|
|
733
879
|
/**
|
|
734
|
-
*
|
|
880
|
+
* Returns the component accessibility info.
|
|
735
881
|
* @private
|
|
736
882
|
*/
|
|
737
|
-
|
|
738
|
-
return
|
|
883
|
+
get accessibilityInfo() {
|
|
884
|
+
return {};
|
|
739
885
|
}
|
|
740
886
|
/**
|
|
887
|
+
* Do not override this method in derivatives of UI5Element, use metadata properties instead
|
|
741
888
|
* @private
|
|
742
889
|
*/
|
|
743
|
-
static
|
|
744
|
-
return
|
|
890
|
+
static get observedAttributes() {
|
|
891
|
+
return this.getMetadata().getAttributesList();
|
|
745
892
|
}
|
|
746
893
|
/**
|
|
894
|
+
* Returns all tags, used inside component's template subject to scoping.
|
|
895
|
+
* returns {Array[]} // TODO add @
|
|
747
896
|
* @private
|
|
748
897
|
*/
|
|
749
|
-
static
|
|
750
|
-
|
|
898
|
+
static get tagsToScope() {
|
|
899
|
+
const componentTag = this.getMetadata().getPureTag();
|
|
900
|
+
const tagsToScope = this.getUniqueDependencies().map((dep) => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
|
|
901
|
+
if (shouldScopeCustomElement(componentTag)) {
|
|
902
|
+
tagsToScope.push(componentTag);
|
|
903
|
+
}
|
|
904
|
+
return tagsToScope;
|
|
751
905
|
}
|
|
752
906
|
/**
|
|
753
|
-
* @
|
|
907
|
+
* @private
|
|
754
908
|
*/
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
throw new Error("This component does not use the static area");
|
|
758
|
-
}
|
|
759
|
-
if (!this.staticAreaItem) {
|
|
760
|
-
this.staticAreaItem = StaticAreaItem.createInstance();
|
|
761
|
-
this.staticAreaItem.setOwnerElement(this);
|
|
762
|
-
}
|
|
763
|
-
if (!this.staticAreaItem.parentElement) {
|
|
764
|
-
getSingletonElementInstance("ui5-static-area").appendChild(this.staticAreaItem);
|
|
765
|
-
}
|
|
766
|
-
return this.staticAreaItem.getDomRef();
|
|
909
|
+
static _needsShadowDOM() {
|
|
910
|
+
return !!this.template || Object.prototype.hasOwnProperty.call(this.prototype, "render");
|
|
767
911
|
}
|
|
768
912
|
/**
|
|
769
913
|
* @private
|
|
@@ -777,66 +921,56 @@ class UI5Element extends HTMLElement {
|
|
|
777
921
|
if (!isValidPropertyName(prop)) {
|
|
778
922
|
console.warn(`"${prop}" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */
|
|
779
923
|
}
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
if (
|
|
784
|
-
|
|
924
|
+
const descriptor = getPropertyDescriptor(proto, prop);
|
|
925
|
+
// if the decorator is on a setter, proxy the new setter to it
|
|
926
|
+
let origSet;
|
|
927
|
+
if (descriptor?.set) {
|
|
928
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
929
|
+
origSet = descriptor.set;
|
|
785
930
|
}
|
|
786
|
-
if
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
931
|
+
// if the decorator is on a setter, there will be a corresponding getter - proxy the new getter to it
|
|
932
|
+
let origGet;
|
|
933
|
+
if (descriptor?.get) {
|
|
934
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
935
|
+
origGet = descriptor.get;
|
|
791
936
|
}
|
|
792
937
|
Object.defineProperty(proto, prop, {
|
|
793
938
|
get() {
|
|
794
|
-
if
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
const propDefaultValue = propData.defaultValue;
|
|
798
|
-
if (propData.type === Boolean) {
|
|
799
|
-
return false;
|
|
800
|
-
}
|
|
801
|
-
else if (propData.type === String) { // eslint-disable-line
|
|
802
|
-
return propDefaultValue;
|
|
803
|
-
}
|
|
804
|
-
else if (propData.multiple) { // eslint-disable-line
|
|
805
|
-
return [];
|
|
806
|
-
}
|
|
807
|
-
else {
|
|
808
|
-
return propDefaultValue;
|
|
939
|
+
// proxy the getter to the original accessor if there was one
|
|
940
|
+
if (origGet) {
|
|
941
|
+
return origGet.call(this);
|
|
809
942
|
}
|
|
943
|
+
return this._state[prop];
|
|
810
944
|
},
|
|
811
945
|
set(value) {
|
|
812
|
-
let isDifferent;
|
|
813
946
|
const ctor = this.constructor;
|
|
814
|
-
const
|
|
815
|
-
|
|
816
|
-
const propertyType = propData.type;
|
|
817
|
-
let propertyValidator = propData.validator;
|
|
818
|
-
const oldState = this._state[prop];
|
|
819
|
-
if (propertyType && propertyType.isDataTypeClass) {
|
|
820
|
-
propertyValidator = propertyType;
|
|
821
|
-
}
|
|
822
|
-
if (propertyValidator) {
|
|
823
|
-
isDifferent = !propertyValidator.valuesAreEqual(oldState, value);
|
|
824
|
-
}
|
|
825
|
-
else if (Array.isArray(oldState) && Array.isArray(value) && propData.multiple && propData.compareValues) { // compareValues is added for IE, test if needed now
|
|
826
|
-
isDifferent = !arraysAreEqual(oldState, value);
|
|
827
|
-
}
|
|
828
|
-
else {
|
|
829
|
-
isDifferent = oldState !== value;
|
|
830
|
-
}
|
|
947
|
+
const oldState = origGet ? origGet.call(this) : this._state[prop];
|
|
948
|
+
const isDifferent = oldState !== value;
|
|
831
949
|
if (isDifferent) {
|
|
832
|
-
|
|
950
|
+
// if the decorator is on a setter, use it for storage
|
|
951
|
+
if (origSet) {
|
|
952
|
+
origSet.call(this, value);
|
|
953
|
+
}
|
|
954
|
+
else {
|
|
955
|
+
this._state[prop] = value;
|
|
956
|
+
}
|
|
833
957
|
_invalidate.call(this, {
|
|
834
958
|
type: "property",
|
|
835
959
|
name: prop,
|
|
836
960
|
newValue: value,
|
|
837
961
|
oldValue: oldState,
|
|
838
962
|
});
|
|
839
|
-
this.
|
|
963
|
+
if (this._rendered) {
|
|
964
|
+
// the component is already rendered, indicating it is not the constructor -
|
|
965
|
+
// therefore the attribute can be set synchronously.
|
|
966
|
+
// get the effective value of the property,
|
|
967
|
+
// as it might differ from the provided value
|
|
968
|
+
const newValue = origGet ? origGet.call(this) : this._state[prop];
|
|
969
|
+
this._updateAttribute(prop, newValue);
|
|
970
|
+
}
|
|
971
|
+
if (ctor.getMetadata().isFormAssociated()) {
|
|
972
|
+
setFormValue(this);
|
|
973
|
+
}
|
|
840
974
|
}
|
|
841
975
|
},
|
|
842
976
|
});
|
|
@@ -849,7 +983,7 @@ class UI5Element extends HTMLElement {
|
|
|
849
983
|
console.warn(`"${slotName}" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */
|
|
850
984
|
}
|
|
851
985
|
const propertyName = slotData.propertyName || slotName;
|
|
852
|
-
|
|
986
|
+
const propertyDescriptor = {
|
|
853
987
|
get() {
|
|
854
988
|
if (this._state[propertyName] !== undefined) {
|
|
855
989
|
return this._state[propertyName];
|
|
@@ -859,34 +993,29 @@ class UI5Element extends HTMLElement {
|
|
|
859
993
|
set() {
|
|
860
994
|
throw new Error("Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)");
|
|
861
995
|
},
|
|
862
|
-
}
|
|
996
|
+
};
|
|
997
|
+
Object.defineProperty(proto, propertyName, propertyDescriptor);
|
|
998
|
+
if (propertyName !== kebabToCamelCase(propertyName)) {
|
|
999
|
+
Object.defineProperty(proto, kebabToCamelCase(propertyName), propertyDescriptor);
|
|
1000
|
+
}
|
|
863
1001
|
}
|
|
864
1002
|
}
|
|
865
1003
|
}
|
|
866
|
-
/**
|
|
867
|
-
* Returns the CSS for this UI5 Web Component Class
|
|
868
|
-
* @protected
|
|
869
|
-
*/
|
|
870
|
-
static get styles() {
|
|
871
|
-
return "";
|
|
872
|
-
}
|
|
873
|
-
/**
|
|
874
|
-
* Returns the Static Area CSS for this UI5 Web Component Class
|
|
875
|
-
* @protected
|
|
876
|
-
*/
|
|
877
|
-
static get staticAreaStyles() {
|
|
878
|
-
return "";
|
|
879
|
-
}
|
|
880
1004
|
/**
|
|
881
1005
|
* Returns an array with the dependencies for this UI5 Web Component, which could be:
|
|
882
|
-
* - composed components (used in its shadow root
|
|
1006
|
+
* - composed components (used in its shadow root)
|
|
883
1007
|
* - slotted components that the component may need to communicate with
|
|
884
1008
|
*
|
|
1009
|
+
* @deprecated no longer necessary for jsxRenderer-enabled components
|
|
885
1010
|
* @protected
|
|
886
1011
|
*/
|
|
887
1012
|
static get dependencies() {
|
|
888
1013
|
return [];
|
|
889
1014
|
}
|
|
1015
|
+
static cacheUniqueDependencies() {
|
|
1016
|
+
const filtered = this.dependencies.filter((dep, index, deps) => deps.indexOf(dep) === index);
|
|
1017
|
+
uniqueDependenciesCache.set(this, filtered);
|
|
1018
|
+
}
|
|
890
1019
|
/**
|
|
891
1020
|
* Returns a list of the unique dependencies for this UI5 Web Component
|
|
892
1021
|
*
|
|
@@ -894,46 +1023,64 @@ class UI5Element extends HTMLElement {
|
|
|
894
1023
|
*/
|
|
895
1024
|
static getUniqueDependencies() {
|
|
896
1025
|
if (!uniqueDependenciesCache.has(this)) {
|
|
897
|
-
|
|
898
|
-
uniqueDependenciesCache.set(this, filtered);
|
|
1026
|
+
this.cacheUniqueDependencies();
|
|
899
1027
|
}
|
|
900
1028
|
return uniqueDependenciesCache.get(this) || [];
|
|
901
1029
|
}
|
|
902
|
-
/**
|
|
903
|
-
* Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved
|
|
904
|
-
*/
|
|
905
|
-
static whenDependenciesDefined() {
|
|
906
|
-
return Promise.all(this.getUniqueDependencies().map(dep => dep.define()));
|
|
907
|
-
}
|
|
908
1030
|
/**
|
|
909
1031
|
* Hook that will be called upon custom element definition
|
|
910
1032
|
*
|
|
911
1033
|
* @protected
|
|
1034
|
+
* @deprecated use the "i18n" decorator for fetching message bundles and the "cldr" option in the "customElements" decorator for fetching CLDR
|
|
912
1035
|
*/
|
|
913
1036
|
static async onDefine() {
|
|
914
1037
|
return Promise.resolve();
|
|
915
1038
|
}
|
|
1039
|
+
static fetchI18nBundles() {
|
|
1040
|
+
return Promise.all(Object.entries(this.getMetadata().getI18n()).map(pair => {
|
|
1041
|
+
const { bundleName } = pair[1];
|
|
1042
|
+
return getI18nBundle(bundleName);
|
|
1043
|
+
}));
|
|
1044
|
+
}
|
|
1045
|
+
static fetchCLDR() {
|
|
1046
|
+
if (this.getMetadata().needsCLDR()) {
|
|
1047
|
+
return fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript());
|
|
1048
|
+
}
|
|
1049
|
+
return Promise.resolve();
|
|
1050
|
+
}
|
|
1051
|
+
static get i18nBundles() {
|
|
1052
|
+
return this.i18nBundleStorage;
|
|
1053
|
+
}
|
|
916
1054
|
/**
|
|
917
1055
|
* Registers a UI5 Web Component in the browser window object
|
|
918
1056
|
* @public
|
|
919
1057
|
*/
|
|
920
|
-
static
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
1058
|
+
static define() {
|
|
1059
|
+
const defineSequence = async () => {
|
|
1060
|
+
await boot(); // boot must finish first, because it initializes configuration
|
|
1061
|
+
const result = await Promise.all([
|
|
1062
|
+
this.fetchI18nBundles(), // uses configuration
|
|
1063
|
+
this.fetchCLDR(),
|
|
1064
|
+
this.onDefine(),
|
|
1065
|
+
]);
|
|
1066
|
+
const [i18nBundles] = result;
|
|
1067
|
+
Object.entries(this.getMetadata().getI18n()).forEach((pair, index) => {
|
|
1068
|
+
const bundleName = pair[1].bundleName;
|
|
1069
|
+
this.i18nBundleStorage[bundleName] = i18nBundles[index];
|
|
1070
|
+
});
|
|
1071
|
+
this.asyncFinished = true;
|
|
1072
|
+
};
|
|
1073
|
+
this.definePromise = defineSequence();
|
|
926
1074
|
const tag = this.getMetadata().getTag();
|
|
927
1075
|
const definedLocally = isTagRegistered(tag);
|
|
928
|
-
const definedGlobally =
|
|
1076
|
+
const definedGlobally = customElements.get(tag);
|
|
929
1077
|
if (definedGlobally && !definedLocally) {
|
|
930
1078
|
recordTagRegistrationFailure(tag);
|
|
931
1079
|
}
|
|
932
1080
|
else if (!definedGlobally) {
|
|
933
1081
|
this._generateAccessors();
|
|
934
1082
|
registerTag(tag);
|
|
935
|
-
|
|
936
|
-
preloadLinks(this);
|
|
1083
|
+
customElements.define(tag, this);
|
|
937
1084
|
}
|
|
938
1085
|
return this;
|
|
939
1086
|
}
|
|
@@ -956,12 +1103,22 @@ class UI5Element extends HTMLElement {
|
|
|
956
1103
|
this._metadata = new UI5ElementMetadata(mergedMetadata);
|
|
957
1104
|
return this._metadata;
|
|
958
1105
|
}
|
|
1106
|
+
get validity() { return this._internals.validity; }
|
|
1107
|
+
get validationMessage() { return this._internals.validationMessage; }
|
|
1108
|
+
checkValidity() { return this._internals.checkValidity(); }
|
|
1109
|
+
reportValidity() { return this._internals.reportValidity(); }
|
|
959
1110
|
}
|
|
960
1111
|
/**
|
|
961
1112
|
* Returns the metadata object for this UI5 Web Component Class
|
|
962
1113
|
* @protected
|
|
963
1114
|
*/
|
|
964
1115
|
UI5Element.metadata = {};
|
|
1116
|
+
/**
|
|
1117
|
+
* Returns the CSS for this UI5 Web Component Class
|
|
1118
|
+
* @protected
|
|
1119
|
+
*/
|
|
1120
|
+
UI5Element.styles = "";
|
|
1121
|
+
UI5Element.i18nBundleStorage = {};
|
|
965
1122
|
/**
|
|
966
1123
|
* Always use duck-typing to cover all runtimes on the page.
|
|
967
1124
|
*/
|
|
@@ -969,5 +1126,5 @@ const instanceOfUI5Element = (object) => {
|
|
|
969
1126
|
return "isUI5Element" in object;
|
|
970
1127
|
};
|
|
971
1128
|
export default UI5Element;
|
|
972
|
-
export { instanceOfUI5Element };
|
|
1129
|
+
export { instanceOfUI5Element, };
|
|
973
1130
|
//# sourceMappingURL=UI5Element.js.map
|