mirror of
https://github.com/gotson/komga.git
synced 2026-05-08 12:35:30 +02:00
fix(webui): fix combobox search value remaining after list selection
update vuetify
This commit is contained in:
parent
a6c47f1b85
commit
d114b0efb2
6 changed files with 135 additions and 125 deletions
22
komga-webui/package-lock.json
generated
22
komga-webui/package-lock.json
generated
|
|
@ -25,7 +25,7 @@
|
||||||
"vue-typed-mixins": "^0.2.0",
|
"vue-typed-mixins": "^0.2.0",
|
||||||
"vuedraggable": "^2.24.0",
|
"vuedraggable": "^2.24.0",
|
||||||
"vuelidate": "^0.7.5",
|
"vuelidate": "^0.7.5",
|
||||||
"vuetify": "^2.3.7",
|
"vuetify": "^2.5.1",
|
||||||
"vuex": "^3.5.1",
|
"vuex": "^3.5.1",
|
||||||
"vuex-persistedstate": "^3.2.0",
|
"vuex-persistedstate": "^3.2.0",
|
||||||
"vuex-router-sync": "^5.0.0"
|
"vuex-router-sync": "^5.0.0"
|
||||||
|
|
@ -19870,9 +19870,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vuetify": {
|
"node_modules/vuetify": {
|
||||||
"version": "2.3.7",
|
"version": "2.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.5.1.tgz",
|
||||||
"integrity": "sha512-9PNorMNNcn0okT78ZpN86qL5Zx4xu0yzcO2w1IdN3ECdbAP00rHe8CEYCThakwXGUuTZ8Iv7gAMDqH6zfxSMtA=="
|
"integrity": "sha512-L7bn8yVMXbt1QeTGaLTeyKE/tvhRUtGm5aQdCzUGu6lsGgEm7H707I4fjHftGNGNmmrUr3pmjpVrtqx65BMpUw==",
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/johnleider"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "^2.6.4"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vuetify-loader": {
|
"node_modules/vuetify-loader": {
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
|
|
@ -37680,9 +37687,10 @@
|
||||||
"integrity": "sha512-GAAG8QAFVp7BFeQlNaThpTbimq3+HypBPNwdkCkHZZeVaD5zmXXfhp357dcUJXHXTZjSln0PvP6wiwLZXkFTwg=="
|
"integrity": "sha512-GAAG8QAFVp7BFeQlNaThpTbimq3+HypBPNwdkCkHZZeVaD5zmXXfhp357dcUJXHXTZjSln0PvP6wiwLZXkFTwg=="
|
||||||
},
|
},
|
||||||
"vuetify": {
|
"vuetify": {
|
||||||
"version": "2.3.7",
|
"version": "2.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.5.1.tgz",
|
||||||
"integrity": "sha512-9PNorMNNcn0okT78ZpN86qL5Zx4xu0yzcO2w1IdN3ECdbAP00rHe8CEYCThakwXGUuTZ8Iv7gAMDqH6zfxSMtA=="
|
"integrity": "sha512-L7bn8yVMXbt1QeTGaLTeyKE/tvhRUtGm5aQdCzUGu6lsGgEm7H707I4fjHftGNGNmmrUr3pmjpVrtqx65BMpUw==",
|
||||||
|
"requires": {}
|
||||||
},
|
},
|
||||||
"vuetify-loader": {
|
"vuetify-loader": {
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
"vue-typed-mixins": "^0.2.0",
|
"vue-typed-mixins": "^0.2.0",
|
||||||
"vuedraggable": "^2.24.0",
|
"vuedraggable": "^2.24.0",
|
||||||
"vuelidate": "^0.7.5",
|
"vuelidate": "^0.7.5",
|
||||||
"vuetify": "^2.3.7",
|
"vuetify": "^2.5.1",
|
||||||
"vuex": "^3.5.1",
|
"vuex": "^3.5.1",
|
||||||
"vuex-persistedstate": "^3.2.0",
|
"vuex-persistedstate": "^3.2.0",
|
||||||
"vuex-router-sync": "^5.0.0"
|
"vuex-router-sync": "^5.0.0"
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<v-divider/>
|
<v-divider/>
|
||||||
|
|
||||||
<v-card-text style="height: 50%">
|
<v-card-text style="height: 50%">
|
||||||
<v-container fluid class="pa-0">
|
<v-container fluid class="">
|
||||||
|
|
||||||
<v-row justify="space-around" v-if="!single">
|
<v-row justify="space-around" v-if="!single">
|
||||||
<v-col cols="auto" class="pa-1">{{ $t('dialog.transient_book_viewer.label_candidate') }}</v-col>
|
<v-col cols="auto" class="pa-1">{{ $t('dialog.transient_book_viewer.label_candidate') }}</v-col>
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,7 @@
|
||||||
</settings-select>
|
</settings-select>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
|
|
||||||
<div v-if="continuousReader">
|
<template v-if="continuousReader">
|
||||||
<v-subheader class="font-weight-black text-h6">{{ $t('bookreader.settings.webtoon') }}</v-subheader>
|
<v-subheader class="font-weight-black text-h6">{{ $t('bookreader.settings.webtoon') }}</v-subheader>
|
||||||
<v-list-item>
|
<v-list-item>
|
||||||
<settings-select
|
<settings-select
|
||||||
|
|
@ -201,9 +201,9 @@
|
||||||
:label="$t('bookreader.settings.side_padding')"
|
:label="$t('bookreader.settings.side_padding')"
|
||||||
/>
|
/>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</div>
|
</template>
|
||||||
|
|
||||||
<div v-if="!continuousReader">
|
<template v-if="!continuousReader">
|
||||||
<v-subheader class="font-weight-black text-h6">{{ $t('bookreader.settings.paged') }}</v-subheader>
|
<v-subheader class="font-weight-black text-h6">{{ $t('bookreader.settings.paged') }}</v-subheader>
|
||||||
<v-list-item>
|
<v-list-item>
|
||||||
<settings-select
|
<settings-select
|
||||||
|
|
@ -220,7 +220,7 @@
|
||||||
:label="$t('bookreader.settings.page_layout')"
|
:label="$t('bookreader.settings.page_layout')"
|
||||||
/>
|
/>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</div>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
</v-list>
|
</v-list>
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</toolbar-sticky>
|
</toolbar-sticky>
|
||||||
|
|
||||||
<v-container fluid class="px-6">
|
<v-container fluid class="pa-6">
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col cols="4" sm="4" md="auto" lg="auto" xl="auto">
|
<v-col cols="4" sm="4" md="auto" lg="auto" xl="auto">
|
||||||
<item-card
|
<item-card
|
||||||
|
|
@ -98,6 +98,7 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col cols="8">
|
<v-col cols="8">
|
||||||
|
<v-container>
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col class="py-1">
|
<v-col class="py-1">
|
||||||
<router-link :to="{name:'browse-series', params: {seriesId: book.seriesId}}" class="link-underline">
|
<router-link :to="{name:'browse-series', params: {seriesId: book.seriesId}}" class="link-underline">
|
||||||
|
|
@ -123,7 +124,7 @@
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
|
|
||||||
<div class="hidden-xs-only">
|
<template v-if="$vuetify.breakpoint.smAndUp">
|
||||||
<v-row class="align-center">
|
<v-row class="align-center">
|
||||||
<v-col cols="auto">
|
<v-col cols="auto">
|
||||||
<v-btn color="accent"
|
<v-btn color="accent"
|
||||||
|
|
@ -164,11 +165,12 @@
|
||||||
<read-more>{{ book.metadata.summary }}</read-more>
|
<read-more>{{ book.metadata.summary }}</read-more>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
</template>
|
||||||
|
</v-container>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<div class="hidden-sm-and-up">
|
<template v-if="$vuetify.breakpoint.xsOnly">
|
||||||
<v-row class="align-center">
|
<v-row class="align-center">
|
||||||
<v-col cols="auto">
|
<v-col cols="auto">
|
||||||
<v-btn color="accent"
|
<v-btn color="accent"
|
||||||
|
|
@ -209,13 +211,11 @@
|
||||||
<read-more>{{ book.metadata.summary }}</read-more>
|
<read-more>{{ book.metadata.summary }}</read-more>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
</template>
|
||||||
|
|
||||||
<div v-for="role in authorRoles"
|
<v-row v-for="role in displayedRoles"
|
||||||
:key="role"
|
:key="role"
|
||||||
>
|
class="align-center text-caption"
|
||||||
<v-row class="align-center text-caption"
|
|
||||||
v-if="authorsByRole[role]"
|
|
||||||
>
|
>
|
||||||
<v-col cols="4" sm="3" md="2" xl="1" class="py-1 text-uppercase">{{ $t(`author_roles.${role}`) }}</v-col>
|
<v-col cols="4" sm="3" md="2" xl="1" class="py-1 text-uppercase">{{ $t(`author_roles.${role}`) }}</v-col>
|
||||||
<v-col cols="8" sm="9" md="10" xl="11" class="py-1">
|
<v-col cols="8" sm="9" md="10" xl="11" class="py-1">
|
||||||
|
|
@ -245,7 +245,6 @@
|
||||||
</vue-horizontal>
|
</vue-horizontal>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
|
||||||
|
|
||||||
<v-row v-if="book.metadata.tags.length > 0" class="align-center text-caption">
|
<v-row v-if="book.metadata.tags.length > 0" class="align-center text-caption">
|
||||||
<v-col cols="4" sm="3" md="2" xl="1" class="py-1">TAGS</v-col>
|
<v-col cols="4" sm="3" md="2" xl="1" class="py-1">TAGS</v-col>
|
||||||
|
|
@ -340,7 +339,6 @@ export default Vue.extend({
|
||||||
components: {ReadMore, ToolbarSticky, ItemCard, BookActionsMenu, ReadListsExpansionPanels, VueHorizontal, RtlIcon},
|
components: {ReadMore, ToolbarSticky, ItemCard, BookActionsMenu, ReadListsExpansionPanels, VueHorizontal, RtlIcon},
|
||||||
data: () => {
|
data: () => {
|
||||||
return {
|
return {
|
||||||
authorRoles,
|
|
||||||
book: {} as BookDto,
|
book: {} as BookDto,
|
||||||
series: {} as SeriesDto,
|
series: {} as SeriesDto,
|
||||||
context: {} as Context,
|
context: {} as Context,
|
||||||
|
|
@ -431,6 +429,9 @@ export default Vue.extend({
|
||||||
route: {name: 'browse-series', params: {seriesId: this.book.seriesId}},
|
route: {name: 'browse-series', params: {seriesId: this.book.seriesId}},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
displayedRoles(): string[] {
|
||||||
|
return authorRoles.filter(x => this.authorsByRole[x])
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
libraryDeleted(event: EventLibraryDeleted) {
|
libraryDeleted(event: EventLibraryDeleted) {
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
</template>
|
</template>
|
||||||
</filter-drawer>
|
</filter-drawer>
|
||||||
|
|
||||||
<v-container fluid class="px-6">
|
<v-container fluid class="pa-6">
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col cols="4" sm="4" md="auto" lg="auto" xl="auto">
|
<v-col cols="4" sm="4" md="auto" lg="auto" xl="auto">
|
||||||
<item-card
|
<item-card
|
||||||
|
|
@ -85,6 +85,7 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col cols="8">
|
<v-col cols="8">
|
||||||
|
<v-container>
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col class="py-1">
|
<v-col class="py-1">
|
||||||
<div class="text-h5" v-if="$_.get(series, 'metadata.title')">{{ series.metadata.title }}</div>
|
<div class="text-h5" v-if="$_.get(series, 'metadata.title')">{{ series.metadata.title }}</div>
|
||||||
|
|
@ -133,7 +134,7 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<div class="hidden-xs-only">
|
<template v-if="$vuetify.breakpoint.smAndUp">
|
||||||
<v-row class="align-center">
|
<v-row class="align-center">
|
||||||
<v-col cols="auto">
|
<v-col cols="auto">
|
||||||
<v-btn :title="$t('menu.download_series')"
|
<v-btn :title="$t('menu.download_series')"
|
||||||
|
|
@ -165,12 +166,12 @@
|
||||||
<read-more>{{ series.booksMetadata.summary }}</read-more>
|
<read-more>{{ series.booksMetadata.summary }}</read-more>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
</template>
|
||||||
|
</v-container>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<div class="hidden-sm-and-up">
|
<template v-if="$vuetify.breakpoint.xsOnly">
|
||||||
<!-- Download button -->
|
<!-- Download button -->
|
||||||
<v-row class="align-center">
|
<v-row class="align-center">
|
||||||
<v-col cols="auto">
|
<v-col cols="auto">
|
||||||
|
|
@ -205,9 +206,9 @@
|
||||||
<read-more>{{ series.booksMetadata.summary }}</read-more>
|
<read-more>{{ series.booksMetadata.summary }}</read-more>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
</template>
|
||||||
|
|
||||||
<!-- Pubisher -->
|
<!-- Publisher -->
|
||||||
<v-row v-if="series.metadata.publisher" class="align-center text-caption">
|
<v-row v-if="series.metadata.publisher" class="align-center text-caption">
|
||||||
<v-col cols="4" sm="3" md="2" xl="1" class="py-1 text-uppercase">{{ $t('common.publisher') }}</v-col>
|
<v-col cols="4" sm="3" md="2" xl="1" class="py-1 text-uppercase">{{ $t('common.publisher') }}</v-col>
|
||||||
<v-col cols="8" sm="9" md="10" xl="11" class="py-1">
|
<v-col cols="8" sm="9" md="10" xl="11" class="py-1">
|
||||||
|
|
@ -286,11 +287,10 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<v-divider v-if="series.booksMetadata.authors.length > 0"/>
|
<v-divider v-if="series.booksMetadata.authors.length > 0" class="my-3"/>
|
||||||
<div v-for="role in authorRolesSeries"
|
|
||||||
:key="role">
|
|
||||||
<v-row class="align-center text-caption"
|
<v-row class="align-center text-caption"
|
||||||
v-if="authorsByRole[role]"
|
v-for="role in displayedRoles"
|
||||||
|
:key="role"
|
||||||
>
|
>
|
||||||
<v-col cols="4" sm="3" md="2" xl="1" class="py-1 text-uppercase">{{ $t(`author_roles.${role}`) }}</v-col>
|
<v-col cols="4" sm="3" md="2" xl="1" class="py-1 text-uppercase">{{ $t(`author_roles.${role}`) }}</v-col>
|
||||||
<v-col cols="8" sm="9" md="10" xl="11" class="py-1">
|
<v-col cols="8" sm="9" md="10" xl="11" class="py-1">
|
||||||
|
|
@ -321,7 +321,6 @@
|
||||||
</vue-horizontal>
|
</vue-horizontal>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
|
||||||
|
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col>
|
<v-col>
|
||||||
|
|
@ -329,7 +328,7 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<v-divider class="my-1"/>
|
<v-divider class="mt-4 mb-1"/>
|
||||||
|
|
||||||
<empty-state
|
<empty-state
|
||||||
v-if="totalPages === 0"
|
v-if="totalPages === 0"
|
||||||
|
|
@ -418,7 +417,6 @@ export default Vue.extend({
|
||||||
},
|
},
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
authorRolesSeries,
|
|
||||||
series: {} as SeriesDto,
|
series: {} as SeriesDto,
|
||||||
books: [] as BookDto[],
|
books: [] as BookDto[],
|
||||||
selectedBooks: [] as BookDto[],
|
selectedBooks: [] as BookDto[],
|
||||||
|
|
@ -510,6 +508,9 @@ export default Vue.extend({
|
||||||
authorsByRole(): any {
|
authorsByRole(): any {
|
||||||
return groupAuthorsByRole(this.series.booksMetadata.authors)
|
return groupAuthorsByRole(this.series.booksMetadata.authors)
|
||||||
},
|
},
|
||||||
|
displayedRoles(): string[] {
|
||||||
|
return authorRolesSeries.filter(x => this.authorsByRole[x])
|
||||||
|
},
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
seriesId: {
|
seriesId: {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue