You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

97 lines
1.9 KiB

<template>
<div>
<v-btn-toggle tile group v-model="activeIndex">
<v-btn
v-for="(sortBy, i) in sortByList"
:key="`sort_by_${i}`"
class="sort-by-item text-center remove-upper"
plain
height="auto"
:ripple="false"
:class="width > 1264 ? '' : 'px-1'"
:style="width > 1264 ? 'font-size: 16px' : 'font-size: 12px'"
>
{{ $t(sortBy.text) }}
</v-btn>
</v-btn-toggle>
</div>
</template>
<script>
export default {
name: "SortByGroup",
data: () => ({
activeIndex: -1,
sortByList: [
/*{
text: "Ratings",
sort: "sortByRate",
},
{
text: "ShowEasy Recommended",
sort: "sortByRecommend",
},*/
{
text: "Show Dates",
sort: "sortByNewest",
},
{
text: "Exhibitor Numbers",
sort: "sortByExhibitNumber",
},
{
text: "Visitor Numbers",
sort: "sortByVisitorNumber",
},
],
width: undefined,
}),
created() {
if (process.client) {
this.width = window.innerWidth;
}
},
methods: {
onResize() {
if (process.client) {
this.width = window.innerWidth;
}
},
},
computed: {
windowWidth() {
if (process.client) {
this.width = window.innerWidth;
}
return this.width;
},
},
mounted() {
this.$nextTick(() => {
window.addEventListener("resize", this.onResize);
});
},
beforeDestroy() {
window.removeEventListener("resize", this.onResize);
},
watch: {
activeIndex(newIdx, oldIdx) {
if (newIdx === undefined || newIdx === oldIdx) return;
this.$emit("change", this.sortByList[newIdx].sort);
},
},
};
</script>
<style lang="scss" scoped>
.sort-by-item {
user-select: none;
cursor: pointer;
&:hover {
color: #ee9546;
}
&.v-btn--active {
color: #ee9546;
}
}
</style>