@appbuckets/react-ui-smart-components
Version:
UI Extended Components that work with @appbuckets/react-client and @appbuckets/react-ui
90 lines (83 loc) • 2.26 kB
JavaScript
;
var _tslib = require('../_virtual/_tslib.js');
var React = require('react');
var Loader = require('@appbuckets/react-ui/Loader');
var QuerySuspenseError = require('../QuerySuspenseError/QuerySuspenseError.js');
function _interopDefaultLegacy(e) {
return e && typeof e === 'object' && 'default' in e ? e : { default: e };
}
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(
n,
k,
d.get
? d
: {
enumerable: true,
get: function () {
return e[k];
},
}
);
}
});
}
n['default'] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/ _interopNamespace(React);
var Loader__default = /*#__PURE__*/ _interopDefaultLegacy(Loader);
var QuerySuspendedComponent = function (props) {
var Component = props.Component,
innerProps = props.innerProps,
loaderProps = props.loaderProps,
query = props.query;
// ----
// Loading State
// ----
if (query.status === 'loading' || query.isLoading) {
return React__namespace.createElement(
Loader__default['default'],
_tslib.__assign(
{
centered: true,
className: 'mt-6 mb-6',
appearance: 'primary',
type: 'indeterminate bar',
size: 'big',
},
loaderProps
)
);
}
// ----
// Error Status
// ----
if (query.status === 'error' || query.isError) {
return React__namespace.createElement(
QuerySuspenseError,
_tslib.__assign({}, query.error)
);
}
// ----
// Main Component Render
// ----
if ((query.status === 'success' || query.isSuccess) && Component) {
return React__namespace.createElement(
Component,
_tslib.__assign({}, innerProps, { state: query })
);
}
// ----
// Any other result will fallback to null
// ----
return null;
};
QuerySuspendedComponent.displayName = 'QuerySuspendedComponent';
module.exports = QuerySuspendedComponent;