diff --git a/client/components/modals/item/tabs/Match.vue b/client/components/modals/item/tabs/Match.vue index ed4db87a..9e2fe8be 100644 --- a/client/components/modals/item/tabs/Match.vue +++ b/client/components/modals/item/tabs/Match.vue @@ -79,7 +79,7 @@
- +

{{ $strings.LabelCurrently }} {{ mediaMetadata.narratorName || '' }}

@@ -122,7 +122,7 @@
- +

{{ $strings.LabelCurrently }} {{ media.tags.join(', ') }}

@@ -280,6 +280,9 @@ export default { bookCoverAspectRatio() { return this.$store.getters['libraries/getBookCoverAspectRatio'] }, + filterData() { + return this.$store.state.libraries.filterData + }, providers() { if (this.isPodcast) return this.$store.state.scanners.podcastProviders return this.$store.state.scanners.providers @@ -305,11 +308,16 @@ export default { isPodcast() { return this.mediaType == 'podcast' }, + narrators() { + return this.filterData.narrators || [] + }, genres() { - const filterData = this.$store.state.libraries.filterData || {} - const currentGenres = filterData.genres || [] + const currentGenres = this.filterData.genres || [] const selectedMatchGenres = this.selectedMatch.genres || [] return [...new Set([...currentGenres, ...selectedMatchGenres])] + }, + tags() { + return this.filterData.tags || [] } }, methods: { @@ -479,6 +487,12 @@ export default { // match.genres = match.genres.join(',') match.genres = match.genres.split(',').map((g) => g.trim()) } + if (match.tags && !Array.isArray(match.tags)) { + match.tags = match.tags.split(',').map((g) => g.trim()) + } + if (match.narrator && !Array.isArray(match.narrator)) { + match.narrator = match.narrator.split(',').map((g) => g.trim()) + } } console.log('Select Match', match) @@ -522,11 +536,11 @@ export default { ) updatePayload.metadata.authors = authorPayload } else if (key === 'narrator') { - updatePayload.metadata.narrators = this.selectedMatch[key].split(',').map((v) => v.trim()) + updatePayload.metadata.narrators = this.selectedMatch[key] } else if (key === 'genres') { updatePayload.metadata.genres = [...this.selectedMatch[key]] } else if (key === 'tags') { - updatePayload.tags = this.selectedMatch[key].split(',').map((v) => v.trim()) + updatePayload.tags = this.selectedMatch[key] } else if (key === 'itunesId') { updatePayload.metadata.itunesId = Number(this.selectedMatch[key]) } else { diff --git a/client/components/ui/MultiSelect.vue b/client/components/ui/MultiSelect.vue index 516b062d..337f501f 100644 --- a/client/components/ui/MultiSelect.vue +++ b/client/components/ui/MultiSelect.vue @@ -302,6 +302,14 @@ export default { this.recalcMenuPos() }) }, + resetInput() { + this.textInput = null + this.currentSearch = null + this.selectedMenuItemIndex = null + this.$nextTick(() => { + this.blur() + }) + }, insertNewItem(item) { this.selected.push(item) this.$emit('input', this.selected) @@ -316,15 +324,18 @@ export default { submitForm() { if (!this.textInput) return - var cleaned = this.textInput.trim() - var matchesItem = this.items.find((i) => { - return i === cleaned - }) - if (matchesItem) { - this.clickedOption(null, matchesItem) + const cleaned = this.textInput.trim() + if (!cleaned) { + this.resetInput() } else { - this.insertNewItem(this.textInput) + const matchesItem = this.items.find((i) => i === cleaned) + if (matchesItem) { + this.clickedOption(null, matchesItem) + } else { + this.insertNewItem(cleaned) + } } + if (this.$refs.input) this.$refs.input.style.width = '24px' }, scroll() { @@ -352,4 +363,4 @@ input:read-only { color: #aaa; background-color: #444; } - \ No newline at end of file +