import Button from "@material-ui/core/Button"; import CircularProgress from "@material-ui/core/CircularProgress"; import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import { makeStyles } from "@material-ui/core/styles"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; import ConfirmButton, { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; import FormSpacer from "@saleor/components/FormSpacer"; import ResponsiveTable from "@saleor/components/ResponsiveTable"; import TableCellAvatar from "@saleor/components/TableCellAvatar"; import useSearchQuery from "@saleor/hooks/useSearchQuery"; import { buttonMessages } from "@saleor/intl"; import { maybe } from "@saleor/misc"; import { SearchProducts_search_edges_node } from "@saleor/searches/types/SearchProducts"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import Checkbox from "../Checkbox"; export interface FormData { products: SearchProducts_search_edges_node[]; query: string; } const useStyles = makeStyles( { avatar: { "&&:first-child": { paddingLeft: 0 }, width: 72 }, checkboxCell: { paddingLeft: 0, width: 88 }, colName: { paddingLeft: 0 }, overflow: { overflowY: "visible" }, scrollArea: { overflowY: "scroll" } }, { name: "AssignProductDialog" } ); export interface AssignProductDialogProps { confirmButtonState: ConfirmButtonTransitionState; open: boolean; products: SearchProducts_search_edges_node[]; loading: boolean; onClose: () => void; onFetch: (value: string) => void; onSubmit: (data: SearchProducts_search_edges_node[]) => void; } function handleProductAssign( product: SearchProducts_search_edges_node, isSelected: boolean, selectedProducts: SearchProducts_search_edges_node[], setSelectedProducts: (data: SearchProducts_search_edges_node[]) => void ) { if (isSelected) { setSelectedProducts( selectedProducts.filter( selectedProduct => selectedProduct.id !== product.id ) ); } else { setSelectedProducts([...selectedProducts, product]); } } const AssignProductDialog: React.FC = props => { const { confirmButtonState, open, loading, products, onClose, onFetch, onSubmit } = props; const classes = useStyles(props); const intl = useIntl(); const [query, onQueryChange] = useSearchQuery(onFetch); const [selectedProducts, setSelectedProducts] = React.useState< SearchProducts_search_edges_node[] >([]); const handleSubmit = () => onSubmit(selectedProducts); return ( }} />
{products && products.map(product => { const isSelected = selectedProducts.some( selectedProduct => selectedProduct.id === product.id ); return ( product.thumbnail.url)} /> {product.name} handleProductAssign( product, isSelected, selectedProducts, setSelectedProducts ) } /> ); })}
); }; AssignProductDialog.displayName = "AssignProductDialog"; export default AssignProductDialog;