diff --git a/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/header.js b/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/header.js index 1fcd8431c..5d2aa48e3 100644 --- a/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/header.js +++ b/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/header.js @@ -5,9 +5,10 @@ import { InputGroupButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem, import classnames from 'classnames' import { useArrayContext } from '../../../../../Form/array' -import { ButtonCell } from '../../../../../Form/table' +import { ButtonCell, DefaultHeader } from '../../../../../Form/table' import Icon from '../../../../../Icon' import { FastField, useField } from 'formik' +import { range } from 'lodash' const CellTypeDropdown = ({ name, index, actions, disabled=false }) => { const [field, , helpers] = useField(name) @@ -100,32 +101,34 @@ export const HeaderCell = ({ index, actions }) => /> -export default ({ name, columns }) => { +export default ({ columns }) => { const { addColumn, fillColumn, clearColumn, deleteColumn } = useArrayContext() return ( - - - - { Array(columns).fill(null).map((_, i) => - - - - ) } - addColumn('', { name: '', type: 'string' }) } - disabled={ columns >= 12 } - /> - - + + + + + { range(columns).map((_, i) => + + + + ) } + addColumn('', { name: '', type: 'string' }) } + disabled={ columns >= 12 } + /> + + + ) } diff --git a/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/index.js b/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/index.js index 5ab79cf25..2138724a0 100644 --- a/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/index.js +++ b/packages/builder/src/components/ComponentOptions/components/Content/Loop/Grid/index.js @@ -2,26 +2,26 @@ import React, { Fragment } from 'react' import { FastField, useFormikContext } from 'formik' import classnames from 'classnames' +import { range } from 'lodash' +import { Table, DefaultRow } from '../../../../../Form/table' import Header from './header' import Footer from './footer' -import { Table, DefaultRow } from '../../../../../Form/table' import './style.css' -const Row = ({ index: rowIndex, name, data, arrayHelpers }) => +const Row = ({ index: rowIndex, name, columns, arrayHelpers }) => - { data.map( - (_, columnIndex) => - - - + { range(columns).map(columnIndex => + + + ) } @@ -32,8 +32,8 @@ export default () => { return useContext(ArrayContext) export const FormArray = ({ name, item: Item, - header: Header, footer: Footer, - wrapper: Wrapper=Fragment, - wrapperProps, + header: Header, + footer: Footer, + wrapper: Wrapper=Fragment, wrapperProps, bodyWrapper: BodyWrapper=Fragment, + globalProps={}, defaultItem={}, }) => { const { values, setFieldValue, setValues } = useFormikContext() @@ -110,7 +111,7 @@ export const FormArray = ({ setValues={ setValues } setFieldValue={ setFieldValue } > - { Header &&
} + { Header &&
} { (rows || []).map( @@ -122,11 +123,12 @@ export const FormArray = ({ isLastItem={ index === rows.length - 1 } data={ data } arrayHelpers={ arrayHelpers } + { ...globalProps } /> ) } - { Footer &&
arrayHelpers.push(item || defaultItem) } /> } + { Footer &&
arrayHelpers.push(item || defaultItem) } { ...globalProps } /> } } diff --git a/packages/builder/src/components/Form/table.js b/packages/builder/src/components/Form/table.js index 1012ee84d..bb206a1f3 100644 --- a/packages/builder/src/components/Form/table.js +++ b/packages/builder/src/components/Form/table.js @@ -84,24 +84,26 @@ const DefaultFooter = ({ addItem, columns }) => +export const DefaultHeader = ({ columns, children }) => + <> + + { children } + + export const Table = ({ - header: Header, row, - footer: Footer=DefaultFooter, + header=DefaultHeader, + footer=DefaultFooter, columns=1, className, ...props }) => - <> - - { Header &&
} - - } bodyWrapper="tbody" item={ row } - footer={ (props) =>
} + header={ header } + footer={ footer } + globalProps={{ columns }} { ...props } />