@ui5/webcomponents-base 0.0.0-32b659ddc → 0.0.0-35e2c9666

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 (454) hide show
  1. package/.eslintignore +4 -0
  2. package/CHANGELOG.md +329 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +17 -12
  5. package/dist/AssetRegistry.js +8 -6
  6. package/dist/Boot.js +59 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +95 -0
  9. package/dist/CustomElementsScope.js +108 -0
  10. package/dist/DOMObserver.js +65 -0
  11. package/dist/Device.js +69 -776
  12. package/dist/EventProvider.js +38 -26
  13. package/dist/FeaturesRegistry.js +4 -1
  14. package/dist/FontFace.js +19 -62
  15. package/dist/InitialConfiguration.js +46 -10
  16. package/dist/Keys.js +295 -0
  17. package/dist/ManagedStyles.js +83 -0
  18. package/dist/MediaRange.js +109 -0
  19. package/dist/PropertiesFileFormat.js +95 -0
  20. package/dist/Render.js +175 -0
  21. package/dist/RenderQueue.js +41 -17
  22. package/dist/RenderScheduler.js +24 -145
  23. package/dist/Runtimes.js +107 -0
  24. package/dist/StaticArea.js +1 -39
  25. package/dist/StaticAreaItem.js +61 -50
  26. package/dist/SystemCSSVars.js +10 -0
  27. package/dist/Theming.js +3 -54
  28. package/dist/UI5Element.js +454 -300
  29. package/dist/UI5ElementMetadata.js +182 -19
  30. package/dist/asset-registries/Icons.js +129 -14
  31. package/dist/asset-registries/Illustrations.js +30 -0
  32. package/dist/asset-registries/LocaleData.js +112 -56
  33. package/dist/asset-registries/Themes.js +35 -32
  34. package/dist/asset-registries/i18n.js +80 -33
  35. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  36. package/dist/config/AnimationMode.js +11 -1
  37. package/dist/config/CalendarType.js +3 -7
  38. package/dist/config/Language.js +58 -2
  39. package/dist/config/Theme.js +27 -2
  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 +101 -19
  46. package/dist/features/F6Navigation.js +108 -0
  47. package/dist/features/OpenUI5Support.js +56 -7
  48. package/dist/generated/AssetParameters.js +13 -0
  49. package/dist/generated/VersionInfo.js +10 -0
  50. package/dist/generated/css/FontFace.css.js +5 -0
  51. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  52. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  53. package/dist/getSharedResource.js +30 -0
  54. package/dist/i18nBundle.js +62 -11
  55. package/dist/isLegacyBrowser.js +3 -0
  56. package/dist/{Locale.js → locale/Locale.js} +0 -10
  57. package/dist/locale/RTLAwareRegistry.js +14 -0
  58. package/dist/locale/applyDirection.js +17 -0
  59. package/dist/locale/directionChange.js +32 -0
  60. package/dist/locale/getEffectiveDir.js +28 -0
  61. package/dist/locale/getLocale.js +41 -0
  62. package/dist/locale/languageChange.js +22 -0
  63. package/dist/locale/nextFallbackLocale.js +28 -0
  64. package/{src/util → dist/locale}/normalizeLocale.js +8 -31
  65. package/dist/renderer/LitRenderer.js +26 -7
  66. package/dist/renderer/directives/style-map.js +72 -0
  67. package/dist/renderer/executeTemplate.js +17 -0
  68. package/dist/resources/bundle.esm.js +20 -106
  69. package/dist/resources/bundle.esm.js.map +1 -1
  70. package/dist/sap/base/Log.js +241 -0
  71. package/dist/sap/base/assert.js +8 -0
  72. package/dist/sap/base/security/URLListValidator.js +148 -0
  73. package/dist/sap/base/security/encodeCSS.js +14 -0
  74. package/dist/sap/base/security/encodeXML.js +23 -0
  75. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  76. package/dist/sap/base/strings/toHex.js +8 -0
  77. package/dist/sap/base/util/now.js +7 -0
  78. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  79. package/dist/test-resources/assets/Themes.js +10 -6
  80. package/dist/test-resources/elements/Parent.js +6 -2
  81. package/dist/test-resources/elements/WithStaticArea.js +77 -0
  82. package/dist/test-resources/pages/AllTestElements.html +5 -3
  83. package/dist/test-resources/pages/Configuration.html +0 -2
  84. package/dist/test-resources/pages/ConfigurationScript.html +1 -3
  85. package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
  86. package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
  87. package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
  88. package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
  89. package/dist/test-resources/pages/i18n.html +33 -0
  90. package/dist/test-resources/specs/ConfigurationChange.spec.js +11 -9
  91. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  92. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  93. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  94. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  95. package/dist/test-resources/specs/StaticArea.spec.js +78 -0
  96. package/dist/test-resources/specs/Theming.spec.js +12 -10
  97. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  98. package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
  99. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  100. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  101. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  102. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  103. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  104. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  105. package/dist/theming/CustomStyle.js +47 -6
  106. package/dist/theming/ThemeLoaded.js +22 -0
  107. package/dist/theming/applyTheme.js +79 -0
  108. package/dist/theming/getConstructableStyle.js +30 -0
  109. package/dist/theming/getEffectiveLinksHrefs.js +20 -0
  110. package/dist/theming/getEffectiveStyle.js +30 -0
  111. package/dist/theming/getStylesString.js +15 -0
  112. package/dist/theming/getThemeDesignerTheme.js +87 -0
  113. package/dist/theming/preloadLinks.js +23 -0
  114. package/dist/thirdparty/_merge.js +32 -0
  115. package/dist/thirdparty/isPlainObject.js +18 -0
  116. package/dist/thirdparty/merge.js +10 -0
  117. package/dist/types/CSSColor.js +9 -0
  118. package/{src/dates → dist/types}/CalendarType.js +2 -2
  119. package/dist/types/DataType.js +13 -1
  120. package/dist/types/Float.js +14 -0
  121. package/dist/types/Integer.js +4 -0
  122. package/dist/types/InvisibleMessageMode.js +30 -0
  123. package/dist/types/ItemNavigationBehavior.js +2 -7
  124. package/dist/types/NavigationMode.js +1 -0
  125. package/dist/types/PopupState.js +1 -1
  126. package/dist/types/ValueState.js +1 -1
  127. package/dist/updateShadowRoot.js +30 -0
  128. package/dist/util/AriaLabelHelper.js +41 -0
  129. package/dist/util/Caret.js +45 -0
  130. package/dist/util/ColorConversion.js +370 -0
  131. package/dist/util/FocusableElements.js +30 -11
  132. package/dist/util/HTMLSanitizer.js +7 -0
  133. package/dist/util/InvisibleMessage.js +60 -0
  134. package/dist/util/PopupUtils.js +93 -0
  135. package/dist/util/SlotsHelper.js +43 -0
  136. package/dist/util/TabbableElements.js +9 -2
  137. package/dist/util/arraysAreEqual.js +15 -0
  138. package/dist/util/clamp.js +12 -0
  139. package/dist/util/createLinkInHead.js +19 -0
  140. package/dist/util/debounce.js +17 -0
  141. package/dist/util/detectNavigatorLanguage.js +3 -1
  142. package/dist/util/escapeRegex.js +10 -0
  143. package/dist/util/findNodeOwner.js +35 -0
  144. package/dist/util/generateHighlightedMarkup.js +42 -0
  145. package/dist/util/getActiveElement.js +11 -0
  146. package/dist/util/getClassCopy.js +10 -0
  147. package/dist/util/getEffectiveContentDensity.js +5 -0
  148. package/dist/util/getFileExtension.js +21 -0
  149. package/dist/util/getSingletonElementInstance.js +13 -0
  150. package/dist/util/isElementInView.js +15 -0
  151. package/dist/util/isNodeHidden.js +1 -5
  152. package/dist/util/isNodeTabbable.js +4 -4
  153. package/dist/util/isValidPropertyName.js +11 -2
  154. package/dist/util/setToArray.js +10 -0
  155. package/hash.txt +1 -0
  156. package/index.js +1 -1
  157. package/lib/generate-asset-parameters/index.js +21 -0
  158. package/lib/generate-styles/index.js +18 -0
  159. package/lib/generate-version-info/index.js +27 -0
  160. package/package-scripts.js +38 -18
  161. package/package.json +19 -13
  162. package/src/AssetRegistry.js +8 -6
  163. package/src/Boot.js +59 -0
  164. package/src/CSP.js +59 -0
  165. package/src/CustomElementsRegistry.js +95 -0
  166. package/src/CustomElementsScope.js +108 -0
  167. package/src/DOMObserver.js +65 -0
  168. package/src/Device.js +69 -776
  169. package/src/EventProvider.js +38 -26
  170. package/src/FeaturesRegistry.js +4 -1
  171. package/src/FontFace.js +19 -62
  172. package/src/InitialConfiguration.js +46 -10
  173. package/src/Keys.js +295 -0
  174. package/src/ManagedStyles.js +83 -0
  175. package/src/MediaRange.js +109 -0
  176. package/src/PropertiesFileFormat.js +95 -0
  177. package/src/Render.js +175 -0
  178. package/src/RenderQueue.js +41 -17
  179. package/src/RenderScheduler.js +24 -145
  180. package/src/Runtimes.js +107 -0
  181. package/src/StaticArea.js +1 -39
  182. package/src/StaticAreaItem.js +61 -50
  183. package/src/SystemCSSVars.js +10 -0
  184. package/src/Theming.js +3 -54
  185. package/src/UI5Element.js +454 -300
  186. package/src/UI5ElementMetadata.js +182 -19
  187. package/src/asset-registries/Icons.js +129 -14
  188. package/src/asset-registries/Illustrations.js +30 -0
  189. package/src/asset-registries/LocaleData.js +112 -56
  190. package/src/asset-registries/Themes.js +35 -32
  191. package/src/asset-registries/i18n.js +80 -33
  192. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  193. package/src/config/AnimationMode.js +11 -1
  194. package/src/config/CalendarType.js +3 -7
  195. package/src/config/Language.js +58 -2
  196. package/src/config/Theme.js +27 -2
  197. package/src/css/FontFace.css +45 -0
  198. package/src/css/OverrideFontFace.css +32 -0
  199. package/src/css/SystemCSSVars.css +17 -0
  200. package/src/delegate/ItemNavigation.js +245 -172
  201. package/src/delegate/ResizeHandler.js +78 -38
  202. package/src/delegate/ScrollEnablement.js +101 -19
  203. package/src/features/F6Navigation.js +108 -0
  204. package/src/features/OpenUI5Support.js +56 -7
  205. package/src/getSharedResource.js +30 -0
  206. package/src/i18nBundle.js +62 -11
  207. package/src/isLegacyBrowser.js +3 -0
  208. package/src/{Locale.js → locale/Locale.js} +0 -10
  209. package/src/locale/RTLAwareRegistry.js +14 -0
  210. package/src/locale/applyDirection.js +17 -0
  211. package/src/locale/directionChange.js +32 -0
  212. package/src/locale/getEffectiveDir.js +28 -0
  213. package/src/locale/getLocale.js +41 -0
  214. package/src/locale/languageChange.js +22 -0
  215. package/src/locale/nextFallbackLocale.js +28 -0
  216. package/{dist/util → src/locale}/normalizeLocale.js +8 -31
  217. package/src/renderer/LitRenderer.js +26 -7
  218. package/src/renderer/directives/style-map.js +72 -0
  219. package/src/renderer/executeTemplate.js +17 -0
  220. package/src/theming/CustomStyle.js +47 -6
  221. package/src/theming/ThemeLoaded.js +22 -0
  222. package/src/theming/applyTheme.js +79 -0
  223. package/src/theming/getConstructableStyle.js +30 -0
  224. package/src/theming/getEffectiveLinksHrefs.js +20 -0
  225. package/src/theming/getEffectiveStyle.js +30 -0
  226. package/src/theming/getStylesString.js +15 -0
  227. package/src/theming/getThemeDesignerTheme.js +87 -0
  228. package/src/theming/preloadLinks.js +23 -0
  229. package/src/thirdparty/_merge.js +32 -0
  230. package/src/thirdparty/isPlainObject.js +18 -0
  231. package/src/thirdparty/merge.js +10 -0
  232. package/src/types/CSSColor.js +9 -0
  233. package/{dist/dates → src/types}/CalendarType.js +2 -2
  234. package/src/types/DataType.js +13 -1
  235. package/src/types/Float.js +14 -0
  236. package/src/types/Integer.js +4 -0
  237. package/src/types/InvisibleMessageMode.js +30 -0
  238. package/src/types/ItemNavigationBehavior.js +2 -7
  239. package/src/types/NavigationMode.js +1 -0
  240. package/src/types/PopupState.js +1 -1
  241. package/src/types/ValueState.js +1 -1
  242. package/src/updateShadowRoot.js +30 -0
  243. package/src/util/AriaLabelHelper.js +41 -0
  244. package/src/util/Caret.js +45 -0
  245. package/src/util/ColorConversion.js +370 -0
  246. package/src/util/FocusableElements.js +30 -11
  247. package/src/util/HTMLSanitizer.js +7 -0
  248. package/src/util/InvisibleMessage.js +60 -0
  249. package/src/util/PopupUtils.js +93 -0
  250. package/src/util/SlotsHelper.js +43 -0
  251. package/src/util/TabbableElements.js +9 -2
  252. package/src/util/arraysAreEqual.js +15 -0
  253. package/src/util/clamp.js +12 -0
  254. package/src/util/createLinkInHead.js +19 -0
  255. package/src/util/debounce.js +17 -0
  256. package/src/util/detectNavigatorLanguage.js +3 -1
  257. package/src/util/escapeRegex.js +10 -0
  258. package/src/util/findNodeOwner.js +35 -0
  259. package/src/util/generateHighlightedMarkup.js +42 -0
  260. package/src/util/getActiveElement.js +11 -0
  261. package/src/util/getClassCopy.js +10 -0
  262. package/src/util/getEffectiveContentDensity.js +5 -0
  263. package/src/util/getFileExtension.js +21 -0
  264. package/src/util/getSingletonElementInstance.js +13 -0
  265. package/src/util/isElementInView.js +15 -0
  266. package/src/util/isNodeHidden.js +1 -5
  267. package/src/util/isNodeTabbable.js +4 -4
  268. package/src/util/isValidPropertyName.js +11 -2
  269. package/src/util/setToArray.js +10 -0
  270. package/used-modules.txt +10 -0
  271. package/bundle.es5.js +0 -28
  272. package/dist/Assets.js +0 -2
  273. package/dist/CSS.js +0 -48
  274. package/dist/FormatSettings.js +0 -31
  275. package/dist/LocaleProvider.js +0 -34
  276. package/dist/ResourceLoaderOverrides.js +0 -38
  277. package/dist/SVGIconRegistry.js +0 -54
  278. package/dist/boot.js +0 -32
  279. package/dist/compatibility/DOMObserver.js +0 -62
  280. package/dist/compatibility/patchNodeValue.js +0 -24
  281. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  282. package/dist/dates/CalendarDate.js +0 -203
  283. package/dist/dates/CalendarUtils.js +0 -99
  284. package/dist/delegate/CustomResize.js +0 -78
  285. package/dist/delegate/NativeResize.js +0 -44
  286. package/dist/events/PseudoEvents.js +0 -58
  287. package/dist/features/browsersupport/Edge.js +0 -6
  288. package/dist/features/browsersupport/IE11.js +0 -41
  289. package/dist/features/calendar/Buddhist.js +0 -1
  290. package/dist/features/calendar/Islamic.js +0 -1
  291. package/dist/features/calendar/Japanese.js +0 -1
  292. package/dist/features/calendar/Persian.js +0 -1
  293. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5906
  294. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5906
  295. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5906
  296. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4979
  297. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4996
  298. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5498
  299. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4888
  300. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4916
  301. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4917
  302. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4915
  303. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4883
  304. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4883
  305. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4970
  306. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4962
  307. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4971
  308. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4977
  309. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4971
  310. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4972
  311. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4971
  312. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4972
  313. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4973
  314. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4972
  315. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4912
  316. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4914
  317. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4913
  318. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4914
  319. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4913
  320. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4915
  321. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4913
  322. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4915
  323. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4914
  324. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4967
  325. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4883
  326. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -5008
  327. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4979
  328. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4979
  329. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4973
  330. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4997
  331. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4979
  332. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5378
  333. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4829
  334. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4919
  335. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4856
  336. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4658
  337. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4950
  338. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4950
  339. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4830
  340. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4725
  341. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4738
  342. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5481
  343. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -5112
  344. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4515
  345. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4977
  346. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4884
  347. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4884
  348. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5176
  349. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4805
  350. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4940
  351. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -5090
  352. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5407
  353. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5407
  354. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5370
  355. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5340
  356. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -5126
  357. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -5011
  358. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4797
  359. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4979
  360. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5353
  361. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4673
  362. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4632
  363. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4640
  364. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4640
  365. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4728
  366. package/dist/json-imports/LocaleData.js +0 -171
  367. package/dist/renderer/ifDefined.js +0 -21
  368. package/dist/resources/bundle.es5.js +0 -212
  369. package/dist/resources/bundle.es5.js.map +0 -1
  370. package/dist/shims/Core-shim.js +0 -53
  371. package/dist/test-resources/dev-helpers/ExternalThemePresent.js +0 -3
  372. package/dist/theming/StyleInjection.js +0 -67
  373. package/dist/thirdparty/Array.from.js +0 -16
  374. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  375. package/dist/thirdparty/Array.prototype.find.js +0 -46
  376. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  377. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  378. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  379. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  380. package/dist/thirdparty/Number.isInteger.js +0 -5
  381. package/dist/thirdparty/Number.isNaN.js +0 -1
  382. package/dist/thirdparty/Number.parseInt.js +0 -1
  383. package/dist/thirdparty/Object.assign.js +0 -31
  384. package/dist/thirdparty/Object.entries.js +0 -11
  385. package/dist/thirdparty/Symbol.js +0 -2
  386. package/dist/thirdparty/WeakSet.js +0 -27
  387. package/dist/thirdparty/events-polyfills.js +0 -89
  388. package/dist/thirdparty/fetch.js +0 -1
  389. package/dist/thirdparty/template.js +0 -600
  390. package/dist/util/CSSTransformUtils.js +0 -90
  391. package/dist/webcomponentsjs/LICENSE.md +0 -19
  392. package/dist/webcomponentsjs/README.md +0 -229
  393. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  394. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  395. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  396. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  397. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  398. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  399. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  400. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  401. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  402. package/dist/webcomponentsjs/package.json +0 -46
  403. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  404. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  405. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  406. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  407. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  408. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  409. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  410. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  411. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  412. package/src/Assets.js +0 -2
  413. package/src/CSS.js +0 -48
  414. package/src/FormatSettings.js +0 -31
  415. package/src/LocaleProvider.js +0 -34
  416. package/src/ResourceLoaderOverrides.js +0 -38
  417. package/src/SVGIconRegistry.js +0 -54
  418. package/src/boot.js +0 -32
  419. package/src/compatibility/DOMObserver.js +0 -62
  420. package/src/compatibility/patchNodeValue.js +0 -24
  421. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  422. package/src/dates/CalendarDate.js +0 -203
  423. package/src/dates/CalendarUtils.js +0 -99
  424. package/src/delegate/CustomResize.js +0 -78
  425. package/src/delegate/NativeResize.js +0 -44
  426. package/src/events/PseudoEvents.js +0 -58
  427. package/src/features/browsersupport/Edge.js +0 -6
  428. package/src/features/browsersupport/IE11.js +0 -41
  429. package/src/features/calendar/Buddhist.js +0 -1
  430. package/src/features/calendar/Islamic.js +0 -1
  431. package/src/features/calendar/Japanese.js +0 -1
  432. package/src/features/calendar/Persian.js +0 -1
  433. package/src/json-imports/LocaleData.js +0 -171
  434. package/src/renderer/ifDefined.js +0 -21
  435. package/src/shims/Core-shim.js +0 -53
  436. package/src/theming/StyleInjection.js +0 -67
  437. package/src/thirdparty/Array.from.js +0 -16
  438. package/src/thirdparty/Array.prototype.fill.js +0 -44
  439. package/src/thirdparty/Array.prototype.find.js +0 -46
  440. package/src/thirdparty/Array.prototype.includes.js +0 -51
  441. package/src/thirdparty/Element.prototype.closest.js +0 -11
  442. package/src/thirdparty/Element.prototype.matches.js +0 -6
  443. package/src/thirdparty/Map.prototype.keys.js +0 -9
  444. package/src/thirdparty/Number.isInteger.js +0 -5
  445. package/src/thirdparty/Number.isNaN.js +0 -1
  446. package/src/thirdparty/Number.parseInt.js +0 -1
  447. package/src/thirdparty/Object.assign.js +0 -31
  448. package/src/thirdparty/Object.entries.js +0 -11
  449. package/src/thirdparty/Symbol.js +0 -2
  450. package/src/thirdparty/WeakSet.js +0 -27
  451. package/src/thirdparty/events-polyfills.js +0 -89
  452. package/src/thirdparty/fetch.js +0 -1
  453. package/src/thirdparty/template.js +0 -600
  454. package/src/util/CSSTransformUtils.js +0 -90
