ElemComposition.vue 1005 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <template>
  2. <div class="elem-composition">
  3. <div class="elem-title" v-if="data.showTitle" ref="ElemTitle">
  4. {{ data.parent.topicName }}
  5. </div>
  6. <div class="elem-body" ref="ElemBody">
  7. <div class="elem-composition-elements">
  8. <elem-composition-element
  9. v-for="element in data.elements"
  10. :key="element.id"
  11. :data="element"
  12. ></elem-composition-element>
  13. </div>
  14. </div>
  15. </div>
  16. </template>
  17. <script>
  18. import ElemCompositionElement from "./ElemCompositionElement";
  19. export default {
  20. name: "elem-composition",
  21. components: { ElemCompositionElement },
  22. props: {
  23. data: {
  24. type: Object
  25. }
  26. },
  27. data() {
  28. return {};
  29. },
  30. mounted() {
  31. this.modifyBodyStyle();
  32. },
  33. methods: {
  34. modifyBodyStyle() {
  35. let height = this.data.h;
  36. if (this.data.showTitle) {
  37. height = this.data.h - this.$refs.ElemTitle.clientHeight;
  38. }
  39. this.$refs.ElemBody.style.height = height + "px";
  40. }
  41. }
  42. };
  43. </script>