volume: fix up form validation pattern

This commit is contained in:
Girish Ramakrishnan
2025-12-05 20:43:38 +01:00
parent dfafbdd882
commit b9ae97e5ec
+12 -8
View File
@@ -74,11 +74,11 @@ const volumeDialogData = ref({
});
const form = useTemplateRef('form');
const volumeDialogIsValid = ref(false);
function volumeDialogValid() {
function checkValidity() {
if (form.value && !form.value.checkValidity()) return false;
const isFormValid = ref(false);
function checkValidity() {
isFormValid.value = form.value ? form.value.checkValidity() : false;
function checkData() {
const data = volumeDialogData.value;
switch (data.mountType) {
@@ -115,7 +115,9 @@ function volumeDialogValid() {
return true;
}
volumeDialogIsValid.value = checkValidity();
if (isFormValid.value) {
isFormValid.value = checkData();
}
}
async function refresh() {
@@ -177,6 +179,8 @@ async function openVolumeDialog(volume) {
volumeDialogData.value.xfsBlockDevices = xfsBlockDevices;
volumeDialog.value.open();
setTimeout(checkValidity, 100); // update state of the confirm button
}
async function onSubmit() {
@@ -278,13 +282,13 @@ onMounted(async () =>{
:reject-label="$t('main.dialog.cancel')"
reject-style="secondary"
:confirm-label="volumeDialogData.mode === 'edit' ? $t('main.dialog.save') : $t('main.action.add')"
:confirm-active="!volumeDialogData.busy && volumeDialogIsValid"
:confirm-active="!volumeDialogData.busy && isFormValid"
:confirm-busy="volumeDialogData.busy"
@confirm="onSubmit()"
>
<form ref="form" @submit.prevent="onSubmit()" autocomplete="off" @input="volumeDialogValid()">
<form ref="form" @submit.prevent="onSubmit()" autocomplete="off" @input="checkValidity()">
<fieldset :disabled="volumeDialogData.busy">
<input style="display: none;" type="submit" :disabled="!volumeDialogIsValid" />
<input style="display: none;" type="submit" />
<div class="error-label" v-show="volumeDialogData.error">{{ volumeDialogData.error }}</div>