@refinitiv-ui/elements 5.12.0-alpha.0 → 5.12.0

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 (513) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +4 -4
  3. package/lib/accordion/index.d.ts +76 -0
  4. package/lib/accordion/index.js +136 -0
  5. package/lib/accordion/themes/halo/dark/index.js +3 -0
  6. package/lib/accordion/themes/halo/light/index.js +3 -0
  7. package/lib/accordion/themes/solar/charcoal/index.js +3 -0
  8. package/lib/accordion/themes/solar/pearl/index.js +3 -0
  9. package/lib/appstate-bar/index.d.ts +65 -0
  10. package/lib/appstate-bar/index.js +100 -0
  11. package/lib/appstate-bar/themes/halo/dark/index.js +3 -0
  12. package/lib/appstate-bar/themes/halo/light/index.js +3 -0
  13. package/lib/appstate-bar/themes/solar/charcoal/index.js +3 -0
  14. package/lib/appstate-bar/themes/solar/pearl/index.js +3 -0
  15. package/lib/autosuggest/helpers/types.d.ts +54 -0
  16. package/lib/autosuggest/helpers/types.js +1 -0
  17. package/lib/autosuggest/helpers/utils.d.ts +39 -0
  18. package/lib/autosuggest/helpers/utils.js +75 -0
  19. package/lib/autosuggest/index.d.ts +538 -0
  20. package/lib/autosuggest/index.js +1255 -0
  21. package/lib/autosuggest/themes/halo/dark/index.js +5 -0
  22. package/lib/autosuggest/themes/halo/light/index.js +5 -0
  23. package/lib/autosuggest/themes/solar/charcoal/index.js +5 -0
  24. package/lib/autosuggest/themes/solar/pearl/index.js +5 -0
  25. package/lib/button/index.d.ts +138 -0
  26. package/lib/button/index.js +241 -0
  27. package/lib/button/themes/halo/dark/index.js +3 -0
  28. package/lib/button/themes/halo/light/index.js +3 -0
  29. package/lib/button/themes/solar/charcoal/index.js +3 -0
  30. package/lib/button/themes/solar/pearl/index.js +3 -0
  31. package/lib/button-bar/index.d.ts +125 -0
  32. package/lib/button-bar/index.js +295 -0
  33. package/lib/button-bar/themes/halo/dark/index.js +3 -0
  34. package/lib/button-bar/themes/halo/light/index.js +3 -0
  35. package/lib/button-bar/themes/solar/charcoal/index.js +3 -0
  36. package/lib/button-bar/themes/solar/pearl/index.js +3 -0
  37. package/lib/calendar/constants.d.ts +26 -0
  38. package/lib/calendar/constants.js +28 -0
  39. package/lib/calendar/index.d.ts +412 -0
  40. package/lib/calendar/index.js +1274 -0
  41. package/lib/calendar/locales.d.ts +1 -0
  42. package/lib/calendar/locales.js +41 -0
  43. package/lib/calendar/themes/halo/dark/index.js +3 -0
  44. package/lib/calendar/themes/halo/light/index.js +3 -0
  45. package/lib/calendar/themes/solar/charcoal/index.js +3 -0
  46. package/lib/calendar/themes/solar/pearl/index.js +3 -0
  47. package/lib/calendar/types.d.ts +32 -0
  48. package/lib/calendar/types.js +1 -0
  49. package/lib/calendar/utils.d.ts +42 -0
  50. package/lib/calendar/utils.js +120 -0
  51. package/lib/canvas/index.d.ts +101 -0
  52. package/lib/canvas/index.js +173 -0
  53. package/lib/canvas/themes/halo/dark/index.js +2 -0
  54. package/lib/canvas/themes/halo/light/index.js +2 -0
  55. package/lib/canvas/themes/solar/charcoal/index.js +2 -0
  56. package/lib/canvas/themes/solar/pearl/index.js +2 -0
  57. package/lib/card/helpers/types.d.ts +12 -0
  58. package/lib/card/helpers/types.js +1 -0
  59. package/lib/card/index.d.ts +142 -0
  60. package/lib/card/index.js +248 -0
  61. package/lib/card/themes/halo/dark/index.js +5 -0
  62. package/lib/card/themes/halo/light/index.js +5 -0
  63. package/lib/card/themes/solar/charcoal/index.js +5 -0
  64. package/lib/card/themes/solar/pearl/index.js +5 -0
  65. package/lib/chart/helpers/index.d.ts +2 -0
  66. package/lib/chart/helpers/index.js +2 -0
  67. package/lib/chart/helpers/legend.d.ts +5 -0
  68. package/lib/chart/helpers/legend.js +78 -0
  69. package/lib/chart/helpers/merge.d.ts +15 -0
  70. package/lib/chart/helpers/merge.js +28 -0
  71. package/lib/chart/helpers/types.d.ts +69 -0
  72. package/lib/chart/helpers/types.js +1 -0
  73. package/lib/chart/index.d.ts +187 -0
  74. package/lib/chart/index.js +491 -0
  75. package/lib/chart/plugins/doughnut-center-label.d.ts +3 -0
  76. package/lib/chart/plugins/doughnut-center-label.js +196 -0
  77. package/lib/chart/themes/halo/dark/index.js +4 -0
  78. package/lib/chart/themes/halo/light/index.js +4 -0
  79. package/lib/chart/themes/solar/charcoal/index.js +4 -0
  80. package/lib/chart/themes/solar/pearl/index.js +4 -0
  81. package/lib/checkbox/index.d.ts +97 -0
  82. package/lib/checkbox/index.js +194 -0
  83. package/lib/checkbox/themes/halo/dark/index.js +4 -0
  84. package/lib/checkbox/themes/halo/light/index.js +4 -0
  85. package/lib/checkbox/themes/solar/charcoal/index.js +4 -0
  86. package/lib/checkbox/themes/solar/pearl/index.js +4 -0
  87. package/lib/clock/index.d.ts +321 -0
  88. package/lib/clock/index.js +583 -0
  89. package/lib/clock/themes/halo/dark/index.js +2 -0
  90. package/lib/clock/themes/halo/light/index.js +2 -0
  91. package/lib/clock/themes/solar/charcoal/index.js +2 -0
  92. package/lib/clock/themes/solar/pearl/index.js +2 -0
  93. package/lib/clock/utils/TickManager.d.ts +14 -0
  94. package/lib/clock/utils/TickManager.js +66 -0
  95. package/lib/clock/utils/timestamps.d.ts +6 -0
  96. package/lib/clock/utils/timestamps.js +6 -0
  97. package/lib/collapse/custom-elements.json +4 -2
  98. package/lib/collapse/custom-elements.md +1 -1
  99. package/lib/collapse/index.d.ts +123 -0
  100. package/lib/collapse/index.js +227 -0
  101. package/lib/collapse/themes/halo/dark/index.js +5 -0
  102. package/lib/collapse/themes/halo/light/index.js +5 -0
  103. package/lib/collapse/themes/solar/charcoal/index.js +5 -0
  104. package/lib/collapse/themes/solar/pearl/index.js +5 -0
  105. package/lib/color-dialog/elements/color-palettes.d.ts +52 -0
  106. package/lib/color-dialog/elements/color-palettes.js +101 -0
  107. package/lib/color-dialog/elements/grayscale-palettes.d.ts +67 -0
  108. package/lib/color-dialog/elements/grayscale-palettes.js +161 -0
  109. package/lib/color-dialog/elements/palettes.d.ts +65 -0
  110. package/lib/color-dialog/elements/palettes.js +132 -0
  111. package/lib/color-dialog/helpers/color-helpers.d.ts +16 -0
  112. package/lib/color-dialog/helpers/color-helpers.js +161 -0
  113. package/lib/color-dialog/helpers/value-model.d.ts +75 -0
  114. package/lib/color-dialog/helpers/value-model.js +141 -0
  115. package/lib/color-dialog/index.d.ts +232 -0
  116. package/lib/color-dialog/index.js +459 -0
  117. package/lib/color-dialog/themes/halo/dark/index.js +7 -0
  118. package/lib/color-dialog/themes/halo/light/index.js +7 -0
  119. package/lib/color-dialog/themes/solar/charcoal/index.js +7 -0
  120. package/lib/color-dialog/themes/solar/pearl/index.js +7 -0
  121. package/lib/combo-box/helpers/filter.d.ts +10 -0
  122. package/lib/combo-box/helpers/filter.js +29 -0
  123. package/lib/combo-box/helpers/keyboard-event.d.ts +17 -0
  124. package/lib/combo-box/helpers/keyboard-event.js +19 -0
  125. package/lib/combo-box/helpers/renderer.d.ts +8 -0
  126. package/lib/combo-box/helpers/renderer.js +24 -0
  127. package/lib/combo-box/helpers/types.d.ts +11 -0
  128. package/lib/combo-box/helpers/types.js +1 -0
  129. package/lib/combo-box/index.d.ts +551 -0
  130. package/lib/combo-box/index.js +1183 -0
  131. package/lib/combo-box/themes/halo/dark/index.js +7 -0
  132. package/lib/combo-box/themes/halo/light/index.js +7 -0
  133. package/lib/combo-box/themes/solar/charcoal/index.js +7 -0
  134. package/lib/combo-box/themes/solar/pearl/index.js +7 -0
  135. package/lib/counter/index.d.ts +91 -0
  136. package/lib/counter/index.js +154 -0
  137. package/lib/counter/themes/halo/dark/index.js +3 -0
  138. package/lib/counter/themes/halo/light/index.js +3 -0
  139. package/lib/counter/themes/solar/charcoal/index.js +3 -0
  140. package/lib/counter/themes/solar/pearl/index.js +3 -0
  141. package/lib/counter/utils.d.ts +13 -0
  142. package/lib/counter/utils.js +52 -0
  143. package/lib/datetime-picker/index.d.ts +509 -0
  144. package/lib/datetime-picker/index.js +1175 -0
  145. package/lib/datetime-picker/locales.d.ts +8 -0
  146. package/lib/datetime-picker/locales.js +57 -0
  147. package/lib/datetime-picker/themes/halo/dark/index.js +7 -0
  148. package/lib/datetime-picker/themes/halo/light/index.js +7 -0
  149. package/lib/datetime-picker/themes/solar/charcoal/index.js +7 -0
  150. package/lib/datetime-picker/themes/solar/pearl/index.js +7 -0
  151. package/lib/datetime-picker/types.d.ts +3 -0
  152. package/lib/datetime-picker/types.js +1 -0
  153. package/lib/datetime-picker/utils.d.ts +55 -0
  154. package/lib/datetime-picker/utils.js +92 -0
  155. package/lib/dialog/custom-elements.json +11 -0
  156. package/lib/dialog/custom-elements.md +4 -3
  157. package/lib/dialog/draggable-element.d.ts +14 -0
  158. package/lib/dialog/draggable-element.js +221 -0
  159. package/lib/dialog/index.d.ts +213 -0
  160. package/lib/dialog/index.js +353 -0
  161. package/lib/dialog/themes/halo/dark/index.js +7 -0
  162. package/lib/dialog/themes/halo/light/index.js +7 -0
  163. package/lib/dialog/themes/solar/charcoal/index.js +7 -0
  164. package/lib/dialog/themes/solar/pearl/index.js +7 -0
  165. package/lib/email-field/index.d.ts +80 -0
  166. package/lib/email-field/index.js +86 -0
  167. package/lib/email-field/themes/halo/dark/index.js +3 -0
  168. package/lib/email-field/themes/halo/light/index.js +3 -0
  169. package/lib/email-field/themes/solar/charcoal/index.js +3 -0
  170. package/lib/email-field/themes/solar/pearl/index.js +3 -0
  171. package/lib/events.d.ts +121 -0
  172. package/lib/events.js +1 -0
  173. package/lib/flag/index.d.ts +96 -0
  174. package/lib/flag/index.js +168 -0
  175. package/lib/flag/themes/halo/dark/index.js +2 -0
  176. package/lib/flag/themes/halo/light/index.js +2 -0
  177. package/lib/flag/themes/solar/charcoal/index.js +2 -0
  178. package/lib/flag/themes/solar/pearl/index.js +2 -0
  179. package/lib/flag/utils/FlagLoader.d.ts +47 -0
  180. package/lib/flag/utils/FlagLoader.js +86 -0
  181. package/lib/header/index.d.ts +46 -0
  182. package/lib/header/index.js +73 -0
  183. package/lib/header/themes/halo/dark/index.js +2 -0
  184. package/lib/header/themes/halo/light/index.js +2 -0
  185. package/lib/header/themes/solar/charcoal/index.js +2 -0
  186. package/lib/header/themes/solar/pearl/index.js +2 -0
  187. package/lib/heatmap/helpers/color.d.ts +30 -0
  188. package/lib/heatmap/helpers/color.js +68 -0
  189. package/lib/heatmap/helpers/text.d.ts +26 -0
  190. package/lib/heatmap/helpers/text.js +91 -0
  191. package/lib/heatmap/helpers/track.d.ts +102 -0
  192. package/lib/heatmap/helpers/track.js +160 -0
  193. package/lib/heatmap/helpers/types.d.ts +40 -0
  194. package/lib/heatmap/helpers/types.js +1 -0
  195. package/lib/heatmap/index.d.ts +453 -0
  196. package/lib/heatmap/index.js +1103 -0
  197. package/lib/heatmap/themes/halo/dark/index.js +4 -0
  198. package/lib/heatmap/themes/halo/light/index.js +4 -0
  199. package/lib/heatmap/themes/solar/charcoal/index.js +4 -0
  200. package/lib/heatmap/themes/solar/pearl/index.js +4 -0
  201. package/lib/icon/index.d.ts +90 -0
  202. package/lib/icon/index.js +171 -0
  203. package/lib/icon/themes/halo/dark/index.js +2 -0
  204. package/lib/icon/themes/halo/light/index.js +2 -0
  205. package/lib/icon/themes/solar/charcoal/index.js +2 -0
  206. package/lib/icon/themes/solar/pearl/index.js +2 -0
  207. package/lib/icon/utils/IconLoader.d.ts +52 -0
  208. package/lib/icon/utils/IconLoader.js +93 -0
  209. package/lib/index.d.ts +3 -0
  210. package/lib/index.js +3 -0
  211. package/lib/interactive-chart/helpers/merge.d.ts +15 -0
  212. package/lib/interactive-chart/helpers/merge.js +28 -0
  213. package/lib/interactive-chart/helpers/types.d.ts +45 -0
  214. package/lib/interactive-chart/helpers/types.js +6 -0
  215. package/lib/interactive-chart/index.d.ts +383 -0
  216. package/lib/interactive-chart/index.js +1093 -0
  217. package/lib/interactive-chart/themes/halo/dark/index.js +3 -0
  218. package/lib/interactive-chart/themes/halo/light/index.js +3 -0
  219. package/lib/interactive-chart/themes/solar/charcoal/index.js +3 -0
  220. package/lib/interactive-chart/themes/solar/pearl/index.js +3 -0
  221. package/lib/item/helpers/types.d.ts +57 -0
  222. package/lib/item/helpers/types.js +1 -0
  223. package/lib/item/index.d.ts +159 -0
  224. package/lib/item/index.js +272 -0
  225. package/lib/item/themes/halo/dark/index.js +4 -0
  226. package/lib/item/themes/halo/light/index.js +4 -0
  227. package/lib/item/themes/solar/charcoal/index.js +4 -0
  228. package/lib/item/themes/solar/pearl/index.js +4 -0
  229. package/lib/label/index.d.ts +102 -0
  230. package/lib/label/index.js +245 -0
  231. package/lib/label/themes/halo/dark/index.js +3 -0
  232. package/lib/label/themes/halo/light/index.js +3 -0
  233. package/lib/label/themes/solar/charcoal/index.js +3 -0
  234. package/lib/label/themes/solar/pearl/index.js +3 -0
  235. package/lib/layout/index.d.ts +107 -0
  236. package/lib/layout/index.js +212 -0
  237. package/lib/layout/themes/halo/dark/index.js +2 -0
  238. package/lib/layout/themes/halo/light/index.js +2 -0
  239. package/lib/layout/themes/solar/charcoal/index.js +2 -0
  240. package/lib/layout/themes/solar/pearl/index.js +2 -0
  241. package/lib/led-gauge/index.d.ts +144 -0
  242. package/lib/led-gauge/index.js +438 -0
  243. package/lib/led-gauge/themes/halo/dark/index.js +3 -0
  244. package/lib/led-gauge/themes/halo/light/index.js +3 -0
  245. package/lib/led-gauge/themes/solar/charcoal/index.js +3 -0
  246. package/lib/led-gauge/themes/solar/pearl/index.js +3 -0
  247. package/lib/list/extensible-function.d.ts +8 -0
  248. package/lib/list/extensible-function.js +13 -0
  249. package/lib/list/helpers/list-renderer.d.ts +9 -0
  250. package/lib/list/helpers/list-renderer.js +37 -0
  251. package/lib/list/helpers/types.d.ts +3 -0
  252. package/lib/list/helpers/types.js +1 -0
  253. package/lib/list/index.d.ts +313 -0
  254. package/lib/list/index.js +640 -0
  255. package/lib/list/renderer.d.ts +36 -0
  256. package/lib/list/renderer.js +9 -0
  257. package/lib/list/themes/halo/dark/index.js +3 -0
  258. package/lib/list/themes/halo/light/index.js +3 -0
  259. package/lib/list/themes/solar/charcoal/index.js +3 -0
  260. package/lib/list/themes/solar/pearl/index.js +3 -0
  261. package/lib/loader/index.d.ts +41 -0
  262. package/lib/loader/index.js +61 -0
  263. package/lib/loader/themes/halo/dark/index.js +2 -0
  264. package/lib/loader/themes/halo/light/index.js +2 -0
  265. package/lib/loader/themes/solar/charcoal/index.js +2 -0
  266. package/lib/loader/themes/solar/pearl/index.js +2 -0
  267. package/lib/multi-input/helpers/types.d.ts +11 -0
  268. package/lib/multi-input/helpers/types.js +1 -0
  269. package/lib/multi-input/index.d.ts +301 -0
  270. package/lib/multi-input/index.js +594 -0
  271. package/lib/multi-input/themes/halo/dark/index.js +4 -0
  272. package/lib/multi-input/themes/halo/light/index.js +4 -0
  273. package/lib/multi-input/themes/solar/charcoal/index.js +4 -0
  274. package/lib/multi-input/themes/solar/pearl/index.js +4 -0
  275. package/lib/notification/elements/notification-tray.d.ts +97 -0
  276. package/lib/notification/elements/notification-tray.js +167 -0
  277. package/lib/notification/elements/notification.d.ts +90 -0
  278. package/lib/notification/elements/notification.js +154 -0
  279. package/lib/notification/helpers/status.d.ts +30 -0
  280. package/lib/notification/helpers/status.js +130 -0
  281. package/lib/notification/helpers/types.d.ts +10 -0
  282. package/lib/notification/helpers/types.js +1 -0
  283. package/lib/notification/index.d.ts +2 -0
  284. package/lib/notification/index.js +2 -0
  285. package/lib/notification/themes/halo/dark/index.js +5 -0
  286. package/lib/notification/themes/halo/light/index.js +5 -0
  287. package/lib/notification/themes/solar/charcoal/index.js +5 -0
  288. package/lib/notification/themes/solar/pearl/index.js +5 -0
  289. package/lib/number-field/index.d.ts +339 -0
  290. package/lib/number-field/index.js +741 -0
  291. package/lib/number-field/themes/halo/dark/index.js +3 -0
  292. package/lib/number-field/themes/halo/light/index.js +3 -0
  293. package/lib/number-field/themes/solar/charcoal/index.js +3 -0
  294. package/lib/number-field/themes/solar/pearl/index.js +3 -0
  295. package/lib/overlay/elements/overlay-backdrop.d.ts +46 -0
  296. package/lib/overlay/elements/overlay-backdrop.js +64 -0
  297. package/lib/overlay/elements/overlay-viewport.d.ts +40 -0
  298. package/lib/overlay/elements/overlay-viewport.js +52 -0
  299. package/lib/overlay/elements/overlay.d.ts +408 -0
  300. package/lib/overlay/elements/overlay.js +1426 -0
  301. package/lib/overlay/helpers/functions.d.ts +13 -0
  302. package/lib/overlay/helpers/functions.js +16 -0
  303. package/lib/overlay/helpers/types.d.ts +97 -0
  304. package/lib/overlay/helpers/types.js +16 -0
  305. package/lib/overlay/index.d.ts +2 -0
  306. package/lib/overlay/index.js +1 -0
  307. package/lib/overlay/managers/backdrop-manager.d.ts +45 -0
  308. package/lib/overlay/managers/backdrop-manager.js +96 -0
  309. package/lib/overlay/managers/close-manager.d.ts +54 -0
  310. package/lib/overlay/managers/close-manager.js +138 -0
  311. package/lib/overlay/managers/focus-manager.d.ts +71 -0
  312. package/lib/overlay/managers/focus-manager.js +228 -0
  313. package/lib/overlay/managers/interaction-lock-manager.d.ts +138 -0
  314. package/lib/overlay/managers/interaction-lock-manager.js +375 -0
  315. package/lib/overlay/managers/viewport-manager.d.ts +93 -0
  316. package/lib/overlay/managers/viewport-manager.js +211 -0
  317. package/lib/overlay/managers/zindex-manager.d.ts +80 -0
  318. package/lib/overlay/managers/zindex-manager.js +195 -0
  319. package/lib/overlay/themes/halo/dark/index.js +4 -0
  320. package/lib/overlay/themes/halo/light/index.js +4 -0
  321. package/lib/overlay/themes/solar/charcoal/index.js +4 -0
  322. package/lib/overlay/themes/solar/pearl/index.js +4 -0
  323. package/lib/overlay-menu/helpers/types.d.ts +8 -0
  324. package/lib/overlay-menu/helpers/types.js +1 -0
  325. package/lib/overlay-menu/index.d.ts +387 -0
  326. package/lib/overlay-menu/index.js +935 -0
  327. package/lib/overlay-menu/managers/menu-manager.d.ts +98 -0
  328. package/lib/overlay-menu/managers/menu-manager.js +240 -0
  329. package/lib/overlay-menu/themes/halo/dark/index.js +5 -0
  330. package/lib/overlay-menu/themes/halo/light/index.js +5 -0
  331. package/lib/overlay-menu/themes/solar/charcoal/index.js +5 -0
  332. package/lib/overlay-menu/themes/solar/pearl/index.js +5 -0
  333. package/lib/pagination/index.d.ts +275 -0
  334. package/lib/pagination/index.js +552 -0
  335. package/lib/pagination/themes/halo/dark/index.js +6 -0
  336. package/lib/pagination/themes/halo/light/index.js +6 -0
  337. package/lib/pagination/themes/solar/charcoal/index.js +6 -0
  338. package/lib/pagination/themes/solar/pearl/index.js +6 -0
  339. package/lib/panel/index.d.ts +48 -0
  340. package/lib/panel/index.js +74 -0
  341. package/lib/panel/themes/halo/dark/index.js +2 -0
  342. package/lib/panel/themes/halo/light/index.js +2 -0
  343. package/lib/panel/themes/solar/charcoal/index.js +2 -0
  344. package/lib/panel/themes/solar/pearl/index.js +2 -0
  345. package/lib/password-field/index.d.ts +89 -0
  346. package/lib/password-field/index.js +112 -0
  347. package/lib/password-field/themes/halo/dark/index.js +3 -0
  348. package/lib/password-field/themes/halo/light/index.js +3 -0
  349. package/lib/password-field/themes/solar/charcoal/index.js +3 -0
  350. package/lib/password-field/themes/solar/pearl/index.js +3 -0
  351. package/lib/pill/index.d.ts +97 -0
  352. package/lib/pill/index.js +160 -0
  353. package/lib/pill/themes/halo/dark/index.js +3 -0
  354. package/lib/pill/themes/halo/light/index.js +3 -0
  355. package/lib/pill/themes/solar/charcoal/index.js +3 -0
  356. package/lib/pill/themes/solar/pearl/index.js +3 -0
  357. package/lib/progress-bar/index.d.ts +82 -0
  358. package/lib/progress-bar/index.js +157 -0
  359. package/lib/progress-bar/themes/halo/dark/index.js +2 -0
  360. package/lib/progress-bar/themes/halo/light/index.js +2 -0
  361. package/lib/progress-bar/themes/solar/charcoal/index.js +2 -0
  362. package/lib/progress-bar/themes/solar/pearl/index.js +2 -0
  363. package/lib/radio-button/index.d.ts +123 -0
  364. package/lib/radio-button/index.js +261 -0
  365. package/lib/radio-button/radio-button-registry.d.ts +22 -0
  366. package/lib/radio-button/radio-button-registry.js +93 -0
  367. package/lib/radio-button/themes/halo/dark/index.js +3 -0
  368. package/lib/radio-button/themes/halo/light/index.js +3 -0
  369. package/lib/radio-button/themes/solar/charcoal/index.js +3 -0
  370. package/lib/radio-button/themes/solar/pearl/index.js +3 -0
  371. package/lib/rating/index.d.ts +91 -0
  372. package/lib/rating/index.js +157 -0
  373. package/lib/rating/themes/halo/dark/index.js +2 -0
  374. package/lib/rating/themes/halo/light/index.js +2 -0
  375. package/lib/rating/themes/solar/charcoal/index.js +2 -0
  376. package/lib/rating/themes/solar/pearl/index.js +2 -0
  377. package/lib/search-field/index.d.ts +77 -0
  378. package/lib/search-field/index.js +84 -0
  379. package/lib/search-field/themes/halo/dark/index.js +3 -0
  380. package/lib/search-field/themes/halo/light/index.js +3 -0
  381. package/lib/search-field/themes/solar/charcoal/index.js +3 -0
  382. package/lib/search-field/themes/solar/pearl/index.js +3 -0
  383. package/lib/select/helpers/types.d.ts +3 -0
  384. package/lib/select/helpers/types.js +1 -0
  385. package/lib/select/index.d.ts +396 -0
  386. package/lib/select/index.js +981 -0
  387. package/lib/select/themes/halo/dark/index.js +5 -0
  388. package/lib/select/themes/halo/light/index.js +5 -0
  389. package/lib/select/themes/solar/charcoal/index.js +5 -0
  390. package/lib/select/themes/solar/pearl/index.js +5 -0
  391. package/lib/sidebar-layout/index.d.ts +70 -0
  392. package/lib/sidebar-layout/index.js +134 -0
  393. package/lib/sidebar-layout/themes/halo/dark/index.js +3 -0
  394. package/lib/sidebar-layout/themes/halo/light/index.js +3 -0
  395. package/lib/sidebar-layout/themes/solar/charcoal/index.js +3 -0
  396. package/lib/sidebar-layout/themes/solar/pearl/index.js +3 -0
  397. package/lib/slider/index.d.ts +409 -0
  398. package/lib/slider/index.js +1197 -0
  399. package/lib/slider/themes/halo/dark/index.js +3 -0
  400. package/lib/slider/themes/halo/light/index.js +3 -0
  401. package/lib/slider/themes/solar/charcoal/index.js +3 -0
  402. package/lib/slider/themes/solar/pearl/index.js +3 -0
  403. package/lib/sparkline/index.d.ts +109 -0
  404. package/lib/sparkline/index.js +188 -0
  405. package/lib/sparkline/themes/halo/dark/index.js +2 -0
  406. package/lib/sparkline/themes/halo/light/index.js +2 -0
  407. package/lib/sparkline/themes/solar/charcoal/index.js +2 -0
  408. package/lib/sparkline/themes/solar/pearl/index.js +2 -0
  409. package/lib/swing-gauge/const.d.ts +22 -0
  410. package/lib/swing-gauge/const.js +26 -0
  411. package/lib/swing-gauge/helpers.d.ts +8 -0
  412. package/lib/swing-gauge/helpers.js +105 -0
  413. package/lib/swing-gauge/index.d.ts +296 -0
  414. package/lib/swing-gauge/index.js +764 -0
  415. package/lib/swing-gauge/themes/halo/dark/index.js +3 -0
  416. package/lib/swing-gauge/themes/halo/light/index.js +3 -0
  417. package/lib/swing-gauge/themes/solar/charcoal/index.js +3 -0
  418. package/lib/swing-gauge/themes/solar/pearl/index.js +3 -0
  419. package/lib/swing-gauge/types.d.ts +34 -0
  420. package/lib/swing-gauge/types.js +1 -0
  421. package/lib/tab/custom-elements.json +13 -0
  422. package/lib/tab/custom-elements.md +1 -0
  423. package/lib/tab/index.d.ts +136 -0
  424. package/lib/tab/index.js +236 -0
  425. package/lib/tab/themes/halo/dark/index.js +4 -0
  426. package/lib/tab/themes/halo/light/index.js +4 -0
  427. package/lib/tab/themes/solar/charcoal/index.js +4 -0
  428. package/lib/tab/themes/solar/pearl/index.js +4 -0
  429. package/lib/tab-bar/custom-elements.json +12 -0
  430. package/lib/tab-bar/custom-elements.md +7 -0
  431. package/lib/tab-bar/helpers/animate.d.ts +16 -0
  432. package/lib/tab-bar/helpers/animate.js +53 -0
  433. package/lib/tab-bar/index.d.ts +198 -0
  434. package/lib/tab-bar/index.js +428 -0
  435. package/lib/tab-bar/themes/halo/dark/index.js +4 -0
  436. package/lib/tab-bar/themes/halo/light/index.js +4 -0
  437. package/lib/tab-bar/themes/solar/charcoal/index.js +4 -0
  438. package/lib/tab-bar/themes/solar/pearl/index.js +4 -0
  439. package/lib/text-field/index.d.ts +151 -0
  440. package/lib/text-field/index.js +260 -0
  441. package/lib/text-field/themes/halo/dark/index.js +3 -0
  442. package/lib/text-field/themes/halo/light/index.js +3 -0
  443. package/lib/text-field/themes/solar/charcoal/index.js +3 -0
  444. package/lib/text-field/themes/solar/pearl/index.js +3 -0
  445. package/lib/time-picker/index.d.ts +412 -0
  446. package/lib/time-picker/index.js +898 -0
  447. package/lib/time-picker/themes/halo/dark/index.js +4 -0
  448. package/lib/time-picker/themes/halo/light/index.js +4 -0
  449. package/lib/time-picker/themes/solar/charcoal/index.js +4 -0
  450. package/lib/time-picker/themes/solar/pearl/index.js +4 -0
  451. package/lib/toggle/index.d.ts +87 -0
  452. package/lib/toggle/index.js +153 -0
  453. package/lib/toggle/themes/halo/dark/index.js +2 -0
  454. package/lib/toggle/themes/halo/light/index.js +2 -0
  455. package/lib/toggle/themes/solar/charcoal/index.js +2 -0
  456. package/lib/toggle/themes/solar/pearl/index.js +2 -0
  457. package/lib/tooltip/elements/title-tooltip.d.ts +1 -0
  458. package/lib/tooltip/elements/title-tooltip.js +18 -0
  459. package/lib/tooltip/elements/tooltip-element.d.ts +21 -0
  460. package/lib/tooltip/elements/tooltip-element.js +54 -0
  461. package/lib/tooltip/helpers/overflow-tooltip.d.ts +9 -0
  462. package/lib/tooltip/helpers/overflow-tooltip.js +19 -0
  463. package/lib/tooltip/helpers/renderer.d.ts +8 -0
  464. package/lib/tooltip/helpers/renderer.js +11 -0
  465. package/lib/tooltip/helpers/types.d.ts +23 -0
  466. package/lib/tooltip/helpers/types.js +1 -0
  467. package/lib/tooltip/index.d.ts +232 -0
  468. package/lib/tooltip/index.js +477 -0
  469. package/lib/tooltip/managers/tooltip-manager.d.ts +15 -0
  470. package/lib/tooltip/managers/tooltip-manager.js +140 -0
  471. package/lib/tooltip/themes/halo/dark/index.js +3 -0
  472. package/lib/tooltip/themes/halo/light/index.js +3 -0
  473. package/lib/tooltip/themes/solar/charcoal/index.js +3 -0
  474. package/lib/tooltip/themes/solar/pearl/index.js +3 -0
  475. package/lib/tornado-chart/elements/tornado-chart.d.ts +78 -0
  476. package/lib/tornado-chart/elements/tornado-chart.js +122 -0
  477. package/lib/tornado-chart/elements/tornado-item.d.ts +110 -0
  478. package/lib/tornado-chart/elements/tornado-item.js +207 -0
  479. package/lib/tornado-chart/index.d.ts +2 -0
  480. package/lib/tornado-chart/index.js +2 -0
  481. package/lib/tornado-chart/themes/halo/dark/index.js +6 -0
  482. package/lib/tornado-chart/themes/halo/light/index.js +6 -0
  483. package/lib/tornado-chart/themes/solar/charcoal/index.js +6 -0
  484. package/lib/tornado-chart/themes/solar/pearl/index.js +6 -0
  485. package/lib/tree/elements/tree-item.d.ts +129 -0
  486. package/lib/tree/elements/tree-item.js +238 -0
  487. package/lib/tree/elements/tree.d.ts +203 -0
  488. package/lib/tree/elements/tree.js +414 -0
  489. package/lib/tree/helpers/filter.d.ts +8 -0
  490. package/lib/tree/helpers/filter.js +33 -0
  491. package/lib/tree/helpers/renderer.d.ts +5 -0
  492. package/lib/tree/helpers/renderer.js +33 -0
  493. package/lib/tree/helpers/types.d.ts +25 -0
  494. package/lib/tree/helpers/types.js +1 -0
  495. package/lib/tree/index.d.ts +4 -0
  496. package/lib/tree/index.js +3 -0
  497. package/lib/tree/managers/tree-manager.d.ts +248 -0
  498. package/lib/tree/managers/tree-manager.js +395 -0
  499. package/lib/tree/themes/halo/dark/index.js +7 -0
  500. package/lib/tree/themes/halo/light/index.js +7 -0
  501. package/lib/tree/themes/solar/charcoal/index.js +7 -0
  502. package/lib/tree/themes/solar/pearl/index.js +7 -0
  503. package/lib/tree-select/helpers/types.d.ts +4 -0
  504. package/lib/tree-select/helpers/types.js +1 -0
  505. package/lib/tree-select/index.d.ts +404 -0
  506. package/lib/tree-select/index.js +891 -0
  507. package/lib/tree-select/themes/halo/dark/index.js +11 -0
  508. package/lib/tree-select/themes/halo/light/index.js +11 -0
  509. package/lib/tree-select/themes/solar/charcoal/index.js +11 -0
  510. package/lib/tree-select/themes/solar/pearl/index.js +11 -0
  511. package/lib/version.d.ts +1 -0
  512. package/lib/version.js +1 -0
  513. package/package.json +293 -24
