mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Update:Edit modal for mobile screen sizes and update tailwind
This commit is contained in:
		
							parent
							
								
									ab6da3914b
								
							
						
					
					
						commit
						793f82e445
					
				| @ -1,16 +1,16 @@ | |||||||
| <template> | <template> | ||||||
|   <div ref="wrapper" class="hidden absolute top-0 left-0 w-full h-full bg-black bg-opacity-50 rounded-lg items-center justify-center" style="z-index: 51" @click="clickClose"> |   <div ref="wrapper" class="hidden absolute top-0 left-0 w-full h-full bg-black bg-opacity-50 rounded-lg items-center justify-center" style="z-index: 51" @click="clickClose"> | ||||||
|     <div class="absolute top-5 right-5 h-12 w-12 flex items-center justify-center cursor-pointer text-white hover:text-gray-300"> |     <div class="absolute top-3 right-3 md:top-5 md:right-5 h-8 w-8 md:h-12 md:w-12 flex items-center justify-center cursor-pointer text-white hover:text-gray-300"> | ||||||
|       <span class="material-icons text-4xl">close</span> |       <span class="material-icons text-2xl md:text-4xl">close</span> | ||||||
|     </div> |     </div> | ||||||
|     <div ref="content" class="text-white"> |     <div ref="content" class="text-white"> | ||||||
|       <form v-if="selectedSeries" @submit.prevent="submitSeriesForm"> |       <form v-if="selectedSeries" @submit.prevent="submitSeriesForm"> | ||||||
|         <div class="bg-bg rounded-lg p-8" @click.stop> |         <div class="bg-bg rounded-lg px-2 py-6 sm:p-6 md:p-8" @click.stop> | ||||||
|           <div class="flex"> |           <div class="flex"> | ||||||
|             <div class="flex-grow p-1 min-w-80"> |             <div class="flex-grow p-1 min-w-48 sm:min-w-64 md:min-w-80"> | ||||||
|               <ui-input-dropdown ref="newSeriesSelect" v-model="selectedSeries.name" :items="existingSeriesNames" :disabled="!selectedSeries.id.startsWith('new')" label="Series Name" /> |               <ui-input-dropdown ref="newSeriesSelect" v-model="selectedSeries.name" :items="existingSeriesNames" :disabled="!selectedSeries.id.startsWith('new')" label="Series Name" /> | ||||||
|             </div> |             </div> | ||||||
|             <div class="w-40 p-1"> |             <div class="w-24 sm:w-28 md:w-40 p-1"> | ||||||
|               <ui-text-input-with-label v-model="selectedSeries.sequence" label="Sequence" /> |               <ui-text-input-with-label v-model="selectedSeries.sequence" label="Sequence" /> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|  | |||||||
| @ -2,11 +2,11 @@ | |||||||
|   <div ref="wrapper" class="modal modal-bg w-full h-full fixed top-0 left-0 bg-primary items-center justify-center opacity-0 hidden" :class="`z-${zIndex} bg-opacity-${bgOpacity}`"> |   <div ref="wrapper" class="modal modal-bg w-full h-full fixed top-0 left-0 bg-primary items-center justify-center opacity-0 hidden" :class="`z-${zIndex} bg-opacity-${bgOpacity}`"> | ||||||
|     <div class="absolute top-0 left-0 right-0 w-full h-36 bg-gradient-to-t from-transparent via-black-500 to-black-700 opacity-90 pointer-events-none" /> |     <div class="absolute top-0 left-0 right-0 w-full h-36 bg-gradient-to-t from-transparent via-black-500 to-black-700 opacity-90 pointer-events-none" /> | ||||||
| 
 | 
 | ||||||
