diff options
Diffstat (limited to 'apps/workflowengine/src/components/Checks/RequestUserGroup.vue')
-rw-r--r-- | apps/workflowengine/src/components/Checks/RequestUserGroup.vue | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/apps/workflowengine/src/components/Checks/RequestUserGroup.vue b/apps/workflowengine/src/components/Checks/RequestUserGroup.vue new file mode 100644 index 00000000000..843bbf127e0 --- /dev/null +++ b/apps/workflowengine/src/components/Checks/RequestUserGroup.vue @@ -0,0 +1,77 @@ +<!-- + - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @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> + <div> + <Multiselect v-model="newValue" + :class="{'icon-loading-small': groups.length === 0}" :options="groups" + :multiple="false" + label="displayname" track-by="id" + @input="setValue" /> + </div> +</template> + +<script> +import { Multiselect } from 'nextcloud-vue/dist/Components/Multiselect' +import valueMixin from '../../mixins/valueMixin' +import axios from 'nextcloud-axios' +export default { + name: 'RequestUserGroup', + components: { + Multiselect + }, + mixins: [ + valueMixin + ], + data() { + return { + groups: [] + } + }, + beforeMount() { + axios.get(OC.linkToOCS('cloud', 2) + 'groups').then((response) => { + this.groups = response.data.ocs.data.groups.reduce((obj, item) => { + obj.push({ + id: item, + displayname: item + }) + return obj + }, []) + this.updateInternalValue(this.value) + }, (error) => { + console.error('Error while loading group list', error.response) + }) + }, + methods: { + updateInternalValue() { + this.newValue = this.groups.find(group => group.id === this.value) || null + }, + setValue(value) { + if (value !== null) { + this.$emit('input', this.newValue.id) + } + } + } +} +</script> + +<style scoped src="./../../css/multiselect.css"></style> |