add modules to list
This commit is contained in:
parent
631290722b
commit
a06f7af44a
|
|
@ -1,5 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div>
|
||||||
|
<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">
|
||||||
<input
|
<input
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue