117 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <article class="card card-thematique search-card">
 | |
|     <header>
 | |
|       <a
 | |
|         :href="item.path"
 | |
|         @click.prevent="openThematique"
 | |
|       >
 | |
|         <h1>{{ item.title }}</h1>
 | |
|         <h4>{{ item.short_description }}</h4>
 | |
|       </a>
 | |
|     </header>
 | |
|     <section class="images" v-switcher>
 | |
|       <figure
 | |
|         v-for="(img, index) in item.visuels"
 | |
|         :key="img.url"
 | |
|       >
 | |
|         <img
 | |
|           class="lazy"
 | |
|           v-lazy="index"
 | |
|           :data-src="img.style_cardmedium_url"
 | |
|           :title="img.title"
 | |
|         />
 | |
|         <img
 | |
|           class="blank"
 | |
|           :src="blanksrc"
 | |
|           @click="lightbox_index = index"
 | |
|         >
 | |
|       </figure>
 | |
|     </section>
 | |
|     <CoolLightBox
 | |
|       :items="item.visuels"
 | |
|       :index="lightbox_index"
 | |
|       srcName="style_hd_url"
 | |
|       :loop="true"
 | |
|       @close="lightbox_index = null">
 | |
|     </CoolLightBox>
 | |
|   </article>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import { mapState, mapActions } from 'vuex'
 | |
| import cardMixins from 'vuejs/components/cardMixins'
 | |
| // import ModalCard from 'vuejs/components/Content/ModalCard'
 | |
| 
 | |
| export default {
 | |
|   name: "Card",
 | |
|   props: ['item'],
 | |
|   mixins: [cardMixins],
 | |
|   // components: {
 | |
|   //   ModalCard
 | |
|   // },
 | |
|   data() {
 | |
|     return {
 | |
|       blanksrc:`${drupalSettings.path.themePath}/assets/img/blank.gif`,
 | |
|       // loadingFlag: false,
 | |
|       lightbox_index: null,
 | |
|       alias: this.item.path.replace(/^.?\/thematique\//g, '')
 | |
|     }
 | |
|   },
 | |
|   // computed: {
 | |
|   //   ...mapState({
 | |
|   //     flagcolls: state => state.User.flagcolls
 | |
|   //   })
 | |
|   // },
 | |
|   methods: {
 | |
|     // ...mapActions({
 | |
|     //   flagUnflag: 'User/flagUnflag'
 | |
|     // }),
 | |
|     // flagIsActive(collid) {
 | |
|     //   // console.log("Card flagIsActive",
 | |
|     //   //   this.item.id,
 | |
|     //   //   this.flagcolls[collid].items,
 | |
|     //   //   this.flagcolls[collid].items.indexOf(this.item.id)
 | |
|     //   // );
 | |
|     //   // console.log(this.flagcolls[collid].items_uuids);
 | |
|     //   // return this.flagcolls[collid].items_uuids.indexOf(this.item.uuid) !== -1;
 | |
|     //   return this.flagcolls[collid].items.indexOf(this.item.id) !== -1;
 | |
|     // },
 | |
|     // flagIsLoading(collid) {
 | |
|     //   // console.log(this.item.uuid);
 | |
|     //   // console.log(this.flagcolls[collid].items_uuids);
 | |
|     //   return collid === this.loadingFlag;
 | |
|     // },
 | |
|     // onFlagActionCard (e) {
 | |
|     //   console.log("Card onFlagActionCard", e, this.item);
 | |
|     //   if (!this.loadingFlag) {
 | |
|     //     let collid = e.target.getAttribute('collid');
 | |
|     //     let isActive = this.flagIsActive(collid);
 | |
|     //     let action = isActive ? 'unflag' : 'flag';
 | |
|     //     // console.log('collid', collid);
 | |
|     //     // console.log("this.item", this.item);
 | |
|     //     this.loadingFlag = collid;
 | |
|     //     this.flagUnflag({ action: action, id: this.item.id, collid: collid})
 | |
|     //     .then(data => {
 | |
|     //       console.log("onFlagActionCard then", data);
 | |
|     //       this.loadingFlag = false;
 | |
|     //     })
 | |
|     //   }
 | |
|     // },
 | |
|     openThematique (e) {
 | |
|       console.log('openThematique', e);
 | |
|       this.$router.push({
 | |
|         name:`thematique`,
 | |
|         params: { alias:this.alias }
 | |
|         // query: { nid: this.item.nid }
 | |
|         // meta: { uuid:this.item.uuid },
 | |
|       })
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
| 
 | |
| </style>
 |