Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quantum-kittens
GitHub Repository: quantum-kittens/platypus
Path: blob/main/frontend/vue/components/UserAccount/SyllabusCard.vue
3375 views
<template>
  <div class="syllabus-card">
    <div class="syllabus-card__body">
      <h4 class="syllabus-card__title">
        {{ syllabus.name }}
      </h4>
      <SyllabusGeneralInformation class="syllabus-card__data" :syllabus="syllabus" />
    </div>
    <div class="syllabus-card__footer">
      <AppCta
        v-if="userIsOwner"
        class="syllabus-card__footer__cta syllabus-card__footer__cta-edit"
        :url="`/syllabus/edit/${syllabus.code}`"
        label="Edit Syllabus"
        kind="secondary"
      />
      <AppCta
        class="syllabus-card__footer__cta"
        :url="`/syllabus/${syllabus.code}`"
        label="View Syllabus"
      />
    </div>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue-demi'
import AppCta from '../common/AppCta.vue'
import SyllabusGeneralInformation from '../Syllabus/SyllabusGeneralInformation.vue'

export default defineComponent({
  name: 'SyllabusCard',
  components: {
    AppCta,
    SyllabusGeneralInformation
  },
  props: {
    syllabus: {
      type: Object,
      required: false,
      default: () => { }
    },
    userId: {
      type: String,
      required: false,
      default: ''
    }
  },
  computed: {
    userIsOwner ():boolean {
      const currentSyllabus = JSON.parse(JSON.stringify(this.syllabus))

      return currentSyllabus?.ownerList.includes(this.userId)
    }
  }
})
</script>

<style lang="scss" scoped>
@import 'carbon-components/scss/globals/scss/typography';
@import '~/../scss/variables/mq.scss';
@import '~/../scss/variables/colors.scss';

@mixin bicolor-background($colorLeft, $colorRight) {
  background-image: linear-gradient(90deg, $colorLeft 0%, $colorLeft 50%, $colorRight 50%, $colorRight 100%);
}

.syllabus-card {
  width: 100%;
  background-color: $background-color-lighter;
  display: flex;
  justify-content: space-between;
  flex-direction: column;

  &__body {
    padding: $spacing-05 $spacing-05 $spacing-07 $spacing-05;
  }

  &__title {
    @include type-style('productive-heading-01');
    margin-bottom: $spacing-06;
  }

  &__footer {
    display: flex;
    justify-content: flex-end;

    &__cta {
      width: 100%;
      max-width: 50%;

      &-edit {
        @include bicolor-background($background-color-light-2, $background-color-light);
        color: $text-color-black;

        &:hover,
        &:focus,
        &:active {
          color: $text-color-black;
        }
      }
    }
  }
}
</style>