@pantheon-systems/design-toolkit-react
Version:
Pantheon's React Design Toolkit
56 lines (52 loc) • 1.76 kB
JavaScript
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