feat(InvoiceForm): skeleton loading on branch and warehouse select button.

This commit is contained in:
a.bouhuolia
2022-02-17 13:51:37 +02:00
parent 1c5c632578
commit faf6963a36

View File

@@ -5,8 +5,10 @@ import {
NavbarGroup, NavbarGroup,
NavbarDivider, NavbarDivider,
Button, Button,
Classes,
} from '@blueprintjs/core'; } from '@blueprintjs/core';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import styled from 'styled-components';
import { useFeatureCan } from 'hooks/state'; import { useFeatureCan } from 'hooks/state';
import { Icon, BranchSelect, FeatureCan, WarehouseSelect } from 'components'; import { Icon, BranchSelect, FeatureCan, WarehouseSelect } from 'components';
@@ -18,9 +20,6 @@ import { Features } from 'common';
* @returns {JSX.Element} * @returns {JSX.Element}
*/ */
export default function InvoiceFormTopBar() { export default function InvoiceFormTopBar() {
// Invoice form context.
const { branches, warehouses } = useInvoiceFormContext();
// Features guard. // Features guard.
const { featureCan } = useFeatureCan(); const { featureCan } = useFeatureCan();
@@ -31,31 +30,52 @@ export default function InvoiceFormTopBar() {
return ( return (
<Navbar className={'navbar--dashboard-topbar'}> <Navbar className={'navbar--dashboard-topbar'}>
<NavbarGroup align={Alignment.LEFT}> <NavbarGroup align={Alignment.LEFT}>
<FeatureCan feature={Features.Warehouses}> <FeatureCan feature={Features.Branches}>
<BranchSelect <InvoiceFormSelectBranch />
name={'branch_id'}
branches={branches}
input={InvoiceBranchSelectButton}
popoverProps={{ minimal: true }}
/>
</FeatureCan> </FeatureCan>
{featureCan(Features.Warehouses) && featureCan(Features.Branches) && ( {featureCan(Features.Warehouses) && featureCan(Features.Branches) && (
<NavbarDivider /> <NavbarDivider />
)} )}
<FeatureCan feature={Features.Warehouses}> <FeatureCan feature={Features.Warehouses}>
<WarehouseSelect <InvoiceFormSelectWarehouse />
name={'warehouse_id'}
warehouses={warehouses}
input={InvoiceWarehouseSelectButton}
popoverProps={{ minimal: true }}
/>
</FeatureCan> </FeatureCan>
</NavbarGroup> </NavbarGroup>
</Navbar> </Navbar>
); );
} }
function InvoiceFormSelectBranch() {
// Invoice form context.
const { branches, isBranchesLoading } = useInvoiceFormContext();
return isBranchesLoading ? (
<DetailsBarSkeletonBase className={Classes.SKELETON} />
) : (
<BranchSelect
name={'branch_id'}
branches={branches}
input={InvoiceBranchSelectButton}
popoverProps={{ minimal: true }}
/>
);
}
function InvoiceFormSelectWarehouse() {
// Invoice form context.
const { warehouses, isWarehouesLoading } = useInvoiceFormContext();
return isWarehouesLoading ? (
<DetailsBarSkeletonBase className={Classes.SKELETON} />
) : (
<WarehouseSelect
name={'warehouse_id'}
warehouses={warehouses}
input={InvoiceWarehouseSelectButton}
popoverProps={{ minimal: true }}
/>
);
}
function InvoiceWarehouseSelectButton({ label }) { function InvoiceWarehouseSelectButton({ label }) {
return ( return (
<Button <Button
@@ -77,3 +97,12 @@ function InvoiceBranchSelectButton({ label }) {
/> />
); );
} }
const DetailsBarSkeletonBase = styled.div`
letter-spacing: 10px;
margin-right: 10px;
margin-left: 10px;
font-size: 8px;
width: 140px;
height: 10px;
`;