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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +272 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +13 -11
  5. package/dist/AssetRegistry.js +8 -9
  6. package/dist/Boot.js +59 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +60 -4
  9. package/dist/CustomElementsScope.js +20 -98
  10. package/dist/CustomElementsScopeUtils.js +108 -0
  11. package/dist/DOMObserver.js +65 -0
  12. package/dist/Device.js +71 -773
  13. package/dist/EventProvider.js +30 -26
  14. package/dist/FeaturesRegistry.js +4 -1
  15. package/dist/FontFace.js +7 -95
  16. package/dist/InitialConfiguration.js +37 -21
  17. package/dist/Keys.js +98 -0
  18. package/dist/ManagedStyles.js +83 -0
  19. package/dist/MediaRange.js +109 -0
  20. package/{src/util/parseProperties.js → dist/PropertiesFileFormat.js} +6 -0
  21. package/dist/Render.js +175 -0
  22. package/dist/RenderScheduler.js +16 -138
  23. package/dist/Runtimes.js +107 -0
  24. package/dist/StaticArea.js +1 -29
  25. package/dist/StaticAreaItem.js +58 -65
  26. package/dist/SystemCSSVars.js +4 -25
  27. package/dist/UI5Element.js +315 -382
  28. package/dist/UI5ElementMetadata.js +132 -17
  29. package/dist/asset-registries/Icons.js +117 -14
  30. package/dist/asset-registries/Illustrations.js +30 -0
  31. package/dist/asset-registries/LocaleData.js +97 -68
  32. package/dist/asset-registries/Themes.js +29 -35
  33. package/dist/asset-registries/i18n.js +61 -50
  34. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  35. package/dist/config/Icons.js +52 -0
  36. package/dist/config/Language.js +18 -20
  37. package/dist/config/Theme.js +25 -0
  38. package/dist/css/BusyIndicator.css +80 -0
  39. package/dist/css/FontFace.css +75 -0
  40. package/dist/css/OverrideFontFace.css +32 -0
  41. package/dist/css/SystemCSSVars.css +17 -0
  42. package/dist/delegate/ItemNavigation.js +233 -201
  43. package/dist/delegate/ResizeHandler.js +78 -37
  44. package/dist/delegate/ScrollEnablement.js +49 -20
  45. package/dist/features/F6Navigation.js +106 -0
  46. package/dist/features/OpenUI5Enablement.js +119 -0
  47. package/dist/features/OpenUI5Support.js +41 -6
  48. package/dist/generated/AssetParameters.js +1 -1
  49. package/dist/generated/VersionInfo.js +10 -0
  50. package/dist/generated/css/BusyIndicator.css.js +5 -0
  51. package/dist/generated/css/FontFace.css.js +5 -0
  52. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  53. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  54. package/dist/i18nBundle.js +38 -4
  55. package/dist/isLegacyBrowser.js +3 -0
  56. package/dist/locale/applyDirection.js +6 -4
  57. package/dist/locale/directionChange.js +32 -0
  58. package/dist/locale/getEffectiveDir.js +28 -0
  59. package/dist/locale/languageChange.js +1 -1
  60. package/dist/renderer/LitRenderer.js +39 -18
  61. package/dist/renderer/directives/style-map.js +72 -0
  62. package/dist/renderer/executeTemplate.js +19 -2
  63. package/dist/resources/bundle.esm.js +15 -112
  64. package/dist/resources/bundle.esm.js.map +1 -1
  65. package/dist/sap/base/Log.js +241 -0
  66. package/dist/sap/base/assert.js +8 -0
  67. package/dist/sap/base/security/URLListValidator.js +148 -0
  68. package/dist/sap/base/security/encodeCSS.js +14 -0
  69. package/dist/sap/base/security/encodeXML.js +23 -0
  70. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  71. package/dist/sap/base/strings/toHex.js +8 -0
  72. package/dist/sap/base/util/now.js +7 -0
  73. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  74. package/dist/test-resources/assets/Themes.js +8 -8
  75. package/dist/test-resources/elements/Parent.js +6 -2
  76. package/dist/test-resources/elements/WithStaticArea.js +2 -1
  77. package/dist/test-resources/pages/AllTestElements.html +3 -3
  78. package/dist/test-resources/pages/Configuration.html +0 -2
  79. package/dist/test-resources/pages/ConfigurationScript.html +0 -2
  80. package/dist/test-resources/pages/i18n.html +2 -9
  81. package/dist/test-resources/specs/ConfigurationChange.spec.js +10 -8
  82. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  83. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  84. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  85. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  86. package/dist/test-resources/specs/StaticArea.spec.js +56 -12
  87. package/dist/test-resources/specs/Theming.spec.js +23 -10
  88. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  89. package/dist/test-resources/specs/UI5ElementLifecycle.js +17 -15
  90. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  91. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  92. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  93. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  94. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  95. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  96. package/dist/theming/CustomStyle.js +25 -5
  97. package/dist/theming/applyTheme.js +11 -16
  98. package/dist/theming/getConstructableStyle.js +7 -6
  99. package/dist/theming/getEffectiveLinksHrefs.js +27 -0
  100. package/dist/theming/getEffectiveStyle.js +24 -8
  101. package/dist/theming/getStylesString.js +4 -2
  102. package/dist/theming/getThemeDesignerTheme.js +25 -5
  103. package/dist/theming/preloadLinks.js +23 -0
  104. package/dist/types/CSSColor.js +9 -0
  105. package/dist/types/CalendarType.js +1 -1
  106. package/dist/types/DataType.js +13 -1
  107. package/dist/types/Float.js +4 -0
  108. package/dist/types/Integer.js +4 -0
  109. package/dist/types/InvisibleMessageMode.js +30 -0
  110. package/dist/types/ItemNavigationBehavior.js +2 -7
  111. package/dist/types/PopupState.js +1 -1
  112. package/dist/types/ValueState.js +1 -1
  113. package/dist/updateShadowRoot.js +30 -0
  114. package/dist/util/AriaLabelHelper.js +4 -4
  115. package/dist/util/Caret.js +45 -0
  116. package/dist/util/ColorConversion.js +370 -0
  117. package/dist/util/FocusableElements.js +22 -9
  118. package/dist/util/HTMLSanitizer.js +7 -0
  119. package/dist/util/InvisibleMessage.js +60 -0
  120. package/dist/util/PopupUtils.js +93 -0
  121. package/dist/util/SlotsHelper.js +43 -0
  122. package/dist/util/TabbableElements.js +5 -1
  123. package/dist/util/arraysAreEqual.js +15 -0
  124. package/dist/util/clamp.js +12 -0
  125. package/dist/util/createLinkInHead.js +19 -0
  126. package/dist/util/debounce.js +17 -0
  127. package/dist/util/escapeRegex.js +10 -0
  128. package/dist/util/generateHighlightedMarkup.js +42 -0
  129. package/dist/util/getActiveElement.js +11 -0
  130. package/dist/util/getClassCopy.js +10 -0
  131. package/dist/util/getEffectiveContentDensity.js +5 -0
  132. package/dist/util/getNormalizedTarget.js +16 -0
  133. package/dist/util/isElementInView.js +15 -0
  134. package/dist/util/isNodeHidden.js +1 -1
  135. package/dist/util/isNodeTabbable.js +4 -4
  136. package/hash.txt +1 -0
  137. package/index.js +1 -1
  138. package/lib/generate-asset-parameters/index.js +8 -5
  139. package/lib/generate-styles/index.js +26 -0
  140. package/lib/generate-version-info/index.js +32 -0
  141. package/package-scripts.js +30 -19
  142. package/package.json +19 -13
  143. package/src/AssetRegistry.js +8 -9
  144. package/src/Boot.js +59 -0
  145. package/src/CSP.js +59 -0
  146. package/src/CustomElementsRegistry.js +60 -4
  147. package/src/CustomElementsScope.js +20 -98
  148. package/src/CustomElementsScopeUtils.js +108 -0
  149. package/src/DOMObserver.js +65 -0
  150. package/src/Device.js +71 -773
  151. package/src/EventProvider.js +30 -26
  152. package/src/FeaturesRegistry.js +4 -1
  153. package/src/FontFace.js +7 -95
  154. package/src/InitialConfiguration.js +37 -21
  155. package/src/Keys.js +98 -0
  156. package/src/ManagedStyles.js +83 -0
  157. package/src/MediaRange.js +109 -0
  158. package/{dist/util/parseProperties.js → src/PropertiesFileFormat.js} +6 -0
  159. package/src/Render.js +175 -0
  160. package/src/RenderScheduler.js +16 -138
  161. package/src/Runtimes.js +107 -0
  162. package/src/StaticArea.js +1 -29
  163. package/src/StaticAreaItem.js +58 -65
  164. package/src/SystemCSSVars.js +4 -25
  165. package/src/UI5Element.js +315 -382
  166. package/src/UI5ElementMetadata.js +132 -17
  167. package/src/asset-registries/Icons.js +117 -14
  168. package/src/asset-registries/Illustrations.js +30 -0
  169. package/src/asset-registries/LocaleData.js +97 -68
  170. package/src/asset-registries/Themes.js +29 -35
  171. package/src/asset-registries/i18n.js +61 -50
  172. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  173. package/src/config/Icons.js +52 -0
  174. package/src/config/Language.js +18 -20
  175. package/src/config/Theme.js +25 -0
  176. package/src/css/BusyIndicator.css +80 -0
  177. package/src/css/FontFace.css +75 -0
  178. package/src/css/OverrideFontFace.css +32 -0
  179. package/src/css/SystemCSSVars.css +17 -0
  180. package/src/delegate/ItemNavigation.js +233 -201
  181. package/src/delegate/ResizeHandler.js +78 -37
  182. package/src/delegate/ScrollEnablement.js +49 -20
  183. package/src/features/F6Navigation.js +106 -0
  184. package/src/features/OpenUI5Enablement.js +119 -0
  185. package/src/features/OpenUI5Support.js +41 -6
  186. package/src/i18nBundle.js +38 -4
  187. package/src/isLegacyBrowser.js +3 -0
  188. package/src/locale/applyDirection.js +6 -4
  189. package/src/locale/directionChange.js +32 -0
  190. package/src/locale/getEffectiveDir.js +28 -0
  191. package/src/locale/languageChange.js +1 -1
  192. package/src/renderer/LitRenderer.js +39 -18
  193. package/src/renderer/directives/style-map.js +72 -0
  194. package/src/renderer/executeTemplate.js +19 -2
  195. package/src/theming/CustomStyle.js +25 -5
  196. package/src/theming/applyTheme.js +11 -16
  197. package/src/theming/getConstructableStyle.js +7 -6
  198. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  199. package/src/theming/getEffectiveStyle.js +24 -8
  200. package/src/theming/getStylesString.js +4 -2
  201. package/src/theming/getThemeDesignerTheme.js +25 -5
  202. package/src/theming/preloadLinks.js +23 -0
  203. package/src/types/CSSColor.js +9 -0
  204. package/src/types/CalendarType.js +1 -1
  205. package/src/types/DataType.js +13 -1
  206. package/src/types/Float.js +4 -0
  207. package/src/types/Integer.js +4 -0
  208. package/src/types/InvisibleMessageMode.js +30 -0
  209. package/src/types/ItemNavigationBehavior.js +2 -7
  210. package/src/types/PopupState.js +1 -1
  211. package/src/types/ValueState.js +1 -1
  212. package/src/updateShadowRoot.js +30 -0
  213. package/src/util/AriaLabelHelper.js +4 -4
  214. package/src/util/Caret.js +45 -0
  215. package/src/util/ColorConversion.js +370 -0
  216. package/src/util/FocusableElements.js +22 -9
  217. package/src/util/HTMLSanitizer.js +7 -0
  218. package/src/util/InvisibleMessage.js +60 -0
  219. package/src/util/PopupUtils.js +93 -0
  220. package/src/util/SlotsHelper.js +43 -0
  221. package/src/util/TabbableElements.js +5 -1
  222. package/src/util/arraysAreEqual.js +15 -0
  223. package/src/util/clamp.js +12 -0
  224. package/src/util/createLinkInHead.js +19 -0
  225. package/src/util/debounce.js +17 -0
  226. package/src/util/escapeRegex.js +10 -0
  227. package/src/util/generateHighlightedMarkup.js +42 -0
  228. package/src/util/getActiveElement.js +11 -0
  229. package/src/util/getClassCopy.js +10 -0
  230. package/src/util/getEffectiveContentDensity.js +5 -0
  231. package/src/util/getNormalizedTarget.js +16 -0
  232. package/src/util/isElementInView.js +15 -0
  233. package/src/util/isNodeHidden.js +1 -1
  234. package/src/util/isNodeTabbable.js +4 -4
  235. package/used-modules.txt +10 -0
  236. package/bundle.es5.js +0 -28
  237. package/dist/SVGIconRegistry.js +0 -73
  238. package/dist/boot.js +0 -34
  239. package/dist/compatibility/DOMObserver.js +0 -62
  240. package/dist/compatibility/patchNodeValue.js +0 -24
  241. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  242. package/dist/config/AssetsPath.js +0 -17
  243. package/dist/delegate/CustomResize.js +0 -78
  244. package/dist/delegate/NativeResize.js +0 -45
  245. package/dist/features/PropertiesFormatSupport.js +0 -8
  246. package/dist/features/browsersupport/Edge.js +0 -6
  247. package/dist/features/browsersupport/IE11.js +0 -42
  248. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  249. package/dist/renderer/ifDefined.js +0 -21
  250. package/dist/renderer/scopeHTML.js +0 -32
  251. package/dist/resources/bundle.es5.js +0 -212
  252. package/dist/resources/bundle.es5.js.map +0 -1
  253. package/dist/theming/CSSVarsPonyfill.js +0 -68
  254. package/dist/theming/adaptCSSForIE.js +0 -95
  255. package/dist/theming/createComponentStyleTag.js +0 -54
  256. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  257. package/dist/thirdparty/Array.from.js +0 -16
  258. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  259. package/dist/thirdparty/Array.prototype.find.js +0 -46
  260. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  261. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  262. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  263. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  264. package/dist/thirdparty/Number.isInteger.js +0 -5
  265. package/dist/thirdparty/Number.isNaN.js +0 -1
  266. package/dist/thirdparty/Number.parseFloat.js +0 -1
  267. package/dist/thirdparty/Number.parseInt.js +0 -1
  268. package/dist/thirdparty/Object.assign.js +0 -31
  269. package/dist/thirdparty/Object.entries.js +0 -11
  270. package/dist/thirdparty/Symbol.js +0 -2
  271. package/dist/thirdparty/WeakSet.js +0 -27
  272. package/dist/thirdparty/es6-string-methods.js +0 -182
  273. package/dist/thirdparty/events-polyfills.js +0 -89
  274. package/dist/thirdparty/fetch.js +0 -1
  275. package/dist/thirdparty/template.js +0 -600
  276. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  277. package/dist/util/EffectiveAssetPath.js +0 -27
  278. package/dist/util/encodeCSS.js +0 -24
  279. package/dist/util/isSlot.js +0 -3
  280. package/dist/webcomponentsjs/LICENSE.md +0 -19
  281. package/dist/webcomponentsjs/README.md +0 -229
  282. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  283. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  284. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  285. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  286. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  287. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  288. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  289. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  290. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  291. package/dist/webcomponentsjs/package.json +0 -46
  292. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  293. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  294. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  295. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  296. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  297. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  298. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  299. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  300. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  301. package/src/SVGIconRegistry.js +0 -73
  302. package/src/boot.js +0 -34
  303. package/src/compatibility/DOMObserver.js +0 -62
  304. package/src/compatibility/patchNodeValue.js +0 -24
  305. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  306. package/src/config/AssetsPath.js +0 -17
  307. package/src/delegate/CustomResize.js +0 -78
  308. package/src/delegate/NativeResize.js +0 -45
  309. package/src/features/PropertiesFormatSupport.js +0 -8
  310. package/src/features/browsersupport/Edge.js +0 -6
  311. package/src/features/browsersupport/IE11.js +0 -42
  312. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  313. package/src/renderer/ifDefined.js +0 -21
  314. package/src/renderer/scopeHTML.js +0 -32
  315. package/src/theming/CSSVarsPonyfill.js +0 -68
  316. package/src/theming/adaptCSSForIE.js +0 -95
  317. package/src/theming/createComponentStyleTag.js +0 -54
  318. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  319. package/src/thirdparty/Array.from.js +0 -16
  320. package/src/thirdparty/Array.prototype.fill.js +0 -44
  321. package/src/thirdparty/Array.prototype.find.js +0 -46
  322. package/src/thirdparty/Array.prototype.includes.js +0 -51
  323. package/src/thirdparty/Element.prototype.closest.js +0 -11
  324. package/src/thirdparty/Element.prototype.matches.js +0 -6
  325. package/src/thirdparty/Map.prototype.keys.js +0 -9
  326. package/src/thirdparty/Number.isInteger.js +0 -5
  327. package/src/thirdparty/Number.isNaN.js +0 -1
  328. package/src/thirdparty/Number.parseFloat.js +0 -1
  329. package/src/thirdparty/Number.parseInt.js +0 -1
  330. package/src/thirdparty/Object.assign.js +0 -31
  331. package/src/thirdparty/Object.entries.js +0 -11
  332. package/src/thirdparty/Symbol.js +0 -2
  333. package/src/thirdparty/WeakSet.js +0 -27
  334. package/src/thirdparty/es6-string-methods.js +0 -182
  335. package/src/thirdparty/events-polyfills.js +0 -89
  336. package/src/thirdparty/fetch.js +0 -1
  337. package/src/thirdparty/template.js +0 -600
  338. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  339. package/src/util/EffectiveAssetPath.js +0 -27
  340. package/src/util/encodeCSS.js +0 -24
  341. package/src/util/isSlot.js +0 -3
