@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,491 @@
1
+ import { __decorate } from "tslib";
2
+ import { BasicElement, 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 { color as parseColor } from '@refinitiv-ui/utils/lib/color.js';
8
+ import 'chart.js/dist/Chart.bundle.min.js';
9
+ import { legendHelper, merge } from './helpers/index.js';
10
+ import '../header/index.js';
11
+ import '../layout/index.js';
12
+ // Register plugins
13
+ import doughnutCenterPlugin from './plugins/doughnut-center-label.js';
14
+ window.Chart.pluginService.register(doughnutCenterPlugin);
15
+ const CSS_COLOR_PREFIX = '--chart-color-';
16
+ const CHART_TYPE_OPAQUE = ['line', 'bubble', 'radar', 'polarArea'];
17
+ const DEFAULT_CHART_CONFIG = window.Chart.defaults;
18
+ const ELF_CHART_CONFIG = {
19
+ polarArea: {
20
+ scale: {
21
+ ticks: {
22
+ showLabelBackdrop: false
23
+ }
24
+ }
25
+ },
26
+ radar: {
27
+ scale: {
28
+ ticks: {
29
+ showLabelBackdrop: false
30
+ }
31
+ }
32
+ }
33
+ };
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
35
+ window.Chart.helpers.merge(DEFAULT_CHART_CONFIG, ELF_CHART_CONFIG);
36
+ /**
37
+ * Charting component that use ChartJS library
38
+ */
39
+ let Chart = class Chart extends BasicElement {
40
+ constructor() {
41
+ super(...arguments);
42
+ /**
43
+ * Chart.js object
44
+ */
45
+ this.chart = null;
46
+ /**
47
+ * Chart configurations. Same configuration as ChartJS
48
+ * @type {ChartConfig}
49
+ */
50
+ this.config = null;
51
+ /**
52
+ * Generates the legend labels on a given chart
53
+ * @param {ChartJS} chart Chart.js instance
54
+ * @returns {Chart.ChartLegendLabelItem[]} Array of label configurations
55
+ */
56
+ this.generateLegendLabels = (chart) => {
57
+ var _a, _b, _c, _d;
58
+ if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.type)) {
59
+ return [];
60
+ }
61
+ const chartOption = DEFAULT_CHART_CONFIG[this.config.type];
62
+ if (this.datasets.length
63
+ && chartOption.legend
64
+ && Array.isArray(this.datasets[0].backgroundColor)) {
65
+ let legends = [];
66
+ if ((_b = chartOption.legend.labels) === null || _b === void 0 ? void 0 : _b.generateLabels) {
67
+ legends = (_c = chartOption.legend.labels) === null || _c === void 0 ? void 0 : _c.generateLabels(chart);
68
+ }
69
+ // Customize for doughnut chart change border color to background color
70
+ if (['pie', 'doughnut'].includes((_d = this.config) === null || _d === void 0 ? void 0 : _d.type) && this.datasets.length > 1) {
71
+ legends.forEach((label) => {
72
+ label.strokeStyle = label.fillStyle;
73
+ });
74
+ }
75
+ return legends;
76
+ }
77
+ return this.datasets.map((dataset, i) => {
78
+ var _a, _b, _c;
79
+ const solidFill = !CHART_TYPE_OPAQUE.includes(dataset.type || ((_a = this.config) === null || _a === void 0 ? void 0 : _a.type));
80
+ const usePointStyle = ((_c = (_b = chart.options.legend) === null || _b === void 0 ? void 0 : _b.labels) === null || _c === void 0 ? void 0 : _c.usePointStyle) || false;
81
+ return {
82
+ text: dataset.label,
83
+ fillStyle: legendHelper.getLegendFillStyle(dataset, usePointStyle, solidFill),
84
+ hidden: !chart.isDatasetVisible(i),
85
+ lineCap: dataset.borderCapStyle,
86
+ lineDash: dataset.borderDash,
87
+ lineDashOffset: dataset.borderDashOffset,
88
+ lineJoin: dataset.borderJoinStyle,
89
+ lineWidth: Number(dataset.borderWidth) || 0,
90
+ strokeStyle: legendHelper.getLegendStrokeStyle(dataset, usePointStyle),
91
+ pointStyle: typeof dataset.pointStyle === 'string' ? dataset.pointStyle : undefined,
92
+ // Below is extra data used for toggling the datasets
93
+ datasetIndex: i
94
+ };
95
+ });
96
+ };
97
+ }
98
+ /**
99
+ * Element version number
100
+ * @returns version number
101
+ */
102
+ static get version() {
103
+ return VERSION;
104
+ }
105
+ /**
106
+ * Required properties, needed for chart to work correctly.
107
+ * @returns config
108
+ */
109
+ get requiredConfig() {
110
+ return {
111
+ options: {
112
+ responsive: false,
113
+ maintainAspectRatio: false,
114
+ title: {
115
+ display: false
116
+ }
117
+ }
118
+ };
119
+ }
120
+ /**
121
+ * Safely returns the chart title
122
+ * @returns chart title
123
+ */
124
+ get chartTitle() {
125
+ var _a, _b, _c;
126
+ const title = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.title) === null || _c === void 0 ? void 0 : _c.text;
127
+ if (title) {
128
+ return typeof title === 'string' ? title : title.join();
129
+ }
130
+ return '';
131
+ }
132
+ /**
133
+ * Safely returns a dataset array
134
+ * @returns dataset array
135
+ */
136
+ get datasets() {
137
+ var _a, _b;
138
+ return ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.datasets) || [];
139
+ }
140
+ /**
141
+ * List of available chart colors
142
+ * @type {string[]}
143
+ * @returns {string[]} List of available chart colors
144
+ */
145
+ get colors() {
146
+ let color;
147
+ let index = 0;
148
+ const colors = [];
149
+ while ((color = this.getComputedVariable(`${CSS_COLOR_PREFIX}${++index}`))) {
150
+ colors.push(color);
151
+ }
152
+ return colors;
153
+ }
154
+ /**
155
+ * Invoked whenever the element is updated
156
+ * @param {PropertyValues} changedProperties Map of changed properties with old values
157
+ * @returns {void}
158
+ */
159
+ updated(changedProperties) {
160
+ super.updated(changedProperties);
161
+ if (changedProperties.has('config')) {
162
+ this.onConfigChange();
163
+ }
164
+ }
165
+ /**
166
+ * Element connected
167
+ * @returns {void}
168
+ */
169
+ connectedCallback() {
170
+ super.connectedCallback();
171
+ if (this.canvas) {
172
+ this.createChart();
173
+ }
174
+ }
175
+ /**
176
+ * Element disconnected
177
+ * @returns {void}
178
+ */
179
+ disconnectedCallback() {
180
+ super.disconnectedCallback();
181
+ this.destroyChart();
182
+ }
183
+ /**
184
+ * Themable parts of the config.
185
+ * This will be merged into the configuration object.
186
+ * @returns {ChartConfig} chart config with theme
187
+ */
188
+ get themableConfig() {
189
+ var _a;
190
+ const style = getComputedStyle(this);
191
+ // TODO: Try and remove the need for global object modification.
192
+ // It's easier to cover all areas by modifying the global object,
193
+ // however, if possible, we should look to try and just modify local configs.
194
+ // Set font globals
195
+ window.Chart.defaults.global.defaultFontColor = style.getPropertyValue('color');
196
+ window.Chart.defaults.global.defaultFontFamily = style.getPropertyValue('font-family');
197
+ window.Chart.defaults.global.defaultFontSize = Number(style.getPropertyValue('font-size').replace('px', ''));
198
+ window.Chart.defaults.global.defaultFontStyle = style.getPropertyValue('font-style');
199
+ // Set grid line globals
200
+ window.Chart.defaults.scale.gridLines.color = this.getComputedVariable('--grid-line-color', 'transparent');
201
+ window.Chart.defaults.scale.gridLines.zeroLineColor = this.getComputedVariable('--zero-line-color', 'transparent');
202
+ return {
203
+ options: {
204
+ animation: {
205
+ duration: this.cssVarAsNumber('--animation-duration', '0')
206
+ },
207
+ elements: {
208
+ line: {
209
+ borderWidth: this.cssVarAsNumber('--line-width', '1'),
210
+ tension: this.cssVarAsNumber('--line-tension', '0.5')
211
+ }
212
+ },
213
+ tooltips: {
214
+ backgroundColor: this.getComputedVariable('--tooltip-background-color', 'transparent'),
215
+ titleFontColor: this.getComputedVariable('--tooltip-title-color', 'transparent'),
216
+ bodyFontColor: this.getComputedVariable('--tooltip-body-color', 'transparent'),
217
+ cornerRadius: this.cssVarAsNumber('--tooltip-border-radius', '0'),
218
+ caretSize: this.cssVarAsNumber('--tooltip-caret-size', '0'),
219
+ xPadding: this.cssVarAsNumber('--tooltip-padding-x', '--tooltip-padding', '0'),
220
+ yPadding: this.cssVarAsNumber('--tooltip-padding-y', '--tooltip-padding', '0'),
221
+ titleSpacing: this.cssVarAsNumber('--tooltip-title-spacing', '0'),
222
+ displayColors: false
223
+ },
224
+ legend: {
225
+ position: ['pie', 'doughnut'].includes(((_a = this.config) === null || _a === void 0 ? void 0 : _a.type) || '') ? 'right' : 'top',
226
+ labels: {
227
+ boxWidth: this.cssVarAsNumber('--legend-key-box-width', '10'),
228
+ generateLabels: this.generateLegendLabels
229
+ }
230
+ }
231
+ }
232
+ };
233
+ }
234
+ /**
235
+ * Handles a change of configuration object.
236
+ * This does not fire when a property of the config object changes,
237
+ * for this use this.updateChart() to apply changes.
238
+ * @returns {void}
239
+ */
240
+ onConfigChange() {
241
+ if (this.config) {
242
+ this.createChart();
243
+ }
244
+ }
245
+ /**
246
+ * Get as CSS variable and tries to convert it into a usable number
247
+ * @returns {(number|undefined)} The value as a number, or, undefined if NaN.
248
+ */
249
+ cssVarAsNumber(...args) {
250
+ const result = Number(this.getComputedVariable(...args).replace(/\D+$/, ''));
251
+ return isNaN(result) ? undefined : result;
252
+ }
253
+ /**
254
+ * Merges all the different layers of the config.
255
+ * @returns {void}
256
+ */
257
+ mergeConfigs() {
258
+ if (!this.config) {
259
+ return;
260
+ }
261
+ merge(this.config, this.themableConfig);
262
+ merge(this.config, this.requiredConfig, true);
263
+ }
264
+ /**
265
+ * Themes the passed-in configuration object
266
+ * @returns {void}
267
+ */
268
+ decorateConfig() {
269
+ this.mergeConfigs();
270
+ const extendColorsIfRequired = (currentColors, infoColors) => {
271
+ if (Array.isArray(currentColors) && Array.isArray(infoColors) && currentColors.length < infoColors.length) {
272
+ merge(currentColors, infoColors);
273
+ }
274
+ };
275
+ this.datasets.forEach((dataset) => {
276
+ const info = this.datasetInfo(dataset);
277
+ // make sure that colours are defined for every dataset e.g. when new dataset is added
278
+ extendColorsIfRequired(dataset.borderColor, info.borderColor);
279
+ extendColorsIfRequired(dataset.backgroundColor, info.backgroundColor);
280
+ extendColorsIfRequired(dataset.pointBorderColor, info.pointBorderColor);
281
+ extendColorsIfRequired(dataset.pointBackgroundColor, info.pointBackgroundColor);
282
+ dataset.borderColor = dataset.borderColor || info.borderColor;
283
+ dataset.backgroundColor = dataset.backgroundColor || info.backgroundColor;
284
+ dataset.pointBackgroundColor = dataset.pointBackgroundColor || info.pointBackgroundColor;
285
+ dataset.pointBorderColor = dataset.pointBorderColor || info.pointBorderColor;
286
+ });
287
+ }
288
+ /**
289
+ * Returns usable information about a dataset
290
+ * @param {Chart.ChartDataSets} dataset Chart dataset
291
+ * @returns {Chart.ChartDataSets} Information about the dataset
292
+ */
293
+ datasetInfo(dataset) {
294
+ var _a;
295
+ const type = dataset.type || ((_a = this.config) === null || _a === void 0 ? void 0 : _a.type);
296
+ let index = this.datasets.indexOf(dataset);
297
+ const isColorArray = (!!type && ['pie', 'doughnut', 'polarArea'].includes(type)) || type === 'bar' && this.datasets.length === 1;
298
+ const isSolidFill = !!type && !CHART_TYPE_OPAQUE.includes(type);
299
+ // Doughnut chart using same color sequence for each data in datasets
300
+ let borderColor = null;
301
+ if (['pie', 'doughnut'].includes(type) && this.datasets.length > 1) {
302
+ index = 0;
303
+ borderColor = this.getComputedVariable('--multi-dataset-border-color', '#fff');
304
+ }
305
+ const colors = this.generateColors(isColorArray, isColorArray && dataset.data ? dataset.data.length : 1, index);
306
+ return {
307
+ type,
308
+ borderColor: borderColor || colors.solid,
309
+ backgroundColor: isSolidFill ? colors.solid : colors.opaque,
310
+ pointBorderColor: colors.solid,
311
+ pointBackgroundColor: colors.solid
312
+ };
313
+ }
314
+ /**
315
+ * Generates internal solid and opaque color set for a dataset
316
+ * @param {boolean} isArray Flag to return result in array or not e.g. doughnut, pie, etc
317
+ * @param {number} amount Amount of colors required
318
+ * @param {number} shift Positional shift of the color start point
319
+ * @returns {DatasetColors} Solid and opaque color values
320
+ */
321
+ generateColors(isArray, amount, shift) {
322
+ let color;
323
+ const solid = [];
324
+ const opaque = [];
325
+ const alpha = Number(this.getComputedVariable('--fill-opacity', '0.2'));
326
+ amount = isArray ? amount : 1;
327
+ for (let i = shift; i < amount + shift; i++) {
328
+ color = this.colors[i % this.colors.length];
329
+ solid.push(color);
330
+ const opaqueColor = parseColor(color);
331
+ if (opaqueColor) {
332
+ opaqueColor.opacity = alpha;
333
+ opaque.push(opaqueColor.toString());
334
+ }
335
+ }
336
+ return {
337
+ solid: isArray ? solid : solid[0],
338
+ opaque: isArray ? opaque : opaque[0]
339
+ };
340
+ }
341
+ /**
342
+ * Manages the custom title element
343
+ * @returns {void}
344
+ */
345
+ manageTitle() {
346
+ this.titleElement.textContent = this.chartTitle;
347
+ if (this.chartTitle) {
348
+ this.titleElement.style.removeProperty('display');
349
+ }
350
+ else {
351
+ this.titleElement.style.display = 'none';
352
+ }
353
+ }
354
+ /**
355
+ * Creates a chart after config has changed,
356
+ * or, the element has been connected to the DOM
357
+ * @returns {void}
358
+ */
359
+ createChart() {
360
+ const ctx = this.canvas.getContext('2d');
361
+ if (ctx && this.config) {
362
+ // Are we reusing an old chart canvas?
363
+ const isReusingCanvas = this.destroyChart();
364
+ // Preparing the resources before create chart
365
+ this.decorateConfig();
366
+ this.manageTitle();
367
+ // Create chart
368
+ this.chart = new window.Chart(ctx, this.config);
369
+ if (isReusingCanvas) {
370
+ // If we're reusing an old chart canvas, we need to resize it.
371
+ // Destroying a chart has some strange side-effects on the canvas.
372
+ this.chart.resize();
373
+ }
374
+ }
375
+ }
376
+ /**
377
+ * Destroys the chart.js object
378
+ * @returns True if a chart object has been destroyed
379
+ */
380
+ destroyChart() {
381
+ if (this.chart) {
382
+ // Destroy the chart
383
+ this.chart.destroy();
384
+ this.chart = null;
385
+ return true;
386
+ }
387
+ return false;
388
+ }
389
+ /**
390
+ * Re-renders the chart based on its config
391
+ * @param {ChartUpdateProps} config Additional configuration object for the update process.
392
+ * @returns {void}
393
+ */
394
+ renderChart(config = { duration: this.cssVarAsNumber('--animation-duration', '0') }) {
395
+ if (!this.chart || !this.config) {
396
+ return;
397
+ }
398
+ // Stop any chart.js animations
399
+ this.chart.stop();
400
+ // Decorate the config object
401
+ this.decorateConfig();
402
+ // Update internal layout
403
+ this.manageTitle();
404
+ // Update the chart
405
+ this.chart.update(config);
406
+ }
407
+ /**
408
+ * Update all data, title, scales, legends and re-render the chart based on its config
409
+ * @param {ChartUpdateProps=} config Additional configuration for control an animation in the update process.
410
+ * @returns {void}
411
+ */
412
+ updateChart(config) {
413
+ this.renderChart(config);
414
+ }
415
+ /**
416
+ * A `CSSResultGroup` that will be used
417
+ * to style the host, slotted children
418
+ * and the internal template of the element.
419
+ * @return CSS template
420
+ */
421
+ static get styles() {
422
+ return css `
423
+ :host {
424
+ display: block;
425
+ overflow: hidden;
426
+ position: relative;
427
+ }
428
+ :host::before {
429
+ content: '';
430
+ display: block;
431
+ padding-top: 60%;
432
+ min-height: 300px;
433
+ box-sizing: border-box;
434
+ }
435
+ [container] {
436
+ position: absolute;
437
+ top: 0;
438
+ right: 0;
439
+ bottom: 0;
440
+ left: 0;
441
+ }
442
+ ef-header {
443
+ margin-bottom: 12px;
444
+ }
445
+ canvas {
446
+ position: absolute;
447
+ top: 0;
448
+ right: 0;
449
+ bottom: 0;
450
+ left: 0;
451
+ }
452
+ `;
453
+ }
454
+ /**
455
+ * Handles resize event of the chart region
456
+ * @returns {void}
457
+ */
458
+ onResize() {
459
+ var _a;
460
+ (_a = this.chart) === null || _a === void 0 ? void 0 : _a.resize();
461
+ }
462
+ /**
463
+ * A `TemplateResult` that will be used
464
+ * to render the updated internal template.
465
+ * @return Render template
466
+ */
467
+ render() {
468
+ return html `
469
+ <ef-layout flex container>
470
+ <ef-header></ef-header>
471
+ <ef-layout part="chart" @resize="${this.onResize}">
472
+ <canvas id="canvas"></canvas>
473
+ </ef-layout>
474
+ </ef-layout>`;
475
+ }
476
+ };
477
+ __decorate([
478
+ property({ type: Object })
479
+ ], Chart.prototype, "config", void 0);
480
+ __decorate([
481
+ query('canvas')
482
+ ], Chart.prototype, "canvas", void 0);
483
+ __decorate([
484
+ query('ef-header')
485
+ ], Chart.prototype, "titleElement", void 0);
486
+ Chart = __decorate([
487
+ customElement('ef-chart', {
488
+ alias: 'sapphire-chart'
489
+ })
490
+ ], Chart);
491
+ export { Chart };
@@ -0,0 +1,3 @@
1
+ /// <reference types="chart.js" />
2
+ declare const plugins: Chart.PluginServiceRegistrationOptions;
3
+ export default plugins;
@@ -0,0 +1,196 @@
1
+ const CHART = window.Chart;
2
+ const getPluginConfig = (chart) => {
3
+ var _a, _b;
4
+ return (_b = (_a = chart.config.options) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.centerLabel;
5
+ };
6
+ /**
7
+ * Draw line
8
+ * @param {DoughnutChart} chart doughnut chart
9
+ * @param {MetaData[]} active active data
10
+ * @returns {void}
11
+ */
12
+ const drawItemBorder = function (chart, active) {
13
+ var _a, _b, _c;
14
+ if (!chart.data.datasets) {
15
+ return;
16
+ }
17
+ if (active === null || active === void 0 ? void 0 : active.length) {
18
+ const ctx = chart.ctx;
19
+ const chartItem = active[0];
20
+ const vm = chartItem._view;
21
+ const datasets = chart.data.datasets[chartItem._datasetIndex];
22
+ vm.backgroundColor = datasets.backgroundColor[chartItem._index];
23
+ vm.backgroundColor = CHART.helpers.getHoverColor(vm.backgroundColor); // we need to make color bolder
24
+ vm.borderWidth = (datasets.borderWidth || ((_c = (_b = (_a = chart.config.options) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.arc) === null || _c === void 0 ? void 0 : _c.borderWidth));
25
+ vm.borderColor = (getComputedStyle(chart.canvas).getPropertyValue('--doughnut-border-color') || CHART.defaults.global.defaultFontColor);
26
+ const sA = vm.startAngle;
27
+ const eA = vm.endAngle;
28
+ if (ctx) {
29
+ ctx.beginPath();
30
+ ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);
31
+ ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);
32
+ ctx.closePath();
33
+ ctx.strokeStyle = vm.borderColor;
34
+ ctx.lineWidth = vm.borderWidth;
35
+ ctx.fillStyle = vm.backgroundColor;
36
+ ctx.fill();
37
+ ctx.lineJoin = 'bevel';
38
+ if (vm.borderWidth) {
39
+ ctx.stroke();
40
+ }
41
+ }
42
+ }
43
+ };
44
+ const plugins = {
45
+ beforeEvent: function (chart, event) {
46
+ if (!getPluginConfig(chart)) {
47
+ return;
48
+ }
49
+ switch (event.type) {
50
+ case 'click':
51
+ // chart._select stores a segment that is clicked
52
+ if (!chart._select) {
53
+ chart._select = [];
54
+ }
55
+ if (chart.active.length) {
56
+ if (chart._select.length && chart._select[0]._datasetIndex === chart.active[0]._datasetIndex
57
+ && chart._select[0]._index === chart.active[0]._index) {
58
+ // reset value if user clicked on selected segment
59
+ chart._select = [];
60
+ }
61
+ else {
62
+ // set segment that user clicked
63
+ chart._select = chart.active.slice(0);
64
+ }
65
+ }
66
+ else {
67
+ chart._select = [];
68
+ }
69
+ chart.draw();
70
+ break;
71
+ default:
72
+ break;
73
+ }
74
+ },
75
+ beforeDraw: function (chart) {
76
+ var _a;
77
+ const config = getPluginConfig(chart);
78
+ if (!config) {
79
+ return;
80
+ }
81
+ // Set render hook function
82
+ let active = [];
83
+ if (chart._select) {
84
+ active = chart._select;
85
+ }
86
+ if ((_a = chart.active) === null || _a === void 0 ? void 0 : _a.length) {
87
+ active = chart.active;
88
+ }
89
+ const renderText = config.onRenderLabel(chart, active);
90
+ // Get Texts
91
+ const centerConfig = config;
92
+ const texts = renderText || centerConfig.defaultText;
93
+ if (!texts) {
94
+ return;
95
+ }
96
+ // Get ctx from param
97
+ const ctx = chart.ctx;
98
+ // Get options from config
99
+ const canvas = chart.canvas;
100
+ const style = window.getComputedStyle(canvas);
101
+ const globalConfig = CHART.defaults.global;
102
+ const defaultFontStyle = globalConfig.defaultFontFamily;
103
+ const defaultColor = style.getPropertyValue('--doughnut-center-text-color') || globalConfig.defaultFontColor;
104
+ const backgroundColor = style.getPropertyValue('--doughnut-center-background-color');
105
+ const customFontSizePercent = parseInt(style.getPropertyValue('--doughnut-center-font-size'), 10) / 100; // font size in percentage
106
+ const centerX = (chart.chartArea.left + chart.chartArea.right) / 2;
107
+ const centerY = (chart.chartArea.top + chart.chartArea.bottom) / 2;
108
+ // Render center background color
109
+ if (backgroundColor) {
110
+ ctx.arc(centerX, centerY, chart.innerRadius, 0, 2 * Math.PI);
111
+ ctx.fillStyle = backgroundColor;
112
+ ctx.fill();
113
+ }
114
+ const textAreaWidth = chart.innerRadius;
115
+ // Base font size is 30% and minus 4% per text lines ( if text has multiple lines ) of text area
116
+ const baseFontSize = textAreaWidth * (0.3 - (0.04 * (texts.length - 1)));
117
+ // Keep minimum font size equal 5% of text area
118
+ const computedFontSize = Math.max(textAreaWidth * 0.05, baseFontSize);
119
+ // Use font size ratio from user if --doughnut-center-font-size CSS variable is provided
120
+ const fontRatio = customFontSizePercent || computedFontSize / textAreaWidth;
121
+ const fontSizeToUse = textAreaWidth * fontRatio;
122
+ // Set font settings to draw it correctly.
123
+ ctx.textAlign = 'center';
124
+ ctx.textBaseline = 'middle';
125
+ ctx.fillStyle = defaultColor;
126
+ // Render texts
127
+ const fontLineHeight = fontSizeToUse * 1.5;
128
+ const fontSizeHeaderRatio = 1.15;
129
+ // Move Y position of text up according to text length
130
+ const offsetY = centerY - (texts.length - 1) * 0.5 * fontLineHeight;
131
+ const containerWidth = chart.innerRadius * 2;
132
+ const circlePadding = containerWidth * (texts.length <= 1 ? 0.4 : 0.5);
133
+ for (let i = 0; i < texts.length; i++) {
134
+ let targetFont;
135
+ if (texts[i].bold) {
136
+ targetFont = `bold ${fontSizeToUse * fontSizeHeaderRatio}px ${defaultFontStyle || ''}`;
137
+ }
138
+ else {
139
+ targetFont = `${fontSizeToUse}px ${defaultFontStyle || ''}`;
140
+ }
141
+ ctx.font = targetFont;
142
+ let targetText = texts[i].label;
143
+ if (ctx.measureText(targetText).width > containerWidth - circlePadding) {
144
+ const numText = targetText.length;
145
+ const numRatio = targetText.length / ctx.measureText(targetText).width;
146
+ const difSize = ctx.measureText(targetText).width - containerWidth + circlePadding;
147
+ let numCharacter = numText - Math.ceil(difSize * numRatio);
148
+ numCharacter = Math.max(1, numCharacter);
149
+ if (numCharacter) {
150
+ targetText = targetText.slice(0, numCharacter);
151
+ targetText += '...';
152
+ }
153
+ }
154
+ ctx.fillText(targetText, centerX, offsetY + (i * fontLineHeight));
155
+ }
156
+ },
157
+ afterDatasetUpdate: function (chart) {
158
+ var _a;
159
+ // Check chart already init selected.
160
+ if (chart.selected !== undefined) {
161
+ return;
162
+ }
163
+ // Check configs are ready to init selected
164
+ const config = getPluginConfig(chart);
165
+ if (!config || !config.selected || !chart.data.datasets) {
166
+ return;
167
+ }
168
+ const selectedIndex = Number((_a = config.selected) === null || _a === void 0 ? void 0 : _a.index);
169
+ const datasetIndex = Number(config.selected.datasetIndex || 0);
170
+ const visibleIndexes = chart.getVisibleDatasetCount() - 1;
171
+ // Validate index and datasetIndex
172
+ if (isNaN(selectedIndex) || (isNaN(datasetIndex) || datasetIndex < 0 || datasetIndex > visibleIndexes)) {
173
+ return;
174
+ }
175
+ // Set selected item to the chart
176
+ const items = chart.getDatasetMeta(datasetIndex).data[selectedIndex];
177
+ chart.selected = items ? [items] : [];
178
+ },
179
+ afterDraw: function (chart) {
180
+ var _a;
181
+ if (getPluginConfig(chart)) {
182
+ // Draw active element
183
+ // Note: use logic from chart.js - chart.js/src/elements/element.arc.js :draw()
184
+ // hover
185
+ drawItemBorder(chart, chart.active);
186
+ // selected
187
+ if ((_a = chart.selected) === null || _a === void 0 ? void 0 : _a.length) {
188
+ chart._select = chart.selected;
189
+ chart.selected = [];
190
+ }
191
+ // active
192
+ drawItemBorder(chart, chart._select);
193
+ }
194
+ }
195
+ };
196
+ export default plugins;