@@ -0,0 +1,370 @@
1
+ /**
2
+ *
3
+ * @param {String} color Color in one of the following formats: RGBA or HEX
4
+ */
5
+
6
+ /**
7
+ * Map of CSS colors to hex representation
8
+ */
9
+ const CSSColors = {
10
+ aliceblue: "f0f8ff",
11
+ antiquewhite: "faebd7",
12
+ aqua: "00ffff",
13
+ aquamarine: "7fffd4",
14
+ azure: "f0ffff",
15
+ beige: "f5f5dc",
16
+ bisque: "ffe4c4",
17
+ black: "000000",
18
+ blanchedalmond: "ffebcd",
19
+ blue: "0000ff",
20
+ blueviolet: "8a2be2",
21
+ brown: "a52a2a",
22
+ burlywood: "deb887",
23
+ cadetblue: "5f9ea0",
24
+ chartreuse: "7fff00",
25
+ chocolate: "d2691e",
26
+ coral: "ff7f50",
27
+ cornflowerblue: "6495ed",
28
+ cornsilk: "fff8dc",
29
+ crimson: "dc143c",
30
+ cyan: "00ffff",
31
+ darkblue: "00008b",
32
+ darkcyan: "008b8b",
33
+ darkgoldenrod: "b8860b",
34
+ darkgray: "a9a9a9",
35
+ darkgrey: "a9a9a9",
36
+ darkgreen: "006400",
37
+ darkkhaki: "bdb76b",
38
+ darkmagenta: "8b008b",
39
+ darkolivegreen: "556b2f",
40
+ darkorange: "ff8c00",
41
+ darkorchid: "9932cc",
42
+ darkred: "8b0000",
43
+ darksalmon: "e9967a",
44
+ darkseagreen: "8fbc8f",
45
+ darkslateblue: "483d8b",
46
+ darkslategray: "2f4f4f",
47
+ darkslategrey: "2f4f4f",
48
+ darkturquoise: "00ced1",
49
+ darkviolet: "9400d3",
50
+ deeppink: "ff1493",
51
+ deepskyblue: "00bfff",
52
+ dimgray: "696969",
53
+ dimgrey: "696969",
54
+ dodgerblue: "1e90ff",
55
+ firebrick: "b22222",
56
+ floralwhite: "fffaf0",
57
+ forestgreen: "228b22",
58
+ fuchsia: "ff00ff",
59
+ gainsboro: "dcdcdc",
60
+ ghostwhite: "f8f8ff",
61
+ gold: "ffd700",
62
+ goldenrod: "daa520",
63
+ gray: "808080",
64
+ grey: "808080",
65
+ green: "008000",
66
+ greenyellow: "adff2f",
67
+ honeydew: "f0fff0",
68
+ hotpink: "ff69b4",
69
+ indianred: "cd5c5c",
70
+ indigo: "4b0082",
71
+ ivory: "fffff0",
72
+ khaki: "f0e68c",
73
+ lavender: "e6e6fa",
74
+ lavenderblush: "fff0f5",
75
+ lawngreen: "7cfc00",
76
+ lemonchiffon: "fffacd",
77
+ lightblue: "add8e6",
78
+ lightcoral: "f08080",
79
+ lightcyan: "e0ffff",
80
+ lightgoldenrodyellow: "fafad2",
81
+ lightgray: "d3d3d3",
82
+ lightgrey: "d3d3d3",
83
+ lightgreen: "90ee90",
84
+ lightpink: "ffb6c1",
85
+ lightsalmon: "ffa07a",
86
+ lightseagreen: "20b2aa",
87
+ lightskyblue: "87cefa",
88
+ lightslategray: "778899",
89
+ lightslategrey: "778899",
90
+ lightsteelblue: "b0c4de",
91
+ lightyellow: "ffffe0",
92
+ lime: "00ff00",
93
+ limegreen: "32cd32",
94
+ linen: "faf0e6",
95
+ magenta: "ff00ff",
96
+ maroon: "800000",
97
+ mediumaquamarine: "66cdaa",
98
+ mediumblue: "0000cd",
99
+ mediumorchid: "ba55d3",
100
+ mediumpurple: "9370db",
101
+ mediumseagreen: "3cb371",
102
+ mediumslateblue: "7b68ee",
103
+ mediumspringgreen: "00fa9a",
104
+ mediumturquoise: "48d1cc",
105
+ mediumvioletred: "c71585",
106
+ midnightblue: "191970",
107
+ mintcream: "f5fffa",
108
+ mistyrose: "ffe4e1",
109
+ moccasin: "ffe4b5",
110
+ navajowhite: "ffdead",
111
+ navy: "000080",
112
+ oldlace: "fdf5e6",
113
+ olive: "808000",
114
+ olivedrab: "6b8e23",
115
+ orange: "ffa500",
116
+ orangered: "ff4500",
117
+ orchid: "da70d6",
118
+ palegoldenrod: "eee8aa",
119
+ palegreen: "98fb98",
120
+ paleturquoise: "afeeee",
121
+ palevioletred: "db7093",
122
+ papayawhip: "ffefd5",
123
+ peachpuff: "ffdab9",
124
+ peru: "cd853f",
125
+ pink: "ffc0cb",
126
+ plum: "dda0dd",
127
+ powderblue: "b0e0e6",
128
+ purple: "800080",
129
+ red: "ff0000",
130
+ rosybrown: "bc8f8f",
131
+ royalblue: "4169e1",
132
+ saddlebrown: "8b4513",
133
+ salmon: "fa8072",
134
+ sandybrown: "f4a460",
135
+ seagreen: "2e8b57",
136
+ seashell: "fff5ee",
137
+ sienna: "a0522d",
138
+ silver: "c0c0c0",
139
+ skyblue: "87ceeb",
140
+ slateblue: "6a5acd",
141
+ slategray: "708090",
142
+ slategrey: "708090",
143
+ snow: "fffafa",
144
+ springgreen: "00ff7f",
145
+ steelblue: "4682b4",
146
+ tan: "d2b48c",
147
+ teal: "008080",
148
+ thistle: "d8bfd8",
149
+ tomato: "ff6347",
150
+ turquoise: "40e0d0",
151
+ violet: "ee82ee",
152
+ wheat: "f5deb3",
153
+ white: "ffffff",
154
+ whitesmoke: "f5f5f5",
155
+ yellow: "ffff00",
156
+ yellowgreen: "9acd32",
157
+ transparent: "00000000",
158
+ };
159
+
160
+ const getRGBColor = color => {
161
+ if (color.startsWith("rgba")) {
162
+ return RGBAToRGB(color);
163
+ }
164
+
165
+ if (color.startsWith("rgb")) {
166
+ return RGBToRGB(color);
167
+ }
168
+
169
+ // HEX
170
+ if (color.indexOf("#") === 0) {
171
+ // Shorthand Syntax
172
+ if (color.length === 4) {
173
+ color = `${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}`;
174
+ } else {
175
+ color = color.slice(1, color.length);
176
+ }
177
+ }
178
+
179
+ // Css Color
180
+ if (Object.keys(CSSColors).includes(color)) {
181
+ color = CSSColors[color];
182
+ }
183
+
184
+ return HEXToRGB(color);
185
+ };
186
+
187
+ /**
188
+ * Return an object with the properties for each of the main colors(red, green, blue)
189
+ * @param {String} color Receives a color in the following format: "rgba(0, 0, 0, 1)
190
+ */
191
+ const RGBAToRGB = color => {
192
+ const openingBracketIndex = color.indexOf("("),
193
+ commasIndexes = [];
194
+
195
+ for (let i = 0; i < color.length; i++) {
196
+ if (color[i] === ",") {
197
+ commasIndexes.push(i);
198
+ }
199
+ }
200
+
201
+ return {
202
+ r: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),
203
+ g: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),
204
+ b: parseInt(color.slice(commasIndexes[1] + 1, commasIndexes[2]).trim()),
205
+ };
206
+ };
207
+
208
+ /**
209
+ * Return an object with the properties for each of the main colors(red, green, blue)
210
+ * @param {String} color Receives a color in the following format: "rgb(0, 0, 0)
211
+ */
212
+ const RGBToRGB = color => {
213
+ const openingBracketIndex = color.indexOf("("),
214
+ closingBraketIndex = color.indexOf(")"),
215
+ commasIndexes = [];
216
+
217
+ for (let i = 0; i < color.length; i++) {
218
+ if (color[i] === ",") {
219
+ commasIndexes.push(i);
220
+ }
221
+ }
222
+
223
+ return {
224
+ r: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),
225
+ g: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),
226
+ b: parseInt(color.slice(commasIndexes[1] + 1, closingBraketIndex).trim()),
227
+ };
228
+ };
229
+
230
+ const HSLToRGB = (color = {
231
+ h: undefined,
232
+ s: undefined,
233
+ l: undefined,
234
+ }) => {
235
+ // Formula taken from https://www.rapidtables.com/convert/color/hsl-to-rgb.html
236
+ const C = (1 - Math.abs((2 * color.l) - 1)) * color.s,
237
+ X = C * (1 - Math.abs(((color.h / 60) % 2) - 1)),
238
+ m = color.l - C / 2;
239
+
240
+ let tempColor = {};
241
+ switch (Math.round(color.h / 60)) {
242
+ // 0 ≤ H < 60
243
+ case 0:
244
+ tempColor = {
245
+ r: C,
246
+ g: X,
247
+ b: 0,
248
+ };
249
+ break;
250
+
251
+ // 60 ≤ H < 120
252
+ case 1:
253
+ tempColor = {
254
+ r: X,
255
+ g: C,
256
+ b: 0,
257
+ };
258
+ break;
259
+
260
+ // 120 ≤ H < 180
261
+ case 2:
262
+ tempColor = {
263
+ r: 0,
264
+ g: C,
265
+ b: X,
266
+ };
267
+ break;
268
+
269
+ // 180 ≤ H < 240
270
+ case 3:
271
+ tempColor = {
272
+ r: 0,
273
+ g: X,
274
+ b: C,
275
+ };
276
+ break;
277
+
278
+ // 240 ≤ H < 300
279
+ case 4:
280
+ tempColor = {
281
+ r: X,
282
+ g: 0,
283
+ b: C,
284
+ };
285
+ break;
286
+
287
+ // 300 ≤ H < 360
288
+ default:
289
+ tempColor = {
290
+ r: C,
291
+ g: 0,
292
+ b: X,
293
+ };
294
+ }
295
+
296
+ return {
297
+ r: Math.floor((tempColor.r + m) * 255),
298
+ g: Math.floor((tempColor.g + m) * 255),
299
+ b: Math.floor((tempColor.b + m) * 255),
300
+ };
301
+ };
302
+
303
+ const HEXToRGB = hex => {
304
+ // Please make sure you pass a valid 6 digit hex color
305
+ // In the implementation of this method we assume that the hex argument is a 6 digit valid hex color
306
+
307
+ const rgbValues = {
308
+ r: hex.substr(0, 2),
309
+ g: hex.substr(2, 2),
310
+ b: hex.substr(4, 2),
311
+ };
312
+
313
+ const rgbKeys = Object.keys(rgbValues);
314
+
315
+ rgbKeys.forEach(key => {
316
+ rgbValues[key] = parseInt(rgbValues[key], 16);
317
+ });
318
+
319
+ return rgbValues;
320
+ };
321
+
322
+ const RGBToHSL = (color = {
323
+ r: undefined,
324
+ g: undefined,
325
+ b: undefined,
326
+ }) => {
327
+ const R = color.r / 255,
328
+ G = color.g / 255,
329
+ B = color.b / 255,
330
+ max = Math.max(R, G, B),
331
+ min = Math.min(R, G, B),
332
+ delta = max - min;
333
+
334
+ let h,
335
+ s;
336
+
337
+ // Hue calculation
338
+ if (delta === 0) {
339
+ h = 0;
340
+ } else if (max === R) {
341
+ h = 60 * (((G - B) / delta) % 6);
342
+ } else if (max === G) {
343
+ h = 60 * (((B - R) / delta) + 2);
344
+ } else if (max === B) {
345
+ h = 60 * (((R - G) / delta) + 4);
346
+ }
347
+
348
+ // Lightness calculation
349
+ const l = (max + min) / 2;
350
+
351
+ // Saturation calculation
352
+ if (delta === 0) {
353
+ s = 0;
354
+ } else {
355
+ s = delta / (1 - Math.abs(2 * l - 1));
356
+ }
357
+
358
+ return {
359
+ h,
360
+ s,
361
+ l,
362
+ };
363
+ };
364
+
365
+ export {
366
+ getRGBColor,
367
+ HSLToRGB,
368
+ HEXToRGB,
369
+ RGBToHSL,
370
+ };
@@ -1,48 +1,65 @@
1
- import UI5Element from "../UI5Element.js";
2
1
  import isNodeHidden from "./isNodeHidden.js";