|     <div class="absolute top-5 right-5 h-12 w-12 flex items-center justify-center cursor-pointer text-white hover:text-gray-300" @click="clickClose"> |     <div class="absolute top-3 right-3 md:top-5 md:right-5 h-8 w-8 md:h-12 md:w-12 flex items-center justify-center cursor-pointer text-white hover:text-gray-300" @click="clickClose"> | ||||||
|       <span class="material-icons text-4xl">close</span> |       <span class="material-icons text-2xl md:text-4xl">close</span> | ||||||
|     </div> |     </div> | ||||||
|     <slot name="outer" /> |     <slot name="outer" /> | ||||||
|     <div ref="content" style="min-width: 400px; min-height: 200px" class="relative text-white" :style="{ height: modalHeight, width: modalWidth, marginTop: contentMarginTop + 'px' }" @mousedown="mousedownModal" @mouseup="mouseupModal" v-click-outside="clickBg"> |     <div ref="content" style="min-width: 380px; min-height: 200px; max-width: 100vw" class="relative text-white" :style="{ height: modalHeight, width: modalWidth, marginTop: contentMarginTop + 'px' }" @mousedown="mousedownModal" @mouseup="mouseupModal" v-click-outside="clickBg"> | ||||||
|       <slot /> |       <slot /> | ||||||
|       <div v-if="processing" class="absolute top-0 left-0 right-0 bottom-0 w-full h-full bg-black bg-opacity-60 rounded-lg flex items-center justify-center"> |       <div v-if="processing" class="absolute top-0 left-0 right-0 bottom-0 w-full h-full bg-black bg-opacity-60 rounded-lg flex items-center justify-center"> | ||||||
|         <ui-loading-indicator /> |         <ui-loading-indicator /> | ||||||
|  | |||||||
| @ -1,13 +1,13 @@ | |||||||
| <template> | <template> | ||||||
|   <modals-modal v-model="show" name="edit-book" :width="800" :height="height" :processing="processing" :content-margin-top="75"> |   <modals-modal v-model="show" name="edit-book" :width="800" :height="height" :processing="processing" :content-margin-top="75"> | ||||||
|     <template #outer> |     <template #outer> | ||||||
|       <div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden pointer-events-none"> |       <div class="absolute top-0 left-0 p-4 md:p-5 w-2/3 overflow-hidden pointer-events-none"> | ||||||
|         <p class="font-book text-3xl text-white truncate pointer-events-none">{{ title }}</p> |         <p class="font-book text-xl md:text-3xl text-white truncate pointer-events-none">{{ title }}</p> | ||||||
|       </div> |       </div> | ||||||
|     </template> |     </template> | ||||||
|     <div class="absolute -top-10 left-0 z-10 w-full flex"> |     <div class="absolute -top-10 left-0 z-10 w-full flex"> | ||||||
|       <template v-for="tab in availableTabs"> |       <template v-for="tab in availableTabs"> | ||||||
|         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-1 cursor-pointer hover:bg-bg font-book border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> |         <div :key="tab.id" class="w-28 rounded-t-lg flex items-center justify-center mr-0.5 sm:mr-1 cursor-pointer hover:bg-bg font-book border-t border-l border-r border-black-300 tab text-xs sm:text-base" :class="selectedTab === tab.id ? 'tab-selected bg-bg pb-px' : 'bg-primary text-gray-400'" @click="selectTab(tab.id)">{{ tab.title }}</div> | ||||||
|       </template> |       </template> | ||||||
|     </div> |     </div> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="w-full h-full overflow-hidden overflow-y-auto px-4 py-6 relative"> |   <div class="w-full h-full overflow-hidden overflow-y-auto px-2 sm:px-4 py-6 relative"> | ||||||
|     <div class="flex"> |     <div class="flex flex-wrap"> | ||||||
|       <div class="relative"> |       <div class="relative"> | ||||||
|         <covers-book-cover :library-item="libraryItem" :book-cover-aspect-ratio="bookCoverAspectRatio" /> |         <covers-book-cover :library-item="libraryItem" :book-cover-aspect-ratio="bookCoverAspectRatio" /> | ||||||
|         <!-- book cover overlay --> |         <!-- book cover overlay --> | ||||||
| @ -11,14 +11,14 @@ | |||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div class="flex-grow pl-6 pr-2"> |       <div class="flex-grow sm:pl-2 md:pl-6 sm:pr-2 mt-2 md:mt-0"> | ||||||
|         <div class="flex items-center"> |         <div class="flex items-center"> | ||||||
|           <div v-if="userCanUpload" class="w-40 pr-2 pt-4" style="min-width: 160px"> |           <div v-if="userCanUpload" class="w-10 md:w-40 pr-2 pt-4 md:min-w-32"> | ||||||
|             <ui-file-input ref="fileInput" @change="fileUploadSelected">Upload Cover</ui-file-input> |             <ui-file-input ref="fileInput" @change="fileUploadSelected"><span class="hidden md:inline-block">Upload Cover</span><span class="material-icons inline-block md:!hidden">upload</span></ui-file-input> | ||||||
|           </div> |           </div> | ||||||
|           <form @submit.prevent="submitForm" class="flex flex-grow"> |           <form @submit.prevent="submitForm" class="flex flex-grow"> | ||||||
|             <ui-text-input-with-label v-model="imageUrl" label="Cover Image URL" /> |             <ui-text-input-with-label v-model="imageUrl" label="Cover Image URL" /> | ||||||
|             <ui-btn color="success" type="submit" :padding-x="4" class="mt-5 ml-3 w-24">Update</ui-btn> |             <ui-btn color="success" type="submit" :padding-x="4" class="mt-5 ml-2 sm:ml-3 w-24">Update</ui-btn> | ||||||
|           </form> |           </form> | ||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,23 +5,24 @@ | |||||||
|       <widgets-podcast-details-edit v-else ref="itemDetailsEdit" :library-item="libraryItem" @submit="saveAndClose" /> |       <widgets-podcast-details-edit v-else ref="itemDetailsEdit" :library-item="libraryItem" @submit="saveAndClose" /> | ||||||
|     </div> |     </div> | ||||||
| 
 | 
 | ||||||
