Skip to content
Snippets Groups Projects
Article.vue 2.01 KiB
Newer Older
Ole Voldsæter's avatar
Ole Voldsæter committed
<template>
  <article v-show="article.lemmas.length">
    <Header :lemmas="article.lemmas" />
    <section v-if="article.body.pronunciation.length">
Ole Voldsæter's avatar
Ole Voldsæter committed
      <h3>Uttale</h3>
        <ul>
Ole Voldsæter's avatar
Ole Voldsæter committed
          <DefElement v-for="(element, index) in article.body.pronunciation" :key="index" :body='element' @article-click="article_link_click" />
Ole Voldsæter's avatar
Ole Voldsæter committed
        </ul>
    </section>
    <section v-if="article.body.etymology">
Ole Voldsæter's avatar
Ole Voldsæter committed
      <h3>Etymologi</h3>
        <ul>
Ole Voldsæter's avatar
Ole Voldsæter committed
          <DefElement v-for="(element, index) in article.body.etymology" :key="index" :body='element' @article-click="article_link_click" />
Ole Voldsæter's avatar
Ole Voldsæter committed
        </ul>
Ole Voldsæter's avatar
Ole Voldsæter committed
      <h3>Definisjoner</h3>
Ole Voldsæter's avatar
Ole Voldsæter committed
        <Definition v-for="definition in definitions" :key="definition.id" :body='definition' @article-click="article_link_click" />
Ole Voldsæter's avatar
Ole Voldsæter committed
</template>

<script>
Ole Voldsæter's avatar
Ole Voldsæter committed
//import axios from "axios";
Ole Voldsæter's avatar
Ole Voldsæter committed
import DefElement from './DefElement.vue'
import Definition from './Definition.vue'
import Header from './Header.vue'
Ole Voldsæter's avatar
Ole Voldsæter committed
export default {
  name: 'Article',
  props: {
    article: Object
Ole Voldsæter's avatar
Ole Voldsæter committed
  components: {
    Definition,
    Header
  },
  computed: {
    definitions: function() {
      let defs = this.article.body.definitions
      if (defs.length == 1) {
        let types = defs[0].elements.reduce((acc, toAdd)=>acc.add(toAdd.type_), new Set())
        if (types.size == 1 && types.has('definition')) {
          return defs[0].elements
        }
      }
      return defs
    }
Ole Voldsæter's avatar
Ole Voldsæter committed
  },
  methods: {
    article_link_click: function(item) {
      this.$emit('article-click', item)
    }
Ole Voldsæter's avatar
Ole Voldsæter committed
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
  margin-top: 30px;
}

Ole Voldsæter's avatar
Ole Voldsæter committed
h3 {
  margin: 40px 0 0;
}
Ole Voldsæter's avatar
Ole Voldsæter committed
a {
  //color: #42b983;
}

ol > li {
  padding-bottom: 2em;
}

ol > li:only-child > ul {
  padding-left: 0px;
}

ul {
  padding-top: 8px;
}

ul li {
list-style:none;
}

li ul .definition ul {
Ole Voldsæter's avatar
Ole Voldsæter committed
  padding-left: 6px;
}

ul li.definition {
  list-style: disc;
Ole Voldsæter's avatar
Ole Voldsæter committed
}
</style>