UNPKG

@open-tender/ui

Version:

A component library for use with the Open Tender web app

29 lines (28 loc) 2.07 kB
import { WarningCircle } from 'iconoir-react'; import React from 'react'; import { Text, View } from '../../components'; import { makeProps } from '../../utils'; const ItemSelectedView = ({ config, groups, 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); return (React.createElement(View, Object.assign({}, makeProps(config, 'item__selected')), React.createElement(View, Object.assign({}, makeProps(config, 'item__selectedHeader')), React.createElement(Text, Object.assign({}, makeProps(config, 'item__selectedTitle'), { text: "Current Selections" })), requiredCount > 0 && renderErrorMessage(`${requiredCount} Selections Required`, React.createElement(WarningCircle, { width: 18, height: 18, strokeWidth: 2 }))), React.createElement(View, Object.assign({}, makeProps(config, 'item__selectedOptions')), selected.length ? (selected.map(({ group, option }) => (React.createElement(View, Object.assign({ key: `${group.id}-${option.id}` }, makeProps(config, 'item__selectedOption')), renderItemOption(group, option))))) : (React.createElement(View, Object.assign({}, makeProps(config, 'item__selectedOption')), React.createElement(View, Object.assign({}, makeProps(config, 'item__selectedPlaceholder')), React.createElement(View, Object.assign({}, makeProps(config, 'item__selectedPlaceholderContainer')), React.createElement(Text, Object.assign({}, makeProps(config, 'item__selectedPlaceholderTitle')))))))))); }; export default ItemSelectedView;