UNPKG

@open-tender/ui

Version:

A component library for use with the Open Tender web app

30 lines (29 loc) 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const iconoir_react_1 = require("iconoir-react"); const react_1 = tslib_1.__importDefault(require("react")); const utils_1 = require("../utils"); const Text_1 = tslib_1.__importDefault(require("./Text")); const View_1 = tslib_1.__importDefault(require("./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_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup')), react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__header')), react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__info')), react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__nameCount')), react_1.default.createElement(Text_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__name'), { text: name })), belowMin ? (react_1.default.createElement(Text_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__countRequired'), { text: `(${quantity}/${min})` }))) : max ? (react_1.default.createElement(Text_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__count'), { text: `(${quantity}/${max})` }))) : included ? (react_1.default.createElement(Text_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__count'), { text: includedMsg }))) : null), description && (react_1.default.createElement(Text_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__description'), { text: description })))), belowMin ? renderErrorMessage(react_1.default.createElement(iconoir_react_1.WarningCircle, { width: 18, height: 18, strokeWidth: 2 }), 'Required') : showDone ? renderSuccessMessage(react_1.default.createElement(iconoir_react_1.CheckCircle, { width: 18, height: 18, strokeWidth: 2 }), 'All Done') : null), react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemGroup__content')), children))); }; exports.default = ItemGroup;