UNPKG

@open-tender/ui

Version:

A component library for use with the Open Tender web app

27 lines (26 loc) 2.11 kB
import { CheckCircle, WarningCircle } from 'iconoir-react'; import React from 'react'; import { makeProps } from '../utils'; import Text from './Text'; import View from './View'; const ItemGroup = ({ config, group, children, renderSuccessMessage, renderErrorMessage }) => { const { name, description, quantity, min, max, included } = group; const belowMin = quantity < min; const maxMsg = max ? `, ${max} max` : ''; const includedMsg = `(${included} included${maxMsg})`; const showDone = !!(min && quantity >= min) || !!(max && quantity >= max); return (React.createElement(View, Object.assign({}, makeProps(config, 'itemGroup')), React.createElement(View, Object.assign({}, makeProps(config, 'itemGroup__header')), React.createElement(View, Object.assign({}, makeProps(config, 'itemGroup__info')), React.createElement(View, Object.assign({}, makeProps(config, 'itemGroup__nameCount')), React.createElement(Text, Object.assign({}, makeProps(config, 'itemGroup__name'), { text: name })), belowMin ? (React.createElement(Text, Object.assign({}, makeProps(config, 'itemGroup__countRequired'), { text: `(${quantity}/${min})` }))) : max ? (React.createElement(Text, Object.assign({}, makeProps(config, 'itemGroup__count'), { text: `(${quantity}/${max})` }))) : included ? (React.createElement(Text, Object.assign({}, makeProps(config, 'itemGroup__count'), { text: includedMsg }))) : null), description && (React.createElement(Text, Object.assign({}, makeProps(config, 'itemGroup__description'), { text: description })))), belowMin ? renderErrorMessage(React.createElement(WarningCircle, { width: 18, height: 18, strokeWidth: 2 }), 'Required') : showDone ? renderSuccessMessage(React.createElement(CheckCircle, { width: 18, height: 18, strokeWidth: 2 }), 'All Done') : null), React.createElement(View, Object.assign({}, makeProps(config, 'itemGroup__content')), children))); }; export default ItemGroup;