@novin-dev/formalite
Version:
Generate MUI form with few line of code
80 lines (77 loc) • 3.74 kB
JavaScript
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