diff --git a/public/assets/ts/admin/page-editor/editor-nodes/EditorArrayNode.tsx b/public/assets/ts/admin/page-editor/editor-nodes/EditorArrayNode.tsx index d4aa387..133ba0b 100644 --- a/public/assets/ts/admin/page-editor/editor-nodes/EditorArrayNode.tsx +++ b/public/assets/ts/admin/page-editor/editor-nodes/EditorArrayNode.tsx @@ -27,6 +27,18 @@ export const EditorArrayNode: React.FC = (props) => { } }, [data]); + const moveItem = (fromIndex: number, toIndex: number) => { + if (toIndex < 0 || toIndex >= transformedData.length) { + return; + } + + const newData = [...transformedData]; + [newData[fromIndex], newData[toIndex]] = [newData[toIndex], newData[fromIndex]]; + + setDataValue(path, newData); + setVersion(version + 1); + }; + const removeItem = (index: number) => { setDataValue(path.concat(index.toString()), null); setVersion(version + 1); @@ -65,14 +77,22 @@ export const EditorArrayNode: React.FC = (props) => { const nextPath = path.concat(index.toString()); return ( moveItem(index, index - 1), + }, + { + name: "Move Down", + onClick: () => moveItem(index, index + 1), + }, { name: "Remove", onClick: () => removeItem(index) }, ]} /** * The data index is persistent across re-renders */ - key={index} path={nextPath} value={entry} theme={"grey"}