3
2
  import isNodeClickable from "./isNodeClickable.js";
4
3
 
5
- const getFirstFocusableElement = container => {
4
+ const isFocusTrap = el => {
5
+ return el.hasAttribute("data-ui5-focus-trap");
6
+ };
7
+
8
+ const getFirstFocusableElement = async (container, startFromContainer) => {
6
9
  if (!container || isNodeHidden(container)) {
7
10
  return null;
8
11
  }
9
12
 
10
- return findFocusableElement(container, true);
13
+ return findFocusableElement(container, true, startFromContainer);
11
14
  };
12
15
 
13
- const getLastFocusableElement = container => {
16
+ const getLastFocusableElement = async (container, startFromContainer) => {
14
17
  if (!container || isNodeHidden(container)) {
15
18
  return null;
16
19
  }
17
20
 
18
- return findFocusableElement(container, false);
21
+ return findFocusableElement(container, false, startFromContainer);
19
22
  };
20
23
 
21
- const findFocusableElement = (container, forward) => {
24
+ const isElemFocusable = el => {
25
+ return el.hasAttribute("data-ui5-focus-redirect") || !isNodeHidden(el);
26
+ };
27
+
28
+ const findFocusableElement = async (container, forward, startFromContainer) => {
22
29
  let child;
23
- if (container.assignedNodes && container.assignedNodes()) {
30
+
31
+ if (container.shadowRoot) {
32
+ child = forward ? container.shadowRoot.firstChild : container.shadowRoot.lastChild;
33
+ } else if (container.assignedNodes && container.assignedNodes()) {
24
34
  const assignedElements = container.assignedNodes();
25
35
  child = forward ? assignedElements[0] : assignedElements[assignedElements.length - 1];
36
+ } else if (startFromContainer) {
37
+ child = container;
26
38
  } else {
27
- child = forward ? container.firstChild : container.lastChild;
39
+ child = forward ? container.firstElementChild : container.lastElementChild;
28
40
  }
29
41
 
30
42
  let focusableDescendant;
31
43
 
44
+ /* eslint-disable no-await-in-loop */
45
+
32
46
  while (child) {
33
47
  const originalChild = child;
34
48
 
35
- child = child instanceof UI5Element ? child.getFocusDomRef() : child;
49
+ if (child.isUI5Element) {
50
+ child = await child.getFocusDomRefAsync();
51
+ }
52
+
36
53
  if (!child) {
37
54
  return null;
38
55
  }
39
56
 
40
- if (child.nodeType === 1 && !isNodeHidden(child)) {
57
+ if (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {
41
58
  if (isNodeClickable(child)) {
42
59
  return (child && typeof child.focus === "function") ? child : null;
43
60
  }
44
61
 
45
- focusableDescendant = findFocusableElement(child, forward);
62
+ focusableDescendant = await findFocusableElement(child, forward);
46
63
  if (focusableDescendant) {
47
64
  return (focusableDescendant && typeof focusableDescendant.focus === "function") ? focusableDescendant : null;
48
65
  }
@@ -51,6 +68,8 @@ const findFocusableElement = (container, forward) => {
51
68
  child = forward ? originalChild.nextSibling : originalChild.previousSibling;
52
69
  }
53
70
 
71
+ /* eslint-enable no-await-in-loop */
72
+
54
73
  return null;
55
74
  };
56
75
 
@@ -0,0 +1,7 @@
1
+ import sanitizeHTML from "../sap/base/security/sanitizeHTML.js";
2
+ import URLListValidator from "../sap/base/security/URLListValidator.js";
3
+
4
+ export {
5
+ URLListValidator,
6
+ sanitizeHTML,
7
+ };
@@ -0,0 +1,60 @@
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
+ const setOutOfViewportStyles = el => {
9
+ el.style.position = "absolute";
10
+ el.style.clip = "rect(1px,1px,1px,1px)";
11
+ el.style.userSelect = "none";
12
+ el.style.left = "-1000px";
13
+ el.style.top = "-1000px";
14
+ el.style.pointerEvents = "none";
15
+ };
16
+
17
+ attachBoot(() => {
18
+ if (politeSpan && assertiveSpan) {
19
+ return;
20
+ }
21
+
22
+ politeSpan = document.createElement("span");
23
+ assertiveSpan = document.createElement("span");
24
+
25
+ politeSpan.classList.add("ui5-invisiblemessage-polite");
26
+ assertiveSpan.classList.add("ui5-invisiblemessage-assertive");
27
+
28
+ politeSpan.setAttribute("aria-live", "polite");
29
+ assertiveSpan.setAttribute("aria-live", "assertive");
30
+
31
+ politeSpan.setAttribute("role", "alert");
32
+ assertiveSpan.setAttribute("role", "alert");
33
+
34
+ setOutOfViewportStyles(politeSpan);
35
+ setOutOfViewportStyles(assertiveSpan);
36
+
37
+ getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
38
+ getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
39
+ });
40
+
41
+ /**
42
+ * Inserts the string into the respective span, depending on the mode provided.
43
+ *
44
+ * @param {string} message String to be announced by the screen reader.
45
+ * @param {sap.ui.core.InvisibleMessageMode} mode The mode to be inserted in the aria-live attribute.
46
+ */
47
+ const announce = (message, mode) => {
48
+ // If no type is presented, fallback to polite announcement.
49
+ const span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;
50
+
51
+ // Set textContent to empty string in order to trigger screen reader's announcement.
52
+ span.textContent = "";
53
+ span.textContent = message;
54
+
55
+ if (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {
56
+ 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
57
+ }
58
+ };
59
+
60
+ 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,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
 
@@ -24,6 +27,10 @@ const getTabbables = (nodes, tabbables) => {
24
27
  currentNode = Array.from(children).find(node => node.tagName !== "STYLE");
25
28
  }
26
29
 
30
+ if (!currentNode) {
31
+ return;
32
+ }
33
+
27
34
  if (isNodeTabbable(currentNode)) {
28
35
  tabbablesNodes.push(currentNode);
29
36
  }
@@ -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;