import React, { useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; import { useGlobalContext } from 'strapi-helper-plugin'; import Wrapper from './Wrapper'; import EventRow from './EventRow'; const EventInput = ({ onBlur, onChange, name: inputName, value: inputValue, }) => { const { formatMessage } = useGlobalContext(); const onBlurRef = useRef(); onBlurRef.current = onBlur; useEffect(() => { onBlurRef.current(); }, [onBlurRef, inputValue]); const headersName = [ formatMessage({ id: `Settings.webhooks.events.create` }), formatMessage({ id: `Settings.webhooks.events.edit` }), formatMessage({ id: `Settings.webhooks.events.delete` }), ]; const events = { entry: ['entry.create', 'entry.update', 'entry.delete'], media: ['media.create', 'media.update', 'media.delete'], }; const formatValue = inputValue.reduce((acc, curr) => { const key = curr.split('.')[0]; if (!acc[key]) { acc[key] = []; } acc[key].push(curr); return acc; }, {}); const handleChange = ({ target: { name, value } }) => { let set = new Set(inputValue); if (value) { set.add(name); } else { set.delete(name); } onChange({ target: { name: inputName, value: Array.from(set) } }); }; const handleChangeAll = ({ target: { name, value } }) => { let set = new Set(inputValue); if (value) { events[name].map(event => set.add(event)); } else { events[name].map(event => set.delete(event)); } onChange({ target: { name: inputName, value: Array.from(set) } }); }; return ( {headersName.map(header => { return ; })} {Object.keys(events).map(event => { return ( ); })}
{header}
); }; EventInput.defaultProps = { onBlur: () => {}, }; EventInput.propTypes = { name: PropTypes.string.isRequired, onBlur: PropTypes.func, onChange: PropTypes.func.isRequired, value: PropTypes.array, }; export default React.memo(EventInput);