UNPKG

@novin-dev/formalite

Version:

Generate MUI form with few line of code

80 lines (77 loc) 3.74 kB
import { __rest, __assign } from 'tslib'; import React, { useState, useCallback, useEffect } from 'react'; import compare from 'react-fast-compare'; import { Grid } from '@mui/material'; import { CheckGroupStateEnum } from './CheckGroupView.type.js'; import { baseMemo } from '../Bases/functions/memo.js'; import { GroupViewSkeleton } from '../Bases/SkeletonBase.js'; import CheckGroupViewAllViews from './CheckGroupViewAllViews.js'; import { FetchingDataEnum } from '../../../base/model.js'; var CheckGroupView = function (_a) { var allData = _a.allData, name = _a.name, formik = _a.formik, loading = _a.loading, validationSchema = _a.validationSchema, translator = _a.translator, component = _a.component; var _b = allData.inputProps, helperText = _b.helperText, inputProps = __rest(_b, ["helperText"]); var _c = useState({ status: CheckGroupStateEnum.PENDING, data: {}, }), dataStatus = _c[0], setDataStatus = _c[1]; var loadFunction = useCallback(function () { if (allData.dataFetching.type === FetchingDataEnum.AUTOMATIC) { setDataStatus({ status: CheckGroupStateEnum.PENDING, data: {} }); var funcResult = allData.dataFetching.options(); funcResult .then(function (res) { setDataStatus({ status: CheckGroupStateEnum.READY, data: res, }); }) .catch(function (e) { setDataStatus({ status: CheckGroupStateEnum.REJECTED, data: {}, error: e, }); }); } }, [allData.dataFetching]); useEffect(function () { if (allData.dataFetching.type === FetchingDataEnum.AUTOMATIC) { loadFunction(); } else if (allData.dataFetching.error || (!allData.dataFetching.loading && !allData.dataFetching.data)) { setDataStatus({ status: CheckGroupStateEnum.REJECTED, data: {}, }); } else if (allData.dataFetching.loading) { setDataStatus({ status: CheckGroupStateEnum.PENDING, data: {}, }); } else if (allData.dataFetching.data) { setDataStatus({ status: CheckGroupStateEnum.READY, data: allData.dataFetching.data, }); } }, [allData.dataFetching]); if (loading) { return (React.createElement(Grid, __assign({ item: true }, allData.layoutProps), React.createElement(GroupViewSkeleton, { hasHelper: !!helperText }))); } return (React.createElement(Grid, __assign({ item: true }, allData.layoutProps, { display: "flex", container: true, direction: "column" }), React.createElement(CheckGroupViewAllViews, __assign({ formik: formik, validationSchema: validationSchema, translator: translator, name: String(name), dataStatus: dataStatus, allInputProps: allData.inputProps, labelProps: allData.labelProps, component: component, loadFunction: allData.dataFetching.type === FetchingDataEnum.AUTOMATIC ? loadFunction : allData.dataFetching.onRetry }, inputProps)))); }; var CheckGroupView$1 = React.memo(CheckGroupView, function (prevProps, nextProps) { var prevDataFetching = prevProps.allData.dataFetching; var nextDataFetching = nextProps.allData.dataFetching; return (baseMemo(prevProps, nextProps) && compare(prevDataFetching, nextDataFetching)); }); export { CheckGroupView$1 as default }; //# sourceMappingURL=CheckGroupView.js.map