(component): 开放 tree-select 组件

This commit is contained in:
就眠儀式 2022-10-17 22:56:22 +08:00
parent e8f8c8c2ea
commit af3694d38c
15 changed files with 31 additions and 39 deletions

View File

@ -66,8 +66,8 @@ const printVal = useTransition(localStartVal, {
disabled: !props.useEasing, disabled: !props.useEasing,
transition: transition:
typeof props.easingFn === "string" typeof props.easingFn === "string"
// @ts-ignore ? // @ts-ignore
? TransitionPresets[props.easingFn] TransitionPresets[props.easingFn]
: props.easingFn, : props.easingFn,
}); });

View File

@ -57,7 +57,6 @@ const props = withDefaults(defineProps<TreeProps>(), {
onlyIconControl: false, onlyIconControl: false,
disabled: false, disabled: false,
showLine: true, showLine: true,
selectedKey: "",
replaceFields: () => { replaceFields: () => {
return { return {
id: "id", id: "id",

View File

@ -8,6 +8,7 @@ export default {
import "./index.less"; import "./index.less";
import { computed, ref, watch } from "vue"; import { computed, ref, watch } from "vue";
import { getNode } from "../../utils/treeUtil"; import { getNode } from "../../utils/treeUtil";
import { TreeSelectSize } from "./interface";
export interface LayTreeSelect { export interface LayTreeSelect {
data: any; data: any;
@ -18,7 +19,7 @@ export interface LayTreeSelect {
allowClear?: boolean; allowClear?: boolean;
collapseTagsTooltip?: boolean; collapseTagsTooltip?: boolean;
minCollapsedNum?: number; minCollapsedNum?: number;
size?: string; size?: TreeSelectSize;
checkStrictly?: boolean; checkStrictly?: boolean;
} }
@ -66,7 +67,7 @@ const checkedKeys = computed({
}); });
watch( watch(
[selectedValue], selectedValue,
() => { () => {
if (props.multiple) { if (props.multiple) {
multipleValue.value = selectedValue.value.map((value: any) => { multipleValue.value = selectedValue.value.map((value: any) => {

View File

@ -0,0 +1 @@
export type TreeSelectSize = "lg" | "md" | "sm" | "xs";

View File

@ -61,6 +61,7 @@ import LayDropdownSubMenu from "./component/dropdownSubMenu/index";
import LayTab from "./component/tab/index"; import LayTab from "./component/tab/index";
import LayTabItem from "./component/tabItem/index"; import LayTabItem from "./component/tabItem/index";
import LayTree from "./component/tree/index"; import LayTree from "./component/tree/index";
import LayTreeSelect from "./component/treeSelect/index";
import LayTable from "./component/table/index"; import LayTable from "./component/table/index";
import LayPage from "./component/page/index"; import LayPage from "./component/page/index";
import LayTransfer from "./component/transfer/index"; import LayTransfer from "./component/transfer/index";
@ -180,6 +181,7 @@ const components: Record<string, Plugin> = {
LaySpace, LaySpace,
LayTag, LayTag,
LayTagInput, LayTagInput,
LayTreeSelect
}; };
const install = (app: App, options?: InstallOptions): void => { const install = (app: App, options?: InstallOptions): void => {
@ -276,6 +278,7 @@ export {
LaySpace, LaySpace,
LayTag, LayTag,
LayTagInput, LayTagInput,
LayTreeSelect,
install, install,
}; };

View File

@ -13,20 +13,18 @@
::: demo 使用 `lay-tree` 标签, 创建树形组件, @node-click 监听节点点击。 ::: demo 使用 `lay-tree` 标签, 创建树形组件, @node-click 监听节点点击。
<template> <template>
<lay-tree-select v-model="value" :data="data"></lay-tree-select> <lay-tree-select v-model="value1" :data="data1"></lay-tree-select>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'; import { ref } from 'vue';
const value = ref(); const value1 = ref(1);
const data = ref([{ const data1 = ref([{
title: '一级1', title: '一级1',
id: 1, id: 1,
field: 'name1', field: 'name1',
checked: true,
spread: true,
children: [{ children: [{
title: '二级1-1 可允许跳转', title: '二级1-1 可允许跳转',
id: 3, id: 3,
@ -43,12 +41,10 @@ const data = ref([{
children: [{ children: [{
title: '五级1-1-3-1-1', title: '五级1-1-3-1-1',
id: 30, id: 30,
field: ''
}, },
{ {
title: '五级1-1-3-1-2', title: '五级1-1-3-1-2',
id: 31, id: 31,
field: ''
}] }]
}] }]
}, },
@ -59,7 +55,6 @@ const data = ref([{
children: [{ children: [{
title: '四级1-1-1-1 可允许跳转', title: '四级1-1-1-1 可允许跳转',
id: 15, id: 15,
field: '',
href: 'https://www.layui.com/doc/' href: 'https://www.layui.com/doc/'
}] }]
}, },
@ -70,7 +65,6 @@ const data = ref([{
children: [{ children: [{
title: '四级1-1-2-1', title: '四级1-1-2-1',
id: 32, id: 32,
field: ''
}] }]
}] }]
}, },
@ -81,13 +75,10 @@ const data = ref([{
children: [{ children: [{
title: '三级1-2-1', title: '三级1-2-1',
id: 9, id: 9,
field: '',
disabled: true
}, },
{ {
title: '三级1-2-2', title: '三级1-2-2',
id: 10, id: 10,
field: ''
}] }]
}, },
{ {
@ -109,38 +100,29 @@ const data = ref([{
{ {
title: '一级2', title: '一级2',
id: 2, id: 2,
field: '',
spread: true,
children: [{ children: [{
title: '二级2-1', title: '二级2-1',
id: 5, id: 5,
field: '',
spread: true, spread: true,
children: [{ children: [{
title: '三级2-1-1', title: '三级2-1-1',
id: 11, id: 11,
field: ''
}, },
{ {
title: '三级2-1-2', title: '三级2-1-2',
id: 12, id: 12,
field: ''
}] }]
}, },
{ {
title: '二级2-2', title: '二级2-2',
id: 6, id: 6,
field: '',
children: [{ children: [{
title: '三级2-2-1', title: '三级2-2-1',
id: 13, id: 13,
field: ''
}, },
{ {
title: '三级2-2-2', title: '三级2-2-2',
id: 14, id: 14,
field: '',
disabled: true
}] }]
}] }]
}, },
@ -194,15 +176,15 @@ function handleClick(node) {
::: demo 使用 `lay-tree` 标签, 创建树形组件, @node-click 监听节点点击。 ::: demo 使用 `lay-tree` 标签, 创建树形组件, @node-click 监听节点点击。
<template> <template>
<lay-tree-select v-model="value" :data="data" :disabled="true"></lay-tree-select> <lay-tree-select v-model="value2" :data="data2" :disabled="true"></lay-tree-select>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'; import { ref } from 'vue';
const value = ref(); const value2 = ref();
const data = ref([{ const data2 = ref([{
title: '一级1', title: '一级1',
id: 1, id: 1,
field: 'name1', field: 'name1',

View File

@ -191,6 +191,12 @@ const menus = [
subTitle: "tagInput", subTitle: "tagInput",
path: "/zh-CN/components/tagInput", path: "/zh-CN/components/tagInput",
}, },
{
id: 39,
title: "树选择",
subTitle: "treeSelect",
path: "/zh-CN/components/treeSelect",
},
{ {
id: 40, id: 40,
title: "颜色选择器", title: "颜色选择器",