fix: mandatory error even if value is set

This commit is contained in:
Shariq Ansari 2025-01-06 19:51:48 +05:30
parent 9b5e596cb1
commit 66899bc390
2 changed files with 9 additions and 33 deletions

View File

@ -18,17 +18,19 @@
:data="data.doc" :data="data.doc"
:doctype="doctype" :doctype="doctype"
/> />
<ErrorMessage class="mt-2" :message="error" />
</div> </div>
<div v-else class="flex flex-1 items-center justify-center"> <div v-else class="flex flex-1 items-center justify-center">
<Spinner class="size-8" /> <Spinner class="size-8" />
</div> </div>
<div class="flex flex-row-reverse"> <div class="flex justify-between gap-2">
<div>
<ErrorMessage class="mt-2" :message="data.save.error" />
</div>
<Button <Button
:loading="data.save.loading" :loading="data.save.loading"
:label="__('Update')" :label="__('Update')"
variant="solid" variant="solid"
@click="update" @click="data.save.submit()"
/> />
</div> </div>
</div> </div>
@ -43,7 +45,7 @@ import {
ErrorMessage, ErrorMessage,
} from 'frappe-ui' } from 'frappe-ui'
import { createToast, getRandom } from '@/utils' import { createToast, getRandom } from '@/utils'
import { ref, computed } from 'vue' import { computed } from 'vue'
const props = defineProps({ const props = defineProps({
doctype: { doctype: {
@ -70,8 +72,6 @@ const fields = createResource({
auto: true, auto: true,
}) })
const error = ref(null)
const data = createDocumentResource({ const data = createDocumentResource({
doctype: props.doctype, doctype: props.doctype,
name: props.doctype, name: props.doctype,
@ -148,29 +148,4 @@ const tabs = computed(() => {
return _tabs return _tabs
}) })
function update() {
error.value = null
if (validateMandatoryFields()) return
data.save.submit()
}
function validateMandatoryFields() {
if (!tabs.value) return false
for (let section of tabs.value[0].sections) {
for (let column of section.columns) {
for (let field of column.fields) {
if (
(field.mandatory ||
(field.mandatory_depends_on && field.mandatory_via_depends_on)) &&
!data.doc[field.name]
) {
error.value = __('{0} is mandatory', [__(field.label)])
return true
}
}
}
}
return false
}
</script> </script>

View File

@ -66,7 +66,7 @@
<div <div
class="w-[35%] min-w-20 shrink-0 truncate text-sm text-ink-gray-5" class="w-[35%] min-w-20 shrink-0 truncate text-sm text-ink-gray-5"
> >
<span>{{ __(field.label) }}</span> {{ __(field.label) }}
<span <span
v-if=" v-if="
field.reqd || field.reqd ||
@ -74,7 +74,8 @@
field.mandatory_via_depends_on) field.mandatory_via_depends_on)
" "
class="text-ink-red-3" class="text-ink-red-3"
> *</span> >*</span
>
</div> </div>
</Tooltip> </Tooltip>
<div class="flex items-center justify-between w-[65%]"> <div class="flex items-center justify-between w-[65%]">