add search filters to LibraryList and LibraryMap

This commit is contained in:
axolotle
2021-06-14 12:11:19 +02:00
parent 9c4018a615
commit a1f15457a0
5 changed files with 97 additions and 31 deletions
+18 -3
View File
@@ -1,8 +1,9 @@
<template>
<div class="library-list">
<div class="library-list-container">
<div v-for="(parents, char) in orderedTextsDepart" :key="char">
<div v-for="(parents, char) in filteredNodes" :key="char">
<h3>{{ char }}</h3>
<div class="library-list-nodes-group">
<node-view
v-for="parent in parents" :key="parent.id"
@@ -20,18 +21,32 @@
// FIXME let events bubble
import { mapGetters } from 'vuex'
import { searchInNode } from '@/store/utils'
import { NodeView } from '@/components/nodes'
export default {
name: 'CardList',
name: 'LibraryList',
components: {
NodeView
},
computed: {
...mapGetters(['orderedTextsDepart'])
...mapGetters(['orderedTextsDepart', 'search']),
filteredNodes () {
if (!this.orderedTextsDepart) return {}
const nodesGroups = {}
const search = this.search.toLowerCase()
Object.entries(this.orderedTextsDepart).forEach(([char, nodes]) => {
const filteredNodes = nodes.filter(node => searchInNode(search, node))
if (filteredNodes.length) {
nodesGroups[char] = filteredNodes
}
})
return nodesGroups
}
},
created () {