add modules to list

This commit is contained in:
Lorenz Padberg 2023-07-20 17:51:54 +02:00
parent 631290722b
commit a06f7af44a
1 changed files with 69 additions and 3 deletions

View File

@ -1,4 +1,5 @@
<template> <template>
<div>
<div class="container"> <div class="container">
<div class="radio-group"> <div class="radio-group">
<div v-for="(category, index) in firstLevelCategories" :key="index" class="radio-item"> <div v-for="(category, index) in firstLevelCategories" :key="index" class="radio-item">
@ -7,13 +8,15 @@
:value="category" :value="category"
:id="'category-' + index" :id="'category-' + index"
v-model="selectedCategory" v-model="selectedCategory"
@change="filterModules"
/> />
<label :for="'category-' + index">{{ category }}</label> <label :for="'category-' + index">{{ category }}</label>
</div> </div>
</div> </div>
<div class="dropdown-container"> <div class="dropdown-container">
<select id="lernfeld-select" v-model="selectedLernfeld"> <select id="lernfeld-select" v-model="selectedLernfeld" @change="filterModules">
<option v-for="(lernfeld, index) in lernfeldOptions" :key="index" :value="lernfeld"> <option v-for="(lernfeld, index) in lernfeldOptions" :key="index" :value="lernfeld"
>
{{ lernfeld }} {{ lernfeld }}
</option> </option>
</select> </select>
@ -21,11 +24,27 @@
<div class="topic__modules">
<module-teaser
v-for="module in filteredModules"
v-bind="module"
:key="module.slug"
/>
</div>
</div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {computed, ref} from "vue"; import {computed, ref} from "vue";
import ModuleTeaser from "@/components/modules/ModuleTeaser.vue";
const props = defineProps<{ const props = defineProps<{
@ -33,6 +52,7 @@
}>(); }>();
const selectedCategory = ref(null); const selectedCategory = ref(null);
console.log(props.modules)
const lernfeldOptions = ['Alle Lernfelder', 'Lernfeld 1', 'Lernfeld 2', 'Lernfeld 3', 'Lernfeld 4', 'Lernfeld 5']; const lernfeldOptions = ['Alle Lernfelder', 'Lernfeld 1', 'Lernfeld 2', 'Lernfeld 3', 'Lernfeld 4', 'Lernfeld 5'];
const selectedLernfeld = ref('Alle Lernfelder'); const selectedLernfeld = ref('Alle Lernfelder');
@ -41,6 +61,37 @@
const firstLevelCategories = computed(() => { const firstLevelCategories = computed(() => {
return ["1. Lehrjahr", "2. Lehrjahr", "3. Lehrjahr", ]; return ["1. Lehrjahr", "2. Lehrjahr", "3. Lehrjahr", ];
}); });
let filteredModules = computed(() => {
return filterModules();
});
function filterModules() {
let filteredModules = props.modules;
if (selectedCategory.value === null) {
return props.modules;
}
// filter by Lehrjahr
filteredModules = props.modules.filter((module) => {
return module.metaTitle.includes(selectedCategory.value);
});
//filter by Lernfeld
if (selectedLernfeld.value !== 'Alle Lernfelder') {
filteredModules = filteredModules.filter((module) => {
return module.metaTitle.includes(selectedLernfeld.value);
});
}
return filteredModules;
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@ -72,4 +123,19 @@
display: flex; display: flex;
align-items: center; align-items: center;
} }
topic__modules {
margin-top: 40px;
display: flex;
flex-wrap: wrap;
@supports (display: grid) {
display: grid;
}
grid-column-gap: $large-spacing;
grid-row-gap: $large-spacing;
@include desktop {
grid-template-columns: repeat(3, minmax(auto, 380px));
}
}
</style> </style>