Skip to content

Commit 3ca0139

Browse files
committed
feat: add mode parameter to support create/edit-specific required rules
1 parent a915feb commit 3ca0139

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

adminforth/index.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,15 @@ class AdminForth implements IAdminForth {
236236
});
237237
}
238238

239-
validateRecordValues(resource: AdminForthResource, record: any): any {
239+
validateRecordValues(resource: AdminForthResource, record: any, mode: 'create' | 'edit'): any {
240240
// check if record with validation is valid
241241
for (const column of resource.columns.filter((col) => col.name in record && col.validation)) {
242+
const required = typeof column.required === 'object'
243+
? column.required[mode]
244+
: true;
245+
246+
if (!required) continue;
247+
242248
let error = null;
243249
if (column.isArray?.enabled) {
244250
error = record[column.name].reduce((err, item) => {
@@ -408,7 +414,7 @@ class AdminForth implements IAdminForth {
408414
{ resource: AdminForthResource, record: any, adminUser: AdminUser, extra?: HttpExtra }
409415
): Promise<{ error?: string, createdRecord?: any }> {
410416

411-
const err = this.validateRecordValues(resource, record);
417+
const err = this.validateRecordValues(resource, record, 'create');
412418
if (err) {
413419
return { error: err };
414420
}
@@ -477,7 +483,7 @@ class AdminForth implements IAdminForth {
477483
{ resource, recordId, record, oldRecord, adminUser, extra }:
478484
{ resource: AdminForthResource, recordId: any, record: any, oldRecord: any, adminUser: AdminUser, extra?: HttpExtra }
479485
): Promise<{ error?: string }> {
480-
const err = this.validateRecordValues(resource, record);
486+
const err = this.validateRecordValues(resource, record, 'edit');
481487
if (err) {
482488
return { error: err };
483489
}

adminforth/spa/src/views/EditView.vue

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,6 @@ async function saveRecord() {
151151
152152
const column = coreStore.resource.columns.find((c) => c.name === key);
153153
154-
if (column?.virtual && record.value[key] === '') {
155-
continue;
156-
}
157-
158154
if (column?.foreignResource) {
159155
columnIsUpdated = record.value[key] !== coreStore.record[key]?.pk;
160156
}

0 commit comments

Comments
 (0)