This repository has been archived on 2021-09-06. You can view files and clone it, but cannot push or open issues or pull requests.
vuejs_course/2021-09-04_composition-13-d.../src/hooks/search.js

36 lines
843 B
JavaScript

import { ref, computed, watch } from 'vue';
export default function useSearch(items, searchProp) {
const enteredSearchTerm = ref('');
const activeSearchTerm = ref('');
const availableItems = computed(function() {
let filteredItems = [];
if (activeSearchTerm.value) {
filteredItems = items.value.filter(item =>
item[searchProp].includes(activeSearchTerm.value)
);
} else if (items.value) {
filteredItems = items.value;
}
return filteredItems;
});
function updateSearch(val) {
enteredSearchTerm.value = val;
}
watch(enteredSearchTerm, function(newValue) {
setTimeout(() => {
if (newValue === enteredSearchTerm.value) {
activeSearchTerm.value = newValue;
}
}, 300);
});
return {
enteredSearchTerm,
availableItems,
updateSearch
};
}