@ui5/webcomponents-base 0.0.0-e7dd012d7 → 0.0.0-ec448881d

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.
Files changed (341) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +272 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +13 -11
  5. package/dist/AssetRegistry.js +8 -9
  6. package/dist/Boot.js +59 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +60 -4
  9. package/dist/CustomElementsScope.js +20 -98
  10. package/dist/CustomElementsScopeUtils.js +108 -0
  11. package/dist/DOMObserver.js +65 -0
  12. package/dist/Device.js +71 -773
  13. package/dist/EventProvider.js +30 -26
  14. package/dist/FeaturesRegistry.js +4 -1
  15. package/dist/FontFace.js +7 -95
  16. package/dist/InitialConfiguration.js +37 -21
  17. package/dist/Keys.js +98 -0
  18. package/dist/ManagedStyles.js +83 -0
  19. package/dist/MediaRange.js +109 -0
  20. package/{src/util/parseProperties.js → dist/PropertiesFileFormat.js} +6 -0
  21. package/dist/Render.js +175 -0
  22. package/dist/RenderScheduler.js +16 -138
  23. package/dist/Runtimes.js +107 -0
  24. package/dist/StaticArea.js +1 -29
  25. package/dist/StaticAreaItem.js +58 -65
  26. package/dist/SystemCSSVars.js +4 -25
  27. package/dist/UI5Element.js +315 -382
  28. package/dist/UI5ElementMetadata.js +132 -17
  29. package/dist/asset-registries/Icons.js +117 -14
  30. package/dist/asset-registries/Illustrations.js +30 -0
  31. package/dist/asset-registries/LocaleData.js +97 -68
  32. package/dist/asset-registries/Themes.js +29 -35
  33. package/dist/asset-registries/i18n.js +61 -50
  34. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  35. package/dist/config/Icons.js +52 -0
  36. package/dist/config/Language.js +18 -20
  37. package/dist/config/Theme.js +25 -0
  38. package/dist/css/BusyIndicator.css +80 -0
  39. package/dist/css/FontFace.css +75 -0
  40. package/dist/css/OverrideFontFace.css +32 -0
  41. package/dist/css/SystemCSSVars.css +17 -0
  42. package/dist/delegate/ItemNavigation.js +233 -201
  43. package/dist/delegate/ResizeHandler.js +78 -37
  44. package/dist/delegate/ScrollEnablement.js +49 -20
  45. package/dist/features/F6Navigation.js +106 -0
  46. package/dist/features/OpenUI5Enablement.js +119 -0
  47. package/dist/features/OpenUI5Support.js +41 -6
  48. package/dist/generated/AssetParameters.js +1 -1
  49. package/dist/generated/VersionInfo.js +10 -0
  50. package/dist/generated/css/BusyIndicator.css.js +5 -0
  51. package/dist/generated/css/FontFace.css.js +5 -0
  52. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  53. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  54. package/dist/i18nBundle.js +38 -4
  55. package/dist/isLegacyBrowser.js +3 -0
  56. package/dist/locale/applyDirection.js +6 -4
  57. package/dist/locale/directionChange.js +32 -0
  58. package/dist/locale/getEffectiveDir.js +28 -0
  59. package/dist/locale/languageChange.js +1 -1
  60. package/dist/renderer/LitRenderer.js +39 -18
  61. package/dist/renderer/directives/style-map.js +72 -0
  62. package/dist/renderer/executeTemplate.js +19 -2
  63. package/dist/resources/bundle.esm.js +15 -112
  64. package/dist/resources/bundle.esm.js.map +1 -1
  65. package/dist/sap/base/Log.js +241 -0
  66. package/dist/sap/base/assert.js +8 -0
  67. package/dist/sap/base/security/URLListValidator.js +148 -0
  68. package/dist/sap/base/security/encodeCSS.js +14 -0
  69. package/dist/sap/base/security/encodeXML.js +23 -0
  70. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  71. package/dist/sap/base/strings/toHex.js +8 -0
  72. package/dist/sap/base/util/now.js +7 -0
  73. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  74. package/dist/test-resources/assets/Themes.js +8 -8
  75. package/dist/test-resources/elements/Parent.js +6 -2
  76. package/dist/test-resources/elements/WithStaticArea.js +2 -1
  77. package/dist/test-resources/pages/AllTestElements.html +3 -3
  78. package/dist/test-resources/pages/Configuration.html +0 -2
  79. package/dist/test-resources/pages/ConfigurationScript.html +0 -2
  80. package/dist/test-resources/pages/i18n.html +2 -9
  81. package/dist/test-resources/specs/ConfigurationChange.spec.js +10 -8
  82. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  83. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  84. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  85. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  86. package/dist/test-resources/specs/StaticArea.spec.js +56 -12
  87. package/dist/test-resources/specs/Theming.spec.js +23 -10
  88. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  89. package/dist/test-resources/specs/UI5ElementLifecycle.js +17 -15
  90. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  91. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  92. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  93. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  94. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  95. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  96. package/dist/theming/CustomStyle.js +25 -5
  97. package/dist/theming/applyTheme.js +11 -16
  98. package/dist/theming/getConstructableStyle.js +7 -6
  99. package/dist/theming/getEffectiveLinksHrefs.js +27 -0
  100. package/dist/theming/getEffectiveStyle.js +24 -8
  101. package/dist/theming/getStylesString.js +4 -2
  102. package/dist/theming/getThemeDesignerTheme.js +25 -5
  103. package/dist/theming/preloadLinks.js +23 -0
  104. package/dist/types/CSSColor.js +9 -0
  105. package/dist/types/CalendarType.js +1 -1
  106. package/dist/types/DataType.js +13 -1
  107. package/dist/types/Float.js +4 -0
  108. package/dist/types/Integer.js +4 -0
  109. package/dist/types/InvisibleMessageMode.js +30 -0
  110. package/dist/types/ItemNavigationBehavior.js +2 -7
  111. package/dist/types/PopupState.js +1 -1
  112. package/dist/types/ValueState.js +1 -1
  113. package/dist/updateShadowRoot.js +30 -0
  114. package/dist/util/AriaLabelHelper.js +4 -4
  115. package/dist/util/Caret.js +45 -0
  116. package/dist/util/ColorConversion.js +370 -0
  117. package/dist/util/FocusableElements.js +22 -9
  118. package/dist/util/HTMLSanitizer.js +7 -0
  119. package/dist/util/InvisibleMessage.js +60 -0
  120. package/dist/util/PopupUtils.js +93 -0
  121. package/dist/util/SlotsHelper.js +43 -0
  122. package/dist/util/TabbableElements.js +5 -1
  123. package/dist/util/arraysAreEqual.js +15 -0
  124. package/dist/util/clamp.js +12 -0
  125. package/dist/util/createLinkInHead.js +19 -0
  126. package/dist/util/debounce.js +17 -0
  127. package/dist/util/escapeRegex.js +10 -0
  128. package/dist/util/generateHighlightedMarkup.js +42 -0
  129. package/dist/util/getActiveElement.js +11 -0
  130. package/dist/util/getClassCopy.js +10 -0
  131. package/dist/util/getEffectiveContentDensity.js +5 -0
  132. package/dist/util/getNormalizedTarget.js +16 -0
  133. package/dist/util/isElementInView.js +15 -0
  134. package/dist/util/isNodeHidden.js +1 -1
  135. package/dist/util/isNodeTabbable.js +4 -4
  136. package/hash.txt +1 -0
  137. package/index.js +1 -1
  138. package/lib/generate-asset-parameters/index.js +8 -5
  139. package/lib/generate-styles/index.js +26 -0
  140. package/lib/generate-version-info/index.js +32 -0
  141. package/package-scripts.js +30 -19
  142. package/package.json +19 -13
  143. package/src/AssetRegistry.js +8 -9
  144. package/src/Boot.js +59 -0
  145. package/src/CSP.js +59 -0
  146. package/src/CustomElementsRegistry.js +60 -4
  147. package/src/CustomElementsScope.js +20 -98
  148. package/src/CustomElementsScopeUtils.js +108 -0
  149. package/src/DOMObserver.js +65 -0
  150. package/src/Device.js +71 -773
  151. package/src/EventProvider.js +30 -26
  152. package/src/FeaturesRegistry.js +4 -1
  153. package/src/FontFace.js +7 -95
  154. package/src/InitialConfiguration.js +37 -21
  155. package/src/Keys.js +98 -0
  156. package/src/ManagedStyles.js +83 -0
  157. package/src/MediaRange.js +109 -0
  158. package/{dist/util/parseProperties.js → src/PropertiesFileFormat.js} +6 -0
  159. package/src/Render.js +175 -0
  160. package/src/RenderScheduler.js +16 -138
  161. package/src/Runtimes.js +107 -0
  162. package/src/StaticArea.js +1 -29
  163. package/src/StaticAreaItem.js +58 -65
  164. package/src/SystemCSSVars.js +4 -25
  165. package/src/UI5Element.js +315 -382
  166. package/src/UI5ElementMetadata.js +132 -17
  167. package/src/asset-registries/Icons.js +117 -14
  168. package/src/asset-registries/Illustrations.js +30 -0
  169. package/src/asset-registries/LocaleData.js +97 -68
  170. package/src/asset-registries/Themes.js +29 -35
  171. package/src/asset-registries/i18n.js +61 -50
  172. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  173. package/src/config/Icons.js +52 -0
  174. package/src/config/Language.js +18 -20
  175. package/src/config/Theme.js +25 -0
  176. package/src/css/BusyIndicator.css +80 -0
  177. package/src/css/FontFace.css +75 -0
  178. package/src/css/OverrideFontFace.css +32 -0
  179. package/src/css/SystemCSSVars.css +17 -0
  180. package/src/delegate/ItemNavigation.js +233 -201
  181. package/src/delegate/ResizeHandler.js +78 -37
  182. package/src/delegate/ScrollEnablement.js +49 -20
  183. package/src/features/F6Navigation.js +106 -0
  184. package/src/features/OpenUI5Enablement.js +119 -0
  185. package/src/features/OpenUI5Support.js +41 -6
  186. package/src/i18nBundle.js +38 -4
  187. package/src/isLegacyBrowser.js +3 -0
  188. package/src/locale/applyDirection.js +6 -4
  189. package/src/locale/directionChange.js +32 -0
  190. package/src/locale/getEffectiveDir.js +28 -0
  191. package/src/locale/languageChange.js +1 -1
  192. package/src/renderer/LitRenderer.js +39 -18
  193. package/src/renderer/directives/style-map.js +72 -0
  194. package/src/renderer/executeTemplate.js +19 -2
  195. package/src/theming/CustomStyle.js +25 -5
  196. package/src/theming/applyTheme.js +11 -16
  197. package/src/theming/getConstructableStyle.js +7 -6
  198. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  199. package/src/theming/getEffectiveStyle.js +24 -8
  200. package/src/theming/getStylesString.js +4 -2
  201. package/src/theming/getThemeDesignerTheme.js +25 -5
  202. package/src/theming/preloadLinks.js +23 -0
  203. package/src/types/CSSColor.js +9 -0
  204. package/src/types/CalendarType.js +1 -1
  205. package/src/types/DataType.js +13 -1
  206. package/src/types/Float.js +4 -0
  207. package/src/types/Integer.js +4 -0
  208. package/src/types/InvisibleMessageMode.js +30 -0
  209. package/src/types/ItemNavigationBehavior.js +2 -7
  210. package/src/types/PopupState.js +1 -1
  211. package/src/types/ValueState.js +1 -1
  212. package/src/updateShadowRoot.js +30 -0
  213. package/src/util/AriaLabelHelper.js +4 -4
  214. package/src/util/Caret.js +45 -0
  215. package/src/util/ColorConversion.js +370 -0
  216. package/src/util/FocusableElements.js +22 -9
  217. package/src/util/HTMLSanitizer.js +7 -0
  218. package/src/util/InvisibleMessage.js +60 -0
  219. package/src/util/PopupUtils.js +93 -0
  220. package/src/util/SlotsHelper.js +43 -0
  221. package/src/util/TabbableElements.js +5 -1
  222. package/src/util/arraysAreEqual.js +15 -0
  223. package/src/util/clamp.js +12 -0
  224. package/src/util/createLinkInHead.js +19 -0
  225. package/src/util/debounce.js +17 -0
  226. package/src/util/escapeRegex.js +10 -0
  227. package/src/util/generateHighlightedMarkup.js +42 -0
  228. package/src/util/getActiveElement.js +11 -0
  229. package/src/util/getClassCopy.js +10 -0
  230. package/src/util/getEffectiveContentDensity.js +5 -0
  231. package/src/util/getNormalizedTarget.js +16 -0
  232. package/src/util/isElementInView.js +15 -0
  233. package/src/util/isNodeHidden.js +1 -1
  234. package/src/util/isNodeTabbable.js +4 -4
  235. package/used-modules.txt +10 -0
  236. package/bundle.es5.js +0 -28
  237. package/dist/SVGIconRegistry.js +0 -73
  238. package/dist/boot.js +0 -34
  239. package/dist/compatibility/DOMObserver.js +0 -62
  240. package/dist/compatibility/patchNodeValue.js +0 -24
  241. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  242. package/dist/config/AssetsPath.js +0 -17
  243. package/dist/delegate/CustomResize.js +0 -78
  244. package/dist/delegate/NativeResize.js +0 -45
  245. package/dist/features/PropertiesFormatSupport.js +0 -8
  246. package/dist/features/browsersupport/Edge.js +0 -6
  247. package/dist/features/browsersupport/IE11.js +0 -42
  248. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  249. package/dist/renderer/ifDefined.js +0 -21
  250. package/dist/renderer/scopeHTML.js +0 -32
  251. package/dist/resources/bundle.es5.js +0 -212
  252. package/dist/resources/bundle.es5.js.map +0 -1
  253. package/dist/theming/CSSVarsPonyfill.js +0 -68
  254. package/dist/theming/adaptCSSForIE.js +0 -95
  255. package/dist/theming/createComponentStyleTag.js +0 -54
  256. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  257. package/dist/thirdparty/Array.from.js +0 -16
  258. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  259. package/dist/thirdparty/Array.prototype.find.js +0 -46
  260. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  261. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  262. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  263. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  264. package/dist/thirdparty/Number.isInteger.js +0 -5
  265. package/dist/thirdparty/Number.isNaN.js +0 -1
  266. package/dist/thirdparty/Number.parseFloat.js +0 -1
  267. package/dist/thirdparty/Number.parseInt.js +0 -1
  268. package/dist/thirdparty/Object.assign.js +0 -31
  269. package/dist/thirdparty/Object.entries.js +0 -11
  270. package/dist/thirdparty/Symbol.js +0 -2
  271. package/dist/thirdparty/WeakSet.js +0 -27
  272. package/dist/thirdparty/es6-string-methods.js +0 -182
  273. package/dist/thirdparty/events-polyfills.js +0 -89
  274. package/dist/thirdparty/fetch.js +0 -1
  275. package/dist/thirdparty/template.js +0 -600
  276. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  277. package/dist/util/EffectiveAssetPath.js +0 -27
  278. package/dist/util/encodeCSS.js +0 -24
  279. package/dist/util/isSlot.js +0 -3
  280. package/dist/webcomponentsjs/LICENSE.md +0 -19
  281. package/dist/webcomponentsjs/README.md +0 -229
  282. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  283. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  284. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  285. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  286. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  287. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  288. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  289. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  290. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  291. package/dist/webcomponentsjs/package.json +0 -46
  292. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  293. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  294. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  295. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  296. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  297. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  298. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  299. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  300. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  301. package/src/SVGIconRegistry.js +0 -73
  302. package/src/boot.js +0 -34
  303. package/src/compatibility/DOMObserver.js +0 -62
  304. package/src/compatibility/patchNodeValue.js +0 -24
  305. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  306. package/src/config/AssetsPath.js +0 -17
  307. package/src/delegate/CustomResize.js +0 -78
  308. package/src/delegate/NativeResize.js +0 -45
  309. package/src/features/PropertiesFormatSupport.js +0 -8
  310. package/src/features/browsersupport/Edge.js +0 -6
  311. package/src/features/browsersupport/IE11.js +0 -42
  312. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  313. package/src/renderer/ifDefined.js +0 -21
  314. package/src/renderer/scopeHTML.js +0 -32
  315. package/src/theming/CSSVarsPonyfill.js +0 -68
  316. package/src/theming/adaptCSSForIE.js +0 -95
  317. package/src/theming/createComponentStyleTag.js +0 -54
  318. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  319. package/src/thirdparty/Array.from.js +0 -16
  320. package/src/thirdparty/Array.prototype.fill.js +0 -44
  321. package/src/thirdparty/Array.prototype.find.js +0 -46
  322. package/src/thirdparty/Array.prototype.includes.js +0 -51
  323. package/src/thirdparty/Element.prototype.closest.js +0 -11
  324. package/src/thirdparty/Element.prototype.matches.js +0 -6
  325. package/src/thirdparty/Map.prototype.keys.js +0 -9
  326. package/src/thirdparty/Number.isInteger.js +0 -5
  327. package/src/thirdparty/Number.isNaN.js +0 -1
  328. package/src/thirdparty/Number.parseFloat.js +0 -1
  329. package/src/thirdparty/Number.parseInt.js +0 -1
  330. package/src/thirdparty/Object.assign.js +0 -31
  331. package/src/thirdparty/Object.entries.js +0 -11
  332. package/src/thirdparty/Symbol.js +0 -2
  333. package/src/thirdparty/WeakSet.js +0 -27
  334. package/src/thirdparty/es6-string-methods.js +0 -182
  335. package/src/thirdparty/events-polyfills.js +0 -89
  336. package/src/thirdparty/fetch.js +0 -1
  337. package/src/thirdparty/template.js +0 -600
  338. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  339. package/src/util/EffectiveAssetPath.js +0 -27
  340. package/src/util/encodeCSS.js +0 -24
  341. package/src/util/isSlot.js +0 -3
