@refinitiv-ui/elements 5.3.4 → 5.8.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 (352) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/lib/accordion/custom-elements.md +18 -0
  3. package/lib/accordion/index.d.ts +5 -5
  4. package/lib/accordion/index.js +8 -11
  5. package/lib/appstate-bar/custom-elements.md +22 -0
  6. package/lib/appstate-bar/index.d.ts +5 -5
  7. package/lib/appstate-bar/index.js +8 -11
  8. package/lib/autosuggest/custom-elements.json +24 -4
  9. package/lib/autosuggest/custom-elements.md +54 -0
  10. package/lib/autosuggest/helpers/types.d.ts +1 -1
  11. package/lib/autosuggest/helpers/utils.d.ts +2 -2
  12. package/lib/autosuggest/helpers/utils.js +1 -2
  13. package/lib/autosuggest/index.d.ts +13 -8
  14. package/lib/autosuggest/index.js +38 -31
  15. package/lib/button/custom-elements.json +2 -2
  16. package/lib/button/custom-elements.md +23 -0
  17. package/lib/button/index.d.ts +13 -13
  18. package/lib/button/index.js +41 -31
  19. package/lib/button-bar/custom-elements.md +9 -0
  20. package/lib/button-bar/index.d.ts +3 -3
  21. package/lib/button-bar/index.js +8 -10
  22. package/lib/calendar/constants.d.ts +22 -0
  23. package/lib/calendar/constants.js +23 -0
  24. package/lib/calendar/custom-elements.json +8 -6
  25. package/lib/calendar/custom-elements.md +35 -0
  26. package/lib/calendar/index.d.ts +9 -7
  27. package/lib/calendar/index.js +20 -38
  28. package/lib/calendar/locales.d.ts +1 -31
  29. package/lib/calendar/locales.js +0 -104
  30. package/lib/calendar/types.d.ts +1 -5
  31. package/lib/calendar/types.js +1 -6
  32. package/lib/calendar/utils.d.ts +31 -1
  33. package/lib/calendar/utils.js +104 -2
  34. package/lib/canvas/custom-elements.json +7 -5
  35. package/lib/canvas/custom-elements.md +27 -0
  36. package/lib/canvas/index.d.ts +4 -3
  37. package/lib/canvas/index.js +8 -10
  38. package/lib/card/custom-elements.json +3 -1
  39. package/lib/card/custom-elements.md +24 -0
  40. package/lib/card/helpers/types.d.ts +1 -1
  41. package/lib/card/index.d.ts +10 -8
  42. package/lib/card/index.js +14 -13
  43. package/lib/chart/custom-elements.json +1 -1
  44. package/lib/chart/custom-elements.md +16 -0
  45. package/lib/chart/helpers/index.d.ts +2 -2
  46. package/lib/chart/helpers/index.js +2 -2
  47. package/lib/chart/index.d.ts +6 -6
  48. package/lib/chart/index.js +12 -14
  49. package/lib/checkbox/custom-elements.json +4 -4
  50. package/lib/checkbox/custom-elements.md +18 -0
  51. package/lib/checkbox/index.d.ts +21 -13
  52. package/lib/checkbox/index.js +56 -31
  53. package/lib/clock/custom-elements.json +21 -4
  54. package/lib/clock/custom-elements.md +28 -0
  55. package/lib/clock/index.d.ts +17 -5
  56. package/lib/clock/index.js +37 -18
  57. package/lib/clock/themes/halo/dark/index.js +1 -1
  58. package/lib/clock/themes/halo/light/index.js +1 -1
  59. package/lib/clock/themes/solar/charcoal/index.js +1 -1
  60. package/lib/clock/themes/solar/pearl/index.js +1 -1
  61. package/lib/clock/utils/TickManager.js +2 -2
  62. package/lib/collapse/custom-elements.md +27 -0
  63. package/lib/collapse/index.d.ts +7 -7
  64. package/lib/collapse/index.js +11 -13
  65. package/lib/color-dialog/custom-elements.json +29 -16
  66. package/lib/color-dialog/custom-elements.md +39 -0
  67. package/lib/color-dialog/elements/color-palettes.d.ts +5 -5
  68. package/lib/color-dialog/elements/color-palettes.js +9 -13
  69. package/lib/color-dialog/elements/grayscale-palettes.d.ts +5 -5
  70. package/lib/color-dialog/elements/grayscale-palettes.js +10 -13
  71. package/lib/color-dialog/elements/palettes.d.ts +10 -3
  72. package/lib/color-dialog/elements/palettes.js +58 -45
  73. package/lib/color-dialog/helpers/color-helpers.d.ts +7 -53
  74. package/lib/color-dialog/helpers/color-helpers.js +12 -109
  75. package/lib/color-dialog/helpers/value-model.d.ts +1 -1
  76. package/lib/color-dialog/helpers/value-model.js +18 -16
  77. package/lib/color-dialog/index.d.ts +19 -19
  78. package/lib/color-dialog/index.js +47 -45
  79. package/lib/combo-box/custom-elements.json +28 -16
  80. package/lib/combo-box/custom-elements.md +35 -0
  81. package/lib/combo-box/helpers/filter.d.ts +4 -4
  82. package/lib/combo-box/helpers/types.d.ts +2 -2
  83. package/lib/combo-box/index.d.ts +26 -18
  84. package/lib/combo-box/index.js +36 -27
  85. package/lib/combo-box/themes/halo/dark/index.js +1 -1
  86. package/lib/combo-box/themes/halo/light/index.js +1 -1
  87. package/lib/combo-box/themes/solar/charcoal/index.js +1 -1
  88. package/lib/combo-box/themes/solar/pearl/index.js +1 -1
  89. package/lib/counter/custom-elements.json +8 -4
  90. package/lib/counter/custom-elements.md +11 -0
  91. package/lib/counter/index.d.ts +5 -3
  92. package/lib/counter/index.js +11 -12
  93. package/lib/datetime-picker/custom-elements.json +52 -23
  94. package/lib/datetime-picker/custom-elements.md +57 -0
  95. package/lib/datetime-picker/index.d.ts +25 -14
  96. package/lib/datetime-picker/index.js +46 -35
  97. package/lib/datetime-picker/locales.d.ts +1 -1
  98. package/lib/datetime-picker/locales.js +12 -1
  99. package/lib/datetime-picker/themes/solar/charcoal/index.js +1 -1
  100. package/lib/datetime-picker/themes/solar/pearl/index.js +1 -1
  101. package/lib/datetime-picker/types.d.ts +1 -1
  102. package/lib/datetime-picker/utils.js +1 -1
  103. package/lib/dialog/custom-elements.json +34 -12
  104. package/lib/dialog/custom-elements.md +47 -0
  105. package/lib/dialog/index.d.ts +17 -20
  106. package/lib/dialog/index.js +28 -31
  107. package/lib/email-field/custom-elements.json +81 -94
  108. package/lib/email-field/custom-elements.md +37 -0
  109. package/lib/email-field/index.d.ts +44 -116
  110. package/lib/email-field/index.js +48 -249
  111. package/lib/email-field/themes/solar/charcoal/index.js +1 -1
  112. package/lib/email-field/themes/solar/pearl/index.js +1 -1
  113. package/lib/events.d.ts +2 -2
  114. package/lib/events.js +1 -2
  115. package/lib/flag/custom-elements.md +10 -0
  116. package/lib/flag/index.d.ts +6 -4
  117. package/lib/flag/index.js +12 -12
  118. package/lib/flag/utils/FlagLoader.d.ts +1 -1
  119. package/lib/flag/utils/FlagLoader.js +1 -1
  120. package/lib/header/custom-elements.md +18 -0
  121. package/lib/header/index.d.ts +2 -2
  122. package/lib/header/index.js +5 -8
  123. package/lib/heatmap/custom-elements.md +26 -0
  124. package/lib/heatmap/helpers/color.d.ts +1 -1
  125. package/lib/heatmap/helpers/color.js +1 -1
  126. package/lib/heatmap/helpers/text.d.ts +1 -1
  127. package/lib/heatmap/index.d.ts +7 -7
  128. package/lib/heatmap/index.js +15 -16
  129. package/lib/icon/custom-elements.json +6 -4
  130. package/lib/icon/custom-elements.md +8 -0
  131. package/lib/icon/index.d.ts +9 -6
  132. package/lib/icon/index.js +28 -18
  133. package/lib/icon/utils/IconLoader.d.ts +6 -1
  134. package/lib/icon/utils/IconLoader.js +24 -17
  135. package/lib/index.d.ts +2 -1
  136. package/lib/index.js +2 -1
  137. package/lib/interactive-chart/custom-elements.json +6 -10
  138. package/lib/interactive-chart/custom-elements.md +31 -0
  139. package/lib/interactive-chart/helpers/types.d.ts +2 -2
  140. package/lib/interactive-chart/index.d.ts +11 -8
  141. package/lib/interactive-chart/index.js +17 -17
  142. package/lib/item/custom-elements.json +4 -4
  143. package/lib/item/custom-elements.md +29 -0
  144. package/lib/item/helpers/types.d.ts +1 -1
  145. package/lib/item/index.d.ts +18 -8
  146. package/lib/item/index.js +36 -16
  147. package/lib/label/custom-elements.md +11 -0
  148. package/lib/label/index.d.ts +3 -3
  149. package/lib/label/index.js +12 -20
  150. package/lib/layout/custom-elements.md +26 -0
  151. package/lib/layout/index.d.ts +3 -3
  152. package/lib/layout/index.js +6 -9
  153. package/lib/led-gauge/custom-elements.json +4 -4
  154. package/lib/led-gauge/custom-elements.md +17 -0
  155. package/lib/led-gauge/index.d.ts +5 -4
  156. package/lib/led-gauge/index.js +9 -11
  157. package/lib/list/custom-elements.json +18 -5
  158. package/lib/list/custom-elements.md +32 -0
  159. package/lib/list/helpers/list-renderer.d.ts +2 -2
  160. package/lib/list/helpers/list-renderer.js +4 -2
  161. package/lib/list/helpers/types.d.ts +2 -2
  162. package/lib/list/index.d.ts +27 -10
  163. package/lib/list/index.js +54 -25
  164. package/lib/list/renderer.d.ts +2 -2
  165. package/lib/list/renderer.js +1 -1
  166. package/lib/loader/custom-elements.md +5 -0
  167. package/lib/loader/index.js +4 -8
  168. package/lib/multi-input/custom-elements.json +7 -6
  169. package/lib/multi-input/custom-elements.md +43 -0
  170. package/lib/multi-input/helpers/types.d.ts +1 -1
  171. package/lib/multi-input/index.d.ts +11 -7
  172. package/lib/multi-input/index.js +20 -17
  173. package/lib/multi-input/themes/solar/charcoal/index.js +1 -1
  174. package/lib/multi-input/themes/solar/pearl/index.js +1 -1
  175. package/lib/notification/custom-elements.md +26 -0
  176. package/lib/notification/elements/notification-tray.d.ts +2 -2
  177. package/lib/notification/elements/notification-tray.js +6 -9
  178. package/lib/notification/elements/notification.d.ts +5 -5
  179. package/lib/notification/elements/notification.js +8 -11
  180. package/lib/notification/helpers/status.d.ts +1 -1
  181. package/lib/notification/helpers/status.js +1 -1
  182. package/lib/notification/helpers/types.d.ts +1 -1
  183. package/lib/notification/index.d.ts +2 -2
  184. package/lib/notification/index.js +2 -2
  185. package/lib/number-field/custom-elements.json +99 -54
  186. package/lib/number-field/custom-elements.md +42 -0
  187. package/lib/number-field/index.d.ts +96 -51
  188. package/lib/number-field/index.js +121 -89
  189. package/lib/number-field/themes/solar/charcoal/index.js +1 -1
  190. package/lib/number-field/themes/solar/pearl/index.js +1 -1
  191. package/lib/overlay/custom-elements.json +26 -13
  192. package/lib/overlay/custom-elements.md +54 -0
  193. package/lib/overlay/elements/overlay-backdrop.d.ts +4 -4
  194. package/lib/overlay/elements/overlay-backdrop.js +6 -9
  195. package/lib/overlay/elements/overlay-viewport.d.ts +3 -3
  196. package/lib/overlay/elements/overlay-viewport.js +5 -9
  197. package/lib/overlay/elements/overlay.d.ts +10 -5
  198. package/lib/overlay/elements/overlay.js +27 -28
  199. package/lib/overlay/index.d.ts +2 -2
  200. package/lib/overlay/index.js +1 -1
  201. package/lib/overlay/managers/backdrop-manager.d.ts +1 -1
  202. package/lib/overlay/managers/backdrop-manager.js +2 -2
  203. package/lib/overlay/managers/close-manager.js +1 -1
  204. package/lib/overlay/managers/focus-manager.js +2 -2
  205. package/lib/overlay/managers/interaction-lock-manager.js +2 -2
  206. package/lib/overlay/managers/viewport-manager.d.ts +2 -2
  207. package/lib/overlay/managers/viewport-manager.js +6 -2
  208. package/lib/overlay/managers/zindex-manager.js +1 -1
  209. package/lib/overlay-menu/custom-elements.json +70 -20
  210. package/lib/overlay-menu/custom-elements.md +44 -0
  211. package/lib/overlay-menu/helpers/types.d.ts +3 -3
  212. package/lib/overlay-menu/index.d.ts +26 -19
  213. package/lib/overlay-menu/index.js +47 -33
  214. package/lib/overlay-menu/managers/menu-manager.d.ts +2 -2
  215. package/lib/overlay-menu/managers/menu-manager.js +3 -3
  216. package/lib/pagination/custom-elements.md +27 -0
  217. package/lib/pagination/index.d.ts +8 -8
  218. package/lib/pagination/index.js +13 -15
  219. package/lib/panel/custom-elements.md +11 -0
  220. package/lib/panel/index.d.ts +3 -3
  221. package/lib/panel/index.js +6 -9
  222. package/lib/password-field/custom-elements.json +62 -67
  223. package/lib/password-field/custom-elements.md +39 -0
  224. package/lib/password-field/index.d.ts +43 -94
  225. package/lib/password-field/index.js +52 -198
  226. package/lib/password-field/themes/solar/charcoal/index.js +1 -1
  227. package/lib/password-field/themes/solar/pearl/index.js +1 -1
  228. package/lib/pill/custom-elements.json +8 -6
  229. package/lib/pill/custom-elements.md +22 -0
  230. package/lib/pill/index.d.ts +5 -5
  231. package/lib/pill/index.js +9 -11
  232. package/lib/progress-bar/custom-elements.md +18 -0
  233. package/lib/progress-bar/index.d.ts +3 -3
  234. package/lib/progress-bar/index.js +7 -9
  235. package/lib/radio-button/custom-elements.json +4 -4
  236. package/lib/radio-button/custom-elements.md +19 -0
  237. package/lib/radio-button/index.d.ts +25 -8
  238. package/lib/radio-button/index.js +84 -21
  239. package/lib/radio-button/radio-button-registry.d.ts +3 -2
  240. package/lib/radio-button/radio-button-registry.js +57 -4
  241. package/lib/rating/custom-elements.md +17 -0
  242. package/lib/rating/index.d.ts +3 -3
  243. package/lib/rating/index.js +9 -10
  244. package/lib/search-field/custom-elements.json +70 -74
  245. package/lib/search-field/custom-elements.md +41 -0
  246. package/lib/search-field/index.d.ts +44 -101
  247. package/lib/search-field/index.js +50 -220
  248. package/lib/search-field/themes/solar/charcoal/index.js +1 -1
  249. package/lib/search-field/themes/solar/pearl/index.js +1 -1
  250. package/lib/select/custom-elements.json +5 -4
  251. package/lib/select/custom-elements.md +24 -0
  252. package/lib/select/helpers/types.d.ts +1 -1
  253. package/lib/select/index.d.ts +18 -10
  254. package/lib/select/index.js +84 -45
  255. package/lib/sidebar-layout/custom-elements.json +2 -6
  256. package/lib/sidebar-layout/custom-elements.md +21 -0
  257. package/lib/sidebar-layout/index.d.ts +7 -6
  258. package/lib/sidebar-layout/index.js +9 -10
  259. package/lib/slider/custom-elements.json +4 -4
  260. package/lib/slider/custom-elements.md +28 -0
  261. package/lib/slider/index.d.ts +4 -4
  262. package/lib/slider/index.js +9 -10
  263. package/lib/sparkline/custom-elements.json +4 -4
  264. package/lib/sparkline/custom-elements.md +16 -0
  265. package/lib/sparkline/index.d.ts +6 -4
  266. package/lib/sparkline/index.js +10 -10
  267. package/lib/swing-gauge/custom-elements.json +5 -3
  268. package/lib/swing-gauge/custom-elements.md +17 -0
  269. package/lib/swing-gauge/helpers.d.ts +1 -1
  270. package/lib/swing-gauge/helpers.js +1 -1
  271. package/lib/swing-gauge/index.d.ts +9 -7
  272. package/lib/swing-gauge/index.js +17 -15
  273. package/lib/tab/custom-elements.json +2 -2
  274. package/lib/tab/custom-elements.md +22 -0
  275. package/lib/tab/index.d.ts +5 -5
  276. package/lib/tab/index.js +9 -12
  277. package/lib/tab/themes/solar/charcoal/index.js +1 -1
  278. package/lib/tab/themes/solar/pearl/index.js +1 -1
  279. package/lib/tab-bar/custom-elements.md +11 -0
  280. package/lib/tab-bar/index.d.ts +4 -4
  281. package/lib/tab-bar/index.js +9 -11
  282. package/lib/tab-bar/themes/solar/charcoal/index.js +1 -1
  283. package/lib/tab-bar/themes/solar/pearl/index.js +1 -1
  284. package/lib/text-field/custom-elements.json +78 -89
  285. package/lib/text-field/custom-elements.md +35 -0
  286. package/lib/text-field/index.d.ts +59 -79
  287. package/lib/text-field/index.js +99 -158
  288. package/lib/text-field/themes/solar/charcoal/index.js +1 -1
  289. package/lib/text-field/themes/solar/pearl/index.js +1 -1
  290. package/lib/time-picker/custom-elements.json +4 -4
  291. package/lib/time-picker/custom-elements.md +28 -0
  292. package/lib/time-picker/index.d.ts +7 -4
  293. package/lib/time-picker/index.js +15 -14
  294. package/lib/time-picker/themes/solar/charcoal/index.js +1 -1
  295. package/lib/time-picker/themes/solar/pearl/index.js +1 -1
  296. package/lib/toggle/custom-elements.json +4 -4
  297. package/lib/toggle/custom-elements.md +19 -0
  298. package/lib/toggle/index.d.ts +14 -4
  299. package/lib/toggle/index.js +31 -12
  300. package/lib/tooltip/custom-elements.md +14 -0
  301. package/lib/tooltip/elements/title-tooltip.js +2 -2
  302. package/lib/tooltip/elements/tooltip-element.d.ts +1 -1
  303. package/lib/tooltip/helpers/overflow-tooltip.d.ts +1 -1
  304. package/lib/tooltip/helpers/overflow-tooltip.js +1 -1
  305. package/lib/tooltip/helpers/renderer.d.ts +1 -1
  306. package/lib/tooltip/helpers/types.d.ts +1 -1
  307. package/lib/tooltip/index.d.ts +9 -9
  308. package/lib/tooltip/index.js +18 -20
  309. package/lib/tooltip/managers/tooltip-manager.d.ts +2 -2
  310. package/lib/tooltip/managers/tooltip-manager.js +3 -7
  311. package/lib/tornado-chart/custom-elements.md +18 -0
  312. package/lib/tornado-chart/elements/tornado-chart.d.ts +4 -4
  313. package/lib/tornado-chart/elements/tornado-chart.js +8 -11
  314. package/lib/tornado-chart/elements/tornado-item.d.ts +5 -5
  315. package/lib/tornado-chart/elements/tornado-item.js +10 -12
  316. package/lib/tornado-chart/index.d.ts +2 -2
  317. package/lib/tornado-chart/index.js +2 -2
  318. package/lib/tree/custom-elements.json +17 -3
  319. package/lib/tree/custom-elements.md +32 -0
  320. package/lib/tree/elements/tree-item.d.ts +4 -4
  321. package/lib/tree/elements/tree-item.js +10 -13
  322. package/lib/tree/elements/tree.d.ts +51 -5
  323. package/lib/tree/elements/tree.js +138 -11
  324. package/lib/tree/helpers/filter.d.ts +8 -0
  325. package/lib/tree/helpers/filter.js +33 -0
  326. package/lib/tree/helpers/renderer.d.ts +2 -2
  327. package/lib/tree/helpers/renderer.js +3 -3
  328. package/lib/tree/helpers/types.d.ts +9 -1
  329. package/lib/tree/index.d.ts +4 -4
  330. package/lib/tree/index.js +3 -3
  331. package/lib/tree/managers/tree-manager.d.ts +22 -10
  332. package/lib/tree/managers/tree-manager.js +56 -40
  333. package/lib/tree/themes/halo/dark/index.js +1 -1
  334. package/lib/tree/themes/halo/light/index.js +1 -1
  335. package/lib/tree/themes/solar/charcoal/index.js +1 -1
  336. package/lib/tree/themes/solar/pearl/index.js +1 -1
  337. package/lib/tree-select/custom-elements.json +10 -6
  338. package/lib/tree-select/custom-elements.md +26 -0
  339. package/lib/tree-select/helpers/types.d.ts +2 -2
  340. package/lib/tree-select/index.d.ts +32 -28
  341. package/lib/tree-select/index.js +54 -44
  342. package/lib/tree-select/themes/halo/dark/index.js +1 -1
  343. package/lib/tree-select/themes/halo/light/index.js +1 -1
  344. package/lib/tree-select/themes/solar/charcoal/index.js +1 -1
  345. package/lib/tree-select/themes/solar/pearl/index.js +1 -1
  346. package/lib/version.d.ts +1 -0
  347. package/lib/version.js +1 -0
  348. package/package.json +298 -15
  349. package/lib/autosuggest/helpers/const.d.ts +0 -2
  350. package/lib/autosuggest/helpers/const.js +0 -3
  351. package/lib/overlay-menu/helpers/uuid.d.ts +0 -7
  352. package/lib/overlay-menu/helpers/uuid.js +0 -13
