diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index f772efab50..269e38c4bd 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -215,7 +215,16 @@ import { useQueryStore } from "@/stores/queryStore"; import { useSettingsStore } from "@/stores/settingsStore"; import { simpleDataGridOrderByMatchesSort, simpleDataGridOrderByReferencesMissingColumn, type DataGridSortDirection, type DataGridSortMode } from "@/lib/dataGrid/dataGridSort"; import { buildOrderedGridRows, type GridInsertRowPosition, type GridNewRowPlacement } from "@/lib/dataGrid/gridNewRowPlacement"; -import { DATA_GRID_CONDITION_TOOLBAR_MIN_WIDTH, isDataGridToolbarCompact, type DataGridReloadIntent, type DataGridToolbarActionCapability, type DataGridToolbarAddRowCapability, type DataGridToolbarAutoRefreshCapability, type DataGridToolbarSaveCapability } from "@/lib/dataGrid/dataGridToolbar"; +import { + DATA_GRID_CONDITION_TOOLBAR_MIN_WIDTH, + dataGridDeleteRowToolbarState, + isDataGridToolbarCompact, + type DataGridReloadIntent, + type DataGridToolbarActionCapability, + type DataGridToolbarAddRowCapability, + type DataGridToolbarAutoRefreshCapability, + type DataGridToolbarSaveCapability, +} from "@/lib/dataGrid/dataGridToolbar"; import { getTableMetadataCapabilities } from "@/lib/table/tableMetadataCapabilities"; import { getTableStructureCapabilities } from "@/lib/table/tableStructureCapabilities"; import { filterObjectBrowserTableColumns } from "@/lib/table/objectBrowserTableInfo"; @@ -3416,6 +3425,25 @@ const addRowToolbarCapability = computed(() => onTrigger: addRow, onSelect: handleAddRowMenuSelect, })); +const deleteRowToolbarTargetCount = computed(() => deletableRowIds(selectedOrCurrentRowIds()).length); +const deleteRowToolbarState = computed(() => + dataGridDeleteRowToolbarState({ + editable: !!props.editable, + canDeleteRows: canDeleteRows.value, + canDeleteExistingRows: canDeleteExistingRows.value, + deletableTargetCount: deleteRowToolbarTargetCount.value, + isSaving: isSaving.value, + }), +); +const deleteRowToolbarCapability = computed(() => ({ + label: deleteRowToolbarTargetCount.value > 1 ? t("grid.deleteRows", { count: deleteRowToolbarTargetCount.value }) : t("grid.deleteRow"), + tooltip: `${t("grid.deleteRow")} (${formatShortcut(settingsStore.editorSettings.shortcuts.deleteCurrentRow)})`, + visible: deleteRowToolbarState.value.visible, + disabled: deleteRowToolbarState.value.disabled, + onTrigger: () => { + deleteCurrentRow(); + }, +})); const previewToolbarCapability = computed(() => ({ label: t(previewLabelKey.value), visible: saveToolbarState.value.showActions && pendingChangeCount.value > 0, @@ -8479,6 +8507,7 @@ const gridContextMenuItems = computed(() => { :refresh="refreshToolbarCapability" :auto-refresh="autoRefreshToolbarCapability" :add-row="addRowToolbarCapability" + :delete-row="deleteRowToolbarCapability" :preview="previewToolbarCapability" :save="saveToolbarCapability" :rollback="rollbackToolbarCapability" diff --git a/apps/desktop/src/components/grid/DataGridToolbar.vue b/apps/desktop/src/components/grid/DataGridToolbar.vue index ae9f16ffcb..d173fafeee 100644 --- a/apps/desktop/src/components/grid/DataGridToolbar.vue +++ b/apps/desktop/src/components/grid/DataGridToolbar.vue @@ -1,6 +1,6 @@