ElemComposition.vue 1.2 KB

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