@ui5/webcomponents-base 0.0.0-9ed6f23c6 → 0.0.0-a3b95fa49
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 +1603 -0
- package/README.md +3 -13
- package/cypress/specs/Accessor.cy.tsx +79 -0
- package/cypress/specs/Boot.cy.tsx +19 -0
- package/cypress/specs/ConfigurationChange.cy.tsx +41 -0
- package/cypress/specs/ConfigurationScript.cy.tsx +133 -0
- package/cypress/specs/ConfigurationURL.cy.tsx +201 -0
- package/cypress/specs/CustomMount.cy.tsx +9 -0
- package/cypress/specs/CustomTheme.cy.tsx +36 -0
- package/cypress/specs/EventProvider.cy.tsx +59 -0
- package/cypress/specs/Events.cy.tsx +28 -0
- package/cypress/specs/SystemDOMElements.cy.tsx +8 -0
- package/cypress/specs/Theming.cy.tsx +74 -0
- package/cypress/specs/UI5ElementInvalidation.cy.tsx +252 -0
- package/cypress/specs/UI5ElementLifecycle.cy.tsx +82 -0
- package/cypress/specs/UI5ElementListenForChildPropChanges.cy.tsx +83 -0
- package/cypress/specs/UI5ElementMetadataExt.cy.tsx +42 -0
- package/cypress/specs/UI5ElementPropertyValidation.cy.tsx +16 -0
- package/cypress/specs/UI5ElementPropsAndAttrs.cy.tsx +113 -0
- package/cypress/specs/UI5ElementShadowDOM.cy.tsx +30 -0
- package/cypress/specs/UI5ElementSlots.cy.tsx +136 -0
- package/cypress/specs/WithComplexTemplate.cy.tsx +32 -0
- package/cypress/specs/i18n_texts.cy.tsx +129 -0
- package/cypress/specs/util/FocusableElements.cy.tsx +48 -0
- package/cypress/support/commands.ts +39 -0
- package/cypress/support/component-index.html +12 -0
- package/cypress/support/component.ts +36 -0
- package/cypress/tsconfig.json +21 -0
- package/cypress.config.js +3 -0
- package/dist/.tsbuildinfobuild +1 -0
- package/dist/AssetRegistry.d.ts +2 -2
- package/dist/AssetRegistry.js +2 -2
- package/dist/AssetRegistry.js.map +1 -1
- 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/CustomElementsScope.d.ts +4 -4
- package/dist/CustomElementsScope.js +2 -2
- package/dist/CustomElementsScope.js.map +1 -1
- package/dist/CustomElementsScopeUtils.d.ts +11 -2
- package/dist/CustomElementsScopeUtils.js +21 -2
- package/dist/CustomElementsScopeUtils.js.map +1 -1
- package/dist/DOMObserver.js.map +1 -1
- package/dist/Device.d.ts +17 -2
- package/dist/Device.js +19 -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 +10 -3
- package/dist/InitialConfiguration.js +31 -8
- package/dist/InitialConfiguration.js.map +1 -1
- package/dist/Keys.d.ts +4 -1
- package/dist/Keys.js +110 -106
- 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 +5 -6
- package/dist/ManagedStyles.js +45 -60
- package/dist/ManagedStyles.js.map +1 -1
- package/dist/MediaRange.d.ts +6 -12
- package/dist/MediaRange.js +21 -31
- 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 +120 -76
- package/dist/UI5Element.js +388 -234
- package/dist/UI5Element.js.map +1 -1
- package/dist/UI5ElementMetadata.d.ts +36 -27
- package/dist/UI5ElementMetadata.js +27 -72
- 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 +5 -4
- package/dist/asset-registries/Icons.js +28 -17
- package/dist/asset-registries/Icons.js.map +1 -1
- package/dist/asset-registries/Illustrations.d.ts +2 -0
- package/dist/asset-registries/Illustrations.js +51 -20
- 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 +5 -7
- package/dist/asset-registries/Themes.js +27 -12
- package/dist/asset-registries/Themes.js.map +1 -1
- package/dist/asset-registries/i18n.d.ts +2 -2
- package/dist/asset-registries/i18n.js +4 -3
- package/dist/asset-registries/i18n.js.map +1 -1
- package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.d.ts +1 -2
- package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.js +1 -2
- package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
- package/dist/config/AnimationMode.js +6 -1
- package/dist/config/AnimationMode.js.map +1 -1
- package/dist/config/CalendarType.d.ts +8 -1
- package/dist/config/CalendarType.js +23 -2
- 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 +9 -24
- package/dist/config/Icons.js +8 -67
- 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.d.ts +9 -0
- package/dist/connectToComponent.js +59 -0
- package/dist/connectToComponent.js.map +1 -0
- 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/FontFace.css +18 -1
- package/dist/css/SystemCSSVars.css +0 -8
- package/dist/custom-elements-internal.json +2803 -0
- package/dist/custom-elements.json +2500 -0
- 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 +43 -3
- package/dist/decorators/customElement.js +14 -6
- 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 +9 -8
- package/dist/delegate/ItemNavigation.js +13 -14
- package/dist/delegate/ItemNavigation.js.map +1 -1
- package/dist/delegate/ResizeHandler.d.ts +4 -6
- package/dist/delegate/ResizeHandler.js +4 -6
- package/dist/delegate/ResizeHandler.js.map +1 -1
- package/dist/delegate/ScrollEnablement.js +2 -2
- package/dist/delegate/ScrollEnablement.js.map +1 -1
- package/dist/features/F6Navigation.d.ts +4 -3
- package/dist/features/F6Navigation.js +41 -9
- 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 +3 -3
- package/dist/features/OpenUI5Enablement.js.map +1 -1
- package/dist/features/OpenUI5Support.d.ts +11 -4
- package/dist/features/OpenUI5Support.js +13 -21
- 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.d.ts +6 -0
- package/dist/generated/AssetParameters.js +3 -10
- package/dist/generated/AssetParameters.js.map +1 -0
- package/dist/generated/VersionInfo.d.ts +10 -0
- package/dist/generated/VersionInfo.js +9 -8
- package/dist/generated/VersionInfo.js.map +1 -0
- 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.d.ts +2 -4
- package/dist/i18nBundle.js +1 -4
- 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.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 +26 -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/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 +16 -0
- package/dist/renderer/JsxRenderer.js.map +1 -0
- package/dist/renderer/LitRenderer.d.ts +3 -3
- 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 +113 -98
- package/dist/ssr-dom-shim.d.ts +1 -0
- package/dist/ssr-dom-shim.js +62 -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 +6 -6
- 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/AnimationMode.d.ts +0 -8
- package/dist/types/AnimationMode.js +0 -8
- package/dist/types/AnimationMode.js.map +1 -1
- package/dist/types/CalendarType.d.ts +0 -9
- package/dist/types/CalendarType.js +0 -9
- package/dist/types/CalendarType.js.map +1 -1
- package/dist/types/InvisibleMessageMode.d.ts +5 -10
- package/dist/types/InvisibleMessageMode.js +4 -11
- package/dist/types/InvisibleMessageMode.js.map +1 -1
- package/dist/types/ItemNavigationBehavior.d.ts +0 -6
- package/dist/types/ItemNavigationBehavior.js +0 -6
- package/dist/types/ItemNavigationBehavior.js.map +1 -1
- 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/NavigationMode.d.ts +0 -8
- package/dist/types/NavigationMode.js +0 -8
- package/dist/types/NavigationMode.js.map +1 -1
- 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 -17
- package/dist/types/ValueState.js +3 -17
- 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 -28
- 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 +233 -216
- 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.d.ts +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.d.ts +2 -2
- package/dist/util/detectNavigatorLanguage.js +6 -1
- 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 +144 -103
- package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -2
- package/dist/util/getDesigntimePropertyAsArray.js +2 -1
- package/dist/util/getDesigntimePropertyAsArray.js.map +1 -1
- package/dist/util/getEffectiveScrollbarStyle.d.ts +1 -1
- package/dist/util/getEffectiveScrollbarStyle.js +31 -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/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 +26 -23
- package/package.json +37 -11
- package/src/css/FontFace.css +18 -1
- 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 -13
- package/.eslintignore +0 -16
- package/.eslintrc.cjs +0 -3
- package/bundle.esm.js +0 -67
- package/config/wdio.conf.cjs +0 -400
- 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 -37
- package/dist/StaticAreaItem.js +0 -105
- package/dist/StaticAreaItem.js.map +0 -1
- package/dist/api.json +0 -1
- package/dist/assets/Boot.2ecd2d52.js +0 -9
- package/dist/assets/Boot.34b7cea0.css +0 -1
- package/dist/assets/bundle.esm.2bf33218.js +0 -50
- package/dist/assets-meta/IconCollectionsAlias.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 -15
- package/dist/types/CSSColor.js +0 -18
- package/dist/types/CSSColor.js.map +0 -1
- package/dist/types/DOMReference.d.ts +0 -17
- package/dist/types/DOMReference.js +0 -25
- package/dist/types/DOMReference.js.map +0 -1
- package/dist/types/DataType.d.ts +0 -25
- package/dist/types/DataType.js +0 -44
- package/dist/types/DataType.js.map +0 -1
- package/dist/types/Float.d.ts +0 -17
- package/dist/types/Float.js +0 -21
- package/dist/types/Float.js.map +0 -1
- package/dist/types/Integer.d.ts +0 -17
- package/dist/types/Integer.js +0 -21
- 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/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,27 +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";
|
|
21
|
-
import {
|
|
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;
|
|
22
26
|
let autoId = 0;
|
|
23
27
|
const elementTimeouts = new Map();
|
|
24
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
|
+
};
|
|
25
54
|
/**
|
|
26
55
|
* Triggers re-rendering of a UI5Element instance due to state change.
|
|
27
56
|
* @param {ChangeInfo} changeInfo An object with information about the change that caused invalidation.
|
|
@@ -37,21 +66,38 @@ function _invalidate(changeInfo) {
|
|
|
37
66
|
this.onInvalidation(changeInfo);
|
|
38
67
|
this._changedState.push(changeInfo);
|
|
39
68
|
renderDeferred(this);
|
|
40
|
-
this.
|
|
69
|
+
this._invalidationEventProvider.fireEvent("invalidate", { ...changeInfo, target: this });
|
|
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);
|
|
41
86
|
}
|
|
42
87
|
/**
|
|
88
|
+
* @class
|
|
43
89
|
* Base class for all UI5 Web Components
|
|
44
90
|
*
|
|
45
|
-
* @class
|
|
46
|
-
* @constructor
|
|
47
|
-
* @author SAP SE
|
|
48
|
-
* @alias sap.ui.webc.base.UI5Element
|
|
49
91
|
* @extends HTMLElement
|
|
50
92
|
* @public
|
|
51
93
|
*/
|
|
52
94
|
class UI5Element extends HTMLElement {
|
|
53
95
|
constructor() {
|
|
54
96
|
super();
|
|
97
|
+
// used to differentiate whether a setter is called from the constructor (from an initializer) or later
|
|
98
|
+
// setters from the constructor should not set attributes, this is delegated after the first rendering but is async
|
|
99
|
+
// setters after the constructor can set attributes synchronously for more convinient development
|
|
100
|
+
this._rendered = false;
|
|
55
101
|
const ctor = this.constructor;
|
|
56
102
|
this._changedState = []; // Filled on each invalidation, cleared on re-render (used for debugging)
|
|
57
103
|
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
|
|
@@ -59,17 +105,46 @@ class UI5Element extends HTMLElement {
|
|
|
59
105
|
this._fullyConnected = false; // A flag telling whether the UI5Element's onEnterDOM hook was called (since it's possible to have the element removed from DOM before that)
|
|
60
106
|
this._childChangeListeners = new Map(); // used to store lazy listeners per slot for the child change event of every child inside that slot
|
|
61
107
|
this._slotChangeListeners = new Map(); // used to store lazy listeners per slot for the slotchange event of all slot children inside that slot
|
|
62
|
-
this.
|
|
108
|
+
this._invalidationEventProvider = new EventProvider(); // used by parent components for listening to changes to child components
|
|
109
|
+
this._componentStateFinalizedEventProvider = new EventProvider(); // used by friend classes for synchronization
|
|
63
110
|
let deferredResolve;
|
|
64
111
|
this._domRefReadyPromise = new Promise(resolve => {
|
|
65
112
|
deferredResolve = resolve;
|
|
66
113
|
});
|
|
67
114
|
this._domRefReadyPromise._deferredResolve = deferredResolve;
|
|
68
115
|
this._doNotSyncAttributes = new Set(); // attributes that are excluded from attributeChangedCallback synchronization
|
|
116
|
+
this._slotsAssignedNodes = new WeakMap(); // map of all nodes, slotted (directly or transitively) per component slot
|
|
69
117
|
this._state = { ...ctor.getMetadata().getInitialState() };
|
|
70
|
-
|
|
118
|
+
// save properties set before element is upgraded, as they will be overriden by the field initializers in the constructor
|
|
119
|
+
this.initializedProperties = new Map();
|
|
120
|
+
const allProps = this.constructor.getMetadata().getPropertiesList();
|
|
121
|
+
allProps.forEach(propertyName => {
|
|
122
|
+
if (this.hasOwnProperty(propertyName)) { // eslint-disable-line
|
|
123
|
+
const value = this[propertyName];
|
|
124
|
+
this.initializedProperties.set(propertyName, value);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
this._internals = this.attachInternals();
|
|
128
|
+
this._initShadowRoot();
|
|
129
|
+
}
|
|
130
|
+
_initShadowRoot() {
|
|
131
|
+
const ctor = this.constructor;
|
|
71
132
|
if (ctor._needsShadowDOM()) {
|
|
72
|
-
|
|
133
|
+
const defaultOptions = { mode: "open" };
|
|
134
|
+
this.attachShadow({ ...defaultOptions, ...ctor.getMetadata().getShadowRootOptions() });
|
|
135
|
+
const slotsAreManaged = ctor.getMetadata().slotsAreManaged();
|
|
136
|
+
if (slotsAreManaged) {
|
|
137
|
+
this.shadowRoot.addEventListener("slotchange", this._onShadowRootSlotChange.bind(this));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Note: this "slotchange" listener is for slots, rendered in the component's shadow root
|
|
143
|
+
*/
|
|
144
|
+
_onShadowRootSlotChange(e) {
|
|
145
|
+
const targetShadowRoot = e.target?.getRootNode(); // the "slotchange" event target is always a slot element
|
|
146
|
+
if (targetShadowRoot === this.shadowRoot) { // only for slotchange events that originate from slots, belonging to the component's shadow root
|
|
147
|
+
this._processChildren();
|
|
73
148
|
}
|
|
74
149
|
}
|
|
75
150
|
/**
|
|
@@ -88,18 +163,22 @@ class UI5Element extends HTMLElement {
|
|
|
88
163
|
const template = this.constructor.template;
|
|
89
164
|
return executeTemplate(template, this);
|
|
90
165
|
}
|
|
91
|
-
renderStatic() {
|
|
92
|
-
const template = this.constructor.staticAreaTemplate;
|
|
93
|
-
return executeTemplate(template, this);
|
|
94
|
-
}
|
|
95
166
|
/**
|
|
96
167
|
* Do not call this method from derivatives of UI5Element, use "onEnterDOM" only
|
|
97
168
|
* @private
|
|
98
169
|
*/
|
|
99
170
|
async connectedCallback() {
|
|
171
|
+
if (DEV_MODE) {
|
|
172
|
+
const props = this.constructor.getMetadata().getProperties();
|
|
173
|
+
for (const [prop, propData] of Object.entries(props)) { // eslint-disable-line
|
|
174
|
+
if (Object.hasOwn(this, prop) && !this.initializedProperties.has(prop)) {
|
|
175
|
+
// initialized properties should not trigger this error as they will be reassigned, only property initializers will trigger this in case unsupported TS mode
|
|
176
|
+
// eslint-disable-next-line no-console
|
|
177
|
+
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`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
100
181
|
const ctor = this.constructor;
|
|
101
|
-
this.setAttribute(`_ui5rt${getCurrentRuntimeIndex()}`, "");
|
|
102
|
-
this.setAttribute("_ui5host", "");
|
|
103
182
|
this.setAttribute(ctor.getMetadata().getPureTag(), "");
|
|
104
183
|
if (ctor.getMetadata().supportsF6FastNavigation()) {
|
|
105
184
|
this.setAttribute("data-sap-ui-fastnavgroup", "true");
|
|
@@ -114,6 +193,9 @@ class UI5Element extends HTMLElement {
|
|
|
114
193
|
if (!this._inDOM) { // Component removed from DOM while _processChildren was running
|
|
115
194
|
return;
|
|
116
195
|
}
|
|
196
|
+
if (!ctor.asyncFinished) {
|
|
197
|
+
await ctor.definePromise;
|
|
198
|
+
}
|
|
117
199
|
renderImmediately(this);
|
|
118
200
|
this._domRefReadyPromise._deferredResolve();
|
|
119
201
|
this._fullyConnected = true;
|
|
@@ -134,9 +216,7 @@ class UI5Element extends HTMLElement {
|
|
|
134
216
|
this.onExitDOM();
|
|
135
217
|
this._fullyConnected = false;
|
|
136
218
|
}
|
|
137
|
-
|
|
138
|
-
this.staticAreaItem.parentElement.removeChild(this.staticAreaItem);
|
|
139
|
-
}
|
|
219
|
+
this._domRefReadyPromise._deferredResolve();
|
|
140
220
|
cancelRender(this);
|
|
141
221
|
}
|
|
142
222
|
/**
|
|
@@ -164,11 +244,12 @@ class UI5Element extends HTMLElement {
|
|
|
164
244
|
*/
|
|
165
245
|
_startObservingDOMChildren() {
|
|
166
246
|
const ctor = this.constructor;
|
|
167
|
-
const
|
|
247
|
+
const metadata = ctor.getMetadata();
|
|
248
|
+
const shouldObserveChildren = metadata.hasSlots();
|
|
168
249
|
if (!shouldObserveChildren) {
|
|
169
250
|
return;
|
|
170
251
|
}
|
|
171
|
-
const canSlotText =
|
|
252
|
+
const canSlotText = metadata.canSlotText();
|
|
172
253
|
const mutationObserverOptions = {
|
|
173
254
|
childList: true,
|
|
174
255
|
subtree: canSlotText,
|
|
@@ -234,9 +315,9 @@ class UI5Element extends HTMLElement {
|
|
|
234
315
|
const localName = child.localName;
|
|
235
316
|
const shouldWaitForCustomElement = localName.includes("-") && !shouldIgnoreCustomElement(localName);
|
|
236
317
|
if (shouldWaitForCustomElement) {
|
|
237
|
-
const isDefined =
|
|
318
|
+
const isDefined = customElements.get(localName);
|
|
238
319
|
if (!isDefined) {
|
|
239
|
-
const whenDefinedPromise =
|
|
320
|
+
const whenDefinedPromise = customElements.whenDefined(localName); // Class registered, but instances not upgraded yet
|
|
240
321
|
let timeoutPromise = elementTimeouts.get(localName);
|
|
241
322
|
if (!timeoutPromise) {
|
|
242
323
|
timeoutPromise = new Promise(resolve => setTimeout(resolve, 1000));
|
|
@@ -244,20 +325,18 @@ class UI5Element extends HTMLElement {
|
|
|
244
325
|
}
|
|
245
326
|
await Promise.race([whenDefinedPromise, timeoutPromise]);
|
|
246
327
|
}
|
|
247
|
-
|
|
328
|
+
customElements.upgrade(child);
|
|
248
329
|
}
|
|
249
330
|
}
|
|
250
331
|
child = ctor.getMetadata().constructor.validateSlotValue(child, slotData);
|
|
251
332
|
// Listen for any invalidation on the child if invalidateOnChildChange is true or an object (ignore when false or not set)
|
|
252
333
|
if (instanceOfUI5Element(child) && slotData.invalidateOnChildChange) {
|
|
253
334
|
const childChangeListener = this._getChildChangeListener(slotName);
|
|
254
|
-
|
|
255
|
-
child.attachInvalidate.call(child, childChangeListener);
|
|
256
|
-
}
|
|
335
|
+
child.attachInvalidate.call(child, childChangeListener);
|
|
257
336
|
}
|
|
258
337
|
// Listen for the slotchange event if the child is a slot itself
|
|
259
338
|
if (child instanceof HTMLSlotElement) {
|
|
260
|
-
this._attachSlotChange(child, slotName);
|
|
339
|
+
this._attachSlotChange(child, slotName, !!slotData.invalidateOnChildChange);
|
|
261
340
|
}
|
|
262
341
|
const propertyName = slotData.propertyName || slotName;
|
|
263
342
|
if (slottedChildrenMap.has(propertyName)) {
|
|
@@ -272,6 +351,7 @@ class UI5Element extends HTMLElement {
|
|
|
272
351
|
// not the order elements are defined.
|
|
273
352
|
slottedChildrenMap.forEach((children, propertyName) => {
|
|
274
353
|
this._state[propertyName] = children.sort((a, b) => a.idx - b.idx).map(_ => _.child);
|
|
354
|
+
this._state[kebabToCamelCase(propertyName)] = this._state[propertyName];
|
|
275
355
|
});
|
|
276
356
|
// Compare the content of each slot with the cached values and invalidate for the ones that changed
|
|
277
357
|
let invalidated = false;
|
|
@@ -284,6 +364,9 @@ class UI5Element extends HTMLElement {
|
|
|
284
364
|
reason: "children",
|
|
285
365
|
});
|
|
286
366
|
invalidated = true;
|
|
367
|
+
if (ctor.getMetadata().isFormAssociated()) {
|
|
368
|
+
setFormValue(this);
|
|
369
|
+
}
|
|
287
370
|
}
|
|
288
371
|
}
|
|
289
372
|
// If none of the slots had an invalidation due to changes to immediate children,
|
|
@@ -306,39 +389,38 @@ class UI5Element extends HTMLElement {
|
|
|
306
389
|
children.forEach(child => {
|
|
307
390
|
if (instanceOfUI5Element(child)) {
|
|
308
391
|
const childChangeListener = this._getChildChangeListener(slotName);
|
|
309
|
-
|
|
310
|
-
child.detachInvalidate.call(child, childChangeListener);
|
|
311
|
-
}
|
|
392
|
+
child.detachInvalidate.call(child, childChangeListener);
|
|
312
393
|
}
|
|
313
394
|
if (child instanceof HTMLSlotElement) {
|
|
314
395
|
this._detachSlotChange(child, slotName);
|
|
315
396
|
}
|
|
316
397
|
});
|
|
317
398
|
this._state[propertyName] = [];
|
|
399
|
+
this._state[kebabToCamelCase(propertyName)] = this._state[propertyName];
|
|
318
400
|
}
|
|
319
401
|
/**
|
|
320
402
|
* Attach a callback that will be executed whenever the component is invalidated
|
|
321
403
|
*
|
|
322
|
-
* @param
|
|
404
|
+
* @param callback
|
|
323
405
|
* @public
|
|
324
406
|
*/
|
|
325
407
|
attachInvalidate(callback) {
|
|
326
|
-
this.
|
|
408
|
+
this._invalidationEventProvider.attachEvent("invalidate", callback);
|
|
327
409
|
}
|
|
328
410
|
/**
|
|
329
411
|
* Detach the callback that is executed whenever the component is invalidated
|
|
330
412
|
*
|
|
331
|
-
* @param
|
|
413
|
+
* @param callback
|
|
332
414
|
* @public
|
|
333
415
|
*/
|
|
334
416
|
detachInvalidate(callback) {
|
|
335
|
-
this.
|
|
417
|
+
this._invalidationEventProvider.detachEvent("invalidate", callback);
|
|
336
418
|
}
|
|
337
419
|
/**
|
|
338
420
|
* Callback that is executed whenever a monitored child changes its state
|
|
339
421
|
*
|
|
340
|
-
* @param
|
|
341
|
-
* @param
|
|
422
|
+
* @param slotName the slot in which a child was invalidated
|
|
423
|
+
* @param childChangeInfo the changeInfo object for the child in the given slot
|
|
342
424
|
* @private
|
|
343
425
|
*/
|
|
344
426
|
_onChildChange(slotName, childChangeInfo) {
|
|
@@ -368,23 +450,21 @@ class UI5Element extends HTMLElement {
|
|
|
368
450
|
const nameInCamelCase = kebabToCamelCase(realName);
|
|
369
451
|
if (properties.hasOwnProperty(nameInCamelCase)) { // eslint-disable-line
|
|
370
452
|
const propData = properties[nameInCamelCase];
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
if (propertyType && propertyType.isDataTypeClass) {
|
|
374
|
-
propertyValidator = propertyType;
|
|
375
|
-
}
|
|
376
|
-
if (propertyValidator) {
|
|
377
|
-
newPropertyValue = propertyValidator.attributeToProperty(newValue);
|
|
378
|
-
}
|
|
379
|
-
else if (propertyType === Boolean) {
|
|
380
|
-
newPropertyValue = newValue !== null;
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
newPropertyValue = newValue;
|
|
384
|
-
}
|
|
453
|
+
const converter = propData.converter ?? defaultConverter;
|
|
454
|
+
newPropertyValue = converter.fromAttribute(newValue, propData.type);
|
|
385
455
|
this[nameInCamelCase] = newPropertyValue;
|
|
386
456
|
}
|
|
387
457
|
}
|
|
458
|
+
formAssociatedCallback() {
|
|
459
|
+
const ctor = this.constructor;
|
|
460
|
+
if (!ctor.getMetadata().isFormAssociated()) {
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
updateFormValue(this);
|
|
464
|
+
}
|
|
465
|
+
static get formAssociated() {
|
|
466
|
+
return this.getMetadata().isFormAssociated();
|
|
467
|
+
}
|
|
388
468
|
/**
|
|
389
469
|
* @private
|
|
390
470
|
*/
|
|
@@ -395,60 +475,37 @@ class UI5Element extends HTMLElement {
|
|
|
395
475
|
}
|
|
396
476
|
const properties = ctor.getMetadata().getProperties();
|
|
397
477
|
const propData = properties[name];
|
|
398
|
-
const propertyType = propData.type;
|
|
399
|
-
let propertyValidator = propData.validator;
|
|
400
478
|
const attrName = camelToKebabCase(name);
|
|
401
|
-
const
|
|
402
|
-
if (
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
if (newAttrValue === null) { // null means there must be no attribute for the current value of the property
|
|
408
|
-
this._doNotSyncAttributes.add(attrName); // skip the attributeChangedCallback call for this attribute
|
|
409
|
-
this.removeAttribute(attrName); // remove the attribute safely (will not trigger synchronization to the property value due to the above line)
|
|
410
|
-
this._doNotSyncAttributes.delete(attrName); // enable synchronization again for this attribute
|
|
479
|
+
const converter = propData.converter || defaultConverter;
|
|
480
|
+
if (DEV_MODE) {
|
|
481
|
+
const tag = this.constructor.getMetadata().getTag();
|
|
482
|
+
if (typeof newValue === "boolean" && propData.type !== Boolean) {
|
|
483
|
+
// eslint-disable-next-line
|
|
484
|
+
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
485
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
}
|
|
416
|
-
else if (propertyType === Boolean) {
|
|
417
|
-
if (newValue === true && attrValue === null) {
|
|
418
|
-
this.setAttribute(attrName, "");
|
|
486
|
+
if (typeof newValue === "number" && propData.type !== Number) {
|
|
487
|
+
// eslint-disable-next-line
|
|
488
|
+
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`);
|
|
419
489
|
}
|
|
420
|
-
|
|
421
|
-
|
|
490
|
+
if (typeof newValue === "string" && propData.type && propData.type !== String) {
|
|
491
|
+
// eslint-disable-next-line
|
|
492
|
+
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.`);
|
|
422
493
|
}
|
|
423
494
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
} // else { return; } // old object handling
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* @private
|
|
432
|
-
*/
|
|
433
|
-
_upgradeProperty(propertyName) {
|
|
434
|
-
if (this.hasOwnProperty(propertyName)) { // eslint-disable-line
|
|
435
|
-
const value = this[propertyName];
|
|
436
|
-
delete this[propertyName];
|
|
437
|
-
this[propertyName] = value;
|
|
495
|
+
const newAttrValue = converter.toAttribute(newValue, propData.type);
|
|
496
|
+
this._doNotSyncAttributes.add(attrName); // skip the attributeChangedCallback call for this attribute
|
|
497
|
+
if (newAttrValue === null || newAttrValue === undefined) { // null means there must be no attribute for the current value of the property
|
|
498
|
+
this.removeAttribute(attrName); // remove the attribute safely (will not trigger synchronization to the property value due to the above line)
|
|
438
499
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
_upgradeAllProperties() {
|
|
444
|
-
const allProps = this.constructor.getMetadata().getPropertiesList();
|
|
445
|
-
allProps.forEach(this._upgradeProperty.bind(this));
|
|
500
|
+
else {
|
|
501
|
+
this.setAttribute(attrName, newAttrValue); // setting attributes from properties should not trigger the property setter again
|
|
502
|
+
}
|
|
503
|
+
this._doNotSyncAttributes.delete(attrName); // enable synchronization again for this attribute
|
|
446
504
|
}
|
|
447
505
|
/**
|
|
448
506
|
* Returns a singleton event listener for the "change" event of a child in a given slot
|
|
449
507
|
*
|
|
450
508
|
* @param slotName the name of the slot, where the child is
|
|
451
|
-
* @returns {ChildChangeListener}
|
|
452
509
|
* @private
|
|
453
510
|
*/
|
|
454
511
|
_getChildChangeListener(slotName) {
|
|
@@ -461,7 +518,6 @@ class UI5Element extends HTMLElement {
|
|
|
461
518
|
* Returns a singleton slotchange event listener that invalidates the component due to changes in the given slot
|
|
462
519
|
*
|
|
463
520
|
* @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is
|
|
464
|
-
* @returns {SlotChangeListener}
|
|
465
521
|
* @private
|
|
466
522
|
*/
|
|
467
523
|
_getSlotChangeListener(slotName) {
|
|
@@ -473,11 +529,32 @@ class UI5Element extends HTMLElement {
|
|
|
473
529
|
/**
|
|
474
530
|
* @private
|
|
475
531
|
*/
|
|
476
|
-
_attachSlotChange(
|
|
532
|
+
_attachSlotChange(slot, slotName, invalidateOnChildChange) {
|
|
477
533
|
const slotChangeListener = this._getSlotChangeListener(slotName);
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
534
|
+
slot.addEventListener("slotchange", (e) => {
|
|
535
|
+
slotChangeListener.call(slot, e);
|
|
536
|
+
if (invalidateOnChildChange) {
|
|
537
|
+
// Detach listeners for UI5 Elements that used to be in this slot
|
|
538
|
+
const previousChildren = this._slotsAssignedNodes.get(slot);
|
|
539
|
+
if (previousChildren) {
|
|
540
|
+
previousChildren.forEach(child => {
|
|
541
|
+
if (instanceOfUI5Element(child)) {
|
|
542
|
+
const childChangeListener = this._getChildChangeListener(slotName);
|
|
543
|
+
child.detachInvalidate.call(child, childChangeListener);
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
// Attach listeners for UI5 Elements that are now in this slot
|
|
548
|
+
const newChildren = getSlottedNodesList([slot]);
|
|
549
|
+
this._slotsAssignedNodes.set(slot, newChildren);
|
|
550
|
+
newChildren.forEach(child => {
|
|
551
|
+
if (instanceOfUI5Element(child)) {
|
|
552
|
+
const childChangeListener = this._getChildChangeListener(slotName);
|
|
553
|
+
child.attachInvalidate.call(child, childChangeListener);
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
});
|
|
481
558
|
}
|
|
482
559
|
/**
|
|
483
560
|
* @private
|
|
@@ -487,6 +564,7 @@ class UI5Element extends HTMLElement {
|
|
|
487
564
|
}
|
|
488
565
|
/**
|
|
489
566
|
* Whenever a slot element is slotted inside a UI5 Web Component, its slotchange event invalidates the component
|
|
567
|
+
* 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)
|
|
490
568
|
*
|
|
491
569
|
* @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is
|
|
492
570
|
* @private
|
|
@@ -513,9 +591,9 @@ class UI5Element extends HTMLElement {
|
|
|
513
591
|
* 1) children: immediate children (HTML elements or text nodes) were added, removed or reordered in the slot
|
|
514
592
|
* 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"
|
|
515
593
|
* 3) slotchange: a slot element, slotted inside that slot had its "slotchange" event listener called. This practically means that transitively slotted children changed.
|
|
516
|
-
*
|
|
594
|
+
* Can only trigger if the child of a slot is a slot element itself.
|
|
517
595
|
* 4) childchange: indicates that a UI5Element child in that slot was invalidated and in turn invalidated the component.
|
|
518
|
-
*
|
|
596
|
+
* Can only trigger for slots with "invalidateOnChildChange" metadata descriptor
|
|
519
597
|
*
|
|
520
598
|
* - newValue: the new value of the property (for type="property" only)
|
|
521
599
|
*
|
|
@@ -526,6 +604,13 @@ class UI5Element extends HTMLElement {
|
|
|
526
604
|
* @public
|
|
527
605
|
*/
|
|
528
606
|
onInvalidation(changeInfo) { } // eslint-disable-line
|
|
607
|
+
updateAttributes() {
|
|
608
|
+
const ctor = this.constructor;
|
|
609
|
+
const props = ctor.getMetadata().getProperties();
|
|
610
|
+
for (const [prop, propData] of Object.entries(props)) { // eslint-disable-line
|
|
611
|
+
this._updateAttribute(prop, this[prop]);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
529
614
|
/**
|
|
530
615
|
* Do not call this method directly, only intended to be called by js
|
|
531
616
|
* @protected
|
|
@@ -533,15 +618,29 @@ class UI5Element extends HTMLElement {
|
|
|
533
618
|
_render() {
|
|
534
619
|
const ctor = this.constructor;
|
|
535
620
|
const hasIndividualSlots = ctor.getMetadata().hasIndividualSlots();
|
|
621
|
+
// restore properties that were initialized before `define` by calling the setter
|
|
622
|
+
if (this.initializedProperties.size > 0) {
|
|
623
|
+
Array.from(this.initializedProperties.entries()).forEach(([prop, value]) => {
|
|
624
|
+
delete this[prop];
|
|
625
|
+
this[prop] = value;
|
|
626
|
+
});
|
|
627
|
+
this.initializedProperties.clear();
|
|
628
|
+
}
|
|
536
629
|
// suppress invalidation to prevent state changes scheduling another rendering
|
|
537
630
|
this._suppressInvalidation = true;
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
631
|
+
try {
|
|
632
|
+
this.onBeforeRendering();
|
|
633
|
+
if (!this._rendered) {
|
|
634
|
+
// first time rendering, previous setters might have been initializers from the constructor - update attributes here
|
|
635
|
+
this.updateAttributes();
|
|
636
|
+
}
|
|
637
|
+
// Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered
|
|
638
|
+
this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized");
|
|
639
|
+
}
|
|
640
|
+
finally {
|
|
641
|
+
// always resume normal invalidation handling
|
|
642
|
+
this._suppressInvalidation = false;
|
|
542
643
|
}
|
|
543
|
-
// resume normal invalidation handling
|
|
544
|
-
this._suppressInvalidation = false;
|
|
545
644
|
// Update the shadow root with the render result
|
|
546
645
|
/*
|
|
547
646
|
if (this._changedState.length) {
|
|
@@ -564,13 +663,11 @@ class UI5Element extends HTMLElement {
|
|
|
564
663
|
}
|
|
565
664
|
*/
|
|
566
665
|
this._changedState = [];
|
|
567
|
-
// Update shadow root
|
|
666
|
+
// Update shadow root
|
|
568
667
|
if (ctor._needsShadowDOM()) {
|
|
569
668
|
updateShadowRoot(this);
|
|
570
669
|
}
|
|
571
|
-
|
|
572
|
-
this.staticAreaItem.update();
|
|
573
|
-
}
|
|
670
|
+
this._rendered = true;
|
|
574
671
|
// Safari requires that children get the slot attribute only after the slot tags have been rendered in the shadow DOM
|
|
575
672
|
if (hasIndividualSlots) {
|
|
576
673
|
this._assignIndividualSlotsToChildren();
|
|
@@ -610,11 +707,7 @@ class UI5Element extends HTMLElement {
|
|
|
610
707
|
if (!this.shadowRoot || this.shadowRoot.children.length === 0) {
|
|
611
708
|
return;
|
|
612
709
|
}
|
|
613
|
-
|
|
614
|
-
if (children.length !== 1) {
|
|
615
|
-
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
|
|
616
|
-
}
|
|
617
|
-
return children[0];
|
|
710
|
+
return this.shadowRoot.children[0];
|
|
618
711
|
}
|
|
619
712
|
/**
|
|
620
713
|
* Returns the DOM Element marked with "data-sap-focus-ref" inside the template.
|
|
@@ -639,13 +732,16 @@ class UI5Element extends HTMLElement {
|
|
|
639
732
|
}
|
|
640
733
|
/**
|
|
641
734
|
* Set the focus to the element, returned by "getFocusDomRef()" (marked by "data-sap-focus-ref")
|
|
642
|
-
* @param
|
|
735
|
+
* @param focusOptions additional options for the focus
|
|
643
736
|
* @public
|
|
644
737
|
*/
|
|
645
738
|
async focus(focusOptions) {
|
|
646
739
|
await this._waitForDomRef();
|
|
647
740
|
const focusDomRef = this.getFocusDomRef();
|
|
648
|
-
if (focusDomRef
|
|
741
|
+
if (focusDomRef === this) {
|
|
742
|
+
HTMLElement.prototype.focus.call(this, focusOptions);
|
|
743
|
+
}
|
|
744
|
+
else if (focusDomRef && typeof focusDomRef.focus === "function") {
|
|
649
745
|
focusDomRef.focus(focusOptions);
|
|
650
746
|
}
|
|
651
747
|
}
|
|
@@ -656,13 +752,40 @@ class UI5Element extends HTMLElement {
|
|
|
656
752
|
* @param data - additional data for the event
|
|
657
753
|
* @param cancelable - true, if the user can call preventDefault on the event object
|
|
658
754
|
* @param bubbles - true, if the event bubbles
|
|
659
|
-
* @returns
|
|
755
|
+
* @returns false, if the event was cancelled (preventDefault called), true otherwise
|
|
756
|
+
* @deprecated use fireDecoratorEvent instead
|
|
660
757
|
*/
|
|
661
758
|
fireEvent(name, data, cancelable = false, bubbles = true) {
|
|
662
759
|
const eventResult = this._fireEvent(name, data, cancelable, bubbles);
|
|
663
|
-
const
|
|
664
|
-
|
|
665
|
-
|
|
760
|
+
const pascalCaseEventName = kebabToPascalCase(name);
|
|
761
|
+
// pascal events are more convinient for native react usage
|
|
762
|
+
// live-change:
|
|
763
|
+
// Before: onlive-change
|
|
764
|
+
// After: onLiveChange
|
|
765
|
+
if (pascalCaseEventName !== name) {
|
|
766
|
+
return eventResult && this._fireEvent(pascalCaseEventName, data, cancelable, bubbles);
|
|
767
|
+
}
|
|
768
|
+
return eventResult;
|
|
769
|
+
}
|
|
770
|
+
/**
|
|
771
|
+
* Fires a custom event, configured via the "event" decorator.
|
|
772
|
+
* @public
|
|
773
|
+
* @param name - name of the event
|
|
774
|
+
* @param data - additional data for the event
|
|
775
|
+
* @returns false, if the event was cancelled (preventDefault called), true otherwise
|
|
776
|
+
*/
|
|
777
|
+
fireDecoratorEvent(name, data) {
|
|
778
|
+
const eventData = this.getEventData(name);
|
|
779
|
+
const cancellable = eventData ? eventData.cancelable : false;
|
|
780
|
+
const bubbles = eventData ? eventData.bubbles : false;
|
|
781
|
+
const eventResult = this._fireEvent(name, data, cancellable, bubbles);
|
|
782
|
+
const pascalCaseEventName = kebabToPascalCase(name);
|
|
783
|
+
// pascal events are more convinient for native react usage
|
|
784
|
+
// live-change:
|
|
785
|
+
// Before: onlive-change
|
|
786
|
+
// After: onLiveChange
|
|
787
|
+
if (pascalCaseEventName !== name) {
|
|
788
|
+
return eventResult && this._fireEvent(pascalCaseEventName, data, cancellable, bubbles);
|
|
666
789
|
}
|
|
667
790
|
return eventResult;
|
|
668
791
|
}
|
|
@@ -689,6 +812,11 @@ class UI5Element extends HTMLElement {
|
|
|
689
812
|
// Return false if any of the two events was prevented (its result was false).
|
|
690
813
|
return normalEventResult && noConflictEventResult;
|
|
691
814
|
}
|
|
815
|
+
getEventData(name) {
|
|
816
|
+
const ctor = this.constructor;
|
|
817
|
+
const eventMap = ctor.getMetadata().getEvents();
|
|
818
|
+
return eventMap[name];
|
|
819
|
+
}
|
|
692
820
|
/**
|
|
693
821
|
* Returns the actual children, associated with a slot.
|
|
694
822
|
* 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.
|
|
@@ -697,12 +825,30 @@ class UI5Element extends HTMLElement {
|
|
|
697
825
|
getSlottedNodes(slotName) {
|
|
698
826
|
return getSlottedNodesList(this[slotName]);
|
|
699
827
|
}
|
|
828
|
+
/**
|
|
829
|
+
* Attach a callback that will be executed whenever the component's state is finalized
|
|
830
|
+
*
|
|
831
|
+
* @param callback
|
|
832
|
+
* @public
|
|
833
|
+
*/
|
|
834
|
+
attachComponentStateFinalized(callback) {
|
|
835
|
+
this._componentStateFinalizedEventProvider.attachEvent("componentStateFinalized", callback);
|
|
836
|
+
}
|
|
837
|
+
/**
|
|
838
|
+
* Detach the callback that is executed whenever the component's state is finalized
|
|
839
|
+
*
|
|
840
|
+
* @param callback
|
|
841
|
+
* @public
|
|
842
|
+
*/
|
|
843
|
+
detachComponentStateFinalized(callback) {
|
|
844
|
+
this._componentStateFinalizedEventProvider.detachEvent("componentStateFinalized", callback);
|
|
845
|
+
}
|
|
700
846
|
/**
|
|
701
847
|
* Determines whether the component should be rendered in RTL mode or not.
|
|
702
848
|
* Returns: "rtl", "ltr" or undefined
|
|
703
849
|
*
|
|
704
850
|
* @public
|
|
705
|
-
* @
|
|
851
|
+
* @default undefined
|
|
706
852
|
*/
|
|
707
853
|
get effectiveDir() {
|
|
708
854
|
markAsRtlAware(this.constructor); // if a UI5 Element calls this method, it's considered to be rtl-aware
|
|
@@ -710,49 +856,50 @@ class UI5Element extends HTMLElement {
|
|
|
710
856
|
}
|
|
711
857
|
/**
|
|
712
858
|
* Used to duck-type UI5 elements without using instanceof
|
|
713
|
-
* @returns {boolean}
|
|
714
859
|
* @public
|
|
860
|
+
* @default true
|
|
715
861
|
*/
|
|
716
862
|
get isUI5Element() {
|
|
717
863
|
return true;
|
|
718
864
|
}
|
|
865
|
+
get isUI5AbstractElement() {
|
|
866
|
+
return !this.constructor._needsShadowDOM();
|
|
867
|
+
}
|
|
719
868
|
get classes() {
|
|
720
869
|
return {};
|
|
721
870
|
}
|
|
722
871
|
/**
|
|
723
|
-
*
|
|
872
|
+
* Returns the component accessibility info.
|
|
724
873
|
* @private
|
|
725
874
|
*/
|
|
726
|
-
|
|
727
|
-
return
|
|
875
|
+
get accessibilityInfo() {
|
|
876
|
+
return {};
|
|
728
877
|
}
|
|
729
878
|
/**
|
|
879
|
+
* Do not override this method in derivatives of UI5Element, use metadata properties instead
|
|
730
880
|
* @private
|
|
731
881
|
*/
|
|
732
|
-
static
|
|
733
|
-
return
|
|
882
|
+
static get observedAttributes() {
|
|
883
|
+
return this.getMetadata().getAttributesList();
|
|
734
884
|
}
|
|
735
885
|
/**
|
|
886
|
+
* Returns all tags, used inside component's template subject to scoping.
|
|
887
|
+
* returns {Array[]} // TODO add @
|
|
736
888
|
* @private
|
|
737
889
|
*/
|
|
738
|
-
static
|
|
739
|
-
|
|
890
|
+
static get tagsToScope() {
|
|
891
|
+
const componentTag = this.getMetadata().getPureTag();
|
|
892
|
+
const tagsToScope = this.getUniqueDependencies().map((dep) => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
|
|
893
|
+
if (shouldScopeCustomElement(componentTag)) {
|
|
894
|
+
tagsToScope.push(componentTag);
|
|
895
|
+
}
|
|
896
|
+
return tagsToScope;
|
|
740
897
|
}
|
|
741
898
|
/**
|
|
742
|
-
* @
|
|
899
|
+
* @private
|
|
743
900
|
*/
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
throw new Error("This component does not use the static area");
|
|
747
|
-
}
|
|
748
|
-
if (!this.staticAreaItem) {
|
|
749
|
-
this.staticAreaItem = StaticAreaItem.createInstance();
|
|
750
|
-
this.staticAreaItem.setOwnerElement(this);
|
|
751
|
-
}
|
|
752
|
-
if (!this.staticAreaItem.parentElement) {
|
|
753
|
-
getSingletonElementInstance("ui5-static-area").appendChild(this.staticAreaItem);
|
|
754
|
-
}
|
|
755
|
-
return this.staticAreaItem.getDomRef();
|
|
901
|
+
static _needsShadowDOM() {
|
|
902
|
+
return !!this.template || Object.prototype.hasOwnProperty.call(this.prototype, "render");
|
|
756
903
|
}
|
|
757
904
|
/**
|
|
758
905
|
* @private
|
|
@@ -766,66 +913,56 @@ class UI5Element extends HTMLElement {
|
|
|
766
913
|
if (!isValidPropertyName(prop)) {
|
|
767
914
|
console.warn(`"${prop}" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */
|
|
768
915
|
}
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
if (
|
|
773
|
-
|
|
916
|
+
const descriptor = getPropertyDescriptor(proto, prop);
|
|
917
|
+
// if the decorator is on a setter, proxy the new setter to it
|
|
918
|
+
let origSet;
|
|
919
|
+
if (descriptor?.set) {
|
|
920
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
921
|
+
origSet = descriptor.set;
|
|
774
922
|
}
|
|
775
|
-
if
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
923
|
+
// if the decorator is on a setter, there will be a corresponding getter - proxy the new getter to it
|
|
924
|
+
let origGet;
|
|
925
|
+
if (descriptor?.get) {
|
|
926
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
927
|
+
origGet = descriptor.get;
|
|
780
928
|
}
|
|
781
929
|
Object.defineProperty(proto, prop, {
|
|
782
930
|
get() {
|
|
783
|
-
if
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
const propDefaultValue = propData.defaultValue;
|
|
787
|
-
if (propData.type === Boolean) {
|
|
788
|
-
return false;
|
|
789
|
-
}
|
|
790
|
-
else if (propData.type === String) { // eslint-disable-line
|
|
791
|
-
return propDefaultValue;
|
|
792
|
-
}
|
|
793
|
-
else if (propData.multiple) { // eslint-disable-line
|
|
794
|
-
return [];
|
|
795
|
-
}
|
|
796
|
-
else {
|
|
797
|
-
return propDefaultValue;
|
|
931
|
+
// proxy the getter to the original accessor if there was one
|
|
932
|
+
if (origGet) {
|
|
933
|
+
return origGet.call(this);
|
|
798
934
|
}
|
|
935
|
+
return this._state[prop];
|
|
799
936
|
},
|
|
800
937
|
set(value) {
|
|
801
|
-
let isDifferent;
|
|
802
938
|
const ctor = this.constructor;
|
|
803
|
-
const
|
|
804
|
-
|
|
805
|
-
const propertyType = propData.type;
|
|
806
|
-
let propertyValidator = propData.validator;
|
|
807
|
-
const oldState = this._state[prop];
|
|
808
|
-
if (propertyType && propertyType.isDataTypeClass) {
|
|
809
|
-
propertyValidator = propertyType;
|
|
810
|
-
}
|
|
811
|
-
if (propertyValidator) {
|
|
812
|
-
isDifferent = !propertyValidator.valuesAreEqual(oldState, value);
|
|
813
|
-
}
|
|
814
|
-
else if (Array.isArray(oldState) && Array.isArray(value) && propData.multiple && propData.compareValues) { // compareValues is added for IE, test if needed now
|
|
815
|
-
isDifferent = !arraysAreEqual(oldState, value);
|
|
816
|
-
}
|
|
817
|
-
else {
|
|
818
|
-
isDifferent = oldState !== value;
|
|
819
|
-
}
|
|
939
|
+
const oldState = origGet ? origGet.call(this) : this._state[prop];
|
|
940
|
+
const isDifferent = oldState !== value;
|
|
820
941
|
if (isDifferent) {
|
|
821
|
-
|
|
942
|
+
// if the decorator is on a setter, use it for storage
|
|
943
|
+
if (origSet) {
|
|
944
|
+
origSet.call(this, value);
|
|
945
|
+
}
|
|
946
|
+
else {
|
|
947
|
+
this._state[prop] = value;
|
|
948
|
+
}
|
|
822
949
|
_invalidate.call(this, {
|
|
823
950
|
type: "property",
|
|
824
951
|
name: prop,
|
|
825
952
|
newValue: value,
|
|
826
953
|
oldValue: oldState,
|
|
827
954
|
});
|
|
828
|
-
this.
|
|
955
|
+
if (this._rendered) {
|
|
956
|
+
// the component is already rendered, indicating it is not the constructor -
|
|
957
|
+
// therefore the attribute can be set synchronously.
|
|
958
|
+
// get the effective value of the property,
|
|
959
|
+
// as it might differ from the provided value
|
|
960
|
+
const newValue = origGet ? origGet.call(this) : this._state[prop];
|
|
961
|
+
this._updateAttribute(prop, newValue);
|
|
962
|
+
}
|
|
963
|
+
if (ctor.getMetadata().isFormAssociated()) {
|
|
964
|
+
setFormValue(this);
|
|
965
|
+
}
|
|
829
966
|
}
|
|
830
967
|
},
|
|
831
968
|
});
|
|
@@ -838,7 +975,7 @@ class UI5Element extends HTMLElement {
|
|
|
838
975
|
console.warn(`"${slotName}" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */
|
|
839
976
|
}
|
|
840
977
|
const propertyName = slotData.propertyName || slotName;
|
|
841
|
-
|
|
978
|
+
const propertyDescriptor = {
|
|
842
979
|
get() {
|
|
843
980
|
if (this._state[propertyName] !== undefined) {
|
|
844
981
|
return this._state[propertyName];
|
|
@@ -848,34 +985,29 @@ class UI5Element extends HTMLElement {
|
|
|
848
985
|
set() {
|
|
849
986
|
throw new Error("Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)");
|
|
850
987
|
},
|
|
851
|
-
}
|
|
988
|
+
};
|
|
989
|
+
Object.defineProperty(proto, propertyName, propertyDescriptor);
|
|
990
|
+
if (propertyName !== kebabToCamelCase(propertyName)) {
|
|
991
|
+
Object.defineProperty(proto, kebabToCamelCase(propertyName), propertyDescriptor);
|
|
992
|
+
}
|
|
852
993
|
}
|
|
853
994
|
}
|
|
854
995
|
}
|
|
855
|
-
/**
|
|
856
|
-
* Returns the CSS for this UI5 Web Component Class
|
|
857
|
-
* @protected
|
|
858
|
-
*/
|
|
859
|
-
static get styles() {
|
|
860
|
-
return "";
|
|
861
|
-
}
|
|
862
|
-
/**
|
|
863
|
-
* Returns the Static Area CSS for this UI5 Web Component Class
|
|
864
|
-
* @protected
|
|
865
|
-
*/
|
|
866
|
-
static get staticAreaStyles() {
|
|
867
|
-
return "";
|
|
868
|
-
}
|
|
869
996
|
/**
|
|
870
997
|
* Returns an array with the dependencies for this UI5 Web Component, which could be:
|
|
871
|
-
* - composed components (used in its shadow root
|
|
998
|
+
* - composed components (used in its shadow root)
|
|
872
999
|
* - slotted components that the component may need to communicate with
|
|
873
1000
|
*
|
|
1001
|
+
* @deprecated no longer necessary for jsxRenderer-enabled components
|
|
874
1002
|
* @protected
|
|
875
1003
|
*/
|
|
876
1004
|
static get dependencies() {
|
|
877
1005
|
return [];
|
|
878
1006
|
}
|
|
1007
|
+
static cacheUniqueDependencies() {
|
|
1008
|
+
const filtered = this.dependencies.filter((dep, index, deps) => deps.indexOf(dep) === index);
|
|
1009
|
+
uniqueDependenciesCache.set(this, filtered);
|
|
1010
|
+
}
|
|
879
1011
|
/**
|
|
880
1012
|
* Returns a list of the unique dependencies for this UI5 Web Component
|
|
881
1013
|
*
|
|
@@ -883,39 +1015,54 @@ class UI5Element extends HTMLElement {
|
|
|
883
1015
|
*/
|
|
884
1016
|
static getUniqueDependencies() {
|
|
885
1017
|
if (!uniqueDependenciesCache.has(this)) {
|
|
886
|
-
|
|
887
|
-
uniqueDependenciesCache.set(this, filtered);
|
|
1018
|
+
this.cacheUniqueDependencies();
|
|
888
1019
|
}
|
|
889
1020
|
return uniqueDependenciesCache.get(this) || [];
|
|
890
1021
|
}
|
|
891
|
-
/**
|
|
892
|
-
* Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved
|
|
893
|
-
*
|
|
894
|
-
* @returns {Promise}
|
|
895
|
-
*/
|
|
896
|
-
static whenDependenciesDefined() {
|
|
897
|
-
return Promise.all(this.getUniqueDependencies().map(dep => dep.define()));
|
|
898
|
-
}
|
|
899
1022
|
/**
|
|
900
1023
|
* Hook that will be called upon custom element definition
|
|
901
1024
|
*
|
|
902
1025
|
* @protected
|
|
903
|
-
* @
|
|
1026
|
+
* @deprecated use the "i18n" decorator for fetching message bundles and the "cldr" option in the "customElements" decorator for fetching CLDR
|
|
904
1027
|
*/
|
|
905
1028
|
static async onDefine() {
|
|
906
1029
|
return Promise.resolve();
|
|
907
1030
|
}
|
|
1031
|
+
static fetchI18nBundles() {
|
|
1032
|
+
return Promise.all(Object.entries(this.getMetadata().getI18n()).map(pair => {
|
|
1033
|
+
const { bundleName } = pair[1];
|
|
1034
|
+
return getI18nBundle(bundleName);
|
|
1035
|
+
}));
|
|
1036
|
+
}
|
|
1037
|
+
static fetchCLDR() {
|
|
1038
|
+
if (this.getMetadata().needsCLDR()) {
|
|
1039
|
+
return fetchCldr(getLocale().getLanguage(), getLocale().getRegion(), getLocale().getScript());
|
|
1040
|
+
}
|
|
1041
|
+
return Promise.resolve();
|
|
1042
|
+
}
|
|
1043
|
+
static get i18nBundles() {
|
|
1044
|
+
return this.i18nBundleStorage;
|
|
1045
|
+
}
|
|
908
1046
|
/**
|
|
909
1047
|
* Registers a UI5 Web Component in the browser window object
|
|
910
1048
|
* @public
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
1049
|
+
*/
|
|
1050
|
+
static define() {
|
|
1051
|
+
const defineSequence = async () => {
|
|
1052
|
+
await boot(); // boot must finish first, because it initializes configuration
|
|
1053
|
+
const result = await Promise.all([
|
|
1054
|
+
this.fetchI18nBundles(), // uses configuration
|
|
1055
|
+
this.fetchCLDR(),
|
|
1056
|
+
this.onDefine(),
|
|
1057
|
+
]);
|
|
1058
|
+
const [i18nBundles] = result;
|
|
1059
|
+
Object.entries(this.getMetadata().getI18n()).forEach((pair, index) => {
|
|
1060
|
+
const bundleName = pair[1].bundleName;
|
|
1061
|
+
this.i18nBundleStorage[bundleName] = i18nBundles[index];
|
|
1062
|
+
});
|
|
1063
|
+
this.asyncFinished = true;
|
|
1064
|
+
};
|
|
1065
|
+
this.definePromise = defineSequence();
|
|
919
1066
|
const tag = this.getMetadata().getTag();
|
|
920
1067
|
const definedLocally = isTagRegistered(tag);
|
|
921
1068
|
const definedGlobally = customElements.get(tag);
|
|
@@ -925,8 +1072,7 @@ class UI5Element extends HTMLElement {
|
|
|
925
1072
|
else if (!definedGlobally) {
|
|
926
1073
|
this._generateAccessors();
|
|
927
1074
|
registerTag(tag);
|
|
928
|
-
|
|
929
|
-
preloadLinks(this);
|
|
1075
|
+
customElements.define(tag, this);
|
|
930
1076
|
}
|
|
931
1077
|
return this;
|
|
932
1078
|
}
|
|
@@ -934,7 +1080,6 @@ class UI5Element extends HTMLElement {
|
|
|
934
1080
|
* Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents')
|
|
935
1081
|
* Note: not to be confused with the "get metadata()" method, which returns an object for this class's metadata only
|
|
936
1082
|
* @public
|
|
937
|
-
* @returns {UI5ElementMetadata}
|
|
938
1083
|
*/
|
|
939
1084
|
static getMetadata() {
|
|
940
1085
|
if (this.hasOwnProperty("_metadata")) { // eslint-disable-line
|
|
@@ -950,19 +1095,28 @@ class UI5Element extends HTMLElement {
|
|
|
950
1095
|
this._metadata = new UI5ElementMetadata(mergedMetadata);
|
|
951
1096
|
return this._metadata;
|
|
952
1097
|
}
|
|
1098
|
+
get validity() { return this._internals.validity; }
|
|
1099
|
+
get validationMessage() { return this._internals.validationMessage; }
|
|
1100
|
+
checkValidity() { return this._internals.checkValidity(); }
|
|
1101
|
+
reportValidity() { return this._internals.reportValidity(); }
|
|
953
1102
|
}
|
|
954
1103
|
/**
|
|
955
1104
|
* Returns the metadata object for this UI5 Web Component Class
|
|
956
1105
|
* @protected
|
|
957
1106
|
*/
|
|
958
1107
|
UI5Element.metadata = {};
|
|
1108
|
+
/**
|
|
1109
|
+
* Returns the CSS for this UI5 Web Component Class
|
|
1110
|
+
* @protected
|
|
1111
|
+
*/
|
|
1112
|
+
UI5Element.styles = "";
|
|
1113
|
+
UI5Element.i18nBundleStorage = {};
|
|
959
1114
|
/**
|
|
960
1115
|
* Always use duck-typing to cover all runtimes on the page.
|
|
961
|
-
* @returns {boolean}
|
|
962
1116
|
*/
|
|
963
1117
|
const instanceOfUI5Element = (object) => {
|
|
964
1118
|
return "isUI5Element" in object;
|
|
965
1119
|
};
|
|
966
1120
|
export default UI5Element;
|
|
967
|
-
export { instanceOfUI5Element };
|
|
1121
|
+
export { instanceOfUI5Element, };
|
|
968
1122
|
//# sourceMappingURL=UI5Element.js.map
|