@refinitiv-ui/elements 5.3.3 → 5.3.4

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