fix(structure-editor): hide unsupported column reorder controls

This commit is contained in:
t8y2
2026-06-01 12:35:23 +08:00
parent 4a33cd836c
commit a18fb60524
2 changed files with 28 additions and 23 deletions
@@ -467,9 +467,11 @@ function canMoveColumn(index: number, direction: -1 | 1): boolean {
const targetIndex = index + direction;
if (targetIndex < 0 || targetIndex >= columns.value.length) return false;
if (columns.value[index]?.markedForDrop || columns.value[targetIndex]?.markedForDrop) return false;
return isCreateMode.value || structureCapabilities.value.reorderColumn;
return canShowColumnMoveControls.value;
}
const canShowColumnMoveControls = computed(() => isCreateMode.value || structureCapabilities.value.reorderColumn);
function moveColumn(index: number, direction: -1 | 1) {
if (!canMoveColumn(index, direction)) return;
const targetIndex = index + direction;
@@ -996,28 +998,30 @@ watch(
</td>
<td :class="structureLastCellClass">
<div class="flex items-center gap-1">
<Button
variant="ghost"
size="icon"
:class="structureIconButtonClass"
:disabled="!canMoveColumn(index, -1)"
:title="t('structureEditor.moveColumnUp')"
:aria-label="t('structureEditor.moveColumnUp')"
@click="moveColumn(index, -1)"
>
<ChevronUp :class="structureIconClass" />
</Button>
<Button
variant="ghost"
size="icon"
:class="structureIconButtonClass"
:disabled="!canMoveColumn(index, 1)"
:title="t('structureEditor.moveColumnDown')"
:aria-label="t('structureEditor.moveColumnDown')"
@click="moveColumn(index, 1)"
>
<ChevronDown :class="structureIconClass" />
</Button>
<template v-if="canShowColumnMoveControls">
<Button
variant="ghost"
size="icon"
:class="structureIconButtonClass"
:disabled="!canMoveColumn(index, -1)"
:title="t('structureEditor.moveColumnUp')"
:aria-label="t('structureEditor.moveColumnUp')"
@click="moveColumn(index, -1)"
>
<ChevronUp :class="structureIconClass" />
</Button>
<Button
variant="ghost"
size="icon"
:class="structureIconButtonClass"
:disabled="!canMoveColumn(index, 1)"
:title="t('structureEditor.moveColumnDown')"
:aria-label="t('structureEditor.moveColumnDown')"
@click="moveColumn(index, 1)"
>
<ChevronDown :class="structureIconClass" />
</Button>
</template>
<Button
v-if="column.original"
variant="ghost"
@@ -73,6 +73,7 @@ test("oracle-like databases expose oracle-compatible structure editing capabilit
assert.equal(caps.createIndex, true);
assert.equal(caps.dropIndex, true);
assert.equal(caps.rebuildIndex, true);
assert.equal(caps.reorderColumn, false);
assert.equal(canEditTableStructure(dbType), true);
}
});