@gravity-ui/data-source
Version:
A wrapper around data fetching
52 lines (51 loc) • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DataInfiniteLoader = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _react = _interopRequireDefault(require("react"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var DataInfiniteLoader = exports.DataInfiniteLoader = function DataInfiniteLoader(_ref) {
var status = _ref.status,
error = _ref.error,
errorActionProp = _ref.errorAction,
hasNextPage = _ref.hasNextPage,
fetchNextPage = _ref.fetchNextPage,
isFetchingNextPage = _ref.isFetchingNextPage,
LoadingView = _ref.LoadingView,
ErrorView = _ref.ErrorView,
MoreView = _ref.MoreView,
loadingViewProps = _ref.loadingViewProps,
errorViewProps = _ref.errorViewProps,
moreViewProps = _ref.moreViewProps,
children = _ref.children;
var errorAction = _react.default.useMemo(function () {
return typeof errorActionProp === 'function' ? {
handler: errorActionProp
} : errorActionProp;
}, [errorActionProp]);
var renderContent = function renderContent() {
if (status === 'loading') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(LoadingView, (0, _objectSpread2.default)({}, loadingViewProps));
}
if (status === 'error') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ErrorView, (0, _objectSpread2.default)({
error: error,
action: errorAction
}, errorViewProps));
}
if (status === 'success' && hasNextPage) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MoreView, (0, _objectSpread2.default)({
isLoading: isFetchingNextPage,
onClick: fetchNextPage
}, moreViewProps));
}
return null;
};
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [status === 'success' ? children : null, renderContent()]
});
};
// #sourceMappingURL=DataInfiniteLoader.js.map