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 @@ -