UNPKG

strapi-plugin-content-manager

Version:

A powerful UI to easily manage your data.

40 lines (30 loc) 956 B
import { get, isEmpty } from 'lodash'; /* eslint-disable no-restricted-syntax */ const createAttributesLayout = (currentLayout, attributes) => { const getType = name => get(attributes, [name, 'type'], ''); let currentRowIndex = 0; const newLayout = []; for (let row of currentLayout) { const hasDynamicZone = row.some( ({ name }) => getType(name) === 'dynamiczone' ); if (!newLayout[currentRowIndex]) { newLayout[currentRowIndex] = []; } if (hasDynamicZone) { currentRowIndex = currentRowIndex === 0 && isEmpty(newLayout[0]) ? 0 : currentRowIndex + 1; if (!newLayout[currentRowIndex]) { newLayout[currentRowIndex] = []; } newLayout[currentRowIndex].push(row); currentRowIndex += 1; } else { newLayout[currentRowIndex].push(row); } } return newLayout.filter(arr => arr.length > 0); }; export default createAttributesLayout;