UNPKG

@open-tender/ui

Version:

A component library for use with the Open Tender web app

39 lines (38 loc) 2.54 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 ItemSelections = ({ config, groups, isIncomplete, renderItemOption, renderErrorMessage }) => { const nonSizeGroups = groups.filter(i => !i.isSize); const selected = nonSizeGroups.reduce((arr, group) => { const options = group.options .filter(option => option.quantity > 0) .map(option => ({ group, option })); return [...arr, ...options]; }, []); const requiredCount = nonSizeGroups.reduce((count, group) => { const { min, quantity } = group; const missing = min && quantity < min ? min - quantity : 0; return (count += missing); }, 0); const requiredMsg = !requiredCount ? 'Selections' : requiredCount === 1 ? 'selection' : 'selections'; const incompleteMsg = `${requiredMsg} required, please choose "Customize"`; return (react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemSelections')), (selected.length > 0 || isIncomplete) && (react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemSelections__header')), react_1.default.createElement(Text_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemSelections__title'), { text: "Current Selections" })), requiredCount > 0 ? renderErrorMessage(react_1.default.createElement(iconoir_react_1.WarningCircle, { width: 18, height: 18, strokeWidth: 2 }), `${requiredCount} ${incompleteMsg}`) : isIncomplete ? renderErrorMessage(react_1.default.createElement(iconoir_react_1.WarningCircle, { width: 18, height: 18, strokeWidth: 2 }), 'Please choose a size') : null)), react_1.default.createElement(View_1.default, Object.assign({}, (0, utils_1.makeProps)(config, 'itemSelections__options')), selected.map(({ group, option }) => (react_1.default.createElement(View_1.default, Object.assign({ key: `${group.id}-${option.id}` }, (0, utils_1.makeProps)(config, 'itemSelections__option')), renderItemOption(group, option))))))); }; exports.default = ItemSelections;