Skip to content
Snippets Groups Projects
Projects.vue 1.64 KiB
<template>
  <template v-if="releases.length === 0">
    <p>{{$t('no_content')}}</p>
  </template>
  <template v-else>
    <div
      v-for="{ tag, projects } in releases"
      :key="tag"
      class="_border-left _border-left-color:gray-40 _padding-bottom:5"
    >
      <div class="timeline-item _font-weight:bold _padding-left:3">
        <i-badge size="lg" class="_padding:1 _font-weight:bold">ocrd_all {{tag}}</i-badge>
      </div>
      <i-row class="projects-container _margin-left:2 _margin-top:3 _display:flex">
        <i-column v-for="projectId in projects" :key="projectId" sm="3" class="_margin-bottom:2 _display:flex">
          <Project :id="projectId" class="_flex-grow:1"></Project>
        </i-column>
      </i-row>
    </div>
  </template>
</template>

<script setup>

import { onMounted, ref } from "vue"
import { store } from "@/helpers/store"
import api from "@/helpers/api"
import Project from "@/components/projects/Project.vue"

const releases = ref([])

onMounted(async () => {
  store.setRepos(await api.getProjects())

  releases.value = await api.getOcrdAllReleases()
  store.setReleases(releases.value)
})
</script>

<style lang="scss" scoped>
.timeline-item {
  &:before {
    content: "";
    position: absolute;
    display: block;
    width: 18px;
    height: 18px;
    background: var(--color--gray-40);
    left: -10px;
    top: 50%;
    transform: translateY(-50%);
    border-radius: 50%;
  }
}

.badge {
  &:before {
    content: "";
    position: absolute;
    display: block;
    width: 8px;
    height: 8px;
    background: var(----background);
    left: -4px;
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
  }
}
</style>