@teammodlr/ui-kit 2.1.41 → 2.1.44

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 (326) hide show
  1. package/env.d.ts +1 -1
  2. package/lib/components/avatar/Avatar.vue.d.ts +1 -1
  3. package/lib/components/avatargroup/AvatarGroup.vue.d.ts +1 -1
  4. package/lib/components/badge/Badge.vue.d.ts +1 -1
  5. package/lib/components/breadcrumb/Breadcrumb.vue.d.ts +1 -1
  6. package/lib/components/breadcrumb/BreadcrumbItem.vue.d.ts +1 -1
  7. package/lib/components/button/Button.vue.d.ts +1 -1
  8. package/lib/components/buttongroup/ButtonGroup.vue.d.ts +1 -1
  9. package/lib/components/checkbox/Checkbox.vue.d.ts +4 -3
  10. package/lib/components/checkbox/style/Checkbox.css.d.ts +1 -0
  11. package/lib/components/colorpicker/ColorPicker.vue.d.ts +1 -1
  12. package/lib/components/configprovider/ConfigProvider.vue.d.ts +35 -0
  13. package/lib/components/configprovider/types.d.ts +3 -0
  14. package/lib/components/confirm/Confirm.vue.d.ts +1 -1
  15. package/lib/components/confirm/ConfirmProvider.vue.d.ts +1 -1
  16. package/lib/components/dialog/Dialog.vue.d.ts +1 -1
  17. package/lib/components/dropdown/Dropdown.vue.d.ts +1 -1
  18. package/lib/components/dropdown/DropdownHeading.vue.d.ts +1 -1
  19. package/lib/components/dropdown/DropdownItem.vue.d.ts +1 -1
  20. package/lib/components/dropdown/DropdownList.vue.d.ts +1 -1
  21. package/lib/components/dropdown/DropdownSeperator.vue.d.ts +1 -1
  22. package/lib/components/dropdown/DropdownWrapper.vue.d.ts +1 -1
  23. package/lib/components/form/Form.vue.d.ts +1 -1
  24. package/lib/components/image/Image.vue.d.ts +1 -1
  25. package/lib/components/index.d.ts +1 -0
  26. package/lib/components/input/Input.vue.d.ts +2 -2
  27. package/lib/components/link/Link.vue.d.ts +1 -1
  28. package/lib/components/messageprovider/Message.vue.d.ts +1 -1
  29. package/lib/components/messageprovider/MessageProvider.vue.d.ts +1 -1
  30. package/lib/components/modal/Modal.vue.d.ts +1 -1
  31. package/lib/components/pagination/Pagination.vue.d.ts +1 -1
  32. package/lib/components/radio/Radio.vue.d.ts +3 -3
  33. package/lib/components/radiobutton/RadioButton.vue.d.ts +1 -1
  34. package/lib/components/radiobuttongroup/RadioButtonGroup.vue.d.ts +1 -1
  35. package/lib/components/renderer/examlpes/basic.vue.d.ts +1 -1
  36. package/lib/components/renderer/renderer.d.ts +1 -1
  37. package/lib/components/select/Select.vue.d.ts +2 -2
  38. package/lib/components/skeleton/Skeleton.vue.d.ts +1 -1
  39. package/lib/components/slider/Slider.vue.d.ts +1 -1
  40. package/lib/components/switch/Switch.vue.d.ts +3 -3
  41. package/lib/components/tab/Tab.vue.d.ts +1 -1
  42. package/lib/components/tab/TabGroup.vue.d.ts +1 -1
  43. package/lib/components/table/Table.vue.d.ts +1 -1
  44. package/lib/components/table/TableBody.vue.d.ts +1 -1
  45. package/lib/components/table/TableCell.vue.d.ts +1 -1
  46. package/lib/components/table/TableHead.vue.d.ts +1 -1
  47. package/lib/components/table/TableHeadRow.vue.d.ts +1 -1
  48. package/lib/components/table/TableRow.vue.d.ts +1 -1
  49. package/lib/components/tag/Tag.vue.d.ts +1 -1
  50. package/lib/components/textarea/Textarea.vue.d.ts +2 -2
  51. package/lib/components/tooltip/Tooltip.vue.d.ts +1 -1
  52. package/lib/components/transfer/Transfer.vue.d.ts +1 -1
  53. package/lib/components/tree/Tree.vue.d.ts +1 -1
  54. package/lib/components/tree/TreeNode.vue.d.ts +1 -1
  55. package/lib/components/tree/TreeNodeToggle.vue.d.ts +1 -1
  56. package/lib/components/virtualscroll/VirtualScroll.vue.d.ts +1 -1
  57. package/lib/composables/useCachedUid.d.ts +1 -13
  58. package/lib/composables/useInput.d.ts +3 -3
  59. package/lib/index.cjs.js +10 -10
  60. package/lib/index.es.js +1347 -1338
  61. package/lib/nuxt.js +35 -35
  62. package/lib/nuxt.plugin.js +8 -8
  63. package/lib/style.css +1 -1
  64. package/lib/styles/theme.css.d.ts +1 -1
  65. package/package.json +89 -89
  66. package/src/__storybook__/argTypes.ts +53 -53
  67. package/src/__storybook__/createStory.ts +15 -15
  68. package/src/__storybook__/index.ts +2 -2
  69. package/src/call.ts +34 -34
  70. package/src/components/avatar/Avatar.vue +110 -110
  71. package/src/components/avatar/examples/basic.vue +6 -6
  72. package/src/components/avatar/examples/custom-size.vue +7 -7
  73. package/src/components/avatar/examples/index.ts +5 -5
  74. package/src/components/avatar/examples/sizes.vue +33 -33
  75. package/src/components/avatar/examples/slots.vue +8 -8
  76. package/src/components/avatar/examples/variants.vue +18 -18
  77. package/src/components/avatar/style/Avatar.css.ts +92 -92
  78. package/src/components/avatar/style/index.ts +1 -1
  79. package/src/components/avatargroup/AvatarGroup.vue +72 -72
  80. package/src/components/avatargroup/examples/basic.vue +37 -37
  81. package/src/components/avatargroup/examples/index.ts +1 -1
  82. package/src/components/avatargroup/style/AvatarGroup.css.ts +26 -26
  83. package/src/components/avatargroup/style/index.ts +1 -1
  84. package/src/components/avatargroup/symbol.ts +17 -17
  85. package/src/components/badge/Badge.vue +43 -43
  86. package/src/components/badge/examples/basic.vue +10 -10
  87. package/src/components/badge/examples/index.ts +1 -1
  88. package/src/components/badge/style/Badge.css.ts +135 -135
  89. package/src/components/badge/style/index.ts +1 -1
  90. package/src/components/breadcrumb/Breadcrumb.vue +54 -54
  91. package/src/components/breadcrumb/BreadcrumbItem.vue +72 -72
  92. package/src/components/breadcrumb/examples/basic.vue +7 -7
  93. package/src/components/breadcrumb/examples/index.ts +1 -1
  94. package/src/components/breadcrumb/style/Breadcrumb.css.ts +40 -40
  95. package/src/components/breadcrumb/style/index.ts +1 -1
  96. package/src/components/breadcrumb/symbol.ts +18 -18
  97. package/src/components/button/Button.vue +203 -203
  98. package/src/components/button/examples/basic.vue +3 -3
  99. package/src/components/button/examples/disabled.vue +3 -3
  100. package/src/components/button/examples/icon-left.vue +12 -12
  101. package/src/components/button/examples/icon.vue +9 -9
  102. package/src/components/button/examples/index.ts +9 -9
  103. package/src/components/button/examples/link.vue +3 -3
  104. package/src/components/button/examples/rounded.vue +7 -7
  105. package/src/components/button/examples/size.vue +7 -7
  106. package/src/components/button/examples/variants-secondary.vue +10 -10
  107. package/src/components/button/examples/variants.vue +10 -10
  108. package/src/components/button/style/Button.css.ts +695 -695
  109. package/src/components/button/style/index.ts +1 -1
  110. package/src/components/buttongroup/ButtonGroup.vue +36 -36
  111. package/src/components/buttongroup/examples/basic.vue +9 -9
  112. package/src/components/buttongroup/examples/icon-group.vue +21 -21
  113. package/src/components/buttongroup/examples/index.ts +2 -2
  114. package/src/components/buttongroup/style/ButtonGroup.css.ts +42 -42
  115. package/src/components/buttongroup/style/index.ts +1 -1
  116. package/src/components/buttongroup/symbol.ts +9 -9
  117. package/src/components/checkbox/Checkbox.vue +149 -145
  118. package/src/components/checkbox/examples/basic.vue +9 -9
  119. package/src/components/checkbox/examples/index.ts +2 -2
  120. package/src/components/checkbox/examples/slot.vue +14 -11
  121. package/src/components/checkbox/style/Checkbox.css.ts +178 -161
  122. package/src/components/checkbox/style/index.ts +1 -1
  123. package/src/components/colorpicker/ColorPicker.vue +333 -333
  124. package/src/components/colorpicker/examples/basic.vue +2 -2
  125. package/src/components/colorpicker/examples/index.ts +1 -1
  126. package/src/components/colorpicker/style/ColorPicker.css.ts +127 -127
  127. package/src/components/colorpicker/style/index.ts +1 -1
  128. package/src/components/colorpicker/utils.ts +206 -206
  129. package/src/components/configprovider/ConfigProvider.vue +26 -0
  130. package/src/components/configprovider/types.ts +3 -0
  131. package/src/components/confirm/Confirm.vue +65 -65
  132. package/src/components/confirm/ConfirmProvider.vue +83 -83
  133. package/src/components/confirm/examples/basic.vue +48 -48
  134. package/src/components/confirm/examples/index.ts +1 -1
  135. package/src/components/confirm/examples/wrapper.vue +9 -9
  136. package/src/components/confirm/props.ts +24 -24
  137. package/src/components/confirm/providerProps.ts +10 -10
  138. package/src/components/confirm/types.ts +33 -33
  139. package/src/components/confirm/useConfirm.ts +14 -14
  140. package/src/components/dialog/Dialog.vue +118 -118
  141. package/src/components/dialog/examples/basic.vue +16 -16
  142. package/src/components/dialog/examples/index.ts +1 -1
  143. package/src/components/dialog/style/Dialog.css.ts +100 -100
  144. package/src/components/dialog/style/index.ts +1 -1
  145. package/src/components/dropdown/Dropdown.vue +308 -308
  146. package/src/components/dropdown/DropdownHeading.vue +23 -23
  147. package/src/components/dropdown/DropdownItem.vue +151 -151
  148. package/src/components/dropdown/DropdownList.vue +20 -20
  149. package/src/components/dropdown/DropdownSeperator.vue +22 -22
  150. package/src/components/dropdown/DropdownWrapper.vue +18 -18
  151. package/src/components/dropdown/examples/basic.vue +119 -119
  152. package/src/components/dropdown/examples/context.vue +71 -71
  153. package/src/components/dropdown/examples/index.ts +3 -3
  154. package/src/components/dropdown/hooks.ts +30 -30
  155. package/src/components/dropdown/style/Dropdown.css.ts +158 -158
  156. package/src/components/dropdown/style/index.ts +1 -1
  157. package/src/components/dropdown/symbol.ts +9 -9
  158. package/src/components/form/Form.vue +153 -153
  159. package/src/components/form/examples/basic.vue +75 -75
  160. package/src/components/form/examples/index.ts +1 -1
  161. package/src/components/form/style/Form.css.ts +28 -28
  162. package/src/components/form/style/index.ts +2 -2
  163. package/src/components/form/symbol.ts +16 -16
  164. package/src/components/image/Image.vue +71 -71
  165. package/src/components/image/examples/basic.vue +5 -5
  166. package/src/components/image/examples/index.ts +1 -1
  167. package/src/components/index.ts +48 -47
  168. package/src/components/input/Input.vue +233 -233
  169. package/src/components/input/examples/basic.vue +21 -21
  170. package/src/components/input/examples/index.ts +6 -6
  171. package/src/components/input/examples/left-icon.vue +9 -9
  172. package/src/components/input/examples/prefix.vue +5 -5
  173. package/src/components/input/examples/right-icon.vue +9 -9
  174. package/src/components/input/examples/sizes.vue +9 -9
  175. package/src/components/input/examples/suffix.vue +7 -7
  176. package/src/components/input/style/Input.css.ts +294 -294
  177. package/src/components/input/style/index.ts +1 -1
  178. package/src/components/link/Link.vue +53 -53
  179. package/src/components/link/examples/basic.vue +3 -3
  180. package/src/components/link/examples/index.ts +1 -1
  181. package/src/components/messageprovider/Message.vue +135 -135
  182. package/src/components/messageprovider/MessageProvider.vue +156 -156
  183. package/src/components/messageprovider/examples/basic.vue +70 -70
  184. package/src/components/messageprovider/examples/index.ts +2 -2
  185. package/src/components/messageprovider/examples/update.vue +34 -34
  186. package/src/components/messageprovider/examples/wrapper.vue +9 -9
  187. package/src/components/messageprovider/style/Message.css.ts +111 -111
  188. package/src/components/messageprovider/style/index.ts +1 -1
  189. package/src/components/messageprovider/types.ts +56 -56
  190. package/src/components/messageprovider/useMessage.ts +14 -14
  191. package/src/components/modal/Modal.vue +310 -310
  192. package/src/components/modal/examples/basic.vue +80 -80
  193. package/src/components/modal/examples/index.ts +3 -3
  194. package/src/components/modal/examples/modal-form.vue +99 -99
  195. package/src/components/modal/examples/sidebar.vue +79 -79
  196. package/src/components/modal/style/Modal.css.ts +318 -318
  197. package/src/components/modal/style/index.ts +1 -1
  198. package/src/components/pagination/Pagination.vue +296 -296
  199. package/src/components/pagination/examples/basic.vue +17 -17
  200. package/src/components/pagination/examples/index.ts +1 -1
  201. package/src/components/pagination/style/Pagination.css.ts +93 -93
  202. package/src/components/pagination/style/index.ts +1 -1
  203. package/src/components/radio/Radio.vue +136 -136
  204. package/src/components/radio/examples/basic.vue +8 -8
  205. package/src/components/radio/examples/group.vue +15 -15
  206. package/src/components/radio/examples/index.ts +2 -2
  207. package/src/components/radio/style/Checkbox.css.ts +130 -130
  208. package/src/components/radio/style/index.ts +1 -1
  209. package/src/components/radiobutton/RadioButton.vue +131 -131
  210. package/src/components/radiobutton/style/RadioButton.css.ts +189 -189
  211. package/src/components/radiobutton/style/index.ts +1 -1
  212. package/src/components/radiobuttongroup/RadioButtonGroup.vue +74 -74
  213. package/src/components/radiobuttongroup/examples/basic.vue +16 -16
  214. package/src/components/radiobuttongroup/examples/index.ts +1 -1
  215. package/src/components/radiobuttongroup/style/RadioButtonGroup.css.ts +37 -37
  216. package/src/components/radiobuttongroup/style/index.ts +1 -1
  217. package/src/components/radiobuttongroup/symbol.ts +12 -12
  218. package/src/components/renderer/examlpes/basic.vue +23 -23
  219. package/src/components/renderer/examlpes/index.ts +1 -1
  220. package/src/components/renderer/props.ts +14 -14
  221. package/src/components/renderer/renderer.ts +16 -16
  222. package/src/components/select/Select.vue +781 -781
  223. package/src/components/select/examples/basic.vue +21 -21
  224. package/src/components/select/examples/index.ts +3 -3
  225. package/src/components/select/examples/multiple.vue +21 -21
  226. package/src/components/select/examples/searchable.vue +20 -20
  227. package/src/components/select/style/Select.css.ts +368 -368
  228. package/src/components/select/style/index.ts +1 -1
  229. package/src/components/skeleton/Skeleton.vue +55 -55
  230. package/src/components/skeleton/examples/basic.vue +3 -3
  231. package/src/components/skeleton/examples/index.ts +2 -2
  232. package/src/components/skeleton/examples/post.vue +8 -8
  233. package/src/components/skeleton/style/Skeleton.css.ts +72 -72
  234. package/src/components/skeleton/style/index.ts +2 -2
  235. package/src/components/slider/Slider.vue +76 -76
  236. package/src/components/slider/style/Slider.css.ts +50 -50
  237. package/src/components/slider/style/index.ts +1 -1
  238. package/src/components/switch/Switch.vue +132 -132
  239. package/src/components/switch/examples/basic.vue +9 -9
  240. package/src/components/switch/examples/index.ts +2 -2
  241. package/src/components/switch/examples/slot.vue +11 -11
  242. package/src/components/switch/style/Switch.css.ts +135 -135
  243. package/src/components/switch/style/index.ts +1 -1
  244. package/src/components/tab/Tab.css +113 -113
  245. package/src/components/tab/Tab.vue +98 -98
  246. package/src/components/tab/TabGroup.vue +90 -90
  247. package/src/components/tab/examples/basic.vue +19 -19
  248. package/src/components/tab/examples/index.ts +2 -2
  249. package/src/components/tab/examples/vertical.vue +19 -19
  250. package/src/components/table/Table.vue +198 -198
  251. package/src/components/table/TableBody.vue +13 -13
  252. package/src/components/table/TableCell.vue +13 -13
  253. package/src/components/table/TableHead.vue +46 -46
  254. package/src/components/table/TableHeadRow.vue +15 -15
  255. package/src/components/table/TableRow.vue +19 -19
  256. package/src/components/table/examples/basic.vue +61 -61
  257. package/src/components/table/examples/empty.vue +44 -44
  258. package/src/components/table/examples/index.ts +3 -3
  259. package/src/components/table/examples/selected.vue +68 -68
  260. package/src/components/table/style/Table.css.ts +62 -62
  261. package/src/components/table/style/index.ts +1 -1
  262. package/src/components/table/types/index.ts +6 -6
  263. package/src/components/tag/Tag.vue +72 -72
  264. package/src/components/tag/examples/basic.vue +5 -5
  265. package/src/components/tag/examples/index.ts +1 -1
  266. package/src/components/tag/style/Tag.css.ts +83 -83
  267. package/src/components/tag/style/index.ts +1 -1
  268. package/src/components/textarea/Textarea.vue +180 -180
  269. package/src/components/textarea/examples/basic.vue +8 -8
  270. package/src/components/textarea/examples/index.ts +1 -1
  271. package/src/components/textarea/style/Textarea.css.ts +191 -191
  272. package/src/components/textarea/style/index.ts +1 -1
  273. package/src/components/tooltip/Tooltip.vue +196 -196
  274. package/src/components/tooltip/examples/basic.vue +5 -5
  275. package/src/components/tooltip/examples/index.ts +2 -2
  276. package/src/components/tooltip/examples/placement.vue +9 -9
  277. package/src/components/tooltip/style/Tooltip.css.ts +90 -90
  278. package/src/components/tooltip/style/index.ts +1 -1
  279. package/src/components/transfer/Transfer.vue +145 -145
  280. package/src/components/transfer/examples/basic.vue +21 -21
  281. package/src/components/transfer/examples/index.ts +1 -1
  282. package/src/components/transfer/style/Transfer.css.ts +81 -81
  283. package/src/components/transfer/style/index.ts +1 -1
  284. package/src/components/tree/Tree.vue +138 -138
  285. package/src/components/tree/TreeNode.vue +109 -109
  286. package/src/components/tree/TreeNodeToggle.vue +48 -48
  287. package/src/components/tree/examples/basic.vue +458 -458
  288. package/src/components/tree/examples/index.ts +1 -1
  289. package/src/components/tree/props.ts +97 -97
  290. package/src/components/tree/style/Tree.css.ts +75 -75
  291. package/src/components/tree/style/index.ts +1 -1
  292. package/src/components/tree/types.ts +103 -103
  293. package/src/components/virtualscroll/VirtualScroll.css +13 -13
  294. package/src/components/virtualscroll/VirtualScroll.vue +166 -166
  295. package/src/components/virtualscroll/examples/basic.vue +31 -31
  296. package/src/components/virtualscroll/examples/index.ts +1 -1
  297. package/src/components/virtualscroll/style/VirtualScroll.css.ts +17 -17
  298. package/src/components/virtualscroll/style/index.ts +1 -1
  299. package/src/composables/element.ts +13 -13
  300. package/src/composables/index.ts +4 -4
  301. package/src/composables/useCachedUid.ts +17 -49
  302. package/src/composables/useEventListener.ts +19 -19
  303. package/src/composables/useInput.ts +151 -151
  304. package/src/composables/useInteractive.ts +19 -19
  305. package/src/composables/useIsServer.ts +7 -7
  306. package/src/composables/useMergedState.ts +18 -18
  307. package/src/composables/useMount.ts +43 -43
  308. package/src/composables/usePopper.ts +215 -215
  309. package/src/composables/useZIndex.ts +33 -33
  310. package/src/create.ts +38 -38
  311. package/src/css/components.css +16 -16
  312. package/src/css/index.css +4 -4
  313. package/src/css/transitions.css +40 -40
  314. package/src/css/variables.css +80 -80
  315. package/src/examples/cards/sidebar.vue +262 -262
  316. package/src/examples/modal/modal.vue +52 -52
  317. package/src/exports/nuxt.js +35 -35
  318. package/src/exports/nuxt.plugin.js +8 -8
  319. package/src/index.ts +5 -5
  320. package/src/install.ts +8 -8
  321. package/src/shims-vue.d.ts +6 -6
  322. package/src/styles/theme.css.ts +181 -181
  323. package/src/styles/transitions.css.ts +97 -97
  324. package/src/types/props.ts +19 -19
  325. package/src/utils/injection.ts +5 -5
  326. package/volar.d.ts +16 -16
