| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | <template lang='pug'>  v-dialog(    v-model='isShown'    max-width='550'    persistent    overlay-color='red darken-4'    overlay-opacity='.7'    )    v-card      .dialog-header.is-short.is-red        v-icon.mr-2(color='white') mdi-file-document-box-remove-outline        span {{$t('common:page.delete')}}      v-card-text.pt-5        i18next.body-1(path='common:page.deleteTitle', tag='div')          span.red--text.text--darken-2(place='title') {{pageTitle}}        .caption {{$t('common:page.deleteSubtitle')}}        v-chip.mt-3.ml-0.mr-1(label, color='red lighten-4', small)          .caption.red--text.text--darken-2 {{pageLocale.toUpperCase()}}        v-chip.mt-3.mx-0(label, color='red lighten-5', small)          span.red--text.text--darken-2 /{{pagePath}}      v-card-chin        v-spacer        v-btn(text, @click='discard', :disabled='loading') {{$t('common:actions.cancel')}}        v-btn.px-4(color='red darken-2', @click='deletePage', :loading='loading').white--text {{$t('common:actions.delete')}}</template><script>import _ from 'lodash'import { get } from 'vuex-pathify'import deletePageMutation from 'gql/common/common-pages-mutation-delete.gql'export default {  props: {    value: {      type: Boolean,      default: false    }  },  data() {    return {      loading: false    }  },  computed: {    isShown: {      get() { return this.value },      set(val) { this.$emit('input', val) }    },    pageTitle: get('page/title'),    pagePath: get('page/path'),    pageLocale: get('page/locale'),    pageId: get('page/id')  },  watch: {    isShown(newValue, oldValue) {      if (newValue) {        document.body.classList.add('page-deleted-pending')      }    }  },  methods: {    discard() {      document.body.classList.remove('page-deleted-pending')      this.isShown = false    },    async deletePage() {      this.loading = true      this.$store.commit(`loadingStart`, 'page-delete')      this.$nextTick(async () => {        try {          const resp = await this.$apollo.mutate({            mutation: deletePageMutation,            variables: {              id: this.pageId            }          })          if (_.get(resp, 'data.pages.delete.responseResult.succeeded', false)) {            this.isShown = false            _.delay(() => {              document.body.classList.add('page-deleted')              _.delay(() => {                window.location.assign('/')              }, 1200)            }, 400)          } else {            throw new Error(_.get(resp, 'data.pages.delete.responseResult.message', this.$t('common:error.unexpected')))          }        } catch (err) {          this.$store.commit('pushGraphError', err)        }        this.$store.commit(`loadingStop`, 'page-delete')        this.loading = false      })    }  }}</script><style lang='scss'>  body.page-deleted-pending {    perspective: 50vw;    height: 100vh;    overflow: hidden;    .application {      background-color: mc('grey', '900');    }    .application--wrap {      transform-style: preserve-3d;      transform: translateZ(-5vw) rotateX(2deg);      border-radius: 7px;      overflow: hidden;    }  }  body.page-deleted {    perspective: 50vw;    .application--wrap {      transform-style: preserve-3d;      transform: translateZ(-1000vw) rotateX(60deg);      opacity: 0;    }  }</style>
 |