mirror of
https://github.com/Instadapp/assembly.git
synced 2024-07-29 22:37:06 +00:00
30 lines
943 B
TypeScript
30 lines
943 B
TypeScript
|
import { computed, ref } from '@nuxtjs/composition-api'
|
||
|
|
||
|
/**
|
||
|
* Simple filtering of objects by search term.
|
||
|
*
|
||
|
* @param {Ref<{}[]>} collectionRef Ref of object array with objects which items will get filtered
|
||
|
* @param {...string} propertyNames Names of properties that will be compared with the search term
|
||
|
*/
|
||
|
export function useSearchFilter(collectionRef, ...propertyNames) {
|
||
|
const search = ref('')
|
||
|
|
||
|
const filtered = computed(() => {
|
||
|
if (!search.value) return collectionRef.value
|
||
|
|
||
|
const term = search.value.toLowerCase()
|
||
|
|
||
|
return collectionRef.value.filter((item) => {
|
||
|
const properties = propertyNames.map((propertyName) => item[propertyName]).filter((p) => !!p)
|
||
|
|
||
|
const isTermIncludedInProperties = properties
|
||
|
.map((property) => property.toString().toLowerCase())
|
||
|
.some((property) => property.includes(term))
|
||
|
|
||
|
return isTermIncludedInProperties
|
||
|
})
|
||
|
})
|
||
|
|
||
|
return { filtered, search }
|
||
|
}
|