add strangeness in store & update LibraryOptions filters

This commit is contained in:
axolotle
2021-06-29 13:04:45 +02:00
parent 60d239450c
commit 02545bf081
3 changed files with 105 additions and 66 deletions
@@ -72,8 +72,10 @@ export default {
.list-inline { .list-inline {
margin: 0; margin: 0;
&-item { &-item {
margin-bottom: .25rem; margin-bottom: .25rem;
display: inline-block;
} }
} }
+96 -64
View File
@@ -19,28 +19,45 @@
v-if="mode !== 'tree'" v-if="mode !== 'tree'"
:label="$t('options.filters.title')" :label="$t('options.filters.title')"
> >
<b-form-group <div class="filters-mini-group mb-1">
:label="$t('options.filters.choices.tags')" <b-form-checkbox
label-for="tags-select" v-model="tagsIsActive" name="tags-button"
> button class="toggle-btn"
:class="tagsIsActive ? null : 'collapsed'"
:aria-expanded="tagsIsActive ? 'true' : 'false'"
aria-controls="tags-select"
button-variant="outline-dark"
>
{{ $t('options.filters.choices.tags') }}
</b-form-checkbox>
<multiple-tags-select <multiple-tags-select
v-if="tagsIsActive"
id="tags-select" :button-text="$t('options.filters.add')" id="tags-select" :button-text="$t('options.filters.add')"
v-model="activeTags" :options="tagsOptions" v-model="activeTags" :options="tagsOptions"
/> />
</b-form-group> </div>
<b-form-group <div class="filters-mini-group">
:label="$t('options.filters.choices.strangeness')" <b-form-checkbox
label-for="strangeness-input" v-model="strangenessIsActive" name="tags-button"
> button class="toggle-btn"
<div class="strangeness-input-wrapper"> :class="strangenessIsActive ? null : 'collapsed'"
:aria-expanded="strangenessIsActive ? 'true' : 'false'"
aria-controls="strangeness-input"
button-variant="outline-dark"
>
{{ $t('options.filters.choices.strangeness') }}
</b-form-checkbox>
<div v-if="strangenessIsActive" class="strangeness-input-wrapper">
<b-form-input <b-form-input
id="strangeness-input" id="strangeness-input"
type="range" min="0" max="5" type="range" min="1" max="5"
v-model="strangeness" v-model="activeStrangeness"
/> />
</div> </div>
</b-form-group> </div>
</b-form-group> </b-form-group>
<!-- LIST + MAP ONLY --> <!-- LIST + MAP ONLY -->
@@ -91,7 +108,8 @@ export default {
{ text: this.$t('options.display.choices.card-list'), value: 'list' } { text: this.$t('options.display.choices.card-list'), value: 'list' }
], ],
selectedTags: [], selectedTags: [],
strangeness: 0 tagsIsActive: false,
strangenessIsActive: false
} }
}, },
@@ -103,7 +121,8 @@ export default {
'mode', 'mode',
'nodeDepartId', 'nodeDepartId',
'search', 'search',
'tags' 'tags',
'strangeness'
]), ]),
show () { show () {
@@ -136,6 +155,27 @@ export default {
set (value) { set (value) {
this.$store.commit('UPDATE_TAGS', value) this.$store.commit('UPDATE_TAGS', value)
} }
},
activeStrangeness: {
get () { return this.strangeness },
set (value) {
this.$store.commit('UPDATE_STRANGENESS', parseInt(value))
}
}
},
watch: {
strangenessIsActive (activate) {
if (activate) {
this.$store.commit('UPDATE_STRANGENESS', 1)
} else {
this.$store.commit('UPDATE_STRANGENESS', undefined)
}
},
tagsIsActive () {
this.$store.commit('UPDATE_TAGS', [])
} }
} }
} }
@@ -158,7 +198,7 @@ export default {
} }
} }
@include media-breakpoint-up($layout-bp) { @include media-breakpoint-up($size-bp) {
padding: 0 $header-spacer $header-spacer; padding: 0 $header-spacer $header-spacer;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@@ -166,11 +206,12 @@ export default {
::v-deep { ::v-deep {
@include media-breakpoint-up($layout-bp) { @include media-breakpoint-up($size-bp) {
flex-wrap: wrap; flex-wrap: wrap;
fieldset { fieldset {
margin-bottom: 0;* margin-bottom: 0;
&:last-child { &:last-child {
flex-shrink: 2; flex-shrink: 2;
} }
@@ -182,6 +223,10 @@ export default {
} }
.mode-select-group { .mode-select-group {
> div {
line-height: 0;
}
label { label {
border-color: transparent; border-color: transparent;
@@ -194,56 +239,43 @@ export default {
} }
.filters-group { .filters-group {
margin: 0; width: 100%;
label {
margin-right: .5rem;
}
.form-group {
display: flex;
}
> div {
:last-child {
position: relative;
label {
white-space: nowrap;
}
.strangeness-input-wrapper {
min-width: 150px;
&::before,
&::after {
content: '';
display: inline-block;
width: 3px;
height: 20px;
background-color: $black;
position: absolute;
}
&::after {
margin-left: -2px;
}
}
}
}
@include media-breakpoint-up($layout-bp) { @include media-breakpoint-up($layout-bp) {
min-width: 450px; max-width: 450px;
}
.form-group { .filters-mini-group {
margin-bottom: 0; display: flex;
line-height: 0;
}
.toggle-btn label {
border-color: transparent;
margin-right: .5rem;
&:not(:disabled):not(.disabled):active,
&:not(:disabled):not(.disabled).active {
border-color: $black;
background-color: transparent;
color: $black;
}
}
.strangeness-input-wrapper {
min-width: 150px;
&::before,
&::after {
content: '';
display: inline-block;
width: 3px;
height: 20px;
background-color: $black;
position: absolute;
} }
> div { &::after {
display: flex; margin-left: -2px;
justify-content: space-between;
> :first-child {
margin-right: 1rem;
}
} }
} }
} }
+7 -2
View File
@@ -19,13 +19,13 @@ export default {
nodebook: undefined, nodebook: undefined,
// LibraryOptions options // LibraryOptions options
strangeness: [0, 1, 2, 3, 4],
tagsOptions: [], tagsOptions: [],
// LibraryOptions state // LibraryOptions state
mode: undefined, mode: undefined,
nodeDepartId: undefined, nodeDepartId: undefined,
search: '', search: '',
tags: [] tags: [],
strangeness: undefined
}, },
mutations: { mutations: {
@@ -79,6 +79,10 @@ export default {
state.tags = tags state.tags = tags
}, },
'UPDATE_STRANGENESS' (state, strangenessLvl) {
state.strangeness = strangenessLvl
},
'SET_MODE' (state, mode) { 'SET_MODE' (state, mode) {
state.mode = mode state.mode = mode
}, },
@@ -192,6 +196,7 @@ export default {
nodeDepartId: state => state.nodeDepartId, nodeDepartId: state => state.nodeDepartId,
search: state => state.search, search: state => state.search,
tags: state => state.tags, tags: state => state.tags,
strangeness: state => state.strangeness,
// LibraryOptions options // LibraryOptions options
tagsOptions: state => state.tagsOptions, tagsOptions: state => state.tagsOptions,