热factor: tree
parent
8c5a23f377
commit
106b2609be
|
@ -94,8 +94,7 @@ export default defineComponent({
|
||||||
name: 'NodeList',
|
name: 'NodeList',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
props: nodeListProps,
|
props: nodeListProps,
|
||||||
slots: ['checkable'],
|
setup(props, { expose, attrs }) {
|
||||||
setup(props, { expose, attrs, slots }) {
|
|
||||||
// =============================== Ref ================================
|
// =============================== Ref ================================
|
||||||
const listRef = ref(null);
|
const listRef = ref(null);
|
||||||
const indentMeasurerRef = ref(null);
|
const indentMeasurerRef = ref(null);
|
||||||
|
@ -310,7 +309,6 @@ export default defineComponent({
|
||||||
onMousemove={() => {
|
onMousemove={() => {
|
||||||
onActiveChange(null);
|
onActiveChange(null);
|
||||||
}}
|
}}
|
||||||
v-slots={slots}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -34,7 +34,7 @@ import classNames from '../_util/classNames';
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'Tree',
|
name: 'Tree',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
slots: ['checkable'],
|
slots: ['checkable', 'title', 'icon'],
|
||||||
props: initDefaultProps(treeProps(), {
|
props: initDefaultProps(treeProps(), {
|
||||||
prefixCls: 'vc-tree',
|
prefixCls: 'vc-tree',
|
||||||
showLine: false,
|
showLine: false,
|
||||||
|
@ -982,7 +982,7 @@ export default defineComponent({
|
||||||
tabindex = 0,
|
tabindex = 0,
|
||||||
selectable,
|
selectable,
|
||||||
showIcon,
|
showIcon,
|
||||||
icon,
|
icon = slots.icon,
|
||||||
switcherIcon,
|
switcherIcon,
|
||||||
draggable,
|
draggable,
|
||||||
checkable,
|
checkable,
|
||||||
|
@ -994,7 +994,6 @@ export default defineComponent({
|
||||||
height,
|
height,
|
||||||
itemHeight,
|
itemHeight,
|
||||||
virtual,
|
virtual,
|
||||||
titleRender,
|
|
||||||
dropIndicatorRender,
|
dropIndicatorRender,
|
||||||
onContextmenu,
|
onContextmenu,
|
||||||
onScroll,
|
onScroll,
|
||||||
|
@ -1014,6 +1013,7 @@ export default defineComponent({
|
||||||
switcherIcon,
|
switcherIcon,
|
||||||
draggable,
|
draggable,
|
||||||
checkable,
|
checkable,
|
||||||
|
customCheckable: slots.checkable,
|
||||||
checkStrictly,
|
checkStrictly,
|
||||||
disabled,
|
disabled,
|
||||||
keyEntities: keyEntities.value,
|
keyEntities: keyEntities.value,
|
||||||
|
@ -1029,7 +1029,7 @@ export default defineComponent({
|
||||||
loadData,
|
loadData,
|
||||||
filterTreeNode,
|
filterTreeNode,
|
||||||
|
|
||||||
titleRender,
|
titleRender: slots.title,
|
||||||
|
|
||||||
onNodeClick,
|
onNodeClick,
|
||||||
onNodeDoubleClick,
|
onNodeDoubleClick,
|
||||||
|
@ -1084,7 +1084,6 @@ export default defineComponent({
|
||||||
onScroll={onScroll}
|
onScroll={onScroll}
|
||||||
{...treeNodeRequiredProps.value}
|
{...treeNodeRequiredProps.value}
|
||||||
{...domProps}
|
{...domProps}
|
||||||
v-slots={slots}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</TreeContext>
|
</TreeContext>
|
||||||
|
|
|
@ -293,7 +293,7 @@ export default defineComponent({
|
||||||
)}
|
)}
|
||||||
onClick={onCheck}
|
onClick={onCheck}
|
||||||
>
|
>
|
||||||
{slots.checkable?.()}
|
{context.value.customCheckable?.()}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -41,7 +41,8 @@ export interface TreeContextProps {
|
||||||
icon: IconType;
|
icon: IconType;
|
||||||
switcherIcon: IconType;
|
switcherIcon: IconType;
|
||||||
draggable: ((node: DataNode) => boolean) | boolean;
|
draggable: ((node: DataNode) => boolean) | boolean;
|
||||||
checkable: boolean | VueNode;
|
checkable: boolean;
|
||||||
|
customCheckable: () => any;
|
||||||
checkStrictly: boolean;
|
checkStrictly: boolean;
|
||||||
disabled: boolean;
|
disabled: boolean;
|
||||||
keyEntities: Record<Key, DataEntity>;
|
keyEntities: Record<Key, DataEntity>;
|
||||||
|
|
|
@ -132,7 +132,7 @@ export const treeProps = () => ({
|
||||||
defaultSelectedKeys: { type: Array as PropType<Key[]> },
|
defaultSelectedKeys: { type: Array as PropType<Key[]> },
|
||||||
selectedKeys: { type: Array as PropType<Key[]> },
|
selectedKeys: { type: Array as PropType<Key[]> },
|
||||||
allowDrop: { type: Function as PropType<AllowDrop> },
|
allowDrop: { type: Function as PropType<AllowDrop> },
|
||||||
titleRender: { type: Function as PropType<(node: DataNode) => any> },
|
// titleRender: { type: Function as PropType<(node: DataNode) => any> },
|
||||||
dropIndicatorRender: {
|
dropIndicatorRender: {
|
||||||
type: Function as PropType<
|
type: Function as PropType<
|
||||||
(props: {
|
(props: {
|
||||||
|
|
|
@ -2,60 +2,44 @@
|
||||||
<a-tree
|
<a-tree
|
||||||
v-model:expandedKeys="expandedKeys"
|
v-model:expandedKeys="expandedKeys"
|
||||||
v-model:selectedKeys="selectedKeys"
|
v-model:selectedKeys="selectedKeys"
|
||||||
v-model:checkedKeys="checkedKeys"
|
:load-data="onLoadData"
|
||||||
checkable
|
|
||||||
:tree-data="treeData"
|
:tree-data="treeData"
|
||||||
>
|
/>
|
||||||
<template #title0010><span style="color: #1890ff">sss</span></template>
|
|
||||||
</a-tree>
|
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, ref, watch } from 'vue';
|
import { defineComponent, ref } from 'vue';
|
||||||
import { TreeDataItem } from 'ant-design-vue/es/tree/Tree';
|
import { TreeDataItem } from 'ant-design-vue/es/tree/Tree';
|
||||||
|
|
||||||
const treeData: TreeDataItem[] = [
|
|
||||||
{
|
|
||||||
title: 'parent 1',
|
|
||||||
key: '0-0',
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: 'parent 1-0',
|
|
||||||
key: '0-0-0',
|
|
||||||
disabled: true,
|
|
||||||
children: [
|
|
||||||
{ title: 'leaf', key: '0-0-0-0', disableCheckbox: true },
|
|
||||||
{ title: 'leaf', key: '0-0-0-1' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'parent 1-1',
|
|
||||||
key: '0-0-1',
|
|
||||||
children: [{ key: '0-0-1-0', slots: { title: 'title0010' } }],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
setup() {
|
setup() {
|
||||||
const expandedKeys = ref<string[]>(['0-0-0', '0-0-1']);
|
const expandedKeys = ref<string[]>([]);
|
||||||
const selectedKeys = ref<string[]>(['0-0-0', '0-0-1']);
|
const selectedKeys = ref<string[]>([]);
|
||||||
const checkedKeys = ref<string[]>(['0-0-0', '0-0-1']);
|
const treeData = ref<TreeDataItem[]>([
|
||||||
watch(expandedKeys, () => {
|
{ title: 'Expand to load', key: '0' },
|
||||||
console.log('expandedKeys', expandedKeys);
|
{ title: 'Expand to load', key: '1' },
|
||||||
});
|
{ title: 'Tree Node', key: '2', isLeaf: true },
|
||||||
watch(selectedKeys, () => {
|
]);
|
||||||
console.log('selectedKeys', selectedKeys);
|
const onLoadData = (treeNode: any) => {
|
||||||
});
|
return new Promise((resolve: (value?: unknown) => void) => {
|
||||||
watch(checkedKeys, () => {
|
if (treeNode.dataRef.children) {
|
||||||
console.log('checkedKeys', checkedKeys);
|
resolve();
|
||||||
});
|
return;
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
treeNode.dataRef.children = [
|
||||||
|
{ title: 'Child Node', key: `${treeNode.eventKey}-0` },
|
||||||
|
{ title: 'Child Node', key: `${treeNode.eventKey}-1` },
|
||||||
|
];
|
||||||
|
treeData.value = [...treeData.value];
|
||||||
|
resolve();
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
};
|
||||||
return {
|
return {
|
||||||
treeData,
|
|
||||||
expandedKeys,
|
expandedKeys,
|
||||||
selectedKeys,
|
selectedKeys,
|
||||||
checkedKeys,
|
treeData,
|
||||||
|
onLoadData,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue