Skip to content
Snippets Groups Projects
Documentation.vue 2.55 KiB
Newer Older
permcu's avatar
permcu committed
<template>
Hangzhi Yu's avatar
Hangzhi Yu committed
  <v-card :class="{ 'my-1 full-width': true, 'd-flex flex-column': !compact }">
    <v-card-title v-if="!compact">
Hangzhi Yu's avatar
Hangzhi Yu committed
      <lesson-information
        v-bind="{ ...$attrs, ...documentationPartProps }"
        :is-create="false"
        :gql-patch-mutation="documentationsMutation"
      />
    </v-card-title>

Julian's avatar
Julian committed
      class="full-width main-body"
Hangzhi Yu's avatar
Hangzhi Yu committed
      :class="{
        vertical: !compact || $vuetify.breakpoint.mobile,
        'pa-2': compact,
      }"
      <lesson-information
        v-if="compact"
        v-bind="documentationPartProps"
        :is-create="false"
        :gql-patch-mutation="documentationsMutation"
      />
      <lesson-summary
        ref="summary"
        v-bind="{ ...$attrs, ...documentationPartProps }"
        :is-create="false"
        :gql-patch-mutation="documentationsMutation"
        @open="$emit('open')"
        @loading="loading = $event"
        @save="$emit('close')"
      <lesson-notes v-bind="documentationPartProps" />
Julian's avatar
Julian committed
    <v-spacer />
Julian's avatar
Julian committed
    <v-divider />
    <v-card-actions v-if="!compact">
Julian's avatar
Julian committed
      <v-spacer />
Hangzhi Yu's avatar
Hangzhi Yu committed
      <cancel-button
        v-if="documentation.canEdit"
        @click="$emit('close')"
        :disabled="loading"
      />
      <save-button
        v-if="documentation.canEdit"
        @click="save"
        :loading="loading"
      />
      <cancel-button
        v-if="!documentation.canEdit"
        i18n-key="actions.close"
        @click="$emit('close')"
      />
    </v-card-actions>
permcu's avatar
permcu committed
</template>

<script>
Hangzhi Yu's avatar
Hangzhi Yu committed
import LessonInformation from "./LessonInformation.vue";
import LessonSummary from "./LessonSummary.vue";
import LessonNotes from "./LessonNotes.vue";
import SaveButton from "aleksis.core/components/generic/buttons/SaveButton.vue";
import CancelButton from "aleksis.core/components/generic/buttons/CancelButton.vue";

import { createOrUpdateDocumentations } from "../coursebook.graphql";
import documentationPartMixin from "./documentationPartMixin";

permcu's avatar
permcu committed
export default {
  name: "Documentation",
  components: {
    LessonInformation,
    LessonSummary,
    LessonNotes,
    SaveButton,
    CancelButton,
permcu's avatar
permcu committed
  },
  emits: ["open", "close"],
  mixins: [documentationPartMixin],
      loading: false,
      documentationsMutation: createOrUpdateDocumentations,
  methods: {
    save() {
      this.$refs.summary.save();
Julian's avatar
Julian committed
      this.$emit("close");
permcu's avatar
permcu committed
};
</script>
.main-body {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1em;
}
.vertical {
  grid-template-columns: minmax(0, 1fr);