@@ -17,6 +17,8 @@ const sorting = ref({
17
17
ascending: false
18
18
})
19
19
20
+ const previousSort = ref (" author" )
21
+
20
22
// helper
21
23
function sortByAuthor (a , b , order ) {
22
24
const aFirstAuthor = a .authors .split (' ,' )[0 ]
@@ -55,17 +57,12 @@ const sortedPublications = computed(() => {
55
57
})
56
58
57
59
function handleSortToggle (v ) {
58
- // console.log(sorting.value.sort, v)
59
- // if (sorting.value.sort == v) {
60
- // sorting.value.ascending = !sorting.value.ascending
61
- // }
62
- // else {
63
- // sorting.value.ascending = false
64
- // }
65
- }
66
-
67
- function handleSortOptionChange (v , e ) {
68
- console .log (v,e)
60
+ if (previousSort .value === v) {
61
+ sorting .value .ascending = ! sorting .value .ascending
62
+ } else {
63
+ previousSort .value = v
64
+ sorting .value .ascending = false
65
+ }
69
66
}
70
67
71
68
onMounted (async () => {
@@ -102,6 +99,12 @@ onMounted(async () => {
102
99
margin-bottom : 10px ;
103
100
}
104
101
}
102
+
103
+ .v-icon-placeholder {
104
+ width : 16px ; /* Width of the icon */
105
+ height : 16px ; /* Height of the icon */
106
+ display : inline-block ;
107
+ }
105
108
</style >
106
109
107
110
<v-row
@@ -112,28 +115,30 @@ onMounted(async () => {
112
115
# Publications
113
116
114
117
<v-btn-toggle
115
- : value ="sorting.sort"
116
- @change ="handleSortOptionChange(sorting, $event)"
118
+ v-model="sorting.sort"
117
119
mandatory
118
120
group
119
121
>
120
- <v-btn value="year" @click="() => handleSortToggle('year')">
122
+ <v-btn value="year" @click="() => sorting.sort === 'year' && handleSortToggle('year')">
121
123
Year
122
124
<v-icon v-if="sorting.sort === 'year'" class="opacity-60">
123
125
{{ (sorting.ascending) ? "mdi-arrow-up" : "mdi-arrow-down" }}
124
126
</v-icon>
127
+ <span v-else class="v-icon-placeholder"></span>
125
128
</v-btn>
126
- <v-btn value="author" @click="() => handleSortToggle('author')">
129
+ <v-btn value="author" @click="handleSortToggle('author')">
127
130
Author
128
131
<v-icon v-if="sorting.sort === 'author'" class="opacity-60">
129
132
{{ (sorting.ascending) ? "mdi-arrow-up" : "mdi-arrow-down" }}
130
133
</v-icon>
134
+ <span v-else class="v-icon-placeholder"></span>
131
135
</v-btn>
132
- <v-btn value="title" @click="() => handleSortToggle('title')">
136
+ <v-btn value="title" @click="handleSortToggle('title')">
133
137
Title
134
138
<v-icon v-if="sorting.sort === 'title'" class="opacity-60">
135
139
{{ (sorting.ascending) ? "mdi-arrow-up" : "mdi-arrow-down" }}
136
140
</v-icon>
141
+ <span v-else class="v-icon-placeholder"></span>
137
142
</v-btn>
138
143
</v-btn-toggle >
139
144
</v-row >
0 commit comments