feat: autocomplete add status
parent
6e1f30666b
commit
dbe7fe78ce
|
@ -6,6 +6,7 @@
|
||||||
<non-case-sensitive />
|
<non-case-sensitive />
|
||||||
<certain-category />
|
<certain-category />
|
||||||
<uncertain-category />
|
<uncertain-category />
|
||||||
|
<statusVue />
|
||||||
</demo-sort>
|
</demo-sort>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -16,6 +17,7 @@ import Custom from './custom.vue';
|
||||||
import NonCaseSensitive from './non-case-sensitive.vue';
|
import NonCaseSensitive from './non-case-sensitive.vue';
|
||||||
import CertainCategory from './certain-category.vue';
|
import CertainCategory from './certain-category.vue';
|
||||||
import UncertainCategory from './uncertain-category.vue';
|
import UncertainCategory from './uncertain-category.vue';
|
||||||
|
import statusVue from './status.vue';
|
||||||
|
|
||||||
import CN from '../index.zh-CN.md';
|
import CN from '../index.zh-CN.md';
|
||||||
import US from '../index.en-US.md';
|
import US from '../index.en-US.md';
|
||||||
|
@ -25,6 +27,7 @@ export default defineComponent({
|
||||||
CN,
|
CN,
|
||||||
US,
|
US,
|
||||||
components: {
|
components: {
|
||||||
|
statusVue,
|
||||||
Basic,
|
Basic,
|
||||||
Options,
|
Options,
|
||||||
Custom,
|
Custom,
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
<docs>
|
||||||
|
---
|
||||||
|
order: 19
|
||||||
|
version: 3.3.0
|
||||||
|
title:
|
||||||
|
zh-CN: 自定义状态
|
||||||
|
en-US: Status
|
||||||
|
---
|
||||||
|
|
||||||
|
## zh-CN
|
||||||
|
|
||||||
|
使用 `status` 为 AutoComplete 添加状态,可选 `error` 或者 `warning`。
|
||||||
|
|
||||||
|
## en-US
|
||||||
|
|
||||||
|
Add status to AutoComplete with `status`, which could be `error` or `warning`.
|
||||||
|
|
||||||
|
</docs>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<a-space direction="vertical" style="width: 100%">
|
||||||
|
<a-auto-complete
|
||||||
|
v-model:value="value"
|
||||||
|
:options="options"
|
||||||
|
style="width: 200px"
|
||||||
|
placeholder="input here"
|
||||||
|
status="error"
|
||||||
|
@select="onSelect"
|
||||||
|
@search="onSearch"
|
||||||
|
/>
|
||||||
|
<a-auto-complete
|
||||||
|
v-model:value="value1"
|
||||||
|
:options="options"
|
||||||
|
style="width: 200px"
|
||||||
|
placeholder="input here"
|
||||||
|
status="warning"
|
||||||
|
allow-clear
|
||||||
|
@select="onSelect"
|
||||||
|
@search="onSearch"
|
||||||
|
@clear="onClear"
|
||||||
|
/>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent, ref, watch } from 'vue';
|
||||||
|
|
||||||
|
interface MockVal {
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
const mockVal = (str: string, repeat = 1): MockVal => {
|
||||||
|
return {
|
||||||
|
value: str.repeat(repeat),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
export default defineComponent({
|
||||||
|
setup() {
|
||||||
|
const value = ref('');
|
||||||
|
const value1 = ref('');
|
||||||
|
const options = ref<MockVal[]>([]);
|
||||||
|
const onSearch = (searchText: string) => {
|
||||||
|
console.log('searchText');
|
||||||
|
options.value = !searchText
|
||||||
|
? []
|
||||||
|
: [mockVal(searchText), mockVal(searchText, 2), mockVal(searchText, 3)];
|
||||||
|
};
|
||||||
|
const onSelect = (value: string) => {
|
||||||
|
console.log('onSelect', value);
|
||||||
|
};
|
||||||
|
watch(value, () => {
|
||||||
|
console.log('value', value.value);
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
value,
|
||||||
|
value1,
|
||||||
|
options,
|
||||||
|
onSearch,
|
||||||
|
onSelect,
|
||||||
|
onClear: () => {
|
||||||
|
console.log('onClear');
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -40,6 +40,7 @@ The differences with Select are:
|
||||||
| option | custom render option by slot | v-slot:option="{value, label, [disabled, key, title]}" | - | 3.0 |
|
| option | custom render option by slot | v-slot:option="{value, label, [disabled, key, title]}" | - | 3.0 |
|
||||||
| options | Data source for autocomplete | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | |
|
| options | Data source for autocomplete | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | |
|
||||||
| placeholder | placeholder of input | string | - | |
|
| placeholder | placeholder of input | string | - | |
|
||||||
|
| status | Set validation status | 'error' \| 'warning' | - | 3.3.0 |
|
||||||
| v-model:value | selected option | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | - | |
|
| v-model:value | selected option | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | - | |
|
||||||
|
|
||||||
### events
|
### events
|
||||||
|
@ -52,6 +53,7 @@ The differences with Select are:
|
||||||
| focus | Called when entering the component | function() | | |
|
| focus | Called when entering the component | function() | | |
|
||||||
| search | Called when searching items. | function(value) | - | |
|
| search | Called when searching items. | function(value) | - | |
|
||||||
| select | Called when a option is selected. param is option's value and option instance. | function(value, option) | | |
|
| select | Called when a option is selected. param is option's value and option instance. | function(value, option) | | |
|
||||||
|
| clear | Called when clear | function | - | 3.3.0 |
|
||||||
|
|
||||||
## Methods
|
## Methods
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import Option from './Option';
|
||||||
import OptGroup from './OptGroup';
|
import OptGroup from './OptGroup';
|
||||||
import omit from '../_util/omit';
|
import omit from '../_util/omit';
|
||||||
import useConfigInject from '../_util/hooks/useConfigInject';
|
import useConfigInject from '../_util/hooks/useConfigInject';
|
||||||
|
import type { InputStatus } from '../_util/statusUtils';
|
||||||
|
|
||||||
function isSelectOptionOrSelectOptGroup(child: any): boolean {
|
function isSelectOptionOrSelectOptGroup(child: any): boolean {
|
||||||
return child?.type?.isSelectOption || child?.type?.isSelectOptGroup;
|
return child?.type?.isSelectOption || child?.type?.isSelectOptGroup;
|
||||||
|
@ -30,6 +31,7 @@ export const autoCompleteProps = () => ({
|
||||||
// optionLabelProp: PropTypes.string.def('children'),
|
// optionLabelProp: PropTypes.string.def('children'),
|
||||||
filterOption: { type: [Boolean, Function], default: false },
|
filterOption: { type: [Boolean, Function], default: false },
|
||||||
defaultActiveFirstOption: { type: Boolean, default: true },
|
defaultActiveFirstOption: { type: Boolean, default: true },
|
||||||
|
status: String as PropType<InputStatus>,
|
||||||
});
|
});
|
||||||
|
|
||||||
export type AutoCompleteProps = Partial<ExtractPropTypes<ReturnType<typeof autoCompleteProps>>>;
|
export type AutoCompleteProps = Partial<ExtractPropTypes<ReturnType<typeof autoCompleteProps>>>;
|
||||||
|
|
|
@ -41,18 +41,20 @@ cover: https://gw.alipayobjects.com/zos/alicdn/qtJm4yt45/AutoComplete.svg
|
||||||
| option | 通过 option 插槽,自定义节点 | v-slot:option="{value, label, [disabled, key, title]}" | - | 3.0 |
|
| option | 通过 option 插槽,自定义节点 | v-slot:option="{value, label, [disabled, key, title]}" | - | 3.0 |
|
||||||
| options | 自动完成的数据源 | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | |
|
| options | 自动完成的数据源 | [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | |
|
||||||
| placeholder | 输入框提示 | string \| slot | - | |
|
| placeholder | 输入框提示 | string \| slot | - | |
|
||||||
|
| status | 设置校验状态 | 'error' \| 'warning' | - | 3.3.0 |
|
||||||
| v-model:value | 指定当前选中的条目 | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | 无 | |
|
| v-model:value | 指定当前选中的条目 | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | 无 | |
|
||||||
|
|
||||||
### 事件
|
### 事件
|
||||||
|
|
||||||
| 事件名称 | 说明 | 回调参数 | 版本 |
|
| 事件名称 | 说明 | 回调参数 | 版本 |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- |
|
||||||
| blur | 失去焦点时的回调 | function() | |
|
| blur | 失去焦点时的回调 | function() | |
|
||||||
| change | 选中 option,或 input 的 value 变化时,调用此函数 | function(value) | |
|
| change | 选中 option,或 input 的 value 变化时,调用此函数 | function(value) | |
|
||||||
| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) | |
|
| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) | |
|
||||||
| focus | 获得焦点时的回调 | function() | |
|
| focus | 获得焦点时的回调 | function() | |
|
||||||
| search | 搜索补全项的时候调用 | function(value) | |
|
| search | 搜索补全项的时候调用 | function(value) | |
|
||||||
| select | 被选中时调用,参数为选中项的 value 值 | function(value, option) | |
|
| select | 被选中时调用,参数为选中项的 value 值 | function(value, option) | |
|
||||||
|
| clear | 清除内容时回调 | function | - | 3.3.0 |
|
||||||
|
|
||||||
## 方法
|
## 方法
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue