mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Merge branch 'master' of https://github.com/advplyr/audiobookshelf
This commit is contained in:
		
						commit
						25ae6dd59a
					
				| @ -2,10 +2,10 @@ | ||||
|   <div> | ||||
|     <div class="flex flex-wrap"> | ||||
|       <div class="w-1/5 p-1"> | ||||
|         <ui-text-input-with-label v-model="newEpisode.season" :label="$strings.LabelSeason" /> | ||||
|         <ui-text-input-with-label v-model="newEpisode.season" trim-whitespace :label="$strings.LabelSeason" /> | ||||
|       </div> | ||||
|       <div class="w-1/5 p-1"> | ||||
|         <ui-text-input-with-label v-model="newEpisode.episode" :label="$strings.LabelEpisode" /> | ||||
|         <ui-text-input-with-label v-model="newEpisode.episode" trim-whitespace :label="$strings.LabelEpisode" /> | ||||
|       </div> | ||||
|       <div class="w-1/5 p-1"> | ||||
|         <ui-dropdown v-model="newEpisode.episodeType" :label="$strings.LabelEpisodeType" :items="episodeTypes" small /> | ||||
| @ -14,10 +14,10 @@ | ||||
|         <ui-text-input-with-label v-model="pubDateInput" ref="pubdate" type="datetime-local" :label="$strings.LabelPubDate" @input="updatePubDate" /> | ||||
|       </div> | ||||
|       <div class="w-full p-1"> | ||||
|         <ui-text-input-with-label v-model="newEpisode.title" :label="$strings.LabelTitle" /> | ||||
|         <ui-text-input-with-label v-model="newEpisode.title" :label="$strings.LabelTitle" trim-whitespace /> | ||||
|       </div> | ||||
|       <div class="w-full p-1"> | ||||
|         <ui-textarea-with-label v-model="newEpisode.subtitle" :label="$strings.LabelSubtitle" :rows="3" /> | ||||
|         <ui-textarea-with-label v-model="newEpisode.subtitle" :label="$strings.LabelSubtitle" :rows="3" trim-whitespace /> | ||||
|       </div> | ||||
|       <div class="w-full p-1"> | ||||
|         <ui-rich-text-editor :label="$strings.LabelDescription" v-model="newEpisode.description" /> | ||||
|  | ||||
| @ -215,6 +215,10 @@ export default { | ||||
|     inputBlur() { | ||||
|       if (!this.isFocused) return | ||||
| 
 | ||||
|       if (typeof this.textInput === 'string') { | ||||
|         this.textInput = this.textInput.trim() | ||||
|       } | ||||
| 
 | ||||
|       setTimeout(() => { | ||||
|         if (document.activeElement === this.$refs.input) { | ||||
|           return | ||||
| @ -231,6 +235,11 @@ export default { | ||||
|     }, | ||||
|     forceBlur() { | ||||
|       this.isFocused = false | ||||
| 
 | ||||
|       if (typeof this.textInput === 'string') { | ||||
|         this.textInput = this.textInput.trim() | ||||
|       } | ||||
| 
 | ||||
|       if (this.textInput) this.submitForm() | ||||
|       if (this.$refs.input) this.$refs.input.blur() | ||||
|     }, | ||||
| @ -289,11 +298,12 @@ export default { | ||||
|       this.selectedMenuItemIndex = null | ||||
|     }, | ||||
|     submitForm() { | ||||
|       if (!this.textInput) return | ||||
|       if (!this.textInput || !this.textInput.trim?.()) return | ||||
| 
 | ||||
|       this.textInput = this.textInput.trim() | ||||
| 
 | ||||
|       const cleaned = this.textInput.trim() | ||||
|       const matchesItem = this.items.find((i) => { | ||||
|         return i.name === cleaned | ||||
|         return i.name === this.textInput | ||||
|       }) | ||||
| 
 | ||||
|       if (matchesItem) { | ||||
|  | ||||
| @ -40,7 +40,8 @@ export default { | ||||
|     showCopy: Boolean, | ||||
|     step: [String, Number], | ||||
|     min: [String, Number], | ||||
|     customInputClass: String | ||||
|     customInputClass: String, | ||||
|     trimWhitespace: Boolean | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
| @ -101,9 +102,13 @@ export default { | ||||
|       this.$emit('focus') | ||||
|     }, | ||||
|     blurred() { | ||||
|       if (this.trimWhitespace && typeof this.inputValue === 'string') { | ||||
|         this.inputValue = this.inputValue.trim() | ||||
|       } | ||||
|       this.isFocused = false | ||||
|       this.$emit('blur') | ||||
|     }, | ||||
| 
 | ||||
|     change(e) { | ||||
|       this.$emit('change', e.target.value) | ||||
|     }, | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
|         <em v-if="note" class="font-normal text-xs pl-2">{{ note }}</em> | ||||
|       </label> | ||||
|     </slot> | ||||
|     <ui-text-input :placeholder="placeholder || label" :inputId="identifier" ref="input" v-model="inputValue" :disabled="disabled" :readonly="readonly" :type="type" :show-copy="showCopy" class="w-full" :class="inputClass" @blur="inputBlurred" /> | ||||
|     <ui-text-input :placeholder="placeholder || label" :inputId="identifier" ref="input" v-model="inputValue" :disabled="disabled" :readonly="readonly" :type="type" :show-copy="showCopy" class="w-full" :class="inputClass" :trim-whitespace="trimWhitespace" @blur="inputBlurred" /> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| @ -24,7 +24,8 @@ export default { | ||||
|     readonly: Boolean, | ||||
|     disabled: Boolean, | ||||
|     inputClass: String, | ||||
|     showCopy: Boolean | ||||
|     showCopy: Boolean, | ||||
|     trimWhitespace: Boolean | ||||
|   }, | ||||
|   data() { | ||||
|     return {} | ||||
|  | ||||
| @ -3,10 +3,10 @@ | ||||
|     <form class="w-full h-full px-2 md:px-4 py-6" @submit.prevent="submitForm"> | ||||
|       <div class="flex flex-wrap -mx-1"> | ||||
|         <div class="w-full md:w-1/2 px-1"> | ||||
|           <ui-text-input-with-label ref="titleInput" v-model="details.title" :label="$strings.LabelTitle" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="titleInput" v-model="details.title" :label="$strings.LabelTitle" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="flex-grow px-1 mt-2 md:mt-0"> | ||||
|           <ui-text-input-with-label ref="subtitleInput" v-model="details.subtitle" :label="$strings.LabelSubtitle" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="subtitleInput" v-model="details.subtitle" :label="$strings.LabelSubtitle" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|       </div> | ||||
| 
 | ||||
| @ -42,19 +42,19 @@ | ||||
|           <ui-multi-select ref="narratorsSelect" v-model="details.narrators" :label="$strings.LabelNarrators" :items="narrators" @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="w-1/2 md:w-1/4 px-1 mt-2 md:mt-0"> | ||||
|           <ui-text-input-with-label ref="isbnInput" v-model="details.isbn" label="ISBN" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="isbnInput" v-model="details.isbn" label="ISBN" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="w-1/2 md:w-1/4 px-1 mt-2 md:mt-0"> | ||||
|           <ui-text-input-with-label ref="asinInput" v-model="details.asin" label="ASIN" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="asinInput" v-model="details.asin" label="ASIN" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|       </div> | ||||
| 
 | ||||
|       <div class="flex flex-wrap mt-2 -mx-1"> | ||||
|         <div class="w-full md:w-1/4 px-1"> | ||||
|           <ui-text-input-with-label ref="publisherInput" v-model="details.publisher" :label="$strings.LabelPublisher" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="publisherInput" v-model="details.publisher" :label="$strings.LabelPublisher" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="w-1/2 md:w-1/4 px-1 mt-2 md:mt-0"> | ||||
|           <ui-text-input-with-label ref="languageInput" v-model="details.language" :label="$strings.LabelLanguage" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="languageInput" v-model="details.language" :label="$strings.LabelLanguage" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="flex-grow px-1 pt-6 mt-2 md:mt-0"> | ||||
|           <div class="flex justify-center"> | ||||
|  | ||||
| @ -3,14 +3,14 @@ | ||||
|     <form class="w-full h-full px-4 py-6" @submit.prevent="submitForm"> | ||||
|       <div class="flex -mx-1"> | ||||
|         <div class="w-1/2 px-1"> | ||||
|           <ui-text-input-with-label ref="titleInput" v-model="details.title" :label="$strings.LabelTitle" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="titleInput" v-model="details.title" :label="$strings.LabelTitle" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="flex-grow px-1"> | ||||
|           <ui-text-input-with-label ref="authorInput" v-model="details.author" :label="$strings.LabelAuthor" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="authorInput" v-model="details.author" :label="$strings.LabelAuthor" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|       </div> | ||||
| 
 | ||||
|       <ui-text-input-with-label ref="feedUrlInput" v-model="details.feedUrl" :label="$strings.LabelRSSFeedURL" class="mt-2" @input="handleInputChange" /> | ||||
|       <ui-text-input-with-label ref="feedUrlInput" v-model="details.feedUrl" :label="$strings.LabelRSSFeedURL" trim-whitespace class="mt-2" @input="handleInputChange" /> | ||||
| 
 | ||||
|       <ui-textarea-with-label ref="descriptionInput" v-model="details.description" :rows="3" :label="$strings.LabelDescription" class="mt-2" @input="handleInputChange" /> | ||||
| 
 | ||||
| @ -25,13 +25,13 @@ | ||||
| 
 | ||||
|       <div class="flex mt-2 -mx-1"> | ||||
|         <div class="w-1/4 px-1"> | ||||
|           <ui-text-input-with-label ref="releaseDateInput" v-model="details.releaseDate" :label="$strings.LabelReleaseDate" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="releaseDateInput" v-model="details.releaseDate" :label="$strings.LabelReleaseDate" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="w-1/4 px-1"> | ||||
|           <ui-text-input-with-label ref="itunesIdInput" v-model="details.itunesId" label="iTunes ID" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="itunesIdInput" v-model="details.itunesId" label="iTunes ID" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="w-1/4 px-1"> | ||||
|           <ui-text-input-with-label ref="languageInput" v-model="details.language" :label="$strings.LabelLanguage" @input="handleInputChange" /> | ||||
|           <ui-text-input-with-label ref="languageInput" v-model="details.language" :label="$strings.LabelLanguage" trim-whitespace @input="handleInputChange" /> | ||||
|         </div> | ||||
|         <div class="flex-grow px-1 pt-6"> | ||||
|           <div class="flex justify-center"> | ||||
|  | ||||
| @ -22,7 +22,7 @@ | ||||
|           <div v-if="openMapOptions" class="flex flex-wrap"> | ||||
|             <div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.subtitle" /> | ||||
|               <ui-text-input-with-label ref="subtitleInput" v-model="batchDetails.subtitle" :disabled="!selectedBatchUsage.subtitle" :label="$strings.LabelSubtitle" class="mb-5 ml-4" /> | ||||
|               <ui-text-input-with-label ref="subtitleInput" v-model="batchDetails.subtitle" :disabled="!selectedBatchUsage.subtitle" :label="$strings.LabelSubtitle" trim-whitespace class="mb-5 ml-4" /> | ||||
|             </div> | ||||
|             <div v-if="!isPodcastLibrary" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.authors" /> | ||||
| @ -31,7 +31,7 @@ | ||||
|             </div> | ||||
|             <div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.publishedYear" /> | ||||
|               <ui-text-input-with-label ref="publishedYearInput" v-model="batchDetails.publishedYear" :disabled="!selectedBatchUsage.publishedYear" :label="$strings.LabelPublishYear" class="mb-5 ml-4" /> | ||||
|               <ui-text-input-with-label ref="publishedYearInput" v-model="batchDetails.publishedYear" :disabled="!selectedBatchUsage.publishedYear" :label="$strings.LabelPublishYear" trim-whitespace class="mb-5 ml-4" /> | ||||
|             </div> | ||||
|             <div v-if="!isPodcastLibrary" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.series" /> | ||||
| @ -51,11 +51,11 @@ | ||||
|             </div> | ||||
|             <div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.publisher" /> | ||||
|               <ui-text-input-with-label ref="publisherInput" v-model="batchDetails.publisher" :disabled="!selectedBatchUsage.publisher" :label="$strings.LabelPublisher" class="mb-5 ml-4" /> | ||||
|               <ui-text-input-with-label ref="publisherInput" v-model="batchDetails.publisher" :disabled="!selectedBatchUsage.publisher" :label="$strings.LabelPublisher" trim-whitespace class="mb-5 ml-4" /> | ||||
|             </div> | ||||
|             <div v-if="!isMapAppend" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.language" /> | ||||
|               <ui-text-input-with-label ref="languageInput" v-model="batchDetails.language" :disabled="!selectedBatchUsage.language" :label="$strings.LabelLanguage" class="mb-5 ml-4" /> | ||||
|               <ui-text-input-with-label ref="languageInput" v-model="batchDetails.language" :disabled="!selectedBatchUsage.language" :label="$strings.LabelLanguage" trim-whitespace class="mb-5 ml-4" /> | ||||
|             </div> | ||||
|             <div v-if="!isMapAppend" class="flex items-center px-4 h-18 w-1/2"> | ||||
|               <ui-checkbox v-model="selectedBatchUsage.explicit" /> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user