@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,890 @@
1
+ import { __decorate } from "tslib";
2
+ import { 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 { styleMap } from '@refinitiv-ui/core/lib/directives/style-map.js';
7
+ import { repeat } from '@refinitiv-ui/core/lib/directives/repeat.js';
8
+ import { ifDefined } from '@refinitiv-ui/core/lib/directives/if-defined.js';
9
+ import { VERSION } from '../version.js';
10
+ import { CollectionComposer } from '@refinitiv-ui/utils/lib/collection.js';
11
+ import { TimeoutTaskRunner } from '@refinitiv-ui/utils/lib/async.js';
12
+ import '../icon/index.js';
13
+ import '../text-field/index.js';
14
+ import '../pill/index.js';
15
+ import '../button/index.js';
16
+ import '../checkbox/index.js';
17
+ import '../tree/index.js';
18
+ import { ComboBox } from '../combo-box/index.js';
19
+ import { TreeRenderer as TreeSelectRenderer } from '../tree/index.js';
20
+ import { CheckedState, TreeManager, TreeManagerMode } from '../tree/managers/tree-manager.js';
21
+ import { translate } from '@refinitiv-ui/translate';
22
+ import '@refinitiv-ui/phrasebook/lib/locale/en/tree-select.js';
23
+ export { TreeSelectRenderer };
24
+ const MEMO_THROTTLE = 16;
25
+ const POPUP_POSITION = ['bottom-start', 'top-start'];
26
+ /**
27
+ * Dropdown control that allows selection from the tree list
28
+ *
29
+ * @attr {boolean} [opened=false] - Set dropdown to open
30
+ * @prop {boolean} [opened=false] - Set dropdown to open
31
+ * @attr {string} placeholder - Set placeholder text
32
+ * @prop {string} placeholder - Set placeholder text
33
+ * @prop {TreeSelectData[]} data - Data object to be used for creating tree
34
+ * @fires confirm - Fired when selection is confirmed
35
+ * @fires cancel - Fired when selection is cancelled
36
+ * @fires query-changed - Fired when query in input box changed
37
+ * @fires value-changed - Fired when value of control changed
38
+ * @fires opened-changed - Fires when opened state changes
39
+ */
40
+ let TreeSelect = class TreeSelect extends ComboBox {
41
+ constructor() {
42
+ super();
43
+ /**
44
+ * Tracks the number of filter matches
45
+ *
46
+ * Only needed if internal filtering is unused
47
+ */
48
+ this.filterCount = 0;
49
+ /**
50
+ * Memoized selection and expansion stats
51
+ * Used for displaying counts and calculating control visibility/content
52
+ */
53
+ this.memo = {
54
+ selected: 0,
55
+ selectable: 0,
56
+ expanded: 0,
57
+ expandable: 0
58
+ };
59
+ /**
60
+ * Extracted values from {@link this.checkedGroupedItems}
61
+ */
62
+ this.pillsData = [];
63
+ /**
64
+ * Are there pills visible
65
+ */
66
+ this.hasPills = false;
67
+ /**
68
+ * Store references to items selected and visible at point of selection filter being applied
69
+ * Allow for items to be removed from the selection, but still be visible
70
+ */
71
+ this.editSelectionItems = new Set();
72
+ /**
73
+ * Composer used for live changes
74
+ */
75
+ this.composer = new CollectionComposer([]);
76
+ /**
77
+ * Provide access to tree interface
78
+ */
79
+ this.treeManager = new TreeManager(this.composer);
80
+ /**
81
+ * Modification updates are called a lot
82
+ *
83
+ * This throttles the memo updates to reduce lookups
84
+ */
85
+ this.memoUpdateThrottle = new TimeoutTaskRunner(MEMO_THROTTLE);
86
+ /**
87
+ * Breaks the relationship when multiple
88
+ * selection mode is enabled
89
+ */
90
+ this.noRelation = false;
91
+ /**
92
+ * Should the control show pills
93
+ */
94
+ this.showPills = false;
95
+ this._values = [];
96
+ /**
97
+ * Renderer used to render tree item elements
98
+ * @type {TreeSelectRenderer}
99
+ */
100
+ this.renderer = new TreeSelectRenderer(this);
101
+ /**
102
+ * TODO:
103
+ * @ignore
104
+ */
105
+ this.multiple = true;
106
+ }
107
+ /**
108
+ * Element version number
109
+ * @returns version number
110
+ */
111
+ static get version() {
112
+ return VERSION;
113
+ }
114
+ static get styles() {
115
+ return css `
116
+ [part=list] {
117
+ display: flex;
118
+ flex-direction: row;
119
+ box-sizing: content-box;
120
+ cursor: default;
121
+ }
122
+
123
+ [part=section] {
124
+ display: flex;
125
+ flex-direction: column;
126
+ width: inherit;
127
+ height: inherit;
128
+ max-height: inherit;
129
+ min-height: inherit;
130
+ max-width: inherit;
131
+ min-width: inherit;
132
+ overflow: hidden;
133
+ }
134
+
135
+ [part=selection-area] {
136
+ min-height: 0;
137
+ flex-grow: 1;
138
+ flex-shrink: 1;
139
+ flex-basis: auto;
140
+ display: flex;
141
+ flex-direction: column;
142
+ overflow: hidden;
143
+ outline: none;
144
+ }
145
+
146
+ [part~=control-container] {
147
+ box-sizing: border-box;
148
+ display: flex;
149
+ flex-shrink: 0;
150
+ flex-basis: auto;
151
+ flex-grow: 0;
152
+ align-items: center;
153
+ }
154
+
155
+ [part=pills] {
156
+ flex: none;
157
+ }
158
+ `;
159
+ }
160
+ /**
161
+ * Returns a values collection of the currently
162
+ * selected item values
163
+ * @type {string[]}
164
+ */
165
+ get values() {
166
+ return this._values;
167
+ }
168
+ set values(values) {
169
+ super.values = values;
170
+ this._values = values;
171
+ }
172
+ /**
173
+ * Set resolved data
174
+ * @param value resolved data
175
+ */
176
+ set resolvedData(value) {
177
+ const oldValue = this.resolvedData;
178
+ if (value !== oldValue) {
179
+ super.resolvedData = value;
180
+ this.treeManager = new TreeManager(this.composer, this.mode);
181
+ // keep the original values
182
+ // do not use values setter to avoid unnecessary calls
183
+ this._values = this.composerValues;
184
+ this.listenToComposer();
185
+ this.updateMemo();
186
+ this.updatePills();
187
+ this.requestUpdate('data', oldValue);
188
+ }
189
+ }
190
+ get resolvedData() {
191
+ return super.resolvedData;
192
+ }
193
+ /**
194
+ * The the values from composer ignoring freeTextValue
195
+ * @override
196
+ */
197
+ get composerValues() {
198
+ return this.treeManager.checkedItems.map(item => item.value || '').slice();
199
+ }
200
+ /**
201
+ * Provide list of currently selected items
202
+ */
203
+ get selection() {
204
+ return this.treeManager.checkedItems.slice();
205
+ }
206
+ /**
207
+ * Get a list of selected item labels
208
+ * @returns Has selection
209
+ * @override
210
+ */
211
+ get selectedLabels() {
212
+ return this.checkedGroupedItems.map(selected => this.getItemPropertyValue(selected, 'label') || '');
213
+ }
214
+ /**
215
+ * Returns memoized selected state
216
+ * @returns Has selection
217
+ */
218
+ get hasActiveSelection() {
219
+ return this.memo.selected > 0;
220
+ }
221
+ /**
222
+ * Returns memoized selectable state
223
+ * @returns Has selectable
224
+ */
225
+ get hasSelectable() {
226
+ return this.memo.selectable > 0;
227
+ }
228
+ /**
229
+ * Returns memoized all selected count
230
+ * @returns Is all selected
231
+ */
232
+ get isAllSelected() {
233
+ return this.hasSelectable && this.memo.selected === this.memo.selectable;
234
+ }
235
+ /**
236
+ * Returns memoized expansion state
237
+ * @returns Are all expanded
238
+ */
239
+ get hasExpansion() {
240
+ return this.memo.expanded > 0;
241
+ }
242
+ /**
243
+ * Determines if the expansion controls should be displayed
244
+ *
245
+ * @returns Control visible state
246
+ */
247
+ get expansionControlVisible() {
248
+ // could be a static prop and updated via CC
249
+ return this.memo.expandable > 0;
250
+ }
251
+ /**
252
+ * Determine if the selection filter is active
253
+ * @returns Selection filter on/off
254
+ */
255
+ get selectionFilterState() {
256
+ return this.editSelectionItems.size > 0;
257
+ }
258
+ /**
259
+ * Mode to use in the tree manager
260
+ */
261
+ get mode() {
262
+ return !this.noRelation ? TreeManagerMode.RELATIONAL : TreeManagerMode.INDEPENDENT;
263
+ }
264
+ /**
265
+ * Get a list of selected items.
266
+ * If all leaves are selected, a parent becomes selected
267
+ * If mode is INDEPENDENT, grouping is not applied
268
+ */
269
+ get checkedGroupedItems() {
270
+ const treeManager = this.treeManager;
271
+ const checkedItems = treeManager.checkedItems;
272
+ if (this.mode === TreeManagerMode.INDEPENDENT) {
273
+ return checkedItems;
274
+ }
275
+ const checkedGroupItems = [];
276
+ const unchecked = []; // need for performance to not double check same ancestors
277
+ checkedItems.forEach(item => {
278
+ const ancestors = treeManager.getItemAncestors(item);
279
+ for (let i = 0; i < ancestors.length; i += 1) {
280
+ const ancestor = ancestors[i];
281
+ // An ancestor is already included. No need to continue
282
+ if (checkedGroupItems.includes(ancestor)) {
283
+ return;
284
+ }
285
+ // An ancestor has been already checked. Do not check again
286
+ if (unchecked.includes(ancestor)) {
287
+ continue;
288
+ }
289
+ // Ancestor is checked. No need to check any other ancestors
290
+ if (treeManager.getItemCheckedState(ancestor) === CheckedState.CHECKED) {
291
+ checkedGroupItems.push(ancestor);
292
+ return;
293
+ }
294
+ // Do not check again this ancestor for performance
295
+ unchecked.push(ancestor);
296
+ }
297
+ checkedGroupItems.push(item);
298
+ });
299
+ return checkedGroupItems;
300
+ }
301
+ /**
302
+ * Persist the current selection
303
+ * Takes the current selection and uses it for {@link TreeSelect.values}
304
+ * Also uses current selection as a revert position for future changes
305
+ * @returns {void}
306
+ */
307
+ persistSelection() {
308
+ const oldValues = this.values.slice();
309
+ const newValues = this.composerValues;
310
+ const oldComparison = oldValues.sort().toString();
311
+ const newComparison = newValues.sort().toString();
312
+ if (oldComparison !== newComparison) {
313
+ this.values = newValues;
314
+ this.notifyPropertyChange('value', this.value);
315
+ }
316
+ }
317
+ /**
318
+ * Reverse selection. Run on Esc or Cancel
319
+ * @returns {void}
320
+ */
321
+ cancelSelection() {
322
+ // values setter updates the collection composer if required
323
+ this.values = this._values;
324
+ }
325
+ /**
326
+ * Update memoized track
327
+ *
328
+ * Update states for expansion and selection
329
+ *
330
+ * @returns {void}
331
+ */
332
+ updateMemo() {
333
+ this.memo = {
334
+ expanded: 0,
335
+ expandable: 0,
336
+ selected: 0,
337
+ selectable: 0
338
+ };
339
+ this.queryItems((item, composer) => {
340
+ const hasChildren = composer.getItemChildren(item);
341
+ if (hasChildren.length) {
342
+ this.memo.expandable += 1;
343
+ if (this.treeManager.isItemExpanded(item) && this.treeManager.isItemCheckable(item)) {
344
+ this.memo.expanded += 1;
345
+ }
346
+ }
347
+ else if (this.treeManager.isItemCheckable(item)) {
348
+ this.memo.selectable += 1;
349
+ if (this.getItemPropertyValue(item, 'selected') === true) {
350
+ this.memo.selected += 1;
351
+ }
352
+ }
353
+ return false;
354
+ });
355
+ this.requestUpdate();
356
+ }
357
+ /**
358
+ * Utility method - closes and resets changes such as query
359
+ * @returns {void}
360
+ */
361
+ closeAndReset() {
362
+ this.resetInput();
363
+ this.setOpened(false);
364
+ }
365
+ /**
366
+ * Save the current selection
367
+ * @returns {void}
368
+ */
369
+ save() {
370
+ const event = new CustomEvent('confirm');
371
+ this.dispatchEvent(event);
372
+ if (!event.defaultPrevented) {
373
+ this.persistSelection();
374
+ this.closeAndReset();
375
+ }
376
+ }
377
+ /**
378
+ * Discard the current selection
379
+ * @returns {void}
380
+ */
381
+ cancel() {
382
+ const event = new CustomEvent('cancel');
383
+ this.dispatchEvent(event);
384
+ if (!event.defaultPrevented) {
385
+ this.closeAndReset();
386
+ // reset always happens on popup close action
387
+ }
388
+ }
389
+ /**
390
+ * Toggle tree level expansion action
391
+ * @returns {void}
392
+ */
393
+ expansionToggleClickHandler() {
394
+ if (this.hasExpansion) {
395
+ this.treeManager.collapseAllItems();
396
+ }
397
+ else {
398
+ this.treeManager.expandAllItems();
399
+ }
400
+ }
401
+ /**
402
+ * Toggle Selection of all tree items
403
+ * @param event checked-change event
404
+ * @returns {void}
405
+ */
406
+ selectionToggleHandler(event) {
407
+ if (event.detail.value) {
408
+ this.treeManager.checkAllItems();
409
+ }
410
+ else {
411
+ this.treeManager.uncheckAllItems();
412
+ }
413
+ }
414
+ /**
415
+ * Remove selection filter
416
+ * @returns {void}
417
+ */
418
+ fullClickHandler() {
419
+ this.exitEditSelection();
420
+ }
421
+ /**
422
+ * Apply selection filter
423
+ * @returns {void}
424
+ */
425
+ selectedClickHandler() {
426
+ if (this.hasActiveSelection) {
427
+ this.enterEditSelection();
428
+ }
429
+ }
430
+ /**
431
+ * Apply the selection filter by entering edit selection mode
432
+ * @returns {void}
433
+ */
434
+ enterEditSelection() {
435
+ this.editSelectionItems = new Set(this.treeManager.checkedItems);
436
+ this.filterItems();
437
+ }
438
+ /**
439
+ * Remove selection filtering by exiting edit selection mode
440
+ * @returns {void}
441
+ */
442
+ exitEditSelection() {
443
+ this.clearSelectionFilter();
444
+ this.filterItems();
445
+ }
446
+ /**
447
+ * Executed when the popup is fully opened
448
+ * @returns {void}
449
+ */
450
+ onPopupOpened() {
451
+ super.onPopupOpened();
452
+ this.clearSelectionFilter();
453
+ this.updatePills();
454
+ this.updateMemo();
455
+ }
456
+ /**
457
+ * Clear selection filter
458
+ * @returns {void}
459
+ */
460
+ clearSelectionFilter() {
461
+ this.editSelectionItems.clear();
462
+ }
463
+ /**
464
+ * Executed when the popup is fully closed
465
+ * @returns {void}
466
+ */
467
+ onPopupClosed() {
468
+ super.onPopupClosed();
469
+ this.updateMemo();
470
+ this.cancelSelection();
471
+ this.exitEditSelection();
472
+ }
473
+ /**
474
+ * Filter the internal items by query. Changes items' hidden state.
475
+ * @returns {void}
476
+ */
477
+ filterItems() {
478
+ // if filter is null, it is off and external app is responsible
479
+ if (this.filter) {
480
+ const filter = this.filter;
481
+ const items = this.queryItems((item) => {
482
+ // do not filter hidden items
483
+ if (item.hidden) {
484
+ return false;
485
+ }
486
+ // does item match the selection filter
487
+ let result = true;
488
+ if (this.editSelectionItems.size && !this.editSelectionItems.has(item)) {
489
+ result = false;
490
+ }
491
+ // item matches selection, can have conventional filter applied
492
+ if (result) {
493
+ result = filter(item);
494
+ }
495
+ if (result) {
496
+ this.treeManager.includeItem(item);
497
+ }
498
+ else {
499
+ this.treeManager.excludeItem(item);
500
+ }
501
+ return result;
502
+ }).slice();
503
+ // do not expand EMS if there is no filter applied
504
+ if (this.query || this.editSelectionItems.size) {
505
+ this.addItemDescendantsToRender(items);
506
+ this.addExpandedAncestorsToRender(items);
507
+ }
508
+ this.filterCount = items.length;
509
+ // unlike CCB, we do not close EMS when there is no matches for filter
510
+ }
511
+ this.forcePopupLayout();
512
+ }
513
+ /**
514
+ * Utility method
515
+ * Adds descendants for each item passed
516
+ * @param items List of child items
517
+ * @returns {void}
518
+ */
519
+ addItemDescendantsToRender(items) {
520
+ items.forEach((item) => {
521
+ /**
522
+ * Collapse an item to prevent tree show too many nested expanded
523
+ */
524
+ if (this.treeManager.isItemExpanded(item)) {
525
+ this.treeManager.collapseItem(item);
526
+ }
527
+ /**
528
+ * show all descendants of items to make them all are selectable
529
+ * and user can navigate into nested data
530
+ */
531
+ const children = this.treeManager.getItemChildren(item);
532
+ if (children.length) {
533
+ this.addNestedItemsToRender(children, items);
534
+ }
535
+ });
536
+ }
537
+ /**
538
+ * Utility method
539
+ * Add nested children of item list
540
+ * @param items List of items
541
+ * @param excludeItems List of exclude items
542
+ * @returns {void}
543
+ */
544
+ addNestedItemsToRender(items, excludeItems) {
545
+ items.forEach(item => {
546
+ // Skip hidden and exclude item
547
+ if (!item.hidden && !excludeItems.includes(item)) {
548
+ // Add item and nested children
549
+ this.treeManager.includeItem(item);
550
+ const children = this.treeManager.getItemChildren(item);
551
+ if (children.length) {
552
+ this.addNestedItemsToRender(children, excludeItems);
553
+ }
554
+ }
555
+ });
556
+ }
557
+ /**
558
+ * Utility method
559
+ * Adds ancestors for each item passed and expand
560
+ * @param items List of child items
561
+ * @returns {void}
562
+ */
563
+ addExpandedAncestorsToRender(items) {
564
+ // establish unique ancestors set
565
+ const ancestors = new Set();
566
+ // we iterate each item match so as to find ancestors
567
+ items.forEach((item) => {
568
+ // get the ancestors
569
+ const parent = this.treeManager.getItemParent(item);
570
+ if (parent && !ancestors.has(parent)) {
571
+ this.treeManager.getItemAncestors(item).forEach((ancestor) => {
572
+ ancestors.add(ancestor); // track ancestors
573
+ this.addExpandedAncestorToRender(ancestor);
574
+ });
575
+ }
576
+ });
577
+ }
578
+ /**
579
+ * Utility method
580
+ * Adds parent and expands
581
+ * @param ancestor parent item
582
+ * @returns {void}
583
+ */
584
+ addExpandedAncestorToRender(ancestor) {
585
+ this.treeManager.includeItem(ancestor);
586
+ this.treeManager.expandItem(ancestor);
587
+ }
588
+ /**
589
+ * Reacts to pill removal by de-selecting the related item
590
+ * @param event Event containing the pill item
591
+ *
592
+ * @returns {void}
593
+ */
594
+ onPillRemoved(event) {
595
+ const pill = event.target;
596
+ const item = this.queryItemsByPropertyValue('value', pill.value)[0];
597
+ if (item) {
598
+ this.treeManager.uncheckItem(item);
599
+ // Focus must be shifted as otherwise focus is shifted to body once the item is removed and popup gets closed
600
+ this.shiftFocus();
601
+ }
602
+ }
603
+ /**
604
+ * Handles key input
605
+ * @param event Key down event object
606
+ * @returns {void}
607
+ */
608
+ /* istanbul ignore next */
609
+ onKeyDown(event) {
610
+ var _a, _b;
611
+ // There are three areas, which have different reaction on key press:
612
+ // 1) search field
613
+ // 2) tree selection
614
+ // 3) popup panel
615
+ if (((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) === this.selectionAreaEl && this.listEl) {
616
+ // Focus within selection area. Propagate all events
617
+ this.reTargetEvent(event, this.listEl);
618
+ }
619
+ else if (!((_b = this.popupEl) === null || _b === void 0 ? void 0 : _b.focused)) {
620
+ // search field is in focus
621
+ // combo box logic should take care
622
+ super.onKeyDown(event);
623
+ }
624
+ else {
625
+ // up/down to selection area
626
+ switch (event.key) {
627
+ case 'Up':
628
+ case 'ArrowUp':
629
+ case 'Down':
630
+ case 'ArrowDown':
631
+ super.onKeyDown(event);
632
+ break;
633
+ // no default
634
+ }
635
+ }
636
+ }
637
+ /**
638
+ * Navigates up the list.
639
+ * Opens the list if closed.
640
+ * @param event keyboard event
641
+ * @returns {void}
642
+ */
643
+ /* istanbul ignore next */
644
+ up(event) {
645
+ super.up(event);
646
+ this.focusOnSelectionArea();
647
+ }
648
+ /**
649
+ * Navigates down the list.
650
+ * Opens the list if closed.
651
+ * @param event keyboard event
652
+ * @returns {void}
653
+ */
654
+ /* istanbul ignore next */
655
+ down(event) {
656
+ super.down(event);
657
+ this.focusOnSelectionArea();
658
+ }
659
+ /**
660
+ * Make sure that after up/down keys the focus gracefully moves to selection area
661
+ * so the user can then use left/right/Enter keys for keyboard navigation
662
+ * @returns {void}
663
+ */
664
+ /* istanbul ignore next */
665
+ focusOnSelectionArea() {
666
+ // The logic needs to happen after the update cycle
667
+ // as otherwise focus logic may contradict with other components
668
+ // and the focus is not moved
669
+ void this.updateComplete.then(() => {
670
+ var _a;
671
+ (_a = this.selectionAreaEl) === null || _a === void 0 ? void 0 : _a.focus();
672
+ });
673
+ }
674
+ /**
675
+ * Adds a throttled update for pills and memo
676
+ * @returns {void}
677
+ */
678
+ modificationUpdate() {
679
+ super.modificationUpdate();
680
+ this.memoUpdateThrottle.schedule(() => {
681
+ this.updatePills();
682
+ this.updateMemo();
683
+ });
684
+ }
685
+ /**
686
+ * Update pills if {@link TreeSelect.showPills} showPills is applied
687
+ *
688
+ * @returns {void}
689
+ */
690
+ updatePills() {
691
+ if (this.showPills) {
692
+ this.pillsData = this.checkedGroupedItems.slice();
693
+ this.hasPills = !!this.pillsData.length;
694
+ }
695
+ }
696
+ /**
697
+ * Queries the composer for data items. Uses Infinity depth
698
+ * @param engine Composer query engine
699
+ * @returns Collection of matched items
700
+ * @override
701
+ */
702
+ queryItems(engine) {
703
+ return this.composer.queryItems(engine, Infinity);
704
+ }
705
+ /**
706
+ * Queries the composer for data items,
707
+ * matching by property value. Uses Infinity depth
708
+ * @param property Property name to query
709
+ * @param value Property value to match against
710
+ * @returns Collection of matched items
711
+ * @override
712
+ */
713
+ queryItemsByPropertyValue(property, value) {
714
+ return this.composer.queryItemsByPropertyValue(property, value, Infinity);
715
+ }
716
+ /**
717
+ * Filter template
718
+ * @returns Render template
719
+ */
720
+ get filtersTemplate() {
721
+ return html `
722
+ <div part="control-container filter-control">
723
+ <div part="match-count-wrapper">
724
+ ${this.matchCountTemplate}
725
+ </div>
726
+ ${this.hasSelectable ? html `<div part="filter-wrapper">
727
+ <div
728
+ role="button"
729
+ tabindex="0"
730
+ active
731
+ part="control full-filter${!this.selectionFilterState ? ' active' : ''}"
732
+ @tap="${this.fullClickHandler}">${this.t('FULL_LIST')}</div>
733
+ <div
734
+ role="button"
735
+ tabindex="${ifDefined(this.hasActiveSelection ? 0 : undefined)}"
736
+ part="control selected-filter${this.selectionFilterState ? ' active' : ''}${!this.hasActiveSelection ? ' disabled' : ''}"
737
+ @tap="${this.selectedClickHandler}">${this.t('SELECTED')}</div>
738
+ </div>` : html ``}
739
+ </div>
740
+ `;
741
+ }
742
+ /**
743
+ * Tree control template
744
+ * @returns Render template
745
+ */
746
+ get treeControlsTemplate() {
747
+ if (!this.hasSelectable) {
748
+ return html ``;
749
+ }
750
+ let expansionControl = html ``;
751
+ if (this.expansionControlVisible) {
752
+ expansionControl = html `
753
+ <div part="filter-wrapper">
754
+ <div
755
+ role="button"
756
+ tabindex="0"
757
+ part="control expand-toggle"
758
+ @tap="${this.expansionToggleClickHandler}">${this.t('EXPAND_COLLAPSE', { expansion: this.hasExpansion })}</div>
759
+ </div>
760
+ `;
761
+ }
762
+ return html `
763
+ <div part="control-container tree-control">
764
+ <ef-checkbox
765
+ part="selection-toggle"
766
+ .checked="${this.isAllSelected}"
767
+ .indeterminate="${this.hasActiveSelection && !this.isAllSelected}"
768
+ @checked-changed="${this.selectionToggleHandler}">${this.t('SELECT_CONTROL', { selected: this.isAllSelected })}</ef-checkbox>
769
+ ${expansionControl}
770
+ </div>
771
+ `;
772
+ }
773
+ /**
774
+ * Conditional filter matches template
775
+ * @returns Render template
776
+ */
777
+ get matchCountTemplate() {
778
+ return this.query ? html `
779
+ <span part="match-count">${this.t('MATCHES_NUM', { numMatched: this.filterCount })}</span>
780
+ ` : html ``;
781
+ }
782
+ /**
783
+ * Commit controls template
784
+ * @returns Render template
785
+ */
786
+ get commitControlsTemplate() {
787
+ return html `
788
+ <ef-button
789
+ id="done"
790
+ part="done-button"
791
+ cta
792
+ @tap="${this.save}">${this.t('DONE')}</ef-button>
793
+ <ef-button
794
+ id="cancel"
795
+ part="cancel-button"
796
+ @tap="${this.cancel}">${this.t('CANCEL')}</ef-button>
797
+ `;
798
+ }
799
+ /**
800
+ * Pills template
801
+ * @returns Render template
802
+ */
803
+ get pillsTemplate() {
804
+ // always injected when we have show pills vs injecting and re-injecting partial
805
+ // visibility will typically be controlled by styling: display: none / block or similar
806
+ if (this.showPills && this.hasPills && this.hasSelectable) {
807
+ return html `<div part="pills">
808
+ ${repeat(this.pillsData, pill => pill.value, pill => html `
809
+ <ef-pill
810
+ tabindex="-1"
811
+ clears
812
+ .readonly="${pill.readonly || this.readonly}"
813
+ .disabled="${pill.disabled || this.disabled}"
814
+ .value="${pill.value}"
815
+ @clear="${this.onPillRemoved}">${pill.label}</ef-pill>`)}
816
+ </div>`;
817
+ }
818
+ }
819
+ /**
820
+ * Returns template for popup
821
+ * Lazy loads the popup
822
+ * @returns Popup template or undefined
823
+ */
824
+ get popupTemplate() {
825
+ if (this.lazyRendered) {
826
+ return html `
827
+ <ef-overlay
828
+ part="list"
829
+ style=${styleMap(this.popupDynamicStyles)}
830
+ @opened="${this.onPopupOpened}"
831
+ @closed="${this.onPopupClosed}"
832
+ .focusBoundary="${this}"
833
+ .opened="${this.opened}"
834
+ .positionTarget="${this}"
835
+ .position="${POPUP_POSITION}"
836
+ .delegatesFocus=${true}
837
+ no-cancel-on-outside-click
838
+ tabindex="0"
839
+ with-shadow
840
+ no-overlap
841
+ no-autofocus>
842
+ <div part="section">
843
+ ${this.filtersTemplate}
844
+ ${this.treeControlsTemplate}
845
+ <div part="selection-area" tabindex="-1">
846
+ <ef-tree
847
+ id="internal-list"
848
+ @focusin="${this.shiftFocus}"
849
+ tabindex="-1"
850
+ part="tree"
851
+ .noRelation=${this.noRelation}
852
+ .renderer=${this.renderer}
853
+ .data="${this.composer}"
854
+ .multiple="${this.multiple}"></ef-tree>
855
+ ${this.pillsTemplate}
856
+ </div>
857
+ <div part="control-container footer" id="footer">${this.commitControlsTemplate}</div>
858
+ </div>
859
+ </ef-overlay>
860
+ `;
861
+ }
862
+ }
863
+ };
864
+ __decorate([
865
+ translate()
866
+ ], TreeSelect.prototype, "t", void 0);
867
+ __decorate([
868
+ property({ attribute: 'no-relation', type: Boolean })
869
+ ], TreeSelect.prototype, "noRelation", void 0);
870
+ __decorate([
871
+ property({ type: Boolean, attribute: 'show-pills' })
872
+ ], TreeSelect.prototype, "showPills", void 0);
873
+ __decorate([
874
+ property({ type: Array, attribute: false })
875
+ ], TreeSelect.prototype, "values", null);
876
+ __decorate([
877
+ property({ type: Function, attribute: false })
878
+ ], TreeSelect.prototype, "renderer", void 0);
879
+ __decorate([
880
+ query('[part=selection-area]')
881
+ ], TreeSelect.prototype, "selectionAreaEl", void 0);
882
+ __decorate([
883
+ query('[part=list]')
884
+ ], TreeSelect.prototype, "popupEl", void 0);
885
+ TreeSelect = __decorate([
886
+ customElement('ef-tree-select', {
887
+ alias: 'emerald-multi-select'
888
+ })
889
+ ], TreeSelect);
890
+ export { TreeSelect };