@open-tender/ui
Version:
A component library for use with the Open Tender web app
30 lines (29 loc) • 2.69 kB
JavaScript
;
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;