@@ -1,9 +1,9 @@
1
1
  import { JSXInterface } from '../../jsx';
2
2
  import { TemplateResult, ControlElement, PropertyValues } from '@refinitiv-ui/core';
3
- import '../../icon';
4
- import '../../checkbox';
5
- import { TreeDataItem } from '../helpers/types';
6
- import { CheckedState } from '../managers/tree-manager';
3
+ import '../../icon/index.js';
4
+ import '../../checkbox/index.js';
5
+ import type { TreeDataItem } from '../helpers/types';
6
+ import { CheckedState } from '../managers/tree-manager.js';
7
7
  /**
8
8
  * Displays a tree list item.
9
9
  * Groups display expansion arrows.
@@ -1,15 +1,12 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { customElement, html, property, ControlElement } from '@refinitiv-ui/core';
8
- import '../../icon';
9
- import { preload } from '../../icon';
10
- import '../../checkbox';
11
- import { CheckedState } from '../managers/tree-manager';
12
- import { VERSION } from '../../';
1
+ import { __decorate } from "tslib";
2
+ import { html, ControlElement } 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 { VERSION } from '../../version.js';
6
+ import '../../icon/index.js';
7
+ import { preload } from '../../icon/index.js';
8
+ import '../../checkbox/index.js';
9
+ import { CheckedState } from '../managers/tree-manager.js';
13
10
  preload('right');
14
11
  const emptyTemplate = html ``;
15
12
  /**
@@ -106,7 +103,7 @@ let TreeItem = class TreeItem extends ControlElement {
106
103
  if (typeof this.icon === 'undefined') {
107
104
  return emptyTemplate;
108
105
  }
109
- return html `<ef-icon part="label-icon" src="${this.icon}"></ef-icon>`;
106
+ return html `<ef-icon part="label-icon" icon="${this.icon}"></ef-icon>`;
110
107
  }
111
108
  /**
112
109
  * Is the item fully checked?
@@ -1,10 +1,10 @@
1
1
  import { JSXInterface } from '../../jsx';
2
2
  import { PropertyValues, TapEvent } from '@refinitiv-ui/core';
3
- import { CollectionComposer } from '@refinitiv-ui/utils';
4
- import { List } from '../../list';
5
- import { TreeRenderer } from '../helpers/renderer';
6
- import { TreeData, TreeDataItem } from '../helpers/types';
7
- import { TreeManagerMode } from '../managers/tree-manager';
3
+ import { CollectionComposer } from '@refinitiv-ui/utils/lib/collection.js';
4
+ import { List } from '../../list/index.js';
5
+ import { TreeRenderer } from '../helpers/renderer.js';
6
+ import type { TreeData, TreeDataItem, TreeFilter } from '../helpers/types';
7
+ import { TreeManagerMode } from '../managers/tree-manager.js';
8
8
  /**
9
9
  * Displays a tree structure
10
10
  * to be used for menus and group selections
@@ -35,6 +35,16 @@ export declare class Tree<T extends TreeDataItem = TreeDataItem> extends List<T>
35
35
  * selection mode is enabled
36
36
  */
