You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(grid): explain the import wizard's disabled Next and silent downgrade (#2640, #2639) (#2646)
#2640: the mapping step renders an inline hint listing every unmapped required field as `label (name)`, so a disabled Next button explains itself; the hint updates live and clears once the columns are supplied.
#2639: the scalar-only legacy per-row fallback is no longer silent — a new optional `ImportResult.degraded` flag drives a "compatibility fallback" notice on the completion screen. The pre-existing guard that refuses the fallback when relation columns are mapped (preventing raw natural keys in FK columns) is retained.
Component tests cover both paths.
Closes#2640Closes#2639
Import wizard: stop leaving the user at two silent dead-ends (surfaced during framework batch-write testing).
6
+
7
+
-#2640 — the mapping step now renders an inline hint listing every required field that has no column mapped (as `label (name)`), so a disabled **Next** button always explains itself. The hint updates live with the mapping and clears once the columns are supplied; the disable logic itself is unchanged.
8
+
-#2639 — when the server `/import` route is unavailable and the wizard downgrades to the legacy per-row `create` loop, the completion screen now shows a "compatibility fallback" notice (values written as-is, without server-side coercion) via a new optional `ImportResult.degraded` flag — the downgrade is no longer silent. The pre-existing guard that refuses the fallback when relation columns are mapped (which would otherwise write raw natural keys into FK columns) is retained.
'grid.import.legacyReferenceBlocked': 'Import blocked: {{fields}} are relation fields that need the server import route to resolve names into record IDs, and this connection doesn’t support it. Importing them as plain text would corrupt the data. Upgrade the backend/client, or unmap these columns and import them separately.',
169
+
// Shown in the mapping step when a required field has no column mapped — the
170
+
// reason the Next button is disabled. Field names are listed as `label (name)`.
171
+
'grid.import.missingRequiredHint': 'Can’t continue — required field(s) not mapped: {{fields}}. Add a matching column to your file, or go back and upload one that includes it.',
172
+
// Shown on the completion screen when the import ran via the legacy per-row
173
+
// fallback (server `/import` route unavailable) — no server-side coercion.
174
+
'grid.import.legacyFallbackNotice': 'Imported via a compatibility fallback: this connection doesn’t support the server import route, so values were saved as text without server-side type coercion. Upgrade the backend/client for full import support (type coercion and relation lookups).',
169
175
};
170
176
171
177
/** Apply `{{var}}` interpolation to a translation template. */
0 commit comments