@refinitiv-ui/elements 5.3.3 → 5.7.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 (617) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/lib/accordion/custom-elements.json +49 -0
  3. package/lib/accordion/custom-elements.md +18 -0
  4. package/lib/accordion/index.d.ts +76 -0
  5. package/lib/accordion/index.js +136 -0
  6. package/lib/accordion/themes/halo/dark/index.js +3 -0
  7. package/lib/accordion/themes/halo/light/index.js +3 -0
  8. package/lib/accordion/themes/solar/charcoal/index.js +3 -0
  9. package/lib/accordion/themes/solar/pearl/index.js +3 -0
  10. package/lib/appstate-bar/custom-elements.json +49 -0
  11. package/lib/appstate-bar/custom-elements.md +22 -0
  12. package/lib/appstate-bar/index.d.ts +65 -0
  13. package/lib/appstate-bar/index.js +100 -0
  14. package/lib/appstate-bar/themes/halo/dark/index.js +3 -0
  15. package/lib/appstate-bar/themes/halo/light/index.js +3 -0
  16. package/lib/appstate-bar/themes/solar/charcoal/index.js +3 -0
  17. package/lib/appstate-bar/themes/solar/pearl/index.js +3 -0
  18. package/lib/autosuggest/custom-elements.json +233 -0
  19. package/lib/autosuggest/custom-elements.md +47 -0
  20. package/lib/autosuggest/helpers/types.d.ts +54 -0
  21. package/lib/autosuggest/helpers/types.js +1 -0
  22. package/lib/autosuggest/helpers/utils.d.ts +39 -0
  23. package/lib/autosuggest/helpers/utils.js +75 -0
  24. package/lib/autosuggest/index.d.ts +534 -0
  25. package/lib/autosuggest/index.js +1251 -0
  26. package/lib/autosuggest/themes/halo/dark/index.js +5 -0
  27. package/lib/autosuggest/themes/halo/light/index.js +5 -0
  28. package/lib/autosuggest/themes/solar/charcoal/index.js +5 -0
  29. package/lib/autosuggest/themes/solar/pearl/index.js +5 -0
  30. package/lib/button/custom-elements.json +119 -0
  31. package/lib/button/custom-elements.md +23 -0
  32. package/lib/button/index.d.ts +132 -0
  33. package/lib/button/index.js +223 -0
  34. package/lib/button/themes/halo/dark/index.js +3 -0
  35. package/lib/button/themes/halo/light/index.js +3 -0
  36. package/lib/button/themes/solar/charcoal/index.js +3 -0
  37. package/lib/button/themes/solar/pearl/index.js +3 -0
  38. package/lib/button-bar/custom-elements.json +26 -0
  39. package/lib/button-bar/custom-elements.md +9 -0
  40. package/lib/button-bar/index.d.ts +76 -0
  41. package/lib/button-bar/index.js +155 -0
  42. package/lib/button-bar/themes/halo/dark/index.js +3 -0
  43. package/lib/button-bar/themes/halo/light/index.js +3 -0
  44. package/lib/button-bar/themes/solar/charcoal/index.js +3 -0
  45. package/lib/button-bar/themes/solar/pearl/index.js +3 -0
  46. package/lib/calendar/constants.d.ts +22 -0
  47. package/lib/calendar/constants.js +23 -0
  48. package/lib/calendar/custom-elements.json +199 -0
  49. package/lib/calendar/custom-elements.md +35 -0
  50. package/lib/calendar/index.d.ts +321 -0
  51. package/lib/calendar/index.js +906 -0
  52. package/lib/calendar/locales.d.ts +1 -0
  53. package/lib/calendar/locales.js +40 -0
  54. package/lib/calendar/themes/halo/dark/index.js +3 -0
  55. package/lib/calendar/themes/halo/light/index.js +3 -0
  56. package/lib/calendar/themes/solar/charcoal/index.js +3 -0
  57. package/lib/calendar/themes/solar/pearl/index.js +3 -0
  58. package/lib/calendar/types.d.ts +29 -0
  59. package/lib/calendar/types.js +1 -0
  60. package/lib/calendar/utils.d.ts +42 -0
  61. package/lib/calendar/utils.js +119 -0
  62. package/lib/canvas/custom-elements.json +69 -0
  63. package/lib/canvas/custom-elements.md +27 -0
  64. package/lib/canvas/index.d.ts +100 -0
  65. package/lib/canvas/index.js +172 -0
  66. package/lib/canvas/themes/halo/dark/index.js +2 -0
  67. package/lib/canvas/themes/halo/light/index.js +2 -0
  68. package/lib/canvas/themes/solar/charcoal/index.js +2 -0
  69. package/lib/canvas/themes/solar/pearl/index.js +2 -0
  70. package/lib/card/custom-elements.json +59 -0
  71. package/lib/card/custom-elements.md +24 -0
  72. package/lib/card/helpers/types.d.ts +12 -0
  73. package/lib/card/helpers/types.js +1 -0
  74. package/lib/card/index.d.ts +140 -0
  75. package/lib/card/index.js +246 -0
  76. package/lib/card/themes/halo/dark/index.js +5 -0
  77. package/lib/card/themes/halo/light/index.js +5 -0
  78. package/lib/card/themes/solar/charcoal/index.js +5 -0
  79. package/lib/card/themes/solar/pearl/index.js +5 -0
  80. package/lib/chart/custom-elements.json +42 -0
  81. package/lib/chart/custom-elements.md +16 -0
  82. package/lib/chart/helpers/index.d.ts +2 -0
  83. package/lib/chart/helpers/index.js +2 -0
  84. package/lib/chart/helpers/legend.d.ts +5 -0
  85. package/lib/chart/helpers/legend.js +78 -0
  86. package/lib/chart/helpers/merge.d.ts +15 -0
  87. package/lib/chart/helpers/merge.js +28 -0
  88. package/lib/chart/helpers/types.d.ts +69 -0
  89. package/lib/chart/helpers/types.js +1 -0
  90. package/lib/chart/index.d.ts +187 -0
  91. package/lib/chart/index.js +491 -0
  92. package/lib/chart/plugins/doughnut-center-label.d.ts +3 -0
  93. package/lib/chart/plugins/doughnut-center-label.js +196 -0
  94. package/lib/chart/themes/halo/dark/index.js +4 -0
  95. package/lib/chart/themes/halo/light/index.js +4 -0
  96. package/lib/chart/themes/solar/charcoal/index.js +4 -0
  97. package/lib/chart/themes/solar/pearl/index.js +4 -0
  98. package/lib/checkbox/custom-elements.json +67 -0
  99. package/lib/checkbox/custom-elements.md +18 -0
  100. package/lib/checkbox/index.d.ts +95 -0
  101. package/lib/checkbox/index.js +193 -0
  102. package/lib/checkbox/themes/halo/dark/index.js +4 -0
  103. package/lib/checkbox/themes/halo/light/index.js +4 -0
  104. package/lib/checkbox/themes/solar/charcoal/index.js +4 -0
  105. package/lib/checkbox/themes/solar/pearl/index.js +4 -0
  106. package/lib/clock/custom-elements.json +121 -0
  107. package/lib/clock/custom-elements.md +28 -0
  108. package/lib/clock/index.d.ts +319 -0
  109. package/lib/clock/index.js +581 -0
  110. package/lib/clock/themes/halo/dark/index.js +2 -0
  111. package/lib/clock/themes/halo/light/index.js +2 -0
  112. package/lib/clock/themes/solar/charcoal/index.js +2 -0
  113. package/lib/clock/themes/solar/pearl/index.js +2 -0
  114. package/lib/clock/utils/TickManager.d.ts +14 -0
  115. package/lib/clock/utils/TickManager.js +66 -0
  116. package/lib/clock/utils/timestamps.d.ts +6 -0
  117. package/lib/clock/utils/timestamps.js +6 -0
  118. package/lib/collapse/custom-elements.json +79 -0
  119. package/lib/collapse/custom-elements.md +27 -0
  120. package/lib/collapse/index.d.ts +119 -0
  121. package/lib/collapse/index.js +197 -0
  122. package/lib/collapse/themes/halo/dark/index.js +5 -0
  123. package/lib/collapse/themes/halo/light/index.js +5 -0
  124. package/lib/collapse/themes/solar/charcoal/index.js +5 -0
  125. package/lib/collapse/themes/solar/pearl/index.js +5 -0
  126. package/lib/color-dialog/custom-elements.json +193 -0
  127. package/lib/color-dialog/custom-elements.md +39 -0
  128. package/lib/color-dialog/elements/color-palettes.d.ts +52 -0
  129. package/lib/color-dialog/elements/color-palettes.js +101 -0
  130. package/lib/color-dialog/elements/grayscale-palettes.d.ts +67 -0
  131. package/lib/color-dialog/elements/grayscale-palettes.js +161 -0
  132. package/lib/color-dialog/elements/palettes.d.ts +65 -0
  133. package/lib/color-dialog/elements/palettes.js +132 -0
  134. package/lib/color-dialog/helpers/color-helpers.d.ts +16 -0
  135. package/lib/color-dialog/helpers/color-helpers.js +161 -0
  136. package/lib/color-dialog/helpers/value-model.d.ts +75 -0
  137. package/lib/color-dialog/helpers/value-model.js +141 -0
  138. package/lib/color-dialog/index.d.ts +232 -0
  139. package/lib/color-dialog/index.js +459 -0
  140. package/lib/color-dialog/themes/halo/dark/index.js +7 -0
  141. package/lib/color-dialog/themes/halo/light/index.js +7 -0
  142. package/lib/color-dialog/themes/solar/charcoal/index.js +7 -0
  143. package/lib/color-dialog/themes/solar/pearl/index.js +7 -0
  144. package/lib/combo-box/custom-elements.json +210 -0
  145. package/lib/combo-box/custom-elements.md +35 -0
  146. package/lib/combo-box/helpers/filter.d.ts +10 -0
  147. package/lib/combo-box/helpers/filter.js +29 -0
  148. package/lib/combo-box/helpers/keyboard-event.d.ts +17 -0
  149. package/lib/combo-box/helpers/keyboard-event.js +19 -0
  150. package/lib/combo-box/helpers/types.d.ts +11 -0
  151. package/lib/combo-box/helpers/types.js +1 -0
  152. package/lib/combo-box/index.d.ts +523 -0
  153. package/lib/combo-box/index.js +1146 -0
  154. package/lib/combo-box/themes/halo/dark/index.js +8 -0
  155. package/lib/combo-box/themes/halo/light/index.js +8 -0
  156. package/lib/combo-box/themes/solar/charcoal/index.js +8 -0
  157. package/lib/combo-box/themes/solar/pearl/index.js +8 -0
  158. package/lib/counter/custom-elements.json +35 -0
  159. package/lib/counter/custom-elements.md +11 -0
  160. package/lib/counter/index.d.ts +89 -0
  161. package/lib/counter/index.js +152 -0
  162. package/lib/counter/themes/halo/dark/index.js +3 -0
  163. package/lib/counter/themes/halo/light/index.js +3 -0
  164. package/lib/counter/themes/solar/charcoal/index.js +3 -0
  165. package/lib/counter/themes/solar/pearl/index.js +3 -0
  166. package/lib/counter/utils.d.ts +13 -0
  167. package/lib/counter/utils.js +52 -0
  168. package/lib/datetime-picker/custom-elements.json +333 -0
  169. package/lib/datetime-picker/custom-elements.md +49 -0
  170. package/lib/datetime-picker/index.d.ts +498 -0
  171. package/lib/datetime-picker/index.js +1164 -0
  172. package/lib/datetime-picker/locales.d.ts +8 -0
  173. package/lib/datetime-picker/locales.js +57 -0
  174. package/lib/datetime-picker/themes/halo/dark/index.js +7 -0
  175. package/lib/datetime-picker/themes/halo/light/index.js +7 -0
  176. package/lib/datetime-picker/themes/solar/charcoal/index.js +7 -0
  177. package/lib/datetime-picker/themes/solar/pearl/index.js +7 -0
  178. package/lib/datetime-picker/types.d.ts +3 -0
  179. package/lib/datetime-picker/types.js +1 -0
  180. package/lib/datetime-picker/utils.d.ts +55 -0
  181. package/lib/datetime-picker/utils.js +92 -0
  182. package/lib/dialog/custom-elements.json +136 -0
  183. package/lib/dialog/custom-elements.md +47 -0
  184. package/lib/dialog/draggable-element.d.ts +14 -0
  185. package/lib/dialog/draggable-element.js +221 -0
  186. package/lib/dialog/index.d.ts +199 -0
  187. package/lib/dialog/index.js +331 -0
  188. package/lib/dialog/themes/halo/dark/index.js +7 -0
  189. package/lib/dialog/themes/halo/light/index.js +7 -0
  190. package/lib/dialog/themes/solar/charcoal/index.js +7 -0
  191. package/lib/dialog/themes/solar/pearl/index.js +7 -0
  192. package/lib/email-field/custom-elements.json +199 -0
  193. package/lib/email-field/custom-elements.md +35 -0
  194. package/lib/email-field/index.d.ts +152 -0
  195. package/lib/email-field/index.js +286 -0
  196. package/lib/email-field/themes/halo/dark/index.js +3 -0
  197. package/lib/email-field/themes/halo/light/index.js +3 -0
  198. package/lib/email-field/themes/solar/charcoal/index.js +3 -0
  199. package/lib/email-field/themes/solar/pearl/index.js +3 -0
  200. package/lib/events.d.ts +121 -0
  201. package/lib/events.js +1 -0
  202. package/lib/flag/custom-elements.json +35 -0
  203. package/lib/flag/custom-elements.md +10 -0
  204. package/lib/flag/index.d.ts +94 -0
  205. package/lib/flag/index.js +166 -0
  206. package/lib/flag/themes/halo/dark/index.js +2 -0
  207. package/lib/flag/themes/halo/light/index.js +2 -0
  208. package/lib/flag/themes/solar/charcoal/index.js +2 -0
  209. package/lib/flag/themes/solar/pearl/index.js +2 -0
  210. package/lib/flag/utils/FlagLoader.d.ts +47 -0
  211. package/lib/flag/utils/FlagLoader.js +86 -0
  212. package/lib/header/custom-elements.json +36 -0
  213. package/lib/header/custom-elements.md +18 -0
  214. package/lib/header/index.d.ts +46 -0
  215. package/lib/header/index.js +73 -0
  216. package/lib/header/themes/halo/dark/index.js +2 -0
  217. package/lib/header/themes/halo/light/index.js +2 -0
  218. package/lib/header/themes/solar/charcoal/index.js +2 -0
  219. package/lib/header/themes/solar/pearl/index.js +2 -0
  220. package/lib/heatmap/custom-elements.json +151 -0
  221. package/lib/heatmap/custom-elements.md +26 -0
  222. package/lib/heatmap/helpers/color.d.ts +30 -0
  223. package/lib/heatmap/helpers/color.js +68 -0
  224. package/lib/heatmap/helpers/text.d.ts +26 -0
  225. package/lib/heatmap/helpers/text.js +91 -0
  226. package/lib/heatmap/helpers/track.d.ts +102 -0
  227. package/lib/heatmap/helpers/track.js +160 -0
  228. package/lib/heatmap/helpers/types.d.ts +40 -0
  229. package/lib/heatmap/helpers/types.js +1 -0
  230. package/lib/heatmap/index.d.ts +453 -0
  231. package/lib/heatmap/index.js +1103 -0
  232. package/lib/heatmap/themes/halo/dark/index.js +4 -0
  233. package/lib/heatmap/themes/halo/light/index.js +4 -0
  234. package/lib/heatmap/themes/solar/charcoal/index.js +4 -0
  235. package/lib/heatmap/themes/solar/pearl/index.js +4 -0
  236. package/lib/icon/custom-elements.json +36 -0
  237. package/lib/icon/custom-elements.md +8 -0
  238. package/lib/icon/index.d.ts +88 -0
  239. package/lib/icon/index.js +169 -0
  240. package/lib/icon/themes/halo/dark/index.js +2 -0
  241. package/lib/icon/themes/halo/light/index.js +2 -0
  242. package/lib/icon/themes/solar/charcoal/index.js +2 -0
  243. package/lib/icon/themes/solar/pearl/index.js +2 -0
  244. package/lib/icon/utils/IconLoader.d.ts +52 -0
  245. package/lib/icon/utils/IconLoader.js +93 -0
  246. package/lib/index.d.ts +3 -0
  247. package/lib/index.js +3 -0
  248. package/lib/interactive-chart/custom-elements.json +86 -0
  249. package/lib/interactive-chart/custom-elements.md +32 -0
  250. package/lib/interactive-chart/helpers/merge.d.ts +15 -0
  251. package/lib/interactive-chart/helpers/merge.js +28 -0
  252. package/lib/interactive-chart/helpers/types.d.ts +45 -0
  253. package/lib/interactive-chart/helpers/types.js +6 -0
  254. package/lib/interactive-chart/index.d.ts +380 -0
  255. package/lib/interactive-chart/index.js +1090 -0
  256. package/lib/interactive-chart/themes/halo/dark/index.js +3 -0
  257. package/lib/interactive-chart/themes/halo/light/index.js +3 -0
  258. package/lib/interactive-chart/themes/solar/charcoal/index.js +3 -0
  259. package/lib/interactive-chart/themes/solar/pearl/index.js +3 -0
  260. package/lib/item/custom-elements.json +151 -0
  261. package/lib/item/custom-elements.md +29 -0
  262. package/lib/item/helpers/types.d.ts +57 -0
  263. package/lib/item/helpers/types.js +1 -0
  264. package/lib/item/index.d.ts +158 -0
  265. package/lib/item/index.js +271 -0
  266. package/lib/item/themes/halo/dark/index.js +4 -0
  267. package/lib/item/themes/halo/light/index.js +4 -0
  268. package/lib/item/themes/solar/charcoal/index.js +4 -0
  269. package/lib/item/themes/solar/pearl/index.js +4 -0
  270. package/lib/jsx.d.ts +223 -0
  271. package/lib/label/custom-elements.json +52 -0
  272. package/lib/label/custom-elements.md +11 -0
  273. package/lib/label/index.d.ts +102 -0
  274. package/lib/label/index.js +244 -0
  275. package/lib/label/themes/halo/dark/index.js +3 -0
  276. package/lib/label/themes/halo/light/index.js +3 -0
  277. package/lib/label/themes/solar/charcoal/index.js +3 -0
  278. package/lib/label/themes/solar/pearl/index.js +3 -0
  279. package/lib/layout/custom-elements.json +163 -0
  280. package/lib/layout/custom-elements.md +26 -0
  281. package/lib/layout/index.d.ts +107 -0
  282. package/lib/layout/index.js +212 -0
  283. package/lib/layout/themes/halo/dark/index.js +2 -0
  284. package/lib/layout/themes/halo/light/index.js +2 -0
  285. package/lib/layout/themes/solar/charcoal/index.js +2 -0
  286. package/lib/layout/themes/solar/pearl/index.js +2 -0
  287. package/lib/led-gauge/custom-elements.json +113 -0
  288. package/lib/led-gauge/custom-elements.md +17 -0
  289. package/lib/led-gauge/index.d.ts +143 -0
  290. package/lib/led-gauge/index.js +437 -0
  291. package/lib/led-gauge/themes/halo/dark/index.js +3 -0
  292. package/lib/led-gauge/themes/halo/light/index.js +3 -0
  293. package/lib/led-gauge/themes/solar/charcoal/index.js +3 -0
  294. package/lib/led-gauge/themes/solar/pearl/index.js +3 -0
  295. package/lib/list/custom-elements.json +111 -0
  296. package/lib/list/custom-elements.md +30 -0
  297. package/lib/list/extensible-function.d.ts +8 -0
  298. package/lib/list/extensible-function.js +13 -0
  299. package/lib/list/helpers/list-renderer.d.ts +9 -0
  300. package/lib/list/helpers/list-renderer.js +35 -0
  301. package/lib/list/helpers/types.d.ts +3 -0
  302. package/lib/list/helpers/types.js +1 -0
  303. package/lib/list/index.d.ts +292 -0
  304. package/lib/list/index.js +600 -0
  305. package/lib/list/renderer.d.ts +36 -0
  306. package/lib/list/renderer.js +9 -0
  307. package/lib/list/themes/halo/dark/index.js +3 -0
  308. package/lib/list/themes/halo/light/index.js +3 -0
  309. package/lib/list/themes/solar/charcoal/index.js +3 -0
  310. package/lib/list/themes/solar/pearl/index.js +3 -0
  311. package/lib/loader/custom-elements.json +9 -0
  312. package/lib/loader/custom-elements.md +5 -0
  313. package/lib/loader/index.d.ts +41 -0
  314. package/lib/loader/index.js +61 -0
  315. package/lib/loader/themes/halo/dark/index.js +2 -0
  316. package/lib/loader/themes/halo/light/index.js +2 -0
  317. package/lib/loader/themes/solar/charcoal/index.js +2 -0
  318. package/lib/loader/themes/solar/pearl/index.js +2 -0
  319. package/lib/multi-input/custom-elements.json +238 -0
  320. package/lib/multi-input/custom-elements.md +43 -0
  321. package/lib/multi-input/helpers/types.d.ts +11 -0
  322. package/lib/multi-input/helpers/types.js +1 -0
  323. package/lib/multi-input/index.d.ts +297 -0
  324. package/lib/multi-input/index.js +590 -0
  325. package/lib/multi-input/themes/halo/dark/index.js +4 -0
  326. package/lib/multi-input/themes/halo/light/index.js +4 -0
  327. package/lib/multi-input/themes/solar/charcoal/index.js +4 -0
  328. package/lib/multi-input/themes/solar/pearl/index.js +4 -0
  329. package/lib/notification/custom-elements.json +95 -0
  330. package/lib/notification/custom-elements.md +26 -0
  331. package/lib/notification/elements/notification-tray.d.ts +97 -0
  332. package/lib/notification/elements/notification-tray.js +167 -0
  333. package/lib/notification/elements/notification.d.ts +90 -0
  334. package/lib/notification/elements/notification.js +154 -0
  335. package/lib/notification/helpers/status.d.ts +30 -0
  336. package/lib/notification/helpers/status.js +130 -0
  337. package/lib/notification/helpers/types.d.ts +10 -0
  338. package/lib/notification/helpers/types.js +1 -0
  339. package/lib/notification/index.d.ts +2 -0
  340. package/lib/notification/index.js +2 -0
  341. package/lib/notification/themes/halo/dark/index.js +5 -0
  342. package/lib/notification/themes/halo/light/index.js +5 -0
  343. package/lib/notification/themes/solar/charcoal/index.js +5 -0
  344. package/lib/notification/themes/solar/pearl/index.js +5 -0
  345. package/lib/number-field/custom-elements.json +200 -0
  346. package/lib/number-field/custom-elements.md +37 -0
  347. package/lib/number-field/index.d.ts +294 -0
  348. package/lib/number-field/index.js +707 -0
  349. package/lib/number-field/themes/halo/dark/index.js +3 -0
  350. package/lib/number-field/themes/halo/light/index.js +3 -0
  351. package/lib/number-field/themes/solar/charcoal/index.js +3 -0
  352. package/lib/number-field/themes/solar/pearl/index.js +3 -0
  353. package/lib/overlay/custom-elements.json +345 -0
  354. package/lib/overlay/custom-elements.md +54 -0
  355. package/lib/overlay/elements/overlay-backdrop.d.ts +46 -0
  356. package/lib/overlay/elements/overlay-backdrop.js +64 -0
  357. package/lib/overlay/elements/overlay-viewport.d.ts +40 -0
  358. package/lib/overlay/elements/overlay-viewport.js +52 -0
  359. package/lib/overlay/elements/overlay.d.ts +403 -0
  360. package/lib/overlay/elements/overlay.js +1426 -0
  361. package/lib/overlay/helpers/functions.d.ts +13 -0
  362. package/lib/overlay/helpers/functions.js +16 -0
  363. package/lib/overlay/helpers/types.d.ts +97 -0
  364. package/lib/overlay/helpers/types.js +16 -0
  365. package/lib/overlay/index.d.ts +2 -0
  366. package/lib/overlay/index.js +1 -0
  367. package/lib/overlay/managers/backdrop-manager.d.ts +45 -0
  368. package/lib/overlay/managers/backdrop-manager.js +96 -0
  369. package/lib/overlay/managers/close-manager.d.ts +54 -0
  370. package/lib/overlay/managers/close-manager.js +138 -0
  371. package/lib/overlay/managers/focus-manager.d.ts +71 -0
  372. package/lib/overlay/managers/focus-manager.js +228 -0
  373. package/lib/overlay/managers/interaction-lock-manager.d.ts +138 -0
  374. package/lib/overlay/managers/interaction-lock-manager.js +375 -0
  375. package/lib/overlay/managers/viewport-manager.d.ts +93 -0
  376. package/lib/overlay/managers/viewport-manager.js +211 -0
  377. package/lib/overlay/managers/zindex-manager.d.ts +80 -0
  378. package/lib/overlay/managers/zindex-manager.js +195 -0
  379. package/lib/overlay/themes/halo/dark/index.js +4 -0
  380. package/lib/overlay/themes/halo/light/index.js +4 -0
  381. package/lib/overlay/themes/solar/charcoal/index.js +4 -0
  382. package/lib/overlay/themes/solar/pearl/index.js +4 -0
  383. package/lib/overlay-menu/custom-elements.json +194 -0
  384. package/lib/overlay-menu/custom-elements.md +44 -0
  385. package/lib/overlay-menu/helpers/types.d.ts +8 -0
  386. package/lib/overlay-menu/helpers/types.js +1 -0
  387. package/lib/overlay-menu/index.d.ts +385 -0
  388. package/lib/overlay-menu/index.js +933 -0
  389. package/lib/overlay-menu/managers/menu-manager.d.ts +98 -0
  390. package/lib/overlay-menu/managers/menu-manager.js +240 -0
  391. package/lib/overlay-menu/themes/halo/dark/index.js +5 -0
  392. package/lib/overlay-menu/themes/halo/light/index.js +5 -0
  393. package/lib/overlay-menu/themes/solar/charcoal/index.js +5 -0
  394. package/lib/overlay-menu/themes/solar/pearl/index.js +5 -0
  395. package/lib/pagination/custom-elements.json +93 -0
  396. package/lib/pagination/custom-elements.md +27 -0
  397. package/lib/pagination/helpers/types.d.ts +9 -0
  398. package/lib/pagination/helpers/types.js +1 -0
  399. package/lib/pagination/index.d.ts +207 -0
  400. package/lib/pagination/index.js +398 -0
  401. package/lib/pagination/themes/halo/dark/index.js +6 -0
  402. package/lib/pagination/themes/halo/light/index.js +6 -0
  403. package/lib/pagination/themes/solar/charcoal/index.js +6 -0
  404. package/lib/pagination/themes/solar/pearl/index.js +6 -0
  405. package/lib/panel/custom-elements.json +39 -0
  406. package/lib/panel/custom-elements.md +11 -0
  407. package/lib/panel/index.d.ts +48 -0
  408. package/lib/panel/index.js +74 -0
  409. package/lib/panel/themes/halo/dark/index.js +2 -0
  410. package/lib/panel/themes/halo/light/index.js +2 -0
  411. package/lib/panel/themes/solar/charcoal/index.js +2 -0
  412. package/lib/panel/themes/solar/pearl/index.js +2 -0
  413. package/lib/password-field/custom-elements.json +156 -0
  414. package/lib/password-field/custom-elements.md +31 -0
  415. package/lib/password-field/index.d.ts +141 -0
  416. package/lib/password-field/index.js +258 -0
  417. package/lib/password-field/themes/halo/dark/index.js +3 -0
  418. package/lib/password-field/themes/halo/light/index.js +3 -0
  419. package/lib/password-field/themes/solar/charcoal/index.js +3 -0
  420. package/lib/password-field/themes/solar/pearl/index.js +3 -0
  421. package/lib/pill/custom-elements.json +95 -0
  422. package/lib/pill/custom-elements.md +22 -0
  423. package/lib/pill/index.d.ts +97 -0
  424. package/lib/pill/index.js +160 -0
  425. package/lib/pill/themes/halo/dark/index.js +3 -0
  426. package/lib/pill/themes/halo/light/index.js +3 -0
  427. package/lib/pill/themes/solar/charcoal/index.js +3 -0
  428. package/lib/pill/themes/solar/pearl/index.js +3 -0
  429. package/lib/progress-bar/custom-elements.json +58 -0
  430. package/lib/progress-bar/custom-elements.md +18 -0
  431. package/lib/progress-bar/index.d.ts +82 -0
  432. package/lib/progress-bar/index.js +157 -0
  433. package/lib/progress-bar/themes/halo/dark/index.js +2 -0
  434. package/lib/progress-bar/themes/halo/light/index.js +2 -0
  435. package/lib/progress-bar/themes/solar/charcoal/index.js +2 -0
  436. package/lib/progress-bar/themes/solar/pearl/index.js +2 -0
  437. package/lib/radio-button/custom-elements.json +82 -0
  438. package/lib/radio-button/custom-elements.md +19 -0
  439. package/lib/radio-button/index.d.ts +122 -0
  440. package/lib/radio-button/index.js +257 -0
  441. package/lib/radio-button/radio-button-registry.d.ts +22 -0
  442. package/lib/radio-button/radio-button-registry.js +93 -0
  443. package/lib/radio-button/themes/halo/dark/index.js +3 -0
  444. package/lib/radio-button/themes/halo/light/index.js +3 -0
  445. package/lib/radio-button/themes/solar/charcoal/index.js +3 -0
  446. package/lib/radio-button/themes/solar/pearl/index.js +3 -0
  447. package/lib/rating/custom-elements.json +58 -0
  448. package/lib/rating/custom-elements.md +17 -0
  449. package/lib/rating/index.d.ts +91 -0
  450. package/lib/rating/index.js +157 -0
  451. package/lib/rating/themes/halo/dark/index.js +2 -0
  452. package/lib/rating/themes/halo/light/index.js +2 -0
  453. package/lib/rating/themes/solar/charcoal/index.js +2 -0
  454. package/lib/rating/themes/solar/pearl/index.js +2 -0
  455. package/lib/search-field/custom-elements.json +173 -0
  456. package/lib/search-field/custom-elements.md +33 -0
  457. package/lib/search-field/index.d.ts +134 -0
  458. package/lib/search-field/index.js +253 -0
  459. package/lib/search-field/themes/halo/dark/index.js +3 -0
  460. package/lib/search-field/themes/halo/light/index.js +3 -0
  461. package/lib/search-field/themes/solar/charcoal/index.js +3 -0
  462. package/lib/search-field/themes/solar/pearl/index.js +3 -0
  463. package/lib/select/custom-elements.json +103 -0
  464. package/lib/select/custom-elements.md +24 -0
  465. package/lib/select/helpers/types.d.ts +3 -0
  466. package/lib/select/helpers/types.js +1 -0
  467. package/lib/select/index.d.ts +388 -0
  468. package/lib/select/index.js +942 -0
  469. package/lib/select/themes/halo/dark/index.js +5 -0
  470. package/lib/select/themes/halo/light/index.js +5 -0
  471. package/lib/select/themes/solar/charcoal/index.js +5 -0
  472. package/lib/select/themes/solar/pearl/index.js +5 -0
  473. package/lib/sidebar-layout/custom-elements.json +72 -0
  474. package/lib/sidebar-layout/custom-elements.md +22 -0
  475. package/lib/sidebar-layout/index.d.ts +69 -0
  476. package/lib/sidebar-layout/index.js +134 -0
  477. package/lib/sidebar-layout/themes/halo/dark/index.js +3 -0
  478. package/lib/sidebar-layout/themes/halo/light/index.js +3 -0
  479. package/lib/sidebar-layout/themes/solar/charcoal/index.js +3 -0
  480. package/lib/sidebar-layout/themes/solar/pearl/index.js +3 -0
  481. package/lib/slider/custom-elements.json +181 -0
  482. package/lib/slider/custom-elements.md +28 -0
  483. package/lib/slider/index.d.ts +409 -0
  484. package/lib/slider/index.js +1187 -0
  485. package/lib/slider/themes/halo/dark/index.js +3 -0
  486. package/lib/slider/themes/halo/light/index.js +3 -0
  487. package/lib/slider/themes/solar/charcoal/index.js +3 -0
  488. package/lib/slider/themes/solar/pearl/index.js +3 -0
  489. package/lib/sparkline/custom-elements.json +59 -0
  490. package/lib/sparkline/custom-elements.md +16 -0
  491. package/lib/sparkline/index.d.ts +107 -0
  492. package/lib/sparkline/index.js +186 -0
  493. package/lib/sparkline/themes/halo/dark/index.js +2 -0
  494. package/lib/sparkline/themes/halo/light/index.js +2 -0
  495. package/lib/sparkline/themes/solar/charcoal/index.js +2 -0
  496. package/lib/sparkline/themes/solar/pearl/index.js +2 -0
  497. package/lib/swing-gauge/const.d.ts +22 -0
  498. package/lib/swing-gauge/const.js +26 -0
  499. package/lib/swing-gauge/custom-elements.json +109 -0
  500. package/lib/swing-gauge/custom-elements.md +17 -0
  501. package/lib/swing-gauge/helpers.d.ts +8 -0
  502. package/lib/swing-gauge/helpers.js +105 -0
  503. package/lib/swing-gauge/index.d.ts +294 -0
  504. package/lib/swing-gauge/index.js +762 -0
  505. package/lib/swing-gauge/themes/halo/dark/index.js +3 -0
  506. package/lib/swing-gauge/themes/halo/light/index.js +3 -0
  507. package/lib/swing-gauge/themes/solar/charcoal/index.js +3 -0
  508. package/lib/swing-gauge/themes/solar/pearl/index.js +3 -0
  509. package/lib/swing-gauge/types.d.ts +34 -0
  510. package/lib/swing-gauge/types.js +1 -0
  511. package/lib/tab/custom-elements.json +123 -0
  512. package/lib/tab/custom-elements.md +22 -0
  513. package/lib/tab/index.d.ts +118 -0
  514. package/lib/tab/index.js +208 -0
  515. package/lib/tab/themes/halo/dark/index.js +4 -0
  516. package/lib/tab/themes/halo/light/index.js +4 -0
  517. package/lib/tab/themes/solar/charcoal/index.js +4 -0
  518. package/lib/tab/themes/solar/pearl/index.js +4 -0
  519. package/lib/tab-bar/custom-elements.json +52 -0
  520. package/lib/tab-bar/custom-elements.md +11 -0
  521. package/lib/tab-bar/helpers/animate.d.ts +16 -0
  522. package/lib/tab-bar/helpers/animate.js +53 -0
  523. package/lib/tab-bar/index.d.ts +108 -0
  524. package/lib/tab-bar/index.js +218 -0
  525. package/lib/tab-bar/themes/halo/dark/index.js +4 -0
  526. package/lib/tab-bar/themes/halo/light/index.js +4 -0
  527. package/lib/tab-bar/themes/solar/charcoal/index.js +4 -0
  528. package/lib/tab-bar/themes/solar/pearl/index.js +4 -0
  529. package/lib/text-field/custom-elements.json +210 -0
  530. package/lib/text-field/custom-elements.md +37 -0
  531. package/lib/text-field/index.d.ts +193 -0
  532. package/lib/text-field/index.js +409 -0
  533. package/lib/text-field/themes/halo/dark/index.js +3 -0
  534. package/lib/text-field/themes/halo/light/index.js +3 -0
  535. package/lib/text-field/themes/solar/charcoal/index.js +3 -0
  536. package/lib/text-field/themes/solar/pearl/index.js +3 -0
  537. package/lib/time-picker/custom-elements.json +124 -0
  538. package/lib/time-picker/custom-elements.md +28 -0
  539. package/lib/time-picker/index.d.ts +379 -0
  540. package/lib/time-picker/index.js +775 -0
  541. package/lib/time-picker/themes/halo/dark/index.js +4 -0
  542. package/lib/time-picker/themes/halo/light/index.js +4 -0
  543. package/lib/time-picker/themes/solar/charcoal/index.js +4 -0
  544. package/lib/time-picker/themes/solar/pearl/index.js +4 -0
  545. package/lib/toggle/custom-elements.json +82 -0
  546. package/lib/toggle/custom-elements.md +19 -0
  547. package/lib/toggle/index.d.ts +86 -0
  548. package/lib/toggle/index.js +152 -0
  549. package/lib/toggle/themes/halo/dark/index.js +2 -0
  550. package/lib/toggle/themes/halo/light/index.js +2 -0
  551. package/lib/toggle/themes/solar/charcoal/index.js +2 -0
  552. package/lib/toggle/themes/solar/pearl/index.js +2 -0
  553. package/lib/tooltip/custom-elements.json +62 -0
  554. package/lib/tooltip/custom-elements.md +14 -0
  555. package/lib/tooltip/elements/title-tooltip.d.ts +1 -0
  556. package/lib/tooltip/elements/title-tooltip.js +18 -0
  557. package/lib/tooltip/elements/tooltip-element.d.ts +21 -0
  558. package/lib/tooltip/elements/tooltip-element.js +54 -0
  559. package/lib/tooltip/helpers/overflow-tooltip.d.ts +9 -0
  560. package/lib/tooltip/helpers/overflow-tooltip.js +19 -0
  561. package/lib/tooltip/helpers/renderer.d.ts +8 -0
  562. package/lib/tooltip/helpers/renderer.js +11 -0
  563. package/lib/tooltip/helpers/types.d.ts +23 -0
  564. package/lib/tooltip/helpers/types.js +1 -0
  565. package/lib/tooltip/index.d.ts +232 -0
  566. package/lib/tooltip/index.js +477 -0
  567. package/lib/tooltip/managers/tooltip-manager.d.ts +15 -0
  568. package/lib/tooltip/managers/tooltip-manager.js +140 -0
  569. package/lib/tooltip/themes/halo/dark/index.js +3 -0
  570. package/lib/tooltip/themes/halo/light/index.js +3 -0
  571. package/lib/tooltip/themes/solar/charcoal/index.js +3 -0
  572. package/lib/tooltip/themes/solar/pearl/index.js +3 -0
  573. package/lib/tornado-chart/custom-elements.json +45 -0
  574. package/lib/tornado-chart/custom-elements.md +18 -0
  575. package/lib/tornado-chart/elements/tornado-chart.d.ts +78 -0
  576. package/lib/tornado-chart/elements/tornado-chart.js +122 -0
  577. package/lib/tornado-chart/elements/tornado-item.d.ts +110 -0
  578. package/lib/tornado-chart/elements/tornado-item.js +207 -0
  579. package/lib/tornado-chart/index.d.ts +2 -0
  580. package/lib/tornado-chart/index.js +2 -0
  581. package/lib/tornado-chart/themes/halo/dark/index.js +6 -0
  582. package/lib/tornado-chart/themes/halo/light/index.js +6 -0
  583. package/lib/tornado-chart/themes/solar/charcoal/index.js +6 -0
  584. package/lib/tornado-chart/themes/solar/pearl/index.js +6 -0
  585. package/lib/tree/custom-elements.json +113 -0
  586. package/lib/tree/custom-elements.md +32 -0
  587. package/lib/tree/elements/tree-item.d.ts +96 -0
  588. package/lib/tree/elements/tree-item.js +179 -0
  589. package/lib/tree/elements/tree.d.ts +201 -0
  590. package/lib/tree/elements/tree.js +412 -0
  591. package/lib/tree/helpers/filter.d.ts +8 -0
  592. package/lib/tree/helpers/filter.js +33 -0
  593. package/lib/tree/helpers/renderer.d.ts +5 -0
  594. package/lib/tree/helpers/renderer.js +33 -0
  595. package/lib/tree/helpers/types.d.ts +25 -0
  596. package/lib/tree/helpers/types.js +1 -0
  597. package/lib/tree/index.d.ts +4 -0
  598. package/lib/tree/index.js +3 -0
  599. package/lib/tree/managers/tree-manager.d.ts +248 -0
  600. package/lib/tree/managers/tree-manager.js +395 -0
  601. package/lib/tree/themes/halo/dark/index.js +7 -0
  602. package/lib/tree/themes/halo/light/index.js +7 -0
  603. package/lib/tree/themes/solar/charcoal/index.js +7 -0
  604. package/lib/tree/themes/solar/pearl/index.js +7 -0
  605. package/lib/tree-select/custom-elements.json +107 -0
  606. package/lib/tree-select/custom-elements.md +26 -0
  607. package/lib/tree-select/helpers/types.d.ts +4 -0
  608. package/lib/tree-select/helpers/types.js +1 -0
  609. package/lib/tree-select/index.d.ts +402 -0
  610. package/lib/tree-select/index.js +890 -0
  611. package/lib/tree-select/themes/halo/dark/index.js +12 -0
  612. package/lib/tree-select/themes/halo/light/index.js +12 -0
  613. package/lib/tree-select/themes/solar/charcoal/index.js +12 -0
  614. package/lib/tree-select/themes/solar/pearl/index.js +12 -0
  615. package/lib/version.d.ts +1 -0
  616. package/lib/version.js +1 -0
  617. package/package.json +298 -15
