@ui5/webcomponents-base 0.0.0-39bd3067f → 0.0.0-4180fe799

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 (329) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +158 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +16 -7
  5. package/dist/AssetRegistry.js +8 -6
  6. package/dist/Boot.js +43 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +24 -8
  9. package/dist/CustomElementsScope.js +108 -0
  10. package/dist/DOMObserver.js +65 -0
  11. package/dist/Device.js +62 -778
  12. package/dist/EventProvider.js +38 -26
  13. package/dist/FontFace.js +19 -62
  14. package/dist/InitialConfiguration.js +43 -8
  15. package/dist/Keys.js +89 -2
  16. package/dist/ManagedStyles.js +83 -0
  17. package/dist/MediaRange.js +109 -0
  18. package/dist/PropertiesFileFormat.js +95 -0
  19. package/dist/Render.js +175 -0
  20. package/dist/RenderQueue.js +41 -17
  21. package/dist/RenderScheduler.js +24 -126
  22. package/dist/StaticArea.js +1 -39
  23. package/dist/StaticAreaItem.js +56 -63
  24. package/dist/SystemCSSVars.js +10 -0
  25. package/dist/Theming.js +2 -1
  26. package/dist/UI5Element.js +421 -301
  27. package/dist/UI5ElementMetadata.js +165 -19
  28. package/dist/asset-registries/Icons.js +129 -14
  29. package/dist/asset-registries/Illustrations.js +30 -0
  30. package/dist/asset-registries/LocaleData.js +99 -65
  31. package/dist/asset-registries/Themes.js +24 -33
  32. package/dist/asset-registries/i18n.js +72 -30
  33. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  34. package/dist/config/AnimationMode.js +11 -1
  35. package/dist/config/Language.js +58 -2
  36. package/dist/config/Theme.js +14 -0
  37. package/dist/css/FontFace.css +45 -0
  38. package/dist/css/OverrideFontFace.css +32 -0
  39. package/dist/css/SystemCSSVars.css +17 -0
  40. package/dist/delegate/ItemNavigation.js +244 -171
  41. package/dist/delegate/ResizeHandler.js +78 -38
  42. package/dist/delegate/ScrollEnablement.js +49 -20
  43. package/dist/features/OpenUI5Support.js +42 -7
  44. package/dist/generated/AssetParameters.js +1 -1
  45. package/dist/generated/css/FontFace.css.js +5 -0
  46. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  47. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  48. package/dist/getSharedResource.js +30 -0
  49. package/dist/i18nBundle.js +58 -5
  50. package/dist/isLegacyBrowser.js +3 -0
  51. package/dist/locale/RTLAwareRegistry.js +14 -0
  52. package/dist/locale/applyDirection.js +17 -0
  53. package/dist/locale/directionChange.js +32 -0
  54. package/dist/locale/getEffectiveDir.js +28 -0
  55. package/dist/locale/getLocale.js +12 -2
  56. package/dist/locale/languageChange.js +22 -0
  57. package/dist/renderer/LitRenderer.js +26 -7
  58. package/dist/renderer/directives/style-map.js +72 -0
  59. package/dist/renderer/executeTemplate.js +17 -0
  60. package/dist/resources/bundle.esm.js +17 -109
  61. package/dist/resources/bundle.esm.js.map +1 -1
  62. package/dist/sap/base/Log.js +241 -0
  63. package/dist/sap/base/assert.js +8 -0
  64. package/dist/sap/base/security/URLListValidator.js +148 -0
  65. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  66. package/dist/sap/base/util/now.js +7 -0
  67. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  68. package/dist/test-resources/assets/Themes.js +10 -6
  69. package/dist/test-resources/elements/Parent.js +6 -2
  70. package/dist/test-resources/elements/WithStaticArea.js +2 -1
  71. package/dist/test-resources/pages/AllTestElements.html +3 -3
  72. package/dist/test-resources/pages/Configuration.html +0 -2
  73. package/dist/test-resources/pages/ConfigurationScript.html +1 -3
  74. package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
  75. package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
  76. package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
  77. package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
  78. package/dist/test-resources/pages/i18n.html +33 -0
  79. package/dist/test-resources/specs/ConfigurationChange.spec.js +11 -9
  80. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  81. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  82. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  83. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  84. package/dist/test-resources/specs/StaticArea.spec.js +56 -12
  85. package/dist/test-resources/specs/Theming.spec.js +12 -10
  86. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  87. package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
  88. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  89. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  90. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  91. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  92. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  93. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  94. package/dist/theming/CustomStyle.js +28 -7
  95. package/dist/theming/ThemeLoaded.js +22 -0
  96. package/dist/theming/applyTheme.js +7 -13
  97. package/dist/theming/getConstructableStyle.js +15 -10
  98. package/dist/theming/getEffectiveLinksHrefs.js +20 -0
  99. package/dist/theming/getEffectiveStyle.js +23 -8
  100. package/dist/theming/getStylesString.js +15 -0
  101. package/dist/theming/getThemeDesignerTheme.js +2 -1
  102. package/dist/theming/preloadLinks.js +23 -0
  103. package/dist/types/CSSColor.js +9 -0
  104. package/dist/types/CalendarType.js +1 -1
  105. package/dist/types/DataType.js +13 -1
  106. package/dist/types/Float.js +14 -0
  107. package/dist/types/Integer.js +4 -0
  108. package/dist/types/InvisibleMessageMode.js +30 -0
  109. package/dist/types/ItemNavigationBehavior.js +2 -7
  110. package/dist/types/NavigationMode.js +1 -0
  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 +41 -0
  115. package/dist/util/Caret.js +45 -0
  116. package/dist/util/ColorConversion.js +370 -0
  117. package/dist/util/FocusableElements.js +25 -8
  118. package/dist/util/HTMLSanitizer.js +7 -0
  119. package/dist/util/InvisibleMessage.js +58 -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/encodeCSS.js +24 -0
  128. package/dist/util/getActiveElement.js +11 -0
  129. package/dist/util/getClassCopy.js +10 -0
  130. package/dist/util/getEffectiveContentDensity.js +5 -0
  131. package/dist/util/getSingletonElementInstance.js +13 -0
  132. package/dist/util/isElementInView.js +15 -0
  133. package/dist/util/isNodeHidden.js +1 -5
  134. package/dist/util/isNodeTabbable.js +4 -4
  135. package/dist/util/isValidPropertyName.js +9 -3
  136. package/dist/util/setToArray.js +10 -0
  137. package/hash.txt +1 -0
  138. package/index.js +1 -1
  139. package/lib/generate-asset-parameters/index.js +0 -1
  140. package/lib/generate-styles/index.js +18 -0
  141. package/package-scripts.js +37 -19
  142. package/package.json +19 -12
  143. package/src/AssetRegistry.js +8 -6
  144. package/src/Boot.js +43 -0
  145. package/src/CSP.js +59 -0
  146. package/src/CustomElementsRegistry.js +24 -8
  147. package/src/CustomElementsScope.js +108 -0
  148. package/src/DOMObserver.js +65 -0
  149. package/src/Device.js +62 -778
  150. package/src/EventProvider.js +38 -26
  151. package/src/FontFace.js +19 -62
  152. package/src/InitialConfiguration.js +43 -8
  153. package/src/Keys.js +89 -2
  154. package/src/ManagedStyles.js +83 -0
  155. package/src/MediaRange.js +109 -0
  156. package/src/PropertiesFileFormat.js +95 -0
  157. package/src/Render.js +175 -0
  158. package/src/RenderQueue.js +41 -17
  159. package/src/RenderScheduler.js +24 -126
  160. package/src/StaticArea.js +1 -39
  161. package/src/StaticAreaItem.js +56 -63
  162. package/src/SystemCSSVars.js +10 -0
  163. package/src/Theming.js +2 -1
  164. package/src/UI5Element.js +421 -301
  165. package/src/UI5ElementMetadata.js +165 -19
  166. package/src/asset-registries/Icons.js +129 -14
  167. package/src/asset-registries/Illustrations.js +30 -0
  168. package/src/asset-registries/LocaleData.js +99 -65
  169. package/src/asset-registries/Themes.js +24 -33
  170. package/src/asset-registries/i18n.js +72 -30
  171. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  172. package/src/config/AnimationMode.js +11 -1
  173. package/src/config/Language.js +58 -2
  174. package/src/config/Theme.js +14 -0
  175. package/src/css/FontFace.css +45 -0
  176. package/src/css/OverrideFontFace.css +32 -0
  177. package/src/css/SystemCSSVars.css +17 -0
  178. package/src/delegate/ItemNavigation.js +244 -171
  179. package/src/delegate/ResizeHandler.js +78 -38
  180. package/src/delegate/ScrollEnablement.js +49 -20
  181. package/src/features/OpenUI5Support.js +42 -7
  182. package/src/getSharedResource.js +30 -0
  183. package/src/i18nBundle.js +58 -5
  184. package/src/isLegacyBrowser.js +3 -0
  185. package/src/locale/RTLAwareRegistry.js +14 -0
  186. package/src/locale/applyDirection.js +17 -0
  187. package/src/locale/directionChange.js +32 -0
  188. package/src/locale/getEffectiveDir.js +28 -0
  189. package/src/locale/getLocale.js +12 -2
  190. package/src/locale/languageChange.js +22 -0
  191. package/src/renderer/LitRenderer.js +26 -7
  192. package/src/renderer/directives/style-map.js +72 -0
  193. package/src/renderer/executeTemplate.js +17 -0
  194. package/src/theming/CustomStyle.js +28 -7
  195. package/src/theming/ThemeLoaded.js +22 -0
  196. package/src/theming/applyTheme.js +7 -13
  197. package/src/theming/getConstructableStyle.js +15 -10
  198. package/src/theming/getEffectiveLinksHrefs.js +20 -0
  199. package/src/theming/getEffectiveStyle.js +23 -8
  200. package/src/theming/getStylesString.js +15 -0
  201. package/src/theming/getThemeDesignerTheme.js +2 -1
  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 +14 -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/NavigationMode.js +1 -0
  211. package/src/types/PopupState.js +1 -1
  212. package/src/types/ValueState.js +1 -1
  213. package/src/updateShadowRoot.js +30 -0
  214. package/src/util/AriaLabelHelper.js +41 -0
  215. package/src/util/Caret.js +45 -0
  216. package/src/util/ColorConversion.js +370 -0
  217. package/src/util/FocusableElements.js +25 -8
  218. package/src/util/HTMLSanitizer.js +7 -0
  219. package/src/util/InvisibleMessage.js +58 -0
  220. package/src/util/PopupUtils.js +93 -0
  221. package/src/util/SlotsHelper.js +43 -0
  222. package/src/util/TabbableElements.js +5 -1
  223. package/src/util/arraysAreEqual.js +15 -0
  224. package/src/util/clamp.js +12 -0
  225. package/src/util/createLinkInHead.js +19 -0
  226. package/src/util/debounce.js +17 -0
  227. package/src/util/encodeCSS.js +24 -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/getSingletonElementInstance.js +13 -0
  232. package/src/util/isElementInView.js +15 -0
  233. package/src/util/isNodeHidden.js +1 -5
  234. package/src/util/isNodeTabbable.js +4 -4
  235. package/src/util/isValidPropertyName.js +9 -3
  236. package/src/util/setToArray.js +10 -0
  237. package/used-modules.txt +7 -0
  238. package/bundle.es5.js +0 -28
  239. package/dist/SVGIconRegistry.js +0 -60
  240. package/dist/boot.js +0 -32
  241. package/dist/compatibility/DOMObserver.js +0 -62
  242. package/dist/compatibility/patchNodeValue.js +0 -24
  243. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  244. package/dist/delegate/CustomResize.js +0 -78
  245. package/dist/delegate/NativeResize.js +0 -44
  246. package/dist/features/browsersupport/Edge.js +0 -6
  247. package/dist/features/browsersupport/IE11.js +0 -41
  248. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  249. package/dist/renderer/ifDefined.js +0 -21
  250. package/dist/resources/bundle.es5.js +0 -212
  251. package/dist/resources/bundle.es5.js.map +0 -1
  252. package/dist/theming/CSSVarsPonyfill.js +0 -24
  253. package/dist/theming/adaptCSSForIE.js +0 -90
  254. package/dist/theming/createComponentStyleTag.js +0 -49
  255. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  256. package/dist/thirdparty/Array.from.js +0 -16
  257. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  258. package/dist/thirdparty/Array.prototype.find.js +0 -46
  259. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  260. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  261. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  262. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  263. package/dist/thirdparty/Number.isInteger.js +0 -5
  264. package/dist/thirdparty/Number.isNaN.js +0 -1
  265. package/dist/thirdparty/Number.parseInt.js +0 -1
  266. package/dist/thirdparty/Object.assign.js +0 -31
  267. package/dist/thirdparty/Object.entries.js +0 -11
  268. package/dist/thirdparty/Symbol.js +0 -2
  269. package/dist/thirdparty/WeakSet.js +0 -27
  270. package/dist/thirdparty/es6-string-methods.js +0 -182
  271. package/dist/thirdparty/events-polyfills.js +0 -89
  272. package/dist/thirdparty/fetch.js +0 -1
  273. package/dist/thirdparty/template.js +0 -600
  274. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  275. package/dist/webcomponentsjs/LICENSE.md +0 -19
  276. package/dist/webcomponentsjs/README.md +0 -229
  277. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  278. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  279. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  280. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  281. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  282. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  283. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  284. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  285. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  286. package/dist/webcomponentsjs/package.json +0 -46
  287. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  288. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  289. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  290. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  291. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  292. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  293. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  294. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  295. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  296. package/src/SVGIconRegistry.js +0 -60
  297. package/src/boot.js +0 -32
  298. package/src/compatibility/DOMObserver.js +0 -62
  299. package/src/compatibility/patchNodeValue.js +0 -24
  300. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  301. package/src/delegate/CustomResize.js +0 -78
  302. package/src/delegate/NativeResize.js +0 -44
  303. package/src/features/browsersupport/Edge.js +0 -6
  304. package/src/features/browsersupport/IE11.js +0 -41
  305. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  306. package/src/renderer/ifDefined.js +0 -21
  307. package/src/theming/CSSVarsPonyfill.js +0 -24
  308. package/src/theming/adaptCSSForIE.js +0 -90
  309. package/src/theming/createComponentStyleTag.js +0 -49
  310. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  311. package/src/thirdparty/Array.from.js +0 -16
  312. package/src/thirdparty/Array.prototype.fill.js +0 -44
  313. package/src/thirdparty/Array.prototype.find.js +0 -46
  314. package/src/thirdparty/Array.prototype.includes.js +0 -51
  315. package/src/thirdparty/Element.prototype.closest.js +0 -11
  316. package/src/thirdparty/Element.prototype.matches.js +0 -6
  317. package/src/thirdparty/Map.prototype.keys.js +0 -9
  318. package/src/thirdparty/Number.isInteger.js +0 -5
  319. package/src/thirdparty/Number.isNaN.js +0 -1
  320. package/src/thirdparty/Number.parseInt.js +0 -1
  321. package/src/thirdparty/Object.assign.js +0 -31
  322. package/src/thirdparty/Object.entries.js +0 -11
  323. package/src/thirdparty/Symbol.js +0 -2
  324. package/src/thirdparty/WeakSet.js +0 -27
  325. package/src/thirdparty/es6-string-methods.js +0 -182
  326. package/src/thirdparty/events-polyfills.js +0 -89
  327. package/src/thirdparty/fetch.js +0 -1
  328. package/src/thirdparty/template.js +0 -600
  329. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
