126 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|     <div v-if="video || screenshots">
 | |
|       <div class="swiper-carousel overflow-hidden">
 | |
|         <div class="swiper-wrapper" style="flex-wrap: nowrap !important;">
 | |
|           <div class="swiper-slide" v-for="(screenshot, index) in screenshots" :key="index">
 | |
|             <a :href="screenshot.path_string" class="glightbox">
 | |
|                 <img class="rounded-lg object-cover cursor-pointer" :src="screenshot.path_string" :alt="screenshot.alt_attribute" />
 | |
|                 <div class="text-gray-700 text-sm my-2">{{ screenshot.description }}</div>
 | |
|             </a>
 | |
|           </div>
 | |
|         </div>
 | |
|         <div v-if="pagination" class="swiper-pagination w-full flex justify-center gap-1"></div>
 | |
| 
 | |
|         <div v-if="arrow" class="swiper-button-next ltr:-right-8 rtl:-left-8 top-12">
 | |
|             <span class="material-icons text-5xl">chevron_right</span>
 | |
|         </div>
 | |
| 
 | |
|         <div v-if="arrow" class="swiper-button-prev ltr:-left-8 rtl:-right-8 top-12">
 | |
|             <span class="material-icons text-5xl">chevron_left</span>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import Swiper, { Navigation, Pagination } from 'swiper';
 | |
| Swiper.use([Navigation, Pagination]);
 | |
| 
 | |
| import GLightbox from 'glightbox';
 | |
| import 'glightbox/dist/css/glightbox.min.css';
 | |
| 
 | |
| export default {
 | |
|     name: "akaunting-slider",
 | |
| 
 | |
|     props: {
 | |
|         name: {
 | |
|             type: String,
 | |
|             default: null,
 | |
|             description: "App Name"
 | |
|         },
 | |
|         video: {
 | |
|             type: String,
 | |
|             default: null,
 | |
|             description: "App Video"
 | |
|         },
 | |
|         screenshots: {
 | |
|             type: Array,
 | |
|             default: false,
 | |
|             description: "App Screenshots"
 | |
|         },
 | |
|         height: {
 | |
|             type: String,
 | |
|             default: null,
 | |
|             description: "height of the carousel"
 | |
|         },
 | |
|         arrow: {
 | |
|             type: [Boolean, String],
 | |
|             default: false,
 | |
|         },
 | |
|         pagination: {
 | |
|             type: [Boolean, String],
 | |
|             default: false,
 | |
|         },
 | |
|         type: {
 | |
|             type: String,
 | |
|             default: '',
 | |
|             description: "type of the Carousel (card)"
 | |
|         },
 | |
|         sliderView: {
 | |
|             type: [Number, String],
 | |
|             default: 4,
 | |
|         },
 | |
|         sliderRow: {
 | |
|             type: [Number, String],
 | |
|             default: 2,
 | |
|         }
 | |
|     },
 | |
|     mounted() {
 | |
|         let media = [];
 | |
|         if (this.screenshots.length) {
 | |
|             this.screenshots.forEach(function(screenshot) {
 | |
|                 media.push({ // For image
 | |
|                     thumb: screenshot.path_string,
 | |
|                     src: screenshot.path_string,
 | |
|                 });
 | |
|             });
 | |
|         }
 | |
|         this.media = media;
 | |
|         new Swiper(".swiper-carousel", {
 | |
|             loop: false,
 | |
|             grid: {
 | |
|                 rows: this.sliderRow,
 | |
|             },
 | |
|             spaceBetween: 30,
 | |
|             breakpoints: {
 | |
|                 640: {
 | |
|                     slidesPerView: 1
 | |
|                 },
 | |
|                 768: {
 | |
|                     slidesPerView: this.sliderView,
 | |
|                 }
 | |
|             },
 | |
|             pagination: {
 | |
|                 el: ".swiper-pagination",
 | |
|                 clickable: true
 | |
|               },
 | |
|               navigation: {
 | |
|                 nextEl: ".swiper-button-next",
 | |
|                 prevEl: ".swiper-button-prev",
 | |
|               },
 | |
|         });
 | |
|         GLightbox({
 | |
|             touchNavigation: true,
 | |
|             loop: false,
 | |
|             autoplayVideos: false,
 | |
|             selector: ".glightbox"
 | |
|         });
 | |
|     },
 | |
|     data: function () {
 | |
|         return {
 | |
|             media: [],
 | |
|         }
 | |
|     },
 | |
| }
 | |
| </script>
 |