summaryrefslogtreecommitdiffstats
path: root/src/components/Settings/SettingsNewAddressbook.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/Settings/SettingsNewAddressbook.vue')
-rw-r--r--src/components/Settings/SettingsNewAddressbook.vue74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/components/Settings/SettingsNewAddressbook.vue b/src/components/Settings/SettingsNewAddressbook.vue
new file mode 100644
index 00000000..1b1773ce
--- /dev/null
+++ b/src/components/Settings/SettingsNewAddressbook.vue
@@ -0,0 +1,74 @@
+<!--
+ - @copyright Copyright (c) 2018 Team Popcorn <teampopcornberlin@gmail.com>
+ -
+ - @author Team Popcorn <teampopcornberlin@gmail.com>
+ -
+ - @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>
+ <form id="new-addressbook-form" :disabled="loading" :class="{'icon-loading-small': loading}"
+ name="new-addressbook-form" class="new-addressbook" @submit.prevent.stop="addAddressbook">
+ <input id="new-addressbook" ref="addressbook" v-model="displayName"
+ :disabled="loading" :placeholder="t('contacts', 'Address book name')" :pattern="addressBookRegex"
+ class="new-addressbook-input" type="text" autocomplete="off"
+ autocorrect="off" spellcheck="false" minlength="1"
+ required>
+ <input class="icon-confirm" type="submit" value="">
+ </form>
+</template>
+
+<script>
+import clickOutside from 'vue-click-outside'
+
+export default {
+ name: 'SettingsNewAddressbook',
+ components: {
+ clickOutside
+ },
+ directives: {
+ clickOutside
+ },
+ data() {
+ return {
+ loading: false,
+ displayName: '',
+ // no slashes!
+ // eslint-disable-next-line
+ addressBookRegex: '[^/\\\\]+'
+ }
+ },
+ methods: {
+ /**
+ * Add a new address book
+ */
+ addAddressbook() {
+ this.loading = true
+ this.$store.dispatch('appendAddressbook', { displayName: this.displayName })
+ .then(() => {
+ this.displayName = ''
+ this.loading = false
+ })
+ .catch((error) => {
+ console.error(error)
+ OC.Notification.showTemporary(t('contacts', 'An error occurred, unable to create the addressbook.'))
+ this.loading = false
+ })
+ }
+ }
+}
+</script>