|     <div class="absolute bottom-0 left-0 w-full py-4 bg-bg" :class="isScrollable ? 'box-shadow-md-up' : 'border-t border-white border-opacity-5'"> |     <div class="absolute bottom-0 left-0 w-full py-2 md:py-4 bg-bg" :class="isScrollable ? 'box-shadow-md-up' : 'border-t border-white border-opacity-5'"> | ||||||
|       <div class="flex items-center px-4"> |       <div class="flex items-center px-4"> | ||||||
|         <ui-btn v-if="userCanDelete" color="error" type="button" class="h-8" :padding-x="3" small @click.stop.prevent="removeItem">Remove</ui-btn> |         <ui-btn v-if="userCanDelete" color="error" type="button" class="h-8 hidden md:block" :padding-x="3" small @click.stop.prevent="removeItem">Remove</ui-btn> | ||||||
|  |         <ui-icon-btn bg-color="error" icon="delete" class="md:hidden" :size="7" icon-font-size="1rem" @click.stop.prevent="removeItem" /> | ||||||
| 
 | 
 | ||||||
|         <div class="flex-grow" /> |         <div class="flex-grow" /> | ||||||
| 
 | 
 | ||||||
|         <ui-tooltip v-if="mediaType == 'book'" :disabled="!!quickMatching" :text="`(Root User Only) Populate empty book details & cover with first book result from '${libraryProvider}'. Does not overwrite details.`" direction="bottom" class="mr-4"> |         <ui-tooltip v-if="mediaType == 'book'" :disabled="!!quickMatching" :text="`(Root User Only) Populate empty book details & cover with first book result from '${libraryProvider}'. Does not overwrite details.`" direction="bottom" class="mr-2 md:mr-4"> | ||||||
|           <ui-btn v-if="userIsAdminOrUp" :loading="quickMatching" color="bg" type="button" class="h-full" small @click.stop.prevent="quickMatch">Quick Match</ui-btn> |           <ui-btn v-if="userIsAdminOrUp" :loading="quickMatching" color="bg" type="button" class="h-full" small @click.stop.prevent="quickMatch">Quick Match</ui-btn> | ||||||
|         </ui-tooltip> |         </ui-tooltip> | ||||||
| 
 | 
 | ||||||
|         <ui-tooltip :disabled="!!libraryScan" text="(Root User Only) Rescan audiobook including metadata" direction="bottom" class="mr-4"> |         <ui-tooltip :disabled="!!libraryScan" text="(Root User Only) Rescan audiobook including metadata" direction="bottom" class="mr-2 md:mr-4"> | ||||||
|           <ui-btn v-if="userIsAdminOrUp && !isFile" :loading="rescanning" :disabled="!!libraryScan" color="bg" type="button" class="h-full" small @click.stop.prevent="rescan">Re-Scan</ui-btn> |           <ui-btn v-if="userIsAdminOrUp && !isFile" :loading="rescanning" :disabled="!!libraryScan" color="bg" type="button" class="h-full" small @click.stop.prevent="rescan">Re-Scan</ui-btn> | ||||||
|         </ui-tooltip> |         </ui-tooltip> | ||||||
| 
 | 
 | ||||||
