mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-10-24 14:54:04 -04:00
71 lines
2.2 KiB
Vue
71 lines
2.2 KiB
Vue
<template>
|
|
<div v-if="$isGranted()" class="scroll-btn d-print-none d-flex align-items-center">
|
|
<template v-if="translationMode">
|
|
<div class="bg-info rounded m-1 px-3 py-1 d-flex justify-content-center align-items-center">
|
|
<small>Changes: {{ changesCount }}</small>
|
|
</div>
|
|
<div v-if="changesCount" @click.prevent="commitChanges">
|
|
<SquareButton link="#" colour="success" aria-label="Commit changes">
|
|
<Icon v="check-circle"/>
|
|
</SquareButton>
|
|
</div>
|
|
<div @click.prevent="revertChanges">
|
|
<SquareButton link="#" colour="danger" aria-label="Revert changes">
|
|
<Icon v="times-circle"/>
|
|
</SquareButton>
|
|
</div>
|
|
</template>
|
|
<div v-else @click.prevent="startTranslating">
|
|
<SquareButton link="#" colour="info" aria-label="Translation Mode">
|
|
<Icon v="language"/>
|
|
</SquareButton>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {mapState} from "vuex";
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
}
|
|
},
|
|
methods: {
|
|
startTranslating() {
|
|
this.$store.commit('translationInit');
|
|
},
|
|
async commitChanges() {
|
|
await this.$confirm(`Do you want to commit ${this.changesCount} changes?`, 'success');
|
|
this.$store.commit('translationCommit');
|
|
},
|
|
async revertChanges() {
|
|
if (this.changesCount) {
|
|
await this.$confirm(`Do you want to revert ${this.changesCount} changes?`, 'danger');
|
|
}
|
|
this.$store.commit('translationAbort');
|
|
},
|
|
},
|
|
computed: {
|
|
...mapState([
|
|
'translationMode',
|
|
'translationChanges',
|
|
]),
|
|
changesCount() {
|
|
return Object.keys(this.translationChanges).length;
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import "assets/variables";
|
|
|
|
.scroll-btn {
|
|
position: fixed;
|
|
bottom: $spacer;
|
|
right: 2 * $spacer + $square-button-size;
|
|
z-index: 1030;
|
|
}
|
|
</style>
|