Refactor LanguageFilter to remove ds-flex

This commit is contained in:
mattwr18 2020-03-16 15:51:54 +01:00
parent e400a10c45
commit 4f8a4c6753
2 changed files with 74 additions and 71 deletions

View File

@ -3,8 +3,8 @@
<h4 class="title">{{ $t('filter-menu.categories') }}</h4> <h4 class="title">{{ $t('filter-menu.categories') }}</h4>
<labeled-button <labeled-button
:filled="!filteredCategoryIds.length" :filled="!filteredCategoryIds.length"
icon="check"
:label="$t('filter-menu.all')" :label="$t('filter-menu.all')"
icon="check"
@click="resetCategories" @click="resetCategories"
/> />
<div class="divider" /> <div class="divider" />

View File

@ -1,67 +1,36 @@
<template> <template>
<ds-space margin-top="large"> <section class="language-filter">
<ds-flex id="filter-menu-header"> <h4 class="title">{{ $t('filter-menu.languages') }}</h4>
<ds-heading tag="h4">{{ $t('filter-menu.languages') }}</ds-heading> <labeled-button
<ds-space margin-bottom="large" /> :filled="!filteredLanguageCodes.length"
</ds-flex> :label="$t('filter-menu.all')"
<ds-flex :gutter="{ lg: 'small' }"> icon="check"
<ds-flex-item @click="resetLanguages"
:width="{ base: '100%', sm: '100%', md: '100%', lg: '5%' }" />
class="language-menu-item" <div class="divider" />
> <ul class="languages-list">
<ds-flex> <li v-for="language in locales" :key="language.code" class="menu-item">
<ds-flex-item width="10%" /> <base-button
<ds-flex-item width="100%"> :filled="filteredLanguageCodes.includes(language.code)"
<base-button circle
icon="check" @click="toggleLanguage(language.code)"
circle >
:filled="!filteredLanguageCodes.length" {{ language.code.toUpperCase() }}
@click="resetLanguages" </base-button>
/> </li>
<ds-flex-item> </ul>
<label class="language-labels">{{ $t('filter-menu.all') }}</label> </section>
</ds-flex-item>
<ds-space />
</ds-flex-item>
</ds-flex>
</ds-flex-item>
<ds-flex-item :width="{ base: '0%', sm: '0%', md: '0%', lg: '4%' }" />
<ds-flex-item
:width="{ base: '0%', sm: '0%', md: '0%', lg: '3%' }"
id="languages-menu-divider"
/>
<ds-flex v-for="language in locales" :key="language.code" class="languages-menu">
<ds-flex class="languages-menu">
<ds-flex-item width="100%" class="language-menu-item">
<base-button
class="language-buttons"
circle
:filled="filteredLanguageCodes.includes(language.code)"
@click="toggleLanguage(language.code)"
>
{{ language.code.toUpperCase() }}
</base-button>
<ds-space margin-bottom="small" />
</ds-flex-item>
<ds-flex>
<ds-flex-item class="language-menu-item">
<label class="language-labels">
{{ language.name }}
</label>
</ds-flex-item>
<ds-space margin-bottom="xx-large" />
</ds-flex>
</ds-flex>
</ds-flex>
</ds-flex>
</ds-space>
</template> </template>
<script> <script>
import locales from '~/locales' import locales from '~/locales'
import orderBy from 'lodash/orderBy' import orderBy from 'lodash/orderBy'
import { mapGetters, mapMutations } from 'vuex' import { mapGetters, mapMutations } from 'vuex'
import LabeledButton from '~/components/_new/generic/LabeledButton/LabeledButton'
export default { export default {
components: {
LabeledButton,
},
computed: { computed: {
...mapGetters({ ...mapGetters({
filteredLanguageCodes: 'posts/filteredLanguageCodes', filteredLanguageCodes: 'posts/filteredLanguageCodes',
@ -81,23 +50,57 @@ export default {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.language-menu-item { .language-filter {
text-align: center; display: flex;
} flex-wrap: wrap;
margin-top: $space-small;
.languages-menu { > .title {
justify-content: center; width: 100%;
} margin: $space-small 0;
.language-labels, }
.follow-label {
font-size: $font-size-small;
}
@media only screen and (min-width: 960px) { > .labeled-button {
#languages-menu-divider { margin-top: $space-small;
border-left: 1px solid $border-color-soft; }
margin: 9px 0px 40px 0px;
> .divider {
border-left: $border-size-base solid $border-color-soft;
margin: $space-x-small $space-base;
}
> .languages-list {
display: flex;
flex-wrap: wrap;
flex-basis: 80%;
flex-grow: 1;
> .menu-item {
width: 11%;
display: flex;
justify-content: center;
margin: $space-small 0;
}
}
@media only screen and (max-width: 630px) {
width: 100%;
> .title {
text-align: center;
}
.labeled-button {
width: 100%;
margin: $space-x-small 0;
}
> .divider {
width: 100%;
margin: $space-small;
border-top: $border-size-base solid $border-color-soft;
}
} }
} }
</style> </style>