package/.eslintignore CHANGED
@@ -1,6 +1,7 @@
1
1
  # Note: Changes to this file also must be applied to the top level .eslintignore file.
2
2
  test
3
3
  lib
4
+ overlay
4
5
  dist
5
6
  src/thirdparty
6
7
  bundle.esm.js
@@ -9,3 +10,5 @@ rollup.config*.js
9
10
  wdio.conf.js
10
11
  postcss.config.js
11
12
  package-scripts.js
13
+ .eslintrc.js
14
+ src/renderer/directives/style-map.js
package/CHANGELOG.md CHANGED
@@ -3,6 +3,164 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.0.0-rc.15](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.14...v1.0.0-rc.15) (2021-07-23)
7
+
8
+
9
+ ### Features
10
+
11
+ * **framework:** expose dist paths as root paths via package.json export field ([#3274](https://github.com/SAP/ui5-webcomponents/issues/3274)) ([bd34a5e](https://github.com/SAP/ui5-webcomponents/commit/bd34a5e))
12
+ * **framework:** support sap-* config URL params ([#3138](https://github.com/SAP/ui5-webcomponents/issues/3138)) ([5d9cdb9](https://github.com/SAP/ui5-webcomponents/commit/5d9cdb9)), closes [#3114](https://github.com/SAP/ui5-webcomponents/issues/3114)
13
+ * **framework:** introduce InvisibleMessage util ([#3192](https://github.com/SAP/ui5-webcomponents/issues/3192)) ([0a33c40](https://github.com/SAP/ui5-webcomponents/commit/0a33c40))
14
+
15
+
16
+ # [1.0.0-rc.13](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.12...v1.0.0-rc.13) (2021-03-26)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **framework:** adapt ie11 package for usage in modern browsers ([#2878](https://github.com/SAP/ui5-webcomponents/issues/2878)) ([70bbfbb](https://github.com/SAP/ui5-webcomponents/commit/70bbfbb))
22
+ * **framework:** add fallback for CLDR dev use case ([#2844](https://github.com/SAP/ui5-webcomponents/issues/2844)) ([deb173a](https://github.com/SAP/ui5-webcomponents/commit/deb173a))
23
+
24
+
25
+ ### Features
26
+
27
+ * **framework:** Create attachDirectionChange function ([#2646](https://github.com/SAP/ui5-webcomponents/issues/2646)) ([b4f836a](https://github.com/SAP/ui5-webcomponents/commit/b4f836a))
28
+ * **framework:** ItemNavigation cyclic behavior implemented for multiple rows ([#2780](https://github.com/SAP/ui5-webcomponents/issues/2780)) ([b7ad1ea](https://github.com/SAP/ui5-webcomponents/commit/b7ad1ea))
29
+ * **framework:** Maintain a common z-index for all UI5 Web Components instances and OpenUI5 ([#2980](https://github.com/SAP/ui5-webcomponents/issues/2980)) ([13bdc02](https://github.com/SAP/ui5-webcomponents/commit/13bdc02))
30
+ * **ui5-color-palette:** initial implementation ([#2731](https://github.com/SAP/ui5-webcomponents/issues/2731)) ([772424e](https://github.com/SAP/ui5-webcomponents/commit/772424e))
31
+ * **ui5-color-picker:** initial implementation ([#2769](https://github.com/SAP/ui5-webcomponents/issues/2769)) ([6a70e5a](https://github.com/SAP/ui5-webcomponents/commit/6a70e5a))
32
+ * **ui5-list:** introduce "growing" property ([#2950](https://github.com/SAP/ui5-webcomponents/issues/2950)) ([6fbbb21](https://github.com/SAP/ui5-webcomponents/commit/6fbbb21)), closes [#2882](https://github.com/SAP/ui5-webcomponents/issues/2882) [#2882](https://github.com/SAP/ui5-webcomponents/issues/2882)
33
+ * **ui5-step-input:** inintial implementation ([#2804](https://github.com/SAP/ui5-webcomponents/issues/2804)) ([d80420e](https://github.com/SAP/ui5-webcomponents/commit/d80420e)), closes [#2640](https://github.com/SAP/ui5-webcomponents/issues/2640)
34
+ * **ui5-tabcontainer:** support responsive paddings ([#2775](https://github.com/SAP/ui5-webcomponents/issues/2775)) ([19392ff](https://github.com/SAP/ui5-webcomponents/commit/19392ff)), closes [#2539](https://github.com/SAP/ui5-webcomponents/issues/2539)
35
+ * add dynamic imports for .json assets ([#2740](https://github.com/SAP/ui5-webcomponents/issues/2740)) ([46e38fb](https://github.com/SAP/ui5-webcomponents/commit/46e38fb))
36
+ * **ui5-table:** add growing on scroll ([#2593](https://github.com/SAP/ui5-webcomponents/issues/2593)) ([87520c2](https://github.com/SAP/ui5-webcomponents/commit/87520c2)), closes [#2589](https://github.com/SAP/ui5-webcomponents/issues/2589) [#2570](https://github.com/SAP/ui5-webcomponents/issues/2570)
37
+ * create @ui5/webcomponents-ie11 package ([#2686](https://github.com/SAP/ui5-webcomponents/issues/2686)) ([1d3b37e](https://github.com/SAP/ui5-webcomponents/commit/1d3b37e))
38
+ * **ui5-slider:** focus and keyboard handling implementation ([#2614](https://github.com/SAP/ui5-webcomponents/issues/2614)) ([7b78c16](https://github.com/SAP/ui5-webcomponents/commit/7b78c16))
39
+ * refactoring and new features for pickers ([#2598](https://github.com/SAP/ui5-webcomponents/issues/2598)) ([3e684b4](https://github.com/SAP/ui5-webcomponents/commit/3e684b4))
40
+
41
+
42
+
43
+
44
+
45
+ # [1.0.0-rc.12](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.11...v1.0.0-rc.12) (2021-02-18)
46
+
47
+
48
+ ### Bug Fixes
49
+
50
+ * **theming:** fix error message ([#2818](https://github.com/SAP/ui5-webcomponents/issues/2818)) ([7a0732a](https://github.com/SAP/ui5-webcomponents/commit/7a0732a))
51
+ * **i18n:** ui5-icon i18n works for all packages ([#2816](https://github.com/SAP/ui5-webcomponents/issues/2816)) ([91e16a1](https://github.com/SAP/ui5-webcomponents/commit/91e16a1))
52
+
53
+ ### Features
54
+
55
+ * **framework:** add dynamic imports for .json assets ([#2740](https://github.com/SAP/ui5-webcomponents/issues/2740)) ([46e38fb](https://github.com/SAP/ui5-webcomponents/commit/46e38fb))
56
+ * **framework:** Create attachDirectionChange function ([#2646](https://github.com/SAP/ui5-webcomponents/issues/2646)) ([b4f836a](https://github.com/SAP/ui5-webcomponents/commit/b4f836a))
57
+ * **framework:** ItemNavigation cyclic behavior implemented for multiple rows ([#2780](https://github.com/SAP/ui5-webcomponents/issues/2780)) ([b7ad1ea](https://github.com/SAP/ui5-webcomponents/commit/b7ad1ea))
58
+
59
+
60
+
61
+
62
+ # [1.0.0-rc.11](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.10...v1.0.0-rc.11) (2020-12-21)
63
+
64
+
65
+ ### Bug Fixes
66
+
67
+ * **ui5-dialog:** apply initial focus after rendering ([#2551](https://github.com/SAP/ui5-webcomponents/issues/2551)) ([dba0265](https://github.com/SAP/ui5-webcomponents/commit/dba0265)), closes [#2537](https://github.com/SAP/ui5-webcomponents/issues/2537)
68
+
69
+
70
+ ### Features
71
+
72
+ * **framework:** Change child-parent invalidation API ([#2541](https://github.com/SAP/ui5-webcomponents/issues/2541)) ([a1a3f80](https://github.com/SAP/ui5-webcomponents/commit/a1a3f80))
73
+ * **ui5-calendar:** introduce new component. ([#2424](https://github.com/SAP/ui5-webcomponents/issues/2424)) ([5470e23](https://github.com/SAP/ui5-webcomponents/commit/5470e23)), closes [#1730](https://github.com/SAP/ui5-webcomponents/issues/1730)
74
+
75
+
76
+
77
+
78
+
79
+ # [1.0.0-rc.10](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.9...v1.0.0-rc.10) (2020-11-12)
80
+
81
+
82
+ ### Bug Fixes
83
+
84
+ * **framework:** fix JS error on setLanguage call ([#2328](https://github.com/SAP/ui5-webcomponents/issues/2328)) ([f9b9ead](https://github.com/SAP/ui5-webcomponents/commit/f9b9ead))
85
+
86
+ ### Features
87
+
88
+ * **framework:** make getStableDomRef search in the static area item … ([#2363](https://github.com/SAP/ui5-webcomponents/issues/2363)) ([a68dfbb](https://github.com/SAP/ui5-webcomponents/commit/a68dfbb))
89
+
90
+ # [1.0.0-rc.9](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.8...v1.0.0-rc.9) (2020-10-08)
91
+
92
+
93
+ ### Bug Fixes
94
+
95
+ * **components:** fix setting contentDensity styles ([#2094](https://github.com/SAP/ui5-webcomponents/issues/2094)) ([9454ab7](https://github.com/SAP/ui5-webcomponents/commit/9454ab7)), closes [#2093](https://github.com/SAP/ui5-webcomponents/issues/2093)
96
+ * **framework:** Allow role as a property name ([#2290](https://github.com/SAP/ui5-webcomponents/issues/2290)) ([a816cef](https://github.com/SAP/ui5-webcomponents/commit/a816cef))
97
+ * **framework:** Do not create IE styles with disabled ([#2284](https://github.com/SAP/ui5-webcomponents/issues/2284)) ([5ecc51e](https://github.com/SAP/ui5-webcomponents/commit/5ecc51e))
98
+
99
+
100
+ ### Features
101
+
102
+ * **framework:** Add API to subscribe/unsubscribe for theme loaded ([#2303](https://github.com/SAP/ui5-webcomponents/issues/2303)) ([c8ffb38](https://github.com/SAP/ui5-webcomponents/commit/c8ffb38))
103
+ * **framework:** dynamic custom elements scoping ([#2091](https://github.com/SAP/ui5-webcomponents/issues/2091)) ([3588542](https://github.com/SAP/ui5-webcomponents/commit/3588542))
104
+ * **framework:** Limited support for campact size on IE ([#2230](https://github.com/SAP/ui5-webcomponents/issues/2230)) ([4128216](https://github.com/SAP/ui5-webcomponents/commit/4128216))
105
+ * **framework:** Make _property-change publicly available ([#2201](https://github.com/SAP/ui5-webcomponents/issues/2201)) ([0be4e10](https://github.com/SAP/ui5-webcomponents/commit/0be4e10))
106
+ * **framework:** Make addCustomCSS dynamic ([#2083](https://github.com/SAP/ui5-webcomponents/issues/2083)) ([7b54b9b](https://github.com/SAP/ui5-webcomponents/commit/7b54b9b))
107
+ * **framework:** make assets path configurable ([#2214](https://github.com/SAP/ui5-webcomponents/issues/2214)) ([16c46da](https://github.com/SAP/ui5-webcomponents/commit/16c46da))
108
+ * **framework:** styles and staticAreaStyles may now be nested arrays ([#2058](https://github.com/SAP/ui5-webcomponents/issues/2058)) ([bb87e65](https://github.com/SAP/ui5-webcomponents/commit/bb87e65))
109
+ * **framework:** Support custom dynamic asset paths ([#2305](https://github.com/SAP/ui5-webcomponents/issues/2305)) ([ff245fa](https://github.com/SAP/ui5-webcomponents/commit/ff245fa))
110
+
111
+
112
+
113
+
114
+
115
+ # [1.0.0-rc.8](https://github.com/SAP/ui5-webcomponents/compare/v1.0.0-rc.7...v1.0.0-rc.8) (2020-07-30)
116
+
117
+
118
+ ### Bug Fixes
119
+
120
+ * **framework:** Allow for empty theme files ([#1639](https://github.com/SAP/ui5-webcomponents/issues/1639)) ([0cef140](https://github.com/SAP/ui5-webcomponents/commit/0cef140))
121
+ * **framework:** Allow users to override default language translations ([#1716](https://github.com/SAP/ui5-webcomponents/issues/1716)) ([4b10f4f](https://github.com/SAP/ui5-webcomponents/commit/4b10f4f))
122
+ * **framework:** Slotted children now invalidate parent upon slotchange ([#1649](https://github.com/SAP/ui5-webcomponents/issues/1649)) ([3ca4ae1](https://github.com/SAP/ui5-webcomponents/commit/3ca4ae1))
123
+ * **framework:** Fix openui5 css varaibles detection ([#1933](https://github.com/SAP/ui5-webcomponents/issues/1933)) ([bb5b724](https://github.com/SAP/ui5-webcomponents/commit/bb5b724)), closes [#1932](https://github.com/SAP/ui5-webcomponents/issues/1932)
124
+ * **framework:** Make renderImmediately sync ([#1929](https://github.com/SAP/ui5-webcomponents/issues/1929)) ([9141300](https://github.com/SAP/ui5-webcomponents/commit/9141300))
125
+ * **framework:** Update managedSlots effect ([#1952](https://github.com/SAP/ui5-webcomponents/issues/1952)) ([4a1be70](https://github.com/SAP/ui5-webcomponents/commit/4a1be70))
126
+ * **framework:** Remove ES6 code in IE polyfill ([#1923](https://github.com/SAP/ui5-webcomponents/issues/1923)) ([0a2ff88](https://github.com/SAP/ui5-webcomponents/commit/0a2ff88))
127
+ * **framework:** Take region into account for i18n assets ([#1985](https://github.com/SAP/ui5-webcomponents/issues/1985)) ([3b614ad](https://github.com/SAP/ui5-webcomponents/commit/3b614ad))
128
+ * **ui5-button:** Apply aria-expanded to inner button tag ([#1781](https://github.com/SAP/ui5-webcomponents/issues/1781)) ([df9e4e9](https://github.com/SAP/ui5-webcomponents/commit/df9e4e9))
129
+
130
+
131
+ ### Features
132
+
133
+ * **framework:** Add dynamic language change and on-demand rerendering ([#1746](https://github.com/SAP/ui5-webcomponents/issues/1746)) ([1b568f2](https://github.com/SAP/ui5-webcomponents/commit/1b568f2))
134
+ * **framework:** CLDR location can now be specified ([#1687](https://github.com/SAP/ui5-webcomponents/issues/1687)) ([168e505](https://github.com/SAP/ui5-webcomponents/commit/168e505))
135
+ * **framework:** Create a global shared resources repo, share SVG Icons ([#1869](https://github.com/SAP/ui5-webcomponents/issues/1869)) ([7f5a198](https://github.com/SAP/ui5-webcomponents/commit/7f5a198))
136
+ * **framework:** Implement invalidateParent ([#1964](https://github.com/SAP/ui5-webcomponents/issues/1964)) ([104abcc](https://github.com/SAP/ui5-webcomponents/commit/104abcc))
137
+ * **framework:** Implement stable DOM Ref functionality ([#1868](https://github.com/SAP/ui5-webcomponents/issues/1868)) ([cfd4fa3](https://github.com/SAP/ui5-webcomponents/commit/cfd4fa3))
138
+ * **framework:** Make icons RTL aware ([#1833](https://github.com/SAP/ui5-webcomponents/issues/1833)) ([29a991f](https://github.com/SAP/ui5-webcomponents/commit/29a991f)), closes [#1831](https://github.com/SAP/ui5-webcomponents/issues/1831)
139
+ * **framework:** Support properties message bundles for i18n ([#1728](https://github.com/SAP/ui5-webcomponents/issues/1728)) ([d78d136](https://github.com/SAP/ui5-webcomponents/commit/d78d136))
140
+ * **framework:** Support several runtimes simultaneously ([#1691](https://github.com/SAP/ui5-webcomponents/issues/1691)) ([7a3261c](https://github.com/SAP/ui5-webcomponents/commit/7a3261c))
141
+
142
+
143
+ # [0.20.0](https://github.com/SAP/ui5-webcomponents/compare/v0.19.0...v0.20.0) (2020-04-30)
144
+
145
+
146
+ ### Bug Fixes
147
+
148
+ * **framework:** allow the creation of components with static area content only ([#1450](https://github.com/SAP/ui5-webcomponents/issues/1450)) ([b0505ce](https://github.com/SAP/ui5-webcomponents/commit/b0505ce))
149
+ * **framework:** apply CSS Vars in Static Styles on IE11 ([#1440](https://github.com/SAP/ui5-webcomponents/issues/1440)) ([b8ae60e](https://github.com/SAP/ui5-webcomponents/commit/b8ae60e))
150
+ * **framework:** rendering is no longer delayed ([#1552](https://github.com/SAP/ui5-webcomponents/issues/1552)) ([c26e8aa](https://github.com/SAP/ui5-webcomponents/commit/c26e8aa))
151
+ * **scroll enablement:** fix scrolling issue on scroll & mobile ([#1557](https://github.com/SAP/ui5-webcomponents/issues/1557)) ([e79482a](https://github.com/SAP/ui5-webcomponents/commit/e79482a))
152
+ * **scroll enablement:** fix scrolling on android devices ([#1491](https://github.com/SAP/ui5-webcomponents/issues/1491)) ([df19ede](https://github.com/SAP/ui5-webcomponents/commit/df19ede))
153
+
154
+
155
+
156
+ ### Features
157
+
158
+ * **framework:** enable external themes support ([#1463](https://github.com/SAP/ui5-webcomponents/issues/1463)) ([b031782](https://github.com/SAP/ui5-webcomponents/commit/b031782))
159
+ * **framework:** register theme variables via CSS file ([#1451](https://github.com/SAP/ui5-webcomponents/issues/1451)) ([3173fb9](https://github.com/SAP/ui5-webcomponents/commit/3173fb9))
160
+
161
+
162
+
163
+
6
164
  # [0.19.0](https://github.com/SAP/ui5-webcomponents/compare/v0.18.0...v0.19.0) (2020-03-27)
7
165
 
8
166
 
package/README.md CHANGED
@@ -7,7 +7,31 @@
7
7
 
8
8
  Contains the base files for all Web Components, most notably `@ui5/webcomponents-base/dist/UI5Element.js`.
9
9
 
10
- For a complete list of all app development related public module imports from the `base` package, click [here](../../docs/Public%20Module%20Imports.md#base):
10
+ ## Provided APIs for applications
11
+
12
+ ### `Boot.js`
13
+
14
+ - `attachBoot`
15
+
16
+ ### `CustomElementsScope.js`
17
+
18
+ - `setCustomElementsScopingSuffix`
19
+ - `getCustomElementsScopingSuffix`
20
+ - `setCustomElementsScopingRules`
21
+ - `getCustomElementsScopingRules`
22
+
23
+ ### `i18nBundle.js`
24
+
25
+ - `registerI18nLoader`
26
+ - `getI18nBundle`
27
+
28
+ ### `PropertiesFileFormat.js`
29
+
30
+ - `parseProperties`
31
+
32
+ ### `Render.js`
33
+
34
+ - `renderFinished`
11
35
 
12
36
  ## Resources
13
37
  - [UI5 Web Components - README.md](https://github.com/SAP/ui5-webcomponents/blob/master/README.md)
@@ -18,7 +42,7 @@ For a complete list of all app development related public module imports from th
18
42
  We welcome all comments, suggestions, questions, and bug reports. Please follow our [Support Guidelines](https://github.com/SAP/ui5-webcomponents/blob/master/SUPPORT.md#-content) on how to report an issue, or chat with us in the `#webcomponents` channel of the [OpenUI5 Community Slack](https://join-ui5-slack.herokuapp.com/).
19
43
 
20
44
  ## Contribute
21
- Please check our [Contribution Guidelines](https://github.com/SAP/ui5-webcomponents/blob/master/CONTRIBUTING.md).
45
+ Please check our [Contribution Guidelines](https://github.com/SAP/ui5-webcomponents/blob/master/docs/6-contributing/02-conventions-and-guidelines.md).
22
46
 
23
47
  ## License
24
48
  Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved.
package/bundle.esm.js CHANGED
@@ -1,7 +1,7 @@
1
- import { registerThemeProperties } from "./dist/AssetRegistry.js";
1
+ import { registerThemePropertiesLoader } from "./dist/AssetRegistry.js";
2
+ import EventProvider from "./dist/EventProvider.js";
2
3
 
3
- // ESM bundle targets Edge + browsers with native support
4
- import "./dist/features/browsersupport/Edge.js";
4
+ // ESM bundle targets browsers with native support
5
5
  import "./dist/features/OpenUI5Support.js";
6
6
 
7
7
  // Test components
@@ -16,13 +16,15 @@ import "./dist/test-resources/elements/GenericExt.js";
16
16
  import "./dist/test-resources/assets/Themes.js";
17
17
 
18
18
  // used in test pages
19
- import RenderScheduler from "./dist/RenderScheduler.js";
20
- window.RenderScheduler = RenderScheduler;
19
+ import { renderFinished } from "./dist/Render.js";
21
20
  import { isIE } from "./dist/Device.js";
22
21
  window.isIE = isIE; // attached to the window object for testing purposes
23
22
 
24
23
  // used for tests - to register a custom theme
25
- window.registerThemeProperties = registerThemeProperties;
24
+ window.registerThemePropertiesLoader = registerThemePropertiesLoader;
25
+
26
+ // i18n
27
+ import { registerI18nLoader, getI18nBundle } from "./dist/i18nBundle.js";
26
28
 
27
29
  // Note: keep in sync with rollup.config value for IIFE
28
30
  import { getAnimationMode } from "./dist/config/AnimationMode.js";
@@ -32,7 +34,9 @@ import { getTheme, setTheme } from "./dist/config/Theme.js";
32
34
  import { getNoConflict, setNoConflict } from "./dist/config/NoConflict.js";
33
35
  import { getRTL } from "./dist/config/RTL.js";
34
36
  import { getFirstDayOfWeek } from "./dist/config/FormatSettings.js";
35
- import { getRegisteredNames as getIconNames } from "./dist/SVGIconRegistry.js"
37
+ import { _getRegisteredNames as getIconNames } from "./dist/asset-registries/Icons.js"
38
+ import applyDirection from "./dist/locale/applyDirection.js";
39
+
36
40
  window["sap-ui-webcomponents-bundle"] = {
37
41
  configuration : {
38
42
  getAnimationMode,
@@ -46,4 +50,9 @@ window["sap-ui-webcomponents-bundle"] = {
46
50
  getFirstDayOfWeek,
47
51
  },
48
52
  getIconNames,
53
+ registerI18nLoader,
54
+ getI18nBundle,
55
+ renderFinished,
56
+ applyDirection,
57
+ EventProvider,
49
58
  };
@@ -1,9 +1,11 @@
1
- import { registerI18nBundle } from "./asset-registries/i18n.js";
2
- import { registerCldr } from "./asset-registries/LocaleData.js";
3
- import { registerThemeProperties } from "./asset-registries/Themes.js";
1
+ import { registerI18nLoader } from "./asset-registries/i18n.js";
2
+ import { registerLocaleDataLoader } from "./asset-registries/LocaleData.js";
3
+ import { registerThemePropertiesLoader } from "./asset-registries/Themes.js";
4
+ import { registerIconLoader } from "./asset-registries/Icons.js";
4
5
 
5
6
  export {
6
- registerCldr,
7
- registerThemeProperties,
8
- registerI18nBundle,
7
+ registerI18nLoader,
8
+ registerLocaleDataLoader,
9
+ registerThemePropertiesLoader,
10
+ registerIconLoader,
9
11
  };
package/dist/Boot.js ADDED
@@ -0,0 +1,43 @@
1
+ import EventProvider from "./EventProvider.js";
2
+ import whenDOMReady from "./util/whenDOMReady.js";
3
+ import insertFontFace from "./FontFace.js";
4
+ import insertSystemCSSVars from "./SystemCSSVars.js";
5
+ import { getTheme } from "./config/Theme.js";
6
+ import applyTheme from "./theming/applyTheme.js";
7
+ import { getFeature } from "./FeaturesRegistry.js";
8
+
9
+ let booted = false;
10
+ const eventProvider = new EventProvider();
11
+
12
+ /**
13
+ * Attach a callback that will be executed on boot
14
+ * @public
15
+ * @param listener
16
+ */
17
+ const attachBoot = listener => {
18
+ eventProvider.attachEvent("boot", listener);
19
+ };
20
+
21
+ const boot = async () => {
22
+ if (booted) {
23
+ return;
24
+ }
25
+
26
+ const OpenUI5Support = getFeature("OpenUI5Support");
27
+ if (OpenUI5Support) {
28
+ await OpenUI5Support.init();
29
+ }
30
+
31
+ await whenDOMReady();
32
+ await applyTheme(getTheme());
33
+ OpenUI5Support && OpenUI5Support.attachListeners();
34
+ insertFontFace();
35
+ insertSystemCSSVars();
36
+ await eventProvider.fireEventAsync("boot");
37
+ booted = true;
38
+ };
39
+
40
+ export {
41
+ boot,
42
+ attachBoot,
43
+ };
package/dist/CSP.js ADDED
@@ -0,0 +1,59 @@
1
+ const roots = new Map();
2
+ let useLinks = false;
3
+ let preloadLinks = true;
4
+
5
+ /**
6
+ * Use this function to provide the path to the directory where the css resources for the given package will be served from
7
+ *
8
+ * @public
9
+ * @param packageName name of the package that is being configured
10
+ * @param root path, accessible by the server that will serve the css resources
11
+ */
12
+ const setPackageCSSRoot = (packageName, root) => {
13
+ roots.set(packageName, root);
14
+ };
15
+
16
+ const getUrl = (packageName, path) => {
17
+ return `${roots.get(packageName)}${path}`;
18
+ };
19
+
20
+ /**
21
+ * Call this function to enable or disable the usage of <link> tags instead of <style> tags to achieve CSP compliance
22
+ * Example: "setUseLinks(true)" will unconditionally use <link> tags for all browsers;
23
+ * Example: "setUseLinks(!document.adoptedStyleSheets) will only enable the usage of <link> tags for browsers that do not support constructable stylesheets.
24
+ *
25
+ * @public
26
+ * @param use whether links will be used
27
+ */
28
+ const setUseLinks = use => {
29
+ useLinks = use;
30
+ };
31
+
32
+ /**
33
+ * Call this function to enable or disable the preloading of <link> tags.
34
+ * Note: only taken into account when <link> tags are being used.
35
+ * Note: links are being preloaded by default, so call "setPreloadLinks(false)" to opt out of this.
36
+ *
37
+ * @public
38
+ * @param preload
39
+ */
40
+ const setPreloadLinks = preload => {
41
+ preloadLinks = preload;
42
+ };
43
+
44
+ const shouldUseLinks = () => {
45
+ return useLinks;
46
+ };
47
+
48
+ const shouldPreloadLinks = () => {
49
+ return preloadLinks;
50
+ };
51
+
52
+ export {
53
+ setPackageCSSRoot,
54
+ getUrl,
55
+ setUseLinks,
56
+ setPreloadLinks,
57
+ shouldUseLinks,
58
+ shouldPreloadLinks,
59
+ };
@@ -1,23 +1,39 @@
1
- const DefinitionsSet = new Set();
1
+ import setToArray from "./util/setToArray.js";
2
+
3
+ const Definitions = new Set();
4
+ const Failures = new Set();
5
+ let failureTimeout;
2
6
 
3
7
  const registerTag = tag => {
4
- DefinitionsSet.add(tag);
8
+ Definitions.add(tag);
5
9
  };
6
10
 
7
11
  const isTagRegistered = tag => {
8
- return DefinitionsSet.has(tag);
12
+ return Definitions.has(tag);
9
13
  };
10
14
 
11
15
  const getAllRegisteredTags = () => {
12
- const arr = [];
13
- DefinitionsSet.forEach(tag => {
14
- arr.push(tag);
15
- });
16
- return arr;
16
+ return setToArray(Definitions);
17
+ };
18
+
19
+ const recordTagRegistrationFailure = tag => {
20
+ Failures.add(tag);
21
+ if (!failureTimeout) {
22
+ failureTimeout = setTimeout(() => {
23
+ displayFailedRegistrations();
24
+ failureTimeout = undefined;
25
+ }, 1000);
26
+ }
27
+ };
28
+
29
+ const displayFailedRegistrations = () => {
30
+ console.warn(`The following tags have already been defined by a different UI5 Web Components version: ${setToArray(Failures).join(", ")}`); // eslint-disable-line
31
+ Failures.clear();
17
32
  };
18
33
 
19
34
  export {
20
35
  registerTag,
21
36
  isTagRegistered,
22
37
  getAllRegisteredTags,
38
+ recordTagRegistrationFailure,
23
39
  };
@@ -0,0 +1,108 @@
1
+ let suf;
2
+ let rulesObj = {
3
+ include: [/^ui5-/],
4
+ exclude: [],
5
+ };
6
+ const tagsCache = new Map(); // true/false means the tag should/should not be cached, undefined means not known yet.
7
+
8
+ /**
9
+ * Sets the suffix to be used for custom elements scoping, f.e. pass "demo" to get tags such as "ui5-button-demo".
10
+ * Note: by default all tags starting with "ui5-" will be scoped, unless you change this by calling "setCustomElementsScopingRules"
11
+ *
12
+ * @public
13
+ * @param suffix The scoping suffix
14
+ */
15
+ const setCustomElementsScopingSuffix = suffix => {
16
+ if (!suffix.match(/^[a-zA-Z0-9_-]+$/)) {
17
+ throw new Error("Only alphanumeric characters and dashes allowed for the scoping suffix");
18
+ }
19
+
20
+ suf = suffix;
21
+ };
22
+
23
+ /**
24
+ * Returns the currently set scoping suffix, or undefined if not set.
25
+ *
26
+ * @public
27
+ * @returns {String|undefined}
28
+ */
29
+ const getCustomElementsScopingSuffix = () => {
30
+ return suf;
31
+ };
32
+
33
+ /**
34
+ * Sets the rules, governing which custom element tags to scope and which not, f.e.
35
+ * setCustomElementsScopingRules({include: [/^ui5-/]}, exclude: [/^ui5-mylib-/, /^ui5-carousel$/]);
36
+ * will scope all elements starting with "ui5-" but not the ones starting with "ui5-mylib-" and not "ui5-carousel".
37
+ *
38
+ * @public
39
+ * @param rules Object with "include" and "exclude" properties, both arrays of regular expressions. Note that "include"
40
+ * rules are applied first and "exclude" rules second.
41
+ */
42
+ const setCustomElementsScopingRules = rules => {
43
+ if (!rules || !rules.include) {
44
+ throw new Error(`"rules" must be an object with at least an "include" property`);
45
+ }
46
+
47
+ if (!Array.isArray(rules.include) || rules.include.some(rule => !(rule instanceof RegExp))) {
48
+ throw new Error(`"rules.include" must be an array of regular expressions`);
49
+ }
50
+
51
+ if (rules.exclude && (!Array.isArray(rules.exclude) || rules.exclude.some(rule => !(rule instanceof RegExp)))) {
52
+ throw new Error(`"rules.exclude" must be an array of regular expressions`);
53
+ }
54
+
55
+ rules.exclude = rules.exclude || [];
56
+ rulesObj = rules;
57
+ tagsCache.clear(); // reset the cache upon setting new rules
58
+ };
59
+
60
+ /**
61
+ * Returns the rules, governing which custom element tags to scope and which not. By default, all elements
62
+ * starting with "ui5-" are scoped. The default rules are: {include: [/^ui5-/]}.
63
+ *
64
+ * @public
65
+ * @returns {Object}
66
+ */
67
+ const getCustomElementsScopingRules = () => {
68
+ return rulesObj;
69
+ };
70
+
71
+ /**
72
+ * Determines whether custom elements with the given tag should be scoped or not.
73
+ * The tag is first matched against the "include" rules and then against the "exclude" rules and the
74
+ * result is cached until new rules are set.
75
+ *
76
+ * @public
77
+ * @param tag
78
+ */
79
+ const shouldScopeCustomElement = tag => {
80
+ if (!tagsCache.has(tag)) {
81
+ const result = rulesObj.include.some(rule => tag.match(rule)) && !rulesObj.exclude.some(rule => tag.match(rule));
82
+ tagsCache.set(tag, result);
83
+ }
84
+
85
+ return tagsCache.get(tag);
86
+ };
87
+
88
+ /**
89
+ * Returns the currently set scoping suffix, if any and if the tag should be scoped, or undefined otherwise.
90
+ *
91
+ * @public
92
+ * @param tag
93
+ * @returns {String}
94
+ */
95
+ const getEffectiveScopingSuffixForTag = tag => {
96
+ if (shouldScopeCustomElement(tag)) {
97
+ return getCustomElementsScopingSuffix();
98
+ }
99
+ };
100
+
101
+ export {
102
+ setCustomElementsScopingSuffix,
103
+ getCustomElementsScopingSuffix,
104
+ setCustomElementsScopingRules,
105
+ getCustomElementsScopingRules,
106
+ shouldScopeCustomElement,
107
+ getEffectiveScopingSuffixForTag,
108
+ };
@@ -0,0 +1,65 @@
1
+ const observers = new WeakMap(); // We want just one observer per node, store them here -> DOM nodes are keys
2
+
3
+ /**
4
+ * Default implementation with MutationObserver for browsers with native support
5
+ */
6
+ let _createObserver = (node, callback, options) => {
7
+ const observer = new MutationObserver(callback);
8
+ observer.observe(node, options);
9
+ return observer;
10
+ };
11
+
12
+ /**
13
+ * Default implementation with MutationObserver for browsers with native support
14
+ */
15
+ let _destroyObserver = observer => {
16
+ observer.disconnect();
17
+ };
18
+
19
+ /**
20
+ * Allows to create an alternative DOM observer implementation
21
+ * @param createFn
22
+ */
23
+ const setCreateObserverCallback = createFn => {
24
+ if (typeof createFn === "function") {
25
+ _createObserver = createFn;
26
+ }
27
+ };
28
+
29
+ /**
30
+ * Allows to create an alternative DOM observer implementation
31
+ * @param destroyFn
32
+ */
33
+ const setDestroyObserverCallback = destroyFn => {
34
+ if (typeof destroyFn === "function") {
35
+ _destroyObserver = destroyFn;
36
+ }
37
+ };
38
+
39
+ /**
40
+ * @param node
41
+ * @param callback
42
+ * @param options
43
+ */
44
+ const observeDOMNode = (node, callback, options) => {
45
+ const observer = _createObserver(node, callback, options);
46
+ observers.set(node, observer);
47
+ };
48
+
49
+ /**
50
+ * @param node
51
+ */
52
+ const unobserveDOMNode = node => {
53
+ const observer = observers.get(node);
54
+ if (observer) {
55
+ _destroyObserver(observer);
56
+ observers.delete(node);
57
+ }
58
+ };
59
+
60
+ export {
61
+ setCreateObserverCallback,
62
+ setDestroyObserverCallback,
63
+ observeDOMNode,
64
+ unobserveDOMNode,
65
+ };