diff --git a/package-lock.json b/package-lock.json index 655538c4..a3dd6db2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15185,6 +15185,11 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -18362,6 +18367,14 @@ "integrity": "sha512-JNgiEJ5a8YPfk5y2lKyfOAGLmkpAVfhaUi+T4wGpSppRYZ3XSyawSDDketY5KV2CsAiBLAGEIO6jO+0l2hQubg==", "dev": true }, + "vue-js-modal": { + "version": "2.0.0-rc.6", + "resolved": "https://registry.npmjs.org/vue-js-modal/-/vue-js-modal-2.0.0-rc.6.tgz", + "integrity": "sha512-bJOm7Yhrl0ur/QyXjoC3gMMmE7UxiVEcS2rl8v9iPXIe9QLvjiCSZElSOvvyps8LNuG1X0rPifZGxI/CWKCFaw==", + "requires": { + "resize-observer-polyfill": "^1.5.1" + } + }, "vue-loader": { "version": "15.9.3", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.3.tgz", diff --git a/src/.vuepress/theme/components/base/Transitions.vue b/src/.vuepress/theme/components/base/Transitions.vue index f55dea0d..6e393765 100644 --- a/src/.vuepress/theme/components/base/Transitions.vue +++ b/src/.vuepress/theme/components/base/Transitions.vue @@ -10,7 +10,9 @@ @leave="leave" @after-leave="afterLeave" > - +
+ +
@@ -34,6 +36,10 @@ export default { type: Boolean, default: false, }, + withKey: { + type: String, + default: null, + }, beforeEnter: Func, enter: Func, afterEnter: Func, diff --git a/src/.vuepress/theme/components/blog/Card.vue b/src/.vuepress/theme/components/blog/Card.vue index 9d2e8a91..1cae8a0a 100644 --- a/src/.vuepress/theme/components/blog/Card.vue +++ b/src/.vuepress/theme/components/blog/Card.vue @@ -1,17 +1,23 @@ diff --git a/src/.vuepress/theme/components/blog/VideoCard.vue b/src/.vuepress/theme/components/blog/VideoCard.vue new file mode 100644 index 00000000..84d43b0d --- /dev/null +++ b/src/.vuepress/theme/components/blog/VideoCard.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/.vuepress/theme/components/blog/VideoModal.vue b/src/.vuepress/theme/components/blog/VideoModal.vue new file mode 100644 index 00000000..cc5c29e9 --- /dev/null +++ b/src/.vuepress/theme/components/blog/VideoModal.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/src/.vuepress/theme/components/blog/VideoModalContent.vue b/src/.vuepress/theme/components/blog/VideoModalContent.vue new file mode 100644 index 00000000..6cc00ef6 --- /dev/null +++ b/src/.vuepress/theme/components/blog/VideoModalContent.vue @@ -0,0 +1,155 @@ + + + diff --git a/src/.vuepress/theme/layouts/Blog.vue b/src/.vuepress/theme/layouts/Blog.vue index d475588a..72481e5d 100644 --- a/src/.vuepress/theme/layouts/Blog.vue +++ b/src/.vuepress/theme/layouts/Blog.vue @@ -31,6 +31,7 @@ :key="page.key" class="mb-4" :card="page" + :open-video-modal="openVideoModal" all /> @@ -55,6 +56,7 @@ v-observe-visibility="handleBottomVisibilityChange" > + @@ -64,6 +66,7 @@ import { mapState } from 'vuex' import Layout from '@theme/layouts/Layout.vue' import Card from '@theme/components/blog/Card' +import VideoModal from '@theme/components/blog/VideoModal' import SortAndFilter from '@theme/components/blog/SortAndFilter' import Breadcrumbs from '@theme/components/Breadcrumbs' import LanguageSelector from '@theme/components/base/LanguageSelector' @@ -88,6 +91,7 @@ export default { Breadcrumbs, SortAndFilter, LanguageSelector, + VideoModal, }, data: function () { return { @@ -108,6 +112,7 @@ export default { 'activeTags', 'searchedText', 'activeAuthor', + 'videoModalCard', ]), tags() { return getTags(this.publicPages) @@ -236,6 +241,9 @@ export default { this.current < this.delayValues.length - 1 ? this.current : -1 return this.delayValues[++this.current] }, + openVideoModal: function () { + this.$refs.videoModal.openModal() + }, }, } diff --git a/src/.vuepress/theme/layouts/GlobalLayout.vue b/src/.vuepress/theme/layouts/GlobalLayout.vue index 474b257a..6dc6677a 100644 --- a/src/.vuepress/theme/layouts/GlobalLayout.vue +++ b/src/.vuepress/theme/layouts/GlobalLayout.vue @@ -2,7 +2,7 @@