1<template> 2 <b-modal 3 id="modal-hostname" 4 ref="modal" 5 :title="$t('pageNetwork.modal.editHostnameTitle')" 6 @hidden="resetForm" 7 > 8 <b-form id="hostname-settings" @submit.prevent="handleSubmit"> 9 <b-row> 10 <b-col sm="6"> 11 <b-form-group 12 :label="$t('pageNetwork.hostname')" 13 label-for="hostname" 14 > 15 <b-form-input 16 id="hostname" 17 v-model="form.hostname" 18 type="text" 19 :state="getValidationState($v.form.hostname)" 20 @input="$v.form.hostname.$touch()" 21 /> 22 <b-form-invalid-feedback role="alert"> 23 <template v-if="!$v.form.hostname.required"> 24 {{ $t('global.form.fieldRequired') }} 25 </template> 26 <template v-if="!$v.form.hostname.validateHostname"> 27 {{ $t('global.form.lengthMustBeBetween', { min: 1, max: 64 }) }} 28 </template> 29 </b-form-invalid-feedback> 30 </b-form-group> 31 </b-col> 32 </b-row> 33 </b-form> 34 <template #modal-footer="{ cancel }"> 35 <b-button variant="secondary" @click="cancel()"> 36 {{ $t('global.action.cancel') }} 37 </b-button> 38 <b-button 39 form="hostname-settings" 40 type="submit" 41 variant="primary" 42 @click="onOk" 43 > 44 {{ $t('global.action.add') }} 45 </b-button> 46 </template> 47 </b-modal> 48</template> 49 50<script> 51import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js'; 52import { required, helpers } from 'vuelidate/lib/validators'; 53 54const validateHostname = helpers.regex('validateHostname', /^\S{0,64}$/); 55 56export default { 57 mixins: [VuelidateMixin], 58 props: { 59 hostname: { 60 type: String, 61 default: '', 62 }, 63 }, 64 data() { 65 return { 66 form: { 67 hostname: '', 68 }, 69 }; 70 }, 71 watch: { 72 hostname() { 73 this.form.hostname = this.hostname; 74 }, 75 }, 76 validations() { 77 return { 78 form: { 79 hostname: { 80 required, 81 validateHostname, 82 }, 83 }, 84 }; 85 }, 86 methods: { 87 handleSubmit() { 88 this.$v.$touch(); 89 if (this.$v.$invalid) return; 90 this.$emit('ok', { HostName: this.form.hostname }); 91 this.closeModal(); 92 }, 93 closeModal() { 94 this.$nextTick(() => { 95 this.$refs.modal.hide(); 96 }); 97 }, 98 resetForm() { 99 this.form.hostname = this.hostname; 100 this.$v.$reset(); 101 this.$emit('hidden'); 102 }, 103 onOk(bvModalEvt) { 104 // prevent modal close 105 bvModalEvt.preventDefault(); 106 this.handleSubmit(); 107 }, 108 }, 109}; 110</script> 111