diff --git a/packages/client/src/components/app/spreadsheet/OptionsCell.svelte b/packages/client/src/components/app/spreadsheet/OptionsCell.svelte index 859a02461f..eda93cc9c8 100644 --- a/packages/client/src/components/app/spreadsheet/OptionsCell.svelte +++ b/packages/client/src/components/app/spreadsheet/OptionsCell.svelte @@ -115,8 +115,7 @@ justify-content: flex-start; align-items: stretch; box-shadow: 0 0 8px 4px rgba(0, 0, 0, 0.15); - border-radius: 4px; - max-height: 192px; + max-height: 191px; overflow-y: auto; } .option { diff --git a/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte b/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte index 7e5813b301..06db8e7f9c 100644 --- a/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte +++ b/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte @@ -11,7 +11,8 @@ export let sortColumn export let sortOrder - const { styleable, API } = getContext("sdk") + const { styleable, API, confirmationStore, notificationStore } = + getContext("sdk") const component = getContext("component") const limit = 100 const defaultWidth = 200 @@ -121,6 +122,47 @@ await fetch.refresh() delete changeCache[rowId] } + + const deleteRows = () => { + // Fetch full row objects to be deleted + const rows = Object.entries(selectedRows) + .map(entry => { + if (entry[1] === true) { + return $fetch.rows.find(x => x._id === entry[0]) + } else { + return null + } + }) + .filter(x => x != null) + + // Deletion callback when confirmed + const performDeletion = async () => { + await API.deleteRows({ + tableId: table.tableId, + rows, + }) + await fetch.refresh() + notificationStore.actions.success( + `${selectedRowCount} row${ + selectedRowCount === 1 ? "" : "s" + } deleted successfully` + ) + + // Refresh state + selectedCell = null + hoveredRow = null + selectedRows = {} + } + + // Show confirmation + confirmationStore.actions.showConfirmation( + "Delete rows", + `Are you sure you want to delete ${selectedRowCount} row${ + selectedRowCount === 1 ? "" : "s" + }?`, + performDeletion + ) + }