1<template> 2 <b-modal 3 id="modal-confirmation" 4 ref="modal" 5 :title="$t('pageDumps.modal.initiateSystemDump')" 6 @hidden="resetForm" 7 > 8 <p> 9 <strong> 10 {{ $t('pageDumps.modal.initiateSystemDumpMessage1') }} 11 </strong> 12 </p> 13 <p> 14 {{ $t('pageDumps.modal.initiateSystemDumpMessage2') }} 15 </p> 16 <p> 17 <status-icon status="danger" /> 18 {{ $t('pageDumps.modal.initiateSystemDumpMessage3') }} 19 </p> 20 <b-form-checkbox v-model="confirmed" @input="v$.confirmed.$touch()"> 21 {{ $t('pageDumps.modal.initiateSystemDumpMessage4') }} 22 </b-form-checkbox> 23 <b-form-invalid-feedback 24 :state="getValidationState(v$.confirmed)" 25 role="alert" 26 > 27 {{ $t('global.form.required') }} 28 </b-form-invalid-feedback> 29 <template #footer="{ cancel }"> 30 <b-button variant="secondary" @click="cancel()"> 31 {{ $t('global.action.cancel') }} 32 </b-button> 33 <b-button variant="danger" @click="handleSubmit"> 34 {{ $t('pageDumps.form.initiateDump') }} 35 </b-button> 36 </template> 37 </b-modal> 38</template> 39 40<script> 41import StatusIcon from '@/components/Global/StatusIcon'; 42import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js'; 43import { useVuelidate } from '@vuelidate/core'; 44import { useI18n } from 'vue-i18n'; 45 46export default { 47 components: { StatusIcon }, 48 mixins: [VuelidateMixin], 49 props: { 50 requireConfirmation: { 51 type: Boolean, 52 default: false, 53 }, 54 }, 55 emits: ['ok'], 56 setup() { 57 return { 58 v$: useVuelidate(), 59 }; 60 }, 61 data() { 62 return { 63 $t: useI18n().t, 64 confirmed: false, 65 isOpen: this.requireConfirmation, 66 }; 67 }, 68 validations() { 69 return this.isOpen 70 ? { 71 confirmed: { 72 mustBeTrue: (value) => value === true, 73 }, 74 } 75 : {}; 76 }, 77 methods: { 78 closeModal() { 79 this.$nextTick(() => { 80 this.$refs.modal.hide(); 81 }); 82 }, 83 handleSubmit() { 84 this.v$.$touch(); 85 if (this.v$.$invalid) return; 86 this.$emit('ok'); 87 this.closeModal(); 88 }, 89 resetForm() { 90 this.confirmed = false; 91 this.isOpen = false; 92 this.v$.$reset(); 93 }, 94 }, 95}; 96</script> 97