diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js index f4fa5bd010..4bb237f842 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js @@ -195,7 +195,7 @@ const DraggableCard = ({ > { const { formatMessage } = useIntl(); const [isDraggingSibling, setIsDraggingSibling] = useState(false); + const [lastAction, setLastAction] = useState(null); + const scrollableContainerRef = useRef(); + + function handleAddField(...args) { + setLastAction('add'); + onAddField(...args); + } + + function handleRemoveField(...args) { + setLastAction('remove'); + onRemoveField(...args); + } + + useEffect(() => { + if (lastAction === 'add' && scrollableContainerRef?.current) { + scrollableContainerRef.current.scrollLeft = scrollableContainerRef.current.scrollWidth; + } + }, [displayedFields, lastAction]); return ( <> @@ -56,7 +74,7 @@ const SortDisplayedFields = ({ borderWidth="1px" hasRadius > - + {displayedFields.map((field, index) => ( onRemoveField(e, index)} + onRemoveField={e => handleRemoveField(e, index)} name={field} labelField={metadatas[field].list.label || field} setIsDraggingSibling={setIsDraggingSibling} @@ -85,7 +103,7 @@ const SortDisplayedFields = ({ data-testid="add-field" > {listRemainingFields.map(field => ( - onAddField(field)}> + handleAddField(field)}> {field} ))} diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js index a232257da8..4fd33f238d 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/reducer.js @@ -17,7 +17,7 @@ const reducer = (state = initialState, action) => switch (action.type) { case 'ADD_FIELD': { const layoutFieldList = get(state, layoutFieldListPath, []); - set(draftState, layoutFieldListPath, [action.item, ...layoutFieldList]); + set(draftState, layoutFieldListPath, [...layoutFieldList, action.item]); break; } case 'MOVE_FIELD': { diff --git a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/__snapshots__/index.test.js.snap b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/__snapshots__/index.test.js.snap index fb11d2e36d..c155a0d3f4 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/__snapshots__/index.test.js.snap +++ b/packages/core/admin/admin/src/content-manager/pages/ListSettingsView/tests/__snapshots__/index.test.js.snap @@ -3412,109 +3412,6 @@ exports[`ADMIN | CM | LV | Configure the view should add field 1`] = `
-
-
-
- - - - - - - - - - - - - michka - -
-
- - -
-
-
@@ -3721,6 +3618,109 @@ exports[`ADMIN | CM | LV | Configure the view should add field 1`] = `
+
+
+
+ + + + + + + + + + + + + michka + +
+
+ + +
+
+