blob: f8d4af0c2d71423542fa520bf4e42454d02b7f03 [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"
Surya V603cfbf2024-07-11 15:19:46 +053021 :state="getValidationState(v$.form.serverUri)"
Mateusz Gapski2224ece2020-09-02 17:00:06 +020022 data-test-id="configureConnection-input-serverUri"
Surya V603cfbf2024-07-11 15:19:46 +053023 @input="v$.form.serverUri.$touch()"
Mateusz Gapski2224ece2020-09-02 17:00:06 +020024 />
25 <b-form-invalid-feedback role="alert">
Surya V603cfbf2024-07-11 15:19:46 +053026 <template v-if="!v$.form.serverUri.required">
Mateusz Gapski2224ece2020-09-02 17:00:06 +020027 {{ $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';
Surya V603cfbf2024-07-11 15:19:46 +053076import { useI18n } from 'vue-i18n';
Mateusz Gapski2224ece2020-09-02 17:00:06 +020077
78export default {
79 mixins: [VuelidateMixin],
80 props: {
81 connection: {
82 type: Object,
83 default: null,
Derick Montague602e98a2020-10-21 16:20:00 -050084 validator: (prop) => {
Mateusz Gapski2224ece2020-09-02 17:00:06 +020085 console.log(prop);
86 return true;
Derick Montague602e98a2020-10-21 16:20:00 -050087 },
88 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +020089 },
Ed Tanous9c729792024-03-23 14:56:34 -070090 setup() {
91 return {
92 v$: useVuelidate(),
93 };
94 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +020095 data() {
96 return {
Surya V603cfbf2024-07-11 15:19:46 +053097 $t: useI18n().t,
Mateusz Gapski2224ece2020-09-02 17:00:06 +020098 form: {
99 serverUri: null,
100 username: null,
101 password: null,
Derick Montague602e98a2020-10-21 16:20:00 -0500102 isRW: false,
103 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200104 };
105 },
106 watch: {
Derick Montague602e98a2020-10-21 16:20:00 -0500107 connection: function (value) {
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200108 if (value === null) return;
109 Object.assign(this.form, value);
Derick Montague602e98a2020-10-21 16:20:00 -0500110 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200111 },
112 validations() {
113 return {
114 form: {
115 serverUri: {
Derick Montague602e98a2020-10-21 16:20:00 -0500116 required,
117 },
118 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200119 };
120 },
121 methods: {
122 handleSubmit() {
Surya V603cfbf2024-07-11 15:19:46 +0530123 this.v$.$touch();
124 if (this.v$.$invalid) return;
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200125 let connectionData = {};
126 Object.assign(connectionData, this.form);
127 this.$emit('ok', connectionData);
128 this.closeModal();
129 },
130 initModal() {
131 if (this.connection) {
132 Object.assign(this.form, this.connection);
133 }
134 },
135 closeModal() {
136 this.$nextTick(() => {
137 this.$refs.modal.hide();
138 });
139 },
140 resetForm() {
141 this.form.serverUri = null;
142 this.form.username = null;
143 this.form.password = null;
144 this.form.isRW = false;
Surya V603cfbf2024-07-11 15:19:46 +0530145 this.v$.$reset();
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200146 },
147 onOk(bvModalEvt) {
148 bvModalEvt.preventDefault();
149 this.handleSubmit();
Derick Montague602e98a2020-10-21 16:20:00 -0500150 },
151 },
Mateusz Gapski2224ece2020-09-02 17:00:06 +0200152};
153</script>