UNPKG

@pantheon-systems/design-toolkit-react

Version:
56 lines (52 loc) 1.76 kB
import _typeof from '@babel/runtime/helpers/typeof'; import flatMap from 'flatmap'; import { useFormApi, useFormState } from 'informed'; import PropTypes from 'prop-types'; import { ButtonSubtle } from '../Buttons/index.js'; import { jsx } from 'react/jsx-runtime'; var isPlainObject = function isPlainObject(value) { return _typeof(value) === 'object' && !Array.isArray(value); }; var hasTrueEntries = function hasTrueEntries(value) { return value === true; }; var getValuesAsArray = function getValuesAsArray(value) { if (isPlainObject(value)) { var objValues = Object.values(value); return flatMap(objValues, getValuesAsArray); } return Array.isArray(value) ? value : [value]; }; var isChecked = function isChecked(formValues) { return getValuesAsArray(formValues).some(hasTrueEntries); }; var ResetButton = function ResetButton(_ref) { var children = _ref.children, onReset = _ref.onReset; var _useFormApi = useFormApi(), reset = _useFormApi.reset; var _useFormState = useFormState(), values = _useFormState.values; // As of informed@3.9, `onValueChange` is no longer fired when `reset` is called. // Instead, we expose a callback that is invoked with the new form values after reset. var handleClick = function handleClick() { reset(); onReset(values); }; return /*#__PURE__*/jsx(ButtonSubtle, { className: "button-subtle dt-button", disabled: !isChecked(values), onClick: handleClick, children: children }); }; ResetButton.defaultProps = { onReset: function onReset() {} }; ResetButton.propTypes = { children: PropTypes.string.isRequired, onReset: PropTypes.func }; var FilterReset = ResetButton; export { FilterReset as default }; //# sourceMappingURL=FilterReset.js.map