[新增] selectOption 支持传入keyword属性用于自定义关键词查询内容
This commit is contained in:
parent
1cdfa5d112
commit
18ee8db079
@ -131,6 +131,34 @@ export default {
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
::: title 选择项自定义搜索内容,可以在keyword属性中传入拼音用于支持拼音搜索
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: demo
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<lay-select v-model="selected">
|
||||||
|
<lay-select-option value="1" label="学习" keyword="学习xuexi"></lay-select-option>
|
||||||
|
<lay-select-option value="2" label="编码" disabled></lay-select-option>
|
||||||
|
<lay-select-option value="3" label="运动"></lay-select-option>
|
||||||
|
</lay-select>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
setup() {
|
||||||
|
const selected = ref('1');
|
||||||
|
return {
|
||||||
|
selected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
::: title 海量数据
|
::: title 海量数据
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@ -236,6 +264,7 @@ export default {
|
|||||||
| 属性 | 描述 | 接收值 |
|
| 属性 | 描述 | 接收值 |
|
||||||
| ------ | ---------- | --------------- |
|
| ------ | ---------- | --------------- |
|
||||||
| change | 切换事件 | value |
|
| change | 切换事件 | value |
|
||||||
|
| search | 关键词变化事件 | 用户输入的关键词 string |
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@ -251,6 +280,7 @@ export default {
|
|||||||
| ------------ | --------------------- | ------------------------- | -------------- | -------- |
|
| ------------ | --------------------- | ------------------------- | -------------- | -------- |
|
||||||
| label | 标签值(`必填`) | `string` | - | - |
|
| label | 标签值(`必填`) | `string` | - | - |
|
||||||
| value | 值 | `string` / `number` | - | - |
|
| value | 值 | `string` / `number` | - | - |
|
||||||
|
| keyword | 用于匹配关键词的数据,传入文本+拼音可以支持拼音搜索 | `string` | - | - |
|
||||||
| disabled | 是否禁用 | `boolean` | `true` `false` | `false` |
|
| disabled | 是否禁用 | `boolean` | `true` `false` | `false` |
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
@ -7,16 +7,19 @@ export default {
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import LayCheckbox from "../checkbox";
|
import LayCheckbox from "../checkbox";
|
||||||
import { SelectItem, SelectItemHandle, SelectItemPush } from "../../types";
|
import { SelectItem, SelectItemHandle, SelectItemPush } from "../../types";
|
||||||
import { computed, inject, onMounted, Ref } from "vue";
|
import { computed, inject, onMounted, Ref, ref } from "vue";
|
||||||
|
|
||||||
export interface LaySelectOptionProps {
|
export interface LaySelectOptionProps {
|
||||||
value: string | null | undefined;
|
value: string | null | undefined;
|
||||||
label?: string;
|
label: string;
|
||||||
|
keyword?: string;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = withDefaults(defineProps<LaySelectOptionProps>(), {
|
const props = withDefaults(defineProps<LaySelectOptionProps>(), {
|
||||||
disabled: false,
|
disabled: false,
|
||||||
|
keyword: "",
|
||||||
|
label: ""
|
||||||
});
|
});
|
||||||
|
|
||||||
const selectItemHandle = inject("selectItemHandle") as SelectItemHandle;
|
const selectItemHandle = inject("selectItemHandle") as SelectItemHandle;
|
||||||
@ -57,15 +60,18 @@ const callSelectItemPush = function () {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
selectItemPush(item);
|
selectItemPush(item);
|
||||||
};
|
};
|
||||||
|
const search = ref("")
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
search.value = props.keyword || props.label
|
||||||
callSelectItemPush();
|
callSelectItemPush();
|
||||||
selected.value && callSelectItemHandle();
|
selected.value && callSelectItemHandle();
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<dd
|
<dd
|
||||||
v-show="keyword ? props.label.includes(keyword) : true"
|
v-show="keyword ? search.includes(keyword) : true"
|
||||||
:value="value"
|
:value="value"
|
||||||
:class="[{ 'layui-this': selected }, { 'layui-disabled': disabled }]"
|
:class="[{ 'layui-this': selected }, { 'layui-disabled': disabled }]"
|
||||||
@click="selectHandle"
|
@click="selectHandle"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user