@teammodlr/ui-kit 2.3.10 → 2.3.14

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 (279) hide show
  1. package/env.d.ts +1 -1
  2. package/lib/components/colorpicker/ColorPicker.vue.d.ts +11 -1
  3. package/lib/index.cjs.js +3 -3
  4. package/lib/index.es.js +324 -318
  5. package/lib/nuxt.js +35 -35
  6. package/lib/nuxt.plugin.js +8 -8
  7. package/package.json +1 -1
  8. package/src/__storybook__/argTypes.ts +53 -53
  9. package/src/__storybook__/createStory.ts +15 -15
  10. package/src/__storybook__/index.ts +2 -2
  11. package/src/components/avatar/Avatar.vue +110 -110
  12. package/src/components/avatar/examples/basic.vue +6 -6
  13. package/src/components/avatar/examples/custom-size.vue +7 -7
  14. package/src/components/avatar/examples/index.stories.ts +25 -25
  15. package/src/components/avatar/examples/index.ts +5 -5
  16. package/src/components/avatar/examples/sizes.vue +33 -33
  17. package/src/components/avatar/examples/slots.vue +8 -8
  18. package/src/components/avatar/examples/variants.vue +18 -18
  19. package/src/components/avatar/style/Avatar.css.ts +92 -92
  20. package/src/components/avatar/style/index.ts +1 -1
  21. package/src/components/avatargroup/AvatarGroup.vue +72 -72
  22. package/src/components/avatargroup/examples/basic.vue +37 -37
  23. package/src/components/avatargroup/examples/index.stories.ts +19 -19
  24. package/src/components/avatargroup/examples/index.ts +1 -1
  25. package/src/components/avatargroup/style/AvatarGroup.css.ts +26 -26
  26. package/src/components/avatargroup/style/index.ts +1 -1
  27. package/src/components/avatargroup/symbol.ts +17 -17
  28. package/src/components/badge/Badge.vue +43 -43
  29. package/src/components/badge/examples/basic.vue +10 -10
  30. package/src/components/badge/examples/index.stories.ts +19 -19
  31. package/src/components/badge/examples/index.ts +1 -1
  32. package/src/components/badge/style/Badge.css.ts +135 -135
  33. package/src/components/badge/style/index.ts +1 -1
  34. package/src/components/breadcrumb/Breadcrumb.vue +54 -54
  35. package/src/components/breadcrumb/BreadcrumbItem.vue +72 -72
  36. package/src/components/breadcrumb/examples/basic.vue +7 -7
  37. package/src/components/breadcrumb/examples/index.stories.ts +16 -16
  38. package/src/components/breadcrumb/examples/index.ts +1 -1
  39. package/src/components/breadcrumb/style/Breadcrumb.css.ts +40 -40
  40. package/src/components/breadcrumb/style/index.ts +1 -1
  41. package/src/components/breadcrumb/symbol.ts +18 -18
  42. package/src/components/button/Button.vue +203 -203
  43. package/src/components/button/examples/basic.vue +3 -3
  44. package/src/components/button/examples/disabled.vue +3 -3
  45. package/src/components/button/examples/icon-left.vue +12 -12
  46. package/src/components/button/examples/icon.vue +9 -9
  47. package/src/components/button/examples/index.stories.ts +37 -37
  48. package/src/components/button/examples/index.ts +9 -9
  49. package/src/components/button/examples/link.vue +3 -3
  50. package/src/components/button/examples/rounded.vue +7 -7
  51. package/src/components/button/examples/size.vue +7 -7
  52. package/src/components/button/examples/variants-secondary.vue +10 -10
  53. package/src/components/button/examples/variants.vue +10 -10
  54. package/src/components/button/style/index.ts +1 -1
  55. package/src/components/buttongroup/ButtonGroup.vue +36 -36
  56. package/src/components/buttongroup/examples/basic.vue +9 -9
  57. package/src/components/buttongroup/examples/icon-group.vue +21 -21
  58. package/src/components/buttongroup/examples/index.stories.ts +17 -17
  59. package/src/components/buttongroup/examples/index.ts +2 -2
  60. package/src/components/buttongroup/style/ButtonGroup.css.ts +42 -42
  61. package/src/components/buttongroup/style/index.ts +1 -1
  62. package/src/components/buttongroup/symbol.ts +9 -9
  63. package/src/components/checkbox/Checkbox.vue +149 -149
  64. package/src/components/checkbox/examples/basic.vue +9 -9
  65. package/src/components/checkbox/examples/index.stories.ts +16 -16
  66. package/src/components/checkbox/examples/index.ts +2 -2
  67. package/src/components/checkbox/examples/slot.vue +14 -14
  68. package/src/components/checkbox/style/Checkbox.css.ts +178 -178
  69. package/src/components/checkbox/style/index.ts +1 -1
  70. package/src/components/colorpicker/ColorPicker.vue +15 -4
  71. package/src/components/colorpicker/examples/index.stories.ts +12 -12
  72. package/src/components/colorpicker/examples/index.ts +1 -1
  73. package/src/components/colorpicker/style/index.ts +1 -1
  74. package/src/components/configprovider/ConfigProvider.vue +38 -38
  75. package/src/components/configprovider/types.ts +3 -3
  76. package/src/components/confirm/Confirm.vue +65 -65
  77. package/src/components/confirm/examples/basic.vue +48 -48
  78. package/src/components/confirm/examples/index.stories.ts +26 -26
  79. package/src/components/confirm/examples/index.ts +1 -1
  80. package/src/components/confirm/examples/wrapper.vue +9 -9
  81. package/src/components/confirm/props.ts +24 -24
  82. package/src/components/confirm/providerProps.ts +10 -10
  83. package/src/components/confirm/types.ts +33 -33
  84. package/src/components/confirm/useConfirm.ts +14 -14
  85. package/src/components/dialog/examples/basic.vue +23 -23
  86. package/src/components/dialog/examples/index.stories.ts +14 -14
  87. package/src/components/dialog/examples/index.ts +1 -1
  88. package/src/components/dialog/style/index.ts +1 -1
  89. package/src/components/dialogprovider/examples/index.stories.ts +26 -26
  90. package/src/components/dropdown/DropdownList.vue +20 -20
  91. package/src/components/dropdown/examples/index.stories.ts +26 -26
  92. package/src/components/dropdown/examples/index.ts +3 -3
  93. package/src/components/dropdown/hooks.ts +30 -30
  94. package/src/components/dropdown/style/index.ts +1 -1
  95. package/src/components/dropdown/symbol.ts +9 -9
  96. package/src/components/form/Form.vue +153 -153
  97. package/src/components/form/examples/basic.vue +75 -75
  98. package/src/components/form/examples/index.stories.ts +23 -23
  99. package/src/components/form/examples/index.ts +1 -1
  100. package/src/components/form/style/Form.css.ts +28 -28
  101. package/src/components/form/style/index.ts +2 -2
  102. package/src/components/form/symbol.ts +16 -16
  103. package/src/components/image/Image.vue +71 -71
  104. package/src/components/image/examples/basic.vue +5 -5
  105. package/src/components/image/examples/index.stories.ts +10 -10
  106. package/src/components/image/examples/index.ts +1 -1
  107. package/src/components/input/Input.vue +233 -233
  108. package/src/components/input/examples/basic.vue +21 -21
  109. package/src/components/input/examples/index.stories.ts +26 -26
  110. package/src/components/input/examples/index.ts +6 -6
  111. package/src/components/input/examples/left-icon.vue +9 -9
  112. package/src/components/input/examples/prefix.vue +5 -5
  113. package/src/components/input/examples/right-icon.vue +9 -9
  114. package/src/components/input/examples/sizes.vue +9 -9
  115. package/src/components/input/examples/suffix.vue +7 -7
  116. package/src/components/input/style/Input.css.ts +294 -294
  117. package/src/components/input/style/index.ts +1 -1
  118. package/src/components/link/Link.vue +53 -53
  119. package/src/components/link/examples/basic.vue +3 -3
  120. package/src/components/link/examples/index.stories.ts +15 -15
  121. package/src/components/link/examples/index.ts +1 -1
  122. package/src/components/messageprovider/Message.vue +135 -135
  123. package/src/components/messageprovider/MessageProvider.vue +152 -152
  124. package/src/components/messageprovider/examples/basic.vue +70 -70
  125. package/src/components/messageprovider/examples/index.stories.ts +26 -26
  126. package/src/components/messageprovider/examples/index.ts +2 -2
  127. package/src/components/messageprovider/examples/update.vue +34 -34
  128. package/src/components/messageprovider/examples/wrapper.vue +9 -9
  129. package/src/components/messageprovider/style/Message.css.ts +111 -111
  130. package/src/components/messageprovider/style/index.ts +1 -1
  131. package/src/components/messageprovider/types.ts +56 -56
  132. package/src/components/messageprovider/useMessage.ts +14 -14
  133. package/src/components/modal/Modal.vue +310 -310
  134. package/src/components/modal/examples/basic.vue +80 -80
  135. package/src/components/modal/examples/index.stories.ts +16 -16
  136. package/src/components/modal/examples/index.ts +3 -3
  137. package/src/components/modal/examples/modal-form.vue +99 -99
  138. package/src/components/modal/examples/sidebar.vue +79 -79
  139. package/src/components/modal/style/Modal.css.ts +318 -318
  140. package/src/components/modal/style/index.ts +1 -1
  141. package/src/components/pagination/Pagination.vue +296 -296
  142. package/src/components/pagination/examples/basic.vue +17 -17
  143. package/src/components/pagination/examples/index.stories.ts +11 -11
  144. package/src/components/pagination/examples/index.ts +1 -1
  145. package/src/components/pagination/style/Pagination.css.ts +93 -93
  146. package/src/components/pagination/style/index.ts +1 -1
  147. package/src/components/radio/Radio.vue +136 -136
  148. package/src/components/radio/examples/basic.vue +8 -8
  149. package/src/components/radio/examples/group.vue +15 -15
  150. package/src/components/radio/examples/index.stories.ts +16 -16
  151. package/src/components/radio/examples/index.ts +2 -2
  152. package/src/components/radio/style/Checkbox.css.ts +130 -130
  153. package/src/components/radio/style/index.ts +1 -1
  154. package/src/components/radiobutton/RadioButton.vue +131 -131
  155. package/src/components/radiobutton/style/RadioButton.css.ts +189 -189
  156. package/src/components/radiobutton/style/index.ts +1 -1
  157. package/src/components/radiobuttongroup/RadioButtonGroup.vue +74 -74
  158. package/src/components/radiobuttongroup/examples/basic.vue +16 -16
  159. package/src/components/radiobuttongroup/examples/index.stories.ts +18 -18
  160. package/src/components/radiobuttongroup/examples/index.ts +1 -1
  161. package/src/components/radiobuttongroup/style/RadioButtonGroup.css.ts +37 -37
  162. package/src/components/radiobuttongroup/style/index.ts +1 -1
  163. package/src/components/radiobuttongroup/symbol.ts +12 -12
  164. package/src/components/renderer/examlpes/basic.vue +23 -23
  165. package/src/components/renderer/examlpes/index.stories.ts +14 -14
  166. package/src/components/renderer/examlpes/index.ts +1 -1
  167. package/src/components/renderer/props.ts +14 -14
  168. package/src/components/renderer/renderer.ts +16 -16
  169. package/src/components/select/Select.vue +4 -0
  170. package/src/components/select/examples/basic.vue +26 -26
  171. package/src/components/select/examples/index.stories.ts +16 -16
  172. package/src/components/select/examples/index.ts +3 -3
  173. package/src/components/select/examples/multiple.vue +21 -21
  174. package/src/components/select/examples/searchable.vue +20 -20
  175. package/src/components/select/style/index.ts +1 -1
  176. package/src/components/select/types.ts +27 -27
  177. package/src/components/skeleton/Skeleton.vue +55 -55
  178. package/src/components/skeleton/examples/basic.vue +3 -3
  179. package/src/components/skeleton/examples/index.stories.ts +13 -13
  180. package/src/components/skeleton/examples/index.ts +2 -2
  181. package/src/components/skeleton/examples/post.vue +8 -8
  182. package/src/components/skeleton/style/Skeleton.css.ts +72 -72
  183. package/src/components/skeleton/style/index.ts +2 -2
  184. package/src/components/slider/style/Slider.css.ts +50 -50
  185. package/src/components/slider/style/index.ts +1 -1
  186. package/src/components/switch/Switch.vue +132 -132
  187. package/src/components/switch/examples/basic.vue +9 -9
  188. package/src/components/switch/examples/index.stories.ts +15 -15
  189. package/src/components/switch/examples/index.ts +2 -2
  190. package/src/components/switch/examples/slot.vue +11 -11
  191. package/src/components/switch/style/index.ts +1 -1
  192. package/src/components/tab/examples/basic.vue +23 -23
  193. package/src/components/tab/examples/index.ts +2 -2
  194. package/src/components/tab/examples/vertical.vue +19 -19
  195. package/src/components/table/Table.vue +198 -198
  196. package/src/components/table/TableBody.vue +13 -13
  197. package/src/components/table/TableCell.vue +13 -13
  198. package/src/components/table/TableHead.vue +46 -46
  199. package/src/components/table/TableHeadRow.vue +15 -15
  200. package/src/components/table/TableRow.vue +19 -19
  201. package/src/components/table/examples/basic.vue +61 -61
  202. package/src/components/table/examples/empty.vue +44 -44
  203. package/src/components/table/examples/index.stories.ts +17 -17
  204. package/src/components/table/examples/index.ts +3 -3
  205. package/src/components/table/examples/selected.vue +68 -68
  206. package/src/components/table/style/Table.css.ts +62 -62
  207. package/src/components/table/style/index.ts +1 -1
  208. package/src/components/table/types/index.ts +6 -6
  209. package/src/components/tag/Tag.vue +72 -72
  210. package/src/components/tag/examples/basic.vue +5 -5
  211. package/src/components/tag/examples/index.stories.ts +16 -16
  212. package/src/components/tag/examples/index.ts +1 -1
  213. package/src/components/tag/style/Tag.css.ts +83 -83
  214. package/src/components/tag/style/index.ts +1 -1
  215. package/src/components/textarea/Textarea.vue +180 -180
  216. package/src/components/textarea/examples/basic.vue +8 -8
  217. package/src/components/textarea/examples/index.stories.ts +14 -14
  218. package/src/components/textarea/examples/index.ts +1 -1
  219. package/src/components/textarea/style/Textarea.css.ts +191 -191
  220. package/src/components/textarea/style/index.ts +1 -1
  221. package/src/components/tooltip/examples/basic.vue +5 -5
  222. package/src/components/tooltip/examples/index.stories.ts +17 -17
  223. package/src/components/tooltip/examples/index.ts +2 -2
  224. package/src/components/tooltip/examples/placement.vue +9 -9
  225. package/src/components/tooltip/style/Tooltip.css.ts +90 -90
  226. package/src/components/tooltip/style/index.ts +1 -1
  227. package/src/components/transfer/Transfer.vue +145 -145
  228. package/src/components/transfer/examples/basic.vue +21 -21
  229. package/src/components/transfer/examples/index.stories.ts +12 -12
  230. package/src/components/transfer/examples/index.ts +1 -1
  231. package/src/components/transfer/style/Transfer.css.ts +81 -81
  232. package/src/components/transfer/style/index.ts +1 -1
  233. package/src/components/tree/Tree.vue +138 -138
  234. package/src/components/tree/TreeNode.vue +109 -109
  235. package/src/components/tree/TreeNodeToggle.vue +48 -48
  236. package/src/components/tree/examples/basic.vue +458 -458
  237. package/src/components/tree/examples/index.stories.ts +12 -12
  238. package/src/components/tree/examples/index.ts +1 -1
  239. package/src/components/tree/props.ts +97 -97
  240. package/src/components/tree/style/Tree.css.ts +75 -75
  241. package/src/components/tree/style/index.ts +1 -1
  242. package/src/components/tree/types.ts +103 -103
  243. package/src/components/virtualscroll/VirtualScroll.css +13 -13
  244. package/src/components/virtualscroll/VirtualScroll.vue +166 -166
  245. package/src/components/virtualscroll/examples/basic.vue +31 -31
  246. package/src/components/virtualscroll/examples/index.stories.ts +11 -11
  247. package/src/components/virtualscroll/examples/index.ts +1 -1
  248. package/src/components/virtualscroll/style/VirtualScroll.css.ts +17 -17
  249. package/src/components/virtualscroll/style/index.ts +1 -1
  250. package/src/composables/element.ts +13 -13
  251. package/src/composables/index.ts +5 -5
  252. package/src/composables/useCachedUid.ts +15 -15
  253. package/src/composables/useEventListener.ts +19 -19
  254. package/src/composables/useInput.ts +151 -151
  255. package/src/composables/useInteractive.ts +19 -19
  256. package/src/composables/useIsServer.ts +7 -7
  257. package/src/composables/useMergedState.ts +18 -18
  258. package/src/composables/useMount.ts +43 -43
  259. package/src/composables/usePopper.ts +215 -215
  260. package/src/composables/useZIndex.ts +33 -33
  261. package/src/create.ts +38 -38
  262. package/src/css/components.css +16 -16
  263. package/src/css/index.css +4 -4
  264. package/src/css/transitions.css +40 -40
  265. package/src/css/variables.css +80 -80
  266. package/src/examples/cards/cards.stories.ts +9 -9
  267. package/src/examples/cards/sidebar.vue +262 -262
  268. package/src/examples/modal/modal.stories.ts +9 -9
  269. package/src/examples/modal/modal.vue +52 -52
  270. package/src/exports/nuxt.js +35 -35
  271. package/src/exports/nuxt.plugin.js +8 -8
  272. package/src/index.ts +5 -5
  273. package/src/install.ts +8 -8
  274. package/src/shims-vue.d.ts +6 -6
  275. package/src/styles/theme.css.ts +181 -181
  276. package/src/types/props.ts +21 -21
  277. package/src/utils/call.ts +34 -34
  278. package/src/utils/injection.ts +45 -45
  279. 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>