|         <ui-btn @click="save" class="mx-2">Save</ui-btn> |         <ui-btn @click="save" class="mx-2 hidden md:block">Save</ui-btn> | ||||||
| 
 | 
 | ||||||
|         <ui-btn @click="saveAndClose">Save & Close</ui-btn> |         <ui-btn @click="saveAndClose">Save<span class="hidden md:inline-block"> & Close</span></ui-btn> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
|  | |||||||
| @ -2,13 +2,13 @@ | |||||||
|   <div class="w-full h-full overflow-hidden overflow-y-auto px-4 py-6"> |   <div class="w-full h-full overflow-hidden overflow-y-auto px-4 py-6"> | ||||||
|     <!-- Merge to m4b --> |     <!-- Merge to m4b --> | ||||||
|     <div v-if="showM4bDownload" class="w-full border border-black-200 p-4 my-8"> |     <div v-if="showM4bDownload" class="w-full border border-black-200 p-4 my-8"> | ||||||
|       <div class="flex items-center"> |       <div class="flex flex-wrap items-center"> | ||||||
|         <div> |         <div> | ||||||
|           <p class="text-lg">Make M4B Audiobook File <span class="text-error">*</span></p> |           <p class="text-lg">Make M4B Audiobook File <span class="text-error">*</span></p> | ||||||
|           <p class="max-w-sm text-sm pt-2 text-gray-300">Generate a .M4B audiobook file with embedded metadata, cover image, and chapters. <br /><span class="text-warning">*</span> Does not delete existing audio files.</p> |           <p class="max-w-sm text-sm pt-2 text-gray-300">Generate a .M4B audiobook file with embedded metadata, cover image, and chapters. <br /><span class="text-warning">*</span> Does not delete existing audio files.</p> | ||||||
|         </div> |         </div> | ||||||
|         <div class="flex-grow" /> |         <div class="flex-grow" /> | ||||||
|         <div> |         <div class="mt-2 md:mt-0"> | ||||||
|           <p v-if="abmergeStatus === $constants.DownloadStatus.FAILED" class="text-error mb-2">Download Failed</p> |           <p v-if="abmergeStatus === $constants.DownloadStatus.FAILED" class="text-error mb-2">Download Failed</p> | ||||||
|           <p v-if="abmergeStatus === $constants.DownloadStatus.READY" class="text-success mb-2">Download Ready!</p> |           <p v-if="abmergeStatus === $constants.DownloadStatus.READY" class="text-success mb-2">Download Ready!</p> | ||||||
|           <p v-if="abmergeStatus === $constants.DownloadStatus.EXPIRED" class="text-error mb-2">Download Expired</p> |           <p v-if="abmergeStatus === $constants.DownloadStatus.EXPIRED" class="text-error mb-2">Download Expired</p> | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| <template> | <template> | ||||||
|   <div> |   <div> | ||||||
|     <input ref="fileInput" type="file" :accept="accept" class="hidden" @change="inputChanged" /> |     <input ref="fileInput" type="file" :accept="accept" class="hidden" @change="inputChanged" /> | ||||||
|     <ui-btn @click="clickUpload" color="primary" type="text"><slot /></ui-btn> |     <ui-btn @click="clickUpload" color="primary" class="hidden md:block" type="text"><slot /></ui-btn> | ||||||
|  |     <ui-icon-btn @click="clickUpload" icon="upload" class="block md:hidden" /> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,21 +1,21 @@ | |||||||
| <template> | <template> | ||||||
|   <div class="w-full h-full relative"> |   <div class="w-full h-full relative"> | ||||||
|     <form class="w-full h-full px-4 py-6" @submit.prevent="submitForm"> |     <form class="w-full h-full px-2 md:px-4 py-6" @submit.prevent="submitForm"> | ||||||
|       <div class="flex -mx-1"> |       <div class="flex flex-wrap -mx-1"> | ||||||
|         <div class="w-1/2 px-1"> |         <div class="w-full md:w-1/2 px-1"> | ||||||
|           <ui-text-input-with-label ref="titleInput" v-model="details.title" label="Title" /> |           <ui-text-input-with-label ref="titleInput" v-model="details.title" label="Title" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="flex-grow px-1"> |         <div class="flex-grow px-1 mt-2 md:mt-0"> | ||||||
|           <ui-text-input-with-label ref="subtitleInput" v-model="details.subtitle" label="Subtitle" /> |           <ui-text-input-with-label ref="subtitleInput" v-model="details.subtitle" label="Subtitle" /> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| 
 | 
 | ||||||
