Experimental filters: add empty state and adjust popover ui (#3950)

This commit is contained in:
Krzysztof Żuraw 2023-07-19 11:29:03 +02:00 committed by GitHub
parent 4e8942f90e
commit dd50f95b55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 57 deletions

View file

@ -0,0 +1,5 @@
---
"saleor-dashboard": patch
---
Experimental filters: add empty state and adjust popover ui

14
package-lock.json generated
View file

@ -27,7 +27,7 @@
"@material-ui/lab": "^4.0.0-alpha.61", "@material-ui/lab": "^4.0.0-alpha.61",
"@material-ui/styles": "^4.11.4", "@material-ui/styles": "^4.11.4",
"@reach/auto-id": "^0.16.0", "@reach/auto-id": "^0.16.0",
"@saleor/macaw-ui": "0.8.0-pre.105", "@saleor/macaw-ui": "0.8.0-pre.106",
"@saleor/sdk": "0.6.0", "@saleor/sdk": "0.6.0",
"@sentry/react": "^6.0.0", "@sentry/react": "^6.0.0",
"@types/faker": "^5.1.6", "@types/faker": "^5.1.6",
@ -7947,9 +7947,9 @@
} }
}, },
"node_modules/@saleor/macaw-ui": { "node_modules/@saleor/macaw-ui": {
"version": "0.8.0-pre.105", "version": "0.8.0-pre.106",
"resolved": "https://registry.npmjs.org/@saleor/macaw-ui/-/macaw-ui-0.8.0-pre.105.tgz", "resolved": "https://registry.npmjs.org/@saleor/macaw-ui/-/macaw-ui-0.8.0-pre.106.tgz",
"integrity": "sha512-UfI8NWknBCEJfFakQM71W5DghQZZT+WNU4C0t/A6xHxQQj8qOxoilOeFy+e7rqtovx3x0tkcWIlVy2TTbuJDKg==", "integrity": "sha512-0wg1XXsmpaVfT6KMKgbGcNajXxITgAzXZIFp5x1bs1UTiJgmxYSnhs+h2ikz+m6nozEUGeiyOncl5wyw9aOYWw==",
"dependencies": { "dependencies": {
"@dessert-box/react": "^0.4.0", "@dessert-box/react": "^0.4.0",
"@floating-ui/react-dom-interactions": "^0.5.0", "@floating-ui/react-dom-interactions": "^0.5.0",
@ -41209,9 +41209,9 @@
} }
}, },
"@saleor/macaw-ui": { "@saleor/macaw-ui": {
"version": "0.8.0-pre.105", "version": "0.8.0-pre.106",
"resolved": "https://registry.npmjs.org/@saleor/macaw-ui/-/macaw-ui-0.8.0-pre.105.tgz", "resolved": "https://registry.npmjs.org/@saleor/macaw-ui/-/macaw-ui-0.8.0-pre.106.tgz",
"integrity": "sha512-UfI8NWknBCEJfFakQM71W5DghQZZT+WNU4C0t/A6xHxQQj8qOxoilOeFy+e7rqtovx3x0tkcWIlVy2TTbuJDKg==", "integrity": "sha512-0wg1XXsmpaVfT6KMKgbGcNajXxITgAzXZIFp5x1bs1UTiJgmxYSnhs+h2ikz+m6nozEUGeiyOncl5wyw9aOYWw==",
"requires": { "requires": {
"@dessert-box/react": "^0.4.0", "@dessert-box/react": "^0.4.0",
"@floating-ui/react-dom-interactions": "^0.5.0", "@floating-ui/react-dom-interactions": "^0.5.0",

View file

@ -34,7 +34,7 @@
"@material-ui/lab": "^4.0.0-alpha.61", "@material-ui/lab": "^4.0.0-alpha.61",
"@material-ui/styles": "^4.11.4", "@material-ui/styles": "^4.11.4",
"@reach/auto-id": "^0.16.0", "@reach/auto-id": "^0.16.0",
"@saleor/macaw-ui": "0.8.0-pre.105", "@saleor/macaw-ui": "0.8.0-pre.106",
"@saleor/sdk": "0.6.0", "@saleor/sdk": "0.6.0",
"@sentry/react": "^6.0.0", "@sentry/react": "^6.0.0",
"@types/faker": "^5.1.6", "@types/faker": "^5.1.6",

View file

@ -8,21 +8,28 @@ export const ExpressionFilters = () => (
<Button>Show filters</Button> <Button>Show filters</Button>
</Popover.Trigger> </Popover.Trigger>
<Popover.Content align="start"> <Popover.Content align="start">
<Box> <Box
__minHeight="250px"
__minWidth="636px"
display="grid"
__gridTemplateRows="auto 1fr"
>
<Box <Box
paddingX={5} paddingTop={3}
paddingY={4} paddingX={3}
paddingBottom={1.5}
display="flex" display="flex"
gap={1} gap={1}
alignItems="center" alignItems="center"
justifyContent="space-between" justifyContent="space-between"
backgroundColor="surfaceNeutralPlain" backgroundColor="surfaceNeutralPlain"
borderTopLeftRadius={2}
borderTopRightRadius={2}
> >
<Text variant="body" size="medium"> <Text variant="body" size="medium">
Filter conditions Conditions
</Text> </Text>
<Box display="flex" alignItems="center" gap={2}> <Box display="flex" alignItems="center" gap={2}>
<Button variant="tertiary">Clear filters</Button>
<Popover.Close> <Popover.Close>
<Button variant="tertiary" icon={<CloseIcon />} /> <Button variant="tertiary" icon={<CloseIcon />} />
</Popover.Close> </Popover.Close>

View file

@ -1,9 +1,10 @@
import { _ExperimentalFilters, Box, Divider } from "@saleor/macaw-ui/next"; import { Box } from "@saleor/macaw-ui/next";
import React, { FC } from "react"; import React, { FC } from "react";
import { useConditionalFilterContext } from "./context"; import { useConditionalFilterContext } from "./context";
import { FilterContainer } from "./FilterElement"; import { FilterContainer } from "./FilterElement";
import { FiltersArea } from "./FiltersArea"; import { FiltersArea } from "./FiltersArea";
import { LoadingFiltersArea } from "./LoadingFiltersArea";
export const ConditionalFilters: FC = () => { export const ConditionalFilters: FC = () => {
const { valueProvider } = useConditionalFilterContext(); const { valueProvider } = useConditionalFilterContext();
@ -12,30 +13,16 @@ export const ConditionalFilters: FC = () => {
valueProvider.persist(value); valueProvider.persist(value);
}; };
return ( return valueProvider.loading ? (
<Box> <LoadingFiltersArea />
{valueProvider.loading ? ( ) : (
<Box <Box
__minWidth="700px" padding={3}
__minHeight="100px" backgroundColor="interactiveNeutralSecondaryHovering"
paddingX={5} borderBottomLeftRadius={2}
paddingY={4} borderBottomRightRadius={2}
display="flex" >
gap={3} <FiltersArea onConfirm={handleConfirm} />
flexDirection="column"
>
<_ExperimentalFilters.Skeleton height={7} />
<_ExperimentalFilters.Skeleton height={7} />
<_ExperimentalFilters.Skeleton height={7} />
<Divider />
<Box display="flex" gap={4} justifyContent="space-between">
<_ExperimentalFilters.Skeleton height={7} __width="20%" />
<_ExperimentalFilters.Skeleton height={7} __width="20%" />
</Box>
</Box>
) : (
<FiltersArea onConfirm={handleConfirm} />
)}
</Box> </Box>
); );
}; };

View file

@ -60,28 +60,25 @@ export const FiltersArea = ({ onConfirm }: FiltersAreaProps) => {
}; };
return ( return (
<Box <_ExperimentalFilters
paddingX={5} leftOptions={leftOperandsProvider.operands}
paddingY={3} // @ts-expect-error
backgroundColor="interactiveNeutralSecondaryHovering" value={value}
borderBottomLeftRadius={2} onChange={handleStateChange}
borderBottomRightRadius={2}
> >
<_ExperimentalFilters <_ExperimentalFilters.Footer>
leftOptions={leftOperandsProvider.operands} <_ExperimentalFilters.AddRowButton>
// @ts-expect-error + Add row
value={value} </_ExperimentalFilters.AddRowButton>
onChange={handleStateChange} <Box display="flex" gap={3}>
> <_ExperimentalFilters.ClearButton>
<_ExperimentalFilters.Footer> Clear
<_ExperimentalFilters.AddRowButton> </_ExperimentalFilters.ClearButton>
+ Add row
</_ExperimentalFilters.AddRowButton>
<_ExperimentalFilters.ConfirmButton onClick={() => onConfirm(value)}> <_ExperimentalFilters.ConfirmButton onClick={() => onConfirm(value)}>
Save Save
</_ExperimentalFilters.ConfirmButton> </_ExperimentalFilters.ConfirmButton>
</_ExperimentalFilters.Footer> </Box>
</_ExperimentalFilters> </_ExperimentalFilters.Footer>
</Box> </_ExperimentalFilters>
); );
}; };

View file

@ -0,0 +1,27 @@
import { _ExperimentalFilters, Box, Divider } from "@saleor/macaw-ui/next";
import React from "react";
export const LoadingFiltersArea = () => (
<Box
padding={3}
backgroundColor="interactiveNeutralSecondaryHovering"
borderBottomLeftRadius={2}
borderBottomRightRadius={2}
display="flex"
flexDirection="column"
>
<Box display="flex" flexDirection="column" gap={3} height="100%">
<_ExperimentalFilters.Skeleton height={7} />
<_ExperimentalFilters.Skeleton height={7} />
<_ExperimentalFilters.Skeleton height={7} />
</Box>
<Divider />
<Box display="flex" gap={4} justifyContent="space-between">
<_ExperimentalFilters.Skeleton height={7} __width="60px" />
<Box display="flex" gap={3}>
<_ExperimentalFilters.Skeleton height={7} __width="60px" />
<_ExperimentalFilters.Skeleton height={7} __width="60px" />
</Box>
</Box>
</Box>
);