Skip to content
Snippets Groups Projects
SignatureSettings.vue 3.23 KiB
Newer Older
<!--
  - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
  -
  - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
  -
  - @license GNU AGPL version 3 or any later version
  -
  - This program is free software: you can redistribute it and/or modify
  - it under the terms of the GNU Affero General Public License as
  - published by the Free Software Foundation, either version 3 of the
  - License, or (at your option) any later version.
  -
  - This program is distributed in the hope that it will be useful,
  - but WITHOUT ANY WARRANTY; without even the implied warranty of
  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  - GNU Affero General Public License for more details.
  -
  - You should have received a copy of the GNU Affero General Public License
  - along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->

<template>
		<TextEditor v-model="signature"
			:html="true"
			:placeholder="t('mail', 'Signature …')"
			:bus="bus" />
		<button
			class="primary"
			:class="loading ? 'icon-loading-small-dark' : 'icon-checkmark-white'"
			:disabled="loading"
			@click="saveSignature">
			{{ t('mail', 'Save signature') }}
		</button>
		<button v-if="signature" class="button-text" @click="deleteSignature">
			{{ t('mail', 'Delete') }}
		</button>
	</div>
</template>

<script>
Christoph Wurst's avatar
Christoph Wurst committed
import logger from '../logger'
import TextEditor from './TextEditor'
import { detect, toHtml } from '../util/text'
import Vue from 'vue'
export default {
	name: 'SignatureSettings',
Christoph Wurst's avatar
Christoph Wurst committed
	components: {
		TextEditor,
	},
	props: {
		account: {
			type: Object,
			required: true,
		},
	},
	data() {
		return {
			loading: false,
			bus: new Vue(),
	created() {
		this.signature = this.account.signature ? toHtml(detect(this.account.signature)).value : ''
Patrick Bender's avatar
Patrick Bender committed
	},
	methods: {
		deleteSignature() {
			this.loading = true

			this.$store
				.dispatch('updateAccountSignature', { account: this.account, signature: null })
				.then(() => {
Christoph Wurst's avatar
Christoph Wurst committed
					logger.info('signature deleted')
					this.signature = ''
					this.loading = false
				})
				.catch((error) => {
					logger.error('could not delete account signature', { error })
				})
		},
		saveSignature() {
			this.loading = true

			this.$store
				.dispatch('updateAccountSignature', { account: this.account, signature: this.signature })
				.then(() => {
Christoph Wurst's avatar
Christoph Wurst committed
					logger.info('signature updated')
					this.loading = false
				})
				.catch((error) => {
					logger.error('could not update account signature', { error })
				})
		},
	},
}
</script>
.ck.ck-editor__editable_inline {
	width: 330px;
	border-radius: var(--border-radius) !important;
	border: 1px solid var(--color-border) !important;
	box-shadow: none !important;
}

.primary {
	padding-left: 26px;
	background-position: 6px;
	color: var(--color-main-background);

	&:after {
		left: 14px;
	}
}

.button-text {
	background-color: transparent;
	border: none;
	color: var(--color-text-maxcontrast);
	font-weight: normal;

	&:hover,
	&:focus {
		color: var(--color-main-text);
	}
}
.section {
	display: block;
	padding: 0;
	margin-bottom: 23px;
}
<style>
.ck-balloon-panel {
	z-index: 10000 !important;
}
</style>