|       <div class="flex mt-2 -mx-1"> |       <div class="flex flex-wrap mt-2 -mx-1"> | ||||||
|         <div class="w-3/4 px-1"> |         <div class="w-full sm:w-3/4 px-1"> | ||||||
|           <!-- Authors filter only contains authors in this library, use query input to query all authors --> |           <!-- Authors filter only contains authors in this library, use query input to query all authors --> | ||||||
|           <ui-multi-select-query-input ref="authorsSelect" v-model="details.authors" label="Authors" endpoint="authors/search" /> |           <ui-multi-select-query-input ref="authorsSelect" v-model="details.authors" label="Authors" endpoint="authors/search" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="flex-grow px-1"> |         <div class="flex-grow px-1 mt-2 md:mt-0"> | ||||||
|           <ui-text-input-with-label ref="publishYearInput" v-model="details.publishedYear" type="number" label="Publish Year" /> |           <ui-text-input-with-label ref="publishYearInput" v-model="details.publishedYear" type="number" label="Publish Year" /> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| @ -28,35 +28,35 @@ | |||||||
| 
 | 
 | ||||||
|       <ui-textarea-with-label ref="descriptionInput" v-model="details.description" :rows="3" label="Description" class="mt-2" /> |       <ui-textarea-with-label ref="descriptionInput" v-model="details.description" :rows="3" label="Description" class="mt-2" /> | ||||||
| 
 | 
 | ||||||
|       <div class="flex mt-2 -mx-1"> |       <div class="flex flex-wrap mt-2 -mx-1"> | ||||||
|         <div class="w-1/2 px-1"> |         <div class="w-full md:w-1/2 px-1"> | ||||||
|           <ui-multi-select ref="genresSelect" v-model="details.genres" label="Genres" :items="genres" /> |           <ui-multi-select ref="genresSelect" v-model="details.genres" label="Genres" :items="genres" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="flex-grow px-1"> |         <div class="flex-grow px-1 mt-2 md:mt-0"> | ||||||
|           <ui-multi-select ref="tagsSelect" v-model="newTags" label="Tags" :items="tags" /> |           <ui-multi-select ref="tagsSelect" v-model="newTags" label="Tags" :items="tags" /> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| 
 | 
 | ||||||
|       <div class="flex mt-2 -mx-1"> |       <div class="flex flex-wrap mt-2 -mx-1"> | ||||||
|         <div class="w-1/2 px-1"> |         <div class="w-full md:w-1/2 px-1"> | ||||||
|           <ui-multi-select ref="narratorsSelect" v-model="details.narrators" label="Narrators" :items="narrators" /> |           <ui-multi-select ref="narratorsSelect" v-model="details.narrators" label="Narrators" :items="narrators" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="w-1/4 px-1"> |         <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" /> |           <ui-text-input-with-label ref="isbnInput" v-model="details.isbn" label="ISBN" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="w-1/4 px-1"> |         <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" /> |           <ui-text-input-with-label ref="asinInput" v-model="details.asin" label="ASIN" /> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| 
 | 
 | ||||||
