diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
index a9ea90242a..6f657f57d6 100644
--- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
+++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte
@@ -133,7 +133,9 @@
}
$: initialiseField(field, savingColumn)
$: checkConstraints(editableColumn)
- $: required = !!editableColumn?.constraints?.presence || primaryDisplay
+ $: required = hasDefault
+ ? false
+ : !!editableColumn?.constraints?.presence || primaryDisplay
$: uneditable =
$tables.selected?._id === TableNames.USERS &&
UNEDITABLE_USER_FIELDS.includes(editableColumn.name)
@@ -165,11 +167,19 @@
editableColumn?.type !== AUTO_TYPE &&
editableColumn?.type !== JSON_TYPE &&
!editableColumn.autocolumn
+ $: canHaveDefault =
+ editableColumn?.type === FieldType.NUMBER ||
+ editableColumn?.type === FieldType.JSON ||
+ editableColumn?.type === FieldType.DATETIME ||
+ editableColumn?.type === FieldType.LONGFORM ||
+ editableColumn?.type === FieldType.STRING
$: canBeRequired =
editableColumn?.type !== LINK_TYPE &&
!uneditable &&
editableColumn?.type !== AUTO_TYPE &&
!editableColumn.autocolumn
+ $: hasDefault =
+ editableColumn?.default != null && editableColumn?.default !== ""
$: externalTable = table.sourceType === DB_TYPE_EXTERNAL
// in the case of internal tables the sourceId will just be undefined
$: tableOptions = $tables.list.filter(
@@ -349,12 +359,15 @@
}
}
- function onChangeRequired(e) {
- const req = e.detail
+ function setRequired(req) {
editableColumn.constraints.presence = req ? { allowEmpty: false } : false
required = req
}
+ function onChangeRequired(e) {
+ setRequired(e.detail)
+ }
+
function openJsonSchemaEditor() {
jsonSchemaModal.show()
}
@@ -748,13 +761,37 @@