@ui5/webcomponents-base 0.0.0-323968e1b → 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 (449) hide show
  1. package/.eslintignore +4 -0
  2. package/CHANGELOG.md +196 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +18 -12
  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 +39 -0
  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 +20 -56
  14. package/dist/InitialConfiguration.js +64 -17
  15. package/dist/Keys.js +248 -0
  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 -145
  22. package/dist/StaticArea.js +1 -39
  23. package/dist/StaticAreaItem.js +65 -40
  24. package/dist/SystemCSSVars.js +10 -0
  25. package/dist/Theming.js +3 -44
  26. package/dist/UI5Element.js +483 -307
  27. package/dist/UI5ElementMetadata.js +190 -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 +108 -50
  31. package/dist/asset-registries/Themes.js +35 -32
  32. package/dist/asset-registries/i18n.js +80 -34
  33. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  34. package/dist/config/AnimationMode.js +16 -2
  35. package/dist/config/CalendarType.js +7 -7
  36. package/dist/config/FormatSettings.js +5 -1
  37. package/dist/config/Language.js +62 -3
  38. package/dist/config/NoConflict.js +10 -3
  39. package/dist/config/Theme.js +21 -3
  40. package/dist/css/FontFace.css +45 -0
  41. package/dist/css/OverrideFontFace.css +32 -0
  42. package/dist/css/SystemCSSVars.css +17 -0
  43. package/dist/delegate/ItemNavigation.js +245 -172
  44. package/dist/delegate/ResizeHandler.js +78 -38
  45. package/dist/delegate/ScrollEnablement.js +122 -14
  46. package/dist/features/OpenUI5Support.js +125 -0
  47. package/dist/generated/AssetParameters.js +13 -0
  48. package/dist/generated/css/FontFace.css.js +5 -0
  49. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  50. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  51. package/dist/getSharedResource.js +30 -0
  52. package/dist/i18nBundle.js +62 -11
  53. package/dist/isLegacyBrowser.js +3 -0
  54. package/dist/{Locale.js → locale/Locale.js} +0 -10
  55. package/dist/locale/RTLAwareRegistry.js +14 -0
  56. package/dist/locale/applyDirection.js +17 -0
  57. package/dist/locale/directionChange.js +32 -0
  58. package/dist/locale/getEffectiveDir.js +28 -0
  59. package/dist/locale/getLocale.js +41 -0
  60. package/dist/locale/languageChange.js +22 -0
  61. package/dist/locale/nextFallbackLocale.js +28 -0
  62. package/{src/util → dist/locale}/normalizeLocale.js +8 -31
  63. package/dist/renderer/LitRenderer.js +26 -7
  64. package/dist/renderer/directives/style-map.js +72 -0
  65. package/dist/renderer/executeTemplate.js +17 -0
  66. package/dist/resources/bundle.esm.js +20 -106
  67. package/dist/resources/bundle.esm.js.map +1 -1
  68. package/dist/sap/base/Log.js +241 -0
  69. package/dist/sap/base/assert.js +8 -0
  70. package/dist/sap/base/security/URLListValidator.js +148 -0
  71. package/dist/sap/base/security/sanitizeHTML.js +16 -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 +11 -5
  75. package/dist/test-resources/elements/Generic.js +1 -0
  76. package/dist/test-resources/elements/Parent.js +7 -2
  77. package/dist/test-resources/elements/WithStaticArea.js +77 -0
  78. package/dist/test-resources/pages/AllTestElements.html +5 -5
  79. package/dist/test-resources/pages/Configuration.html +0 -2
  80. package/dist/test-resources/pages/ConfigurationScript.html +1 -3
  81. package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
  82. package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
  83. package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
  84. package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
  85. package/dist/test-resources/pages/i18n.html +33 -0
  86. package/dist/test-resources/specs/ConfigurationChange.spec.js +11 -9
  87. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  88. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  89. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  90. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  91. package/dist/test-resources/specs/StaticArea.spec.js +78 -0
  92. package/dist/test-resources/specs/Theming.spec.js +12 -10
  93. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  94. package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
  95. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  96. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  97. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  98. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  99. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  100. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  101. package/dist/theming/CustomStyle.js +28 -7
  102. package/dist/theming/ThemeLoaded.js +22 -0
  103. package/dist/theming/applyTheme.js +75 -0
  104. package/dist/theming/getConstructableStyle.js +30 -0
  105. package/dist/theming/getEffectiveLinksHrefs.js +20 -0
  106. package/dist/theming/getEffectiveStyle.js +30 -0
  107. package/dist/theming/getStylesString.js +15 -0
  108. package/dist/theming/getThemeDesignerTheme.js +68 -0
  109. package/dist/theming/preloadLinks.js +23 -0
  110. package/dist/thirdparty/_merge.js +32 -0
  111. package/dist/thirdparty/isPlainObject.js +18 -0
  112. package/dist/thirdparty/merge.js +10 -0
  113. package/dist/types/CSSColor.js +9 -0
  114. package/{src/dates → dist/types}/CalendarType.js +2 -2
  115. package/dist/types/DataType.js +13 -1
  116. package/dist/types/Float.js +14 -0
  117. package/dist/types/Integer.js +4 -0
  118. package/dist/types/InvisibleMessageMode.js +30 -0
  119. package/dist/types/ItemNavigationBehavior.js +2 -7
  120. package/dist/types/NavigationMode.js +1 -0
  121. package/dist/types/PopupState.js +1 -1
  122. package/dist/types/ValueState.js +2 -1
  123. package/dist/updateShadowRoot.js +30 -0
  124. package/dist/util/AriaLabelHelper.js +41 -0
  125. package/dist/util/Caret.js +45 -0
  126. package/dist/util/ColorConversion.js +370 -0
  127. package/dist/util/FocusableElements.js +25 -8
  128. package/dist/util/HTMLSanitizer.js +7 -0
  129. package/dist/util/InvisibleMessage.js +58 -0
  130. package/dist/util/PopupUtils.js +93 -0
  131. package/dist/util/SlotsHelper.js +43 -0
  132. package/dist/util/StringHelper.js +17 -2
  133. package/dist/util/TabbableElements.js +5 -2
  134. package/dist/util/arraysAreEqual.js +15 -0
  135. package/dist/util/clamp.js +12 -0
  136. package/dist/util/createLinkInHead.js +19 -0
  137. package/dist/util/debounce.js +17 -0
  138. package/dist/util/detectNavigatorLanguage.js +3 -1
  139. package/dist/util/encodeCSS.js +24 -0
  140. package/dist/util/findNodeOwner.js +35 -0
  141. package/dist/util/getActiveElement.js +11 -0
  142. package/dist/util/getClassCopy.js +10 -0
  143. package/dist/util/getEffectiveContentDensity.js +5 -0
  144. package/dist/util/getFileExtension.js +21 -0
  145. package/dist/util/getSingletonElementInstance.js +13 -0
  146. package/dist/util/isElementInView.js +15 -0
  147. package/dist/util/isNodeHidden.js +1 -5
  148. package/dist/util/isNodeTabbable.js +4 -4
  149. package/dist/util/isValidPropertyName.js +11 -2
  150. package/dist/util/setToArray.js +10 -0
  151. package/hash.txt +1 -0
  152. package/index.js +1 -1
  153. package/lib/generate-asset-parameters/index.js +21 -0
  154. package/lib/generate-styles/index.js +18 -0
  155. package/package-scripts.js +41 -18
  156. package/package.json +19 -14
  157. package/src/AssetRegistry.js +8 -6
  158. package/src/Boot.js +43 -0
  159. package/src/CSP.js +59 -0
  160. package/src/CustomElementsRegistry.js +39 -0
  161. package/src/CustomElementsScope.js +108 -0
  162. package/src/DOMObserver.js +65 -0
  163. package/src/Device.js +62 -778
  164. package/src/EventProvider.js +38 -26
  165. package/src/FontFace.js +20 -56
  166. package/src/InitialConfiguration.js +64 -17
  167. package/src/Keys.js +248 -0
  168. package/src/ManagedStyles.js +83 -0
  169. package/src/MediaRange.js +109 -0
  170. package/src/PropertiesFileFormat.js +95 -0
  171. package/src/Render.js +175 -0
  172. package/src/RenderQueue.js +41 -17
  173. package/src/RenderScheduler.js +24 -145
  174. package/src/StaticArea.js +1 -39
  175. package/src/StaticAreaItem.js +65 -40
  176. package/src/SystemCSSVars.js +10 -0
  177. package/src/Theming.js +3 -44
  178. package/src/UI5Element.js +483 -307
  179. package/src/UI5ElementMetadata.js +190 -19
  180. package/src/asset-registries/Icons.js +129 -14
  181. package/src/asset-registries/Illustrations.js +30 -0
  182. package/src/asset-registries/LocaleData.js +108 -50
  183. package/src/asset-registries/Themes.js +35 -32
  184. package/src/asset-registries/i18n.js +80 -34
  185. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  186. package/src/config/AnimationMode.js +16 -2
  187. package/src/config/CalendarType.js +7 -7
  188. package/src/config/FormatSettings.js +5 -1
  189. package/src/config/Language.js +62 -3
  190. package/src/config/NoConflict.js +10 -3
  191. package/src/config/Theme.js +21 -3
  192. package/src/css/FontFace.css +45 -0
  193. package/src/css/OverrideFontFace.css +32 -0
  194. package/src/css/SystemCSSVars.css +17 -0
  195. package/src/delegate/ItemNavigation.js +245 -172
  196. package/src/delegate/ResizeHandler.js +78 -38
  197. package/src/delegate/ScrollEnablement.js +122 -14
  198. package/src/features/OpenUI5Support.js +125 -0
  199. package/src/getSharedResource.js +30 -0
  200. package/src/i18nBundle.js +62 -11
  201. package/src/isLegacyBrowser.js +3 -0
  202. package/src/{Locale.js → locale/Locale.js} +0 -10
  203. package/src/locale/RTLAwareRegistry.js +14 -0
  204. package/src/locale/applyDirection.js +17 -0
  205. package/src/locale/directionChange.js +32 -0
  206. package/src/locale/getEffectiveDir.js +28 -0
  207. package/src/locale/getLocale.js +41 -0
  208. package/src/locale/languageChange.js +22 -0
  209. package/src/locale/nextFallbackLocale.js +28 -0
  210. package/{dist/util → src/locale}/normalizeLocale.js +8 -31
  211. package/src/renderer/LitRenderer.js +26 -7
  212. package/src/renderer/directives/style-map.js +72 -0
  213. package/src/renderer/executeTemplate.js +17 -0
  214. package/src/theming/CustomStyle.js +28 -7
  215. package/src/theming/ThemeLoaded.js +22 -0
  216. package/src/theming/applyTheme.js +75 -0
  217. package/src/theming/getConstructableStyle.js +30 -0
  218. package/src/theming/getEffectiveLinksHrefs.js +20 -0
  219. package/src/theming/getEffectiveStyle.js +30 -0
  220. package/src/theming/getStylesString.js +15 -0
  221. package/src/theming/getThemeDesignerTheme.js +68 -0
  222. package/src/theming/preloadLinks.js +23 -0
  223. package/src/thirdparty/_merge.js +32 -0
  224. package/src/thirdparty/isPlainObject.js +18 -0
  225. package/src/thirdparty/merge.js +10 -0
  226. package/src/types/CSSColor.js +9 -0
  227. package/{dist/dates → src/types}/CalendarType.js +2 -2
  228. package/src/types/DataType.js +13 -1
  229. package/src/types/Float.js +14 -0
  230. package/src/types/Integer.js +4 -0
  231. package/src/types/InvisibleMessageMode.js +30 -0
  232. package/src/types/ItemNavigationBehavior.js +2 -7
  233. package/src/types/NavigationMode.js +1 -0
  234. package/src/types/PopupState.js +1 -1
  235. package/src/types/ValueState.js +2 -1
  236. package/src/updateShadowRoot.js +30 -0
  237. package/src/util/AriaLabelHelper.js +41 -0
  238. package/src/util/Caret.js +45 -0
  239. package/src/util/ColorConversion.js +370 -0
  240. package/src/util/FocusableElements.js +25 -8
  241. package/src/util/HTMLSanitizer.js +7 -0
  242. package/src/util/InvisibleMessage.js +58 -0
  243. package/src/util/PopupUtils.js +93 -0
  244. package/src/util/SlotsHelper.js +43 -0
  245. package/src/util/StringHelper.js +17 -2
  246. package/src/util/TabbableElements.js +5 -2
  247. package/src/util/arraysAreEqual.js +15 -0
  248. package/src/util/clamp.js +12 -0
  249. package/src/util/createLinkInHead.js +19 -0
  250. package/src/util/debounce.js +17 -0
  251. package/src/util/detectNavigatorLanguage.js +3 -1
  252. package/src/util/encodeCSS.js +24 -0
  253. package/src/util/findNodeOwner.js +35 -0
  254. package/src/util/getActiveElement.js +11 -0
  255. package/src/util/getClassCopy.js +10 -0
  256. package/src/util/getEffectiveContentDensity.js +5 -0
  257. package/src/util/getFileExtension.js +21 -0
  258. package/src/util/getSingletonElementInstance.js +13 -0
  259. package/src/util/isElementInView.js +15 -0
  260. package/src/util/isNodeHidden.js +1 -5
  261. package/src/util/isNodeTabbable.js +4 -4
  262. package/src/util/isValidPropertyName.js +11 -2
  263. package/src/util/setToArray.js +10 -0
  264. package/used-modules.txt +7 -0
  265. package/bundle.es5.js +0 -28
  266. package/dist/Assets.js +0 -2
  267. package/dist/CSS.js +0 -48
  268. package/dist/FormatSettings.js +0 -31
  269. package/dist/LocaleProvider.js +0 -34
  270. package/dist/ResourceLoaderOverrides.js +0 -38
  271. package/dist/SVGIconRegistry.js +0 -54
  272. package/dist/boot.js +0 -25
  273. package/dist/compatibility/DOMObserver.js +0 -62
  274. package/dist/compatibility/patchNodeValue.js +0 -24
  275. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  276. package/dist/dates/CalendarDate.js +0 -203
  277. package/dist/dates/CalendarUtils.js +0 -99
  278. package/dist/delegate/CustomResize.js +0 -78
  279. package/dist/delegate/NativeResize.js +0 -44
  280. package/dist/events/PseudoEvents.js +0 -58
  281. package/dist/features/browsersupport/Edge.js +0 -6
  282. package/dist/features/browsersupport/IE11.js +0 -41
  283. package/dist/features/calendar/Buddhist.js +0 -1
  284. package/dist/features/calendar/Islamic.js +0 -1
  285. package/dist/features/calendar/Japanese.js +0 -1
  286. package/dist/features/calendar/Persian.js +0 -1
  287. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
  288. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
  289. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
  290. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
  291. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
  292. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
  293. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
  294. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
  295. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
  296. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
  297. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
  298. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
  299. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
  300. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
  301. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
  302. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
  303. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
  304. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
  305. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
  306. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
  307. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
  308. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
  309. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
  310. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
  311. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
  312. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
  313. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
  314. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
  315. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
  316. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
  317. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
  318. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
  319. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
  320. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
  321. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
  322. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
  323. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
  324. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
  325. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
  326. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
  327. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
  328. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
  329. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
  330. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
  331. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
  332. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
  333. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
  334. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
  335. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
  336. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
  337. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
  338. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
  339. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
  340. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
  341. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
  342. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
  343. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
  344. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
  345. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
  346. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
  347. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
  348. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
  349. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
  350. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
  351. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
  352. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
  353. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
  354. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
  355. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
  356. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
  357. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
  358. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
  359. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
  360. package/dist/json-imports/LocaleData.js +0 -171
  361. package/dist/renderer/ifDefined.js +0 -21
  362. package/dist/resources/bundle.es5.js +0 -212
  363. package/dist/resources/bundle.es5.js.map +0 -1
  364. package/dist/shims/Core-shim.js +0 -52
  365. package/dist/shims/jquery-shim.js +0 -89
  366. package/dist/theming/StyleInjection.js +0 -67
  367. package/dist/thirdparty/Array.from.js +0 -16
  368. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  369. package/dist/thirdparty/Array.prototype.find.js +0 -46
  370. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  371. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  372. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  373. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  374. package/dist/thirdparty/Number.isInteger.js +0 -5
  375. package/dist/thirdparty/Number.isNaN.js +0 -1
  376. package/dist/thirdparty/Number.parseInt.js +0 -1
  377. package/dist/thirdparty/Object.assign.js +0 -31
  378. package/dist/thirdparty/Object.entries.js +0 -11
  379. package/dist/thirdparty/Symbol.js +0 -2
  380. package/dist/thirdparty/WeakSet.js +0 -27
  381. package/dist/thirdparty/events-polyfills.js +0 -89
  382. package/dist/thirdparty/fetch.js +0 -1
  383. package/dist/thirdparty/template.js +0 -600
  384. package/dist/util/CSSTransformUtils.js +0 -90
  385. package/dist/webcomponentsjs/LICENSE.md +0 -19
  386. package/dist/webcomponentsjs/README.md +0 -229
  387. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  388. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  389. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  390. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  391. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  392. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  393. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  394. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  395. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  396. package/dist/webcomponentsjs/package.json +0 -46
  397. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  398. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  399. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  400. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  401. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  402. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  403. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  404. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  405. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  406. package/src/Assets.js +0 -2
  407. package/src/CSS.js +0 -48
  408. package/src/FormatSettings.js +0 -31
  409. package/src/LocaleProvider.js +0 -34
  410. package/src/ResourceLoaderOverrides.js +0 -38
  411. package/src/SVGIconRegistry.js +0 -54
  412. package/src/boot.js +0 -25
  413. package/src/compatibility/DOMObserver.js +0 -62
  414. package/src/compatibility/patchNodeValue.js +0 -24
  415. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  416. package/src/dates/CalendarDate.js +0 -203
  417. package/src/dates/CalendarUtils.js +0 -99
  418. package/src/delegate/CustomResize.js +0 -78
  419. package/src/delegate/NativeResize.js +0 -44
  420. package/src/events/PseudoEvents.js +0 -58
  421. package/src/features/browsersupport/Edge.js +0 -6
  422. package/src/features/browsersupport/IE11.js +0 -41
  423. package/src/features/calendar/Buddhist.js +0 -1
  424. package/src/features/calendar/Islamic.js +0 -1
  425. package/src/features/calendar/Japanese.js +0 -1
  426. package/src/features/calendar/Persian.js +0 -1
  427. package/src/json-imports/LocaleData.js +0 -171
  428. package/src/renderer/ifDefined.js +0 -21
  429. package/src/shims/Core-shim.js +0 -52
  430. package/src/shims/jquery-shim.js +0 -89
  431. package/src/theming/StyleInjection.js +0 -67
  432. package/src/thirdparty/Array.from.js +0 -16
  433. package/src/thirdparty/Array.prototype.fill.js +0 -44
  434. package/src/thirdparty/Array.prototype.find.js +0 -46
  435. package/src/thirdparty/Array.prototype.includes.js +0 -51
  436. package/src/thirdparty/Element.prototype.closest.js +0 -11
  437. package/src/thirdparty/Element.prototype.matches.js +0 -6
  438. package/src/thirdparty/Map.prototype.keys.js +0 -9
  439. package/src/thirdparty/Number.isInteger.js +0 -5
  440. package/src/thirdparty/Number.isNaN.js +0 -1
  441. package/src/thirdparty/Number.parseInt.js +0 -1
  442. package/src/thirdparty/Object.assign.js +0 -31
  443. package/src/thirdparty/Object.entries.js +0 -11
  444. package/src/thirdparty/Symbol.js +0 -2
  445. package/src/thirdparty/WeakSet.js +0 -27
  446. package/src/thirdparty/events-polyfills.js +0 -89
  447. package/src/thirdparty/fetch.js +0 -1
  448. package/src/thirdparty/template.js +0 -600
  449. package/src/util/CSSTransformUtils.js +0 -90
