@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,775 @@
1
+ import { __decorate } from "tslib";
2
+ import { ControlElement, html, css } from '@refinitiv-ui/core';
3
+ import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
4
+ import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
5
+ import { query } from '@refinitiv-ui/core/lib/decorators/query.js';
6
+ import { VERSION } from '../version.js';
7
+ import { isValidTime, toTimeSegment, TimeFormat, getFormat, format, isAM, isPM, MILLISECONDS_IN_SECOND, MILLISECONDS_IN_MINUTE, MILLISECONDS_IN_HOUR, addOffset, padNumber } from '@refinitiv-ui/utils/lib/date.js';
8
+ import '../number-field/index.js';
9
+ var Segment;
10
+ (function (Segment) {
11
+ Segment["HOURS"] = "hours";
12
+ Segment["MINUTES"] = "minutes";
13
+ Segment["SECONDS"] = "seconds";
14
+ })(Segment || (Segment = {}));
15
+ const MIN_UNIT = 0;
16
+ const MAX_HOURS = 23;
17
+ const MAX_MINUTES = 59;
18
+ const MAX_SECONDS = 59;
19
+ const HOURS_IN_DAY = 24;
20
+ const HOURS_OF_NOON = 12;
21
+ const Placeholder = {
22
+ HOURS: '--',
23
+ MINUTES: '--',
24
+ SECONDS: '--'
25
+ };
26
+ /**
27
+ * Control the time input
28
+ * @event value-changed - Dispatched when value changes
29
+ *
30
+ * @attr {boolean} readonly - Set readonly state
31
+ * @prop {boolean} [readonly=false] - Set readonly state
32
+ *
33
+ * @attr {boolean} disabled - Set disabled state
34
+ * @prop {boolean} [disabled=false] - Set disabled state
35
+ */
36
+ let TimePicker = class TimePicker extends ControlElement {
37
+ constructor() {
38
+ super(...arguments);
39
+ this.isMobile = false;
40
+ /**
41
+ * Internal hours value, used only in value getters and setters
42
+ */
43
+ this._hours = null;
44
+ /**
45
+ * Internal minutes value, used only in value getters and setters
46
+ */
47
+ this._minutes = null;
48
+ /**
49
+ * Internal seconds value, used only in value getters and setters
50
+ */
51
+ this._seconds = null;
52
+ /**
53
+ * If external value is set with seconds, this flag is true.
54
+ * The flag is not relevant when withSecond is forced to be true
55
+ */
56
+ this.valueWithSeconds = false;
57
+ /**
58
+ * Toggles 12hr time display
59
+ */
60
+ this.amPm = false;
61
+ /**
62
+ * Flag to show seconds time segment in display.
63
+ * Seconds are automatically shown when `hh:mm:ss` time format is provided as a value.
64
+ */
65
+ this.showSeconds = false;
66
+ /**
67
+ * Handles the blur event of any inputs
68
+ *
69
+ * @param event Event Object
70
+ * @returns {void}
71
+ */
72
+ this.onBlur = (event) => {
73
+ if (this.readonly) {
74
+ return;
75
+ }
76
+ const target = event.target;
77
+ const value = target.value;
78
+ let segment;
79
+ if (target === this.hoursInput) {
80
+ segment = Segment.HOURS;
81
+ }
82
+ else if (target === this.minutesInput) {
83
+ segment = Segment.MINUTES;
84
+ }
85
+ else if (target === this.secondsInput) {
86
+ segment = Segment.SECONDS;
87
+ }
88
+ /* istanbul ignore next */
89
+ if (!segment) {
90
+ return;
91
+ }
92
+ if (value) {
93
+ this.updateTimeSegmentTo(segment, Number(value));
94
+ }
95
+ this.updateSegmentValue(segment);
96
+ };
97
+ /**
98
+ * Handles the focus event of any inputs
99
+ *
100
+ * @param event Event Object
101
+ * @returns {void}
102
+ */
103
+ this.onFocus = (event) => {
104
+ if (this.readonly) {
105
+ return;
106
+ }
107
+ event.target.value = '';
108
+ };
109
+ /**
110
+ * Handles any keydown events
111
+ * Used for control keys
112
+ *
113
+ * @param event Event Object
114
+ * @returns {void}
115
+ */
116
+ this.onKeydown = (event) => {
117
+ this.manageControlKeys(event);
118
+ };
119
+ }
120
+ /**
121
+ * Element version number
122
+ * @returns version number
123
+ */
124
+ static get version() {
125
+ return VERSION;
126
+ }
127
+ /**
128
+ * Hours time segment in 24hr format
129
+ * @param hours hours value
130
+ * @returns {void}
131
+ */
132
+ set hours(hours) {
133
+ const oldHours = this.hours;
134
+ if ((hours !== null && isNaN(hours)) || oldHours === hours) {
135
+ return;
136
+ }
137
+ this._hours = this.validUnit(hours, MIN_UNIT, MAX_HOURS, oldHours);
138
+ if (this._hours !== oldHours) {
139
+ this.requestUpdate('hours', oldHours);
140
+ }
141
+ }
142
+ /**
143
+ * Get hours value
144
+ * @returns hours
145
+ */
146
+ get hours() {
147
+ return this._hours;
148
+ }
149
+ /**
150
+ * Minutes time segment
151
+ * @param minutes minutes value
152
+ * @returns {void}
153
+ */
154
+ set minutes(minutes) {
155
+ const oldMinutes = this.minutes;
156
+ if ((minutes !== null && isNaN(minutes)) || oldMinutes === minutes) {
157
+ return;
158
+ }
159
+ this._minutes = this.validUnit(minutes, MIN_UNIT, MAX_MINUTES, oldMinutes);
160
+ if (this._minutes !== oldMinutes) {
161
+ this.requestUpdate('minutes', oldMinutes);
162
+ }
163
+ }
164
+ /**
165
+ * Get minutes value
166
+ * @returns hours
167
+ */
168
+ get minutes() {
169
+ return this._minutes;
170
+ }
171
+ /**
172
+ * Seconds time segment
173
+ * @param seconds seconds value
174
+ * @returns {void}
175
+ */
176
+ set seconds(seconds) {
177
+ const oldSeconds = this.seconds;
178
+ if ((seconds !== null && isNaN(seconds)) || oldSeconds === seconds) {
179
+ return;
180
+ }
181
+ this._seconds = this.validUnit(seconds, MIN_UNIT, MAX_SECONDS, oldSeconds);
182
+ if (this._seconds !== oldSeconds) {
183
+ this.requestUpdate('seconds', oldSeconds);
184
+ }
185
+ }
186
+ /**
187
+ * Get seconds value
188
+ * @returns seconds
189
+ */
190
+ get seconds() {
191
+ return this._seconds;
192
+ }
193
+ /**
194
+ * Value of the element
195
+ * @default -
196
+ * @param value Element value
197
+ */
198
+ set value(value) {
199
+ const oldValue = this.value;
200
+ value = this.castValue(value);
201
+ if (!this.isValidValue(value)) {
202
+ this.warnInvalidValue(value);
203
+ // it does not make sense to clear value here, as the value is always defined
204
+ return;
205
+ }
206
+ /* special case to reset hours, minutes and seconds */
207
+ if (value === '' && (this.hours || this.minutes || this.seconds)) {
208
+ this.hours = null;
209
+ this.minutes = null;
210
+ this.seconds = null;
211
+ return;
212
+ }
213
+ if (oldValue !== value) { /** never store actual value, instead operate with hours/minutes/seconds */
214
+ const info = toTimeSegment(value);
215
+ const format = getFormat(value);
216
+ this.valueWithSeconds = format === TimeFormat.HHmmss || format === TimeFormat.HHmmssSSS;
217
+ this.hours = info.hours;
218
+ this.minutes = info.minutes;
219
+ this.seconds = info.seconds;
220
+ }
221
+ }
222
+ get value() {
223
+ if (this.hours === null || this.minutes === null || (this.isShowSeconds && this.seconds === null)) {
224
+ return '';
225
+ }
226
+ return this.currentTimeString;
227
+ }
228
+ /**
229
+ * Return the current time string, based on the current hours, minutes and seconds.
230
+ * Used internally to set the value string after updates.
231
+ */
232
+ get currentTimeString() {
233
+ return format({
234
+ hours: this.hours || 0,
235
+ minutes: this.minutes || 0,
236
+ seconds: this.seconds || 0,
237
+ milliseconds: 0
238
+ }, this.isShowSeconds ? TimeFormat.HHmmss : TimeFormat.HHmm);
239
+ }
240
+ /**
241
+ * Seconds are automatically shown when `hh:mm:ss` time format is provided as a value.
242
+ */
243
+ get isShowSeconds() {
244
+ return this.showSeconds || this.valueWithSeconds;
245
+ }
246
+ /**
247
+ * Formats the hours value
248
+ */
249
+ get formattedHours() {
250
+ const _hours = this.hours;
251
+ let hours = _hours;
252
+ if (_hours !== null) {
253
+ hours = this.amPm && _hours > HOURS_OF_NOON
254
+ ? _hours - HOURS_OF_NOON : this.amPm && !_hours ? HOURS_OF_NOON : _hours;
255
+ }
256
+ return this.formattedUnit(hours);
257
+ }
258
+ /**
259
+ * Formats the minutes value
260
+ */
261
+ get formattedMinutes() {
262
+ return this.formattedUnit(this.minutes);
263
+ }
264
+ /**
265
+ * Formats the seconds value
266
+ * @returns Formatted number
267
+ */
268
+ get formattedSeconds() {
269
+ return this.formattedUnit(this.seconds);
270
+ }
271
+ /**
272
+ * On first updated life-cycle
273
+ *
274
+ * @param changedProperties changed properties
275
+ * @returns {void}
276
+ */
277
+ firstUpdated(changedProperties) {
278
+ super.firstUpdated(changedProperties);
279
+ // add events
280
+ this.renderRoot.addEventListener('blur', this.onBlur, true);
281
+ this.renderRoot.addEventListener('focus', this.onFocus, true);
282
+ this.renderRoot.addEventListener('keydown', this.onKeydown, true);
283
+ }
284
+ /**
285
+ * On updated life-cycle
286
+ *
287
+ * @param changedProperties changed properties
288
+ * @returns {void}
289
+ */
290
+ updated(changedProperties) {
291
+ super.updated(changedProperties);
292
+ /* istanbul ignore next */
293
+ if (this.hasTimeChanged(changedProperties) && this.isMobile) {
294
+ this.updateMobileTimePickerValue();
295
+ }
296
+ }
297
+ /**
298
+ * Overwrite validation method for value
299
+ *
300
+ * @param value value
301
+ * @returns {boolean} result
302
+ */
303
+ isValidValue(value) {
304
+ return value === '' || isValidTime(value);
305
+ }
306
+ /**
307
+ * Set time segment value in consistent way
308
+ * @param segment Time segment
309
+ * @param value Value to check
310
+ * @returns {void}
311
+ */
312
+ setSegmentAndNotify(segment, value) {
313
+ const oldValue = this.value;
314
+ switch (segment) {
315
+ case Segment.HOURS:
316
+ this.hours = value;
317
+ break;
318
+ case Segment.MINUTES:
319
+ this.minutes = value;
320
+ break;
321
+ case Segment.SECONDS:
322
+ this.seconds = value;
323
+ break;
324
+ // no default
325
+ }
326
+ // Pre-populate empty segments
327
+ if (value !== null) {
328
+ if (segment === Segment.HOURS && this.minutes === null) {
329
+ this.minutes = 0;
330
+ }
331
+ if (this.isShowSeconds && this.seconds === null && (segment === Segment.HOURS || segment === Segment.MINUTES)) {
332
+ this.seconds = 0;
333
+ }
334
+ }
335
+ // verify value again, as time segment validation
336
+ // might fail in setter and previous value returned
337
+ if (oldValue !== this.value) {
338
+ this.notifyPropertyChange('value', this.value);
339
+ }
340
+ }
341
+ /**
342
+ * True if time segment has changed
343
+ * @param changedProperties changed properties
344
+ * @returns True if changed
345
+ */
346
+ hasTimeChanged(changedProperties) {
347
+ return changedProperties.has('hours')
348
+ || changedProperties.has('minutes')
349
+ || changedProperties.has('seconds');
350
+ }
351
+ /**
352
+ * Validates a given unit against a min and max value, returning a fallback if invalid.
353
+ *
354
+ * @param unit Unit to validate
355
+ * @param min Minimum allowed
356
+ * @param max Maximum allowed
357
+ * @param fallback Fallback value to use, if unit is invalid
358
+ * @returns unit or fallback or 0 value
359
+ */
360
+ validUnit(unit, min, max, fallback) {
361
+ if (unit === null) {
362
+ return null;
363
+ }
364
+ if (isNaN(unit) || unit < min || unit > max) {
365
+ return fallback;
366
+ }
367
+ return unit;
368
+ }
369
+ /**
370
+ * Handles value change from native time picker on mobile devices
371
+ *
372
+ * @param event Event Object
373
+ * @returns {void}
374
+ */
375
+ /* istanbul ignore next */
376
+ onMobileTimeChange(event) {
377
+ this.value = event.target.value;
378
+ }
379
+ /**
380
+ * Helper, used to update the mobile time picker value
381
+ *
382
+ * @returns {void}
383
+ */
384
+ /* istanbul ignore next */
385
+ updateMobileTimePickerValue() {
386
+ if (this.mtpInput) {
387
+ this.mtpInput.value = this.value;
388
+ }
389
+ }
390
+ /**
391
+ * Updates a time segment to the provided value
392
+ *
393
+ * @param segment Segment id
394
+ * @param value Unit to change to
395
+ * @returns {void}
396
+ */
397
+ updateTimeSegmentTo(segment, value) {
398
+ if (segment === Segment.HOURS) {
399
+ value = this.getHoursSegment(value);
400
+ }
401
+ this.setSegmentAndNotify(segment, value);
402
+ }
403
+ /**
404
+ * Updates the value of a time segment (element)
405
+ *
406
+ * @param segment Segment's name
407
+ * @returns {void}
408
+ */
409
+ updateSegmentValue(segment) {
410
+ switch (segment) {
411
+ case Segment.HOURS:
412
+ this.updateHoursSegmentValue();
413
+ break;
414
+ case Segment.MINUTES:
415
+ this.updateMinutesSegmentValue();
416
+ break;
417
+ case Segment.SECONDS:
418
+ this.updateSecondsSegmentValue();
419
+ break;
420
+ // no default
421
+ }
422
+ }
423
+ /**
424
+ * Handle valid control keys and execute their corresponding commands
425
+ * Will stop when readonly is set
426
+ *
427
+ * @param event Event Object
428
+ * @returns {void}
429
+ */
430
+ manageControlKeys(event) {
431
+ if (this.readonly || this.disabled) {
432
+ return;
433
+ }
434
+ switch (event.key) {
435
+ case 'Up': // IE
436
+ case 'ArrowUp':
437
+ this.handleUpKey(event);
438
+ break;
439
+ case 'Down': // IE
440
+ case 'ArrowDown':
441
+ this.handleDownKey(event);
442
+ break;
443
+ case 'Enter':
444
+ case 'Spacebar':
445
+ case ' ':
446
+ this.handleEnterKey(event);
447
+ break;
448
+ case 'Backspace':
449
+ this.handleBackspaceKey(event);
450
+ return;
451
+ default:
452
+ return;
453
+ }
454
+ event.preventDefault();
455
+ }
456
+ /**
457
+ * Handles ENTER key press
458
+ *
459
+ * @param event Event Object
460
+ * @returns {void}
461
+ */
462
+ handleEnterKey(event) {
463
+ event.target.blur();
464
+ }
465
+ /**
466
+ * Handles UP key press
467
+ *
468
+ * @param event Event Object
469
+ * @returns {void}
470
+ */
471
+ handleUpKey(event) {
472
+ this.toggleOrModify(1, event.target);
473
+ }
474
+ /**
475
+ * Handle DOWN key press
476
+ *
477
+ * @param event Event Object
478
+ * @returns {void}
479
+ */
480
+ handleDownKey(event) {
481
+ this.toggleOrModify(-1, event.target);
482
+ }
483
+ /**
484
+ * Handle Backspace key press
485
+ *
486
+ * @param event Event Object
487
+ * @returns {void}
488
+ */
489
+ handleBackspaceKey(event) {
490
+ const target = event.target;
491
+ if (target === this.hoursInput) {
492
+ this.setSegmentAndNotify(Segment.HOURS, null);
493
+ }
494
+ else if (target === this.minutesInput) {
495
+ this.setSegmentAndNotify(Segment.MINUTES, null);
496
+ }
497
+ else if (target === this.secondsInput) {
498
+ this.setSegmentAndNotify(Segment.SECONDS, null);
499
+ }
500
+ }
501
+ /**
502
+ * Toggles the amPm flag or updates the time segment value.
503
+ * Essentially a handler for user inputs on the control.
504
+ *
505
+ * @param amount to change value by
506
+ * @param target Segment id
507
+ * @returns {void}
508
+ */
509
+ toggleOrModify(amount, target) {
510
+ if (target === this.toggleEl) {
511
+ this.toggle();
512
+ }
513
+ else if (target === this.hoursInput) {
514
+ this.changeValueBy(amount, Segment.HOURS);
515
+ }
516
+ else if (target === this.minutesInput) {
517
+ this.changeValueBy(amount, Segment.MINUTES);
518
+ }
519
+ else if (target === this.secondsInput) {
520
+ this.changeValueBy(amount, Segment.SECONDS);
521
+ }
522
+ }
523
+ /**
524
+ * Changes a time segment value by a specified amount.
525
+ * Also updates parent values when rolling through cycles.
526
+ *
527
+ * @param amount Amount to change by
528
+ * @param segment Segment id
529
+ * @returns {void}
530
+ */
531
+ changeValueBy(amount, segment) {
532
+ let offset = 0;
533
+ switch (segment) {
534
+ case Segment.HOURS:
535
+ offset = this.hours === null ? 0 : amount * MILLISECONDS_IN_HOUR;
536
+ break;
537
+ case Segment.MINUTES:
538
+ offset = this.minutes === null ? 0 : amount * MILLISECONDS_IN_MINUTE;
539
+ break;
540
+ case Segment.SECONDS:
541
+ offset = this.seconds === null ? 0 : amount * MILLISECONDS_IN_SECOND;
542
+ break;
543
+ // no default
544
+ }
545
+ const value = addOffset(this.currentTimeString, offset);
546
+ this.setValueAndNotify(value);
547
+ }
548
+ /**
549
+ * Gets the hours segment of the provided value
550
+ * as there is extra logic required for 12hr support
551
+ *
552
+ * @param value Unit to change to
553
+ * @returns updated value
554
+ */
555
+ getHoursSegment(value) {
556
+ if (this.amPm) {
557
+ if (value === HOURS_OF_NOON && this.isAM()) {
558
+ value = 0;
559
+ }
560
+ if (this.isPM() && value < HOURS_OF_NOON) {
561
+ value += HOURS_OF_NOON;
562
+ }
563
+ }
564
+ return value;
565
+ }
566
+ /**
567
+ * Updates the value of the hours element
568
+ *
569
+ * @returns {void}
570
+ */
571
+ updateHoursSegmentValue() {
572
+ if (this.hoursInput) {
573
+ this.hoursInput.value = this.formattedHours;
574
+ }
575
+ }
576
+ /**
577
+ * Updated the value of the minutes element
578
+ *
579
+ * @returns {void}
580
+ */
581
+ updateMinutesSegmentValue() {
582
+ if (this.minutesInput) {
583
+ this.minutesInput.value = this.formattedMinutes;
584
+ }
585
+ }
586
+ /**
587
+ * Updates the value of the seconds element
588
+ *
589
+ * @returns {void}
590
+ */
591
+ updateSecondsSegmentValue() {
592
+ if (this.secondsInput) {
593
+ this.secondsInput.value = this.formattedSeconds;
594
+ }
595
+ }
596
+ /**
597
+ * Formats a given number and prefixes a 0 on numbers lower than 10
598
+ *
599
+ * @param n Number to format
600
+ * @returns Formatted number
601
+ */
602
+ formattedUnit(n) {
603
+ return n === null ? '' : padNumber(n, 2);
604
+ }
605
+ /**
606
+ * Returns `true` or `false` depending on whether the hours are before, or, after noon
607
+ *
608
+ * @returns Result
609
+ */
610
+ isAM() {
611
+ return isAM(this.currentTimeString);
612
+ }
613
+ /**
614
+ * Returns opposite of isAM
615
+ *
616
+ * @returns Result
617
+ */
618
+ isPM() {
619
+ return isPM(this.currentTimeString);
620
+ }
621
+ /**
622
+ * Toggles the AM/PM state
623
+ *
624
+ * @returns {void}
625
+ */
626
+ toggle() {
627
+ if (this.amPm) {
628
+ const hours = this.hours === null ? new Date().getHours() : (this.hours + HOURS_IN_DAY / 2) % HOURS_IN_DAY;
629
+ this.setSegmentAndNotify(Segment.HOURS, hours);
630
+ }
631
+ }
632
+ /**
633
+ * A `CSSResultGroup` that will be used
634
+ * to style the host, slotted children
635
+ * and the internal template of the element.
636
+ * @returns CSS template
637
+ */
638
+ static get styles() {
639
+ return css `
640
+ :host {
641
+ display: inline-flex;
642
+ flex-flow: row nowrap;
643
+ align-items: center;
644
+ justify-content: center;
645
+ user-select:none;
646
+ position: relative;
647
+ }
648
+ input {
649
+ position: absolute;
650
+ top: 0;
651
+ left: 0;
652
+ width: 100%;
653
+ height: 100%;
654
+ opacity: 0;
655
+ }
656
+ `;
657
+ }
658
+ /**
659
+ * Template for Seconds Segment
660
+ *
661
+ * @returns Seconds segment
662
+ */
663
+ getSecondsHtml() {
664
+ return this.isShowSeconds ? html `
665
+ <span part="divider"></span>
666
+ <ef-number-field
667
+ id="seconds"
668
+ part="input"
669
+ no-spinner
670
+ min="${MIN_UNIT}"
671
+ max="${MAX_SECONDS}"
672
+ .value="${this.formattedSeconds}"
673
+ placeholder="${this.formattedSeconds || Placeholder.SECONDS}"
674
+ ?readonly="${this.readonly}"
675
+ ?disabled="${this.disabled}"
676
+ transparent></ef-number-field>
677
+ ` : null;
678
+ }
679
+ /**
680
+ * Template for AmPm Segment
681
+ *
682
+ * @returns Am/Pm segment
683
+ */
684
+ getAmPmHtml() {
685
+ const hasHours = this.hours !== null;
686
+ return this.amPm ? html `
687
+ <div id="toggle" part="toggle" @tap=${this.toggle} tabindex="0">
688
+ <div part="toggle-item" ?active=${hasHours && this.isAM()}>AM</div>
689
+ <div part="toggle-item" ?active=${hasHours && this.isPM()}>PM</div>
690
+ </div>
691
+ ` : null;
692
+ }
693
+ /**
694
+ * Native input's template for mobile
695
+ *
696
+ * @returns input
697
+ */
698
+ getNativeInputForMobile() {
699
+ return this.isMobile ? html `<input id="mtp" type="time" @change=${this.onMobileTimeChange}>` : null;
700
+ }
701
+ /**
702
+ * A `TemplateResult` that will be used
703
+ * to render the updated internal template.
704
+ * @returns Render template
705
+ */
706
+ render() {
707
+ return html `
708
+ <ef-number-field
709
+ id="hours"
710
+ part="input"
711
+ no-spinner
712
+ transparent
713
+ min="${this.amPm ? 1 : MIN_UNIT}"
714
+ max="${this.amPm ? HOURS_OF_NOON : MAX_HOURS}"
715
+ .value="${this.formattedHours}"
716
+ placeholder="${this.formattedHours || Placeholder.HOURS}"
717
+ ?disabled="${this.disabled}"
718
+ ?readonly="${this.readonly}"></ef-number-field>
719
+ <span part="divider"></span>
720
+ <ef-number-field
721
+ id="minutes"
722
+ part="input"
723
+ no-spinner
724
+ min="${MIN_UNIT}"
725
+ max="${MAX_MINUTES}"
726
+ .value="${this.formattedMinutes}"
727
+ placeholder="${this.formattedMinutes || Placeholder.MINUTES}"
728
+ ?readonly="${this.readonly}"
729
+ ?disabled="${this.disabled}"
730
+ transparent></ef-number-field>
731
+ ${this.getSecondsHtml()}
732
+ ${this.getAmPmHtml()}
733
+ ${this.getNativeInputForMobile()}
734
+ `;
735
+ }
736
+ };
737
+ __decorate([
738
+ property({ type: Number })
739
+ ], TimePicker.prototype, "hours", null);
740
+ __decorate([
741
+ property({ type: Number })
742
+ ], TimePicker.prototype, "minutes", null);
743
+ __decorate([
744
+ property({ type: Number })
745
+ ], TimePicker.prototype, "seconds", null);
746
+ __decorate([
747
+ property({ type: Boolean, attribute: 'am-pm', reflect: true })
748
+ ], TimePicker.prototype, "amPm", void 0);
749
+ __decorate([
750
+ property({ type: Boolean, attribute: 'show-seconds', reflect: true })
751
+ ], TimePicker.prototype, "showSeconds", void 0);
752
+ __decorate([
753
+ property({ type: String })
754
+ ], TimePicker.prototype, "value", null);
755
+ __decorate([
756
+ query('#mtp')
757
+ ], TimePicker.prototype, "mtpInput", void 0);
758
+ __decorate([
759
+ query('#hours')
760
+ ], TimePicker.prototype, "hoursInput", void 0);
761
+ __decorate([
762
+ query('#minutes')
763
+ ], TimePicker.prototype, "minutesInput", void 0);
764
+ __decorate([
765
+ query('#seconds')
766
+ ], TimePicker.prototype, "secondsInput", void 0);
767
+ __decorate([
768
+ query('#toggle')
769
+ ], TimePicker.prototype, "toggleEl", void 0);
770
+ TimePicker = __decorate([
771
+ customElement('ef-time-picker', {
772
+ alias: 'coral-time-picker'
773
+ })
774
+ ], TimePicker);
775
+ export { TimePicker };