feat: 树下拉treeSelect-输入框里计算最大标签数量

This commit is contained in:
teukkk 2024-09-24 18:20:25 +08:00 committed by 刘瑞斌
parent 777f1fe300
commit 9425b7701e
4 changed files with 40 additions and 9 deletions

View File

@ -7,6 +7,7 @@
:mouse-enter-delay="300" :mouse-enter-delay="300"
> >
<a-tree-select <a-tree-select
ref="treeSelectRef"
v-model:model-value="selectValue" v-model:model-value="selectValue"
v-model:input-value="inputValue" v-model:input-value="inputValue"
:data="props.data" :data="props.data"
@ -22,6 +23,7 @@
}, },
}" }"
v-bind="$attrs" v-bind="$attrs"
:max-tag-count="maxTagCount"
@input-value-change="handleInputValueChange" @input-value-change="handleInputValueChange"
@popup-visible-change="handlePopupVisibleChange" @popup-visible-change="handlePopupVisibleChange"
@change="handleChange" @change="handleChange"
@ -43,21 +45,53 @@
<script lang="ts" setup> <script lang="ts" setup>
import type { MsTreeNodeData } from '@/components/business/ms-tree/types'; import type { MsTreeNodeData } from '@/components/business/ms-tree/types';
import useSelect from '@/hooks/useSelect';
import { filterTreeNode, findNodeByKey } from '@/utils'; import { filterTreeNode, findNodeByKey } from '@/utils';
import type { TreeFieldNames, TreeNodeData } from '@arco-design/web-vue'; import type { TreeFieldNames, TreeNodeData } from '@arco-design/web-vue';
const props = defineProps<{ const props = withDefaults(
data: TreeNodeData[]; defineProps<{
fieldNames?: TreeFieldNames; data: TreeNodeData[];
disabled?: boolean; fieldNames?: TreeFieldNames;
multiple?: boolean; disabled?: boolean;
}>(); multiple?: boolean;
shouldCalculateMaxTag?: boolean;
}>(),
{
shouldCalculateMaxTag: true,
}
);
const selectValue = defineModel<any>('modelValue', { required: true }); const selectValue = defineModel<any>('modelValue', { required: true });
const inputValue = ref(''); const inputValue = ref('');
const tempInputValue = ref(''); const tempInputValue = ref('');
const treeSelectRef = ref();
const { maxTagCount, calculateMaxTag } = useSelect({
selectRef: treeSelectRef,
selectVal: selectValue,
});
watch(
() => selectValue.value,
() => {
if (props.shouldCalculateMaxTag !== false && props.multiple) {
calculateMaxTag();
}
},
{
immediate: true,
}
);
watch(
() => props.data,
() => {
if (props.shouldCalculateMaxTag !== false && props.multiple) {
calculateMaxTag();
}
}
);
const getTreeSelectTooltip = computed(() => { const getTreeSelectTooltip = computed(() => {
return () => { return () => {
let treeSelectTooltip = ''; let treeSelectTooltip = '';

View File

@ -726,7 +726,6 @@
multiple: true, multiple: true,
treeCheckable: true, treeCheckable: true,
treeCheckStrictly: true, treeCheckStrictly: true,
maxTagCount: 1,
}, },
}, },
{ {

View File

@ -818,7 +818,6 @@
multiple: true, multiple: true,
treeCheckable: true, treeCheckable: true,
treeCheckStrictly: true, treeCheckStrictly: true,
maxTagCount: 1,
}, },
}, },
{ {

View File

@ -1030,7 +1030,6 @@
multiple: true, multiple: true,
treeCheckable: true, treeCheckable: true,
treeCheckStrictly: true, treeCheckStrictly: true,
maxTagCount: 1,
}, },
}, },
{ {