@novin-dev/formalite
Version:
Generate MUI form with few line of code
89 lines (82 loc) • 4.27 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var tslib = require('tslib');
var React = require('react');
var compare = require('react-fast-compare');
var SelectView_type = require('./SelectView.type.js');
var material = require('@mui/material');
var memo = require('../Bases/functions/memo.js');
var SkeletonBase = require('../Bases/SkeletonBase.js');
var SelectViewAllViews = require('./SelectViewAllViews.js');
var model = require('../../../base/model.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var compare__default = /*#__PURE__*/_interopDefaultLegacy(compare);
var SelectView = function (props) {
var allData = props.allData, name = props.name, formik = props.formik, loading = props.loading, validationSchema = props.validationSchema, translator = props.translator;
var _a = allData.inputProps, helperText = _a.helperText, inputProps = tslib.__rest(_a, ["helperText"]);
var _b = React.useState({
status: SelectView_type.SelectStateEnum.PENDING,
data: {},
}), dataStatus = _b[0], setDataStatus = _b[1];
var loadFunction = React.useCallback(function () {
if (allData.dataFetching.type === model.FetchingDataEnum.AUTOMATIC) {
setDataStatus({ status: SelectView_type.SelectStateEnum.PENDING, data: {} });
var funcResult = allData.dataFetching.options();
funcResult
.then(function (res) {
setDataStatus({
status: SelectView_type.SelectStateEnum.READY,
data: res,
});
})
.catch(function (e) {
setDataStatus({
status: SelectView_type.SelectStateEnum.REJECTED,
data: {},
error: e,
});
});
}
}, [allData.dataFetching]);
React.useEffect(function () {
if (allData.dataFetching.type === model.FetchingDataEnum.AUTOMATIC) {
loadFunction();
}
else if (allData.dataFetching.error ||
(!allData.dataFetching.loading && !allData.dataFetching.data)) {
setDataStatus({
status: SelectView_type.SelectStateEnum.REJECTED,
data: {},
});
}
else if (allData.dataFetching.loading) {
setDataStatus({
status: SelectView_type.SelectStateEnum.PENDING,
data: {},
});
}
else if (allData.dataFetching.data) {
setDataStatus({
status: SelectView_type.SelectStateEnum.READY,
data: allData.dataFetching.data,
});
}
}, [allData.dataFetching]);
if (loading) {
return (React__default["default"].createElement(material.Grid, tslib.__assign({ item: true }, allData.layoutProps),
React__default["default"].createElement(SkeletonBase.TextViewSkeleton, { hasHelper: !!helperText })));
}
return (React__default["default"].createElement(material.Grid, tslib.__assign({ item: true }, allData.layoutProps, { style: { display: "flex" }, container: true, direction: "column" }),
React__default["default"].createElement(SelectViewAllViews["default"], tslib.__assign({ emptyItemLabel: allData.emptyItemLabel, formik: formik, validationSchema: validationSchema, translator: translator, name: String(name), dataStatus: dataStatus, allInputProps: allData.inputProps, loadFunction: allData.dataFetching.type === model.FetchingDataEnum.AUTOMATIC
? loadFunction
: allData.dataFetching.onRetry }, inputProps))));
};
var SelectView$1 = React__default["default"].memo(SelectView, function (prevProps, nextProps) {
var prevDataFetching = prevProps.allData.dataFetching;
var nextDataFetching = nextProps.allData.dataFetching;
return (memo.baseMemo(prevProps, nextProps) &&
compare__default["default"](prevDataFetching, nextDataFetching));
});
exports["default"] = SelectView$1;
//# sourceMappingURL=SelectView.js.map