fix: mandatory error even if value is set
This commit is contained in:
parent
9b5e596cb1
commit
66899bc390
@ -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>
|
||||||
|
|||||||
@ -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%]">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user