import * as React from "react"; import { Box, Typography, TextField, Checkbox, Button } from "@mui/material"; import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import dayjs, { Dayjs } from "dayjs"; import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; import { DesktopDatePicker } from "@mui/x-date-pickers/DesktopDatePicker"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; import TableContainer from "@mui/material/TableContainer"; import Paper from "@mui/material/Paper"; import { DataGrid, GridColDef, GridSelectionModel, GridToolbar } from "@mui/x-data-grid"; import InputLabel from "@mui/material/InputLabel"; import MenuItem from "@mui/material/MenuItem"; import Select, { SelectChangeEvent } from "@mui/material/Select"; import { PrivilegesProps, PromocodeProps } from "./types"; import useStore, { StoreState } from "../../../../store"; import theme from "../../../../theme"; const columns: GridColDef[] = [ { field: "id", headerName: "ID", width: 30, sortable: false, }, { field: "name", headerName: "Название промокода", width: 200, sortable: false, }, { field: "endless", headerName: "Бесконечный", width: 120, sortable: false, }, { field: "from", headerName: "От", type: "number", width: 20, sortable: false, }, { field: "dueTo", headerName: "До", type: "number", width: 20, sortable: false, }, { field: "privileges", headerName: "Привилегии", width: 210, sortable: false, } ]; const rows:Array = [ { id: 1, name: "Промокод 1", endless: false, from: 0, dueTo: 0, privileges: [ { good: "Товар 1", discount: "0.3" }, { good: "Товар 2", discount: "0.2" } ] }, { id: 2, name: "Промокод 2", endless: false, from: 0, dueTo: 0, privileges: [ { good: "Товар 3", discount: "0.3" }, { good: "Товар 4", discount: "0.2" } ] }, { id: 3, name: "Промокод 3", endless: false, from: 0, dueTo: 0, privileges: [ { good: "Товар 5", discount: "0.3" }, { good: "Товар 6", discount: "0.2" } ] }, ]; const Promocode: React.FC = () => { const [checkboxState, setCheckboxState] = React.useState(false); const toggleCheckbox = () => { setCheckboxState( !checkboxState ); } const [value1, setValue1] = React.useState( new Date() ); const [value2, setValue2] = React.useState( new Date() ); const [service, setService] = React.useState("Шаблонизатор"); const handleChange = (event: SelectChangeEvent) => { setService(event.target.value as string); }; const { promocodeArray, promocodeArraySet } = useStore((state) => state); const promocodeArrayConverted = promocodeArray.map( (item) => { if( item.privileges.length ) { const result = item.privileges.reduce( (acc, privilege) => { acc = acc ? `${acc}, ${privilege.good} - ${privilege.discount}` : `${privilege.good} - ${privilege.discount}`; return acc; }, "" ); return { ...item, privileges: result } } else { return item; } } ); const createPromocode = ( name:string ) => { const newPromocode = { id: new Date().getTime(), name, endless: checkboxState, from: checkboxState ? 0 : new Date( value1 ).getTime(), dueTo: checkboxState ? 0 : new Date( value2 ).getTime(), privileges: [] } const promocodeArrayUpdated = [ ...promocodeArray, newPromocode ]; promocodeArraySet( promocodeArrayUpdated ); } const fieldName = React.useRef(null); const checkName = () => { if( fieldName.current != null ) { createPromocode( fieldName.current.value ); } } return ( ПРОМОКОД Название: Условия: Работает, если заплатите 100500 денег Вы должны будете продать душу дьяволу
Дата действия: С { if(e) { setValue1(e) } } } renderInput={(params) => } InputProps={{ sx: { height: "40px", color: theme.palette.secondary.main, border: "1px solid", borderColor: theme.palette.secondary.main, "& .MuiSvgIcon-root": { color: theme.palette.secondary.main } } }} /> по { if(e) { setValue2(e) } } } renderInput={(params) => } InputProps={{ sx: { height: "40px", color: theme.palette.secondary.main, border: "1px solid", borderColor: theme.palette.secondary.main, "& .MuiSvgIcon-root": { color: theme.palette.secondary.main } } }} /> toggleCheckbox() } /> Бессрочно
console.log("datagrid select") } />
); } export default Promocode;