mirror of
https://github.com/tenrok/vue-select.git
synced 2026-06-22 10:30:34 +03:00
223f3a6d85
commit8c3a1b107bAuthor: Jeff Sagal <sagalbot@gmail.com> Date: Fri Jul 15 09:57:37 2022 -0700 bump to vitepress 1.0.0-alpha.4 commit96ff08406cAuthor: Jeff Sagal <sagalbot@gmail.com> Date: Wed Feb 23 10:25:36 2022 -0800 vitepress wip mostly working, feeling like vuepress should still be considered commitf3e22e0439Author: Jeff Sagal <sagalbot@gmail.com> Date: Sat Feb 19 17:18:30 2022 -0800 remove yarn, rename readme commit8cd3bbeb51Author: Jeff Sagal <sagalbot@gmail.com> Date: Sat Feb 19 17:17:22 2022 -0800 install vitepress
66 lines
1.4 KiB
Vue
66 lines
1.4 KiB
Vue
<template>
|
|
<v-select
|
|
:options="paginated"
|
|
:filterable="false"
|
|
@search="(query) => (search = query)"
|
|
>
|
|
<li slot="list-footer" class="pagination">
|
|
<button :disabled="!hasPrevPage" @click="offset -= limit">Prev</button>
|
|
<button :disabled="!hasNextPage" @click="offset += limit">Next</button>
|
|
</li>
|
|
</v-select>
|
|
</template>
|
|
|
|
<script>
|
|
import countries from '../data/countries'
|
|
export default {
|
|
data: () => ({
|
|
countries,
|
|
search: '',
|
|
offset: 0,
|
|
limit: 10,
|
|
}),
|
|
computed: {
|
|
filtered() {
|
|
return this.countries.filter((country) =>
|
|
country.toLocaleLowerCase().includes(this.search.toLocaleLowerCase())
|
|
)
|
|
},
|
|
paginated() {
|
|
return this.filtered.slice(this.offset, this.limit + this.offset)
|
|
},
|
|
hasNextPage() {
|
|
const nextOffset = this.offset + this.limit
|
|
return Boolean(
|
|
this.filtered.slice(nextOffset, this.limit + nextOffset).length
|
|
)
|
|
},
|
|
hasPrevPage() {
|
|
const prevOffset = this.offset - this.limit
|
|
return Boolean(
|
|
this.filtered.slice(prevOffset, this.limit + prevOffset).length
|
|
)
|
|
},
|
|
},
|
|
methods: {
|
|
onSearch(query) {
|
|
this.search = query
|
|
this.offset = 0
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.pagination {
|
|
display: flex;
|
|
margin: 0.25rem 0.25rem 0;
|
|
}
|
|
.pagination button {
|
|
flex-grow: 1;
|
|
}
|
|
.pagination button:hover {
|
|
cursor: pointer;
|
|
}
|
|
</style>
|