@@ -0,0 +1,58 @@
1
+ import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
2
+ import getSingletonElementInstance from "./getSingletonElementInstance.js";
3
+ import { attachBoot } from "../Boot.js";
4
+
5
+ let politeSpan;
6
+ let assertiveSpan;
7
+
8
+ attachBoot(() => {
9
+ if (politeSpan && assertiveSpan) {
10
+ return;
11
+ }
12
+
13
+ const styles = `position: absolute;
14
+ clip: rect(1px,1px,1px,1px);
15
+ user-select: none;
16
+ left: -1000px;
17
+ top: -1000px;
18
+ pointer-events: none;`;
19
+
20
+ politeSpan = document.createElement("span");
21
+ assertiveSpan = document.createElement("span");
22
+
23
+ politeSpan.classList.add("ui5-invisiblemessage-polite");
24
+ assertiveSpan.classList.add("ui5-invisiblemessage-assertive");
25
+
26
+ politeSpan.setAttribute("aria-live", "polite");
27
+ assertiveSpan.setAttribute("aria-live", "assertive");
28
+
29
+ politeSpan.setAttribute("role", "alert");
30
+ assertiveSpan.setAttribute("role", "alert");
31
+
32
+ politeSpan.style.cssText = styles;
33
+ assertiveSpan.style.cssText = styles;
34
+
35
+ getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
36
+ getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
37
+ });
38
+
39
+ /**
40
+ * Inserts the string into the respective span, depending on the mode provided.
41
+ *
42
+ * @param {string} message String to be announced by the screen reader.
43
+ * @param {sap.ui.core.InvisibleMessageMode} mode The mode to be inserted in the aria-live attribute.
44
+ */
45
+ const announce = (message, mode) => {
46
+ // If no type is presented, fallback to polite announcement.
47
+ const span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;
48
+
49
+ // Set textContent to empty string in order to trigger screen reader's announcement.
50
+ span.textContent = "";
51
+ span.textContent = message;
52
+
53
+ if (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {
54
+ console.warn(`You have entered an invalid mode. Valid values are: "Polite" and "Assertive". The framework will automatically set the mode to "Polite".`); // eslint-disable-line
55
+ }
56
+ };
57
+
58
+ export default announce;
@@ -0,0 +1,93 @@
1
+ import getSharedResource from "../getSharedResource.js";
2
+ import { getFeature } from "../FeaturesRegistry.js";
3
+ import getActiveElement from "./getActiveElement.js";
4
+
5
+ const PopupUtilsData = getSharedResource("PopupUtilsData", {});
6
+ PopupUtilsData.currentZIndex = PopupUtilsData.currentZIndex || 100;
7
+
8
+ const getFocusedElement = () => {
9
+ const element = getActiveElement();
10
+ return (element && typeof element.focus === "function") ? element : null;
11
+ };
12
+
13
+ const isFocusedElementWithinNode = node => {
14
+ const fe = getFocusedElement();
15
+
16
+ if (fe) {
17
+ return isNodeContainedWithin(node, fe);
18
+ }
19
+
20
+ return false;
21
+ };
22
+
23
+ const isNodeContainedWithin = (parent, child) => {
24
+ let currentNode = parent;
25
+
26
+ if (currentNode.shadowRoot) {
27
+ currentNode = Array.from(currentNode.shadowRoot.children).find(n => n.localName !== "style");
28
+ }
29
+
30
+ if (currentNode === child) {
31
+ return true;
32
+ }
33
+
34
+ const childNodes = currentNode.localName === "slot" ? currentNode.assignedNodes() : currentNode.children;
35
+
36
+ if (childNodes) {
37
+ return Array.from(childNodes).some(n => isNodeContainedWithin(n, child));
38
+ }
39
+ };
40
+
41
+ const isPointInRect = (x, y, rect) => {
42
+ return x >= rect.left && x <= rect.right
43
+ && y >= rect.top && y <= rect.bottom;
44
+ };
45
+
46
+ const isClickInRect = (event, rect) => {
47
+ let x;
48
+ let y;
49
+
50
+ if (event.touches) {
51
+ const touch = event.touches[0];
52
+ x = touch.clientX;
53
+ y = touch.clientY;
54
+ } else {
55
+ x = event.clientX;
56
+ y = event.clientY;
57
+ }
58
+
59
+ return isPointInRect(x, y, rect);
60
+ };
61
+
62
+ const getClosedPopupParent = el => {
63
+ const parent = el.parentElement || (el.getRootNode && el.getRootNode().host);
64
+
65
+ if (parent && ((parent.showAt && parent.isUI5Element) || (parent.open && parent.isUI5Element) || parent === document.documentElement)) {
66
+ return parent;
67
+ }
68
+
69
+ return getClosedPopupParent(parent);
70
+ };
71
+
72
+ const getNextZIndex = () => {
73
+ const OpenUI5Support = getFeature("OpenUI5Support");
74
+ if (OpenUI5Support && OpenUI5Support.isLoaded()) { // use OpenUI5 for getting z-index values, if loaded
75
+ return OpenUI5Support.getNextZIndex();
76
+ }
77
+
78
+ PopupUtilsData.currentZIndex += 2;
79
+ return PopupUtilsData.currentZIndex;
80
+ };
81
+
82
+ const getCurrentZIndex = () => {
83
+ return PopupUtilsData.currentZIndex;
84
+ };
85
+
86
+ export {
87
+ getFocusedElement,
88
+ isClickInRect,
89
+ getClosedPopupParent,
90
+ getNextZIndex,
91
+ getCurrentZIndex,
92
+ isFocusedElementWithinNode,
93
+ };
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Determines the slot to which a node should be assigned
3
+ * @param node Text node or HTML element
4
+ * @returns {string}
5
+ */
6
+ const getSlotName = node => {
7
+ // Text nodes can only go to the default slot
8
+ if (!(node instanceof HTMLElement)) {
9
+ return "default";
10
+ }
11
+
12
+ // Discover the slot based on the real slot name (f.e. footer => footer, or content-32 => content)
13
+ const slot = node.getAttribute("slot");
14
+ if (slot) {
15
+ const match = slot.match(/^(.+?)-\d+$/);
16
+ return match ? match[1] : slot;
17
+ }
18
+
19
+ // Use default slot as a fallback
20
+ return "default";
21
+ };
22
+
23
+ const isSlot = el => el && el instanceof HTMLElement && el.localName === "slot";
24
+
25
+ const getSlottedElements = el => {
26
+ if (isSlot(el)) {
27
+ return el.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);
28
+ }
29
+
30
+ return [el];
31
+ };
32
+
33
+ const getSlottedElementsList = elList => {
34
+ const reducer = (acc, curr) => acc.concat(getSlottedElements(curr));
35
+ return elList.reduce(reducer, []);
36
+ };
37
+
38
+ export {
39
+ getSlotName,
40
+ isSlot,
41
+ getSlottedElements,
42
+ getSlottedElementsList,
43
+ };
@@ -1,6 +1,21 @@
1
- const kebabToCamelCase = string => toCamelCase(string.split("-"));
1
+ const kebabToCamelMap = new Map();
2
+ const camelToKebabMap = new Map();
2
3
 
