diff --git a/dashboard/src/views/VolumesView.vue b/dashboard/src/views/VolumesView.vue index ccca6c992..c0c629825 100644 --- a/dashboard/src/views/VolumesView.vue +++ b/dashboard/src/views/VolumesView.vue @@ -73,47 +73,50 @@ const volumeDialogData = ref({ // dynamic extra props from openVolumeDialog }); -const volumeDialogValid = computed(() => { - const data = volumeDialogData.value; +const form = useTemplateRef('form'); +const volumeDialogIsValid = ref(false); +function volumeDialogValid() { + function checkValidity() { + if (form.value && !form.value.checkValidity()) return false; - if (data.mode === 'new') { - if (!data.name) return false; - if (!data.mountType) return false; + const data = volumeDialogData.value; + + switch (data.mountType) { + case 'filesystem': + case 'mountpoint': + if (!data.hostPath) return false; + if (!data.hostPath) return false; + break; + case 'ext4': + case 'xfs': + if (!data.diskPath) return false; + break; + case 'nfs': + if (!data.host) return false; + if (!data.remoteDir) return false; + break; + case 'sshfs': + if (!data.host) return false; + if (!data.remoteDir) return false; + if (!data.port) return false; + if (!data.user) return false; + if (!data.privateKey) return false; + break; + case 'cifs': + if (!data.host) return false; + if (!data.remoteDir) return false; + if (!data.username) return false; + if (!data.password) return false; + break; + default: + return false; + } + + return true; } - switch (data.mountType) { - case 'filesystem': - case 'mountpoint': - if (!data.hostPath) return false; - if (!data.hostPath) return false; - break; - case 'ext4': - case 'xfs': - if (!data.diskPath) return false; - break; - case 'nfs': - if (!data.host) return false; - if (!data.remoteDir) return false; - break; - case 'sshfs': - if (!data.host) return false; - if (!data.remoteDir) return false; - if (!data.port) return false; - if (!data.user) return false; - if (!data.privateKey) return false; - break; - case 'cifs': - if (!data.host) return false; - if (!data.remoteDir) return false; - if (!data.username) return false; - if (!data.password) return false; - break; - default: - return false; - } - - return true; -}); + volumeDialogIsValid.value = checkValidity(); +} async function refresh() { busy.value = true; @@ -141,11 +144,6 @@ async function refresh() { const volumeDialog = useTemplateRef('volumeDialog'); const inputDialog = useTemplateRef('inputDialog'); -const form = useTemplateRef('form'); -const isFormValid = ref(false); -function checkValidity() { - isFormValid.value = form.value.checkValidity(); -} async function openVolumeDialog(volume) { volumeDialogData.value.error = null; @@ -179,8 +177,6 @@ async function openVolumeDialog(volume) { volumeDialogData.value.xfsBlockDevices = xfsBlockDevices; volumeDialog.value.open(); - - setTimeout(checkValidity, 100); // update state of the confirm button } async function onSubmit() { @@ -275,25 +271,26 @@ onMounted(async () =>{