From b6fc27e44d4e62f3ebe993ef3b57359e6e6c8a04 Mon Sep 17 00:00:00 2001 From: ajnart Date: Sun, 23 Aug 2026 01:24:36 +0200 Subject: [PATCH] fix: preserve layout validation errors --- .../boards/[name]/settings/_layout.tsx | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/_layout.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/_layout.tsx index ffdf2f80e..64f36ea03 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/_layout.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/_layout.tsx @@ -126,19 +126,18 @@ export const LayoutSettingsContent = ({ board, form, isSaving, saveSettingsAsync disabled={nextBreakpoint === null || !baseLayout} onClick={() => { if (nextBreakpoint === null || !baseLayout) return; - const layouts = [ - ...form.values.layouts, - { - id: createId(), - name: tBoard("setting.section.layout.custom.defaultName"), - columnCount: baseLayout.columnCount, - leftGutterColumnCount: baseLayout.leftGutterColumnCount, - rightGutterColumnCount: baseLayout.rightGutterColumnCount, - breakpoint: nextBreakpoint, - role: "custom" as const, - }, - ].toSorted((layoutA, layoutB) => layoutA.breakpoint - layoutB.breakpoint); - form.setFieldValue("layouts", layouts); + const newLayout: FormValues["layouts"][number] = { + id: createId(), + name: tBoard("setting.section.layout.custom.defaultName"), + columnCount: baseLayout.columnCount, + leftGutterColumnCount: baseLayout.leftGutterColumnCount, + rightGutterColumnCount: baseLayout.rightGutterColumnCount, + breakpoint: nextBreakpoint, + role: "custom", + }; + let insertionIndex = form.values.layouts.findIndex((layout) => layout.breakpoint > nextBreakpoint); + if (insertionIndex === -1) insertionIndex = form.values.layouts.length; + form.insertListItem("layouts", newLayout, insertionIndex); }} > {tBoard("setting.section.layout.responsive.action.add")}