blob: 61e20507a92d8efbfed554a93ef1afa8f79b9fd0 [file] [log] [blame]
Mateusz Gapski2224ece2020-09-02 17:00:06 +02001<template>
2 <b-modal
3 id="configure-connection"
4 ref="modal"
5 @ok="onOk"
6 @hidden="resetForm"
7 @show="initModal"
8 >
Derick Montague602e98a2020-10-21 16:20:00 -05009 <template #modal-title>
Mateusz Gapski2224ece2020-09-02 17:00:06 +020010 {{ $t('pageVirtualMedia.modal.title') }}
11 </template>
12 <b-form>
13 <b-form-group
14 :label="$t('pageVirtualMedia.modal.serverUri')"
15 label-for="serverUri"
16 >
17 <b-form-input
18 id="serverUri"
19 v-model="form.serverUri"
20 type="text"
21 :state="getValidationState($v.form.serverUri)"
22 data-test-id="configureConnection-input-serverUri"
23 @input="$v.form.serverUri.$touch()"
24 />
25 <b-form-invalid-feedback role="alert">
26 <template v-if="!$v.form.serverUri.required">
27 {{ $t('global.form.fieldRequired') }}
28 </template>
29 </b-form-invalid-feedback>
30 </b-form-group>
31 <b-form-group
32 :label="$t('pageVirtualMedia.modal.username')"
33 label-for="username"
34 >
35 <b-form-input
36 id="username"
37 v-model="form.username"
38 type="text"
39 data-test-id="configureConnection-input-username"
40 />
41 </b-form-group>
42 <b-form-group
43 :label="$t('pageVirtualMedia.modal.password')"
44 label-for="password"
45 >
46 <b-form-input
47 id="password"
48 v-model="form.password"
49 type="password"
50 data-test-id="configureConnection-input-password"
51 />
52 </b-form-group>
53 <b-form-group>
54 <b-form-checkbox
55 v-model="form.isRW"
56 data-test-id="configureConnection-input-isRW"
57 name="check-button"
58 >
59 RW
60 </b-form-checkbox>
61 </b-form-group>
62 </b-form>
Derick Montague602e98a2020-10-21 16:20:00 -050063 <template #modal-ok>
Mateusz Gapski2224ece2020-09-02 17:00:06 +020064 {{ $t('global.action.save') }}
65 </template>
Sukanya Pandey38357132020-12-22 13:40:59 +053066 <template #modal-cancel>
67 {{ $t('global.action.cancel') }}
68 </template>
Mateusz Gapski2224ece2020-09-02 17:00:06 +020069 </b-modal>
70</template>
71
72<script>
Ed Tanous9c729792024-03-23 14:56:34 -070073import { required } from '@vuelidate/validators';
SurenNeware61859092020-10-01 09:37:32 +053074import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js';
Ed Tanous9c729792024-03-23 14:56:34 -070075import { useVuelidate } from '@vuelidate/core';
Mateusz Gapski2224ece2020-09-02 17:00:06 +020076
77export default {
78 mixins: [VuelidateMixin],
79 props: {
80 connection: {
81 type: Object,
82 default: null,
Derick Montague602e98a2020-10-21 16:20:00 -050083 validator: (prop) => {
Mateusz Gapski2224ece2020-09-02 17:00:06 +020084 console.log(prop);
85 return true;
Derick Montague602e98a2020-10-21 16:20:00 -050086 },
87 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +020088 },
Ed Tanous9c729792024-03-23 14:56:34 -070089 setup() {
90 return {
91 v$: useVuelidate(),
92 };
93 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +020094 data() {
95 return {
96 form: {
97 serverUri: null,
98 username: null,
99 password: null,
Derick Montague602e98a2020-10-21 16:20:00 -0500100 isRW: false,
101 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200102 };
103 },
104 watch: {
Derick Montague602e98a2020-10-21 16:20:00 -0500105 connection: function (value) {
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200106 if (value === null) return;
107 Object.assign(this.form, value);
Derick Montague602e98a2020-10-21 16:20:00 -0500108 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200109 },
110 validations() {
111 return {
112 form: {
113 serverUri: {
Derick Montague602e98a2020-10-21 16:20:00 -0500114 required,
115 },
116 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200117 };
118 },
119 methods: {
120 handleSubmit() {
121 this.$v.$touch();
122 if (this.$v.$invalid) return;
123 let connectionData = {};
124 Object.assign(connectionData, this.form);
125 this.$emit('ok', connectionData);
126 this.closeModal();
127 },
128 initModal() {
129 if (this.connection) {
130 Object.assign(this.form, this.connection);
131 }
132 },
133 closeModal() {
134 this.$nextTick(() => {
135 this.$refs.modal.hide();
136 });
137 },
138 resetForm() {
139 this.form.serverUri = null;
140 this.form.username = null;
141 this.form.password = null;
142 this.form.isRW = false;
143 this.$v.$reset();
144 },
145 onOk(bvModalEvt) {
146 bvModalEvt.preventDefault();
147 this.handleSubmit();
Derick Montague602e98a2020-10-21 16:20:00 -0500148 },
149 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200150};
151</script>