/
edwardd
/
projfair-client
Обзор
Документация
Войти
/
edwardd
/
projfair-client
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/hooks/useProjectSearch.ts
57 строк
1 KB
Alexandr Bulgatov
🚧 результат работы @trivago/prettier-plugin-sort-imports
01 июн 2023, 12:25
01 июн 2023, 12:25
84cca5e
Код
Авторство
О чём код?
import { debounce } from 'lodash'; import { ref, watch } from 'vue'; import { useProjectsStore } from '@/stores/projects/useProjectsStore'; type Options = { triggerOnInput: boolean; }; export const useProjectSearch = ({ triggerOnInput }: Options) => { const store = useProjectsStore(); const term = ref(''); const inputRef = ref<HTMLInputElement | null>(null); const isClearFilters = ref<boolean>(false); watch( () => store.filters.title, (title) => { if (!title) isClearFilters.value = true; term.value = title || ''; }, { immediate: true }, ); watch( () => term.value, () => { if (!triggerOnInput) return; if (isClearFilters.value) { isClearFilters.value = false; return; } debouncedInput(); }, ); function search() { term.value = term.value.trim(); store.setFilters({ title: term.value, page: 1 }); store.updateFilters(); } function submitSearch() { inputRef.value?.blur(); search(); } const debouncedInput = debounce(search, 600); const debouncedSubmit = debounce(submitSearch, 50); return { term, debouncedInput, debouncedSubmit, getInputRef: () => inputRef, }; };