@refinitiv-ui/elements 5.3.3 → 5.3.4

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