diff --git a/devui/search/hooks/use-search-keywords.ts b/devui/search/hooks/use-search-keywords.ts index 23fdd061ab08253404306cafa9f67ff0215d3a10..d0feccc8b40a1d622217cec8d3c0ffb3480258c5 100644 --- a/devui/search/hooks/use-search-keywords.ts +++ b/devui/search/hooks/use-search-keywords.ts @@ -1,10 +1,11 @@ /** * 输入框内容定义、删改操作 */ -import { ref, watch, computed } from 'vue' +import { ref, watch, computed, SetupContext } from 'vue' import { SearchProps, KeywordsReturnTypes } from '../src/search-types' +type EmitProps = 'update:modelValue' | 'searchFn' -export const keywordsHandles = (props: SearchProps): KeywordsReturnTypes => { +export const keywordsHandles = (ctx: SetupContext<(EmitProps)[]>, props: SearchProps): KeywordsReturnTypes => { const keywords = ref('') // 输入框内容 // 监听是否有双向绑定,将绑定的值传递给keyword,因为需要清除输入框 watch(() => props.modelValue, (val)=> { @@ -13,6 +14,8 @@ export const keywordsHandles = (props: SearchProps): KeywordsReturnTypes => { // 清空输入框 const onClearHandle = () => { keywords.value = '' + // 清空输入框时更新modelValue为空 + ctx.emit('update:modelValue', '') } const clearIconShow = computed(() => { return keywords.value.length > 0 diff --git a/devui/search/src/search-types.ts b/devui/search/src/search-types.ts index 2462f1c33facd461b2192e80b8405cbd0f6c7aa8..6d42d53275094d7d813e368520dd5530e60a737d 100644 --- a/devui/search/src/search-types.ts +++ b/devui/search/src/search-types.ts @@ -48,6 +48,10 @@ export const searchProps = { type: String, default: '', }, + searchFn: { + type: Function as PropType<(v: string) => void>, + default: undefined + }, 'onUpdate:modelValue': { type: Function as PropType<(v: string) => void>, default: undefined diff --git a/devui/search/src/search.scss b/devui/search/src/search.scss index 0e7d66aa9c1513dfdff66856b9163b95cb93b8c7..0e5c186aab2bb9501fe75f8f1f07a8d74cdf2dea 100644 --- a/devui/search/src/search.scss +++ b/devui/search/src/search.scss @@ -41,6 +41,7 @@ cursor: pointer; padding: 0 10px; position: absolute; + z-index: 1; right: 0; top: 0; font-size: 16px; diff --git a/devui/search/src/search.tsx b/devui/search/src/search.tsx index 1b8ccccce0e500c77dae087390e62d941cd138d6..e2ca607e063c23db13cfb6ad2f51487f5d72ef5c 100644 --- a/devui/search/src/search.tsx +++ b/devui/search/src/search.tsx @@ -13,7 +13,7 @@ export default defineComponent({ setup(props: SearchProps, ctx) { const rootClasses = getRootClass(props) // 输入框内容定义、删改 - const {keywords, clearIconShow, onClearHandle} = keywordsHandles(props) + const {keywords, clearIconShow, onClearHandle} = keywordsHandles(ctx, props) // 键盘回车事件 const { onInputKeydown, onClickHandle } = keydownHandles(ctx, keywords)