it-tools/src/components/SearchBar.vue

60 lines
1.6 KiB
Vue
Raw Normal View History

2020-05-15 12:27:18 +02:00
<template>
<v-autocomplete
label="Search..."
single-line
append-icon="fa-search"
color="white"
hide-details
:items="items"
item-text="text"
2020-05-15 12:27:18 +02:00
item-value="path"
solo-inverted
@change="choose"
:filter="filter"
clearable
cache-items
2020-05-15 12:27:18 +02:00
>
<template v-slot:no-data>
<v-list-item>
<v-list-item-title>
Search for the <strong>tool</strong> you need!
</v-list-item-title>
</v-list-item>
</template>
</v-autocomplete>
</template>
<script>
import {toolsComponentsFlat} from '../router'
2020-05-15 12:27:18 +02:00
console.log(toolsComponentsFlat);
2020-05-15 12:27:18 +02:00
export default {
name: "SearchBar",
data() {
2020-05-15 12:27:18 +02:00
const vm = this;
return {
items: toolsComponentsFlat,
choose(path) {
vm.$router.push(path).catch(() => {
})
2020-05-15 12:27:18 +02:00
}
}
},
methods: {
filter(item, queryText, itemText) {
const query = queryText.trim().toLowerCase();
const nameContainsText = itemText.toLowerCase().includes(query);
const keywordContainsText = item.keywords ? item.keywords.some(keyword => keyword.toLowerCase().includes(query)) : false;
return nameContainsText || keywordContainsText;
}
}
2020-05-15 12:27:18 +02:00
}
</script>
<style scoped lang="less">
::v-deep .v-list-item__mask{
color: inherit !important;
background: inherit !important;
}
2020-05-15 12:27:18 +02:00
</style>