import Vue, { CreateElement, VNode } from "vue"; import { Component, Prop } from "vue-property-decorator"; @Component class SlideContent extends Vue { @Prop({ default: false }) isOpen: boolean; @Prop({ default: 'left-right' }) arrowPosition: string; @Prop({ default: true }) needBorder: boolean; @Prop({ default: false }) dottedView: boolean; @Prop({ default: false }) revertDottedView: boolean; isOpenLocal = false; toggleOpen(){ this.isOpenLocal= !this.isOpenLocal; } mounted(){ if(this.isOpen){ this.isOpenLocal = this.isOpen; } if(this.dottedView){ const header: any = this.$refs.header header.$el.querySelectorAll('.rt-slide-content-trigger').forEach((el)=> { el.addEventListener('click', () => { this.isOpenLocal = !this.isOpenLocal; window.getSelection().removeAllRanges(); setTimeout(()=>{ window.dispatchEvent(new Event("resize")); setTimeout(()=>{ window.dispatchEvent(new Event("resize")); },300) },50) }); }) } } render(h: CreateElement): VNode { if(this.revertDottedView){ return
} if(this.dottedView){ return } let slideArrowClass = `rt-slide__arrow rt-slide__arrow--${this.arrowPosition}`; let slideClass = `rt-slide`; if(!this.needBorder){ slideClass += ' rt-slide--without-border'; } if(this.isOpenLocal){ slideClass += ' rt-slide--is-active'; } let slideHeaderClass = `rt-slide__header rt-slide__header--${this.arrowPosition.split('-')[0]}`; let slideContentClass = `rt-slide__content rt-slide__content--${this.arrowPosition.split('-')[0]}`; return ; } } export default { component: SlideContent, name: "RtSlideContent" };