Project

General

Profile

Download (1.07 KB) Statistics
| Branch: | Tag: | Revision:
import React from 'react';
import PropTypes from 'prop-types';
import Skeleton from 'react-loading-skeleton';

import { STATUS } from '../../../constants';
import { translate as __ } from '../../../common/I18n';

const SkeletonLoader = ({
status,
customSkeleton,
skeletonProps,
emptyState,
children,
errorNode,
}) => {
switch (status) {
case STATUS.PENDING: {
return customSkeleton || <Skeleton {...skeletonProps} />;
}
case STATUS.RESOLVED: {
return children || emptyState;
}
case STATUS.ERROR: {
return errorNode || emptyState;
}
default:
return emptyState;
}
};

SkeletonLoader.propTypes = {
status: PropTypes.string.isRequired,
customSkeleton: PropTypes.node,
skeletonProps: PropTypes.object,
emptyState: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
children: PropTypes.node,
errorNode: PropTypes.node,
};

SkeletonLoader.defaultProps = {
customSkeleton: undefined,
skeletonProps: {},
emptyState: __('N/A'),
children: undefined,
errorNode: undefined,
};
export default SkeletonLoader;
(3-3/3)