Start mapping selected filters to query variables (#3886)
* Initial variables mapping * Changeset
This commit is contained in:
parent
cc0e0e58f3
commit
6d6d1588b3
3 changed files with 31 additions and 1 deletions
5
.changeset/polite-eyes-look.md
Normal file
5
.changeset/polite-eyes-look.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"saleor-dashboard": patch
|
||||
---
|
||||
|
||||
Start mapping selected filters to query variables
|
|
@ -1,7 +1,31 @@
|
|||
import { FilterContainer } from "./FilterElement";
|
||||
|
||||
type QueryVars =
|
||||
| { OR: QueryVars, current?: FilterContainer[number] }
|
||||
| { AND: QueryVars, current?: FilterContainer[number] }
|
||||
|
||||
export interface FilterValueProvider {
|
||||
value: FilterContainer;
|
||||
queryVars: QueryVars;
|
||||
loading: boolean;
|
||||
persist: (newValue: FilterContainer) => void;
|
||||
}
|
||||
|
||||
const toNested = (p: QueryVars, current: FilterContainer[number]): QueryVars => {
|
||||
if (typeof current !== "string") {
|
||||
return { ...p, current }
|
||||
}
|
||||
|
||||
if (current === "AND") {
|
||||
return { AND: p }
|
||||
}
|
||||
|
||||
if (current === "OR") {
|
||||
return { OR: p }
|
||||
}
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
export const createVariables = (filter: FilterContainer) =>
|
||||
filter.reduceRight(toNested, {} as QueryVars)
|
|
@ -3,7 +3,7 @@ import useRouter from "use-react-router";
|
|||
|
||||
import { useInitialAPIState } from "../API/initialState/useInitalAPIState";
|
||||
import { FilterContainer } from "../FilterElement";
|
||||
import { FilterValueProvider } from "../FilterValueProvider";
|
||||
import { createVariables,FilterValueProvider } from "../FilterValueProvider";
|
||||
import { useTokenArray } from "./TokenArray";
|
||||
import { UrlEntry } from "./UrlToken";
|
||||
|
||||
|
@ -42,6 +42,7 @@ export const useUrlValueProvider = (): FilterValueProvider => {
|
|||
|
||||
return {
|
||||
value,
|
||||
queryVars: createVariables(value),
|
||||
loading,
|
||||
persist,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue