128 lines
2.4 KiB
TypeScript
128 lines
2.4 KiB
TypeScript
import gql from "graphql-tag";
|
|
|
|
import makeQuery from "@saleor/hooks/makeQuery";
|
|
import { pageInfoFragment } from "../queries";
|
|
import {
|
|
CategoryDetails,
|
|
CategoryDetailsVariables
|
|
} from "./types/CategoryDetails";
|
|
import { RootCategories } from "./types/RootCategories";
|
|
|
|
export const categoryFragment = gql`
|
|
fragment CategoryFragment on Category {
|
|
id
|
|
name
|
|
children {
|
|
totalCount
|
|
}
|
|
products {
|
|
totalCount
|
|
}
|
|
}
|
|
`;
|
|
export const categoryDetailsFragment = gql`
|
|
fragment CategoryDetailsFragment on Category {
|
|
id
|
|
backgroundImage {
|
|
alt
|
|
url
|
|
}
|
|
name
|
|
descriptionJson
|
|
seoDescription
|
|
seoTitle
|
|
parent {
|
|
id
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const rootCategories = gql`
|
|
${categoryFragment}
|
|
${pageInfoFragment}
|
|
query RootCategories(
|
|
$first: Int
|
|
$after: String
|
|
$last: Int
|
|
$before: String
|
|
$filter: CategoryFilterInput
|
|
$sort: CategorySortingInput
|
|
) {
|
|
categories(
|
|
level: 0
|
|
first: $first
|
|
after: $after
|
|
last: $last
|
|
before: $before
|
|
filter: $filter
|
|
sortBy: $sort
|
|
) {
|
|
edges {
|
|
node {
|
|
...CategoryFragment
|
|
}
|
|
}
|
|
pageInfo {
|
|
...PageInfoFragment
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
export const useRootCategoriesQuery = makeQuery<RootCategories, {}>(
|
|
rootCategories
|
|
);
|
|
|
|
export const categoryDetails = gql`
|
|
${categoryFragment}
|
|
${categoryDetailsFragment}
|
|
${pageInfoFragment}
|
|
query CategoryDetails(
|
|
$id: ID!
|
|
$first: Int
|
|
$after: String
|
|
$last: Int
|
|
$before: String
|
|
) {
|
|
category(id: $id) {
|
|
...CategoryDetailsFragment
|
|
children(first: $first, after: $after, last: $last, before: $before) {
|
|
edges {
|
|
node {
|
|
...CategoryFragment
|
|
}
|
|
}
|
|
pageInfo {
|
|
...PageInfoFragment
|
|
}
|
|
}
|
|
products(first: $first, after: $after, last: $last, before: $before) {
|
|
pageInfo {
|
|
...PageInfoFragment
|
|
}
|
|
edges {
|
|
cursor
|
|
node {
|
|
id
|
|
name
|
|
basePrice {
|
|
amount
|
|
currency
|
|
}
|
|
isAvailable
|
|
thumbnail {
|
|
url
|
|
}
|
|
productType {
|
|
id
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
export const useCategoryDetailsQuery = makeQuery<
|
|
CategoryDetails,
|
|
CategoryDetailsVariables
|
|
>(categoryDetails);
|