Show more explicit no results message

This commit is contained in:
Sam Carlton 2022-06-05 15:11:34 -05:00
parent 1474a0ac02
commit d9de3edff6

View file

@ -44,9 +44,6 @@
</div> </div>
</div> </div>
<!-- activeFilters: {{ activeFilters }}
filterQueryList: {{ filterQueryList }} -->
<Carbon class="carbon-inline-wide" /> <Carbon class="carbon-inline-wide" />
<div <div
@ -66,13 +63,30 @@
<!-- hasStartedAnyQuery: {{ hasStartedAnyQuery }} --> <!-- hasStartedAnyQuery: {{ hasStartedAnyQuery }} -->
<template v-if="chunkedListings.length === 0">
<div <div
v-if="chunkedListings.length === 0"
class="text-center py-4" class="text-center py-4"
> >
No apps found <span>No apps found for</span>
<span
v-for="term in userTerms"
:key="term"
class="font-bold border rounded px-1 pb-1 mx-1"
>{{ term }}</span>
<template v-if="isFilteredList">
<span>within</span>
<span
v-for="term in baseFilters"
:key="term"
class="font-bold border rounded px-1 pb-1 mx-1"
>{{ term }}</span>
</template>
</div> </div>
</template>
<ul <ul
v-for="(listings, i) in chunkedListings" v-for="(listings, i) in chunkedListings"
:key="`listings-chunk-${i}`" :key="`listings-chunk-${i}`"
@ -316,7 +330,6 @@ export default {
query: '', query: '',
filterQueryList: [], filterQueryList: [],
hasStartedAnyQuery: false, hasStartedAnyQuery: false,
userFilters: [],
listingsResults: [], listingsResults: [],
waitingForQuery: false waitingForQuery: false
} }
@ -338,7 +351,7 @@ export default {
// Build filler listings to use while loading results // Build filler listings to use while loading results
if ( this.waitingForQuery ) return Array( 10 ).fill({ name: 'Loading', slug: 'loading', endpoint: '', linkClass: 'shimmer pointer-events-none' }) if ( this.waitingForQuery ) return Array( 10 ).fill({ name: 'Loading', slug: 'loading', endpoint: '', linkClass: 'shimmer pointer-events-none' })
if (!this.hasSearchInputText) return this.initialList if ( this.showingInitialList ) return this.initialList
return this.listingsResults return this.listingsResults
}, },
@ -357,16 +370,37 @@ export default {
return chunks return chunks
}, },
isFilteredList () {
return this.baseFilters.length > 0
},
hasSearchInputText () { hasSearchInputText () {
return this.storkQuery.length > 0 return this.query.length > 0
},
hasAnyUserFilters () {
return this.userFilters.length > 0
},
hasAnyUserTerms () {
return this.userTerms.length > 0
}, },
showingInitialList () { showingInitialList () {
return !this.hasSearchInputText return !this.hasAnyUserTerms
}, },
activeFilters () { inputTerms () {
return this.query.trim().split(' ')
},
userFilters () {
// console.log('filterQueryList', )
return this.filterQueryList.filter( filterTerm => {
return !this.baseFilters.includes( filterTerm )
})
},
userTerms () {
// If out input is empty, return just the user filters
if ( !this.hasSearchInputText ) return this.userFilters
return [ return [
...this.userFilters, ...this.inputTerms,
...this.baseFilters ...this.userFilters
] ]
}, },
summary () { summary () {
@ -399,7 +433,7 @@ export default {
this.storkFilters = new StorkFilters() this.storkFilters = new StorkFilters()
// Add initial filters // Add initial filters
this.storkFilters.setFromStringArray( this.activeFilters ) this.storkFilters.setFromStringArray( this.baseFilters )
}, },
methods: { methods: {