import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; function CheckedIcon() { return <>🌜; } function UncheckedIcon() { return <>🌞; } function ToggleButton(props) { const [toggle, setToggle] = useState(false); const { defaultChecked, onChange, disabled, className } = props; useEffect(() => { if (defaultChecked) { setToggle(defaultChecked); } }, [defaultChecked]); const triggerToggle = () => { if (disabled) { return; } setToggle(!toggle); if (typeof onChange === 'function') { onChange(!toggle); } }; const getIcon = (type) => { const { icons } = props; if (!icons) { return null; } return icons[type] === undefined ? ToggleButton.defaultProps.icons[type] : icons[type]; }; const toggleClasses = classNames( 'wrg-toggle', { 'wrg-toggle--checked': toggle, 'wrg-toggle--disabled': disabled, }, className, ); return (
{getIcon('checked')}
{getIcon('unchecked')}
); } ToggleButton.defaultProps = { icons: { checked: , unchecked: , }, }; ToggleButton.propTypes = { disabled: PropTypes.bool, defaultChecked: PropTypes.bool, className: PropTypes.string, onChange: PropTypes.func, icons: PropTypes.oneOfType([ PropTypes.bool, PropTypes.shape({ checked: PropTypes.node, unchecked: PropTypes.node, }), ]), }; export default ToggleButton;