Skip to content
Snippets Groups Projects
ArticleFooter.vue 2.63 KiB
Newer Older
Henrik Askjer's avatar
Henrik Askjer committed
<template>
  <div class="article_footer">
Henrik Askjer's avatar
Henrik Askjer committed
      <span  v-if="hasPointer">
      <button aria-label="Del ordboksartikkel på Facebook" class="share_button" tabindex="0">
Henrik Askjer's avatar
Henrik Askjer committed
          <ShareNetwork network="facebook"
Henrik Askjer's avatar
Henrik Askjer committed
              title=""
              :url="share_link"
              tabindex="-1">
Henrik Askjer's avatar
Henrik Askjer committed
              <v-icon dense>$vuetify.icons.facebook</v-icon>
Henrik Askjer's avatar
Henrik Askjer committed
          </ShareNetwork>
      </button>
      <button aria-label="Del del ordboksartikkel på Twitter" class="share_button" tabindex="0">
Henrik Askjer's avatar
Henrik Askjer committed
          <ShareNetwork
              network="twitter"
              :url="share_link"
Henrik Askjer's avatar
Henrik Askjer committed
              :title="dict_label"
              hashtags="#ordbøkene"
              tabindex="-1">
Henrik Askjer's avatar
Henrik Askjer committed
              <v-icon dense>$vuetify.icons.twitter</v-icon>
Henrik Askjer's avatar
Henrik Askjer committed
          </ShareNetwork>
      </button>
Henrik Askjer's avatar
Henrik Askjer committed
    </span>
      <button v-if="webShareApiSupported" aria-label="Del ordboksartikkelen med andre" class="share_button" tabindex="0" @click="shareViaWebShare">
Henrik Askjer's avatar
Henrik Askjer committed
        <span v-if="!hasPointer" class = "share_text">Del ordet</span>
        <v-icon dense>$vuetify.icons.share</v-icon>
      </button>
    <div class = "footer_title" tabindex="0">Ordbøkene.no
Henrik Askjer's avatar
Henrik Askjer committed
    </div>
  </div>
</template>

<script>
export default {
  name: 'ArticleFooter',
  props: {
    article: Object
  },
    computed: {
Henrik Askjer's avatar
Henrik Askjer committed
      dict_label: function() { // TODO: reuse code used in header
      return {
        'bob': 'Fra bokmålsordboka',
        'nob': 'Frå nynorskordboka'
      }[this.article.dictionary] + ': ' + this.article.lemmas[0].lemma || ''
    },
Henrik Askjer's avatar
Henrik Askjer committed
    webShareApiSupported() {
Henrik Askjer's avatar
Henrik Askjer committed
      return navigator.share
    },
    hasPointer() {
      return window.matchMedia('(hover: hover) and (pointer: fine)').matches
Henrik Askjer's avatar
Henrik Askjer committed
    },
    share_link: function() {
Henrik Askjer's avatar
Henrik Askjer committed
      let host =  window.location.hostname === 'localhost'? 'https://dev.ordbok.uib.no/' : window.location.href
      return host + this.article.dictionary + '/' + this.article.article_id + '/' + encodeURIComponent(this.article.lemmas[0].lemma)
Henrik Askjer's avatar
Henrik Askjer committed
    }
  },
  methods: {
    shareViaWebShare() {
      navigator.share({
Henrik Askjer's avatar
Henrik Askjer committed
        title: "Ordbøkene.no: " + this.article.lemmas[0].lemma,
Henrik Askjer's avatar
Henrik Askjer committed
        text: "",
        url: "/" + this.article.dictionary + '/' + this.article.article_id + '/' + encodeURIComponent(this.article.lemmas[0].lemma)
Henrik Askjer's avatar
Henrik Askjer committed
      })
    }
  }
}

</script>
<style scoped>

.share_text {
  padding-right: 10px;
Henrik Askjer's avatar
Henrik Askjer committed
  vertical-align: middle;
Henrik Askjer's avatar
Henrik Askjer committed
}

Henrik Askjer's avatar
Henrik Askjer committed
.v-icon {
  color: var(--v-primary-base) !important;
}

Henrik Askjer's avatar
Henrik Askjer committed
.share_button {
  padding-right: 4px;
  font-weight: bold;
  font-size: 14px;
}

.article_footer {
  color: var(--v-primary-base);
  padding-top: 24px;
}

.footer_title {
  font-family: Inria Serif;
  font-weight: bold;
  font-size: 18px;
  float: right;
}

</style>