-
Adam Procter authoredAdam Procter authored
ModeToolbar.vue 1.31 KiB
<template>
<nav>
<button
v-for="mode in allModes"
v-on:click="() => setMode(mode.name)"
v-bind:key="mode.name"
v-bind:class="isActive(mode) ? 'active' : 'inactive'"
>
<Icon
v-bind:type="mode.icon"
v-bind:theme="isActive(mode) ? 'light' : 'dark'"
/>
</button>
</nav>
</template>
<script>
import { mapState, mapGetters } from 'vuex'
import * as allModes from '@/experimental/modes'
export default {
computed: {
...mapState({
mode: (state) => state.ui.mode,
}),
...mapGetters({
activeMode: 'ui/activeMode',
}),
},
methods: {
setMode(mode) {
this.$store.commit('ui/setMode', mode)
},
isActive(mode) {
return this.mode === mode.name
},
},
data() {
return {
allModes,
}
},
}
</script>
<style scoped>
nav {
position: absolute;
bottom: 20px;
left: 20px;
display: flex;
align-items: center;
justify-content: flex-start;
}
button {
border: none;
width: 50px;
height: 50px;
padding: 0;
margin: 0;
background: white;
border-radius: 25px;
display: flex;
align-items: center;
justify-content: center;
color: white;
outline: none;
box-shadow: 0px 0px 0px 2px rgba(0, 0, 0, 0.1);
margin-right: 10px;
}
button.active {
background: rgb(30, 30, 30);
}
</style>