// Like the built-in multiple checkboxes field, but preserves the IDs of the checkboxes in the value. import React, { Component } from 'react'; import $ from 'jquery'; class MultipleCheckbox extends Component { static slug = 'adcm-multiple-checkbox'; state = { checkedBoxes: [], }; constructor(props) { super(props); this.state = { checkedBoxes: this.props.value ? this.props.value.split(',') : [], }; } _onCheckboxChange = (event) => { const { value, checked } = event.target; this.setState(prevState => { if (checked) { return { checkedBoxes: [...prevState.checkedBoxes, value] }; } else { return { checkedBoxes: prevState.checkedBoxes.filter(box => box !== value) }; } }, () => { this.props._onChange(this.props.name, this.state.checkedBoxes.join(',')) }); } render() { let checkboxes_data = this.props.fieldDefinition.options; const checkboxes = Object.keys(checkboxes_data).map((id, index) => { return (

); }); return (
{checkboxes}
); } } export default MultipleCheckbox; $(window).on('et_builder_api_ready', (event, API) => { API.registerModalFields([MultipleCheckbox]); });