blob: 2c75ae2a69f7142ead003df0713bfdeed6b01446 [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 >
9 <template v-slot:modal-title>
10 {{ $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>
63 <template v-slot:modal-ok>
64 {{ $t('global.action.save') }}
65 </template>
66 </b-modal>
67</template>
68
69<script>
70import { required } from 'vuelidate/lib/validators';
SurenNeware61859092020-10-01 09:37:32 +053071import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js';
Mateusz Gapski2224ece2020-09-02 17:00:06 +020072
73export default {
74 mixins: [VuelidateMixin],
75 props: {
76 connection: {
77 type: Object,
78 default: null,
79 validator: prop => {
80 console.log(prop);
81 return true;
82 }
83 }
84 },
85 data() {
86 return {
87 form: {
88 serverUri: null,
89 username: null,
90 password: null,
91 isRW: false
92 }
93 };
94 },
95 watch: {
96 connection: function(value) {
97 if (value === null) return;
98 Object.assign(this.form, value);
99 }
100 },
101 validations() {
102 return {
103 form: {
104 serverUri: {
105 required
106 }
107 }
108 };
109 },
110 methods: {
111 handleSubmit() {
112 this.$v.$touch();
113 if (this.$v.$invalid) return;
114 let connectionData = {};
115 Object.assign(connectionData, this.form);
116 this.$emit('ok', connectionData);
117 this.closeModal();
118 },
119 initModal() {
120 if (this.connection) {
121 Object.assign(this.form, this.connection);
122 }
123 },
124 closeModal() {
125 this.$nextTick(() => {
126 this.$refs.modal.hide();
127 });
128 },
129 resetForm() {
130 this.form.serverUri = null;
131 this.form.username = null;
132 this.form.password = null;
133 this.form.isRW = false;
134 this.$v.$reset();
135 },
136 onOk(bvModalEvt) {
137 bvModalEvt.preventDefault();
138 this.handleSubmit();
139 }
140 }
141};
142</script>