mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-27 04:39:12 +08:00
feat(app-search): auto focus on show
菜单搜索组件在显示后input自动获得焦点
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
<Input
|
<Input
|
||||||
:class="`${prefixCls}-input`"
|
:class="`${prefixCls}-input`"
|
||||||
:placeholder="t('common.searchText')"
|
:placeholder="t('common.searchText')"
|
||||||
|
ref="inputRef"
|
||||||
allow-clear
|
allow-clear
|
||||||
@change="handleSearch"
|
@change="handleSearch"
|
||||||
>
|
>
|
||||||
@@ -57,7 +58,7 @@
|
|||||||
</Teleport>
|
</Teleport>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, computed, unref, ref } from 'vue';
|
import { defineComponent, computed, unref, ref, watch, nextTick } from 'vue';
|
||||||
|
|
||||||
import { SearchOutlined } from '@ant-design/icons-vue';
|
import { SearchOutlined } from '@ant-design/icons-vue';
|
||||||
import { Input } from 'ant-design-vue';
|
import { Input } from 'ant-design-vue';
|
||||||
@@ -90,15 +91,10 @@
|
|||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const [refs, setRefs] = useRefs();
|
const [refs, setRefs] = useRefs();
|
||||||
const { getIsMobile } = useAppInject();
|
const { getIsMobile } = useAppInject();
|
||||||
|
const inputRef = ref<Nullable<HTMLElement>>(null);
|
||||||
|
|
||||||
const {
|
const { handleSearch, searchResult, keyword, activeIndex, handleEnter, handleMouseenter } =
|
||||||
handleSearch,
|
useMenuSearch(refs, scrollWrap, emit);
|
||||||
searchResult,
|
|
||||||
keyword,
|
|
||||||
activeIndex,
|
|
||||||
handleEnter,
|
|
||||||
handleMouseenter,
|
|
||||||
} = useMenuSearch(refs, scrollWrap, emit);
|
|
||||||
|
|
||||||
const getIsNotData = computed(() => {
|
const getIsNotData = computed(() => {
|
||||||
return !keyword || unref(searchResult).length === 0;
|
return !keyword || unref(searchResult).length === 0;
|
||||||
@@ -118,6 +114,16 @@
|
|||||||
emit('close');
|
emit('close');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => _.visible,
|
||||||
|
(v: boolean) => {
|
||||||
|
v &&
|
||||||
|
nextTick(() => {
|
||||||
|
unref(inputRef)?.focus();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
t,
|
t,
|
||||||
prefixCls,
|
prefixCls,
|
||||||
@@ -131,6 +137,7 @@
|
|||||||
scrollWrap,
|
scrollWrap,
|
||||||
handleMouseenter,
|
handleMouseenter,
|
||||||
handleClose,
|
handleClose,
|
||||||
|
inputRef,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user