|
@@ -0,0 +1,48 @@
|
|
|
+<template>
|
|
|
+ <a href="#" @click.prevent="open">
|
|
|
+ <img :src="img" :alt="title" style="border-radius: 6px;">
|
|
|
+ </a>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ props: {
|
|
|
+ title: {
|
|
|
+ type: String,
|
|
|
+ default: "Play Vuex Explained Visually Video"
|
|
|
+ },
|
|
|
+ img: {
|
|
|
+ type: String,
|
|
|
+ default: "/vuex-explained-visually.png"
|
|
|
+ },
|
|
|
+ url: {
|
|
|
+ type: String,
|
|
|
+ default: "https://player.vimeo.com/video/297515936?autoplay=1"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ open() {
|
|
|
+ // dropped v-if/v-else way to fix autoplay issue on Chrome
|
|
|
+ // https://github.com/vuejs/vuex/pull/1453#issuecomment-441507095
|
|
|
+ const { $el, url } = this;
|
|
|
+ if (!$el || !$el.parentNode) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const attrs = {
|
|
|
+ width: 640,
|
|
|
+ height: 360,
|
|
|
+ frameborder: 0,
|
|
|
+ src: url,
|
|
|
+ webkitallowfullscreen: true,
|
|
|
+ mozallowfullscreen: true,
|
|
|
+ allowfullscreen: true
|
|
|
+ };
|
|
|
+ const video = document.createElement('iframe');
|
|
|
+ for (const name in attrs) {
|
|
|
+ video.setAttribute(name, attrs[name]);
|
|
|
+ }
|
|
|
+ $el.parentNode.replaceChild(video, $el);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|