Skip to content

Commit 06f90d0

Browse files
committed
fix: allow check for empty column in showIf
1 parent 3d075e1 commit 06f90d0

File tree

4 files changed

+10
-6
lines changed

4 files changed

+10
-6
lines changed

adminforth/spa/src/components/ResourceForm.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ async function searchOptions(columnName: string, searchTerm: string) {
322322
323323
324324
const editableColumns = computed(() => {
325-
return props.resource?.columns?.filter(column => column.showIn?.[mode.value] && (currentValues.value ? checkShowIf(column, currentValues.value) : true));
325+
return props.resource?.columns?.filter(column => column.showIn?.[mode.value] && (currentValues.value ? checkShowIf(column, currentValues.value, props.resource.columns) : true));
326326
});
327327
328328
const isValid = computed(() => {

adminforth/spa/src/components/ShowTable.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
dark:bg-darkShowTablesBodyBackground dark:border-darkShowTableBodyBorder block md:table-row"
2525
>
2626
<component
27-
v-if="column.components?.showRow && checkShowIf(column, record)"
27+
v-if="column.components?.showRow && checkShowIf(column, record, resource?.columns || [])"
2828
:is="getCustomComponent(column.components.showRow)"
2929
:meta="column.components.showRow.meta"
3030
:column="column"
3131
:resource="coreStore.resource"
3232
:record="coreStore.record"
3333
/>
34-
<template v-else-if="checkShowIf(column, record)">
34+
<template v-else-if="checkShowIf(column, record, resource?.columns || [])">
3535
<td class="px-6 py-4 relative block md:table-cell font-bold md:font-normal pb-0 md:pb-4">
3636
{{ column.label }}
3737
</td>

adminforth/spa/src/utils.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,13 @@ export function createSearchInputHandlers(
446446
}, {} as Record<string, (searchTerm: string) => void>);
447447
}
448448

449-
export function checkShowIf(c: AdminForthResourceColumnInputCommon, record: Record<string, any>) {
449+
export function checkShowIf(c: AdminForthResourceColumnInputCommon, record: Record<string, any>, allColumns: AdminForthResourceColumnInputCommon[]) {
450450
if (!c.showIf) return true;
451-
451+
for (const col of allColumns) {
452+
if (!record[col.name]) {
453+
record[col.name] = null;
454+
}
455+
}
452456
const evaluatePredicate = (predicate: Predicate): boolean => {
453457
const results: boolean[] = [];
454458

adminforth/spa/src/views/CreateView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ async function saveRecord(opts?: { confirmationResult?: any }) {
192192
validating.value = false;
193193
}
194194
const requiredColumns = coreStore.resource?.columns.filter(c => c.required?.create === true) || [];
195-
const requiredColumnsToSkip = requiredColumns.filter(c => checkShowIf(c, record.value) === false);
195+
const requiredColumnsToSkip = requiredColumns.filter(c => checkShowIf(c, record.value, coreStore.resource?.columns || []) === false);
196196
saving.value = true;
197197
const response = await callAdminForthApi({
198198
method: 'POST',

0 commit comments

Comments
 (0)