@@ -1,31 +1,52 @@
1
- import { html, svg, render } from "lit-html/lit-html.js";
2
- import scopeHTML from "./scopeHTML.js";
1
+ import {
2
+ render,
3
+ html,
4
+ svg,
5
+ } from "lit-html";
6
+ import { getFeature } from "../FeaturesRegistry.js";
3
7
 
4
- let tags;
5
- let suffix;
6
-
7
- const setTags = t => {
8
- tags = t;
8
+ const effectiveHtml = (...args) => {
9
+ const LitStatic = getFeature("LitStatic");
10
+ const fn = LitStatic ? LitStatic.html : html;
11
+ return fn(...args);
9
12
  };
10
- const setSuffix = s => {
11
- suffix = s;
13
+
14
+ const effectiveSvg = (...args) => {
15
+ const LitStatic = getFeature("LitStatic");
16
+ const fn = LitStatic ? LitStatic.svg : svg;
17
+ return fn(...args);
12
18
  };
13
19
 
14
- const litRender = (templateResult, domNode, styles, { eventContext } = {}) => {
15
- if (styles) {
16
- templateResult = html`<style>${styles}</style>${templateResult}`;
20
+ const litRender = (templateResult, domNode, styleStrOrHrefsArr, forStaticArea, { host } = {}) => {
21
+ const OpenUI5Enablement = getFeature("OpenUI5Enablement");
22
+ if (OpenUI5Enablement && !forStaticArea) {
23
+ templateResult = OpenUI5Enablement.wrapTemplateResultInBusyMarkup(effectiveHtml, host, templateResult);
24
+ }
25
+
26
+ if (typeof styleStrOrHrefsArr === "string") {
27
+ templateResult = effectiveHtml`<style>${styleStrOrHrefsArr}</style>${templateResult}`;
28
+ } else if (Array.isArray(styleStrOrHrefsArr) && styleStrOrHrefsArr.length) {
29
+ templateResult = effectiveHtml`${styleStrOrHrefsArr.map(href => effectiveHtml`<link type="text/css" rel="stylesheet" href="${href}">`)}${templateResult}`;
17
30
  }
18
- render(templateResult, domNode, { eventContext });
31
+ render(templateResult, domNode, { host });
19
32
  };
20
33
 
21
- const scopedHtml = (strings, ...values) => html(scopeHTML(strings, tags, suffix), ...values);
22
- const scopedSvg = (strings, ...values) => svg(scopeHTML(strings, tags, suffix), ...values);
34
+ const scopeTag = (tag, tags, suffix) => {
35
+ const LitStatic = getFeature("LitStatic");
36
+ if (LitStatic) {
37
+ return LitStatic.unsafeStatic((tags || []).includes(tag) ? `${tag}-${suffix}` : tag);
38
+ }
39
+ };
23
40
 
24
- export { setTags, setSuffix };
25
- export { scopedHtml as html, scopedSvg as svg };
41
+ export {
42
+ effectiveHtml as html,
43
+ effectiveSvg as svg,
44
+ };
45
+ export { scopeTag };
26
46
  export { repeat } from "lit-html/directives/repeat.js";
27
47
  export { classMap } from "lit-html/directives/class-map.js";
28
- export { styleMap } from "lit-html/directives/style-map.js";
48
+ export { styleMap } from "./directives/style-map.js";
49
+ export { ifDefined } from "lit-html/directives/if-defined.js";
29
50
  export { unsafeHTML } from "lit-html/directives/unsafe-html.js";
30
51
 
31
52
  export default litRender;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2018 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+
7
+ /**
8
+ * This is the original style-map.js directive from lit-html 2 with the only difference that "render" is not called even for the first rendering (update is used instead)
9
+ */
10
+
11
+ import { noChange } from 'lit-html';
12
+ import { directive, Directive, PartType, } from 'lit-html/directive.js';
13
+ class StyleMapDirective extends Directive {
14
+ constructor(partInfo) {
15
+ var _a;
16
+ super(partInfo);
17
+ if (partInfo.type !== PartType.ATTRIBUTE ||
18
+ partInfo.name !== 'style' ||
19
+ ((_a = partInfo.strings) === null || _a === void 0 ? void 0 : _a.length) > 2) {
20
+ throw new Error('The `styleMap` directive must be used in the `style` attribute ' +
21
+ 'and must be the only part in the attribute.');
22
+ }
23
+ }
24
+ render(styleInfo) {
25
+ return "";
26
+ }
27
+ update(part, [styleInfo]) {
28
+ const { style } = part.element;
29
+ if (this._previousStyleProperties === undefined) {
30
+ this._previousStyleProperties = new Set();
31
+ for (const name in styleInfo) {
32
+ this._previousStyleProperties.add(name);
33
+ }
34
+ // return this.render(styleInfo);
35
+ }
36
+ // Remove old properties that no longer exist in styleInfo
37
+ // We use forEach() instead of for-of so that re don't require down-level
38
+ // iteration.
39
+ this._previousStyleProperties.forEach((name) => {
40
+ // If the name isn't in styleInfo or it's null/undefined
41
+ if (styleInfo[name] == null) {
42
+ this._previousStyleProperties.delete(name);
43
+ if (name.includes('-')) {
44
+ style.removeProperty(name);
45
+ }
46
+ else {
47
+ // Note reset using empty string (vs null) as IE11 does not always
48
+ // reset via null (https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style#setting_styles)
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ style[name] = '';
51
+ }
52
+ }
53
+ });
54
+ // Add or update properties
55
+ for (const name in styleInfo) {
56
+ const value = styleInfo[name];
57
+ if (value != null) {
58
+ this._previousStyleProperties.add(name);
59
+ if (name.includes('-')) {
60
+ style.setProperty(name, value);
61
+ }
62
+ else {
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ style[name] = value;
65
+ }
66
+ }
67
+ }
68
+ return noChange;
69
+ }
70
+ }
71
+
72
+ export const styleMap = directive(StyleMapDirective);
@@ -1,4 +1,4 @@
1
- import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from "../CustomElementsScope.js";
1
+ import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from "../CustomElementsScopeUtils.js";
2
2
 
3
3
  /**
4
4
  * Runs a component's template with the component's current state, while also scoping HTML
@@ -9,9 +9,26 @@ import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from "../Cus
9
9
  * @returns {*}
10
10
  */
11
11
  const executeTemplate = (template, component) => {
12
- const tagsToScope = component.constructor.getUniqueDependencies().map(dep => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
12
+ const tagsToScope = getTagsToScope(component);
13
13
  const scope = getCustomElementsScopingSuffix();
14
14
  return template(component, tagsToScope, scope);
15
15
  };
16
16
 
17
+ /**
18
+ * Returns all tags, used inside component's template subject to scoping.
19
+ * @param component - the component
20
+ * @returns {Array[]}
21
+ * @private
22
+ */
23
+ const getTagsToScope = component => {
24
+ const componentTag = component.constructor.getMetadata().getPureTag();
25
+ const tagsToScope = component.constructor.getUniqueDependencies().map(dep => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
26
+
27
+ if (shouldScopeCustomElement(componentTag)) {
28
+ tagsToScope.push(componentTag);
29
+ }
30
+
31
+ return tagsToScope;
32
+ };
33
+
17
34
  export default executeTemplate;
@@ -1,7 +1,8 @@
1
- import RenderScheduler from "../RenderScheduler.js";
1
+ import { reRenderAllUI5Elements } from "../Render.js";
2
+ import getSharedResource from "../getSharedResource.js";
2
3
  import EventProvider from "../EventProvider.js";
3
4
 
4
- const eventProvider = new EventProvider();
5
+ const eventProvider = getSharedResource("CustomStyle.eventProvider", new EventProvider());
5
6
  const CUSTOM_CSS_CHANGE = "CustomCSSChange";
6
7
 
7
8
  const attachCustomCSSChange = listener => {
@@ -16,16 +17,35 @@ const fireCustomCSSChange = tag => {
16
17
  return eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);
17
18
  };
18
19
 
19
- const customCSSFor = {};
20
+ const customCSSFor = getSharedResource("CustomStyle.customCSSFor", {});
21
+
22
+ // Listen to the eventProvider, in case other copies of this CustomStyle module fire this
23
+ // event, and this copy would therefore need to reRender the ui5 webcomponents; but
24
+ // don't reRender if it was this copy that fired the event to begin with.
25
+ let skipRerender;
26
+ attachCustomCSSChange(tag => {
27
+ if (!skipRerender) {
28
+ reRenderAllUI5Elements({ tag });
29
+ }
30
+ });
20
31
 
21
32
  const addCustomCSS = (tag, css) => {
22
33
  if (!customCSSFor[tag]) {
23
34
  customCSSFor[tag] = [];
24
35
  }
25
36
  customCSSFor[tag].push(css);
26
- fireCustomCSSChange(tag);
27
37
 
28
- RenderScheduler.reRenderAllUI5Elements({ tag });
38
+ skipRerender = true;
39
+ try {
40
+ // The event is fired and the attached event listeners are all called synchronously
41
+ // The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy
42
+ // of CustomStyle.js which is firing the `CustomCSSChange` event.
43
+ fireCustomCSSChange(tag);
44
+ } finally {
45
+ skipRerender = false;
46
+ }
47
+
48
+ return reRenderAllUI5Elements({ tag });
29
49
  };
30
50
 
31
51
  const getCustomCSS = tag => {
@@ -1,11 +1,10 @@
1
1
  import { getThemeProperties, getRegisteredPackages, isThemeRegistered } from "../asset-registries/Themes.js";
2
- import createThemePropertiesStyleTag from "./createThemePropertiesStyleTag.js";
2
+ import { removeStyle, createOrUpdateStyle } from "../ManagedStyles.js";
3
3
  import getThemeDesignerTheme from "./getThemeDesignerTheme.js";
4
- import { ponyfillNeeded, runPonyfill } from "./CSSVarsPonyfill.js";
5
4
  import { fireThemeLoaded } from "./ThemeLoaded.js";
6
5
  import { getFeature } from "../FeaturesRegistry.js";
7
6
 
8
- const BASE_THEME_PACKAGE = "@ui5/webcomponents-theme-base";
7
+ const BASE_THEME_PACKAGE = "@ui5/webcomponents-theming";
9
8
 
10
9
  const isThemeBaseRegistered = () => {
11
10
  const registeredPackages = getRegisteredPackages();
@@ -17,15 +16,14 @@ const loadThemeBase = async theme => {
17
16
  return;
18
17
  }
19
18
 
20
- const cssText = await getThemeProperties(BASE_THEME_PACKAGE, theme);
21
- createThemePropertiesStyleTag(cssText, BASE_THEME_PACKAGE);
19
+ const cssData = await getThemeProperties(BASE_THEME_PACKAGE, theme);
20
+ if (cssData) {
21
+ createOrUpdateStyle(cssData, "data-ui5-theme-properties", BASE_THEME_PACKAGE);
22
+ }
22
23
  };
23
24
 
24
25
  const deleteThemeBase = () => {
25
- const styleElement = document.head.querySelector(`style[data-ui5-theme-properties="${BASE_THEME_PACKAGE}"]`);
26
- if (styleElement) {
27
- styleElement.parentElement.removeChild(styleElement);
28
- }
26
+ removeStyle("data-ui5-theme-properties", BASE_THEME_PACKAGE);
29
27
  };
30
28
 
31
29
  const loadComponentPackages = async theme => {
@@ -35,8 +33,10 @@ const loadComponentPackages = async theme => {
35
33
  return;
36
34
  }
37
35
 
38
- const cssText = await getThemeProperties(packageName, theme);
39
- createThemePropertiesStyleTag(cssText, packageName);
36
+ const cssData = await getThemeProperties(packageName, theme);
37
+ if (cssData) {
38
+ createOrUpdateStyle(cssData, "data-ui5-theme-properties", packageName);
39
+ }
40
40
  });
41
41
  };
42
42
 
@@ -73,11 +73,6 @@ const applyTheme = async theme => {
73
73
  const packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;
74
74
  await loadComponentPackages(packagesTheme);
75
75
 
76
- // When changing the theme, run the ponyfill immediately
77
- if (ponyfillNeeded()) {
78
- runPonyfill();
79
- }
80
-
81
76
  fireThemeLoaded(theme);
82
77
  };
83
78
 
@@ -4,7 +4,7 @@ import { attachCustomCSSChange } from "./CustomStyle.js";
4
4
  const constructableStyleMap = new Map();
5
5
 
6
6
  attachCustomCSSChange(tag => {
7
- constructableStyleMap.delete(tag);
7
+ constructableStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part
8
8
  });
9
9
 
10
10
  /**
@@ -13,17 +13,18 @@ attachCustomCSSChange(tag => {
13
13
  * @param ElementClass
14
14
  * @returns {*}
15
15
  */
16
- const getConstructableStyle = ElementClass => {
16
+ const getConstructableStyle = (ElementClass, forStaticArea = false) => {
17
17
  const tag = ElementClass.getMetadata().getTag();
18
+ const key = `${tag}_${forStaticArea ? "static" : "normal"}`;
18
19
 
19
- if (!constructableStyleMap.has(tag)) {
20
- const styleContent = getEffectiveStyle(ElementClass);
20
+ if (!constructableStyleMap.has(key)) {
21
+ const styleContent = getEffectiveStyle(ElementClass, forStaticArea);
21
22
  const style = new CSSStyleSheet();
22
23
  style.replaceSync(styleContent);
23
- constructableStyleMap.set(tag, [style]);
24
+ constructableStyleMap.set(key, [style]);
24
25
  }
25
26
 
26
- return constructableStyleMap.get(tag);
27
+ return constructableStyleMap.get(key);
27
28
  };
28
29
 
29
30
  export default getConstructableStyle;
@@ -0,0 +1,27 @@
1
+ import { getUrl } from "../CSP.js";
2
+ import { getFeature } from "../FeaturesRegistry.js";
3
+
4
+ const flatten = arr => {
5
+ return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);
6
+ };
7
+
8
+ const getEffectiveLinksHrefs = (ElementClass, forStaticArea = false) => {
9
+ let stylesData = ElementClass[forStaticArea ? "staticAreaStyles" : "styles"];
10
+ const OpenUI5Enablement = getFeature("OpenUI5Enablement");
11
+
12
+ if (!stylesData) {
13
+ return;
14
+ }
15
+
16
+ if (!Array.isArray(stylesData)) {
17
+ stylesData = [stylesData];
18
+ }
19
+
20
+ if (OpenUI5Enablement) {
21
+ stylesData.push(OpenUI5Enablement.getBusyIndicatorStyles());
22
+ }
23
+
24
+ return flatten(stylesData).filter(data => !!data).map(data => getUrl(data.packageName, data.fileName));
25
+ };
26
+
27
+ export default getEffectiveLinksHrefs;
@@ -1,23 +1,39 @@
1
1
  import { getCustomCSS, attachCustomCSSChange } from "./CustomStyle.js";
2
2
  import getStylesString from "./getStylesString.js";
3
+ import { getFeature } from "../FeaturesRegistry.js";
3
4
 
4
5
  const effectiveStyleMap = new Map();
5
6
 
6
7
  attachCustomCSSChange(tag => {
7
- effectiveStyleMap.delete(tag);
8
+ effectiveStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part
8
9
  });
9
10
 
10
- const getEffectiveStyle = ElementClass => {
11
+ const getEffectiveStyle = (ElementClass, forStaticArea = false) => {
11
12
  const tag = ElementClass.getMetadata().getTag();
13
+ const key = `${tag}_${forStaticArea ? "static" : "normal"}`;
14
+ const OpenUI5Enablement = getFeature("OpenUI5Enablement");
12
15
 
13
- if (!effectiveStyleMap.has(tag)) {
14
- const customStyle = getCustomCSS(tag) || "";
15
- const builtInStyles = getStylesString(ElementClass.styles);
16
- const effectiveStyle = `${builtInStyles} ${customStyle}`;
17
- effectiveStyleMap.set(tag, effectiveStyle);
16
+ if (!effectiveStyleMap.has(key)) {
17
+ let effectiveStyle;
18
+ let busyIndicatorStyles = "";
19
+
20
+ if (OpenUI5Enablement) {
21
+ busyIndicatorStyles = getStylesString(OpenUI5Enablement.getBusyIndicatorStyles());
22
+ }
23
+
24
+ if (forStaticArea) {
25
+ effectiveStyle = getStylesString(ElementClass.staticAreaStyles);
26
+ } else {
27
+ const customStyle = getCustomCSS(tag) || "";
28
+ const builtInStyles = getStylesString(ElementClass.styles);
29
+ effectiveStyle = `${builtInStyles} ${customStyle}`;
30
+ }
31
+
32
+ effectiveStyle = `${effectiveStyle} ${busyIndicatorStyles}`;
33
+ effectiveStyleMap.set(key, effectiveStyle);
18
34
  }
19
35
 
20
- return effectiveStyleMap.get(tag);
36
+ return effectiveStyleMap.get(key);
21
37
  };
22
38
 
23
39
  export default getEffectiveStyle;
@@ -1,9 +1,11 @@
1
1
  const getStylesString = styles => {
2
2
  if (Array.isArray(styles)) {
3
- return flatten(styles).join(" ");
3
+ return flatten(styles.filter(style => !!style)).map(style => {
4
+ return typeof style === "string" ? style : style.content;
5
+ }).join(" ");
4
6
  }
5
7
 
6
- return styles;
8
+ return typeof styles === "string" ? styles : styles.content;
7
9
  };
8
10
 
9
11
  const flatten = arr => {
@@ -1,15 +1,26 @@
1
+ const warnings = new Set();
2
+
1
3
  const getThemeMetadata = () => {
2
4
  // Check if the class was already applied, most commonly to the link/style tag with the CSS Variables
3
- let el = document.querySelector(".sapThemeMetaData-Base-baseLib");
5
+ let el = document.querySelector(".sapThemeMetaData-Base-baseLib") || document.querySelector(".sapThemeMetaData-UI5-sap-ui-core");
4
6
  if (el) {
5
7
  return getComputedStyle(el).backgroundImage;
6
8
  }
7
9
 
8
10
  el = document.createElement("span");
9
11
  el.style.display = "none";
12
+
13
+ // Try with sapThemeMetaData-Base-baseLib first
10
14
  el.classList.add("sapThemeMetaData-Base-baseLib");
11
15
  document.body.appendChild(el);
12
- const metadata = getComputedStyle(el).backgroundImage;
16
+ let metadata = getComputedStyle(el).backgroundImage;
17
+
18
+ // Try with sapThemeMetaData-UI5-sap-ui-core only if the previous selector was not found
19
+ if (metadata === "none") {
20
+ el.classList.add("sapThemeMetaData-UI5-sap-ui-core");
21
+ metadata = getComputedStyle(el).backgroundImage;
22
+ }
23
+
13
24
  document.body.removeChild(el);
14
25
 
15
26
  return metadata;
@@ -24,14 +35,20 @@ const parseThemeMetadata = metadataString => {
24
35
  try {
25
36
  paramsString = decodeURIComponent(paramsString);
26
37
  } catch (ex) {
27
- console.warn("Malformed theme metadata string, unable to decodeURIComponent"); // eslint-disable-line
38
+ if (!warnings.has("decode")) {
39
+ console.warn("Malformed theme metadata string, unable to decodeURIComponent"); // eslint-disable-line
40
+ warnings.add("decode");
41
+ }
28
42
  return;
29
43
  }
30
44
  }
31
45
  try {
32
46
  return JSON.parse(paramsString);
33
47
  } catch (ex) {
34
- console.warn("Malformed theme metadata string, unable to parse JSON"); // eslint-disable-line
48
+ if (!warnings.has("parse")) {
49
+ console.warn("Malformed theme metadata string, unable to parse JSON"); // eslint-disable-line
50
+ warnings.add("parse");
51
+ }
35
52
  }
36
53
  }
37
54
  };
@@ -44,7 +61,10 @@ const processThemeMetadata = metadata => {
44
61
  themeName = metadata.Path.match(/\.([^.]+)\.css_variables$/)[1];
45
62
  baseThemeName = metadata.Extends[0];
46
63
  } catch (ex) {
47
- console.warn("Malformed theme metadata Object", metadata); // eslint-disable-line
64
+ if (!warnings.has("object")) {
65
+ console.warn("Malformed theme metadata Object", metadata); // eslint-disable-line
66
+ warnings.add("object");
67
+ }
48
68
  return;
49
69
  }
50
70
 
@@ -0,0 +1,23 @@
1
+ import getEffectiveLinksHrefs from "./getEffectiveLinksHrefs.js";
2
+ import createLinkInHead from "../util/createLinkInHead.js";
3
+ import { shouldUseLinks, shouldPreloadLinks } from "../CSP.js";
4
+
5
+ const preloaded = new Set();
6
+
7
+ const preloadLinks = ElementClass => {
8
+ if (!shouldUseLinks() || !shouldPreloadLinks()) {
9
+ return;
10
+ }
11
+
12
+ const linksHrefs = getEffectiveLinksHrefs(ElementClass, false) || [];
13
+ const staticAreaLinksHrefs = getEffectiveLinksHrefs(ElementClass, true) || [];
14
+
15
+ [...linksHrefs, ...staticAreaLinksHrefs].forEach(href => {
16
+ if (!preloaded.has(href)) {
17
+ createLinkInHead(href, { rel: "preload", as: "style" });
18
+ preloaded.add(href);
19
+ }
20
+ });
21
+ };
22
+
23
+ export default preloadLinks;
@@ -0,0 +1,9 @@
1
+ import DataType from "./DataType.js";
2
+
3
+ class CSSColor extends DataType {
4
+ static isValid(value) {
5
+ return /^(#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})|rgb\(\s*((1?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))|([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*(,\s*((1?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))|([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*){2}\)|rgba\((\s*((1?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))|([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*,){3}\s*(0(\.[0-9]+)?|1(\.0+)?)\s*\)|hsl\(\s*([0-2]?[0-9]?[0-9]|3([0-5][0-9]|60))\s*(,\s*(([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*){2}\)|hsla\(\s*([0-2]?[0-9]?[0-9]|3([0-5][0-9]|60))\s*,(\s*(([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*,){2}\s*(0(\.[0-9]+)?|1(\.0+)?)\s*\)|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgrey|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|grey|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgrey|lightgreen|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silverskyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|transparent|inherit|)$/.test(value ); // eslint-disable-line
6
+ }
7
+ }
8
+
9
+ export default CSSColor;
@@ -17,6 +17,6 @@ class CalendarType extends DataType {
17
17
  }
18
18
  }
19
19
 
20
- CalendarType.generateTypeAcessors(CalendarTypes);
20
+ CalendarType.generateTypeAccessors(CalendarTypes);
21
21
 
22
22
  export default CalendarType;
@@ -11,7 +11,19 @@ class DataType {
11
11
  static isValid(value) {
12
12
  }
13
13
 
14
- static generateTypeAcessors(types) {
14
+ static attributeToProperty(attributeValue) {
15
+ return attributeValue;
16
+ }
17
+
18
+ static propertyToAttribute(propertyValue) {
19
+ return `${propertyValue}`;
20
+ }
21
+
22
+ static valuesAreEqual(value1, value2) {
23
+ return value1 === value2;
24
+ }
25
+
26
+ static generateTypeAccessors(types) {
15
27
  Object.keys(types).forEach(type => {
16
28
  Object.defineProperty(this, type, {
17
29
  get() {
@@ -5,6 +5,10 @@ class Float extends DataType {
5
5
  // Assuming that integers are floats as well!
6
6
  return Number(value) === value;
7
7
  }
8
+
9
+ static attributeToProperty(attributeValue) {
10
+ return parseFloat(attributeValue);
11
+ }
8
12
  }
9
13
 
10
14
  export default Float;
@@ -4,6 +4,10 @@ class Integer extends DataType {
4
4
  static isValid(value) {
5
5
  return Number.isInteger(value);
6
6
  }
7
+
8
+ static attributeToProperty(attributeValue) {
9
+ return parseInt(attributeValue);
10
+ }
7
11
  }
8
12
 
9
13
  export default Integer;
@@ -0,0 +1,30 @@
1
+ import DataType from "./DataType.js";
2
+
3
+ /**
4
+ * Enumeration for different mode behaviors of the <code>InvisibleMessage</code>.
5
+ * @private
6
+ */
7
+ const InvisibleMessageModes = {
8
+
9
+ /**
10
+ * Indicates that updates to the region should be presented at the next graceful opportunity,
11
+ * such as at the end of reading the current sentence, or when the user pauses typing.
12
+ */
13
+ Polite: "Polite",
14
+
15
+ /**
16
+ * Indicates that updates to the region have the highest priority and should be presented to the user immediately.
17
+ */
18
+ Assertive: "Assertive",
19
+
20
+ };
21
+
22
+ class InvisibleMessageMode extends DataType {
23
+ static isValid(value) {
24
+ return !!InvisibleMessageModes[value];
25
+ }
26
+ }
27
+
28
+ InvisibleMessageMode.generateTypeAccessors(InvisibleMessageModes);
29
+
30
+ export default InvisibleMessageModes;
@@ -4,18 +4,13 @@
4
4
  */
5
5
  const ItemNavigationBehavior = {
6
6
  /**
7
- * Static behavior: when border of the items is reached, you can't go out of the cage.
7
+ * Static behavior: navigations stops at the first or last item.
8
8
  */
9
9
  Static: "Static",
10
10
 
11
11
  /**
12
- * Cycling behavior: when border of the items is reached, you can cycle through the items.
12
+ * Cycling behavior: navigating past the last item continues with the first and vice versa.
13
13
  */
14
14
  Cyclic: "Cyclic",
15
-
16
- /**
17
- * Paging behavior: when border of the items is reached, tou can go up/down based on the rowsize(e.g. DayPicker)
18
- */
19
- Paging: "Paging",
20
15
  };
21
16
  export default ItemNavigationBehavior;
@@ -32,6 +32,6 @@ class PopupState extends DataType {
32
32
  }
33
33
  }
34
34
 
35
- PopupState.generateTypeAcessors(PopupStates);
35
+ PopupState.generateTypeAccessors(PopupStates);
36
36
 
37
37
  export default PopupState;
@@ -17,6 +17,6 @@ class ValueState extends DataType {
17
17
  }
18
18
  }
19
19
 
20
- ValueState.generateTypeAcessors(ValueStates);
20
+ ValueState.generateTypeAccessors(ValueStates);
21
21
 
22
22
  export default ValueState;