@@ -0,0 +1,741 @@
1
+ import { __decorate } from "tslib";
2
+ import { FormFieldElement, html, css, FocusedPropertyKey } from '@refinitiv-ui/core';
3
+ import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
4
+ import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
5
+ import { query } from '@refinitiv-ui/core/lib/decorators/query.js';
6
+ import { VERSION } from '../version.js';
7
+ import '../icon/index.js';
8
+ const NUMBER_PATTERN = '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$';
9
+ const DEFAULT_STEP_BASE = 1;
10
+ const ANY_STEP = 'any';
11
+ var Direction;
12
+ (function (Direction) {
13
+ Direction[Direction["Up"] = 1] = "Up";
14
+ Direction[Direction["Down"] = -1] = "Down";
15
+ })(Direction || (Direction = {}));
16
+ /**
17
+ * Form control element for numbers.
18
+ *
19
+ * @fires value-changed - Dispatched when value changes
20
+ * @fires error-changed - Dispatched when error state changes
21
+ *
22
+ * @attr {boolean} disabled - Set disabled state
23
+ * @prop {boolean} [disabled=false] - Set disabled state
24
+ *
25
+ * @attr {boolean} error - Set error state
26
+ * @prop {boolean} [error=false] - Set error state
27
+ *
28
+ * @attr {string} placeholder - Set placeholder text
29
+ * @prop {string} [placeholder=""] - Set placeholder text
30
+ *
31
+ * @attr {boolean} readonly - Set readonly state
32
+ * @prop {boolean} [readonly=false] - Set readonly state
33
+ *
34
+ * @attr {boolean} transparent - Disables all other states and border/background styles.
35
+ * @prop {boolean} [transparent=false] - Disables all other states and border/background styles.
36
+ *
37
+ * @attr {boolean} warning - Set warning state
38
+ * @prop {boolean} [warning=false] - Set warning state
39
+ *
40
+ * @attr {string} value - Input's value
41
+ * @prop {string} [value=""] - Input's value
42
+ */
43
+ let NumberField = class NumberField extends FormFieldElement {
44
+ constructor() {
45
+ super(...arguments);
46
+ /**
47
+ * Set spinner's visibility
48
+ */
49
+ this.noSpinner = false;
50
+ /**
51
+ * Set step value
52
+ */
53
+ this.step = null;
54
+ /**
55
+ * Set minimum value.
56
+ * This value must be less than or equal to the value of the `max` attribute
57
+ */
58
+ this.min = null;
59
+ /**
60
+ * Set maximum value.
61
+ * This value must be greater than or equal to the value of the `min` attribute
62
+ */
63
+ this.max = null;
64
+ this.interimValueState = false; // make sure that internal input field value is updated only on external value change
65
+ }
66
+ /**
67
+ * Element version number
68
+ * @returns version number
69
+ */
70
+ static get version() {
71
+ return VERSION;
72
+ }
73
+ /**
74
+ * A `CSSResultGroup` that will be used
75
+ * to style the host, slotted children
76
+ * and the internal template of the element.
77
+ * @return CSS template
78
+ */
79
+ static get styles() {
80
+ return css `
81
+ :host {
82
+ display: inline-block;
83
+ }
84
+ :host(:focus), :host input:focus {
85
+ outline: none;
86
+ }
87
+ :host([transparent]) {
88
+ background: none !important;
89
+ border: none !important;
90
+ }
91
+ [part=input] {
92
+ font: inherit;
93
+ background: none;
94
+ color: currentColor;
95
+ border: none;
96
+ text-align: inherit;
97
+ }
98
+ [part=spinner]{
99
+ display: flex;
100
+ flex-direction: column;
101
+ }
102
+ [part=spinner-up], [part=spinner-down] {
103
+ display: flex;
104
+ height: 50%;
105
+ cursor: pointer;
106
+ user-select: none;
107
+ }
108
+ [part^=spinner][disabled],
109
+ [part^=spinner][readonly] {
110
+ cursor: default;
111
+ }
112
+ `;
113
+ }
114
+ /**
115
+ * The value of the number entered into the input.
116
+ * @param value number-field value
117
+ * @default -
118
+ */
119
+ set value(value) {
120
+ this.interimValueState = true;
121
+ super.value = value;
122
+ }
123
+ get value() {
124
+ return this.valueAsNumberString(this.internalValue);
125
+ }
126
+ /**
127
+ * Returns the value of the element, interpreted as double number
128
+ */
129
+ get valueAsNumber() {
130
+ return this.stringToNumber(this.internalValue);
131
+ }
132
+ /**
133
+ * Updates the element
134
+ * @param changedProperties Properties that has changed
135
+ * @returns {void}
136
+ */
137
+ update(changedProperties) {
138
+ // This code probably should not be here, as validation must be instantiated by the app developer
139
+ // Keep the element inline with others for now
140
+ if (changedProperties.has(FocusedPropertyKey) && !this.focused) {
141
+ this.reportValidity();
142
+ }
143
+ super.update(changedProperties);
144
+ }
145
+ /**
146
+ * Called when the element’s DOM has been updated and rendered
147
+ * @param changedProperties Properties that has changed
148
+ * @returns {void}
149
+ */
150
+ updated(changedProperties) {
151
+ // cannot use property binding on value as it may override the current input of the control
152
+ // set it manually only if value has been updated externally
153
+ // all internal input changes should not update input value
154
+ if (changedProperties.has('value') && this.interimValueState) {
155
+ this.inputValue = this.value;
156
+ this.interimValueState = false;
157
+ }
158
+ }
159
+ /**
160
+ * Convert string to number
161
+ * @param value value to convert
162
+ * @returns NaN if string is an invalid number or Infinity or empty string;
163
+ */
164
+ stringToNumber(value) {
165
+ return value && this.isValidValue(value) ? Number(value) : NaN;
166
+ }
167
+ /**
168
+ * Convert a float number to a fixed number
169
+ * @param value Value to convert
170
+ * @param [decimals] optional decimals. Default is based on step base and allowed value step
171
+ * @returns fixed number
172
+ */
173
+ toFixedNumber(value, decimals = this.stepDecimals) {
174
+ return Number(value.toFixed(decimals));
175
+ }
176
+ /**
177
+ * Convert step value from string to number or 'any'
178
+ * @returns step value of input as a number or 'any'
179
+ */
180
+ get stepValue() {
181
+ // special value as defined by HTML specs
182
+ if (String(this.step).toLowerCase() === ANY_STEP) {
183
+ return ANY_STEP;
184
+ }
185
+ const step = this.stringToNumber(this.step);
186
+ return isNaN(step) || step <= 0 ? DEFAULT_STEP_BASE : step;
187
+ }
188
+ /**
189
+ * Get the number of decimal places
190
+ * @param value Value to check
191
+ * @returns the number of decimal places
192
+ */
193
+ getDecimalPlace(value) {
194
+ if (Math.floor(value) === value || isNaN(value) || !isFinite(value)) {
195
+ return 0;
196
+ }
197
+ return value.toString().split('.')[1].length || 0;
198
+ }
199
+ /**
200
+ * Get number of decimals based on step base and allowed value step
201
+ * @returns decimals
202
+ */
203
+ get stepDecimals() {
204
+ return Math.max(this.getDecimalPlace(this.stepBase), this.getDecimalPlace(this.getAllowedValueStep()));
205
+ }
206
+ /**
207
+ * Check if passed value is a valid value
208
+ * @override
209
+ * @param value Value to check
210
+ * @returns {boolean} false if value is invalid
211
+ */
212
+ isValidValue(value) {
213
+ const number = Number(value);
214
+ return !isNaN(number) && isFinite(number);
215
+ }
216
+ /**
217
+ * Get value as valid number string.
218
+ * @param value A value to convert
219
+ * @returns string value
220
+ */
221
+ valueAsNumberString(value) {
222
+ return this.isValidValue(value) ? value : '';
223
+ }
224
+ /**
225
+ * Get either inputValue or actual value dependant on control state
226
+ * @returns string of input value
227
+ */
228
+ get internalValue() {
229
+ // cover the case when value getter is called before first render or in interim state
230
+ return this.interimValueState || !this.inputElement ? super.value : this.inputValue;
231
+ }
232
+ /**
233
+ * Handles key down input event
234
+ * @param event Key down event object
235
+ * @returns {void}
236
+ */
237
+ onInputKeyDown(event) {
238
+ if (this.readonly || this.disabled || event.defaultPrevented) {
239
+ return;
240
+ }
241
+ switch (event.key) {
242
+ case 'Up':
243
+ case 'ArrowUp':
244
+ this.onApplyStep(Direction.Up);
245
+ break;
246
+ case 'Down':
247
+ case 'ArrowDown':
248
+ this.onApplyStep(Direction.Down);
249
+ break;
250
+ default:
251
+ return;
252
+ }
253
+ event.preventDefault();
254
+ }
255
+ /**
256
+ * Run when spinner has been tapped
257
+ * @param event tap event
258
+ * @returns {void}
259
+ */
260
+ onSpinnerTap(event) {
261
+ if (this.disabled || this.readonly || event.defaultPrevented) {
262
+ return;
263
+ }
264
+ const target = event.target;
265
+ if (target === this.spinnerDownEl) {
266
+ this.onApplyStep(Direction.Down);
267
+ }
268
+ else if (target === this.spinnerUpEl) {
269
+ this.onApplyStep(Direction.Up);
270
+ }
271
+ }
272
+ /**
273
+ * Step down or up and notify value change
274
+ * @param direction Up or Down
275
+ * @returns {void}
276
+ */
277
+ onApplyStep(direction) {
278
+ try {
279
+ this.applyStepDirection(undefined, direction);
280
+ this.setSilentlyValueAndNotify();
281
+ }
282
+ catch (error) {
283
+ // According to specs stepDown/stepUp may fail for some invalid inputs
284
+ // do nothing and report nothing in that case
285
+ }
286
+ }
287
+ /**
288
+ * Run before input changes
289
+ * Prevent invalid characters
290
+ * @param event before input event
291
+ * @returns {void}
292
+ */
293
+ /* istanbul ignore next */
294
+ onBeforeInputChange(event) {
295
+ // The event is not supported in IE11 and old browsers
296
+ // Therefore just try to prevent some of invalid characters to be entered
297
+ // but still do full validation on actual `input` and `change` events
298
+ const inputType = event.inputType;
299
+ // cover all insert types, such as type, paste, drag&drop and others
300
+ if (inputType.startsWith('insert')) {
301
+ const data = event.data || '';
302
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
303
+ const inputEl = this.inputElement;
304
+ const oldInput = this.inputValue;
305
+ // Calculate what could be the new input
306
+ const selectionStart = inputEl.selectionStart || 0;
307
+ const selectionEnd = inputEl.selectionEnd || 0;
308
+ const newInput = `${oldInput.substring(0, selectionStart)}${data}${oldInput.substring(selectionEnd)}`;
309
+ const validatedInput = this.stripeInvalidCharacters(newInput, oldInput, data);
310
+ const insertionData = validatedInput.slice(0, validatedInput.length - (oldInput.length - selectionEnd)).substring(selectionStart);
311
+ // Invalid characters or sequence of characters
312
+ if (!insertionData.length) {
313
+ event.preventDefault();
314
+ return;
315
+ }
316
+ if (insertionData !== data) {
317
+ // In theory here we should emulate the new input
318
+ // in practice we cannot as there is no API (apart of deprecated execCommand), so do nothing
319
+ // invalid input will be stripped out on `input` event handler, but that will break Undo logic
320
+ }
321
+ }
322
+ }
323
+ /**
324
+ * Runs on input element `input` event
325
+ * @param event `input` event
326
+ * @returns {void}
327
+ */
328
+ onInputInput(event) {
329
+ this.onNativeInputChange(event);
330
+ }
331
+ /**
332
+ * Runs on input element `change` event
333
+ * @param event `change` event
334
+ * @returns {void}
335
+ */
336
+ onInputChange(event) {
337
+ this.onNativeInputChange(event);
338
+ }
339
+ /**
340
+ * Triggers when native input value change with input event or change event
341
+ * @param event Input event
342
+ * @returns {void}
343
+ */
344
+ onNativeInputChange(event) {
345
+ const currentInput = this.inputValue;
346
+ const inputValue = this.stripeInvalidCharacters(currentInput, this.value, event.data || '');
347
+ if (inputValue !== currentInput) {
348
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
349
+ const inputEl = this.inputElement;
350
+ // we can only stripe the characters, so try to make the best guess where the cursor should be
351
+ const selectionStart = inputEl.selectionStart || 0;
352
+ const selectionEnd = inputEl.selectionEnd || 0;
353
+ this.inputValue = inputValue;
354
+ const diff = currentInput.length - inputValue.length;
355
+ inputEl.selectionStart = Math.max(selectionStart - diff, 0);
356
+ inputEl.selectionEnd = Math.max(selectionEnd - diff, 0);
357
+ }
358
+ this.setSilentlyValueAndNotify();
359
+ }
360
+ /**
361
+ * Stripe characters from input text based on previous input and data
362
+ * @param input The new input to process
363
+ * @param oldInput Previous input
364
+ * @param data The data that has been inserted
365
+ * @returns the input where characters are striped away
366
+ */
367
+ stripeInvalidCharacters(input = '', oldInput = '', data = '') {
368
+ // all these actions depends on new value and previous value trying to guess the best action
369
+ const dataHasDot = data.includes('.');
370
+ const dataHasE = data.search(/e/i) !== -1;
371
+ const dotIndex = input.indexOf('.');
372
+ const eIndex = input.search(/e/i);
373
+ const valueHasDot = dotIndex !== -1 && !dataHasDot;
374
+ const valueHasE = eIndex !== -1 && !dataHasE;
375
+ // filter . and e/E keystrokes. Note: paste is not covered by this
376
+ if (data !== input && ((valueHasDot && data === '.') || (valueHasE && (data === 'e' || data === 'E')))) {
377
+ input = oldInput;
378
+ }
379
+ // stripe all e before dot and multiple . occurrences
380
+ if (dotIndex !== -1) {
381
+ input = `${input.substring(0, dotIndex + 1)}${input.substring(dotIndex + 1).replace(/\./g, '')}`;
382
+ if (!valueHasE) {
383
+ input = `${input.substring(0, dotIndex).replace(/e/ig, '')}${input.substring(dotIndex)}`;
384
+ }
385
+ }
386
+ // stripe all dots after e and multiple e occurrences
387
+ if (eIndex !== -1) {
388
+ input = `${input.substring(0, eIndex + 1)}${input.substring(eIndex + 1).replace(/e/ig, '')}`;
389
+ if (!valueHasDot) {
390
+ input = `${input.substring(0, eIndex)}${input.substring(eIndex).replace(/\./g, '')}`;
391
+ }
392
+ }
393
+ // stripe all other invalid characters and make sure that + and - signs are correct
394
+ return input.replace(/(^[-+]|[e][-+])|[-+]|[^0-9e.+-]/ig, '$1');
395
+ }
396
+ /**
397
+ * On *user-interaction* set the value and notify.
398
+ * This function will not call request update, but will fire value-changed event
399
+ * @returns {void}
400
+ */
401
+ setSilentlyValueAndNotify() {
402
+ // Nobody likes to see a red border
403
+ this.resetError();
404
+ const value = this.valueAsNumberString(this.inputValue);
405
+ if (super.value !== value) {
406
+ // here we must set the value silently to avoid re-rendering of input
407
+ super.value = value;
408
+ this.notifyPropertyChange('value', value);
409
+ }
410
+ }
411
+ /**
412
+ * Reset error state on input
413
+ * @returns {void}
414
+ */
415
+ resetError() {
416
+ if (this.error && this.checkValidity()) {
417
+ this.reportValidity();
418
+ }
419
+ }
420
+ /**
421
+ * Get the allowed step value
422
+ * @returns allowed step
423
+ */
424
+ getAllowedValueStep() {
425
+ let stepValue = this.stepValue;
426
+ if (stepValue === ANY_STEP) {
427
+ // By algorithm, this should throw an error
428
+ // however keep the default value as we use same method for stepping up and down
429
+ stepValue = DEFAULT_STEP_BASE;
430
+ }
431
+ return stepValue;
432
+ }
433
+ /**
434
+ * Get the step base as per HTML5 specs
435
+ * @returns step base
436
+ */
437
+ get stepBase() {
438
+ // If the element has a min content attribute, and the result of applying the algorithm to convert a string to a number
439
+ // to the value of the min content attribute is not an error, then return that result.
440
+ const min = this.stringToNumber(this.min);
441
+ if (!isNaN(min)) {
442
+ return min;
443
+ }
444
+ // If the element has a value content attribute, and the result of applying the algorithm to convert a string to a number
445
+ // to the value of the value content attribute is not an error, then return that result.
446
+ const valueAttribute = this.stringToNumber(this.getAttribute('value') || '');
447
+ if (!isNaN(valueAttribute)) {
448
+ return valueAttribute;
449
+ }
450
+ return 0;
451
+ }
452
+ /**
453
+ * Check if value subtracted from the step base is not an integral multiple of the allowed value step
454
+ * @param value value to check
455
+ * @returns true if value is integral
456
+ */
457
+ isValueIntegralMultipleOfStep(value) {
458
+ const decimals = Math.max(this.getDecimalPlace(value), this.stepDecimals);
459
+ const division = (this.stepBase - value) / this.getAllowedValueStep();
460
+ const number = decimals ? this.toFixedNumber(division, decimals) : division;
461
+ // (2 - 1.01) % 0.33 needs to give 0. So we cannot use % directly as it is intended for integers
462
+ return number % 1 === 0;
463
+ }
464
+ /**
465
+ * Find the nearest value that, when subtracted from the `stepBase`
466
+ * is an integral multiple of the `allowedValueStep`,
467
+ * and that is less than `value` if the `direction` was `Down`, and more than value otherwise.
468
+ * @param value the value to operate on
469
+ * @param stepBase base to start calculation
470
+ * @param allowedValueStep a step to go Down or Up
471
+ * @param direction Direction, either -1 for Down or 1 for Up
472
+ * @returns nearest number
473
+ */
474
+ findNearestSteppedValue(value, stepBase, allowedValueStep, direction) {
475
+ // TODO: there is probably much better way on how to implement this function
476
+ let newValue = this.toFixedNumber(value + (stepBase - value) % allowedValueStep);
477
+ if (direction === Direction.Up) {
478
+ // with float number rounding this may need to run more than once to find the valid value
479
+ while (newValue <= value) {
480
+ const steppedValue = this.toFixedNumber(newValue + allowedValueStep);
481
+ if (steppedValue <= newValue) {
482
+ // Non safe integers might behave incorrectly
483
+ // Avoid any potential infinitive loops
484
+ break;
485
+ }
486
+ newValue = steppedValue;
487
+ }
488
+ }
489
+ else if (direction === Direction.Down) {
490
+ while (newValue >= value) {
491
+ const steppedValue = this.toFixedNumber(newValue - allowedValueStep);
492
+ if (steppedValue >= newValue) {
493
+ break;
494
+ }
495
+ newValue = steppedValue;
496
+ }
497
+ }
498
+ return newValue;
499
+ }
500
+ /**
501
+ * Apply step up or step down on the input
502
+ * @param stepIncrement step increment factor
503
+ * @param direction either go up or down
504
+ * @returns {void}
505
+ */
506
+ applyStepDirection(stepIncrement = 1, direction) {
507
+ const min = this.stringToNumber(this.min);
508
+ const max = this.stringToNumber(this.max);
509
+ // If the element has a minimum and a maximum and the minimum is greater than the maximum, then return.
510
+ if (min > max) {
511
+ return;
512
+ }
513
+ // passing floats to step increment does not make sense as this potentially leads to incorrect results
514
+ stepIncrement = stepIncrement < 0 ? Math.ceil(stepIncrement) : Math.floor(stepIncrement);
515
+ if (stepIncrement < 0) {
516
+ direction = direction === Direction.Up ? Direction.Down : Direction.Up;
517
+ stepIncrement = Math.abs(stepIncrement);
518
+ }
519
+ const stepBase = this.stepBase;
520
+ const allowedValueStep = this.getAllowedValueStep();
521
+ // If applying the algorithm to convert a string to a number to the string given by the element's value
522
+ // does not result in an error, then let value be the result of that algorithm. Otherwise, let value be zero.
523
+ const inputValue = this.stringToNumber(this.inputValue);
524
+ const valueBeforeStepping = isNaN(inputValue) ? 0 : inputValue;
525
+ let value = valueBeforeStepping;
526
+ // step-up or step-down
527
+ if (this.isValueIntegralMultipleOfStep(value)) {
528
+ const delta = allowedValueStep * stepIncrement * direction;
529
+ value += delta;
530
+ }
531
+ else {
532
+ value = this.findNearestSteppedValue(valueBeforeStepping, stepBase, allowedValueStep, direction);
533
+ }
534
+ // If the element has a minimum, and value is less than that minimum,
535
+ // then set value to the smallest value that, when subtracted from the step base,
536
+ // is an integral multiple of the allowed value step, and that is more than or equal to minimum.
537
+ if (value < min) {
538
+ value = this.findNearestSteppedValue(min + allowedValueStep, stepBase, allowedValueStep, Direction.Down);
539
+ }
540
+ // If the element has a maximum, and value is greater than that maximum,
541
+ // then set value to the largest value that, when subtracted from the step base,
542
+ // is an integral multiple of the allowed value step, and that is less than or equal to maximum.
543
+ if (value > max) {
544
+ value = this.findNearestSteppedValue(max - allowedValueStep, stepBase, allowedValueStep, Direction.Up);
545
+ }
546
+ // If either the method invoked was the stepDown() method and value is greater than valueBeforeStepping
547
+ // or the method invoked was the stepUp() method and value is less than valueBeforeStepping, then return.
548
+ if (!isNaN(inputValue) && ((direction === Direction.Up && value < valueBeforeStepping) || (direction === Direction.Down && value > valueBeforeStepping))) {
549
+ return;
550
+ }
551
+ this.inputValue = `${this.toFixedNumber(value)}`;
552
+ }
553
+ /**
554
+ * Increases the input value by amount of step
555
+ * @param [stepIncrement] The stepIncrement parameter is a numeric value. If no parameter is passed, stepIncrement defaults to 1.
556
+ * @returns {void}
557
+ */
558
+ stepUp(stepIncrement) {
559
+ this.applyStepDirection(stepIncrement, Direction.Up);
560
+ }
561
+ /**
562
+ * Decreases the input value by amount of step
563
+ * @param [stepIncrement] The stepIncrement parameter is a numeric value. If no parameter is passed, stepIncrement defaults to 1.
564
+ * @returns {void}
565
+ */
566
+ stepDown(stepIncrement) {
567
+ this.applyStepDirection(stepIncrement, Direction.Down);
568
+ }
569
+ /**
570
+ * Returns true if an input element contains valid data.
571
+ * @returns true if input is valid
572
+ */
573
+ checkValidity() {
574
+ const value = this.internalValue;
575
+ // No support for required
576
+ if (value === '') {
577
+ return true;
578
+ }
579
+ if (!this.isValidValue(value)) {
580
+ return false;
581
+ }
582
+ // Check min and max numbers
583
+ const numberValue = Number(value);
584
+ const max = this.stringToNumber(this.max);
585
+ const min = this.stringToNumber(this.min);
586
+ if (numberValue < min || numberValue > max) {
587
+ return false;
588
+ }
589
+ // Check step for an integral step
590
+ const stepValue = this.stepValue;
591
+ if (stepValue !== ANY_STEP && !this.isValueIntegralMultipleOfStep(numberValue)) {
592
+ return false;
593
+ }
594
+ return true;
595
+ }
596
+ /**
597
+ * Validate input. Mark as error if input is invalid
598
+ * @returns false if there is an error
599
+ */
600
+ reportValidity() {
601
+ const hasError = !this.checkValidity();
602
+ if (this.error !== hasError) {
603
+ this.error = hasError;
604
+ this.notifyPropertyChange('error', this.error);
605
+ }
606
+ return !hasError;
607
+ }
608
+ /**
609
+ * @ignore
610
+ * @inheritDoc
611
+ */
612
+ /* istanbul ignore next */
613
+ get selectionStart() {
614
+ return null;
615
+ }
616
+ /**
617
+ * @ignore
618
+ * @inheritDoc
619
+ */
620
+ /* istanbul ignore next */
621
+ set selectionStart(index) {
622
+ throw new Error('Failed to set the \'selectionStart\' property on \'NumberField\': The element does not support selection.');
623
+ }
624
+ /**
625
+ * @ignore
626
+ * @inheritDoc
627
+ */
628
+ /* istanbul ignore next */
629
+ get selectionEnd() {
630
+ return null;
631
+ }
632
+ /**
633
+ * @ignore
634
+ * @inheritDoc
635
+ */
636
+ /* istanbul ignore next */
637
+ set selectionEnd(index) {
638
+ throw new Error('Failed to set the \'selectionEnd\' property on \'NumberField\': The element does not support selection.');
639
+ }
640
+ /**
641
+ * @ignore
642
+ * @inheritDoc
643
+ */
644
+ /* istanbul ignore next */
645
+ get selectionDirection() {
646
+ return null;
647
+ }
648
+ /**
649
+ * @ignore
650
+ * @inheritDoc
651
+ */
652
+ /* istanbul ignore next */
653
+ set selectionDirection(direction) {
654
+ throw new Error('Failed to set the \'selectionDirection\' property on \'NumberField\': The element does not support selection.');
655
+ }
656
+ /**
657
+ * @ignore
658
+ * @inheritDoc
659
+ */
660
+ /* istanbul ignore next */
661
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
662
+ setSelectionRange(startSelection, endSelection, selectionDirection) {
663
+ throw new Error('Failed to execute \'setSelectionRange\' on \'NumberField\': The element does not support selection.');
664
+ }
665
+ /**
666
+ * Renders spinner
667
+ * @returns {TemplateResult} spinner part template
668
+ */
669
+ renderSpinner() {
670
+ return html `
671
+ <div
672
+ part="spinner"
673
+ @tap=${this.onSpinnerTap}>
674
+ <ef-icon
675
+ icon="up"
676
+ part="spinner-up"
677
+ ?readonly=${this.readonly}
678
+ ?disabled=${this.disabled}>
679
+ </ef-icon>
680
+ <ef-icon
681
+ icon="down"
682
+ part="spinner-down"
683
+ ?readonly=${this.readonly}
684
+ ?disabled=${this.disabled}>
685
+ </ef-icon>
686
+ </div>
687
+ `;
688
+ }
689
+ /**
690
+ * Decorate `<input>` element with common properties extended from form field element:
691
+ * type="text" - always `text`
692
+ * part="input" - always "input", used for styling
693
+ * inputmode="decimal" - show decimals keyboard by default
694
+ * pattern="'^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'" - numbers only
695
+ * role="spinbutton" - number field is actually a spinner
696
+ * aria-valuenow - current value or 0
697
+ * @keydown - Listener for `keydown` event. Runs `this.onInputKeyDown`
698
+ * @beforeinput - Listener for `beforeinput` event. Runs `this.onBeforeInputChange`
699
+ * @returns template map
700
+ */
701
+ get decorateInputMap() {
702
+ return Object.assign(Object.assign({}, super.decorateInputMap), { 'type': 'text', 'part': 'input', 'inputmode': 'decimal', 'pattern': NUMBER_PATTERN, 'role': 'spinbutton', 'aria-valuenow': `${this.value || 0}`, '@keydown': this.onInputKeyDown, '@beforeinput': this.onBeforeInputChange });
703
+ }
704
+ /**
705
+ * A `TemplateResult` that will be used
706
+ * to render the updated internal template.
707
+ * @return {TemplateResult} Render template
708
+ */
709
+ render() {
710
+ return html `
711
+ ${super.render()}
712
+ ${this.noSpinner ? null : this.renderSpinner()}`;
713
+ }
714
+ };
715
+ __decorate([
716
+ property({ type: Boolean, attribute: 'no-spinner', reflect: true })
717
+ ], NumberField.prototype, "noSpinner", void 0);
718
+ __decorate([
719
+ property({ type: String, reflect: true })
720
+ ], NumberField.prototype, "step", void 0);
721
+ __decorate([
722
+ property({ type: String, reflect: true })
723
+ ], NumberField.prototype, "min", void 0);
724
+ __decorate([
725
+ property({ type: String, reflect: true })
726
+ ], NumberField.prototype, "max", void 0);
727
+ __decorate([
728
+ property({ type: String })
729
+ ], NumberField.prototype, "value", null);
730
+ __decorate([
731
+ query('[part=spinner-up]')
732
+ ], NumberField.prototype, "spinnerUpEl", void 0);
733
+ __decorate([
734
+ query('[part=spinner-down]')
735
+ ], NumberField.prototype, "spinnerDownEl", void 0);
736
+ NumberField = __decorate([
737
+ customElement('ef-number-field', {
738
+ alias: 'coral-number-field'
739
+ })
740
+ ], NumberField);
741
+ export { NumberField };