blob: 8784d4ae017784fd740d5c162b5f26cc9f946912 [file] [log] [blame]
Derick Montagueda9f0a62021-02-14 19:21:44 -06001<template>
2 <b-modal
3 id="modal-reset"
4 ref="modal"
5 :title="$t(`pageFactoryReset.modal.${resetType}Title`)"
6 title-tag="h2"
7 @hidden="resetConfirm"
8 >
9 <p class="mb-2">
10 <strong>{{ $t(`pageFactoryReset.modal.${resetType}Header`) }}</strong>
11 </p>
12 <ul class="pl-3 mb-4">
13 <li
14 v-for="(item, index) in $t(
Ed Tanous81323992024-02-27 11:26:24 -080015 `pageFactoryReset.modal.${resetType}SettingsList`,
Derick Montagueda9f0a62021-02-14 19:21:44 -060016 )"
17 :key="index"
18 class="mt-1 mb-1"
19 >
20 {{ $t(item) }}
21 </li>
22 </ul>
23
24 <!-- Warning message -->
Derick Montague71114fe2021-05-06 18:17:34 -050025 <template v-if="!isServerOff">
Derick Montagueda9f0a62021-02-14 19:21:44 -060026 <p class="d-flex mb-2">
27 <status-icon status="danger" />
28 <span id="reset-to-default-warning" class="ml-1">
29 {{ $t(`pageFactoryReset.modal.resetWarningMessage`) }}
30 </span>
31 </p>
32 <b-form-checkbox
33 v-model="confirm"
34 aria-describedby="reset-to-default-warning"
Surya Vde23ea22024-07-11 15:19:46 +053035 @input="v$.confirm.$touch()"
Derick Montagueda9f0a62021-02-14 19:21:44 -060036 >
37 {{ $t(`pageFactoryReset.modal.resetWarningCheckLabel`) }}
38 </b-form-checkbox>
39 <b-form-invalid-feedback
40 role="alert"
Surya Vde23ea22024-07-11 15:19:46 +053041 :state="getValidationState(v$.confirm)"
Derick Montagueda9f0a62021-02-14 19:21:44 -060042 >
43 {{ $t('global.form.fieldRequired') }}
44 </b-form-invalid-feedback>
45 </template>
46
47 <template #modal-footer="{ cancel }">
48 <b-button
49 variant="secondary"
50 data-test-id="factoryReset-button-cancel"
51 @click="cancel()"
52 >
53 {{ $t('global.action.cancel') }}
54 </b-button>
55 <b-button
56 type="sumbit"
57 variant="primary"
58 data-test-id="factoryReset-button-confirm"
59 @click="handleConfirm"
60 >
61 {{ $t(`pageFactoryReset.modal.${resetType}SubmitText`) }}
62 </b-button>
63 </template>
64 </b-modal>
65</template>
66<script>
67import StatusIcon from '@/components/Global/StatusIcon';
68import VuelidateMixin from '@/components/Mixins/VuelidateMixin';
Surya Vde23ea22024-07-11 15:19:46 +053069import { useI18n } from 'vue-i18n';
Derick Montagueda9f0a62021-02-14 19:21:44 -060070
71export default {
72 components: { StatusIcon },
73 mixins: [VuelidateMixin],
74 props: {
75 resetType: {
76 type: String,
77 default: null,
78 },
79 },
80 data() {
81 return {
Surya Vde23ea22024-07-11 15:19:46 +053082 $t: useI18n().t,
Derick Montagueda9f0a62021-02-14 19:21:44 -060083 confirm: false,
84 };
85 },
86 computed: {
Derick Montague71114fe2021-05-06 18:17:34 -050087 serverStatus() {
88 return this.$store.getters['global/serverStatus'];
Derick Montagueda9f0a62021-02-14 19:21:44 -060089 },
Derick Montague71114fe2021-05-06 18:17:34 -050090 isServerOff() {
91 return this.serverStatus === 'off' ? true : false;
Derick Montagueda9f0a62021-02-14 19:21:44 -060092 },
93 },
94 validations: {
95 confirm: {
96 mustBeTrue: function (value) {
Derick Montague71114fe2021-05-06 18:17:34 -050097 return this.isServerOff || value === true;
Derick Montagueda9f0a62021-02-14 19:21:44 -060098 },
99 },
100 },
101 methods: {
102 handleConfirm() {
Surya Vde23ea22024-07-11 15:19:46 +0530103 this.v$.$touch();
104 if (this.v$.$invalid) return;
Derick Montagueda9f0a62021-02-14 19:21:44 -0600105 this.$emit('okConfirm');
106 this.$nextTick(() => this.$refs.modal.hide());
107 this.resetConfirm();
108 },
109 resetConfirm() {
110 this.confirm = false;
Surya Vde23ea22024-07-11 15:19:46 +0530111 this.v$.$reset();
Derick Montagueda9f0a62021-02-14 19:21:44 -0600112 },
113 },
114};
115</script>