repod/src/components/Player/Volume.vue

78 lines
1.5 KiB
Vue
Raw Normal View History

2023-08-27 22:20:34 +02:00
<template>
<div>
2023-08-29 00:47:22 +02:00
<VolumeHigh v-if="player.volume > 0.7"
2023-08-27 22:20:34 +02:00
class="pointer"
:size="30"
@click="mute" />
2023-08-29 00:47:22 +02:00
<VolumeLow v-if="player.volume > 0 && player.volume <= 0.3"
2023-08-27 22:20:34 +02:00
class="pointer"
:size="30"
@click="mute" />
2023-08-29 00:47:22 +02:00
<VolumeMedium v-if="player.volume > 0.3 && player.volume <= 0.7"
2023-08-27 22:20:34 +02:00
class="pointer"
:size="30"
@click="mute" />
<VolumeMute v-if="player.volume === 0"
2023-08-27 22:20:34 +02:00
class="pointer"
:size="30"
@click="$store.dispatch('player/volume', volumeMuted)" />
2023-08-28 00:02:07 +02:00
<input max="1"
min="0"
step="0.1"
type="range"
2023-08-29 00:47:22 +02:00
:value="player.volume"
@change="(event) => $store.dispatch('player/volume', event.target.value)">
2023-08-27 22:20:34 +02:00
</div>
</template>
<script>
import VolumeHigh from 'vue-material-design-icons/VolumeHigh.vue'
import VolumeLow from 'vue-material-design-icons/VolumeLow.vue'
import VolumeMedium from 'vue-material-design-icons/VolumeMedium.vue'
import VolumeMute from 'vue-material-design-icons/VolumeMute.vue'
export default {
name: 'Volume',
components: {
VolumeHigh,
VolumeLow,
VolumeMedium,
VolumeMute,
},
data() {
return {
volumeMuted: 0,
}
},
computed: {
2023-08-29 00:47:22 +02:00
player() {
return this.$store.state.player
2023-08-27 22:20:34 +02:00
},
},
methods: {
mute() {
2023-08-29 00:47:22 +02:00
this.volumeMuted = this.player.volume
this.$store.dispatch('player/volume', 0)
2023-08-27 22:20:34 +02:00
},
},
}
</script>
<style scoped>
div {
align-items: center;
display: flex;
gap: 5px;
2024-01-18 11:55:12 +01:00
justify-content: flex-end;
2023-08-27 22:20:34 +02:00
}
2023-08-28 00:02:07 +02:00
input {
transform: rotate(270deg);
2023-08-28 18:18:25 +02:00
width: 4rem;
2023-08-28 00:02:07 +02:00
}
2023-08-27 22:20:34 +02:00
.pointer {
cursor: pointer;
}
</style>