@@ -1,228 +1,214 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Invalidation works", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("Tests that changing a property invalidates", () => {
8
+ it("Tests that changing a property invalidates", async () => {
7
9
 
8
- const res = browser.executeAsync( async (done) => {
10
+ const res = await browser.executeAsync( async (done) => {
9
11
 
10
12
  const el = document.getElementById("gen");
11
13
 
12
14
  // Exactly 1 invalidation for each property change
13
15
  let invalidations = 0;
14
16
 
15
- const original = el._invalidate;
16
- el._invalidate = () => {
17
- original.apply(el, arguments);
17
+ el.onInvalidation = () => {
18
18
  invalidations++;
19
19
  };
20
20
 
21
21
  el.strProp = "new value";
22
22
  el.boolProp = true;
23
23
 
24
- await window.RenderScheduler.whenFinished();
24
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
25
25
 
26
- return done(invalidations);
26
+ done(invalidations);
27
27
  });
28
28
 
29
29
  assert.strictEqual(res, 2, "Invalidated 2 times");
30
30
  });
31
31
 
32
- it("Tests that setting a property to the same value does not invalidate", () => {
32
+ it("Tests that setting a property to the same value does not invalidate", async () => {
33
33
 
34
- const res = browser.executeAsync( async (done) => {
34
+ const res = await browser.executeAsync( async (done) => {
35
35
  const text = "some value";
36
36
 
37
37
  const el = document.getElementById("gen");
38
38
  el.strProp = text;
39
- await window.RenderScheduler.whenFinished();
39
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
40
40
 
41
41
  let invalidations = 0;
42
42
 
43
- const original = el._invalidate;
44
- el._invalidate = () => {
45
- original.apply(el, arguments);
43
+ el.onInvalidation = () => {
46
44
  invalidations++;
47
45
  };
48
46
 
49
47
  el.strProp = text;
50
48
 
51
- await window.RenderScheduler.whenFinished();
49
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
52
50
 
53
- return done(invalidations);
51
+ done(invalidations);
54
52
  });
55
53
 
56
54
  assert.strictEqual(res, 0, "Not invalidated");
57
55
  });
58
56
 
59
- it("Tests that setting a property of type Object always invalidates", () => {
57
+ it("Tests that setting a property of type Object always invalidates", async () => {
60
58
 
61
- const res = browser.executeAsync( async (done) => {
59
+ const res = await browser.executeAsync( async (done) => {
62
60
  const obj = {};
63
61
  const otherObj = {};
64
62
 
65
63
  const el = document.getElementById("gen");
66
64
  el.objectProp = obj;
67
- await window.RenderScheduler.whenFinished();
65
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
68
66
 
69
67
  let invalidations = 0;
70
68
 
71
- const original = el._invalidate;
72
- el._invalidate = () => {
73
- original.apply(el, arguments);
69
+ el.onInvalidation = () => {
74
70
  invalidations++;
75
71
  };
76
72
 
77
73
  el.objectProp = otherObj;
78
74
 
79
- await window.RenderScheduler.whenFinished();
75
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
80
76
 
81
- return done(invalidations);
77
+ done(invalidations);
82
78
  });
83
79
 
84
80
  assert.strictEqual(res, 1, "Invalidated");
85
81
  });
86
82
 
87
- it("Tests that setting an array property always invalidates", () => {
83
+ it("Tests that setting an array property always invalidates", async () => {
88
84
 
89
- const res = browser.executeAsync( async (done) => {
85
+ const res = await browser.executeAsync( async (done) => {
90
86
  const arr = [];
91
87
  const otherArr = [];
92
88
 
93
89
  const el = document.getElementById("gen");
94
90
  el.multiProp = arr;
95
- await window.RenderScheduler.whenFinished();
91
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
96
92
 
97
93
  let invalidations = 0;
98
94
 
99
- const original = el._invalidate;
100
- el._invalidate = () => {
101
- original.apply(el, arguments);
95
+ el.onInvalidation = () => {
102
96
  invalidations++;
103
97
  };
104
98
 
105
99
  el.multiProp = otherArr;
106
100
 
107
- await window.RenderScheduler.whenFinished();
101
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
108
102
 
109
- return done(invalidations);
103
+ done(invalidations);
110
104
  });
111
105
 
112
106
  assert.strictEqual(res, 1, "Invalidated");
113
107
  });
114
108
 
115
- it("Tests that adding a child invalidates", () => {
109
+ it("Tests that adding a child invalidates", async () => {
116
110
 
117
- const res = browser.executeAsync( async (done) => {
111
+ const res = await browser.executeAsync( async (done) => {
118
112
 
119
113
  const el = document.getElementById("gen");
120
114
 
121
115
  // Number of invalidations may vary with children/slots count, so just check for invalidation
122
116
  let invalidated = false;
123
117
 
124
- const original = el._invalidate;
125
- el._invalidate = () => {
126
- original.apply(el, arguments);
118
+ el.onInvalidation = () => {
127
119
  invalidated = true;
128
120
  };
129
121
 
130
122
  const div = document.createElement("div");
131
123
  el.appendChild(div);
132
124
 
133
- await window.RenderScheduler.whenFinished();
125
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
134
126
 
135
- return done(invalidated);
127
+ done(invalidated);
136
128
  });
137
129
 
138
130
  assert.strictEqual(res, true, "Invalidated");
139
131
  });
140
132
 
141
- it("Tests that removing a child invalidates", () => {
133
+ it("Tests that removing a child invalidates", async () => {
142
134
 
143
- const res = browser.executeAsync( async (done) => {
135
+ const res = await browser.executeAsync( async (done) => {
144
136
 
145
137
  const el = document.getElementById("gen");
146
138
  const div = document.createElement("div");
147
139
  el.appendChild(div);
148
140
 
149
- await window.RenderScheduler.whenFinished();
141
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
150
142
 
151
143
  let invalidated = false;
152
144
 
153
- const original = el._invalidate;
154
- el._invalidate = () => {
155
- original.apply(el, arguments);
145
+ el.onInvalidation = () => {
156
146
  invalidated = true;
157
147
  };
158
148
 
159
149
  el.removeChild(div);
160
150
 
161
- await window.RenderScheduler.whenFinished();
151
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
162
152
 
163
- return done(invalidated);
153
+ done(invalidated);
164
154
  });
165
155
 
166
156
  assert.strictEqual(res, true, "Invalidated");
167
157
  });
168
158
 
169
- it("Tests that modifying textContent invalidates", () => {
159
+ it("Tests that modifying textContent invalidates", async () => {
170
160
 
171
- const res = browser.executeAsync( async (done) => {
161
+ const res = await browser.executeAsync( async (done) => {
172
162
 
173
163
  const el = document.getElementById("gen");
174
164
  el.textContent = "test";
175
- await window.RenderScheduler.whenFinished();
165
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
176
166
 
177
167
  // Number of invalidations may vary with children/slots count, so just check for invalidation
178
168
  let invalidated = false;
179
169
 
180
- const original = el._invalidate;
181
- el._invalidate = () => {
182
- original.apply(el, arguments);
170
+ el.onInvalidation = () => {
183
171
  invalidated = true;
184
172
  };
185
173
 
186
174
  el.textContent = "test2";
187
175
 
188
- await window.RenderScheduler.whenFinished();
176
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
189
177
 
190
- return done(invalidated);
178
+ done(invalidated);
191
179
  });
192
180
 
193
181
  assert.strictEqual(res, true, "Invalidated");
194
182
  });
195
183
 
196
- it("Tests that modifying nodeValue invalidates", () => {
184
+ it("Tests that modifying nodeValue invalidates", async () => {
197
185
 
198
- const res = browser.executeAsync( async (done) => {
186
+ const res = await browser.executeAsync( async (done) => {
199
187
 
200
188
  const el = document.getElementById("gen");
201
189
  el.textContent = "test";
202
- await window.RenderScheduler.whenFinished();
190
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
203
191
 
204
192
  // Number of invalidations may vary with children/slots count, so just check for invalidation
205
193
  let invalidated = false;
206
194
 
207
- const original = el._invalidate;
208
- el._invalidate = () => {
209
- original.apply(el, arguments);
195
+ el.onInvalidation = () => {
210
196
  invalidated = true;
211
197
  };
212
198
 
213
199
  el.childNodes[0].nodeValue = "test2";
214
200
 
215
- await window.RenderScheduler.whenFinished();
201
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
216
202
 
217
- return done(invalidated);
203
+ done(invalidated);
218
204
  });
219
205
 
220
206
  assert.strictEqual(res, true, "Invalidated");
221
207
  });
222
208
 
223
- it("Tests that multiple invalidations result in a single rendering", () => {
209
+ it("Tests that multiple invalidations result in a single rendering", async () => {
224
210
 
225
- const res = browser.executeAsync( async (done) => {
211
+ const res = await browser.executeAsync( async (done) => {
226
212
 
227
213
  const el = document.getElementById("gen");
228
214
 
@@ -231,9 +217,7 @@ describe("Invalidation works", () => {
231
217
  rendering: 0,
232
218
  };
233
219
 
234
- const originalInvalidate = el._invalidate;
235
- el._invalidate = () => {
236
- originalInvalidate.apply(el, arguments);
220
+ el.onInvalidation = () => {
237
221
  operations.invalidation++;
238
222
  };
239
223
 
@@ -246,9 +230,9 @@ describe("Invalidation works", () => {
246
230
  el.strProp = "new";
247
231
  el.strProp = "newer";
248
232
 
249
- await window.RenderScheduler.whenFinished();
233
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
250
234
 
251
- return done(operations);
235
+ done(operations);
252
236
  });
253
237
 
254
238
  assert.strictEqual(res.invalidation, 2, "Invalidated 2 times");
@@ -1,11 +1,13 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Lifecycle works", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("Tests element creation callbacks", () => {
8
+ it("Tests element creation callbacks", async () => {
7
9
 
8
- const res = browser.executeAsync( async (done) => {
10
+ const res = await browser.executeAsync( async (done) => {
9
11
  const creationCallbacks = ["onBeforeRendering", "onAfterRendering", "onEnterDOM"];
10
12
  const calledCallbacks = [];
11
13
 
@@ -20,9 +22,9 @@ describe("Lifecycle works", () => {
20
22
  });
21
23
 
22
24
  document.body.appendChild(el);
23
- await window.RenderScheduler.whenFinished();
25
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
24
26
 
25
- return done(calledCallbacks);
27
+ done(calledCallbacks);
26
28
  });
27
29
 
28
30
  assert.strictEqual(res.length, 3, "All 3 callbacks called");
@@ -31,16 +33,16 @@ describe("Lifecycle works", () => {
31
33
  assert.strictEqual(res[2], "onEnterDOM", "onEnterDOM called third");
32
34
  });
33
35
 
34
- it("Tests element invalidation callbacks", () => {
36
+ it("Tests element invalidation callbacks", async () => {
35
37
 
36
- const res = browser.executeAsync( async (done) => {
38
+ const res = await browser.executeAsync( async (done) => {
37
39
  const invalidationCallbacks = ["onBeforeRendering", "onAfterRendering"];
38
40
  const calledCallbacks = [];
39
41
 
40
42
  const el = document.createElement("ui5-test-generic");
41
43
  document.body.appendChild(el);
42
44
 
43
- await window.RenderScheduler.whenFinished();
45
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
44
46
 
45
47
  el.strProp = "some string";
46
48
 
@@ -52,9 +54,9 @@ describe("Lifecycle works", () => {
52
54
  };
53
55
  });
54
56
 
55
- await window.RenderScheduler.whenFinished();
57
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
56
58
 
57
- return done(calledCallbacks);
59
+ done(calledCallbacks);
58
60
  });
59
61
 
60
62
  assert.strictEqual(res.length, 2, "All 2 callbacks called");
@@ -62,9 +64,9 @@ describe("Lifecycle works", () => {
62
64
  assert.strictEqual(res[1], "onAfterRendering", "onAfterRendering called second");
63
65
  });
64
66
 
65
- it("Tests element destruction callback", () => {
67
+ it("Tests element destruction callback", async () => {
66
68
 
67
- const res = browser.executeAsync( async (done) => {
69
+ const res = await browser.executeAsync( async (done) => {
68
70
  const destructionCallbacks = ["onExitDOM"];
69
71
  const calledCallbacks = [];
70
72
 
@@ -80,13 +82,13 @@ describe("Lifecycle works", () => {
80
82
 
81
83
  document.body.appendChild(el);
82
84
 
83
- await window.RenderScheduler.whenFinished(); // Must wait, otherwise onExitDOM won't be called
85
+ await window["sap-ui-webcomponents-bundle"].renderFinished(); // Must wait, otherwise onExitDOM won't be called
84
86
 
85
87
  document.body.removeChild(el);
86
88
 
87
- await window.RenderScheduler.whenFinished();
89
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
88
90
 
89
- return done(calledCallbacks);
91
+ done(calledCallbacks);
90
92
  });
91
93
 
92
94
  assert.strictEqual(res.length, 1, "Only 1 callback was called");
@@ -1,101 +1,75 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
- describe("Metadata slot listenFor works", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
3
+ describe("Metadata slot invalidateOnChildChange works", () => {
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("Tests that changing a listenFor property of a child invalidates the parent", () => {
8
+ it("Tests that changing a monitored property of a child invalidates the parent", async () => {
7
9
 
8
- const res = browser.executeAsync( async (done) => {
10
+ const res = await browser.executeAsync( async (done) => {
9
11
  const parent = document.getElementById("parent");
10
12
  const child = document.getElementById("child1");
11
13
 
12
- const parentInvalidate = parent._invalidate;
13
14
  let parentInvalidated = false;
14
15
 
15
- parent._invalidate = () => {
16
- parentInvalidate.apply(parent, arguments);
16
+ parent.onInvalidation = () => {
17
17
  parentInvalidated = true;
18
18
  };
19
19
 
20
20
  child.prop1 = "a"; // child1(default slot) prop1 -> invalidates
21
21
 
22
- await window.RenderScheduler.whenFinished();
22
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
23
23
 
24
- return done(parentInvalidated);
24
+ done(parentInvalidated);
25
25
  });
26
26
 
27
27
  assert.strictEqual(res, true, "Parent invalidated");
28
28
  });
29
29
 
30
- it("Tests that changing a non-listenFor property of a child does not invalidate the parent", () => {
30
+ it("Tests that changing a non-monitored property of a child does not invalidate the parent", async () => {
31
31
 
32
- const res = browser.executeAsync( async (done) => {
32
+ const res = await browser.executeAsync( async (done) => {
33
33
  const parent = document.getElementById("parent");
34
34
  const child = document.getElementById("child1");
35
35
 
36
- const parentInvalidate = parent._invalidate;
37
36
  let parentInvalidated = false;
38
37
 
39
- parent._invalidate = () => {
40
- parentInvalidate.apply(parent, arguments);
38
+ parent.onInvalidation = () => {
41
39
  parentInvalidated = true;
42
40
  };
43
41
 
44
42
  child.prop2 = "b"; // child1(default slot) prop 2 -> does not
45
43
 
46
- await window.RenderScheduler.whenFinished();
44
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
47
45
 
48
- return done(parentInvalidated);
46
+ done(parentInvalidated);
49
47
  });
50
48
 
51
49
  assert.strictEqual(res, false, "Parent not invalidated");
52
50
  });
53
51
 
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", () => {
52
+ it("Tests that listening for all properties works", async () => {
79
53
 
80
- const res = browser.executeAsync( async (done) => {
54
+ const res = await browser.executeAsync( async (done) => {
81
55
  const parent = document.getElementById("parent");
82
56
  const child = document.getElementById("child2");
83
57
 
84
- const parentInvalidate = parent._invalidate;
85
- let parentInvalidated = false;
58
+ let parentInvalidatedCount = 0;
86
59
 
87
- parent._invalidate = () => {
88
- parentInvalidate.apply(parent, arguments);
89
- parentInvalidated = true;
60
+ parent.onInvalidation = () => {
61
+ parentInvalidatedCount++;
90
62
  };
91
63
 
92
- child.prop3 = "d"; //child2(items slot) prop3 does not
64
+ child.prop1 = "c";
65
+ child.prop2 = "c";
66
+ child.prop3 = "c";
93
67
 
94
- await window.RenderScheduler.whenFinished();
68
+ await window["sap-ui-webcomponents-bundle"].renderFinished();
95
69
 
96
- return done(parentInvalidated);
70
+ done(parentInvalidatedCount);
97
71
  });
98
72
 
99
- assert.strictEqual(res, false, "Parent not invalidated");
73
+ assert.strictEqual(res, 3, "Parent invalidated 3 times");
100
74
  });
101
75
  });
@@ -1,11 +1,13 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Metadata can be extended", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("When extending metadata, both own and extended entities exist in the resulting metadata", () => {
8
+ it("When extending metadata, both own and extended entities exist in the resulting metadata", async () => {
7
9
 
8
- const res = browser.execute( () => {
10
+ const res = await browser.executeAsync(done => {
9
11
 
10
12
  const el = document.getElementById("genExt");
11
13
  const m = el.constructor.getMetadata();
@@ -15,15 +17,15 @@ describe("Metadata can be extended", () => {
15
17
  !!m.getSlots().default &&
16
18
  !!m.getSlots().extSlot;
17
19
 
18
- return ok;
20
+ done(ok);
19
21
  });
20
22
 
21
23
  assert.strictEqual(res, true, "Metadata properly extended");
22
24
  });
23
25
 
24
- it("When extending metadata, property defaultValue can be modified", () => {
26
+ it("When extending metadata, property defaultValue can be modified", async () => {
25
27
 
26
- const res = browser.execute( () => {
28
+ const res = await browser.executeAsync(done => {
27
29
 
28
30
  const el = document.getElementById("genExt");
29
31
  const m = el.constructor.getMetadata();
@@ -31,7 +33,7 @@ describe("Metadata can be extended", () => {
31
33
  const ok = !!m.getProperties().strProp &&
32
34
  m.getProperties().strProp.defaultValue === "Ext";
33
35
 
34
- return ok;
36
+ done(ok);
35
37
  });
36
38
 
37
39
  assert.strictEqual(res, true, "Property defaultValue changed");
@@ -1,12 +1,14 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Properties can only have values, restricted to their types", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
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");
8
+ it("String property enforced to string", async () => {
9
+ const el = await browser.$("#gen");
10
+ await el.setProperty("strProp", 5);
11
+ assert.strictEqual(await el.getProperty("strProp"), "5", "String property is string");
10
12
  });
11
13
 
12
14
  });