diff --git a/eslint.config.mjs b/eslint.config.mjs
index 2f4072a188..9db2f17f9c 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -47,6 +47,9 @@ export default [
parserOptions: {
allowImportExportEverywhere: true,
+ svelteFeatures: {
+ experimentalGenerics: true,
+ },
},
},
diff --git a/packages/backend-core/src/sql/sqlTable.ts b/packages/backend-core/src/sql/sqlTable.ts
index 8e15d3d4ef..9fa062bfb6 100644
--- a/packages/backend-core/src/sql/sqlTable.ts
+++ b/packages/backend-core/src/sql/sqlTable.ts
@@ -141,19 +141,23 @@ function generateSchema(
.references(`${tableName}.${relatedPrimary}`)
}
break
+ case FieldType.SIGNATURE_SINGLE:
+ case FieldType.ATTACHMENTS:
+ case FieldType.ATTACHMENT_SINGLE:
+ // single attachments are stored as an object, multi attachments
+ // are stored as an array
+ schema.json(key)
+ break
case FieldType.FORMULA:
// This is allowed, but nothing to do on the external datasource
break
case FieldType.AI:
// This is allowed, but nothing to do on the external datasource
break
- case FieldType.ATTACHMENTS:
- case FieldType.ATTACHMENT_SINGLE:
- case FieldType.SIGNATURE_SINGLE:
case FieldType.AUTO:
case FieldType.JSON:
case FieldType.INTERNAL:
- throw `${column.type} is not a valid SQL type`
+ throw new Error(`${column.type} is not a valid SQL type`)
default:
utils.unreachable(columnType)
diff --git a/packages/bbui/src/Form/Core/Multiselect.svelte b/packages/bbui/src/Form/Core/Multiselect.svelte
index 7c4c857056..25c35f3d3c 100644
--- a/packages/bbui/src/Form/Core/Multiselect.svelte
+++ b/packages/bbui/src/Form/Core/Multiselect.svelte
@@ -20,7 +20,7 @@
export let searchTerm: string | null = null
export let customPopoverHeight: string | undefined = undefined
export let open: boolean = false
- export let loading: boolean
+ export let loading: boolean = false
export let onOptionMouseenter = () => {}
export let onOptionMouseleave = () => {}
diff --git a/packages/bbui/src/Form/DatePicker.svelte b/packages/bbui/src/Form/DatePicker.svelte
index ec3dfdfd2c..e48bf665e1 100644
--- a/packages/bbui/src/Form/DatePicker.svelte
+++ b/packages/bbui/src/Form/DatePicker.svelte
@@ -3,7 +3,7 @@
import DatePicker from "./Core/DatePicker/DatePicker.svelte"
import { createEventDispatcher } from "svelte"
- export let value = null
+ export let value = undefined
export let label = null
export let labelPosition = "above"
export let disabled = false
diff --git a/packages/bbui/src/Form/Multiselect.svelte b/packages/bbui/src/Form/Multiselect.svelte
index 9878605f4b..025cc7f536 100644
--- a/packages/bbui/src/Form/Multiselect.svelte
+++ b/packages/bbui/src/Form/Multiselect.svelte
@@ -1,29 +1,31 @@
-
diff --git a/packages/builder/src/constants/backend/index.ts b/packages/builder/src/constants/backend/index.ts
index 0a1e6b8740..ef72722356 100644
--- a/packages/builder/src/constants/backend/index.ts
+++ b/packages/builder/src/constants/backend/index.ts
@@ -6,6 +6,7 @@ import {
Hosting,
} from "@budibase/types"
import { Constants } from "@budibase/frontend-core"
+import { UIField } from "@budibase/types"
const { TypeIconMap } = Constants
@@ -27,7 +28,7 @@ export const AUTO_COLUMN_DISPLAY_NAMES: Record<
UPDATED_AT: "Updated At",
}
-export const FIELDS = {
+export const FIELDS: Record = {
STRING: {
name: "Text",
type: FieldType.STRING,
diff --git a/packages/builder/src/stores/builder/tables.ts b/packages/builder/src/stores/builder/tables.ts
index e38731026c..6a539dc893 100644
--- a/packages/builder/src/stores/builder/tables.ts
+++ b/packages/builder/src/stores/builder/tables.ts
@@ -148,13 +148,11 @@ export class TableStore extends DerivedBudiStore<
async saveField({
originalName,
field,
- primaryDisplay = false,
- indexes,
+ hasPrimaryDisplay = false,
}: {
- originalName: string
+ originalName?: string
field: FieldSchema
- primaryDisplay: boolean
- indexes: Record
+ hasPrimaryDisplay: boolean
}) {
const draft: SaveTableRequest = cloneDeep(get(this.derivedStore).selected!)
@@ -169,7 +167,7 @@ export class TableStore extends DerivedBudiStore<
}
// Optionally set display column
- if (primaryDisplay) {
+ if (hasPrimaryDisplay) {
draft.primaryDisplay = field.name
} else if (draft.primaryDisplay === originalName) {
const fields = Object.keys(draft.schema)
@@ -178,9 +176,6 @@ export class TableStore extends DerivedBudiStore<
name => name !== originalName || name !== field.name
)[0]
}
- if (indexes) {
- draft.indexes = indexes
- }
draft.schema = {
...draft.schema,
[field.name]: cloneDeep(field),
diff --git a/packages/client/src/components/app/forms/RelationshipField.svelte b/packages/client/src/components/app/forms/RelationshipField.svelte
index 41a9614843..6fa7b32621 100644
--- a/packages/client/src/components/app/forms/RelationshipField.svelte
+++ b/packages/client/src/components/app/forms/RelationshipField.svelte
@@ -1,10 +1,9 @@
-