// @ts-strict-ignore import { extensionMountPoints, mapToMenuItems, mapToMenuItemsForCustomerOverviewActions, useExtensions, } from "@dashboard/apps/hooks/useExtensions"; import { useUserPermissions } from "@dashboard/auth/hooks/useUserPermissions"; import { ListFilters } from "@dashboard/components/AppLayout/ListFilters"; import { TopNav } from "@dashboard/components/AppLayout/TopNav"; import { BulkDeleteButton } from "@dashboard/components/BulkDeleteButton"; import { ButtonWithDropdown } from "@dashboard/components/ButtonWithDropdown"; import { FilterPresetsSelect } from "@dashboard/components/FilterPresetsSelect"; import { Customers } from "@dashboard/customers/types"; import { customerAddUrl, CustomerListUrlSortField, customerUrl, } from "@dashboard/customers/urls"; import useNavigator from "@dashboard/hooks/useNavigator"; import { sectionNames } from "@dashboard/intl"; import { FilterPagePropsWithPresets, PageListProps, SortPage, } from "@dashboard/types"; import { Box, Button, ChevronRightIcon } from "@saleor/macaw-ui/next"; import React, { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { CustomerListDatagrid } from "../CustomerListDatagrid/CustomerListDatagrid"; import { createFilterStructure, CustomerFilterKeys, CustomerListFilterOpts, } from "./filters"; export interface CustomerListPageProps extends PageListProps, FilterPagePropsWithPresets, SortPage { customers: Customers | undefined; selectedCustomerIds: string[]; loading: boolean; onSelectCustomerIds: (rows: number[], clearSelection: () => void) => void; onCustomersDelete: () => void; } const CustomerListPage: React.FC = ({ selectedFilterPreset, filterOpts, initialSearch, onFilterPresetsAll, onFilterChange, onFilterPresetDelete, onFilterPresetUpdate, onSearchChange, onFilterPresetChange, onFilterPresetPresetSave, filterPresets, selectedCustomerIds, hasPresetsChanged, onCustomersDelete, ...customerListProps }) => { const intl = useIntl(); const navigate = useNavigator(); const userPermissions = useUserPermissions(); const structure = createFilterStructure(intl, filterOpts, userPermissions); const [isFilterPresetOpen, setFilterPresetOpen] = useState(false); const { CUSTOMER_OVERVIEW_CREATE, CUSTOMER_OVERVIEW_MORE_ACTIONS } = useExtensions(extensionMountPoints.CUSTOMER_LIST); const extensionMenuItems = mapToMenuItemsForCustomerOverviewActions( CUSTOMER_OVERVIEW_MORE_ACTIONS, selectedCustomerIds, ); const extensionCreateButtonItems = mapToMenuItems(CUSTOMER_OVERVIEW_CREATE); return ( <> {extensionMenuItems.length > 0 && ( )} {extensionCreateButtonItems.length > 0 ? ( navigate(customerAddUrl)} > ) : ( )} {selectedCustomerIds.length > 0 && ( )} } /> navigate(customerUrl(id))} /> ); }; CustomerListPage.displayName = "CustomerListPage"; export default CustomerListPage;