feat: Accounts datatable.

This commit is contained in:
Ahmed Bouhuolia
2020-03-30 00:13:45 +02:00
parent d695188d3a
commit d9e10fd6b4
19 changed files with 543 additions and 294 deletions

View File

@@ -1,4 +1,4 @@
import React from 'react';
import React, {useState, useEffect, useMemo} from 'react';
import { Spinner } from '@blueprintjs/core';
export default function LoadingIndicator({
@@ -6,15 +6,33 @@ export default function LoadingIndicator({
spinnerSize = 40,
children
}) {
const [rendered, setRendered] = useState(false);
useEffect(() => {
if (!loading) { setRendered(true); }
}, [loading]);
const componentStyle = useMemo(() => {
return {display: !loading ? 'block' : 'none'};
}, [loading]);
const loadingComponent = useMemo(() => (
<div class='dashboard__loading-indicator'>
<Spinner size={spinnerSize} value={null} />
</div>
), [spinnerSize]);
const renderComponent = useMemo(() => (
<div style={componentStyle}>{ children }</div>
), [children, componentStyle]);
const maybeRenderComponent = rendered && renderComponent;
const maybeRenderLoadingSpinner = loading && loadingComponent;
return (
<>
{loading ? (
<div class='dashboard__loading-indicator'>
<Spinner size={spinnerSize} value={null} />
</div>
) : (
children
)}
{ maybeRenderLoadingSpinner }
{ maybeRenderComponent }
</>
);
}