37
37
  noRelation: boolean;
38
+ /**
39
+ * Query string applied to tree
40
+ */
41
+ query: string;
42
+ /**
43
+ * Custom filter for static data
44
+ * @type {TreeFilter<T> | null}
45
+ * @ignore set to protected for now and need to discuss before set to public API
46
+ */
47
+ protected filter: TreeFilter<T> | null;
38
48
  /**
39
49
  * Renderer used for generating tree items
40
50
  * @type {TreeRenderer}
@@ -117,10 +127,46 @@ export declare class Tree<T extends TreeDataItem = TreeDataItem> extends List<T>
117
127
  * @override
118
128
  */
119
129
  protected update(changedProperties: PropertyValues): void;
130
+ /**
131
+ * Filter the internal items by query changes items' hidden state
132
+ * @returns {void}
133
+ */
134
+ protected filterItems(): void;
135
+ /**
136
+ * Utility method
137
+ * Adds descendants for each item passed
138
+ * @param items List of child items
139
+ * @returns {void}
140
+ */
141
+ protected addItemDescendantsToRender(items: T[]): void;
142
+ /**
143
+ * Utility method
144
+ * Add nested children of item list
145
+ * @param items List of items
146
+ * @param excludeItems List of exclude items
147
+ * @param [includeHidden=false] Include hidden items
148
+ * @returns {void}
149
+ */
150
+ protected addNestedItemsToRender(items: readonly T[], excludeItems: readonly T[], includeHidden?: boolean): void;
151
+ /**
152
+ * Utility method
153
+ * Adds ancestors for each item passed and expand
154
+ * @param items List of child items
155
+ * @returns {void}
156
+ */
157
+ protected addExpandedAncestorsToRender(items: T[]): void;
158
+ /**
159
+ * Utility method
160
+ * Adds parent and expands
161
+ * @param ancestor parent item
162
+ * @returns {void}
163
+ */
164
+ protected addExpandedAncestorToRender(ancestor: T): void;
120
165
  /**
121
166
  * Selected items in tree
122
167
  * @override
123
168
  * @type {string[]}
169
+ * @default []
124
170
  */