|       <div class="flex mt-2 -mx-1"> |       <div class="flex flex-wrap mt-2 -mx-1"> | ||||||
|         <div class="w-1/2 px-1"> |         <div class="w-full md:w-1/2 px-1"> | ||||||
|           <ui-text-input-with-label ref="publisherInput" v-model="details.publisher" label="Publisher" /> |           <ui-text-input-with-label ref="publisherInput" v-model="details.publisher" label="Publisher" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="w-1/4 px-1"> |         <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="Language" /> |           <ui-text-input-with-label ref="languageInput" v-model="details.language" label="Language" /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="flex-grow px-1 pt-6"> |         <div class="flex-grow px-1 pt-6 mt-2 md:mt-0"> | ||||||
|           <div class="flex justify-center"> |           <div class="flex justify-center"> | ||||||
|             <ui-checkbox v-model="details.explicit" label="Explicit" checkbox-bg="primary" border-color="gray-600" label-class="pl-2 text-base font-semibold" /> |             <ui-checkbox v-model="details.explicit" label="Explicit" checkbox-bg="primary" border-color="gray-600" label-class="pl-2 text-base font-semibold" /> | ||||||
|           </div> |           </div> | ||||||
|  | |||||||
| @ -58,7 +58,8 @@ module.exports = { | |||||||
|   buildModules: [ |   buildModules: [ | ||||||
|     // https://go.nuxtjs.dev/tailwindcss
 |     // https://go.nuxtjs.dev/tailwindcss
 | ||||||
|     '@nuxtjs/tailwindcss', |     '@nuxtjs/tailwindcss', | ||||||
|     '@nuxtjs/pwa' |     '@nuxtjs/pwa', | ||||||
|  |     '@nuxt/postcss8' | ||||||
|   ], |   ], | ||||||
| 
 | 
 | ||||||
|   // Modules: https://go.nuxtjs.dev/config-modules
 |   // Modules: https://go.nuxtjs.dev/config-modules
 | ||||||
| @ -123,7 +124,14 @@ module.exports = { | |||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   // Build Configuration: https://go.nuxtjs.dev/config-build
 |   // Build Configuration: https://go.nuxtjs.dev/config-build
 | ||||||
|   build: {}, |   build: { | ||||||
|  |     postcss: { | ||||||
|  |       plugins: { | ||||||
|  |         tailwindcss: {}, | ||||||
|  |         autoprefixer: {}, | ||||||
|  |       }, | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|   watchers: { |   watchers: { | ||||||
|     webpack: { |     webpack: { | ||||||
|       aggregateTimeout: 300, |       aggregateTimeout: 300, | ||||||
| @ -133,5 +141,13 @@ module.exports = { | |||||||
|   server: { |   server: { | ||||||
|     port: process.env.NODE_ENV === 'production' ? 80 : 3000, |     port: process.env.NODE_ENV === 'production' ? 80 : 3000, | ||||||
|     host: '0.0.0.0' |     host: '0.0.0.0' | ||||||
|   } |   }, | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |  * Temporary workaround for @nuxt-community/tailwindcss-module. | ||||||
|  |  * | ||||||
|  |  * Reported: 2022-05-23 | ||||||
|  |  * See: [Issue tracker](https://github.com/nuxt-community/tailwindcss-module/issues/480)
 | ||||||
|  |  */ | ||||||
|  |   devServerHandlers: [], | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										964
									
								
								client/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										964
									
								
								client/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -29,8 +29,10 @@ | |||||||
|     "vuedraggable": "^2.24.3" |     "vuedraggable": "^2.24.3" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|  |     "@nuxt/postcss8": "^1.1.3", | ||||||
|     "@nuxtjs/pwa": "^3.3.5", |     "@nuxtjs/pwa": "^3.3.5", | ||||||
|     "@nuxtjs/tailwindcss": "^4.2.1", |     "@nuxtjs/tailwindcss": "^4.2.1", | ||||||
|  |     "autoprefixer": "^10.4.7", | ||||||
|     "postcss": "^8.3.6" |     "postcss": "^8.3.6" | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -2,18 +2,23 @@ const defaultTheme = require('tailwindcss/defaultTheme') | |||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|   purge: { |   purge: { | ||||||
|     options: { |     content: [ | ||||||
|       safelist: [ |       'components/**/*.vue', | ||||||
|         'bg-success', |       'layouts/**/*.vue', | ||||||
|         'bg-red-600', |       'pages/**/*.vue', | ||||||
|         'text-green-500', |       'templates/**/*.vue', | ||||||
|         'py-1.5', |       'plugins/**/*.js', | ||||||
|         'bg-info', |       'nuxt.config.js' | ||||||
|         'px-1.5' |     ], | ||||||
|       ] |     safelist: [ | ||||||
|     } |       'bg-success', | ||||||
|  |       'bg-red-600', | ||||||
|  |       'text-green-500', | ||||||
|  |       'py-1.5', | ||||||
|  |       'bg-info', | ||||||
|  |       'px-1.5' | ||||||
|  |     ], | ||||||
|   }, |   }, | ||||||
|   darkMode: false, |  | ||||||
|   theme: { |   theme: { | ||||||
|     extend: { |     extend: { | ||||||
|       height: { |       height: { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user