@ui5/webcomponents-base 0.0.0-e7dd012d7 → 0.0.0-e818f286e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +3 -0
- package/CHANGELOG.md +314 -0
- package/README.md +53 -7
- package/bundle.esm.js +20 -20
- package/dist/AssetRegistry.js +8 -9
- package/dist/Boot.js +59 -0
- package/dist/CSP.js +59 -0
- package/dist/CustomElementsRegistry.js +60 -4
- package/dist/CustomElementsScope.js +20 -98
- package/dist/CustomElementsScopeUtils.js +108 -0
- package/dist/DOMObserver.js +65 -0
- package/dist/Device.js +71 -773
- package/dist/EventProvider.js +30 -26
- package/dist/FeaturesRegistry.js +4 -1
- package/dist/FontFace.js +7 -95
- package/dist/InitialConfiguration.js +37 -21
- package/dist/Keys.js +98 -0
- package/dist/ManagedStyles.js +83 -0
- package/dist/MediaRange.js +109 -0
- package/dist/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
- package/dist/Render.js +175 -0
- package/dist/RenderScheduler.js +16 -138
- package/dist/Runtimes.js +107 -0
- package/dist/StaticArea.js +1 -29
- package/dist/StaticAreaItem.js +58 -65
- package/dist/SystemCSSVars.js +4 -25
- package/dist/UI5Element.js +315 -382
- package/dist/UI5ElementMetadata.js +132 -17
- package/dist/asset-registries/Icons.js +117 -14
- package/dist/asset-registries/Illustrations.js +30 -0
- package/dist/asset-registries/LocaleData.js +97 -68
- package/dist/asset-registries/Themes.js +29 -35
- package/dist/asset-registries/i18n.js +62 -49
- package/dist/assets/bundle.esm.81ba431e.js +43 -0
- package/dist/assets-meta/IconCollectionsAlias.js +18 -0
- package/dist/config/Icons.js +52 -0
- package/dist/config/Language.js +18 -20
- package/dist/config/Theme.js +25 -0
- package/dist/css/BusyIndicator.css +80 -0
- package/dist/css/FontFace.css +75 -0
- package/dist/css/OverrideFontFace.css +32 -0
- package/dist/css/SystemCSSVars.css +17 -0
- package/dist/delegate/ItemNavigation.js +238 -201
- package/dist/delegate/ResizeHandler.js +78 -37
- package/dist/delegate/ScrollEnablement.js +49 -20
- package/dist/features/F6Navigation.js +110 -0
- package/dist/features/OpenUI5Enablement.js +119 -0
- package/dist/features/OpenUI5Support.js +41 -6
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/generated/VersionInfo.js +10 -0
- package/dist/generated/css/BusyIndicator.css.js +5 -0
- package/dist/generated/css/FontFace.css.js +5 -0
- package/dist/generated/css/OverrideFontFace.css.js +5 -0
- package/dist/generated/css/SystemCSSVars.css.js +5 -0
- package/dist/i18nBundle.js +38 -4
- package/dist/locale/applyDirection.js +6 -4
- package/dist/locale/directionChange.js +32 -0
- package/dist/locale/getEffectiveDir.js +28 -0
- package/dist/locale/languageChange.js +1 -1
- package/dist/renderer/LitRenderer.js +39 -18
- package/dist/renderer/directives/style-map.js +72 -0
- package/dist/renderer/executeTemplate.js +19 -2
- package/dist/sap/base/Log.js +241 -0
- package/dist/sap/base/assert.js +8 -0
- package/dist/sap/base/security/URLListValidator.js +148 -0
- package/dist/sap/base/security/encodeCSS.js +14 -0
- package/dist/sap/base/security/encodeXML.js +23 -0
- package/dist/sap/base/security/sanitizeHTML.js +16 -0
- package/dist/sap/base/strings/toHex.js +8 -0
- package/dist/sap/base/util/now.js +7 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
- package/dist/theming/CustomStyle.js +25 -5
- package/dist/theming/applyTheme.js +11 -16
- package/dist/theming/getConstructableStyle.js +7 -6
- package/dist/theming/getEffectiveLinksHrefs.js +27 -0
- package/dist/theming/getEffectiveStyle.js +24 -8
- package/dist/theming/getStylesString.js +4 -2
- package/dist/theming/getThemeDesignerTheme.js +25 -5
- package/dist/theming/preloadLinks.js +23 -0
- package/dist/types/CSSColor.js +9 -0
- package/dist/types/CalendarType.js +1 -1
- package/dist/types/DataType.js +13 -1
- package/dist/types/Float.js +4 -0
- package/dist/types/Integer.js +4 -0
- package/dist/types/InvisibleMessageMode.js +30 -0
- package/dist/types/ItemNavigationBehavior.js +2 -7
- package/dist/types/PopupState.js +1 -1
- package/dist/types/ValueState.js +1 -1
- package/dist/updateShadowRoot.js +29 -0
- package/dist/util/AriaLabelHelper.js +6 -8
- package/dist/util/Caret.js +32 -0
- package/dist/util/ColorConversion.js +398 -0
- package/dist/util/FocusableElements.js +22 -9
- package/dist/util/HTMLSanitizer.js +7 -0
- package/dist/util/InvisibleMessage.js +69 -0
- package/dist/util/PopupUtils.js +93 -0
- package/dist/util/SlotsHelper.js +43 -0
- package/dist/util/TabbableElements.js +5 -1
- package/dist/util/arraysAreEqual.js +15 -0
- package/dist/util/clamp.js +12 -0
- package/dist/util/createLinkInHead.js +19 -0
- package/dist/util/debounce.js +17 -0
- package/dist/util/escapeRegex.js +10 -0
- package/dist/util/generateHighlightedMarkup.js +42 -0
- package/dist/util/getActiveElement.js +11 -0
- package/dist/util/getClassCopy.js +10 -0
- package/dist/util/getEffectiveContentDensity.js +5 -0
- package/dist/util/getNormalizedTarget.js +16 -0
- package/dist/util/isDefaultSlotProvided.js +11 -0
- package/dist/util/isElementInView.js +15 -0
- package/dist/util/isNodeHidden.js +1 -1
- package/dist/util/isNodeTabbable.js +4 -4
- package/hash.txt +1 -0
- package/index.js +1 -1
- package/lib/generate-asset-parameters/index.js +8 -5
- package/lib/generate-styles/index.js +26 -0
- package/lib/generate-version-info/index.js +32 -0
- package/package-scripts.js +37 -28
- package/package.json +20 -13
- package/src/AssetRegistry.js +8 -9
- package/src/Boot.js +59 -0
- package/src/CSP.js +59 -0
- package/src/CustomElementsRegistry.js +60 -4
- package/src/CustomElementsScope.js +20 -98
- package/src/CustomElementsScopeUtils.js +108 -0
- package/src/DOMObserver.js +65 -0
- package/src/Device.js +71 -773
- package/src/EventProvider.js +30 -26
- package/src/FeaturesRegistry.js +4 -1
- package/src/FontFace.js +7 -95
- package/src/InitialConfiguration.js +37 -21
- package/src/Keys.js +98 -0
- package/src/ManagedStyles.js +83 -0
- package/src/MediaRange.js +109 -0
- package/src/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
- package/src/Render.js +175 -0
- package/src/RenderScheduler.js +16 -138
- package/src/Runtimes.js +107 -0
- package/src/StaticArea.js +1 -29
- package/src/StaticAreaItem.js +58 -65
- package/src/SystemCSSVars.js +4 -25
- package/src/UI5Element.js +315 -382
- package/src/UI5ElementMetadata.js +132 -17
- package/src/asset-registries/Icons.js +117 -14
- package/src/asset-registries/Illustrations.js +30 -0
- package/src/asset-registries/LocaleData.js +97 -68
- package/src/asset-registries/Themes.js +29 -35
- package/src/asset-registries/i18n.js +62 -49
- package/src/assets-meta/IconCollectionsAlias.js +18 -0
- package/src/config/Icons.js +52 -0
- package/src/config/Language.js +18 -20
- package/src/config/Theme.js +25 -0
- package/src/css/BusyIndicator.css +80 -0
- package/src/css/FontFace.css +75 -0
- package/src/css/OverrideFontFace.css +32 -0
- package/src/css/SystemCSSVars.css +17 -0
- package/src/delegate/ItemNavigation.js +238 -201
- package/src/delegate/ResizeHandler.js +78 -37
- package/src/delegate/ScrollEnablement.js +49 -20
- package/src/features/F6Navigation.js +110 -0
- package/src/features/OpenUI5Enablement.js +119 -0
- package/src/features/OpenUI5Support.js +41 -6
- package/src/i18nBundle.js +38 -4
- package/src/locale/applyDirection.js +6 -4
- package/src/locale/directionChange.js +32 -0
- package/src/locale/getEffectiveDir.js +28 -0
- package/src/locale/languageChange.js +1 -1
- package/src/renderer/LitRenderer.js +39 -18
- package/src/renderer/directives/style-map.js +72 -0
- package/src/renderer/executeTemplate.js +19 -2
- package/src/theming/CustomStyle.js +25 -5
- package/src/theming/applyTheme.js +11 -16
- package/src/theming/getConstructableStyle.js +7 -6
- package/src/theming/getEffectiveLinksHrefs.js +27 -0
- package/src/theming/getEffectiveStyle.js +24 -8
- package/src/theming/getStylesString.js +4 -2
- package/src/theming/getThemeDesignerTheme.js +25 -5
- package/src/theming/preloadLinks.js +23 -0
- package/src/types/CSSColor.js +9 -0
- package/src/types/CalendarType.js +1 -1
- package/src/types/DataType.js +13 -1
- package/src/types/Float.js +4 -0
- package/src/types/Integer.js +4 -0
- package/src/types/InvisibleMessageMode.js +30 -0
- package/src/types/ItemNavigationBehavior.js +2 -7
- package/src/types/PopupState.js +1 -1
- package/src/types/ValueState.js +1 -1
- package/src/updateShadowRoot.js +29 -0
- package/src/util/AriaLabelHelper.js +6 -8
- package/src/util/Caret.js +32 -0
- package/src/util/ColorConversion.js +398 -0
- package/src/util/FocusableElements.js +22 -9
- package/src/util/HTMLSanitizer.js +7 -0
- package/src/util/InvisibleMessage.js +69 -0
- package/src/util/PopupUtils.js +93 -0
- package/src/util/SlotsHelper.js +43 -0
- package/src/util/TabbableElements.js +5 -1
- package/src/util/arraysAreEqual.js +15 -0
- package/src/util/clamp.js +12 -0
- package/src/util/createLinkInHead.js +19 -0
- package/src/util/debounce.js +17 -0
- package/src/util/escapeRegex.js +10 -0
- package/src/util/generateHighlightedMarkup.js +42 -0
- package/src/util/getActiveElement.js +11 -0
- package/src/util/getClassCopy.js +10 -0
- package/src/util/getEffectiveContentDensity.js +5 -0
- package/src/util/getNormalizedTarget.js +16 -0
- package/src/util/isDefaultSlotProvided.js +11 -0
- package/src/util/isElementInView.js +15 -0
- package/src/util/isNodeHidden.js +1 -1
- package/src/util/isNodeTabbable.js +4 -4
- package/used-modules.txt +10 -0
- package/bundle.es5.js +0 -28
- package/config/.eslintrc.js +0 -3
- package/config/rollup.config.js +0 -1
- package/dist/SVGIconRegistry.js +0 -73
- package/dist/boot.js +0 -34
- package/dist/compatibility/DOMObserver.js +0 -62
- package/dist/compatibility/patchNodeValue.js +0 -24
- package/dist/compatibility/whenPolyfillLoaded.js +0 -26
- package/dist/config/AssetsPath.js +0 -17
- package/dist/delegate/CustomResize.js +0 -78
- package/dist/delegate/NativeResize.js +0 -45
- package/dist/features/PropertiesFormatSupport.js +0 -8
- package/dist/features/browsersupport/Edge.js +0 -6
- package/dist/features/browsersupport/IE11.js +0 -42
- package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/dist/renderer/ifDefined.js +0 -21
- package/dist/renderer/scopeHTML.js +0 -32
- package/dist/resources/bundle.es5.js +0 -212
- package/dist/resources/bundle.es5.js.map +0 -1
- package/dist/resources/bundle.esm.js +0 -129
- package/dist/resources/bundle.esm.js.map +0 -1
- package/dist/test-resources/assets/Themes.js +0 -17
- package/dist/test-resources/elements/Child.js +0 -35
- package/dist/test-resources/elements/Generic.js +0 -84
- package/dist/test-resources/elements/GenericExt.js +0 -26
- package/dist/test-resources/elements/NoShadowDOM.js +0 -13
- package/dist/test-resources/elements/Parent.js +0 -37
- package/dist/test-resources/elements/WithStaticArea.js +0 -76
- package/dist/test-resources/pages/AllTestElements.html +0 -42
- package/dist/test-resources/pages/Configuration.html +0 -20
- package/dist/test-resources/pages/ConfigurationScript.html +0 -36
- package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
- package/dist/test-resources/pages/i18n.html +0 -40
- package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
- package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
- package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
- package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
- package/dist/test-resources/specs/StaticArea.spec.js +0 -34
- package/dist/test-resources/specs/Theming.spec.js +0 -31
- package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
- package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -96
- package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
- package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
- package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
- package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
- package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
- package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
- package/dist/theming/CSSVarsPonyfill.js +0 -68
- package/dist/theming/adaptCSSForIE.js +0 -95
- package/dist/theming/createComponentStyleTag.js +0 -54
- package/dist/theming/createThemePropertiesStyleTag.js +0 -20
- package/dist/thirdparty/Array.from.js +0 -16
- package/dist/thirdparty/Array.prototype.fill.js +0 -44
- package/dist/thirdparty/Array.prototype.find.js +0 -46
- package/dist/thirdparty/Array.prototype.includes.js +0 -51
- package/dist/thirdparty/Element.prototype.closest.js +0 -11
- package/dist/thirdparty/Element.prototype.matches.js +0 -6
- package/dist/thirdparty/Map.prototype.keys.js +0 -9
- package/dist/thirdparty/Number.isInteger.js +0 -5
- package/dist/thirdparty/Number.isNaN.js +0 -1
- package/dist/thirdparty/Number.parseFloat.js +0 -1
- package/dist/thirdparty/Number.parseInt.js +0 -1
- package/dist/thirdparty/Object.assign.js +0 -31
- package/dist/thirdparty/Object.entries.js +0 -11
- package/dist/thirdparty/Symbol.js +0 -2
- package/dist/thirdparty/WeakSet.js +0 -27
- package/dist/thirdparty/es6-string-methods.js +0 -182
- package/dist/thirdparty/events-polyfills.js +0 -89
- package/dist/thirdparty/fetch.js +0 -1
- package/dist/thirdparty/template.js +0 -600
- package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
- package/dist/util/EffectiveAssetPath.js +0 -27
- package/dist/util/encodeCSS.js +0 -24
- package/dist/util/findNodeOwner.js +0 -35
- package/dist/util/isSlot.js +0 -3
- package/dist/webcomponentsjs/LICENSE.md +0 -19
- package/dist/webcomponentsjs/README.md +0 -229
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
- package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
- package/dist/webcomponentsjs/package.json +0 -46
- package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
- package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
- package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
- package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
- package/src/SVGIconRegistry.js +0 -73
- package/src/boot.js +0 -34
- package/src/compatibility/DOMObserver.js +0 -62
- package/src/compatibility/patchNodeValue.js +0 -24
- package/src/compatibility/whenPolyfillLoaded.js +0 -26
- package/src/config/AssetsPath.js +0 -17
- package/src/delegate/CustomResize.js +0 -78
- package/src/delegate/NativeResize.js +0 -45
- package/src/features/PropertiesFormatSupport.js +0 -8
- package/src/features/browsersupport/Edge.js +0 -6
- package/src/features/browsersupport/IE11.js +0 -42
- package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/src/renderer/ifDefined.js +0 -21
- package/src/renderer/scopeHTML.js +0 -32
- package/src/theming/CSSVarsPonyfill.js +0 -68
- package/src/theming/adaptCSSForIE.js +0 -95
- package/src/theming/createComponentStyleTag.js +0 -54
- package/src/theming/createThemePropertiesStyleTag.js +0 -20
- package/src/thirdparty/Array.from.js +0 -16
- package/src/thirdparty/Array.prototype.fill.js +0 -44
- package/src/thirdparty/Array.prototype.find.js +0 -46
- package/src/thirdparty/Array.prototype.includes.js +0 -51
- package/src/thirdparty/Element.prototype.closest.js +0 -11
- package/src/thirdparty/Element.prototype.matches.js +0 -6
- package/src/thirdparty/Map.prototype.keys.js +0 -9
- package/src/thirdparty/Number.isInteger.js +0 -5
- package/src/thirdparty/Number.isNaN.js +0 -1
- package/src/thirdparty/Number.parseFloat.js +0 -1
- package/src/thirdparty/Number.parseInt.js +0 -1
- package/src/thirdparty/Object.assign.js +0 -31
- package/src/thirdparty/Object.entries.js +0 -11
- package/src/thirdparty/Symbol.js +0 -2
- package/src/thirdparty/WeakSet.js +0 -27
- package/src/thirdparty/es6-string-methods.js +0 -182
- package/src/thirdparty/events-polyfills.js +0 -89
- package/src/thirdparty/fetch.js +0 -1
- package/src/thirdparty/template.js +0 -600
- package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
- package/src/util/EffectiveAssetPath.js +0 -27
- package/src/util/encodeCSS.js +0 -24
- package/src/util/findNodeOwner.js +0 -35
- package/src/util/isSlot.js +0 -3
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Invalidation works", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("Tests that changing a property invalidates", () => {
|
|
7
|
-
|
|
8
|
-
const res = browser.executeAsync( async (done) => {
|
|
9
|
-
|
|
10
|
-
const el = document.getElementById("gen");
|
|
11
|
-
|
|
12
|
-
// Exactly 1 invalidation for each property change
|
|
13
|
-
let invalidations = 0;
|
|
14
|
-
|
|
15
|
-
const original = el._invalidate;
|
|
16
|
-
el._invalidate = () => {
|
|
17
|
-
original.apply(el, arguments);
|
|
18
|
-
invalidations++;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
el.strProp = "new value";
|
|
22
|
-
el.boolProp = true;
|
|
23
|
-
|
|
24
|
-
await window.RenderScheduler.whenFinished();
|
|
25
|
-
|
|
26
|
-
return done(invalidations);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
assert.strictEqual(res, 2, "Invalidated 2 times");
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it("Tests that setting a property to the same value does not invalidate", () => {
|
|
33
|
-
|
|
34
|
-
const res = browser.executeAsync( async (done) => {
|
|
35
|
-
const text = "some value";
|
|
36
|
-
|
|
37
|
-
const el = document.getElementById("gen");
|
|
38
|
-
el.strProp = text;
|
|
39
|
-
await window.RenderScheduler.whenFinished();
|
|
40
|
-
|
|
41
|
-
let invalidations = 0;
|
|
42
|
-
|
|
43
|
-
const original = el._invalidate;
|
|
44
|
-
el._invalidate = () => {
|
|
45
|
-
original.apply(el, arguments);
|
|
46
|
-
invalidations++;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
el.strProp = text;
|
|
50
|
-
|
|
51
|
-
await window.RenderScheduler.whenFinished();
|
|
52
|
-
|
|
53
|
-
return done(invalidations);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
assert.strictEqual(res, 0, "Not invalidated");
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("Tests that setting a property of type Object always invalidates", () => {
|
|
60
|
-
|
|
61
|
-
const res = browser.executeAsync( async (done) => {
|
|
62
|
-
const obj = {};
|
|
63
|
-
const otherObj = {};
|
|
64
|
-
|
|
65
|
-
const el = document.getElementById("gen");
|
|
66
|
-
el.objectProp = obj;
|
|
67
|
-
await window.RenderScheduler.whenFinished();
|
|
68
|
-
|
|
69
|
-
let invalidations = 0;
|
|
70
|
-
|
|
71
|
-
const original = el._invalidate;
|
|
72
|
-
el._invalidate = () => {
|
|
73
|
-
original.apply(el, arguments);
|
|
74
|
-
invalidations++;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
el.objectProp = otherObj;
|
|
78
|
-
|
|
79
|
-
await window.RenderScheduler.whenFinished();
|
|
80
|
-
|
|
81
|
-
return done(invalidations);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
assert.strictEqual(res, 1, "Invalidated");
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it("Tests that setting an array property always invalidates", () => {
|
|
88
|
-
|
|
89
|
-
const res = browser.executeAsync( async (done) => {
|
|
90
|
-
const arr = [];
|
|
91
|
-
const otherArr = [];
|
|
92
|
-
|
|
93
|
-
const el = document.getElementById("gen");
|
|
94
|
-
el.multiProp = arr;
|
|
95
|
-
await window.RenderScheduler.whenFinished();
|
|
96
|
-
|
|
97
|
-
let invalidations = 0;
|
|
98
|
-
|
|
99
|
-
const original = el._invalidate;
|
|
100
|
-
el._invalidate = () => {
|
|
101
|
-
original.apply(el, arguments);
|
|
102
|
-
invalidations++;
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
el.multiProp = otherArr;
|
|
106
|
-
|
|
107
|
-
await window.RenderScheduler.whenFinished();
|
|
108
|
-
|
|
109
|
-
return done(invalidations);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
assert.strictEqual(res, 1, "Invalidated");
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it("Tests that adding a child invalidates", () => {
|
|
116
|
-
|
|
117
|
-
const res = browser.executeAsync( async (done) => {
|
|
118
|
-
|
|
119
|
-
const el = document.getElementById("gen");
|
|
120
|
-
|
|
121
|
-
// Number of invalidations may vary with children/slots count, so just check for invalidation
|
|
122
|
-
let invalidated = false;
|
|
123
|
-
|
|
124
|
-
const original = el._invalidate;
|
|
125
|
-
el._invalidate = () => {
|
|
126
|
-
original.apply(el, arguments);
|
|
127
|
-
invalidated = true;
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
const div = document.createElement("div");
|
|
131
|
-
el.appendChild(div);
|
|
132
|
-
|
|
133
|
-
await window.RenderScheduler.whenFinished();
|
|
134
|
-
|
|
135
|
-
return done(invalidated);
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
assert.strictEqual(res, true, "Invalidated");
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("Tests that removing a child invalidates", () => {
|
|
142
|
-
|
|
143
|
-
const res = browser.executeAsync( async (done) => {
|
|
144
|
-
|
|
145
|
-
const el = document.getElementById("gen");
|
|
146
|
-
const div = document.createElement("div");
|
|
147
|
-
el.appendChild(div);
|
|
148
|
-
|
|
149
|
-
await window.RenderScheduler.whenFinished();
|
|
150
|
-
|
|
151
|
-
let invalidated = false;
|
|
152
|
-
|
|
153
|
-
const original = el._invalidate;
|
|
154
|
-
el._invalidate = () => {
|
|
155
|
-
original.apply(el, arguments);
|
|
156
|
-
invalidated = true;
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
el.removeChild(div);
|
|
160
|
-
|
|
161
|
-
await window.RenderScheduler.whenFinished();
|
|
162
|
-
|
|
163
|
-
return done(invalidated);
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
assert.strictEqual(res, true, "Invalidated");
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
it("Tests that modifying textContent invalidates", () => {
|
|
170
|
-
|
|
171
|
-
const res = browser.executeAsync( async (done) => {
|
|
172
|
-
|
|
173
|
-
const el = document.getElementById("gen");
|
|
174
|
-
el.textContent = "test";
|
|
175
|
-
await window.RenderScheduler.whenFinished();
|
|
176
|
-
|
|
177
|
-
// Number of invalidations may vary with children/slots count, so just check for invalidation
|
|
178
|
-
let invalidated = false;
|
|
179
|
-
|
|
180
|
-
const original = el._invalidate;
|
|
181
|
-
el._invalidate = () => {
|
|
182
|
-
original.apply(el, arguments);
|
|
183
|
-
invalidated = true;
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
el.textContent = "test2";
|
|
187
|
-
|
|
188
|
-
await window.RenderScheduler.whenFinished();
|
|
189
|
-
|
|
190
|
-
return done(invalidated);
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
assert.strictEqual(res, true, "Invalidated");
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
it("Tests that modifying nodeValue invalidates", () => {
|
|
197
|
-
|
|
198
|
-
const res = browser.executeAsync( async (done) => {
|
|
199
|
-
|
|
200
|
-
const el = document.getElementById("gen");
|
|
201
|
-
el.textContent = "test";
|
|
202
|
-
await window.RenderScheduler.whenFinished();
|
|
203
|
-
|
|
204
|
-
// Number of invalidations may vary with children/slots count, so just check for invalidation
|
|
205
|
-
let invalidated = false;
|
|
206
|
-
|
|
207
|
-
const original = el._invalidate;
|
|
208
|
-
el._invalidate = () => {
|
|
209
|
-
original.apply(el, arguments);
|
|
210
|
-
invalidated = true;
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
el.childNodes[0].nodeValue = "test2";
|
|
214
|
-
|
|
215
|
-
await window.RenderScheduler.whenFinished();
|
|
216
|
-
|
|
217
|
-
return done(invalidated);
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
assert.strictEqual(res, true, "Invalidated");
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
it("Tests that multiple invalidations result in a single rendering", () => {
|
|
224
|
-
|
|
225
|
-
const res = browser.executeAsync( async (done) => {
|
|
226
|
-
|
|
227
|
-
const el = document.getElementById("gen");
|
|
228
|
-
|
|
229
|
-
const operations = {
|
|
230
|
-
invalidation: 0,
|
|
231
|
-
rendering: 0,
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
const originalInvalidate = el._invalidate;
|
|
235
|
-
el._invalidate = () => {
|
|
236
|
-
originalInvalidate.apply(el, arguments);
|
|
237
|
-
operations.invalidation++;
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
const originalRender = el._render;
|
|
241
|
-
el._render = () => {
|
|
242
|
-
originalRender.apply(el, arguments);
|
|
243
|
-
operations.rendering++;
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
el.strProp = "new";
|
|
247
|
-
el.strProp = "newer";
|
|
248
|
-
|
|
249
|
-
await window.RenderScheduler.whenFinished();
|
|
250
|
-
|
|
251
|
-
return done(operations);
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
assert.strictEqual(res.invalidation, 2, "Invalidated 2 times");
|
|
255
|
-
assert.strictEqual(res.rendering, 1, "Rendered once");
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
});
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Lifecycle works", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("Tests element creation callbacks", () => {
|
|
7
|
-
|
|
8
|
-
const res = browser.executeAsync( async (done) => {
|
|
9
|
-
const creationCallbacks = ["onBeforeRendering", "onAfterRendering", "onEnterDOM"];
|
|
10
|
-
const calledCallbacks = [];
|
|
11
|
-
|
|
12
|
-
const el = document.createElement("ui5-test-generic");
|
|
13
|
-
|
|
14
|
-
creationCallbacks.forEach(callback => {
|
|
15
|
-
const original = el[callback];
|
|
16
|
-
el[callback] = () => {
|
|
17
|
-
calledCallbacks.push(callback);
|
|
18
|
-
original.call(el);
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
document.body.appendChild(el);
|
|
23
|
-
await window.RenderScheduler.whenFinished();
|
|
24
|
-
|
|
25
|
-
return done(calledCallbacks);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
assert.strictEqual(res.length, 3, "All 3 callbacks called");
|
|
29
|
-
assert.strictEqual(res[0], "onBeforeRendering", "onBeforeRendering called first");
|
|
30
|
-
assert.strictEqual(res[1], "onAfterRendering", "onAfterRendering called second");
|
|
31
|
-
assert.strictEqual(res[2], "onEnterDOM", "onEnterDOM called third");
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it("Tests element invalidation callbacks", () => {
|
|
35
|
-
|
|
36
|
-
const res = browser.executeAsync( async (done) => {
|
|
37
|
-
const invalidationCallbacks = ["onBeforeRendering", "onAfterRendering"];
|
|
38
|
-
const calledCallbacks = [];
|
|
39
|
-
|
|
40
|
-
const el = document.createElement("ui5-test-generic");
|
|
41
|
-
document.body.appendChild(el);
|
|
42
|
-
|
|
43
|
-
await window.RenderScheduler.whenFinished();
|
|
44
|
-
|
|
45
|
-
el.strProp = "some string";
|
|
46
|
-
|
|
47
|
-
invalidationCallbacks.forEach(callback => {
|
|
48
|
-
const original = el[callback];
|
|
49
|
-
el[callback] = () => {
|
|
50
|
-
calledCallbacks.push(callback);
|
|
51
|
-
original.call(el);
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
await window.RenderScheduler.whenFinished();
|
|
56
|
-
|
|
57
|
-
return done(calledCallbacks);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
assert.strictEqual(res.length, 2, "All 2 callbacks called");
|
|
61
|
-
assert.strictEqual(res[0], "onBeforeRendering", "onBeforeRendering called first");
|
|
62
|
-
assert.strictEqual(res[1], "onAfterRendering", "onAfterRendering called second");
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it("Tests element destruction callback", () => {
|
|
66
|
-
|
|
67
|
-
const res = browser.executeAsync( async (done) => {
|
|
68
|
-
const destructionCallbacks = ["onExitDOM"];
|
|
69
|
-
const calledCallbacks = [];
|
|
70
|
-
|
|
71
|
-
const el = document.createElement("ui5-test-generic");
|
|
72
|
-
|
|
73
|
-
destructionCallbacks.forEach(callback => {
|
|
74
|
-
const original = el[callback];
|
|
75
|
-
el[callback] = () => {
|
|
76
|
-
calledCallbacks.push(callback);
|
|
77
|
-
original.call(el);
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
document.body.appendChild(el);
|
|
82
|
-
|
|
83
|
-
await window.RenderScheduler.whenFinished(); // Must wait, otherwise onExitDOM won't be called
|
|
84
|
-
|
|
85
|
-
document.body.removeChild(el);
|
|
86
|
-
|
|
87
|
-
await window.RenderScheduler.whenFinished();
|
|
88
|
-
|
|
89
|
-
return done(calledCallbacks);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
assert.strictEqual(res.length, 1, "Only 1 callback was called");
|
|
93
|
-
assert.strictEqual(res[0], "onExitDOM", "onExitDOM called");
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
});
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Metadata slot listenFor works", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("Tests that changing a listenFor property of a child invalidates the parent", () => {
|
|
7
|
-
|
|
8
|
-
const res = browser.executeAsync( async (done) => {
|
|
9
|
-
const parent = document.getElementById("parent");
|
|
10
|
-
const child = document.getElementById("child1");
|
|
11
|
-
|
|
12
|
-
const parentInvalidate = parent._invalidate;
|
|
13
|
-
let parentInvalidated = false;
|
|
14
|
-
|
|
15
|
-
parent._invalidate = () => {
|
|
16
|
-
parentInvalidate.apply(parent, arguments);
|
|
17
|
-
parentInvalidated = true;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
child.prop1 = "a"; // child1(default slot) prop1 -> invalidates
|
|
21
|
-
|
|
22
|
-
await window.RenderScheduler.whenFinished();
|
|
23
|
-
|
|
24
|
-
return done(parentInvalidated);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
assert.strictEqual(res, true, "Parent invalidated");
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("Tests that changing a non-listenFor property of a child does not invalidate the parent", () => {
|
|
31
|
-
|
|
32
|
-
const res = browser.executeAsync( async (done) => {
|
|
33
|
-
const parent = document.getElementById("parent");
|
|
34
|
-
const child = document.getElementById("child1");
|
|
35
|
-
|
|
36
|
-
const parentInvalidate = parent._invalidate;
|
|
37
|
-
let parentInvalidated = false;
|
|
38
|
-
|
|
39
|
-
parent._invalidate = () => {
|
|
40
|
-
parentInvalidate.apply(parent, arguments);
|
|
41
|
-
parentInvalidated = true;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
child.prop2 = "b"; // child1(default slot) prop 2 -> does not
|
|
45
|
-
|
|
46
|
-
await window.RenderScheduler.whenFinished();
|
|
47
|
-
|
|
48
|
-
return done(parentInvalidated);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
assert.strictEqual(res, false, "Parent not invalidated");
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it("Tests that listenFor include works", () => {
|
|
55
|
-
|
|
56
|
-
const res = browser.executeAsync( async (done) => {
|
|
57
|
-
const parent = document.getElementById("parent");
|
|
58
|
-
const child = document.getElementById("child2");
|
|
59
|
-
|
|
60
|
-
const parentInvalidate = parent._invalidate;
|
|
61
|
-
let parentInvalidated = false;
|
|
62
|
-
|
|
63
|
-
parent._invalidate = () => {
|
|
64
|
-
parentInvalidate.apply(parent, arguments);
|
|
65
|
-
parentInvalidated = true;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
child.prop1 = "c"; // child2(items slot) prop1 invalidates
|
|
69
|
-
|
|
70
|
-
await window.RenderScheduler.whenFinished();
|
|
71
|
-
|
|
72
|
-
return done(parentInvalidated);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
assert.strictEqual(res, true, "Parent invalidated");
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("Tests that listenFor exclude works", () => {
|
|
79
|
-
|
|
80
|
-
const res = browser.executeAsync( async (done) => {
|
|
81
|
-
const parent = document.getElementById("parent");
|
|
82
|
-
const child = document.getElementById("child2");
|
|
83
|
-
|
|
84
|
-
const parentInvalidate = parent._invalidate;
|
|
85
|
-
let parentInvalidated = false;
|
|
86
|
-
|
|
87
|
-
parent._invalidate = () => {
|
|
88
|
-
parentInvalidate.apply(parent, arguments);
|
|
89
|
-
parentInvalidated = true;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
child.prop3 = "d"; //child2(items slot) prop3 does not
|
|
93
|
-
|
|
94
|
-
await window.RenderScheduler.whenFinished();
|
|
95
|
-
|
|
96
|
-
return done(parentInvalidated);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
assert.strictEqual(res, false, "Parent not invalidated");
|
|
100
|
-
});
|
|
101
|
-
});
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Metadata can be extended", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("When extending metadata, both own and extended entities exist in the resulting metadata", () => {
|
|
7
|
-
|
|
8
|
-
const res = browser.execute( () => {
|
|
9
|
-
|
|
10
|
-
const el = document.getElementById("genExt");
|
|
11
|
-
const m = el.constructor.getMetadata();
|
|
12
|
-
|
|
13
|
-
const ok = !!m.getProperties().strProp &&
|
|
14
|
-
!!m.getProperties().extProp &&
|
|
15
|
-
!!m.getSlots().default &&
|
|
16
|
-
!!m.getSlots().extSlot;
|
|
17
|
-
|
|
18
|
-
return ok;
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
assert.strictEqual(res, true, "Metadata properly extended");
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("When extending metadata, property defaultValue can be modified", () => {
|
|
25
|
-
|
|
26
|
-
const res = browser.execute( () => {
|
|
27
|
-
|
|
28
|
-
const el = document.getElementById("genExt");
|
|
29
|
-
const m = el.constructor.getMetadata();
|
|
30
|
-
|
|
31
|
-
const ok = !!m.getProperties().strProp &&
|
|
32
|
-
m.getProperties().strProp.defaultValue === "Ext";
|
|
33
|
-
|
|
34
|
-
return ok;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
assert.strictEqual(res, true, "Property defaultValue changed");
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Properties can only have values, restricted to their types", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("String property enforced to string", () => {
|
|
7
|
-
const el = browser.$("#gen");
|
|
8
|
-
el.setProperty("strProp", 5);
|
|
9
|
-
assert.strictEqual(el.getProperty("strProp"), "5", "String property is string");
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
});
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Properties and attributes convert to each other", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("Tests that properties with default values are initialized with the default value", () => {
|
|
7
|
-
const el = browser.$("#gen");
|
|
8
|
-
|
|
9
|
-
assert.strictEqual(el.getProperty("defaultValueProp"), "Hello", "defaultValueProp is properly initialized");
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it("Tests that prop-attr conversion works for string properties", () => {
|
|
13
|
-
const el = browser.$("#gen");
|
|
14
|
-
|
|
15
|
-
el.setProperty("strProp", "test1");
|
|
16
|
-
assert.strictEqual(el.getAttribute("str-prop"), "test1", "Attribute affected by property change");
|
|
17
|
-
|
|
18
|
-
el.setAttribute("str-prop", "test2");
|
|
19
|
-
assert.strictEqual(el.getProperty("strProp"), "test2", "Property affected by attribute change");
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("Tests that prop-attr conversion works for boolean properties", () => {
|
|
23
|
-
const el = browser.$("#gen");
|
|
24
|
-
|
|
25
|
-
el.setProperty("boolProp", true);
|
|
26
|
-
assert.strictEqual(el.getAttribute("bool-prop"), "", "Attribute affected by property change");
|
|
27
|
-
|
|
28
|
-
el.setProperty("boolProp", false);
|
|
29
|
-
assert.strictEqual(el.getAttribute("bool-prop"), null, "Attribute affected by property change");
|
|
30
|
-
|
|
31
|
-
el.setAttribute("bool-prop", "");
|
|
32
|
-
assert.strictEqual(el.getProperty("boolProp"), true, "Property affected by attribute change");
|
|
33
|
-
|
|
34
|
-
el.removeAttribute("bool-prop");
|
|
35
|
-
assert.strictEqual(el.getProperty("boolProp"), false, "Property affected by attribute change");
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("Tests that object properties have no attributes", () => {
|
|
39
|
-
const el = browser.$("#gen");
|
|
40
|
-
|
|
41
|
-
el.setProperty("objectProp", {});
|
|
42
|
-
assert.strictEqual(el.getAttribute("object-prop"), null, "Attribute not there");
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("Tests that array properties have no attributes", () => {
|
|
46
|
-
const el = browser.$("#gen");
|
|
47
|
-
|
|
48
|
-
el.setProperty("multiProp", ["a", "b"]);
|
|
49
|
-
assert.strictEqual(el.getAttribute("multi-prop"), null, "Attribute not there");
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("Tests that noAttribute properties have no attributes", () => {
|
|
53
|
-
const el = browser.$("#gen");
|
|
54
|
-
|
|
55
|
-
el.setProperty("noAttributeProp", "some value");
|
|
56
|
-
assert.strictEqual(el.getAttribute("no-attribute-prop"), null, "Attribute not there");
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("Tests that properties with default values do not automatically set attributes", () => {
|
|
60
|
-
const el = browser.$("#gen");
|
|
61
|
-
|
|
62
|
-
assert.strictEqual(el.getAttribute("default-value-prop"), null, "Attribute not there for defaultValueProp");
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("The framework can define web components", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("Tests that element's Shadow DOM is rendered if it has a template", () => {
|
|
7
|
-
const res = browser.execute(() => {
|
|
8
|
-
return document.getElementById("gen").shadowRoot;
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
assert.strictEqual(!!res, true, "Shadow root created");
|
|
12
|
-
assert.strictEqual(browser.$("#gen").shadow$("div>p").isExisting(), true, "Shadow root content created");
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it("Tests that element's Shadow DOM is not rendered if it has no template", () => {
|
|
16
|
-
const res = browser.execute(() => {
|
|
17
|
-
return document.getElementById("noShadow").shadowRoot;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
assert.strictEqual(!!res, false, "Shadow root not created");
|
|
21
|
-
});
|
|
22
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const assert = require("chai").assert;
|
|
2
|
-
|
|
3
|
-
describe("Slots work properly", () => {
|
|
4
|
-
browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
|
|
5
|
-
|
|
6
|
-
it("Tests that properties exist on the element for each slot", () => {
|
|
7
|
-
const res = browser.execute(() => {
|
|
8
|
-
const expectedValues = {};
|
|
9
|
-
|
|
10
|
-
const el = document.getElementById("withContent");
|
|
11
|
-
|
|
12
|
-
expectedValues.default = el.default.length > 0;
|
|
13
|
-
expectedValues.other = el.other.length === 2;
|
|
14
|
-
expectedValues.individual = el.individual.length === 2;
|
|
15
|
-
expectedValues.items = el.items.length === 2;
|
|
16
|
-
expectedValues.named = el.named === undefined;
|
|
17
|
-
|
|
18
|
-
return expectedValues;
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
assert.strictEqual(res.default, true, "There are elements in the default property");
|
|
22
|
-
assert.strictEqual(res.other, true, "There are 2 elements in the other property");
|
|
23
|
-
assert.strictEqual(res.individual, true, "There are 2 elements in the individual property");
|
|
24
|
-
assert.strictEqual(res.items, true, "There are 2 elements in the items property");
|
|
25
|
-
assert.strictEqual(res.named, true, "There is no named property as propertyName changed it to items");
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("Tests that individualSlots modifies the slot property of slotted children", () => {
|
|
29
|
-
assert.strictEqual(browser.$$("#withContent>[slot=individual]").length, 0, "There are no children with slot=individual");
|
|
30
|
-
assert.strictEqual(browser.$$("#withContent>[slot=individual-1]").length, 1, "The slot of the first child became individual-1");
|
|
31
|
-
assert.strictEqual(browser.$$("#withContent>[slot=individual-2]").length, 1, "The slot of the second child became individual-2");
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
let ponyfillTimer;
|
|
2
|
-
|
|
3
|
-
const ponyfillNeeded = () => !!window.CSSVarsPonyfill;
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Removes the "data-cssvars-group" attribute for all element styles and their respective out nodes.
|
|
7
|
-
* CSSVarsPonyfill has internal counters for "group" and "job" and running several instances of the ponyfill may lead to issues, since these counters are not shared
|
|
8
|
-
* Therefore we remove them for our "data-ui5-element-styles"
|
|
9
|
-
*
|
|
10
|
-
* @param rootElement
|
|
11
|
-
*/
|
|
12
|
-
const cleanPonyfillMetadata = (rootElement = document.head) => {
|
|
13
|
-
rootElement.querySelectorAll(`style[data-ui5-element-styles][data-cssvars="src"]`).forEach(tag => {
|
|
14
|
-
const group = tag.getAttribute("data-cssvars-group");
|
|
15
|
-
tag.removeAttribute("data-cssvars-group");
|
|
16
|
-
tag.disabled = false;
|
|
17
|
-
const outNode = rootElement.querySelector(`style[data-cssvars="out"][data-cssvars-group="${group}"]`);
|
|
18
|
-
if (outNode) {
|
|
19
|
-
outNode.removeAttribute("data-cssvars-group");
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const runPonyfill = () => {
|
|
25
|
-
ponyfillTimer = undefined;
|
|
26
|
-
|
|
27
|
-
cleanPonyfillMetadata();
|
|
28
|
-
window.CSSVarsPonyfill.cssVars({
|
|
29
|
-
rootElement: document.head,
|
|
30
|
-
variables: isCompact() ? getCompactModeVars() : {},
|
|
31
|
-
silent: true,
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const schedulePonyfill = () => {
|
|
36
|
-
if (!ponyfillTimer) {
|
|
37
|
-
ponyfillTimer = window.setTimeout(runPonyfill, 0);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const isCompact = () => {
|
|
42
|
-
const b = document.body;
|
|
43
|
-
return b.hasAttribute("data-ui5-compact-size") || b.classList.contains("ui5-content-density-compact") || b.classList.contains("sapUiSizeCompact");
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const getCompactModeVars = () => {
|
|
47
|
-
const compactVars = {};
|
|
48
|
-
[...document.querySelectorAll(`[data-ui5-theme-properties]`)].forEach(el => {
|
|
49
|
-
const cssContent = el.textContent.replace("\n", "");
|
|
50
|
-
let match;
|
|
51
|
-
const regExp = new RegExp("data-ui5-compact-size[^{]*{(.*?)}", "g");
|
|
52
|
-
while ((match = regExp.exec(cssContent)) !== null) { // eslint-disable-line
|
|
53
|
-
const compactCSS = match[1];
|
|
54
|
-
compactCSS.split(";").forEach(declaration => {
|
|
55
|
-
const pair = declaration.split(":");
|
|
56
|
-
compactVars[pair[0].trim()] = pair[1].trim();
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
return compactVars;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
export {
|
|
65
|
-
ponyfillNeeded,
|
|
66
|
-
runPonyfill,
|
|
67
|
-
schedulePonyfill,
|
|
68
|
-
};
|