diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte index e50ca76c63..4f1689ea39 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte @@ -10,11 +10,13 @@ row = $bindable(null), onChange = null, onRevert = null, + noInlineEdit = false, openSideSheet = null, onRowStructureUpdate = null }: { row: Models.Row; column: Columns; + noInlineEdit?: boolean; openSideSheet?: () => void; onChange?: (row: Models.DefaultRow) => void; onRevert?: (row: Models.DefaultRow) => void; @@ -27,6 +29,11 @@ onMount(() => { original = structuredClone(row); + if (noInlineEdit) { + openSideSheet?.(); + return; + } + const trigger = wrapperEl.querySelector('button.input') as HTMLButtonElement; if (trigger) { trigger.click(); @@ -62,5 +69,5 @@ fromSpreadsheet label={undefined} bind:formValues={row} - on:click={openSideSheet} /> + on:click={() => openSideSheet?.()} /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte index e8da1e99e4..23e19cd3b5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte @@ -15,7 +15,7 @@ label = undefined; } - $: if (limited) { + $: { column.min = isWithinSafeRange(column.min) ? column.min : Number.MIN_SAFE_INTEGER; column.max = isWithinSafeRange(column.max) ? column.max : Number.MAX_SAFE_INTEGER; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts index 97e6694c53..76ffa95caf 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts @@ -2,8 +2,12 @@ import { page } from '$app/state'; import type { Columns } from '../store'; import { type Models, Query } from '@appwrite.io/console'; -export function isRelationshipToMany(column: Models.ColumnRelationship) { - if (!column) return false; +export function isRelationshipToMany(col: Columns) { + if (!col) return false; + if (!isRelationship(col)) return false; + + const column = col as Models.ColumnRelationship; + if (!column?.relationType) return false; if (column?.side === 'child') { return !['oneToOne', 'oneToMany'].includes(column?.relationType); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index ee2e82dd9b..0677a94987 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -459,6 +459,12 @@ } } + function openSideSheetForRelationsToMany(tableId: string, rows: string | Models.Row[]) { + $databaseRelatedRowSheetOptions.tableId = tableId; + $databaseRelatedRowSheetOptions.rows = rows; + $databaseRelatedRowSheetOptions.show = true; + } + async function onSelectSheetOption( action: HeaderCellAction | RowCellAction, columnId: string, @@ -885,18 +891,10 @@ {/if} {:else} {@const itemsNum = row[columnId]?.length} - { - $databaseRelatedRowSheetOptions.show = true; - $databaseRelatedRowSheetOptions.rows = - row[columnId]; - $databaseRelatedRowSheetOptions.tableId = columnId; - }}> - Items - + Items {/if} {:else} {@const value = row[columnId]} @@ -946,11 +944,20 @@ {row} column={rowColumn} onRowStructureUpdate={updateRowContents} + noInlineEdit={isRelationshipToMany(rowColumn)} onChange={(row) => paginatedRows.update(index, row)} onRevert={(row) => paginatedRows.update(index, row)} openSideSheet={() => { close(); /* closes the editor */ - onSelectSheetOption('update', null, 'row', row); + + if (isRelationshipToMany(rowColumn)) { + openSideSheetForRelationsToMany( + columnId, + row[columnId] + ); + } else { + onSelectSheetOption('update', null, 'row', row); + } }} />