@@ -1,138 +1,138 @@
1
- <template>
2
- <div ref="selfElRef">
3
- <VVirtualList
4
- ref="virtualListInstRef"
5
- :items="nodesRef"
6
- itemResizable
7
- :itemSize="20"
8
- >
9
- <template v-slot:default="{ item }">
10
- <TreeNode :node="item"/>
11
- </template>
12
- </VVirtualList>
13
- </div>
14
- </template>
15
-
16
- <script lang="ts">
17
- import {type VirtualListInst, VVirtualList} from 'vueuc'
18
- import {computed, defineComponent, provide, ref, toRef} from 'vue'
19
- import {createTreeMateOptions, treeProps} from "./props";
20
- import type {Key, TmNode, TreeOption} from "./types";
21
- import {
22
- createTreeMate,
23
- } from 'treemate'
24
- import TreeNode from "./TreeNode.vue";
25
- import {treeInjectionKey} from "./types";
26
- import {call} from "../../call";
27
- import useMergedState from "../../composables/useMergedState";
28
-
29
- export default defineComponent({
30
- components: {TreeNode, VVirtualList},
31
- name: 'Tree',
32
- props: treeProps,
33
- emits: ['update:expandedKeys', 'dblclick'],
34
- setup: function (props, {emit}) {
35
- const selfElRef = ref<HTMLDivElement | null>(null);
36
- const virtualListInstRef = ref<VirtualListInst | null>(null)
37
-
38
- function getScrollContainer(): HTMLElement | null | undefined {
39
- return virtualListInstRef.value?.listElRef
40
- }
41
-
42
- function getScrollContent(): HTMLElement | null | undefined {
43
- return virtualListInstRef.value?.itemsElRef
44
- }
45
-
46
- const displayTreeMateRef = computed(() => {
47
- return createTreeMate<TreeOption>(
48
- props.data,
49
- createTreeMateOptions(
50
- props.keyField,
51
- props.childrenField,
52
- 'disabled',
53
- props.getChildren
54
- )
55
- )
56
- });
57
-
58
- const dataTreeMateRef = displayTreeMateRef;
59
- const controlledExpandedKeysRef = toRef(props, 'expandedKeys')
60
- const uncontrolledExpandedKeysRef = ref<Key[]>([])
61
- const mergedExpandedKeysRef = useMergedState(
62
- controlledExpandedKeysRef,
63
- uncontrolledExpandedKeysRef
64
- )
65
- const nodesRef = computed(() => {
66
- return displayTreeMateRef.value.getFlattenedNodes(mergedExpandedKeysRef.value);
67
- });
68
-
69
- provide(treeInjectionKey, {
70
- mergedExpandedKeysRef,
71
- indentRef: toRef(props, 'indent'),
72
- expandOnClickRef: toRef(props, 'expandOnClick'),
73
- nodePropsRef: toRef(props, 'nodeProps'),
74
- labelFieldRef: toRef(props, 'labelField'),
75
- keyFieldRef: toRef(props, 'keyField'),
76
- childrenFieldRef: toRef(props, 'childrenField'),
77
- handleDoubleClick,
78
- handleToggleClick
79
- });
80
-
81
- // const { watchProps } = props;
82
- //
83
- // watchEffect(() => {
84
- // initUncontrolledExpandedKeys(undefined);
85
- // })
86
-
87
- function handleToggleClick(node: TmNode): void {
88
-
89
- toggleExpand(node);
90
- }
91
-
92
- function handleDoubleClick(node: TreeOption): void {
93
- emit('dblclick', node);
94
- }
95
-
96
- function toggleExpand(node: TmNode): void {
97
- const {key} = node;
98
- const {value: mergedExpandedKeys} = mergedExpandedKeysRef
99
- const index = mergedExpandedKeys.findIndex(
100
- (expandedNodeId) => expandedNodeId === key
101
- )
102
-
103
- if (~index) {
104
- const expandedKeysAfterChange = Array.from(mergedExpandedKeys);
105
- expandedKeysAfterChange.splice(index, 1);
106
- doUpdateExpandedKeys(expandedKeysAfterChange);
107
- } else {
108
- const nodeToBeExpanded = displayTreeMateRef.value.getNode(key);
109
- if (!nodeToBeExpanded || nodeToBeExpanded.isLeaf) {
110
- return;
111
- }
112
-
113
- let nextKeys: Key[] = mergedExpandedKeys.concat(key);
114
-
115
- doUpdateExpandedKeys(nextKeys)
116
- }
117
- }
118
-
119
- function getOptionsByKeys(keys: Key[]): Array<TreeOption | null> {
120
- const {getNode} = dataTreeMateRef.value;
121
- return keys.map((key) => getNode(key)?.rawNode || null);
122
- }
123
-
124
- function doUpdateExpandedKeys(
125
- value: Key[],
126
- ): void {
127
- uncontrolledExpandedKeysRef.value = value;
128
- }
129
-
130
- return {
131
- nodesRef,
132
- displayTreeMateRef,
133
- selfElRef
134
- }
135
- }
136
- })
137
-
138
- </script>
1
+ <template>
2
+ <div ref="selfElRef">
3
+ <VVirtualList
4
+ ref="virtualListInstRef"
5
+ :items="nodesRef"
6
+ itemResizable
7
+ :itemSize="20"
8
+ >
9
+ <template v-slot:default="{ item }">
10
+ <TreeNode :node="item"/>
11
+ </template>
12
+ </VVirtualList>
13
+ </div>
14
+ </template>
15
+
16
+ <script lang="ts">
17
+ import {type VirtualListInst, VVirtualList} from 'vueuc'
18
+ import {computed, defineComponent, provide, ref, toRef} from 'vue'
19
+ import {createTreeMateOptions, treeProps} from "./props";
20
+ import type {Key, TmNode, TreeOption} from "./types";
21
+ import {
22
+ createTreeMate,
23
+ } from 'treemate'
24
+ import TreeNode from "./TreeNode.vue";
25
+ import {treeInjectionKey} from "./types";
26
+ import {call} from "../../call";
27
+ import useMergedState from "../../composables/useMergedState";
28
+
29
+ export default defineComponent({
30
+ components: {TreeNode, VVirtualList},
31
+ name: 'Tree',
32
+ props: treeProps,
33
+ emits: ['update:expandedKeys', 'dblclick'],
34
+ setup: function (props, {emit}) {
35
+ const selfElRef = ref<HTMLDivElement | null>(null);
36
+ const virtualListInstRef = ref<VirtualListInst | null>(null)
37
+
38
+ function getScrollContainer(): HTMLElement | null | undefined {
39
+ return virtualListInstRef.value?.listElRef
40
+ }
41
+
42
+ function getScrollContent(): HTMLElement | null | undefined {
43
+ return virtualListInstRef.value?.itemsElRef
44
+ }
45
+
46
+ const displayTreeMateRef = computed(() => {
47
+ return createTreeMate<TreeOption>(
48
+ props.data,
49
+ createTreeMateOptions(
50
+ props.keyField,
51
+ props.childrenField,
52
+ 'disabled',
53
+ props.getChildren
54
+ )
55
+ )
56
+ });
57
+
58
+ const dataTreeMateRef = displayTreeMateRef;
59
+ const controlledExpandedKeysRef = toRef(props, 'expandedKeys')
60
+ const uncontrolledExpandedKeysRef = ref<Key[]>([])
61
+ const mergedExpandedKeysRef = useMergedState(
62
+ controlledExpandedKeysRef,
63
+ uncontrolledExpandedKeysRef
64
+ )
65
+ const nodesRef = computed(() => {
66
+ return displayTreeMateRef.value.getFlattenedNodes(mergedExpandedKeysRef.value);
67
+ });
68
+
69
+ provide(treeInjectionKey, {
70
+ mergedExpandedKeysRef,
71
+ indentRef: toRef(props, 'indent'),
72
+ expandOnClickRef: toRef(props, 'expandOnClick'),
73
+ nodePropsRef: toRef(props, 'nodeProps'),
74
+ labelFieldRef: toRef(props, 'labelField'),
75
+ keyFieldRef: toRef(props, 'keyField'),
76
+ childrenFieldRef: toRef(props, 'childrenField'),
77
+ handleDoubleClick,
78
+ handleToggleClick
79
+ });
80
+
81
+ // const { watchProps } = props;
82
+ //
83
+ // watchEffect(() => {
84
+ // initUncontrolledExpandedKeys(undefined);
85
+ // })
86
+
87
+ function handleToggleClick(node: TmNode): void {
88
+
89
+ toggleExpand(node);
90
+ }
91
+
92
+ function handleDoubleClick(node: TreeOption): void {
93
+ emit('dblclick', node);
94
+ }
95
+
96
+ function toggleExpand(node: TmNode): void {
97
+ const {key} = node;
98
+ const {value: mergedExpandedKeys} = mergedExpandedKeysRef
99
+ const index = mergedExpandedKeys.findIndex(
100
+ (expandedNodeId) => expandedNodeId === key
101
+ )
102
+
103
+ if (~index) {
104
+ const expandedKeysAfterChange = Array.from(mergedExpandedKeys);
105
+ expandedKeysAfterChange.splice(index, 1);
106
+ doUpdateExpandedKeys(expandedKeysAfterChange);
107
+ } else {
108
+ const nodeToBeExpanded = displayTreeMateRef.value.getNode(key);
109
+ if (!nodeToBeExpanded || nodeToBeExpanded.isLeaf) {
110
+ return;
111
+ }
112
+
113
+ let nextKeys: Key[] = mergedExpandedKeys.concat(key);
114
+
115
+ doUpdateExpandedKeys(nextKeys)
116
+ }
117
+ }
118
+
119
+ function getOptionsByKeys(keys: Key[]): Array<TreeOption | null> {
120
+ const {getNode} = dataTreeMateRef.value;
121
+ return keys.map((key) => getNode(key)?.rawNode || null);
122
+ }
123
+
124
+ function doUpdateExpandedKeys(
125
+ value: Key[],
126
+ ): void {
127
+ uncontrolledExpandedKeysRef.value = value;
128
+ }
129
+
130
+ return {
131
+ nodesRef,
132
+ displayTreeMateRef,
133
+ selfElRef
134
+ }
135
+ }
136
+ })
137
+
138
+ </script>
@@ -1,109 +1,109 @@
1
- <template>
2
- <div
3
- @dblclick="doDoubleClick"
4
- :class="style.nodeWrapper"
5
-
6
- >
7
- <div :class="style.node">
8
- <template v-if="indentCount > 0">
9
- <div v-for="i in indentCount" style="flex-grow: 0; flex-shrink: 0; height: 0;">
10
- <div :key="i" style="width: 16px;"></div>
11
- </div>
12
- </template>
13
- <TreeNodeToggle
14
- :hide="node.isLeaf"
15
- :node="node"
16
- :expanded="expanded"
17
- @click="handleToggleClick"
18
- />
19
-
20
- <div :class="style.nodeContent">
21
- <div :class="style.nodeContentText">{{ labelField }}</div>
22
- </div>
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script lang="ts">
28
- import {ref, defineComponent, type PropType, inject, computed, unref} from "vue";
29
- import type {TmNode, TreeOption} from "./types";
30
- import {treeInjectionKey} from "./types";
31
- import TreeNodeToggle from "@/components/tree/TreeNodeToggle.vue";
32
- import * as style from "./style";
33
-
34
- export default defineComponent({
35
- name: 'TreeNode',
36
- components: {TreeNodeToggle},
37
- props: {
38
- node: {
39
- type: Object as PropType<TmNode>,
40
- required: true
41
- }
42
- },
43
- setup(props) {
44
- const NTree = inject(treeInjectionKey)!;
45
- const {
46
- nodePropsRef,
47
- labelFieldRef,
48
- keyFieldRef,
49
- childrenFieldRef,
50
- indentRef,
51
- handleToggleClick: handleToggleClickTree,
52
- handleDoubleClick
53
- } = NTree;
54
-
55
- const selfElRef = ref<HTMLDivElement | null>(null);
56
-
57
- function _handleClick(e: MouseEvent): void {
58
- const {value: expandOnClick} = NTree.expandOnClickRef;
59
- const {node} = props
60
- if (!expandOnClick && !node.isLeaf) {
61
- handleToggleClick();
62
- }
63
- }
64
-
65
- function handleToggleClick(): void {
66
- const {node} = props;
67
-
68
-
69
- if (!node.isLastChild && !node.shallowLoaded) {
70
- return;
71
- }
72
-
73
- handleToggleClickTree(node)
74
- }
75
-
76
- function doDoubleClick(e: MouseEvent) {
77
- let node = unref(props.node.rawNode);
78
- let clone = Object.assign({}, node);
79
- delete clone[childrenFieldRef.value];
80
- handleDoubleClick(clone);
81
- }
82
-
83
- const indentCount = computed(() => {
84
- return props.node.level;
85
- })
86
-
87
- function handleLineClick(e: MouseEvent) {
88
- _handleClick(e);
89
- }
90
-
91
- const labelField = computed(() => {
92
- return props.node.rawNode[labelFieldRef.value];
93
- })
94
-
95
- const expanded = computed(() => NTree.mergedExpandedKeysRef.value.includes(props.node.key));
96
-
97
- return {
98
- selfElRef,
99
- handleLineClick,
100
- indentCount,
101
- labelField,
102
- expanded: expanded,
103
- handleToggleClick,
104
- doDoubleClick,
105
- style
106
- }
107
- }
108
- });
109
- </script>
1
+ <template>
2
+ <div
3
+ @dblclick="doDoubleClick"
4
+ :class="style.nodeWrapper"
5
+
6
+ >
7
+ <div :class="style.node">
8
+ <template v-if="indentCount > 0">
9
+ <div v-for="i in indentCount" style="flex-grow: 0; flex-shrink: 0; height: 0;">
10
+ <div :key="i" style="width: 16px;"></div>
11
+ </div>
12
+ </template>
13
+ <TreeNodeToggle
14
+ :hide="node.isLeaf"
15
+ :node="node"
16
+ :expanded="expanded"
17
+ @click="handleToggleClick"
18
+ />
19
+
20
+ <div :class="style.nodeContent">
21
+ <div :class="style.nodeContentText">{{ labelField }}</div>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </template>
26
+
27
+ <script lang="ts">
28
+ import {ref, defineComponent, type PropType, inject, computed, unref} from "vue";
29
+ import type {TmNode, TreeOption} from "./types";
30
+ import {treeInjectionKey} from "./types";
31
+ import TreeNodeToggle from "@/components/tree/TreeNodeToggle.vue";
32
+ import * as style from "./style";
33
+
34
+ export default defineComponent({
35
+ name: 'TreeNode',
36
+ components: {TreeNodeToggle},
37
+ props: {
38
+ node: {
39
+ type: Object as PropType<TmNode>,
40
+ required: true
41
+ }
42
+ },
43
+ setup(props) {
44
+ const NTree = inject(treeInjectionKey)!;
45
+ const {
46
+ nodePropsRef,
47
+ labelFieldRef,
48
+ keyFieldRef,
49
+ childrenFieldRef,
50
+ indentRef,
51
+ handleToggleClick: handleToggleClickTree,
52
+ handleDoubleClick
53
+ } = NTree;
54
+
55
+ const selfElRef = ref<HTMLDivElement | null>(null);
56
+
57
+ function _handleClick(e: MouseEvent): void {
58
+ const {value: expandOnClick} = NTree.expandOnClickRef;
59
+ const {node} = props
60
+ if (!expandOnClick && !node.isLeaf) {
61
+ handleToggleClick();
62
+ }
63
+ }
64
+
65
+ function handleToggleClick(): void {
66
+ const {node} = props;
67
+
68
+
69
+ if (!node.isLastChild && !node.shallowLoaded) {
70
+ return;
71
+ }
72
+
73
+ handleToggleClickTree(node)
74
+ }
75
+
76
+ function doDoubleClick(e: MouseEvent) {
77
+ let node = unref(props.node.rawNode);
78
+ let clone = Object.assign({}, node);
79
+ delete clone[childrenFieldRef.value];
80
+ handleDoubleClick(clone);
81
+ }
82
+
83
+ const indentCount = computed(() => {
84
+ return props.node.level;
85
+ })
86
+
87
+ function handleLineClick(e: MouseEvent) {
88
+ _handleClick(e);
89
+ }
90
+
91
+ const labelField = computed(() => {
92
+ return props.node.rawNode[labelFieldRef.value];
93
+ })
94
+
95
+ const expanded = computed(() => NTree.mergedExpandedKeysRef.value.includes(props.node.key));
96
+
97
+ return {
98
+ selfElRef,
99
+ handleLineClick,
100
+ indentCount,
101
+ labelField,
102
+ expanded: expanded,
103
+ handleToggleClick,
104
+ doDoubleClick,
105
+ style
106
+ }
107
+ }
108
+ });
109
+ </script>
@@ -1,48 +1,48 @@
1
- <template>
2
- <div
3
- @click="onClick"
4
- :class="iconClass"
5
- >
6
- <template v-if="!hide">
7
- <svg v-if="expanded" :class="style.icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
8
- <path d="M12 8l10 8l-10 8z"></path>
9
- </svg>
10
- <svg v-else :class="style.icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
11
- <path d="M12 8l10 8l-10 8z"></path>
12
- </svg>
13
- </template>
14
- </div>
15
- </template>
16
-
17
- <script lang="ts">
18
- import {computed, defineComponent, type PropType} from "vue";
19
- import type {TmNode} from "./types";
20
- import * as style from "./style";
21
-
22
- export default defineComponent({
23
- name: "TreeNodeToggle",
24
- props: {
25
- expanded: Boolean,
26
- selected: Boolean,
27
- onClick: Function as PropType<(e: MouseEvent) => void>,
28
- hide: Boolean,
29
- node: {
30
- type: Object as PropType<TmNode>,
31
- required: true
32
- }
33
- },
34
- setup(props) {
35
-
36
- const iconClass = computed(() => {
37
- return {
38
- [style.toggle]: true,
39
- [style.iconRotate["90"]]: props.expanded,
40
- }
41
- });
42
- return {
43
- style,
44
- iconClass
45
- }
46
- }
47
- })
48
- </script>
1
+ <template>
2
+ <div
3
+ @click="onClick"
4
+ :class="iconClass"
5
+ >
6
+ <template v-if="!hide">
7
+ <svg v-if="expanded" :class="style.icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
8
+ <path d="M12 8l10 8l-10 8z"></path>
9
+ </svg>
10
+ <svg v-else :class="style.icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
11
+ <path d="M12 8l10 8l-10 8z"></path>
12
+ </svg>
13
+ </template>
14
+ </div>
15
+ </template>
16
+
17
+ <script lang="ts">
18
+ import {computed, defineComponent, type PropType} from "vue";
19
+ import type {TmNode} from "./types";
20
+ import * as style from "./style";
21
+
22
+ export default defineComponent({
23
+ name: "TreeNodeToggle",
24
+ props: {
25
+ expanded: Boolean,
26
+ selected: Boolean,
27
+ onClick: Function as PropType<(e: MouseEvent) => void>,
28
+ hide: Boolean,
29
+ node: {
30
+ type: Object as PropType<TmNode>,
31
+ required: true
32
+ }
33
+ },
34
+ setup(props) {
35
+
36
+ const iconClass = computed(() => {
37
+ return {
38
+ [style.toggle]: true,
39
+ [style.iconRotate["90"]]: props.expanded,
40
+ }
41
+ });
42
+ return {
43
+ style,
44
+ iconClass
45
+ }
46
+ }
47
+ })
48
+ </script>