From 663bceee2ebeadb08fe82b53461092167c17ec07 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 16 Jan 2026 13:45:08 +0530 Subject: [PATCH 1/5] right click actions --- src/lib/actions/analytics.ts | 11 +- .../table-[table]/rowContextMenu.svelte | 159 ++++++ .../table-[table]/sheetOptions.svelte | 2 +- .../table-[table]/spreadsheet.svelte | 500 ++++++++++-------- 4 files changed, 446 insertions(+), 226 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rowContextMenu.svelte diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index cfd42ae8f2..3c8b068b7f 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -198,7 +198,16 @@ export enum Click { WebsiteOpenClick = 'click_open_website', CopyPromptStarterKitClick = 'click_copy_prompt_starter_kit', OpenInCursorClick = 'click_open_in_cursor', - OpenInLovableClick = 'click_open_in_lovable' + OpenInLovableClick = 'click_open_in_lovable', + RowCopyUrl = 'click_row_copy_url', + RowCopyJson = 'click_row_copy_json', + RowCopySnippet = 'click_row_copy_snippet', + RowContextMenuOpen = 'click_row_context_menu_open', + RowUpdate = 'click_row_update', + RowDuplicate = 'click_row_duplicate', + RowDelete = 'click_row_delete', + RowPermissions = 'click_row_permissions', + RowActivity = 'click_row_activity' } export enum Submit { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rowContextMenu.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rowContextMenu.svelte new file mode 100644 index 0000000000..2a6441ab2a --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rowContextMenu.svelte @@ -0,0 +1,159 @@ + + +
+ +
+ + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/sheetOptions.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/sheetOptions.svelte index 3fdf50d14a..d26e006610 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/sheetOptions.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/sheetOptions.svelte @@ -16,7 +16,7 @@ | 'activity' | 'copy-url' | 'copy-json' - // | 'copy-snippet' + | 'copy-snippet' | 'delete'; 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 dabc3955cf..523b299bdc 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 @@ -1,7 +1,7 @@ + + +
+ +
+ + {#key language} + + + Get row + + + + + List rows + + + + + Update row + + + + + Delete row + + + + {/key} +
diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index de977bfc14..6341dbe874 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -20,6 +20,7 @@ badge?: string; }[]; export let leadingIcon: ComponentType | undefined = undefined; + export let showLabel: boolean = true; let error: string; @@ -47,6 +48,7 @@ + + From 29a91800196a58ab5c83da6c442e245ac82e58bc Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:19:40 +0530 Subject: [PATCH 5/5] map delete --- .../database-[database]/subNavigation.svelte | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/subNavigation.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/subNavigation.svelte index 001e65dcc6..4ffce40711 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/subNavigation.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/subNavigation.svelte @@ -24,7 +24,7 @@ IconTable } from '@appwrite.io/pink-icons-svelte'; import { isTabletViewport } from '$lib/stores/viewport'; - import { BottomSheet } from '$lib/components'; + import { BottomSheet, Confirm } from '$lib/components'; import Button from '$lib/elements/forms/button.svelte'; import { type Models, Query } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; @@ -38,6 +38,7 @@ import FilePicker from '$lib/components/filePicker.svelte'; import { preferences } from '$lib/stores/preferences'; + import { organization } from '$lib/stores/organization'; const data = $derived(page.data) as PageData; @@ -143,6 +144,38 @@ } } + let showDelete = $state(false); + let deleteError = $state(); + + async function deleteTable() { + if (!selectedTableForAction) return; + try { + await sdk.forProject(region, project).tablesDB.deleteTable({ + databaseId, + tableId: selectedTableForAction.$id + }); + + showDelete = false; + subNavigation.update(); + + addNotification({ + type: 'success', + message: `${selectedTableForAction.name} has been deleted` + }); + + trackEvent(Submit.TableDelete); + + await preferences.deleteTableDetails($organization.$id, selectedTableForAction.$id); + + if (tableId === selectedTableForAction.$id) { + await goto(`${base}/project-${region}-${project}/databases/database-${databaseId}`); + } + } catch (e) { + deleteError = e.message; + trackError(e, Submit.TableDelete); + } + } + async function handleTableAction(action: TableAction, table: Models.Table) { selectedTableForAction = table; switch (action) { @@ -186,6 +219,7 @@ ); break; case 'delete': + showDelete = true; break; default: break; @@ -385,6 +419,17 @@ }} /> {/if} + + + Are you sure you want to delete {selectedTableForAction?.name}? + + +