/* eslint-disable react/no-multi-comp */ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import {cloneDeep, get} from 'lodash'; import {Button} from '../../'; import {Row, LineInput} from '../'; import './style.scss'; /** * @ngdoc react * @name InputArray * @description Component to create an array of input components */ export const InputArray: React.StatelessComponent = ({ field, value, onChange, addButtonComponent, addButtonText, maxCount, addOnly, originalCount, element, defaultElement, readOnly, message, invalid, row, buttonWithLabel, label, labelClassName, ...props }) => { const add = (...args) => { const newElement = typeof defaultElement === 'function' ? defaultElement(...args) : defaultElement; value.push(cloneDeep(newElement)); onChange(field, [...value]); }; const remove = (index) => { value.splice(index, 1); onChange(field, [...value]); }; const Component = element; const showAddButton = (maxCount ? value.length < maxCount : true) && !readOnly; const isIndexReadOnly = (index) => (addOnly && index === originalCount) ? false : readOnly; const customButton = addButtonComponent ? React.createElement(addButtonComponent, {onAdd: add}) : false; const addButton = row ? (customButton ||