import DialogContentText from "@material-ui/core/DialogContentText"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; import React from "react"; import ActionDialog from "@saleor/components/ActionDialog"; import useBulkActions from "@saleor/hooks/useBulkActions"; import useListSettings from "@saleor/hooks/useListSettings"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; import usePaginator, { createPaginationState } from "@saleor/hooks/usePaginator"; import i18n from "@saleor/i18n"; import { getMutationState, maybe } from "@saleor/misc"; import { ListViews } from "@saleor/types"; import CustomerListPage from "../components/CustomerListPage"; import { TypedBulkRemoveCustomers } from "../mutations"; import { TypedCustomerListQuery } from "../queries"; import { BulkRemoveCustomers } from "../types/BulkRemoveCustomers"; import { customerAddUrl, customerListUrl, CustomerListUrlQueryParams, customerUrl } from "../urls"; interface CustomerListProps { params: CustomerListUrlQueryParams; } export const CustomerList: React.StatelessComponent = ({ params }) => { const navigate = useNavigator(); const notify = useNotifier(); const paginate = usePaginator(); const { isSelected, listElements, reset, toggle, toggleAll } = useBulkActions( params.ids ); const { updateListSettings, settings } = useListSettings( ListViews.CUSTOMER_LIST ); const closeModal = () => navigate( customerListUrl({ ...params, action: undefined, ids: undefined }), true ); const paginationState = createPaginationState(settings.rowNumber, params); return ( {({ data, loading, refetch }) => { const { loadNextPage, loadPreviousPage, pageInfo } = paginate( maybe(() => data.customers.pageInfo), paginationState, params ); const handleBulkCustomerDelete = (data: BulkRemoveCustomers) => { if (data.customerBulkDelete.errors.length === 0) { notify({ text: i18n.t("Customers removed") }); reset(); refetch(); closeModal(); } }; return ( {(bulkRemoveCustomers, bulkRemoveCustomersOpts) => { const removeTransitionState = getMutationState( bulkRemoveCustomersOpts.called, bulkRemoveCustomersOpts.loading, maybe( () => bulkRemoveCustomersOpts.data.customerBulkDelete.errors ) ); return ( <> data.customers.edges.map(edge => edge.node) )} settings={settings} disabled={loading} pageInfo={pageInfo} onAdd={() => navigate(customerAddUrl)} onNextPage={loadNextPage} onPreviousPage={loadPreviousPage} onUpdateListSettings={updateListSettings} onRowClick={id => () => navigate(customerUrl(id))} toolbar={ navigate( customerListUrl({ action: "remove", ids: listElements }) ) } > } isChecked={isSelected} selected={listElements.length} toggle={toggle} toggleAll={toggleAll} /> bulkRemoveCustomers({ variables: { ids: params.ids } }) } variant="delete" title={i18n.t("Remove customers")} > {{ number }} customers?", { number: maybe( () => params.ids.length.toString(), "..." ) } ) }} /> ); }} ); }} ); }; export default CustomerList;