import React from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { InputText, InputDateRange, InputMultiSelect, InputLabelWrapper, } from '../'; const InputGroup = ({ inputMeta, values, onValuesChange, sorting, onSortingChange, isSortingEnable, }) => { const { sortBy, sortDirection } = sorting; const handleFilterLabelClick = name => { if (isSortingEnable) { let _sortDirection = 'descending'; if (sortBy === name) { if (sortDirection === 'ascending') { _sortDirection = 'descending'; } else if (sortDirection === 'descending') { _sortDirection = 'ascending'; } } onSortingChange({ sortBy: _sortDirection !== 'none' ? name : '', sortDirection: _sortDirection, }); } }; const renderFieldInputComponent = ({ name, displayName, inputProps, isSortable, inputType, }) => { const _isSortable = isSortable && isSortingEnable; const _sortDirection = sortBy !== name ? 'none' : sortDirection; const onLabelClick = () => { handleFilterLabelClick(name); }; const handleFieldChange = newValue => { onValuesChange({ ...values, [name]: newValue, }); }; const handleDateRangeFieldChange = ({ startDate, endDate }) => { onValuesChange({ ...values, [name]: { startDate: startDate, endDate: endDate, }, }); }; switch (inputType) { case 'Text': return ( ); case 'MultiSelect': return ( ); case 'DateRange': return ( ); case 'None': return ( ); default: break; } }; return (
{inputMeta.map(inputMeta => { return (
{renderFieldInputComponent(inputMeta)}
); })}
); }; InputGroup.propTypes = { inputMeta: PropTypes.arrayOf( PropTypes.shape({ name: PropTypes.string.isRequired, displayName: PropTypes.string.isRequired, inputType: PropTypes.oneOf(['Text', 'MultiSelect', 'DateRange', 'None']) .isRequired, isSortable: PropTypes.bool.isRequired, gridCol: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) .isRequired, option: PropTypes.arrayOf( PropTypes.shape({ value: PropTypes.string, label: PropTypes.string, }) ), }) ).isRequired, values: PropTypes.object.isRequired, onValuesChange: PropTypes.func.isRequired, sorting: PropTypes.shape({ sortBy: PropTypes.string, sortDirection: PropTypes.oneOf(['ascending', 'descending', 'none']), }).isRequired, onSortingChange: PropTypes.func.isRequired, isSortingEnable: PropTypes.bool.isRequired, }; export default InputGroup;