3
- const camelToKebabCase = string => string.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
4
+ const kebabToCamelCase = string => {
5
+ if (!kebabToCamelMap.has(string)) {
6
+ const result = toCamelCase(string.split("-"));
7
+ kebabToCamelMap.set(string, result);
8
+ }
9
+ return kebabToCamelMap.get(string);
10
+ };
11
+
12
+ const camelToKebabCase = string => {
13
+ if (!camelToKebabMap.has(string)) {
14
+ const result = string.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
15
+ camelToKebabMap.set(string, result);
16
+ }
17
+ return camelToKebabMap.get(string);
18
+ };
4
19
 
5
20
  const toCamelCase = parts => {
6
21
  return parts.map((string, index) => {
@@ -1,4 +1,3 @@
1
-
2
1
  import isNodeTabbable from "./isNodeTabbable.js";
3
2
 
4
3
  const getTabbableElements = node => {
@@ -13,8 +12,12 @@ const getLastTabbableElement = node => {
13
12
  const getTabbables = (nodes, tabbables) => {
14
13
  const tabbablesNodes = tabbables || [];
15
14
 
15
+ if (!nodes) {
16
+ return tabbablesNodes;
17
+ }
18
+
16
19
  Array.from(nodes).forEach(currentNode => {
17
- if (currentNode.nodeType === Node.TEXT_NODE) {
20
+ if (currentNode.nodeType === Node.TEXT_NODE || currentNode.nodeType === Node.COMMENT_NODE || currentNode.hasAttribute("data-sap-no-tab-ref")) {
18
21
  return;
19
22
  }
20
23
 
@@ -0,0 +1,15 @@
1
+ const arraysAreEqual = (arr1, arr2) => {
2
+ if (arr1.length !== arr2.length) {
3
+ return false;
4
+ }
5
+
6
+ for (let i = 0; i < arr1.length; i++) {
7
+ if (arr1[i] !== arr2[i]) {
8
+ return false;
9
+ }
10
+ }
11
+
12
+ return true;
13
+ };
14
+
15
+ export default arraysAreEqual;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns a value clamped between an upper bound 'max' and lower bound 'min'.
3
+ * @param {number} val value
4
+ * @param {number} min lower bound
5
+ * @param {number} max upper bound
6
+ * @returns {number}
7
+ */
8
+ const clamp = (val, min, max) => {
9
+ return Math.min(Math.max(val, min), max);
10
+ };
11
+
12
+ export default clamp;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Creates a <link> tag in the <head> tag
3
+ * @param href - the CSS
4
+ * @param attributes - optional attributes to add to the tag
5
+ * @returns {HTMLElement}
6
+ */
7
+ const createLinkInHead = (href, attributes = {}) => {
8
+ const link = document.createElement("link");
9
+ link.type = "text/css";
10
+ link.rel = "stylesheet";
11
+
12
+ Object.entries(attributes).forEach(pair => link.setAttribute(...pair));
13
+
14
+ link.href = href;
15
+ document.head.appendChild(link);
16
+ return link;
17
+ };
18
+
19
+ export default createLinkInHead;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Delays function execution by given threshold.
3
+ * @param fn {Function}
4
+ * @param delay {Integer}
5
+ */
6
+
7
+ let debounceInterval = null;
8
+
9
+ const debounce = (fn, delay) => {
10
+ clearTimeout(debounceInterval);
11
+ debounceInterval = setTimeout(() => {
12
+ debounceInterval = null;
13
+ fn();
14
+ }, delay);
15
+ };
16
+
17
+ export default debounce;
@@ -1,3 +1,5 @@
1
+ import { DEFAULT_LANGUAGE } from "../generated/AssetParameters.js";
2
+
1
3
  export default () => {
2
4
  const browserLanguages = navigator.languages;
3
5
 
@@ -7,5 +9,5 @@ export default () => {
7
9
 
8
10
  const rawLocale = (browserLanguages && browserLanguages[0]) || navigatorLanguage() || navigator.userLanguage || navigator.browserLanguage;
9
11
 
10
- return rawLocale || "en";
12
+ return rawLocale || DEFAULT_LANGUAGE;
11
13
  };
@@ -0,0 +1,24 @@
1
+ const rCSS = /[\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xff\u2028\u2029][0-9A-Fa-f]?/g; // eslint-disable-line
2
+
3
+ const toHex = (iChar, iLength) => {
4
+ let sHex = iChar.toString(16);
5
+ if (iLength) {
6
+ sHex = sHex.padStart(iLength, "0");
7
+ }
8
+ return sHex;
9
+ };
10
+
11
+ const fnCSS = sChar => {
12
+ const iChar = sChar.charCodeAt(0);
13
+ if (sChar.length === 1) {
14
+ return `\\${toHex(iChar)}`;
15
+ }
16
+
17
+ return `\\${toHex(iChar)} ${sChar.substr(1)}`;
18
+ };
19
+
20
+ const encodeCSS = string => {
21
+ return string.replace(rCSS, fnCSS);
22
+ };
23
+
24
+ export default encodeCSS;
@@ -0,0 +1,35 @@
1
+ const findNodeOwner = node => {
2
+ if (!(node instanceof HTMLElement)) {
3
+ throw new Error("Argument node should be of type HTMLElement");
4
+ }
5
+
6
+ const ownerTypes = [HTMLHtmlElement, HTMLIFrameElement];
7
+ let currentShadowRootFlag = true;
8
+ let currentCustomElementFlag = true;
9
+
10
+ while (node) {
11
+ if (node.toString() === "[object ShadowRoot]") {
12
+ // Web Component
13
+ // or the shadow root of web component with attached shadow root
14
+ if (currentShadowRootFlag) {
15
+ currentShadowRootFlag = false;
16
+ }
17
+ if (!currentCustomElementFlag && !currentShadowRootFlag) {
18
+ return node;
19
+ }
20
+ } else if (node.tagName && node.tagName.indexOf("-") > -1) {
21
+ if (currentCustomElementFlag) {
22
+ currentCustomElementFlag = false;
23
+ } else {
24
+ return node;
25
+ }
26
+ } else if (ownerTypes.indexOf(node.constructor) > -1) {
27
+ // Document or Iframe reached
28
+ return node;
29
+ }
30
+
31
+ node = node.parentNode || node.host;
32
+ }
33
+ };
34
+
35
+ export default findNodeOwner;
@@ -0,0 +1,11 @@
1
+ const getActiveElement = () => {
2
+ let element = document.activeElement;
3
+
4
+ while (element && element.shadowRoot && element.shadowRoot.activeElement) {
5
+ element = element.shadowRoot.activeElement;
6
+ }
7
+
8
+ return element;
9
+ };
10
+
11
+ export default getActiveElement;
@@ -0,0 +1,10 @@
1
+ const getClassCopy = (klass, constructorCallback) => {
2
+ return class classCopy extends klass {
3
+ constructor() {
4
+ super();
5
+ constructorCallback && constructorCallback();
6
+ }
7
+ };
8
+ };
9
+
10
+ export default getClassCopy;
@@ -0,0 +1,5 @@
1
+ const GLOBAL_CONTENT_DENSITY_CSS_VAR = "--_ui5_content_density";
2
+
3
+ const getEffectiveContentDensity = el => getComputedStyle(el).getPropertyValue(GLOBAL_CONTENT_DENSITY_CSS_VAR);
4
+
5
+ export default getEffectiveContentDensity;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * "" -> ""
3
+ * "noExtension" -> ""
4
+ * "file.txt" -> ".txt"
5
+ * "file.with.many.dots.doc" -> ".doc"
6
+ * ".gitignore" -> ""
7
+ *
8
+ * @param fileName - the file name
9
+ * @returns {string}
10
+ */
11
+ const getFileExtension = fileName => {
12
+ const dotPos = fileName.lastIndexOf(".");
13
+
14
+ if (dotPos < 1) {
15
+ return "";
16
+ }
17
+
18
+ return fileName.slice(dotPos);
19
+ };
20
+
21
+ export default getFileExtension;
@@ -0,0 +1,13 @@
1
+ const getSingletonElementInstance = (tag, parentElement = document.body) => {
2
+ let el = document.querySelector(tag);
3
+
4
+ if (el) {
5
+ return el;
6
+ }
7
+
8
+ el = document.createElement(tag);
9
+
10
+ return parentElement.insertBefore(el, parentElement.firstChild);
11
+ };
12
+
13
+ export default getSingletonElementInstance;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Determines if the element is within the viewport.
3
+ * @param el {HTMLElement}
4
+ */
5
+ const isElementInView = el => {
6
+ const rect = el.getBoundingClientRect();
7
+
8
+ return (
9
+ rect.top >= 0 && rect.left >= 0
10
+ && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)
11
+ && rect.right <= (window.innerWidth || document.documentElement.clientWidth)
12
+ );
13
+ };
14
+
15
+ export default isElementInView;
@@ -3,11 +3,7 @@ const isNodeHidden = node => {
3
3
  return false;
4
4
  }
5
5
 
6
- const rect = node.getBoundingClientRect();
7
-
8
- return (node.offsetWidth <= 0 && node.offsetHeight <= 0)
9
- || node.style.visibility === "hidden"
10
- || (rect.width === 0 && 0 && rect.height === 0);
6
+ return (node.offsetWidth <= 0 && node.offsetHeight <= 0) || node.style.visibility === "hidden";
11
7
  };
12
8
 
13
9
  export default isNodeHidden;
@@ -15,14 +15,14 @@ const isNodeTabbable = node => {
15
15
  return false;
16
16
  }
17
17
 
18
- if (nodeName === "a" || /input|select|textarea|button|object/.test(nodeName)) {
19
- return !node.disabled;
20
- }
21
-
22
18
  const tabIndex = node.getAttribute("tabindex");
23
19
  if (tabIndex !== null && tabIndex !== undefined) {
24
20
  return parseInt(tabIndex) >= 0;
25
21
  }
22
+
23
+ if (nodeName === "a" || /input|select|textarea|button|object/.test(nodeName)) {
24
+ return !node.disabled;
25
+ }
26
26
  };
27
27
 
28
28
  export default isNodeTabbable;
@@ -1,12 +1,21 @@
1
+ // Note: disabled is present in IE so we explicitly allow it here.
2
+ // Others, such as title/hidden, we explicitly override, so valid too
3
+ const allowList = [
4
+ "disabled",
5
+ "title",
6
+ "hidden",
7
+ "role",
8
+ "draggable",
9
+ ];
10
+
1
11
  /**
2
12
  * Checks whether a property name is valid (does not collide with existing DOM API properties)
3
- * Note: disabled is present in IE so we explicitly allow it here.
4
13
  *
5
14
  * @param name
6
15
  * @returns {boolean}
7
16
  */
8
17
  const isValidPropertyName = name => {
9
- if (name === "disabled") {
18
+ if (allowList.includes(name) || name.startsWith("aria")) {
10
19
  return true;
11
20
  }
12
21
  const classes = [
@@ -0,0 +1,10 @@
1
+ // This is needed as IE11 doesn't have Set.prototype.keys/values/entries, so [...mySet.values()] is not an option
2
+ const setToArray = s => {
3
+ const arr = [];
4
+ s.forEach(item => {
5
+ arr.push(item);
6
+ });
7
+ return arr;
8
+ };
9
+
10
+ export default setToArray;
package/hash.txt ADDED
@@ -0,0 +1 @@
1
+ Wx4+yAG9sYh4qW/UnR3S1MLSOZU=
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import UI5Element from "./src/UI5Element.js";
1
+ import UI5Element from "./dist/UI5Element.js";
2
2
 
3
3
  export default UI5Element;
4
4
  export { UI5Element };
@@ -0,0 +1,21 @@
1
+ const fs = require('fs');
2
+ const mkdirp = require('mkdirp');
3
+ const assets = require('@ui5/webcomponents-tools/assets-meta.js');
4
+
5
+ const fileContent = `const assetParameters = ${JSON.stringify(assets)};
6
+
7
+ const DEFAULT_THEME = assetParameters.themes.default;
8
+ const DEFAULT_LANGUAGE = assetParameters.languages.default;
9
+ const DEFAULT_LOCALE = assetParameters.locales.default;
10
+ const SUPPORTED_LOCALES = assetParameters.locales.all;
11
+
12
+ export {
13
+ DEFAULT_THEME,
14
+ DEFAULT_LANGUAGE,
15
+ DEFAULT_LOCALE,
16
+ SUPPORTED_LOCALES,
17
+ };`;
18
+
19
+ mkdirp.sync("dist/generated/");
20
+ fs.writeFileSync("dist/generated/AssetParameters.js", fileContent);
21
+
@@ -0,0 +1,18 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const mkdirp = require('mkdirp');
4
+ const CleanCSS = require('clean-css');
5
+
6
+ mkdirp.sync("dist/generated/css/");
7
+ fs.readdirSync("src/css/").filter(file => file.endsWith(".css")).forEach(file => {
8
+ let content = fs.readFileSync(path.join("src/css/", file));
9
+ const res = new CleanCSS().minify(`${content}`);
10
+ content = `export default {
11
+ packageName: "@ui5/webcomponents-base",
12
+ fileName: "${file}",
13
+ content: \`${res.styles}\`
14
+ };`;
15
+
16
+ fs.writeFileSync(path.join("dist/generated/css/", `${file}.js`), content);
17
+ });
18
+
@@ -1,39 +1,62 @@
1
- const serveConfig = `../tools/components-package/serve.json`;
2
- const port = `9191`;
1
+ const resolve = require("resolve");
2
+
3
+ const assetParametersScript = resolve.sync("@ui5/webcomponents-base/lib/generate-asset-parameters/index.js");
4
+ const stylesScript = resolve.sync("@ui5/webcomponents-base/lib/generate-styles/index.js");
5
+ const serve = resolve.sync("@ui5/webcomponents-tools/lib/serve/index.js");
6
+ const generateHash = resolve.sync("@ui5/webcomponents-tools/lib/hash/generate.js");
7
+ const hashIsUpToDate = resolve.sync("@ui5/webcomponents-tools/lib/hash/upToDate.js");
8
+ const copyUsedModules = resolve.sync("@ui5/webcomponents-tools/lib/copy-list/index.js");
9
+ const replaceGlobalCore = resolve.sync("@ui5/webcomponents-tools/lib/replace-global-core/index.js");
10
+ const esmAbsToRel = resolve.sync("@ui5/webcomponents-tools/lib/esm-abs-to-rel/index.js");
11
+ const UP_TO_DATE = `node "${hashIsUpToDate}" dist/ hash.txt && echo "Up to date."`;
3
12
 
4
13
  const scripts = {
5
- clean: "rimraf dist",
14
+ clean: "rimraf dist && rimraf .port",
6
15
  lint: "eslint . --config config/.eslintrc.js",
7
- prepare: "nps clean copy",
16
+ prepare: "nps clean integrate copy generateAssetParameters generateStyles",
17
+ integrate: {
18
+ default: "nps integrate.copy-used-modules integrate.copy-overlay integrate.replace-amd integrate.replace-export-true integrate.replace-export-false integrate.amd-to-es6 integrate.replace-global-core-usage integrate.esm-abs-to-rel integrate.third-party",
19
+ "copy-used-modules": `node "${copyUsedModules}" ./used-modules.txt dist/`,
20
+ "copy-overlay": `copy-and-watch "overlay/**/*.js" dist/`,
21
+ "replace-amd": "replace-in-file sap.ui.define define dist/**/*.js",
22
+ "replace-export-true": `replace-in-file ", /* bExport= */ true" "" dist/**/*.js`,
23
+ "replace-export-false": `replace-in-file ", /* bExport= */ false" "" dist/**/*.js`,
24
+ "amd-to-es6": "amdtoes6 --src=dist/ --replace --glob=**/*.js",
25
+ "replace-global-core-usage": `node "${replaceGlobalCore}" dist/`,
26
+ "esm-abs-to-rel": `node "${esmAbsToRel}" dist/ dist/`,
27
+ "third-party": {
28
+ default: "nps integrate.third-party.copy integrate.third-party.fix",
29
+ copy: "mkdirp dist/sap/ui/thirdparty/ && copy-and-watch ../../node_modules/@openui5/sap.ui.core/src/sap/ui/thirdparty/caja-html-sanitizer.js dist/sap/ui/thirdparty/",
30
+ fix: "replace-in-file 240 xA0 dist/sap/ui/thirdparty/caja-html-sanitizer.js"
31
+ },
32
+ },
8
33
  build: {
9
- default: "nps lint prepare build.bundle",
10
- bundle: "rollup --config config/rollup.config.js --environment ES5_BUILD",
34
+ default: `${UP_TO_DATE} || nps lint prepare build.bundle hash`,
35
+ bundle: "rollup --config config/rollup.config.js",
11
36
  },
12
37
  copy: {
13
- default: "nps copy.cldr copy.src copy.test copy.webcomponents-polyfill",
14
- cldr: 'copy-and-watch "../../node_modules/@ui5/webcomponents-utils/dist/**/cldr/*.json" dist/generated/assets/cldr/',
15
- src: "copy-and-watch \"src/**/*.js\" dist/",
16
- test: "copy-and-watch \"test/**/*.*\" dist/test-resources",
17
- "webcomponents-polyfill": "copy-and-watch \"../../node_modules/@webcomponents/webcomponentsjs/**/*.*\" dist/webcomponentsjs/",
38
+ default: "nps copy.src copy.test",
39
+ src: `copy-and-watch "src/**/*.{js,css}" dist/`,
40
+ test: `copy-and-watch "test/**/*.*" dist/test-resources`,
18
41
  },
42
+ generateAssetParameters: `node "${assetParametersScript}"`,
43
+ generateStyles: `node "${stylesScript}"`,
19
44
  watch: {
20
- default: 'concurrently "nps watch.test" "nps watch.src" "nps watch.bundle"',
45
+ default: 'concurrently "nps watch.test" "nps watch.src" "nps watch.bundle" "nps watch.styles"',
21
46
  src: 'nps "copy.src --watch --skip-initial-copy"',
22
47
  test: 'nps "copy.test --watch --skip-initial-copy"',
23
- bundle: "rollup --config config/rollup.config.js -w --environment ES5_BUILD,DEV",
48
+ bundle: "rollup --config config/rollup.config.js -w --environment DEV",
49
+ styles: 'chokidar "src/css/*.css" -c "nps generateStyles"'
24
50
  },
25
51
  dev: 'concurrently "nps serve" "nps watch"',
26
52
  start: "nps prepare dev",
27
- serve: {
28
- default: "nps serve.prepare serve.run",
29
- prepare: `copy-and-watch "${serveConfig}" dist/`,
30
- run: `serve --no-clipboard -l ${port} dist`,
31
- },
53
+ serve: `node "${serve}" --dir="dist/" --port=9191 --packageName="@ui5/webcomponents-base"`,
32
54
  test: {
33
55
  // --success first - report the exit code of the test run (first command to finish), as serve is always terminated and has a non-0 exit code
34
56
  default: 'concurrently "nps serve" "nps test.run" --kill-others --success first',
35
57
  run: "cross-env WDIO_LOG_LEVEL=error FORCE_COLOR=0 wdio config/wdio.conf.js",
36
58
  },
59
+ hash: `node "${generateHash}" dist/ hash.txt`,
37
60
  };
38
61
 
39
62