@refinitiv-ui/elements 0.0.0-build.1957399501.1

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