Add Styling

This commit is contained in:
Lorenz Padberg 2023-08-17 12:47:57 +02:00
parent 5fd408a080
commit cc060b66db
2 changed files with 97 additions and 76 deletions

View File

@ -1,12 +1,15 @@
<template> <template>
<div> <div class="module-filter">
<div class="container"> <div class="module-filter__filterselection">
<ModuleFilterDropdown :selected-item="selectedCategory" <ModuleFilterDropdown class="module-filter__dropdown"
:selected-item="selectedCategory"
:items="firstLevelCategories" :items="firstLevelCategories"
@update:selectedItem="newItem => selectedCategory = newItem" @update:selectedItem="newItem => selectedCategory = newItem"
></ModuleFilterDropdown> ></ModuleFilterDropdown>
<ModuleFilterDropdown :selected-item="selectedLernfeld" <ModuleFilterDropdown
class="module-filter__dropdown"
:selected-item="selectedLernfeld"
:items="lernfeldOptions" :items="lernfeldOptions"
@update:selectedItem="newItem => selectedLernfeld = newItem" @update:selectedItem="newItem => selectedLernfeld = newItem"
></ModuleFilterDropdown> ></ModuleFilterDropdown>
@ -146,32 +149,23 @@
<style scoped lang="scss"> <style scoped lang="scss">
@import 'styles/helpers'; @import 'styles/helpers';
.container {
display: flex;
flex-wrap: wrap;
}
.module-filter { .module-filter {
width: 100%;
}
.radio-group { &__filterselection {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
}
.radio-item { }
display: flex; &__dropdown {
align-items: center;
margin-right: 20px; margin-right: 20px;
width: 100%;
@include desktop {
width: 300px;
}
} }
.dropdown-container { &__module-filter {
margin-left: 40px; width: 100%;
display: flex;
align-items: center;
} }
.topic { .topic {
@ -209,4 +203,5 @@
margin-bottom: $large-spacing; margin-bottom: $large-spacing;
} }
} }
}
</style> </style>

View File

@ -9,8 +9,10 @@
@click.stop="toggle()" @click.stop="toggle()"
> >
<span class="selected-class__text"> {{ selectedItem.name }}</span> <span class="selected-class__text"> {{ selectedItem.name }}</span>
<ChevronDown class="selected-class__dropdown-icon"/> <ChevronDown class="selected-class__dropdown-icon" :class="{'rotate-chevron': showPopover}"
/>
</div> </div>
<transition name="scaleY">
<WidgetPopover <WidgetPopover
:mobile="mobile" :mobile="mobile"
class="class-selection__popover" class="class-selection__popover"
@ -31,13 +33,13 @@
</WidgetPopover> </WidgetPopover>
</transition>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import WidgetPopover from '@/components/ui/WidgetPopover.vue'; import WidgetPopover from '@/components/ui/WidgetPopover.vue';
import {computed, ref, defineAsyncComponent} from "vue"; import {ref} from "vue";
import {defineComponent} from "vue";
import ChevronDown from "@/components/icons/ChevronDown.vue"; import ChevronDown from "@/components/icons/ChevronDown.vue";
const props = defineProps<{ const props = defineProps<{
@ -57,6 +59,7 @@
emit('update:selectedItem', item); emit('update:selectedItem', item);
showPopover.value = false; showPopover.value = false;
} }
const emit = defineEmits(['update:selectedItem']); const emit = defineEmits(['update:selectedItem']);
</script> </script>
@ -75,7 +78,7 @@
white-space: nowrap; white-space: nowrap;
top: 100%; top: 100%;
left: 0; left: 0;
transform: translateY($small-spacing); transform-origin: top;
} }
} }
@ -102,12 +105,35 @@
&__dropdown-icon { &__dropdown-icon {
width: 20px; width: 20px;
height: 20px; height: 20px;
transition: transform 0.3s ease;
fill: #139EE0; fill: #139EE0;
&.rotate-chevron { // This class will be applied when showPopover is true
transform: rotate(180deg);
}
} }
} }
.widget-popover { .widget-popover {
width: 100%; width: 100%;
border-radius: 12px; border-radius: 12px;
.popover-links__link {
&:hover {
background-color: #efefef;
}
}
}
.scaleY-enter-active,
.scaleY-leave-active {
transition: transform 0.3s;
}
.scaleY-enter,
.scaleY-leave-to
{
transform: scaleY(0);
} }
</style> </style>