mirror of
https://github.com/vercel/commerce.git
synced 2025-07-22 20:26:49 +00:00
✨ feat: get all facets
:%s
This commit is contained in:
45
framework/vendure/schema.d.ts
vendored
45
framework/vendure/schema.d.ts
vendored
@@ -93,6 +93,10 @@ export type QueryProductsArgs = {
|
|||||||
options?: Maybe<ProductListOptions>
|
options?: Maybe<ProductListOptions>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type QueryFacetsArgs = {
|
||||||
|
options?: Maybe<FacetListOptions>
|
||||||
|
}
|
||||||
|
|
||||||
export type QuerySearchArgs = {
|
export type QuerySearchArgs = {
|
||||||
input: SearchInput
|
input: SearchInput
|
||||||
}
|
}
|
||||||
@@ -2727,6 +2731,13 @@ export type ProductListOptions = {
|
|||||||
filter?: Maybe<ProductFilterParameter>
|
filter?: Maybe<ProductFilterParameter>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type FacetListOptions = {
|
||||||
|
skip?: Maybe<Scalars['Int']>
|
||||||
|
take?: Maybe<Scalars['Int']>
|
||||||
|
sort?: Maybe<FacetSortParameter>
|
||||||
|
filter?: Maybe<FacetFilterParameter>
|
||||||
|
}
|
||||||
|
|
||||||
export type UpdateOrderItemsResult =
|
export type UpdateOrderItemsResult =
|
||||||
| Order
|
| Order
|
||||||
| OrderModificationError
|
| OrderModificationError
|
||||||
@@ -2884,6 +2895,23 @@ export type ProductVariantSortParameter = {
|
|||||||
discountPrice?: Maybe<SortOrder>
|
discountPrice?: Maybe<SortOrder>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export type FacetFilterParameter = {
|
||||||
|
createdAt?: Maybe<DateOperators>
|
||||||
|
updatedAt?: Maybe<DateOperators>
|
||||||
|
languageCode?: Maybe<StringOperators>
|
||||||
|
name?: Maybe<StringOperators>
|
||||||
|
code?: Maybe<StringOperators>
|
||||||
|
}
|
||||||
|
|
||||||
|
export type FacetSortParameter = {
|
||||||
|
id?: Maybe<SortOrder>
|
||||||
|
createdAt?: Maybe<SortOrder>
|
||||||
|
updatedAt?: Maybe<SortOrder>
|
||||||
|
name?: Maybe<SortOrder>
|
||||||
|
code?: Maybe<SortOrder>
|
||||||
|
}
|
||||||
|
|
||||||
export type CustomerFilterParameter = {
|
export type CustomerFilterParameter = {
|
||||||
createdAt?: Maybe<DateOperators>
|
createdAt?: Maybe<DateOperators>
|
||||||
updatedAt?: Maybe<DateOperators>
|
updatedAt?: Maybe<DateOperators>
|
||||||
@@ -3192,6 +3220,23 @@ export type GetAllProductsQuery = { __typename?: 'Query' } & {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type GetAllFacetsQuery = { __typename?: 'Query' } & {
|
||||||
|
facets: { __typename?: 'FacetList' } & {
|
||||||
|
items: Array<
|
||||||
|
{ __typename?: 'Facet' } & Pick<
|
||||||
|
Facet,
|
||||||
|
'id' | 'name' | 'code'
|
||||||
|
> & {
|
||||||
|
parent?: Maybe<{ __typename?: 'Facet' } & Pick<Facet, 'id'>>
|
||||||
|
children?: Maybe<
|
||||||
|
Array<{ __typename?: 'Facet' } & Pick<Facet, 'id'>>
|
||||||
|
>
|
||||||
|
}
|
||||||
|
>,
|
||||||
|
'totalItems'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export type ActiveOrderQueryVariables = Exact<{ [key: string]: never }>
|
export type ActiveOrderQueryVariables = Exact<{ [key: string]: never }>
|
||||||
|
|
||||||
export type ActiveOrderQuery = { __typename?: 'Query' } & {
|
export type ActiveOrderQuery = { __typename?: 'Query' } & {
|
||||||
|
17
framework/vendure/utils/queries/get-all-facets-query.ts
Normal file
17
framework/vendure/utils/queries/get-all-facets-query.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
export const getAllFacetsQuery = /* GraphQL */ `
|
||||||
|
query facets ($options: FacetListOptions) {
|
||||||
|
facets (options: $options){
|
||||||
|
totalItems,
|
||||||
|
items {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
code
|
||||||
|
values {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
@@ -4,6 +4,7 @@ import { ProductInfoDetail, ReleventProducts, ViewedProducts } from 'src/compone
|
|||||||
import { BLOGS_DATA_TEST, INGREDIENT_DATA_TEST, RECIPE_DATA_TEST } from 'src/utils/demo-data'
|
import { BLOGS_DATA_TEST, INGREDIENT_DATA_TEST, RECIPE_DATA_TEST } from 'src/utils/demo-data'
|
||||||
|
|
||||||
export default function Slug() {
|
export default function Slug() {
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<ProductInfoDetail />
|
<ProductInfoDetail />
|
||||||
<RecipeDetail ingredients={INGREDIENT_DATA_TEST} />
|
<RecipeDetail ingredients={INGREDIENT_DATA_TEST} />
|
||||||
|
@@ -1,16 +1,40 @@
|
|||||||
|
import { QueryFacetsArgs } from '@framework/schema'
|
||||||
|
import { useMemo, useState } from 'react'
|
||||||
import { Layout } from 'src/components/common'
|
import { Layout } from 'src/components/common'
|
||||||
import { useMessage } from 'src/components/contexts'
|
import { useFacets } from 'src/components/hooks/facets'
|
||||||
|
|
||||||
export default function Test() {
|
export default function Test() {
|
||||||
const { showMessageError } = useMessage()
|
const [keyword, setKeyword] = useState('c')
|
||||||
|
|
||||||
const handleClick = () => {
|
const optionsFilter = useMemo(() => {
|
||||||
showMessageError("Create account successfully")
|
console.log("change options")
|
||||||
|
return {
|
||||||
|
options: {
|
||||||
|
filter: {
|
||||||
|
name: {
|
||||||
|
contains: keyword
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} as QueryFacetsArgs
|
||||||
|
}, [keyword])
|
||||||
|
|
||||||
|
const { items, totalItems } = useFacets(optionsFilter)
|
||||||
|
|
||||||
|
const changeQuery = () => {
|
||||||
|
setKeyword('ca')
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<button onClick={handleClick}>Click me</button>
|
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore, praesentium.</div>
|
||||||
|
<div>
|
||||||
|
total: {totalItems}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
ITEMS: {JSON.stringify(items)}
|
||||||
|
</div>
|
||||||
|
<button onClick={changeQuery}>change</button>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
3
src/components/hooks/facets/index.ts
Normal file
3
src/components/hooks/facets/index.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export { default as useFacets } from './useFacets'
|
||||||
|
|
||||||
|
|
12
src/components/hooks/facets/useFacets.tsx
Normal file
12
src/components/hooks/facets/useFacets.tsx
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { GetAllFacetsQuery, QueryFacetsArgs } from '@framework/schema'
|
||||||
|
import { getAllFacetsQuery } from '@framework/utils/queries/get-all-facets-query'
|
||||||
|
import gglFetcher from 'src/utils/gglFetcher'
|
||||||
|
import useSWR from 'swr'
|
||||||
|
|
||||||
|
const useFacets = (options: QueryFacetsArgs) => {
|
||||||
|
const { data, isValidating, ...rest } = useSWR<GetAllFacetsQuery>([getAllFacetsQuery, options], gglFetcher)
|
||||||
|
console.log("here", data)
|
||||||
|
return { items: data?.facets.items, totalItems: data?.facets.totalItems, loading: isValidating, ...rest }
|
||||||
|
}
|
||||||
|
|
||||||
|
export default useFacets
|
Reference in New Issue
Block a user