@ui5/webcomponents-base 0.0.0-5f8ce9393 → 0.0.0-6cb3eb0db

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 (424) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +196 -0
  3. package/README.md +26 -1
  4. package/bundle.esm.js +18 -12
  5. package/dist/AssetRegistry.js +8 -6
  6. package/dist/Boot.js +43 -0
  7. package/dist/CustomElementsRegistry.js +39 -0
  8. package/dist/CustomElementsScope.js +108 -0
  9. package/dist/DOMObserver.js +65 -0
  10. package/dist/Device.js +58 -779
  11. package/dist/EventProvider.js +38 -26
  12. package/dist/FontFace.js +52 -7
  13. package/dist/InitialConfiguration.js +35 -10
  14. package/dist/Keys.js +248 -0
  15. package/dist/MediaRange.js +109 -0
  16. package/dist/PropertiesFileFormat.js +95 -0
  17. package/dist/Render.js +173 -0
  18. package/dist/RenderQueue.js +41 -17
  19. package/dist/RenderScheduler.js +24 -145
  20. package/dist/StaticArea.js +1 -39
  21. package/dist/StaticAreaItem.js +67 -50
  22. package/dist/SystemCSSVars.js +31 -0
  23. package/dist/Theming.js +3 -54
  24. package/dist/UI5Element.js +486 -318
  25. package/dist/UI5ElementMetadata.js +182 -19
  26. package/dist/asset-registries/Icons.js +118 -14
  27. package/dist/asset-registries/Illustrations.js +30 -0
  28. package/dist/asset-registries/LocaleData.js +97 -55
  29. package/dist/asset-registries/Themes.js +35 -32
  30. package/dist/asset-registries/i18n.js +80 -34
  31. package/dist/config/AnimationMode.js +11 -1
  32. package/dist/config/CalendarType.js +3 -7
  33. package/dist/config/Language.js +58 -2
  34. package/dist/config/Theme.js +2 -2
  35. package/dist/delegate/ItemNavigation.js +245 -172
  36. package/dist/delegate/ResizeHandler.js +78 -38
  37. package/dist/delegate/ScrollEnablement.js +101 -19
  38. package/dist/features/OpenUI5Support.js +57 -8
  39. package/dist/generated/AssetParameters.js +13 -0
  40. package/dist/getSharedResource.js +30 -0
  41. package/dist/i18nBundle.js +31 -10
  42. package/dist/isLegacyBrowser.js +3 -0
  43. package/dist/{Locale.js → locale/Locale.js} +0 -10
  44. package/dist/locale/RTLAwareRegistry.js +14 -0
  45. package/dist/locale/applyDirection.js +17 -0
  46. package/dist/locale/directionChange.js +32 -0
  47. package/dist/locale/getEffectiveDir.js +28 -0
  48. package/dist/locale/getLocale.js +41 -0
  49. package/dist/locale/languageChange.js +22 -0
  50. package/dist/locale/nextFallbackLocale.js +28 -0
  51. package/{src/util → dist/locale}/normalizeLocale.js +8 -31
  52. package/dist/renderer/LitRenderer.js +21 -4
  53. package/dist/renderer/executeTemplate.js +17 -0
  54. package/dist/resources/bundle.esm.js +20 -106
  55. package/dist/resources/bundle.esm.js.map +1 -1
  56. package/dist/sap/base/Log.js +241 -0
  57. package/dist/sap/base/assert.js +8 -0
  58. package/dist/sap/base/security/URLListValidator.js +148 -0
  59. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  60. package/dist/sap/base/util/now.js +7 -0
  61. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  62. package/dist/test-resources/assets/Themes.js +11 -5
  63. package/dist/test-resources/elements/Generic.js +1 -0
  64. package/dist/test-resources/elements/Parent.js +7 -2
  65. package/dist/test-resources/elements/WithStaticArea.js +77 -0
  66. package/dist/test-resources/pages/AllTestElements.html +5 -5
  67. package/dist/test-resources/pages/Configuration.html +0 -2
  68. package/dist/test-resources/pages/ConfigurationScript.html +1 -3
  69. package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
  70. package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
  71. package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
  72. package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
  73. package/dist/test-resources/pages/i18n.html +35 -0
  74. package/dist/test-resources/specs/ConfigurationChange.spec.js +11 -9
  75. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  76. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  77. package/dist/test-resources/specs/CustomTheme.spec.js +7 -5
  78. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  79. package/dist/test-resources/specs/StaticArea.spec.js +78 -0
  80. package/dist/test-resources/specs/Theming.spec.js +9 -7
  81. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  82. package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
  83. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  84. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  85. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  86. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  87. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  88. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  89. package/dist/theming/CustomStyle.js +28 -7
  90. package/dist/theming/ThemeLoaded.js +22 -0
  91. package/dist/theming/applyTheme.js +78 -0
  92. package/dist/theming/createThemePropertiesStyleTag.js +20 -0
  93. package/dist/theming/getConstructableStyle.js +30 -0
  94. package/dist/theming/getEffectiveStyle.js +30 -0
  95. package/dist/theming/getStylesString.js +13 -0
  96. package/dist/theming/getThemeDesignerTheme.js +67 -0
  97. package/dist/thirdparty/_merge.js +32 -0
  98. package/dist/thirdparty/isPlainObject.js +18 -0
  99. package/dist/thirdparty/merge.js +10 -0
  100. package/dist/types/CSSColor.js +9 -0
  101. package/{src/dates → dist/types}/CalendarType.js +2 -2
  102. package/dist/types/DataType.js +13 -1
  103. package/dist/types/Float.js +14 -0
  104. package/dist/types/Integer.js +4 -0
  105. package/dist/types/InvisibleMessageMode.js +30 -0
  106. package/dist/types/ItemNavigationBehavior.js +2 -7
  107. package/dist/types/NavigationMode.js +1 -0
  108. package/dist/types/PopupState.js +1 -1
  109. package/dist/types/ValueState.js +2 -1
  110. package/dist/updateShadowRoot.js +26 -0
  111. package/dist/util/AriaLabelHelper.js +41 -0
  112. package/dist/util/Caret.js +45 -0
  113. package/dist/util/ColorConversion.js +370 -0
  114. package/dist/util/FocusableElements.js +25 -8
  115. package/dist/util/HTMLSanitizer.js +7 -0
  116. package/dist/util/InvisibleMessage.js +58 -0
  117. package/dist/util/PopupUtils.js +93 -0
  118. package/dist/util/SlotsHelper.js +43 -0
  119. package/dist/util/StringHelper.js +17 -2
  120. package/dist/util/TabbableElements.js +5 -2
  121. package/dist/util/arraysAreEqual.js +15 -0
  122. package/dist/util/clamp.js +12 -0
  123. package/dist/util/debounce.js +17 -0
  124. package/dist/util/detectNavigatorLanguage.js +3 -1
  125. package/dist/util/encodeCSS.js +24 -0
  126. package/dist/util/findNodeOwner.js +35 -0
  127. package/dist/util/getActiveElement.js +11 -0
  128. package/dist/util/getClassCopy.js +10 -0
  129. package/dist/util/getEffectiveContentDensity.js +5 -0
  130. package/dist/util/getFileExtension.js +21 -0
  131. package/dist/util/getSingletonElementInstance.js +13 -0
  132. package/dist/util/isElementInView.js +15 -0
  133. package/dist/util/isNodeHidden.js +1 -5
  134. package/dist/util/isNodeTabbable.js +4 -4
  135. package/dist/util/isValidPropertyName.js +11 -2
  136. package/dist/util/setToArray.js +10 -0
  137. package/hash.txt +1 -0
  138. package/index.js +1 -1
  139. package/lib/generate-asset-parameters/index.js +22 -0
  140. package/package-scripts.js +37 -17
  141. package/package.json +20 -12
  142. package/src/AssetRegistry.js +8 -6
  143. package/src/Boot.js +43 -0
  144. package/src/CustomElementsRegistry.js +39 -0
  145. package/src/CustomElementsScope.js +108 -0
  146. package/src/DOMObserver.js +65 -0
  147. package/src/Device.js +58 -779
  148. package/src/EventProvider.js +38 -26
  149. package/src/FontFace.js +52 -7
  150. package/src/InitialConfiguration.js +35 -10
  151. package/src/Keys.js +248 -0
  152. package/src/MediaRange.js +109 -0
  153. package/src/PropertiesFileFormat.js +95 -0
  154. package/src/Render.js +173 -0
  155. package/src/RenderQueue.js +41 -17
  156. package/src/RenderScheduler.js +24 -145
  157. package/src/StaticArea.js +1 -39
  158. package/src/StaticAreaItem.js +67 -50
  159. package/src/SystemCSSVars.js +31 -0
  160. package/src/Theming.js +3 -54
  161. package/src/UI5Element.js +486 -318
  162. package/src/UI5ElementMetadata.js +182 -19
  163. package/src/asset-registries/Icons.js +118 -14
  164. package/src/asset-registries/Illustrations.js +30 -0
  165. package/src/asset-registries/LocaleData.js +97 -55
  166. package/src/asset-registries/Themes.js +35 -32
  167. package/src/asset-registries/i18n.js +80 -34
  168. package/src/config/AnimationMode.js +11 -1
  169. package/src/config/CalendarType.js +3 -7
  170. package/src/config/Language.js +58 -2
  171. package/src/config/Theme.js +2 -2
  172. package/src/delegate/ItemNavigation.js +245 -172
  173. package/src/delegate/ResizeHandler.js +78 -38
  174. package/src/delegate/ScrollEnablement.js +101 -19
  175. package/src/features/OpenUI5Support.js +57 -8
  176. package/src/getSharedResource.js +30 -0
  177. package/src/i18nBundle.js +31 -10
  178. package/src/isLegacyBrowser.js +3 -0
  179. package/src/{Locale.js → locale/Locale.js} +0 -10
  180. package/src/locale/RTLAwareRegistry.js +14 -0
  181. package/src/locale/applyDirection.js +17 -0
  182. package/src/locale/directionChange.js +32 -0
  183. package/src/locale/getEffectiveDir.js +28 -0
  184. package/src/locale/getLocale.js +41 -0
  185. package/src/locale/languageChange.js +22 -0
  186. package/src/locale/nextFallbackLocale.js +28 -0
  187. package/{dist/util → src/locale}/normalizeLocale.js +8 -31
  188. package/src/renderer/LitRenderer.js +21 -4
  189. package/src/renderer/executeTemplate.js +17 -0
  190. package/src/theming/CustomStyle.js +28 -7
  191. package/src/theming/ThemeLoaded.js +22 -0
  192. package/src/theming/applyTheme.js +78 -0
  193. package/src/theming/createThemePropertiesStyleTag.js +20 -0
  194. package/src/theming/getConstructableStyle.js +30 -0
  195. package/src/theming/getEffectiveStyle.js +30 -0
  196. package/src/theming/getStylesString.js +13 -0
  197. package/src/theming/getThemeDesignerTheme.js +67 -0
  198. package/src/thirdparty/_merge.js +32 -0
  199. package/src/thirdparty/isPlainObject.js +18 -0
  200. package/src/thirdparty/merge.js +10 -0
  201. package/src/types/CSSColor.js +9 -0
  202. package/{dist/dates → src/types}/CalendarType.js +2 -2
  203. package/src/types/DataType.js +13 -1
  204. package/src/types/Float.js +14 -0
  205. package/src/types/Integer.js +4 -0
  206. package/src/types/InvisibleMessageMode.js +30 -0
  207. package/src/types/ItemNavigationBehavior.js +2 -7
  208. package/src/types/NavigationMode.js +1 -0
  209. package/src/types/PopupState.js +1 -1
  210. package/src/types/ValueState.js +2 -1
  211. package/src/updateShadowRoot.js +26 -0
  212. package/src/util/AriaLabelHelper.js +41 -0
  213. package/src/util/Caret.js +45 -0
  214. package/src/util/ColorConversion.js +370 -0
  215. package/src/util/FocusableElements.js +25 -8
  216. package/src/util/HTMLSanitizer.js +7 -0
  217. package/src/util/InvisibleMessage.js +58 -0
  218. package/src/util/PopupUtils.js +93 -0
  219. package/src/util/SlotsHelper.js +43 -0
  220. package/src/util/StringHelper.js +17 -2
  221. package/src/util/TabbableElements.js +5 -2
  222. package/src/util/arraysAreEqual.js +15 -0
  223. package/src/util/clamp.js +12 -0
  224. package/src/util/debounce.js +17 -0
  225. package/src/util/detectNavigatorLanguage.js +3 -1
  226. package/src/util/encodeCSS.js +24 -0
  227. package/src/util/findNodeOwner.js +35 -0
  228. package/src/util/getActiveElement.js +11 -0
  229. package/src/util/getClassCopy.js +10 -0
  230. package/src/util/getEffectiveContentDensity.js +5 -0
  231. package/src/util/getFileExtension.js +21 -0
  232. package/src/util/getSingletonElementInstance.js +13 -0
  233. package/src/util/isElementInView.js +15 -0
  234. package/src/util/isNodeHidden.js +1 -5
  235. package/src/util/isNodeTabbable.js +4 -4
  236. package/src/util/isValidPropertyName.js +11 -2
  237. package/src/util/setToArray.js +10 -0
  238. package/used-modules.txt +7 -0
  239. package/bundle.es5.js +0 -28
  240. package/dist/Assets.js +0 -2
  241. package/dist/CSS.js +0 -48
  242. package/dist/FormatSettings.js +0 -31
  243. package/dist/LocaleProvider.js +0 -34
  244. package/dist/ResourceLoaderOverrides.js +0 -38
  245. package/dist/SVGIconRegistry.js +0 -54
  246. package/dist/boot.js +0 -32
  247. package/dist/compatibility/DOMObserver.js +0 -62
  248. package/dist/compatibility/patchNodeValue.js +0 -24
  249. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  250. package/dist/dates/CalendarDate.js +0 -203
  251. package/dist/dates/CalendarUtils.js +0 -99
  252. package/dist/delegate/CustomResize.js +0 -78
  253. package/dist/delegate/NativeResize.js +0 -44
  254. package/dist/events/PseudoEvents.js +0 -58
  255. package/dist/features/browsersupport/Edge.js +0 -6
  256. package/dist/features/browsersupport/IE11.js +0 -41
  257. package/dist/features/calendar/Buddhist.js +0 -1
  258. package/dist/features/calendar/Islamic.js +0 -1
  259. package/dist/features/calendar/Japanese.js +0 -1
  260. package/dist/features/calendar/Persian.js +0 -1
  261. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
  262. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
  263. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
  264. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
  265. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
  266. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
  267. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
  268. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
  269. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
  270. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
  271. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
  272. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
  273. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
  274. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
  275. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
  276. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
  277. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
  278. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
  279. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
  280. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
  281. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
  282. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
  283. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
  284. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
  285. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
  286. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
  287. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
  288. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
  289. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
  290. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
  291. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
  292. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
  293. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
  294. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
  295. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
  296. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
  297. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
  298. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
  299. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
  300. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
  301. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
  302. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
  303. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
  304. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
  305. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
  306. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
  307. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
  308. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
  309. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
  310. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
  311. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
  312. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
  313. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
  314. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
  315. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
  316. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
  317. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
  318. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
  319. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
  320. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
  321. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
  322. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
  323. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
  324. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
  325. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
  326. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
  327. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
  328. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
  329. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
  330. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
  331. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
  332. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
  333. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
  334. package/dist/json-imports/LocaleData.js +0 -171
  335. package/dist/renderer/ifDefined.js +0 -21
  336. package/dist/resources/bundle.es5.js +0 -212
  337. package/dist/resources/bundle.es5.js.map +0 -1
  338. package/dist/shims/Core-shim.js +0 -52
  339. package/dist/shims/jquery-shim.js +0 -89
  340. package/dist/test-resources/dev-helpers/ExternalThemePresent.js +0 -3
  341. package/dist/theming/StyleInjection.js +0 -67
  342. package/dist/thirdparty/Array.from.js +0 -16
  343. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  344. package/dist/thirdparty/Array.prototype.find.js +0 -46
  345. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  346. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  347. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  348. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  349. package/dist/thirdparty/Number.isInteger.js +0 -5
  350. package/dist/thirdparty/Number.isNaN.js +0 -1
  351. package/dist/thirdparty/Number.parseInt.js +0 -1
  352. package/dist/thirdparty/Object.assign.js +0 -31
  353. package/dist/thirdparty/Object.entries.js +0 -11
  354. package/dist/thirdparty/Symbol.js +0 -2
  355. package/dist/thirdparty/WeakSet.js +0 -27
  356. package/dist/thirdparty/events-polyfills.js +0 -89
  357. package/dist/thirdparty/fetch.js +0 -1
  358. package/dist/thirdparty/template.js +0 -600
  359. package/dist/util/CSSTransformUtils.js +0 -90
  360. package/dist/webcomponentsjs/LICENSE.md +0 -19
  361. package/dist/webcomponentsjs/README.md +0 -229
  362. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  363. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  364. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  365. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  366. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  367. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  368. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  369. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  370. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  371. package/dist/webcomponentsjs/package.json +0 -46
  372. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  373. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  374. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  375. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  376. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  377. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  378. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  379. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  380. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  381. package/src/Assets.js +0 -2
  382. package/src/CSS.js +0 -48
  383. package/src/FormatSettings.js +0 -31
  384. package/src/LocaleProvider.js +0 -34
  385. package/src/ResourceLoaderOverrides.js +0 -38
  386. package/src/SVGIconRegistry.js +0 -54
  387. package/src/boot.js +0 -32
  388. package/src/compatibility/DOMObserver.js +0 -62
  389. package/src/compatibility/patchNodeValue.js +0 -24
  390. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  391. package/src/dates/CalendarDate.js +0 -203
  392. package/src/dates/CalendarUtils.js +0 -99
  393. package/src/delegate/CustomResize.js +0 -78
  394. package/src/delegate/NativeResize.js +0 -44
  395. package/src/events/PseudoEvents.js +0 -58
  396. package/src/features/browsersupport/Edge.js +0 -6
  397. package/src/features/browsersupport/IE11.js +0 -41
  398. package/src/features/calendar/Buddhist.js +0 -1
  399. package/src/features/calendar/Islamic.js +0 -1
  400. package/src/features/calendar/Japanese.js +0 -1
  401. package/src/features/calendar/Persian.js +0 -1
  402. package/src/json-imports/LocaleData.js +0 -171
  403. package/src/renderer/ifDefined.js +0 -21
  404. package/src/shims/Core-shim.js +0 -52
  405. package/src/shims/jquery-shim.js +0 -89
  406. package/src/theming/StyleInjection.js +0 -67
  407. package/src/thirdparty/Array.from.js +0 -16
  408. package/src/thirdparty/Array.prototype.fill.js +0 -44
  409. package/src/thirdparty/Array.prototype.find.js +0 -46
  410. package/src/thirdparty/Array.prototype.includes.js +0 -51
  411. package/src/thirdparty/Element.prototype.closest.js +0 -11
  412. package/src/thirdparty/Element.prototype.matches.js +0 -6
  413. package/src/thirdparty/Map.prototype.keys.js +0 -9
  414. package/src/thirdparty/Number.isInteger.js +0 -5
  415. package/src/thirdparty/Number.isNaN.js +0 -1
  416. package/src/thirdparty/Number.parseInt.js +0 -1
  417. package/src/thirdparty/Object.assign.js +0 -31
  418. package/src/thirdparty/Object.entries.js +0 -11
  419. package/src/thirdparty/Symbol.js +0 -2
  420. package/src/thirdparty/WeakSet.js +0 -27
  421. package/src/thirdparty/events-polyfills.js +0 -89
  422. package/src/thirdparty/fetch.js +0 -1
  423. package/src/thirdparty/template.js +0 -600
  424. package/src/util/CSSTransformUtils.js +0 -90
