fix(grid): display JSONB values as JSON string in edit mode and detail panel (#152)

String() on objects produces [object Object]. Use JSON.stringify()
consistently wherever cell values are converted to strings.
This commit is contained in:
t8y2
2026-05-08 11:12:05 +08:00
parent 9683826b15
commit fdf65ac5e3
2 changed files with 3 additions and 2 deletions
+2 -2
View File
@@ -428,7 +428,7 @@ const activeCellDetail = computed(() => {
if (!item || !column) return null;
const value = item.data[cell.col] ?? null;
const rawValue = formatCell(value);
const valueText = value === null ? "" : String(value);
const valueText = value === null ? "" : typeof value === "object" ? JSON.stringify(value) : String(value);
const trimmed = valueText.trim();
const maybeJson = typeof value === "string" && (trimmed.startsWith("{") || trimmed.startsWith("["));
let formattedJson = "";
@@ -578,7 +578,7 @@ function startEdit(rowId: number, colIdx: number) {
isCancelling = false;
editingCell.value = { rowId, col: colIdx };
const val = item?.data[colIdx] ?? null;
editValue.value = val === null ? "" : String(val);
editValue.value = val === null ? "" : typeof val === "object" ? JSON.stringify(val) : String(val);
nextTick(() => {
const input = document.querySelector(".cell-edit-input") as HTMLInputElement;
input?.focus();
+1
View File
@@ -51,6 +51,7 @@ export function extractSelection(
function displayValue(value: GridCellValue): string {
if (value === null) return "NULL";
if (typeof value === "boolean") return value ? "true" : "false";
if (typeof value === "object") return JSON.stringify(value);
return String(value);
}