125
171
  get values(): string[];
126
172
  set values(value: string[]);
@@ -1,14 +1,11 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { customElement, property } from '@refinitiv-ui/core';
8
- import { VERSION } from '../../';
9
- import { List } from '../../list';
10
- import { TreeRenderer } from '../helpers/renderer';
11
- import { TreeManager, TreeManagerMode } from '../managers/tree-manager';
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
3
+ import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
4
+ import { VERSION } from '../../version.js';
5
+ import { List } from '../../list/index.js';
6
+ import { TreeRenderer } from '../helpers/renderer.js';
7
+ import { defaultFilter } from '../helpers/filter.js';
8
+ import { TreeManager, TreeManagerMode } from '../managers/tree-manager.js';
12
9
  const EXPAND_TOGGLE_ATTR = 'expand-toggle';
13
10
  /**
14
11
  * Displays a tree structure
@@ -37,6 +34,16 @@ let Tree = class Tree extends List {
37
34
  * selection mode is enabled
38
35
  */
39
36
  this.noRelation = false;
37
+ /**
38
+ * Query string applied to tree
39
+ */
40
+ this.query = '';
41
+ /**
42
+ * Custom filter for static data
43
+ * @type {TreeFilter<T> | null}
44
+ * @ignore set to protected for now and need to discuss before set to public API
45
+ */
46
+ this.filter = defaultFilter(this);
40
47
  /**
41
48
  * Renderer used for generating tree items
42
49
  * @type {TreeRenderer}
@@ -230,12 +237,129 @@ let Tree = class Tree extends List {
230
237
  if (changedProperties.has('noRelation') || changedProperties.has('multiple')) {
231
238
  this.manager.setMode(this.mode);
232
239
  }
240
+ if (changedProperties.has('query') || changedProperties.has('data')) {
241
+ this.filterItems();
242
+ }
233
243
  super.update(changedProperties);
234
244
  }
245
+ /**
246
+ * Filter the internal items by query changes items' hidden state
247
+ * @returns {void}
248
+ */
249
+ filterItems() {
250
+ // if filter is null, it is off and external app is responsible
251
+ if (this.filter) {
252
+ const filter = this.filter;
253
+ const items = this.queryItems((item) => {
254
+ // Do not filter hidden items
255
+ if (item.hidden) {
256
+ return false;
257
+ }
258
+ const result = filter(item);
259
+ if (result) {
260
+ this.manager.includeItem(item);
261
+ }
262
+ else {
263
+ this.manager.excludeItem(item);
264
+ }
265
+ return result;
266
+ }).slice();
267
+ // Do not expand tree if there is no filter applied
268
+ if (this.query) {
269
+ /**
270
+ * Add all descendants of item list to make the descendants
271
+ * are accessible which user can navigate into the nested data
272
+ */
273
+ this.addItemDescendantsToRender(items);
274
+ /**
275
+ * Add all parents of item list which they must be shown
276
+ * when some descendant is shown.
277
+ */
278
+ this.addExpandedAncestorsToRender(items);
279
+ }
280
+ }
281
+ }
282
+ /**
283
+ * Utility method
284
+ * Adds descendants for each item passed
285
+ * @param items List of child items
286
+ * @returns {void}
287
+ */
288
+ addItemDescendantsToRender(items) {
289
+ items.forEach((item) => {
290
+ /**
291
+ * Collapse an item to prevent tree show too many nested expanded
292
+ */
293
+ if (this.manager.isItemExpanded(item)) {
294
+ this.manager.collapseItem(item);
295
+ }
296
+ /**
297
+ * show all descendants of items to make them all are selectable
298
+ * and user can navigate into nested data
299
+ */
300
+ const children = this.composer.getItemChildren(item);
301
+ if (children.length) {
302
+ this.addNestedItemsToRender(children, items, false);
303
+ }
304
+ });
305
+ }
306
+ /**
307
+ * Utility method
308
+ * Add nested children of item list
309
+ * @param items List of items
310
+ * @param excludeItems List of exclude items
311
+ * @param [includeHidden=false] Include hidden items
312
+ * @returns {void}
313
+ */
314
+ addNestedItemsToRender(items, excludeItems, includeHidden = false) {
315
+ items.forEach(item => {
316
+ // Skip hidden and exclude item
317
+ if (!item.hidden && !excludeItems.includes(item)) {
318
+ // Add item and nested children
319
+ this.manager.includeItem(item);
320
+ const children = this.manager.getItemChildren(item);
321
+ if (children.length) {
322
+ this.addNestedItemsToRender(children, excludeItems, includeHidden);
323
+ }
324
+ }
325
+ });
326
+ }
327
+ /**
328
+ * Utility method
329
+ * Adds ancestors for each item passed and expand
330
+ * @param items List of child items
331
+ * @returns {void}
332
+ */
333
+ addExpandedAncestorsToRender(items) {
334
+ // Establish unique ancestors set
335
+ const ancestors = new Set();
336
+ // we iterate each item match so as to find ancestors
337
+ items.forEach((item) => {
338
+ // Get the ancestors
339
+ const parent = this.manager.getItemParent(item);
340
+ if (parent && !ancestors.has(parent)) {
341
+ this.manager.getItemAncestors(item).forEach((ancestor) => {
342
+ ancestors.add(ancestor); // track ancestors
343
+ this.addExpandedAncestorToRender(ancestor);
344
+ });
345
+ }
346
+ });
347
+ }
348
+ /**
349
+ * Utility method
350
+ * Adds parent and expands
351
+ * @param ancestor parent item
352
+ * @returns {void}
353
+ */
354
+ addExpandedAncestorToRender(ancestor) {
355
+ this.manager.includeItem(ancestor);
356
+ this.manager.expandItem(ancestor);
357
+ }
235
358
  /**
236
359
  * Selected items in tree
237
360
  * @override
238
361
  * @type {string[]}
362
+ * @default []
239
363
  */
