metalib
Version:
Snippets pack
4 lines • 4.35 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var React=_interopRequireWildcard(require("react")),_propTypes=_interopRequireDefault(require("prop-types")),_styles=require("../../styles/"),_context=_interopRequireWildcard(require("./context/")),_LocalizationProvider=_interopRequireDefault(require("@mui/lab/LocalizationProvider")),_AdapterDateFns=_interopRequireDefault(require("@mui/lab/AdapterDateFns")),_LinearProgress=_interopRequireDefault(require("@mui/material/LinearProgress")),_Alert=_interopRequireDefault(require("@mui/material/Alert")),_AlertTitle=_interopRequireDefault(require("@mui/material/AlertTitle")),_formik=require("formik"),_Snackbar=_interopRequireDefault(require("./snippets/Snackbar"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _getRequireWildcardCache(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=_getRequireWildcardCache(b);if(c&&c.has(a))return c.get(a);var d={},e=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!=f&&Object.prototype.hasOwnProperty.call(a,f)){var g=e?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(d,f,g):d[f]=a[f]}return d.default=a,c&&c.set(a,d),d}function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}const Form=_styles.styled.custom(_formik.Form,()=>({display:"flex",flexDirection:"column",rowGap:24}));function FormikWrapper(a){const b=(0,_context.useContext)(),c=React.useRef(null),d=React.useRef(null),e="function"==typeof a.onRead,[f,g]=React.useState(e);React.useImperativeHandle(a.innerRef,()=>({refresh:()=>h()})),React.useEffect(()=>{e?h():b.cls.setInitialValues(a.initialValues)},[]);const h=async()=>{await a.onRead().then(a=>{200===a.status&&(b.cls.setInitialValues(a.body),g(!1))})};return f?/*#__PURE__*/React.createElement(_LinearProgress.default,{color:"inherit"}):/*#__PURE__*/React.createElement("div",{ref:c},/*#__PURE__*/React.createElement(_Snackbar.default,{ref:d}),(()=>{const{errors:a}=b.state,c=Object.entries(a).map(([a,b])=>({key:a,value:b}));// errors.non_field_errors
return 0===c.length?void 0:/*#__PURE__*/React.createElement(_Alert.default,{severity:"error",sx:{mb:5}},/*#__PURE__*/React.createElement(_AlertTitle.default,null,"Errors:"),/*#__PURE__*/React.createElement("ul",null,c.map((a,b)=>/*#__PURE__*/React.createElement("li",{key:b},a.key,": ",a.value))))})(),/*#__PURE__*/React.createElement(_LocalizationProvider.default,{dateAdapter:_AdapterDateFns.default},/*#__PURE__*/React.createElement(_formik.Formik,{validate:a.onValidate,enableReinitialize:!0,initialValues:b.state.initialValues,onSubmit:async(e,{setSubmitting:f})=>{// const debug_data = JSON.stringify(values, null, 2)
// console.error('@@@debug_data', debug_data);
await a.onSubmit(e).then(async e=>{403===e.status?(b.cls.setErrors(e.body),c.current.scrollIntoView(),d.current?.error()):200===e.status?(b.cls.removeErrors(),d.current?.success(),"function"==typeof a.onSuccess&&(await new Promise(a=>setTimeout(a,1e3)),a.onSuccess(e.body))):d.current?.error_code(e.status)}),f(!1)},loading:!0},c=>(c.errors=b.state.errors,Object.entries(c.errors).map(([a,b])=>{Array.isArray(b)&&void 0!==typeof b[0]&&(c.errors[a]=b.join("; "))}),/*#__PURE__*/React.createElement(React.Fragment,null,/*#__PURE__*/React.createElement(Form,null,a.children(c)))))))}FormikWrapper.propTypes={children:_propTypes.default.func.isRequired,onSubmit:_propTypes.default.func.isRequired,onRead:_propTypes.default.func,onSuccess:_propTypes.default.func,onValidate:_propTypes.default.func.isRequired,initialValues:_propTypes.default.object.isRequired},FormikWrapper.defaultProps={};const FormikContext=a=>/*#__PURE__*/React.createElement(_context.default,null,/*#__PURE__*/React.createElement(FormikWrapper,a));var _default=/*#__PURE__*/React.forwardRef((a,b)=>/*#__PURE__*/React.createElement(FormikContext,_extends({},a,{innerRef:b})));exports.default=_default;