blob: 9b50abdc1f675a9d9cfbdcee9a50d8c64e47cbba [file] [log] [blame]
Yoshie Muranakadc3d5412020-04-17 09:39:41 -07001<template>
2 <b-modal id="modal-role-group" ref="modal" @ok="onOk" @hidden="resetForm">
Derick Montague602e98a2020-10-21 16:20:00 -05003 <template #modal-title>
Yoshie Muranakadc3d5412020-04-17 09:39:41 -07004 <template v-if="roleGroup">
5 {{ $t('pageLdap.modal.editRoleGroup') }}
6 </template>
7 <template v-else>
8 {{ $t('pageLdap.modal.addNewRoleGroup') }}
9 </template>
10 </template>
11 <b-container>
12 <b-row>
13 <b-col sm="8">
Sukanya Pandeyf125a3d2020-11-30 17:59:55 +053014 <b-form id="role-group" @submit.prevent="handleSubmit">
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070015 <!-- Edit role group -->
16 <template v-if="roleGroup !== null">
17 <dl class="mb-4">
18 <dt>{{ $t('pageLdap.modal.groupName') }}</dt>
Farah Rasheed8e1ed792024-07-05 11:00:38 -050019 <dd style="word-break: break-all">{{ form.groupName }}</dd>
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070020 </dl>
21 </template>
22
23 <!-- Add new role group -->
24 <template v-else>
25 <b-form-group
26 :label="$t('pageLdap.modal.groupName')"
27 label-for="role-group-name"
28 >
29 <b-form-input
30 id="role-group-name"
31 v-model="form.groupName"
32 :state="getValidationState($v.form.groupName)"
33 @input="$v.form.groupName.$touch()"
34 />
35 <b-form-invalid-feedback role="alert">
36 {{ $t('global.form.fieldRequired') }}
37 </b-form-invalid-feedback>
38 </b-form-group>
39 </template>
40
41 <b-form-group
42 :label="$t('pageLdap.modal.groupPrivilege')"
43 label-for="privilege"
44 >
45 <b-form-select
46 id="privilege"
47 v-model="form.groupPrivilege"
48 :options="accountRoles"
49 :state="getValidationState($v.form.groupPrivilege)"
50 @input="$v.form.groupPrivilege.$touch()"
51 >
Derick Montague602e98a2020-10-21 16:20:00 -050052 <template v-if="!roleGroup" #first>
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070053 <b-form-select-option :value="null" disabled>
54 {{ $t('global.form.selectAnOption') }}
55 </b-form-select-option>
56 </template>
57 </b-form-select>
58 <b-form-invalid-feedback role="alert">
59 {{ $t('global.form.fieldRequired') }}
60 </b-form-invalid-feedback>
61 </b-form-group>
62 </b-form>
63 </b-col>
64 </b-row>
65 </b-container>
Sukanya Pandeyf125a3d2020-11-30 17:59:55 +053066 <template #modal-footer="{ cancel }">
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070067 <b-button variant="secondary" @click="cancel()">
68 {{ $t('global.action.cancel') }}
69 </b-button>
Sukanya Pandeyf125a3d2020-11-30 17:59:55 +053070 <b-button form="role-group" type="submit" variant="primary" @click="onOk">
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070071 <template v-if="roleGroup">
72 {{ $t('global.action.save') }}
73 </template>
74 <template v-else>
75 {{ $t('global.action.add') }}
76 </template>
77 </b-button>
78 </template>
79 </b-modal>
80</template>
81
82<script>
Ed Tanous7d6b44c2024-03-23 14:56:34 -070083import { required, requiredIf } from '@vuelidate/validators';
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070084import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js';
Ed Tanous7d6b44c2024-03-23 14:56:34 -070085import { useVuelidate } from '@vuelidate/core';
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070086
87export default {
88 mixins: [VuelidateMixin],
89 props: {
90 roleGroup: {
91 type: Object,
92 default: null,
Derick Montague602e98a2020-10-21 16:20:00 -050093 validator: (prop) => {
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070094 if (prop === null) return true;
95 return (
Yoshie Muranakaefd7c882020-10-30 09:32:06 -070096 Object.prototype.hasOwnProperty.call(prop, 'groupName') &&
97 Object.prototype.hasOwnProperty.call(prop, 'groupPrivilege')
Yoshie Muranakadc3d5412020-04-17 09:39:41 -070098 );
Derick Montague602e98a2020-10-21 16:20:00 -050099 },
100 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700101 },
Ed Tanous7d6b44c2024-03-23 14:56:34 -0700102 setup() {
103 return {
104 v$: useVuelidate(),
105 };
106 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700107 data() {
108 return {
109 form: {
110 groupName: null,
Derick Montague602e98a2020-10-21 16:20:00 -0500111 groupPrivilege: null,
112 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700113 };
114 },
115 computed: {
116 accountRoles() {
Sandeepa Singhb4406162021-07-26 15:05:39 +0530117 return this.$store.getters['userManagement/accountRoles'];
Derick Montague602e98a2020-10-21 16:20:00 -0500118 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700119 },
120 watch: {
Derick Montague602e98a2020-10-21 16:20:00 -0500121 roleGroup: function (value) {
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700122 if (value === null) return;
123 this.form.groupName = value.groupName;
124 this.form.groupPrivilege = value.groupPrivilege;
Derick Montague602e98a2020-10-21 16:20:00 -0500125 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700126 },
127 validations() {
128 return {
129 form: {
130 groupName: {
Derick Montague602e98a2020-10-21 16:20:00 -0500131 required: requiredIf(function () {
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700132 return !this.roleGroup;
Derick Montague602e98a2020-10-21 16:20:00 -0500133 }),
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700134 },
135 groupPrivilege: {
Derick Montague602e98a2020-10-21 16:20:00 -0500136 required,
137 },
138 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700139 };
140 },
141 methods: {
142 handleSubmit() {
143 this.$v.$touch();
144 if (this.$v.$invalid) return;
145 this.$emit('ok', {
146 addNew: !this.roleGroup,
147 groupName: this.form.groupName,
Derick Montague602e98a2020-10-21 16:20:00 -0500148 groupPrivilege: this.form.groupPrivilege,
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700149 });
150 this.closeModal();
151 },
152 closeModal() {
153 this.$nextTick(() => {
154 this.$refs.modal.hide();
155 });
156 },
157 resetForm() {
158 this.form.groupName = null;
159 this.form.groupPrivilege = null;
160 this.$v.$reset();
161 this.$emit('hidden');
162 },
163 onOk(bvModalEvt) {
164 // prevent modal close
165 bvModalEvt.preventDefault();
166 this.handleSubmit();
Derick Montague602e98a2020-10-21 16:20:00 -0500167 },
168 },
Yoshie Muranakadc3d5412020-04-17 09:39:41 -0700169};
170</script>