240
364
  get values() {
241
365
  return this.manager.checkedItems.map(item => {
@@ -277,6 +401,9 @@ __decorate([
277
401
  __decorate([
278
402
  property({ attribute: 'no-relation', type: Boolean })
279
403
  ], Tree.prototype, "noRelation", void 0);
404
+ __decorate([
405
+ property({ type: String })
406
+ ], Tree.prototype, "query", void 0);
280
407
  __decorate([
281
408
  property({ attribute: false })
282
409
  ], Tree.prototype, "renderer", void 0);
@@ -0,0 +1,8 @@
1
+ import type { Tree, TreeDataItem } from '../index';
2
+ import type { TreeFilter } from './types';
3
+ /**
4
+ * Default filter used by tree
5
+ * @param el Tree instance to filter
6
+ * @returns Filter accepting an item
7
+ */
8
+ export declare const defaultFilter: <T extends TreeDataItem = TreeDataItem>(el: Tree<T>) => TreeFilter<T>;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Default filter used by tree
3
+ * @param el Tree instance to filter
4
+ * @returns Filter accepting an item
5
+ */
6
+ export const defaultFilter = (el) => {
7
+ // reference query string for validating queryRegExp cache state
8
+ let query = '';
9
+ // cache RegExp
10
+ let queryRegExp;
11
+ // Get current RegExp, or renew if out of date
12
+ // this is fetched on demand by filter/renderer
13
+ // only created once per query
14
+ const getRegularExpressionOfQuery = () => {
15
+ if (el.query !== query || !queryRegExp) {
16
+ query = el.query || '';
17
+ queryRegExp = new RegExp(query.replace(/(\W)/g, '\\$1'), 'i');
18
+ }
19
+ return queryRegExp;
20
+ };
21
+ // return scoped custom filter
22
+ return (item) => {
23
+ const label = item.label;
24
+ if (!label) {
25
+ return false;
26
+ }
27
+ const regex = getRegularExpressionOfQuery();
28
+ const result = regex.test(label);
29
+ // this regex uses global scope, so the index needs resetting
30
+ regex.lastIndex = 0;
31
+ return result;
32
+ };
33
+ };
@@ -1,5 +1,5 @@
1
- import { Renderer } from '../../list/renderer';
2
- import '../elements/tree-item';
1
+ import { Renderer } from '../../list/renderer.js';
2
+ import '../elements/tree-item.js';
3
3
  export declare class TreeRenderer extends Renderer {
4
4
  constructor(scope?: unknown);
5
5
  }
@@ -1,6 +1,6 @@
1
- import { TreeManager, TreeManagerMode, CheckedState } from '../managers/tree-manager';
2
- import { Renderer } from '../../list/renderer';
3
- import '../elements/tree-item';
1
+ import { TreeManager, TreeManagerMode, CheckedState } from '../managers/tree-manager.js';
2
+ import { Renderer } from '../../list/renderer.js';
3
+ import '../elements/tree-item.js';
4
4
  export class TreeRenderer extends Renderer {
5
5
  constructor(scope) {
6
6
  let manager;
@@ -1,4 +1,4 @@
1
- import { CollectionComposer, DataItem } from '@refinitiv-ui/utils';
1
+ import type { CollectionComposer, DataItem } from '@refinitiv-ui/utils/lib/collection';
2
2
  export declare type TreeData<T extends TreeDataItem = TreeDataItem> = T[] | CollectionComposer<T> | null;
3
3
  export interface TreeDataItem extends DataItem {
4
4
  /**
@@ -15,3 +15,11 @@ export interface TreeDataItem extends DataItem {
15
15
  */
16
16
  expanded?: boolean;
17
17
  }
18
+ /**
19
+ * Predicate callback
20
+ * Matches item against filter function
21
+ *
22
+ * @param item Item to filter
23
+ * @return Does item match filter
24
+ */
25
+ export declare type TreeFilter<T extends TreeDataItem = TreeDataItem> = (item: T) => boolean;
@@ -1,4 +1,4 @@
1
- export * from './elements/tree';
2
- export * from './elements/tree-item';
3
- export { TreeRenderer } from './helpers/renderer';
4
- export { TreeData, TreeDataItem } from './helpers/types';
1
+ export * from './elements/tree.js';
2
+ export * from './elements/tree-item.js';
3
+ export { TreeRenderer } from './helpers/renderer.js';
4
+ export type { TreeData, TreeDataItem } from './helpers/types';
package/lib/tree/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from './elements/tree';
2
- export * from './elements/tree-item';
3
- export { TreeRenderer } from './helpers/renderer';
1
+ export * from './elements/tree.js';
2
+ export * from './elements/tree-item.js';
3
+ export { TreeRenderer } from './helpers/renderer.js';
@@ -1,5 +1,5 @@
1
- import { CollectionComposer } from '@refinitiv-ui/utils';
2
- import { TreeDataItem } from '../helpers/types';
1
+ import type { CollectionComposer } from '@refinitiv-ui/utils/lib/collection';
2
+ import type { TreeDataItem } from '../helpers/types';
3
3
  export declare enum CheckedState {
4
4
  CHECKED = 1,
5
5
  UNCHECKED = 0,
@@ -72,18 +72,30 @@ export declare class TreeManager<T extends TreeDataItem> {
72
72
  * @returns `True` if the item is hidden
73
73
  */
74
74
  private isItemHidden;
75
- /**
76
- * Is the item visible?
77
- * @param item Original data item
78
- * @returns `True` if the item is visible
79
- */
80
- private isItemVisible;
81
75
  /**
82
76
  * Is the item checked?
83
77
  * @param item Original data item
84
78
  * @returns `True` if the item is checked
85
79
  */
86
80
  private isItemChecked;
81
+ /**
82
+ * Is the item checked indeterminately?
83
+ * @param item Original data item
84
+ * @returns `True` if the item has managed relationships and contains checked descendants
85
+ */
86
+ private isItemCheckedIndeterminate;
87
+ /**
88
+ * Determines whether the item is unchecked and can be changed to a checked state.
89
+ * @param item Original data item
90
+ * @returns True if the item can be changed to 'checked'.
91
+ */
92
+ private canCheckItem;
93
+ /**
94
+ * Determines whether the item is checked and can be changed to an unchecked state.
95
+ * @param item Original data item
96
+ * @returns True if the item can be changed to 'unchecked'.
97
+ */
98
+ private canUncheckItem;
87
99
  /**
88
100
  * Makes an item visible
89
101
  * @param item Original data item
@@ -98,10 +110,10 @@ export declare class TreeManager<T extends TreeDataItem> {
98
110
  private hideItem;
99
111
  /**
100
112
  * Forces a modification event, so that the renderer can update.
101
- * @param item Item of which to find ancestors
113
+ * @param item Item of which to find path
102
114
  * @returns {void}
103
115
  */
104
- private forceUpdateOnAncestors;
116
+ private forceUpdateOnPath;
105
117
  /**
106
118
  * Sets the mode (algorithm) the manager should use
107
119
  * @param mode Tree manager mode
@@ -48,7 +48,10 @@ export class TreeManager {
48
48
  */
49
49
  get checkedItems() {
50
50
  return this.composer.queryItems((item) => {
51
- return this.isItemChecked(item) && (!this.manageRelationships || !this.getItemChildren(item).length);
51
+ if (this.manageRelationships && this.isItemParent(item)) {
52
+ return false;
53
+ }
54
+ return this.isItemChecked(item);
52
55
  }, Infinity);
53
56
  }
54
57
  /**
@@ -91,8 +94,7 @@ export class TreeManager {
91
94
  */
92
95
  getVisibleItems(items, result = []) {
93
96
  for (const item of items) {
94
- if (this.isItemVisible(item)) {
95
- result.push(item);
97
+ if (!this.isItemHidden(item) && result.push(item) && this.isItemExpanded(item)) {
96
98
  const children = this.getItemChildren(item);
97
99
  children.length && this.getVisibleItems(children, result);
98
100
  }
@@ -107,24 +109,50 @@ export class TreeManager {
107
109
  isItemHidden(item) {
108
110
  return this.composer.getItemPropertyValue(item, 'hidden') === true;
109
111
  }
110
- /**
111
- * Is the item visible?
112
- * @param item Original data item
113
- * @returns `True` if the item is visible
114
- */
115
- isItemVisible(item) {
116
- return !this.isItemHidden(item)
117
- && !this.composer.getItemAncestors(item)
118
- .some(ancestor => !this.isItemExpanded(ancestor));
119
- }
120
112
  /**
121
113
  * Is the item checked?
122
114
  * @param item Original data item
123
115
  * @returns `True` if the item is checked
124
116
  */
125
117
  isItemChecked(item) {
118
+ if (this.manageRelationships && this.isItemParent(item)) {
119
+ return !this.getItemChildren(item).some(child => !this.isItemChecked(child));
120
+ }
126
121
  return this.composer.getItemPropertyValue(item, 'selected') === true;
127
122
  }
123
+ /**
124
+ * Is the item checked indeterminately?
125
+ * @param item Original data item
126
+ * @returns `True` if the item has managed relationships and contains checked descendants
127
+ */
128
+ isItemCheckedIndeterminate(item) {
129
+ if (this.manageRelationships && this.isItemParent(item)) {
130
+ return this.getItemDescendants(item).some(desc => this.isItemChecked(desc));
131
+ }
132
+ return false;
133
+ }
134
+ /**
135
+ * Determines whether the item is unchecked and can be changed to a checked state.
136
+ * @param item Original data item
137
+ * @returns True if the item can be changed to 'checked'.
138
+ */
139
+ canCheckItem(item) {
140
+ if (this.manageRelationships && this.isItemParent(item)) {
141
+ return this.getItemChildren(item).some(child => this.canCheckItem(child));
142
+ }
143
+ return this.isItemCheckable(item) && this.composer.getItemPropertyValue(item, 'selected') !== true;
144
+ }
145
+ /**
146
+ * Determines whether the item is checked and can be changed to an unchecked state.
147
+ * @param item Original data item
148
+ * @returns True if the item can be changed to 'unchecked'.
149
+ */
150
+ canUncheckItem(item) {
151
+ if (this.manageRelationships && this.isItemParent(item)) {
152
+ return this.getItemChildren(item).some(child => this.canUncheckItem(child));
153
+ }
154
+ return this.isItemCheckable(item) && this.composer.getItemPropertyValue(item, 'selected') === true;
155
+ }
128
156
  /**
129
157
  * Makes an item visible
130
158
  * @param item Original data item
@@ -144,15 +172,12 @@ export class TreeManager {
144
172
  }
145
173
  /**
146
174
  * Forces a modification event, so that the renderer can update.
147
- * @param item Item of which to find ancestors
175
+ * @param item Item of which to find path
148
176
  * @returns {void}
149
177
  */
150
- forceUpdateOnAncestors(item) {
151
- this.composer.getItemAncestors(item).forEach(ancestor => {
152
- const allSelected = !this.getItemChildren(ancestor).some(child => this.isItemCheckable(child) && !this.isItemChecked(child));
153
- this.composer.setItemPropertyValue(ancestor, 'selected', allSelected);
154
- this.updateItem(ancestor);
155
- });
178
+ forceUpdateOnPath(item) {
179
+ const path = [...this.getItemAncestors(item), item];
180
+ path.forEach(item => this.composer.updateItemTimestamp(item));
156
181
  }
157
182
  /**
158
183
  * Sets the mode (algorithm) the manager should use
@@ -232,16 +257,13 @@ export class TreeManager {
232
257
  * @returns Checked state of the item
233
258
  */
234
259
  getItemCheckedState(item) {
235
- const descendants = this.getItemDescendants(item).filter(descendant => !this.composer.isItemLocked(descendant));
236
- const isParent = descendants.length > 0;
237
- if (isParent && this.manageRelationships) {
238
- const checkedCount = descendants.reduce((count, item) => {
239
- return count + (this.isItemChecked(item) === true ? 1 : 0);
240
- }, 0);
241
- return !checkedCount ? CheckedState.UNCHECKED
242
- : checkedCount === descendants.length ? CheckedState.CHECKED : CheckedState.INDETERMINATE;
260
+ if (this.isItemChecked(item)) {
261
+ return CheckedState.CHECKED;
243
262
  }
244
- return this.isItemChecked(item) === true ? CheckedState.CHECKED : CheckedState.UNCHECKED;
263
+ if (this.isItemCheckedIndeterminate(item)) {
264
+ return CheckedState.INDETERMINATE;
265
+ }
266
+ return CheckedState.UNCHECKED;
245
267
  }
246
268
  /**
247
269
  * Gets an item's ancestors
@@ -319,17 +341,14 @@ export class TreeManager {
319
341
  return this._checkItem(item);
320
342
  }
321
343
  _checkItem(item, manageRelationships = this.manageRelationships) {
322
- if (this.isItemCheckable(item) && !this.isItemChecked(item)) {
344
+ if (this.canCheckItem(item)) {
323
345
  this.composer.setItemPropertyValue(item, 'selected', true);
324
346
  if (manageRelationships) {
325
- this.forceUpdateOnAncestors(item);
347
+ this.forceUpdateOnPath(item);
326
348
  this.getItemDescendants(item).forEach(descendant => this._checkItem(descendant, false));
327
349
  }
328
350
  return true;
329
351
  }
330
- if (this.isItemParent(item)) {
331
- this.updateItem(item); // update parent checked state
332
- }
333
352
  return false;
334
353
  }
335
354
  /**
@@ -341,17 +360,14 @@ export class TreeManager {
341
360
  return this._uncheckItem(item);
342
361
  }
343
362
  _uncheckItem(item, manageRelationships = this.manageRelationships) {
344
- if (this.isItemCheckable(item) && this.isItemChecked(item)) {
363
+ if (this.canUncheckItem(item)) {
345
364
  this.composer.setItemPropertyValue(item, 'selected', false);
346
365
  if (manageRelationships) {
347
- this.forceUpdateOnAncestors(item);
366
+ this.forceUpdateOnPath(item);
348
367
  this.getItemDescendants(item).forEach(descendant => this._uncheckItem(descendant, false));
349
368
  }
350
369
  return true;
351
370
  }
352
- if (this.isItemParent(item)) {
353
- this.updateItem(item); // update parent checked state
354
- }
355
371
  return false;
356
372
  }
357
373
  /**
@@ -360,7 +376,7 @@ export class TreeManager {
360
376
  * @returns `True` if the item is modified
361
377
  */
362
378
  toggleItem(item) {
363
- return this.isItemChecked(item) ? this.uncheckItem(item) : this.checkItem(item);
379
+ return this.checkItem(item) || this.uncheckItem(item);
364
380
  }
365
381
  /**
366
382
  * Checks all items