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 20bd78ba3..64f36ea03 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/_layout.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/_layout.tsx @@ -111,9 +111,6 @@ export const LayoutSettingsContent = ({ board, form, isSaving, saveSettingsAsync const nextBreakpoint = getNextCustomBreakpoint(form.values.layouts); const baseLayout = form.values.layouts.find((layout) => layout.role === "base"); - const sortedLayouts = form.values.layouts - .map((layout, index) => ({ layout, index })) - .toSorted((entryA, entryB) => entryA.layout.breakpoint - entryB.layout.breakpoint); return ( @@ -129,25 +126,25 @@ export const LayoutSettingsContent = ({ board, form, isSaving, saveSettingsAsync disabled={nextBreakpoint === null || !baseLayout} onClick={() => { if (nextBreakpoint === null || !baseLayout) return; - form.setFieldValue("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", - }, - ]); + 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")} - {sortedLayouts.map(({ layout, index }) => { + {form.values.layouts.map((layout, index) => { const persistedLayout = board.layouts.find((candidate) => candidate.id === layout.id); const sourceLayout = persistedLayout ?? board.layouts.find((candidate) => candidate.role === "base"); const customBreakpoints = form.values.layouts