import { extensionMountPoints, mapToMenuItems, useExtensions, } from "@dashboard/apps/hooks/useExtensions"; import { LimitsInfo } from "@dashboard/components/AppLayout/LimitsInfo"; import { TopNav } from "@dashboard/components/AppLayout/TopNav"; import { ButtonWithSelect } from "@dashboard/components/ButtonWithSelect"; import CardMenu from "@dashboard/components/CardMenu"; import { useDevModeContext } from "@dashboard/components/DevModePanel/hooks"; import FilterBar from "@dashboard/components/FilterBar"; import { ListPageLayout } from "@dashboard/components/Layouts"; import { OrderListQuery, RefreshLimitsQuery } from "@dashboard/graphql"; import { sectionNames } from "@dashboard/intl"; import { DevModeQuery } from "@dashboard/orders/queries"; import { OrderListUrlQueryParams, OrderListUrlSortField, } from "@dashboard/orders/urls"; import { getFilterVariables } from "@dashboard/orders/views/OrderList/filters"; import { FilterPageProps, PageListProps, RelayToFlat, SortPage, } from "@dashboard/types"; import { hasLimits, isLimitReached } from "@dashboard/utils/limits"; import { Card } from "@material-ui/core"; import { makeStyles } from "@saleor/macaw-ui"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import OrderLimitReached from "../OrderLimitReached"; import OrderList from "../OrderList"; import { createFilterStructure, OrderFilterKeys, OrderListFilterOpts, } from "./filters"; export interface OrderListPageProps extends PageListProps, FilterPageProps, SortPage { limits: RefreshLimitsQuery["shop"]["limits"]; orders: RelayToFlat; onSettingsOpen: () => void; onAdd: () => void; params: OrderListUrlQueryParams; } const useStyles = makeStyles( theme => ({ settings: { marginRight: theme.spacing(2), }, }), { name: "OrderListPage" }, ); const OrderListPage: React.FC = ({ currentTab, initialSearch, filterOpts, limits, tabs, onAdd, onAll, onSearchChange, onSettingsOpen, onFilterChange, onTabChange, onTabDelete, onTabSave, params, ...listProps }) => { const intl = useIntl(); const classes = useStyles({}); const filterStructure = createFilterStructure(intl, filterOpts); const limitsReached = isLimitReached(limits, "orders"); const { ORDER_OVERVIEW_CREATE, ORDER_OVERVIEW_MORE_ACTIONS } = useExtensions( extensionMountPoints.ORDER_LIST, ); const extensionMenuItems = mapToMenuItems(ORDER_OVERVIEW_MORE_ACTIONS); const extensionCreateButtonItems = mapToMenuItems(ORDER_OVERVIEW_CREATE); const context = useDevModeContext(); const openPlaygroundURL = () => { context.setDevModeContent(DevModeQuery); const variables = JSON.stringify( { filter: getFilterVariables(params), // TODO add sorting: Issue #3409 // strange error when uncommenting this line // sortBy: getSortQueryVariables(params) }, null, 2, ); context.setVariables(variables); context.setDevModeVisibility(true); }; return ( {!!onSettingsOpen && ( )} {hasLimits(limits, "orders") && ( )} {limitsReached && } ); }; OrderListPage.displayName = "OrderListPage"; export default OrderListPage;