import React from 'react'; import Form from 'react-bootstrap/lib/Form'; import { Components, registerComponent } from 'meteor/vulcan:core'; import without from 'lodash/without'; import uniq from 'lodash/uniq'; import intersection from 'lodash/intersection'; // note: treat checkbox group the same as a nested component, using `path` const CheckboxGroupComponent = ({ refFunction, label, path, value, formType, updateCurrentValues, inputProperties }) => { const { options } = inputProperties; // get rid of duplicate values or any values that are not included in the options provided value = uniq(intersection(value, options.map(o => o.value))); // if this is a "new document" form check options' "checked" property to populate value if (formType === 'new' && value.length === 0) { const checkedValues = _.where(options, { checked: true }).map(option => option.value); if (checkedValues.length) { value = checkedValues; } } return (
{options.map((option, i) => ( { const isChecked = event.target.checked; const newValue = isChecked ? [...value, option.value] : without(value, option.value); updateCurrentValues({ [path]: newValue }); }} /> ))}
); }; registerComponent('FormComponentCheckboxGroup', CheckboxGroupComponent);