UNPKG

mui-extended

Version:

Extended UI Components built on Material UI

67 lines (66 loc) 2.6 kB
import { __assign } from "tslib"; import { jsx as _jsx } from "react/jsx-runtime"; import { isEqual, isEqualWith } from "lodash"; import { forwardRef, memo, useMemo } from "react"; import { debugPropChanges, debugRender } from "./debug"; import { useFormContext } from "./FormContext"; export var withResetButton = function (Button) { var ButtonWrapper = function (props) { debugRender("resetButton"); return _jsx(Button, __assign({}, props)); }; var PureButton = memo(ButtonWrapper, function (prevProps, nextProps) { debugPropChanges(prevProps, nextProps); return isEqual(prevProps, nextProps); }); var DecoratedButton = forwardRef(function ResetButton(props, ref) { var formContext = useFormContext(); if (!formContext) { throw new Error("ResetButton is rendered with out Form"); } var onClick = useMemo(function () { return function (event) { formContext.reset(); if (props.onClick) { props.onClick(event); } }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return _jsx(PureButton, __assign({}, props, { onClick: onClick, ref: ref })); }); return DecoratedButton; }; export var withSubmitButton = function (Button) { var ButtonWrapper = function (props) { debugRender("submitButton"); return _jsx(Button, __assign({}, props)); }; var PureButton = memo(ButtonWrapper, function (prevProps, nextProps) { debugPropChanges(prevProps, nextProps); return isEqualWith(prevProps, nextProps, function (value, other, propName) { if (propName == "onClick") { return true; } }); }); var DecoratedButton = forwardRef(function SubmitButton(props, ref) { var formContext = useFormContext(); if (!formContext) { throw new Error("SubmitButton is rendered with out Form"); } var onClick = useMemo(function () { return function (event) { formContext.submit(); if (props.onClick) { props.onClick(event); } }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return (_jsx(PureButton, __assign({}, props, { onClick: onClick, disabled: !formContext.isDirty || !formContext.isValid || formContext.isSubmitting, ref: ref }))); }); return DecoratedButton; };