Skip to content

Commit 3deed4c

Browse files
authored
fix(Tree): simplify reusable template types (#3836)
1 parent e6b1c23 commit 3deed4c

File tree

1 file changed

+4
-13
lines changed

1 file changed

+4
-13
lines changed

src/runtime/components/Tree.vue

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ export type TreeSlots<
112112

113113
<script setup lang="ts" generic="T extends TreeItem[], VK extends GetItemKeys<T> = 'value', M extends boolean = false">
114114
import { computed } from 'vue'
115-
import type { PropType } from 'vue'
116115
import { TreeRoot, TreeItem, useForwardPropsEmits } from 'reka-ui'
117116
import { reactivePick, createReusableTemplate } from '@vueuse/core'
118117
import { get } from '../utils'
@@ -127,22 +126,14 @@ const slots = defineSlots<TreeSlots<T>>()
127126
128127
const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'items', 'multiple', 'expanded', 'disabled', 'propagateSelect'), emits)
129128
130-
const [DefineTreeTemplate, ReuseTreeTemplate] = createReusableTemplate<
131-
{ items?: NestedItem<T>[], level: number },
132-
TreeSlots<T>
133-
>({
134-
props: {
135-
items: Array as PropType<NestedItem<T>[]>,
136-
level: Number
137-
}
138-
})
129+
const [DefineTreeTemplate, ReuseTreeTemplate] = createReusableTemplate<{ items?: TreeItem[], level: number }, TreeSlots<T>>()
139130
140131
const ui = computed(() => tree({
141132
color: props.color,
142133
size: props.size
143134
}))
144135
145-
function getItemLabel(item: NestedItem<T>): string {
136+
function getItemLabel<Item extends TreeItem = NestedItem<T>>(item: Item): string {
146137
return get(item, props.labelKey as string)
147138
}
148139
@@ -209,7 +200,7 @@ const defaultExpanded = computed(() =>
209200
</button>
210201

211202
<ul v-if="item.children?.length && isExpanded" :class="ui.listWithChildren({ class: props.ui?.listWithChildren })">
212-
<ReuseTreeTemplate :items="(item.children as NestedItem<T>[])" :level="level + 1" />
203+
<ReuseTreeTemplate :items="item.children" :level="level + 1" />
213204
</ul>
214205
</TreeItem>
215206
</li>
@@ -222,6 +213,6 @@ const defaultExpanded = computed(() =>
222213
:default-expanded="defaultExpanded"
223214
:selection-behavior="selectionBehavior"
224215
>
225-
<ReuseTreeTemplate :items="(items as NestedItem<T>[] | undefined)" :level="0" />
216+
<ReuseTreeTemplate :items="items" :level="0" />
226217
</TreeRoot>
227218
</template>

0 commit comments

Comments
 (0)