@@ -0,0 +1,1187 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, css, ControlElement, WarningNotice } 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 { styleMap } from '@refinitiv-ui/core/lib/directives/style-map.js';
7
+ import { VERSION } from '../version.js';
8
+ import '../number-field/index.js';
9
+ var SliderNameType;
10
+ (function (SliderNameType) {
11
+ SliderNameType["value"] = "value";
12
+ SliderNameType["from"] = "from";
13
+ SliderNameType["to"] = "to";
14
+ })(SliderNameType || (SliderNameType = {}));
15
+ var PreviousSliderNameType;
16
+ (function (PreviousSliderNameType) {
17
+ PreviousSliderNameType["value"] = "valuePrevious";
18
+ PreviousSliderNameType["from"] = "fromPrevious";
19
+ PreviousSliderNameType["to"] = "toPrevious";
20
+ })(PreviousSliderNameType || (PreviousSliderNameType = {}));
21
+ var NumberFieldNameType;
22
+ (function (NumberFieldNameType) {
23
+ NumberFieldNameType["fromInput"] = "fromInput";
24
+ NumberFieldNameType["toInput"] = "toInput";
25
+ })(NumberFieldNameType || (NumberFieldNameType = {}));
26
+ /**
27
+ * Set prevent default action and stop bubbles event
28
+ * @private
29
+ * @param event event mouse or touch
30
+ * @returns {void}
31
+ */
32
+ const preventDefault = function (event) {
33
+ event.preventDefault();
34
+ event.stopPropagation();
35
+ return event;
36
+ };
37
+ /**
38
+ * Return value that never exceed the maximum boundary
39
+ * @private
40
+ * @param value value for check clamp
41
+ * @param min max value
42
+ * @param max min value
43
+ * @returns number between two numbers
44
+ */
45
+ const clamp = function (value, min, max) {
46
+ return Math.max(min, Math.min(value, max)).toString();
47
+ };
48
+ /**
49
+ * Allows users to make selections from a range of values
50
+ *
51
+ * @attr {string} value - Value of slider. Not applicable in range mode.
52
+ * @prop {string} [value=0] - Value of slider. Not applicable in range mode.
53
+ *
54
+ * @attr {boolean} readonly - Set readonly state
55
+ * @prop {boolean} [readonly=false] - Set readonly state
56
+ *
57
+ * @attr {boolean} disabled - Set disabled state
58
+ * @prop {boolean} [disabled=false] - Set disabled state
59
+ *
60
+ * @fires value-changed - Fired when the `value` changes.
61
+ * @fires from-changed - Fired when the `from` changes.
62
+ * @fires to-changed - Fired when the `to` changes.
63
+ */
64
+ let Slider = class Slider extends ControlElement {
65
+ constructor() {
66
+ super(...arguments);
67
+ this.dragging = false;
68
+ this.stepUse = 1;
69
+ this.decimalPlaces = 0;
70
+ this.dragElements = [];
71
+ this.isEventReady = false;
72
+ this.valuePrevious = '';
73
+ this.fromPrevious = '';
74
+ this.toPrevious = '';
75
+ /**
76
+ * Specified size of increment or decrement jump between value.
77
+ */
78
+ this.step = '1';
79
+ /**
80
+ * Set minimum value of slider.
81
+ */
82
+ this.min = '0';
83
+ /**
84
+ * Slider maximum value of slider.
85
+ */
86
+ this.max = '100';
87
+ /**
88
+ * Uses with `range`. Low value of slider in range mode.
89
+ */
90
+ this.from = '0';
91
+ /**
92
+ * Uses with `range`. High value of slider in range mode
93
+ */
94
+ this.to = '100';
95
+ /**
96
+ * Set slider appearances to show pin mode.
97
+ * @ignore
98
+ * NOTE: Pin isn't applicable in Halo. Hide this from document
99
+ */
100
+ this.pin = false;
101
+ /**
102
+ * Set slider to range mode. Instead of a single value, slider will provide `from` and `to`.
103
+ */
104
+ this.range = false;
105
+ /**
106
+ * Show steps marker on slider.
107
+ */
108
+ this.showSteps = false;
109
+ /**
110
+ * Show input number field.
111
+ */
112
+ this.showInputField = null;
113
+ /**
114
+ * Uses with `range`. Set minimum allowance value (distance) between `from` and `to`.
115
+ */
116
+ this.minRange = '0';
117
+ /**
118
+ * Input number event blur and notify property
119
+ * @param event event blur input number field
120
+ * @returns {void}
121
+ */
122
+ this.onBlur = (event) => {
123
+ if (this.readonly) {
124
+ return;
125
+ }
126
+ const { value, name } = event.target;
127
+ const currentData = name;
128
+ const perviousData = `${name}Previous`;
129
+ if (value && this[currentData] !== value) {
130
+ this.updateNotifyProperty(currentData, value);
131
+ this[perviousData] = value;
132
+ }
133
+ event.preventDefault();
134
+ };
135
+ /**
136
+ * Input number event keydown y
137
+ * @param event event keydown
138
+ * @returns {void}
139
+ */
140
+ this.onKeydown = (event) => {
141
+ if (this.readonly || this.disabled) {
142
+ return;
143
+ }
144
+ this.handleEnterKey(event);
145
+ };
146
+ /**
147
+ * Start dragging event on slider
148
+ * @param event event dragstart
149
+ * @returns {void}
150
+ */
151
+ this.onDragStart = (event) => {
152
+ this.dragging = true;
153
+ this.classList.add('grabbable');
154
+ if (this.range) {
155
+ const pct = this.getMousePosition(event);
156
+ const mousePos = ((this.maxNumber - this.minNumber) * pct) + this.minNumber;
157
+ const distFrom = Math.abs(mousePos - this.fromNumber);
158
+ const distTo = Math.abs(mousePos - this.toNumber);
159
+ if (distFrom < distTo) {
160
+ this.activeThumb = this.dragElements[0];
161
+ }
162
+ else if (distFrom > distTo) {
163
+ this.activeThumb = this.dragElements[1];
164
+ }
165
+ this.dragElements.forEach((el) => {
166
+ el.style.zIndex = '5';
167
+ });
168
+ this.activeThumb.style.zIndex = '10';
169
+ // Set focus to input when drag.
170
+ if (this.isShowInputField) {
171
+ this.toggleFocusField(this.activeThumb.getAttribute('name') || '', true);
172
+ }
173
+ }
174
+ else {
175
+ this.activeThumb = this.dragElements[0];
176
+ }
177
+ this.onDrag(event);
178
+ if (event.changedTouches) {
179
+ this.addEventListener('touchmove', this.onDrag);
180
+ this.addEventListener('touchend', this.onDragEnd);
181
+ }
182
+ else {
183
+ window.addEventListener('mousemove', this.onDrag);
184
+ window.addEventListener('mouseup', this.onDragEnd);
185
+ }
186
+ };
187
+ /**
188
+ * Dragging after on dragging start event
189
+ * @param event event mousemove and touchmove
190
+ * @returns {void}
191
+ */
192
+ this.onDrag = (event) => {
193
+ if (this.minNumber !== this.maxNumber) {
194
+ const thumbPos = this.getMousePosition(event);
195
+ const closestStep = this.calculateStep(thumbPos);
196
+ // Can be dragged slider when the value is valid
197
+ if (closestStep <= 1) {
198
+ const thumbLeft = this.stepUse !== 0 ? closestStep : thumbPos;
199
+ const calStepValue = this.calculateValue(thumbLeft);
200
+ const prettyVal = Number(this.displayValue(calStepValue));
201
+ if (this.range) {
202
+ if (this.activeThumb === this.dragElements[1]) {
203
+ this.to = this.validateTo(prettyVal).toString();
204
+ }
205
+ else {
206
+ this.from = this.validateFrom(prettyVal).toString();
207
+ }
208
+ }
209
+ else {
210
+ this.value = prettyVal.toString();
211
+ }
212
+ }
213
+ }
214
+ };
215
+ /**
216
+ * End dragging event and remove dragging event
217
+ * @param e event mouseup and touchmove
218
+ * @returns {void}
219
+ */
220
+ this.onDragEnd = (e) => {
221
+ if (this.dragging) {
222
+ this.dragging = false;
223
+ const event = e;
224
+ if (event.changedTouches) {
225
+ this.removeEventListener('touchmove', this.onDrag);
226
+ this.removeEventListener('touchend', this.onDragEnd);
227
+ }
228
+ else {
229
+ window.removeEventListener('mousemove', this.onDrag);
230
+ window.removeEventListener('mouseup', this.onDragEnd);
231
+ }
232
+ this.classList.remove('grabbable');
233
+ if (this.classList.length === 0) {
234
+ this.removeAttribute('class');
235
+ }
236
+ if (!event.changedTouches) {
237
+ event.preventDefault();
238
+ }
239
+ this.dispatchDataChangedEvent();
240
+ // Reset tab index of input that's drag.
241
+ if (this.isShowInputField) {
242
+ this.toggleFocusField(this.activeThumb.getAttribute('name') || '', false);
243
+ }
244
+ }
245
+ };
246
+ }
247
+ /**
248
+ * Element version number
249
+ * @returns version number
250
+ */
251
+ static get version() {
252
+ return VERSION;
253
+ }
254
+ /**
255
+ * Converts value from string to number for calculations
256
+ * @returns value of input as a number
257
+ */
258
+ get valueNumber() {
259
+ const value = parseFloat(this.value);
260
+ if (!this.value || isNaN(value)) {
261
+ return 0;
262
+ }
263
+ return value;
264
+ }
265
+ /**
266
+ * Converts min value from string to number for calculations
267
+ * @returns minimum value of slider as a number
268
+ */
269
+ get minNumber() {
270
+ const min = parseFloat(this.min);
271
+ if (!this.min || isNaN(min)) {
272
+ return 0;
273
+ }
274
+ return min;
275
+ }
276
+ /**
277
+ * Converts max value from string to number for calculations
278
+ * @returns maximum value of slider as a number
279
+ */
280
+ get maxNumber() {
281
+ const max = parseFloat(this.max);
282
+ if (!this.max || isNaN(max)) {
283
+ return 100;
284
+ }
285
+ return max;
286
+ }
287
+ /**
288
+ * Converts step value from string to number for calculations
289
+ * @returns step value of slider as a number
290
+ */
291
+ get stepNumber() {
292
+ const step = parseFloat(this.step);
293
+ if (!this.step || isNaN(step)) {
294
+ return 1;
295
+ }
296
+ return step;
297
+ }
298
+ /**
299
+ * Converts from value from string to number for calculations
300
+ * @returns from value of slider as a number
301
+ */
302
+ get fromNumber() {
303
+ const from = parseFloat(this.from);
304
+ if (!this.from || isNaN(from)) {
305
+ return this.minNumber;
306
+ }
307
+ return from;
308
+ }
309
+ /**
310
+ * Converts to value from string to number for calculations
311
+ * @returns to value of slider as a number
312
+ */
313
+ get toNumber() {
314
+ const to = parseFloat(this.to);
315
+ if (!this.to || isNaN(to)) {
316
+ return this.maxNumber;
317
+ }
318
+ return to;
319
+ }
320
+ /**
321
+ * Converts min-range from string to number for calculations
322
+ * @returns min-range of input as a number
323
+ */
324
+ get minRangeNumber() {
325
+ const minRange = parseFloat(this.minRange);
326
+ if (!this.minRange || isNaN(minRange)) {
327
+ return 0;
328
+ }
329
+ return minRange;
330
+ }
331
+ /**
332
+ * Return hide/show input field state
333
+ * @returns {boolean} true if showInputField value is exist
334
+ */
335
+ get isShowInputField() {
336
+ return this.showInputField !== null && this.showInputField !== undefined;
337
+ }
338
+ /**
339
+ * On first updated lifecycle
340
+ * @param changedProperties changed properties
341
+ * @returns {void}
342
+ */
343
+ firstUpdated(changedProperties) {
344
+ super.firstUpdated(changedProperties);
345
+ // initialize slider
346
+ void this.updateComplete.then(() => {
347
+ this.initializeProperty();
348
+ this.initSlider();
349
+ this.updateEventListeners();
350
+ });
351
+ }
352
+ /**
353
+ * On Update lifecycle
354
+ * @param changedProperties changed properties
355
+ * @returns {void}
356
+ */
357
+ update(changedProperties) {
358
+ super.update(changedProperties);
359
+ if (changedProperties.has('disabled') || changedProperties.has('readonly')) {
360
+ this.updateEventListeners();
361
+ }
362
+ changedProperties.forEach((oldValue, propName) => {
363
+ if (['value', 'min', 'max', 'from', 'to', 'step', 'minRange'].includes(propName)) {
364
+ this.showWarningInvalidProperty(propName);
365
+ }
366
+ });
367
+ }
368
+ /**
369
+ * @param changedProperties changed properties
370
+ * @returns {void}
371
+ */
372
+ updated(changedProperties) {
373
+ super.updated(changedProperties);
374
+ changedProperties.forEach((oldValue, propName) => {
375
+ if (propName === 'value') {
376
+ this.onValueChange();
377
+ }
378
+ else if (propName === 'min') {
379
+ this.onMinChange(oldValue);
380
+ }
381
+ else if (propName === 'max') {
382
+ this.onMaxChange(oldValue);
383
+ }
384
+ else if (propName === 'from' && this.range) {
385
+ this.onValueChangeFrom();
386
+ }
387
+ else if (propName === 'to' && this.range) {
388
+ this.onValueChangeTo();
389
+ }
390
+ else if (propName === 'step') {
391
+ this.onStepChange();
392
+ }
393
+ else if (propName === 'minRange') {
394
+ this.onMinRangeChange();
395
+ }
396
+ else if (propName === 'range') {
397
+ this.initializeProperty();
398
+ this.initSlider();
399
+ }
400
+ });
401
+ }
402
+ /**
403
+ * Show Warning a warning message invalid property
404
+ * @param propName value for checking
405
+ * @returns {void}
406
+ */
407
+ showWarningInvalidProperty(propName) {
408
+ let isValid = true;
409
+ let message = '';
410
+ if (propName === 'value') {
411
+ isValid = this.isValueInBoundary(this.valueNumber, '');
412
+ message = 'value should be between min and max.';
413
+ }
414
+ else if (propName === 'min') {
415
+ isValid = this.minNumber <= this.maxNumber;
416
+ message = 'value should be less than max.';
417
+ }
418
+ else if (propName === 'max') {
419
+ isValid = this.maxNumber >= this.minNumber;
420
+ message = 'value should be more than min.';
421
+ }
422
+ else if (propName === 'from' && this.range) {
423
+ isValid = (this.fromNumber >= this.minNumber && this.fromNumber <= this.toNumber);
424
+ message = 'value should be more than min and less than to.';
425
+ }
426
+ else if (propName === 'to' && this.range) {
427
+ isValid = (this.toNumber <= this.maxNumber && this.toNumber >= this.fromNumber);
428
+ message = 'value should be less than max and more than from.';
429
+ }
430
+ else if (propName === 'step') {
431
+ isValid = ((this.maxNumber - this.minNumber) >= this.stepNumber);
432
+ message = 'value should be between min and max.';
433
+ }
434
+ else if (propName === 'minRange' && this.minRangeNumber > 0) {
435
+ const distanceFromTo = Math.abs(this.toNumber - this.fromNumber);
436
+ const distanceMinMax = Math.abs(this.maxNumber - this.minNumber);
437
+ isValid = (distanceMinMax >= this.minRangeNumber && distanceFromTo >= this.minRangeNumber);
438
+ message = 'value should be less than distance from and to, min and max.';
439
+ }
440
+ if (!isValid) {
441
+ new WarningNotice(`${this.localName}: Invalid ${propName} provided, The correct ${propName} ${message}`).show();
442
+ }
443
+ }
444
+ /**
445
+ * Initialise class properties
446
+ * @returns {void}
447
+ */
448
+ initializeProperty() {
449
+ this.stepUse = this.calculateStepRange(this.stepNumber);
450
+ if (this.minNumber !== this.maxNumber) {
451
+ // init decimal places
452
+ this.updateDecimalPlaces();
453
+ if (this.range) {
454
+ this.activeThumb = this.dragElements[1];
455
+ if (this.minRangeNumber) {
456
+ const distanceFromTo = Math.abs(this.toNumber - this.fromNumber);
457
+ const clampValueFrom = this.toNumber - this.minRangeNumber;
458
+ if (this.minRangeNumber > distanceFromTo) {
459
+ if (clampValueFrom < this.minNumber) {
460
+ this.to = (this.fromNumber + this.minRangeNumber).toString();
461
+ }
462
+ else {
463
+ this.from = clampValueFrom.toString();
464
+ }
465
+ }
466
+ }
467
+ else {
468
+ this.from = clamp((this.fromNumber || this.minNumber), this.minNumber, this.toNumber);
469
+ this.to = clamp((this.toNumber || this.maxNumber), this.fromNumber, this.maxNumber);
470
+ }
471
+ }
472
+ else {
473
+ this.value = clamp(this.valueNumber, this.minNumber, this.maxNumber);
474
+ }
475
+ }
476
+ else if (this.range) {
477
+ this.from = this.min;
478
+ this.to = this.max;
479
+ }
480
+ else {
481
+ this.value = this.min;
482
+ }
483
+ // initial old value
484
+ this.valuePrevious = this.value;
485
+ this.toPrevious = this.to;
486
+ this.fromPrevious = this.from;
487
+ }
488
+ /**
489
+ * Initialise slider properties
490
+ * @returns {void}
491
+ */
492
+ initSlider() {
493
+ var _a;
494
+ this.dragElements = [];
495
+ if (this.range) {
496
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('#thumbContainer').forEach((item) => {
497
+ this.dragElements.push(item);
498
+ });
499
+ }
500
+ else {
501
+ this.dragElements = [
502
+ this.thumbContainer
503
+ ];
504
+ }
505
+ this.activeThumb = this.dragElements[0];
506
+ this.dragElements.concat(this).forEach((el) => {
507
+ el.addEventListener('drag', preventDefault);
508
+ el.addEventListener('dragstart', preventDefault);
509
+ el.addEventListener('dragend', preventDefault);
510
+ });
511
+ this.isEventReady = true;
512
+ }
513
+ /**
514
+ * Calculate step in range
515
+ * @param step value step for calculate
516
+ * @returns step value that should be inside the min / max boundary
517
+ */
518
+ calculateStepRange(step) {
519
+ const newStep = Math.abs(step);
520
+ if (newStep > this.maxNumber - this.minNumber && !this.isDecimalNumber(newStep)) {
521
+ // new step shouldn't be larger than slider
522
+ return Math.abs(this.maxNumber - this.minNumber);
523
+ }
524
+ return newStep;
525
+ }
526
+ /**
527
+ * Check if step or min number is decimal
528
+ * If yes, set number of decimal places
529
+ * @returns {void}
530
+ */
531
+ updateDecimalPlaces() {
532
+ // Set decimal places when step or min have decimal
533
+ if (this.isDecimalNumber(this.stepUse) || this.isDecimalNumber(this.minNumber)) {
534
+ const stepUseDecimal = this.countDecimals(this.stepUse);
535
+ const minDecimal = this.countDecimals(this.minNumber);
536
+ this.decimalPlaces = stepUseDecimal > minDecimal ? stepUseDecimal : minDecimal;
537
+ }
538
+ else {
539
+ this.decimalPlaces = 0;
540
+ }
541
+ }
542
+ /**
543
+ * Count decimal number
544
+ * @param value value for checking
545
+ * @returns number of decimal points
546
+ */
547
+ countDecimals(value) {
548
+ var _a;
549
+ return ((_a = Number(value).toString().split('.')[1]) === null || _a === void 0 ? void 0 : _a.length) | 0;
550
+ }
551
+ /**
552
+ * Check if decimal number e.g. 10.5, etc
553
+ * @param value value for checking
554
+ * @returns true if value is decimal
555
+ */
556
+ isDecimalNumber(value) {
557
+ return value % 1 !== 0;
558
+ }
559
+ /**
560
+ * Calculate percentage by value
561
+ * @param value value to be calculated
562
+ * @returns percentage
563
+ */
564
+ calculatePercentage(value) {
565
+ const valuePercent = Math.abs((((value || 0) - this.minNumber) / (this.maxNumber - this.minNumber)) * 100);
566
+ if (valuePercent > 100) {
567
+ return 100;
568
+ }
569
+ else if (valuePercent < 0) {
570
+ return 0;
571
+ }
572
+ else {
573
+ return valuePercent;
574
+ }
575
+ }
576
+ /**
577
+ * Add and remove event listener when have disable and readonly properties
578
+ * @returns {void}
579
+ */
580
+ updateEventListeners() {
581
+ if (this.isEventReady) {
582
+ if (this.disabled || this.readonly) {
583
+ this.slider.removeEventListener('mousedown', this.onDragStart);
584
+ this.slider.removeEventListener('touchstart', this.onDragStart);
585
+ }
586
+ else {
587
+ this.slider.addEventListener('mousedown', this.onDragStart, { passive: true });
588
+ this.slider.addEventListener('touchstart', this.onDragStart, { passive: true });
589
+ }
590
+ }
591
+ }
592
+ /**
593
+ * Handles key press keyboard events
594
+ *
595
+ * @param event Event Object
596
+ * @returns {void}
597
+ */
598
+ handleEnterKey(event) {
599
+ if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {
600
+ event.target.blur();
601
+ }
602
+ }
603
+ /**
604
+ * Update notify property by input name attribute
605
+ * @param name name input attribute
606
+ * @param value input value
607
+ * @returns {void}
608
+ */
609
+ updateNotifyProperty(name, value) {
610
+ let isUpdateValue = false;
611
+ const valueSanitize = Number(this.sanitizeNumber(Number(value), 0));
612
+ if (name === 'to') {
613
+ isUpdateValue = this.isValueInBoundary(valueSanitize, 'to');
614
+ }
615
+ else {
616
+ isUpdateValue = this.isValueInBoundary(valueSanitize, '');
617
+ }
618
+ if (isUpdateValue) {
619
+ (this[name]) = value;
620
+ this.notifyPropertyChange(name, value);
621
+ }
622
+ else {
623
+ const nameInput = `${name}Input`;
624
+ this[nameInput].value = this[name];
625
+ }
626
+ }
627
+ /**
628
+ * Dispatch data {value, from, to} changed event
629
+ * @returns {void}
630
+ */
631
+ dispatchDataChangedEvent() {
632
+ const name = this.activeThumb.getAttribute('name') || '';
633
+ const currentData = name;
634
+ const previousData = `${name}Previous`;
635
+ // Dispatch event only when value or from or to changed
636
+ if (this[previousData] !== this[currentData]) {
637
+ this.notifyPropertyChange(name, this[currentData]);
638
+ this[previousData] = this[currentData];
639
+ }
640
+ }
641
+ /**
642
+ * Set focus to input from state
643
+ * @param {String} name number field's name
644
+ * @param {Boolean} focusState state of focus
645
+ * @returns {void}
646
+ */
647
+ toggleFocusField(name, focusState) {
648
+ if (name) {
649
+ this[`${name}Input`].setAttribute('tabindex', `${focusState ? 1 : 0}`);
650
+ }
651
+ }
652
+ /**
653
+ * @param event event mousemove and touchmove
654
+ * @returns mouse position by percentage
655
+ */
656
+ getMousePosition(event) {
657
+ const sliderRect = this.trackWrapper.getBoundingClientRect();
658
+ // check drag desktop or mobile
659
+ const pageX = event.changedTouches ? event.changedTouches[0].pageX : event.pageX;
660
+ const positionSize = pageX - sliderRect.left;
661
+ if (positionSize <= sliderRect.width) {
662
+ return Math.min(Math.max((pageX - sliderRect.left) / sliderRect.width, 0), 1);
663
+ }
664
+ else {
665
+ return 1;
666
+ }
667
+ }
668
+ /**
669
+ * Handle 'from' value on drag out of boundary.
670
+ * @param value value from change
671
+ * @returns validated from value.
672
+ */
673
+ validateFrom(value) {
674
+ const valueFrom = value + this.minRangeNumber;
675
+ if (valueFrom < this.toNumber && valueFrom >= this.minNumber) {
676
+ return value;
677
+ }
678
+ else {
679
+ return this.toNumber - this.minRangeNumber;
680
+ }
681
+ }
682
+ /**
683
+ * Handle 'To' value on drag out of boundary.
684
+ * @param value value to change
685
+ * @returns validated to value.
686
+ */
687
+ validateTo(value) {
688
+ const valueTo = value - this.minRangeNumber;
689
+ if (valueTo > this.fromNumber && valueTo <= this.maxNumber) {
690
+ return value;
691
+ }
692
+ else {
693
+ return this.fromNumber + this.minRangeNumber;
694
+ }
695
+ }
696
+ /**
697
+ * Calculate the nearest interval
698
+ * @param thumbPosition thumb position dragging on slider
699
+ * @returns position step on slider
700
+ */
701
+ calculateStep(thumbPosition) {
702
+ const stepSize = this.calculatePercentage(this.minNumber + this.stepUse) / 100;
703
+ // calculate step to current point to next point
704
+ const posToFixStep = Math.round(thumbPosition / stepSize) * stepSize;
705
+ if (thumbPosition <= posToFixStep + (stepSize / 2)) {
706
+ if (posToFixStep <= 1) {
707
+ return posToFixStep;
708
+ }
709
+ else {
710
+ return posToFixStep - stepSize;
711
+ }
712
+ }
713
+ else {
714
+ return posToFixStep + stepSize;
715
+ }
716
+ }
717
+ /**
718
+ * Calculate value by percentage
719
+ * @param percentage percentage to be calculated
720
+ * @returns calculated value
721
+ */
722
+ calculateValue(percentage) {
723
+ const value = this.minNumber + percentage * (this.maxNumber - this.minNumber);
724
+ // if value is outside boundary, set to boundary
725
+ if (value >= this.maxNumber) {
726
+ return this.maxNumber;
727
+ }
728
+ else if (value <= this.minNumber) {
729
+ return this.minNumber;
730
+ }
731
+ else {
732
+ return value;
733
+ }
734
+ }
735
+ /**
736
+ * Format value to display in both integer and fraction cases
737
+ * @param value value before use display
738
+ * @returns formatted value
739
+ */
740
+ displayValue(value) {
741
+ if (this.isDecimalNumber(value)) {
742
+ const valueDecimalCount = this.countDecimals(value);
743
+ // return value decimal by a boundary of max decimal
744
+ if (valueDecimalCount > this.decimalPlaces) {
745
+ return value.toFixed(this.decimalPlaces);
746
+ }
747
+ else {
748
+ return value.toString();
749
+ }
750
+ }
751
+ else {
752
+ return value.toString();
753
+ }
754
+ }
755
+ /**
756
+ * Value observer
757
+ * @returns {void}
758
+ */
759
+ onValueChange() {
760
+ if (this.readonly) {
761
+ const valuePercent = this.calculatePercentage(Number(this.value)) / 100;
762
+ const closestStep = this.calculateStep(valuePercent);
763
+ const thumbLeft = this.stepUse !== 0 ? closestStep : valuePercent;
764
+ const calStepValue = this.calculateValue(thumbLeft);
765
+ this.value = this.displayValue(calStepValue);
766
+ }
767
+ else {
768
+ const valueSanitize = Number(this.sanitizeNumber(Number(this.value), 0));
769
+ if (this.isValueInBoundary(valueSanitize, '')) {
770
+ this.value = this.displayValue(valueSanitize);
771
+ }
772
+ else {
773
+ // if value is outside boundary, set to boundary
774
+ if (valueSanitize < this.minNumber) {
775
+ this.value = this.min;
776
+ }
777
+ if (valueSanitize > this.maxNumber) {
778
+ this.value = this.max;
779
+ }
780
+ }
781
+ }
782
+ }
783
+ /**
784
+ * From value observer
785
+ * @returns {void}
786
+ */
787
+ onValueChangeFrom() {
788
+ const valueFrom = Number(this.sanitizeNumber(this.fromNumber, 0));
789
+ if (this.isValueInBoundary(valueFrom, 'from')) {
790
+ this.from = this.displayValue(this.fromNumber);
791
+ }
792
+ else {
793
+ // if value is outside boundary, set to boundary
794
+ if (valueFrom < this.minNumber) {
795
+ this.from = this.min;
796
+ }
797
+ if (valueFrom > this.toNumber) {
798
+ this.from = this.to;
799
+ }
800
+ if (this.minRangeNumber) {
801
+ const distanceFromTo = Math.abs(this.toNumber - this.fromNumber);
802
+ const distanceMin = this.toNumber - this.minRangeNumber;
803
+ if (this.minRangeNumber > distanceFromTo && distanceMin > this.minNumber) {
804
+ this.from = distanceMin.toString();
805
+ }
806
+ }
807
+ }
808
+ }
809
+ /**
810
+ * Return fallback number of the value is invalid
811
+ * @param value value for checking
812
+ * @param fallbackValue fallback value when value is not number;
813
+ * @returns sanitized number
814
+ */
815
+ sanitizeNumber(value, fallbackValue) {
816
+ let val;
817
+ if (this.isNumberValue(value) && typeof value === 'number') {
818
+ val = value.toString();
819
+ }
820
+ else {
821
+ val = fallbackValue;
822
+ }
823
+ return val.toString();
824
+ }
825
+ /**
826
+ * Check if value is number
827
+ * @param value value for checking
828
+ * @returns true if value is numeric
829
+ */
830
+ isNumberValue(value) {
831
+ return !isNaN(value) && !isNaN(Number(value));
832
+ }
833
+ /**
834
+ * Check if value is inside min / max boundary
835
+ * @param value value is checking
836
+ * @param valueFor notation variable binding if range === true
837
+ * @returns true if value and step inside a boundary
838
+ */
839
+ isValueInBoundary(value, valueFor) {
840
+ if (this.minNumber < this.maxNumber) {
841
+ // Check if value is in range
842
+ if (this.range) {
843
+ if (valueFor === 'to') {
844
+ if (value < (this.fromNumber + this.minRangeNumber) || value > this.maxNumber) {
845
+ return false;
846
+ }
847
+ }
848
+ else if (value < this.minNumber || value > (this.toNumber - this.minRangeNumber)) {
849
+ return false;
850
+ }
851
+ }
852
+ else if (value < this.minNumber || value > this.maxNumber) {
853
+ return false;
854
+ }
855
+ // check step min and max in range
856
+ if (this.stepUse < this.minNumber || this.stepUse > this.maxNumber) {
857
+ return true;
858
+ }
859
+ }
860
+ return true;
861
+ }
862
+ /**
863
+ * To value observer
864
+ * @returns {void}
865
+ */
866
+ onValueChangeTo() {
867
+ const valueTo = Number(this.sanitizeNumber(this.toNumber, 0));
868
+ if (this.isValueInBoundary(valueTo, 'to')) {
869
+ this.to = this.displayValue(valueTo);
870
+ }
871
+ else {
872
+ // if value is outside boundary, set to boundary
873
+ if (valueTo < this.fromNumber) {
874
+ this.to = this.from;
875
+ }
876
+ if (valueTo > this.maxNumber) {
877
+ this.to = this.max;
878
+ }
879
+ if (this.minRangeNumber) {
880
+ const distanceFromTo = Math.abs(this.toNumber - this.fromNumber);
881
+ const distanceMax = this.fromNumber + this.minRangeNumber;
882
+ if (this.minRangeNumber > distanceFromTo && distanceMax < this.maxNumber) {
883
+ this.to = distanceMax.toString();
884
+ }
885
+ }
886
+ }
887
+ }
888
+ /**
889
+ * Step observer
890
+ * @returns {void}
891
+ */
892
+ onStepChange() {
893
+ this.step = this.sanitizeNumber(this.stepNumber, 1);
894
+ this.stepUse = this.calculateStepRange(this.stepNumber);
895
+ // Set decimal places value when step is decimal
896
+ this.updateDecimalPlaces();
897
+ }
898
+ /**
899
+ * Min range observer
900
+ * @returns {void}
901
+ */
902
+ onMinRangeChange() {
903
+ const valueMinRange = Math.abs(Number(this.sanitizeNumber(this.minRangeNumber, 0)));
904
+ const maximumRangeMinMax = Math.abs(this.maxNumber - this.minNumber);
905
+ const maximumRangeFromTo = Math.abs(this.toNumber - this.fromNumber);
906
+ if (valueMinRange && valueMinRange >= this.stepNumber) {
907
+ if (valueMinRange <= maximumRangeMinMax && valueMinRange <= maximumRangeFromTo) {
908
+ this.minRange = valueMinRange.toString();
909
+ }
910
+ else {
911
+ this.minRange = maximumRangeMinMax.toString();
912
+ this.from = this.min;
913
+ this.to = this.max;
914
+ }
915
+ }
916
+ else {
917
+ // Reset min-range when min-range less step
918
+ this.minRange = '0';
919
+ }
920
+ }
921
+ /**
922
+ * Min observer
923
+ * @param oldValue old value of min property
924
+ * @returns {void}
925
+ */
926
+ onMinChange(oldValue) {
927
+ this.min = this.sanitizeNumber(this.minNumber, 0);
928
+ // Set decimal places value when min is decimal
929
+ this.updateDecimalPlaces();
930
+ if (this.minNumber > this.maxNumber) {
931
+ this.min = this.max;
932
+ }
933
+ else if (this.range) {
934
+ if (this.minNumber <= this.toNumber - this.minRangeNumber) {
935
+ this.from = clamp(this.fromNumber, this.minNumber, this.toNumber);
936
+ }
937
+ else if (oldValue) {
938
+ this.min = oldValue;
939
+ }
940
+ }
941
+ else {
942
+ this.value = clamp(this.valueNumber, this.minNumber, this.maxNumber);
943
+ }
944
+ }
945
+ /**
946
+ * Max observer
947
+ * @param oldValue old value of max property
948
+ * @returns {void}
949
+ */
950
+ onMaxChange(oldValue) {
951
+ this.max = this.sanitizeNumber(this.maxNumber, 100);
952
+ if (this.maxNumber < this.minNumber) {
953
+ this.max = this.min;
954
+ }
955
+ else if (this.range) {
956
+ if (this.maxNumber >= this.fromNumber + this.minRangeNumber) {
957
+ this.to = clamp(this.toNumber, this.fromNumber, this.maxNumber);
958
+ }
959
+ else if (oldValue) {
960
+ this.max = oldValue;
961
+ }
962
+ }
963
+ else {
964
+ this.value = clamp(this.valueNumber, this.minNumber, this.maxNumber);
965
+ }
966
+ }
967
+ /**
968
+ * Implement `render` Track template.
969
+ * @param range show range slider
970
+ * @returns Track template
971
+ */
972
+ renderTrackWrapper(range) {
973
+ const stepContainerSize = this.calculatePercentage(this.minNumber + this.stepNumber);
974
+ const translateX = (stepContainerSize / 2);
975
+ const stepsStyle = { transform: `translateX(${translateX}%)`, backgroundSize: `${stepContainerSize}% 100%` };
976
+ const stepContainerStyle = { transform: `translateX(-${translateX}%)` };
977
+ const trackFillStyle = range
978
+ ? { width: `${this.calculatePercentage(this.toNumber) - this.calculatePercentage(this.fromNumber)}%`, left: `${this.calculatePercentage(this.fromNumber)}%` }
979
+ : { width: `${this.calculatePercentage(Number(this.value))}%` };
980
+ return html `
981
+ <div part="track-wrapper" id="trackWrapper">
982
+ <div part="track-fill" id="trackFill" style=${styleMap(trackFillStyle)}></div>
983
+ <div part="step-container" id="stepContainer" style=${styleMap(stepContainerStyle)}>
984
+ <div part="step" id="steps" style=${styleMap(stepsStyle)}></div>
985
+ </div>
986
+ </div>
987
+ `;
988
+ }
989
+ /**
990
+ * Implement `render` Thumb template.
991
+ * @param value thumb value in track
992
+ * @param percentageValue thumb position in track
993
+ * @param name name of active thumb
994
+ * @returns Track template
995
+ */
996
+ renderThumb(value, percentageValue, name) {
997
+ const thumbStyle = { left: `${percentageValue}%` };
998
+ return html `
999
+ <div part="thumb-container" name=${name} id="thumbContainer" style=${styleMap(thumbStyle)}>
1000
+ <div part="pin">
1001
+ <span id="pinMarker" part="pin-value-marker">${value}</span></div>
1002
+ <div part="thumb" draggable="true" id="thumb"></div>
1003
+ </div>
1004
+ `;
1005
+ }
1006
+ /**
1007
+ * Implement `render` Thumb has range template.
1008
+ * @param from thumb value start in track
1009
+ * @param to thumb value end in track
1010
+ * @returns Thumb has range template
1011
+ */
1012
+ renderThumbRange(from, to) {
1013
+ const fromPercentageValue = this.calculatePercentage(from);
1014
+ const toPercentageValue = this.calculatePercentage(to);
1015
+ return html `
1016
+ ${this.renderThumb(from, fromPercentageValue, 'from')}
1017
+ ${this.renderThumb(to, toPercentageValue, 'to')}
1018
+ `;
1019
+ }
1020
+ /**
1021
+ * Implement `render` number field has template.
1022
+ * @param value value in the slider for binding in the input value
1023
+ * @param name name input value
1024
+ * @returns {TemplateResult} number field template
1025
+ */
1026
+ renderNumberField(value, name) {
1027
+ return html `
1028
+ <ef-number-field
1029
+ @blur=${this.onBlur}
1030
+ @keydown=${this.onKeydown}
1031
+ part="input"
1032
+ name="${name}"
1033
+ no-spinner
1034
+ .value="${value}"
1035
+ min="${this.min}"
1036
+ max="${this.max}"
1037
+ step="${this.step}"
1038
+ ?disabled="${this.disabled}"
1039
+ ?readonly="${this.readonly || this.showInputField === 'readonly'}"
1040
+ ></ef-number-field>
1041
+ `;
1042
+ }
1043
+ /**
1044
+ * Define styles in a tagged template literal, using the css tag function.
1045
+ * @returns CSS template
1046
+ */
1047
+ static get styles() {
1048
+ return css `
1049
+ :host {
1050
+ display: flex;
1051
+ }
1052
+ [part=slider-wrapper] {
1053
+ position: relative;
1054
+ width: 100%;
1055
+ }
1056
+ [part=slider] {
1057
+ width: 100%;
1058
+ height: 100%;
1059
+ display: inline-block;
1060
+ }
1061
+ :host(:not([disabled]):focus){
1062
+ outline:none;
1063
+ }
1064
+ :host([show-steps]) [part=track-wrapper]::after {
1065
+ display:block;
1066
+ position: absolute;
1067
+ content: "";
1068
+ right: 0;
1069
+ }
1070
+ [part=track-wrapper]{
1071
+ content: "";
1072
+ position: absolute;
1073
+ width: 100%;
1074
+ top: 50%;
1075
+ left: 0;
1076
+ pointer-events: none;
1077
+ }
1078
+ [part=thumb-container]{
1079
+ position: absolute;
1080
+ top: 0;
1081
+ width: 100%;
1082
+ z-index: 5;
1083
+ }
1084
+ [part=thumb]{
1085
+ position: absolute;
1086
+ margin: 0 auto;
1087
+ }
1088
+ [part=pin]{
1089
+ display: flex;
1090
+ position: absolute;
1091
+ align-items: center;
1092
+ justify-content: center;
1093
+ z-index: 1;
1094
+ }
1095
+ :host([show-steps]) [part=step-container]{
1096
+ position: absolute;
1097
+ left: 0;
1098
+ width: 100%;
1099
+ }
1100
+ :host([show-steps]) [part=step]{
1101
+ width: 100%;
1102
+ position: absolute;
1103
+ left: 0;
1104
+ }
1105
+ [part=track-fill]{
1106
+ z-index: 2;
1107
+ content: "";
1108
+ position: absolute;
1109
+ left: 0;
1110
+ }
1111
+ :host([show-steps][step="0"]) [part=track-wrapper]::after{
1112
+ width: 0;
1113
+ }
1114
+ `;
1115
+ }
1116
+ /**
1117
+ * Implement `render` slider template.
1118
+ * @returns Slider template
1119
+ */
1120
+ render() {
1121
+ return html `
1122
+ ${this.range && this.isShowInputField ? this.renderNumberField(this.from, 'from') : null}
1123
+ <div part="slider-wrapper">
1124
+ <div part="slider">
1125
+ ${this.renderTrackWrapper(this.range)}
1126
+ ${this.range ? this.renderThumbRange(this.fromNumber, this.toNumber) : this.renderThumb(this.valueNumber, this.calculatePercentage(Number(this.value)), 'value')}
1127
+ </div>
1128
+ </div>
1129
+ ${this.range && this.isShowInputField ? this.renderNumberField(this.to, 'to') : null}
1130
+ ${!this.range && this.isShowInputField ? this.renderNumberField(this.value, 'value') : null}
1131
+ `;
1132
+ }
1133
+ };
1134
+ __decorate([
1135
+ property({ type: String })
1136
+ ], Slider.prototype, "step", void 0);
1137
+ __decorate([
1138
+ property({ type: String })
1139
+ ], Slider.prototype, "min", void 0);
1140
+ __decorate([
1141
+ property({ type: String })
1142
+ ], Slider.prototype, "max", void 0);
1143
+ __decorate([
1144
+ property({ type: String })
1145
+ ], Slider.prototype, "from", void 0);
1146
+ __decorate([
1147
+ property({ type: String })
1148
+ ], Slider.prototype, "to", void 0);
1149
+ __decorate([
1150
+ property({ type: Boolean, reflect: true })
1151
+ ], Slider.prototype, "pin", void 0);
1152
+ __decorate([
1153
+ property({ type: Boolean, reflect: true })
1154
+ ], Slider.prototype, "range", void 0);
1155
+ __decorate([
1156
+ property({ type: Boolean, reflect: true, attribute: 'show-steps' })
1157
+ ], Slider.prototype, "showSteps", void 0);
1158
+ __decorate([
1159
+ property({ type: String, reflect: true, attribute: 'show-input-field' })
1160
+ ], Slider.prototype, "showInputField", void 0);
1161
+ __decorate([
1162
+ property({ type: String, attribute: 'min-range' })
1163
+ ], Slider.prototype, "minRange", void 0);
1164
+ __decorate([
1165
+ query('[part="slider"]')
1166
+ ], Slider.prototype, "slider", void 0);
1167
+ __decorate([
1168
+ query('#trackWrapper')
1169
+ ], Slider.prototype, "trackWrapper", void 0);
1170
+ __decorate([
1171
+ query('#thumbContainer')
1172
+ ], Slider.prototype, "thumbContainer", void 0);
1173
+ __decorate([
1174
+ query('ef-number-field[name=value]')
1175
+ ], Slider.prototype, "valueInput", void 0);
1176
+ __decorate([
1177
+ query('ef-number-field[name=from]')
1178
+ ], Slider.prototype, "fromInput", void 0);
1179
+ __decorate([
1180
+ query('ef-number-field[name=to]')
1181
+ ], Slider.prototype, "toInput", void 0);
1182
+ Slider = __decorate([
1183
+ customElement('ef-slider', {
1184
+ alias: 'coral-slider'
1185
+ })
1186
+ ], Slider);
1187
+ export { Slider };