feat: working Insert Row + smart cell editors

Insert Row now stages an editable pending row at the top of the data
grid (with an accent outline) instead of an invisible all-null insert
that failed on commit. Committing inserts only the filled columns so
serial/identity/generated defaults apply; empty-column inserts fall
back to DEFAULT VALUES.

Cell editors are now type-aware: date/time/datetime pickers, a boolean
select, and number inputs for the matching column types (enums and FKs
already had dropdowns). Applies to both new rows and inline editing.
Datetime values commit in the canonical space-separated format accepted
by both PostgreSQL and MySQL.
This commit is contained in:
2026-09-06 12:49:20 +08:00
parent bff4e612ab
commit f480d0f864
15 changed files with 349 additions and 60 deletions
+1
View File
@@ -33,6 +33,7 @@ export function buildChangeSql(item: QueueItem): string {
case "insert": {
const data = item.newData ?? {};
const cols = Object.keys(data);
if (cols.length === 0) return `INSERT INTO ${t} DEFAULT VALUES`;
return `INSERT INTO ${t} (${cols.map(q).join(", ")}) VALUES (${cols.map((c) => lit(data[c])).join(", ")})`;
}
case "update": {