@@ -0,0 +1,26 @@
1
+ import executeTemplate from "./renderer/executeTemplate.js";
2
+ import getConstructableStyle from "./theming/getConstructableStyle.js";
3
+ import getEffectiveStyle from "./theming/getEffectiveStyle.js";
4
+ import isLegacyBrowser from "./isLegacyBrowser.js";
5
+
6
+ /**
7
+ * Updates the shadow root of a UI5Element or its static area item
8
+ * @param element
9
+ * @param forStaticArea
10
+ */
11
+ const updateShadowRoot = (element, forStaticArea = false) => {
12
+ let styleToPrepend;
13
+ const template = forStaticArea ? "staticAreaTemplate" : "template";
14
+ const shadowRoot = forStaticArea ? element.staticAreaItem.shadowRoot : element.shadowRoot;
15
+ const renderResult = executeTemplate(element.constructor[template], element);
16
+
17
+ if (document.adoptedStyleSheets) { // Chrome
18
+ shadowRoot.adoptedStyleSheets = getConstructableStyle(element.constructor, forStaticArea);
19
+ } else if (!isLegacyBrowser()) { // FF, Safari
20
+ styleToPrepend = getEffectiveStyle(element.constructor, forStaticArea);
21
+ }
22
+
23
+ element.constructor.render(renderResult, shadowRoot, styleToPrepend, { host: element });
24
+ };
25
+
26
+ export default updateShadowRoot;
@@ -0,0 +1,41 @@
1
+ import findNodeOwner from "./findNodeOwner.js";
2
+
3
+ const getEffectiveAriaLabelText = el => {
4
+ if (!el.accessibleNameRef) {
5
+ if (el.accessibleName) {
6
+ return el.accessibleName;
7
+ }
8
+
9
+ return undefined;
10
+ }
11
+
12
+ return getAriaLabelledByTexts(el);
13
+ };
14
+
15
+ /**
16
+ *
17
+ * @param {HTMLElement} el Defines the HTMLElement, for which you need to get all related texts
18
+ * @param {HTMLElement} ownerDocument (Optional) Defines the HTMLElement(might document or custom element) where the you want to search for the texts.
19
+ * @param {String} readyIds (Optional) Defines a string of elements ids. The text of these elements will be returned. If used you should provide either el or ownerDocument
20
+ */
21
+ const getAriaLabelledByTexts = (el, ownerDocument, readyIds = "") => {
22
+ const ids = (readyIds && readyIds.split(" ")) || el.accessibleNameRef.split(" ");
23
+ const owner = ownerDocument || findNodeOwner(el);
24
+ let result = "";
25
+
26
+ ids.forEach((elementId, index) => {
27
+ const element = owner.querySelector(`[id='${elementId}']`);
28
+ result += `${element ? element.textContent : ""}`;
29
+
30
+ if (index < ids.length - 1) {
31
+ result += " ";
32
+ }
33
+ });
34
+
35
+ return result;
36
+ };
37
+
38
+ export {
39
+ getEffectiveAriaLabelText,
40
+ getAriaLabelledByTexts,
41
+ };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Returns the caret (cursor) position of the specified text field (field).
3
+ * Return value range is 0-field.value.length.
4
+ */
5
+ const getCaretPosition = field => {
6
+ // Initialize
7
+ let caretPos = 0;
8
+
9
+ // IE Support
10
+ if (document.selection) {
11
+ // Set focus on the element
12
+ field.focus();
13
+
14
+ // To get cursor position, get empty selection range
15
+ const selection = document.selection.createRange();
16
+
17
+ // Move selection start to 0 position
18
+ selection.moveStart("character", -field.value.length);
19
+
20
+ // The caret position is selection length
21
+ caretPos = selection.text.length;
22
+ } else if (field.selectionStart || field.selectionStart === "0") { // Firefox support
23
+ caretPos = field.selectionDirection === "backward" ? field.selectionStart : field.selectionEnd;
24
+ }
25
+
26
+ return caretPos;
27
+ };
28
+
29
+ const setCaretPosition = (field, caretPos) => {
30
+ if (field.createTextRange) {
31
+ const range = field.createTextRange();
32
+ range.move("character", caretPos);
33
+ range.select();
34
+ } else if (field.selectionStart) {
35
+ field.focus();
36
+ field.setSelectionRange(caretPos, caretPos);
37
+ } else {
38
+ field.focus();
39
+ }
40
+ };
41
+
42
+ export {
43
+ getCaretPosition,
44
+ setCaretPosition,
45
+ };
@@ -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,8 +1,11 @@
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 => {
6
9
  if (!container || isNodeHidden(container)) {
7
10
  return null;
8
11
  }
@@ -10,7 +13,7 @@ const getFirstFocusableElement = container => {
10
13
  return findFocusableElement(container, true);
11
14
  };
12
15
 
13
- const getLastFocusableElement = container => {
16
+ const getLastFocusableElement = async container => {
14
17
  if (!container || isNodeHidden(container)) {
15
18
  return null;
16
19
  }
@@ -18,9 +21,16 @@ const getLastFocusableElement = container => {
18
21
  return findFocusableElement(container, false);
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) => {
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];
26
36
  } else {
@@ -29,20 +39,25 @@ const findFocusableElement = (container, forward) => {
29
39
 
30
40
  let focusableDescendant;
31
41
 
42
+ /* eslint-disable no-await-in-loop */
43
+
32
44
  while (child) {
33
45
  const originalChild = child;
34
46
 
35
- child = child instanceof UI5Element ? child.getFocusDomRef() : child;
47
+ if (child.isUI5Element) {
48
+ child = await child.getFocusDomRefAsync();
49
+ }
50
+
36
51
  if (!child) {
37
52
  return null;
38
53
  }
39
54
 
40
- if (child.nodeType === 1 && !isNodeHidden(child)) {
55
+ if (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {
41
56
  if (isNodeClickable(child)) {
42
57
  return (child && typeof child.focus === "function") ? child : null;
43
58
  }
44
59
 
45
- focusableDescendant = findFocusableElement(child, forward);
60
+ focusableDescendant = await findFocusableElement(child, forward);
46
61
  if (focusableDescendant) {
47
62
  return (focusableDescendant && typeof focusableDescendant.focus === "function") ? focusableDescendant : null;
48
63
  }
@@ -51,6 +66,8 @@ const findFocusableElement = (container, forward) => {
51
66
  child = forward ? originalChild.nextSibling : originalChild.previousSibling;
52
67
  }
53
68
 
69
+ /* eslint-enable no-await-in-loop */
70
+
54
71
  return null;
55
72
  };
56
73
 
@@ -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,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;