Untitled
unknown
abap
3 years ago
9.2 kB
11
Indexable
import React, { useState } from 'react'
import Paper from '@mui/material/Paper';
import Table from '@mui/material/Table';
import TableBody from '@mui/material/TableBody';
import TableCell from '@mui/material/TableCell';
import TableContainer from '@mui/material/TableContainer';
import TableHead from '@mui/material/TableHead';
import TablePagination from '@mui/material/TablePagination';
import TableRow from '@mui/material/TableRow';
import TextField from '@mui/material/TextField';
import Stack from '@mui/material/Stack';
import Autocomplete from '@mui/material/Autocomplete';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import Typography from '@mui/material/Typography';
import Modal from '@mui/material/Modal';
import DeleteIcon from '@mui/icons-material/Delete';
import SearchIcon from '@mui/icons-material/Search';
import EditIcon from '@mui/icons-material/Edit';
import './css.css'
import { Container, DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown } from 'reactstrap';
import { IconButton, InputBase } from '@mui/material';
import { useEffect } from 'react';
const columns = [
{ id: 'id', label: 'Id', minWidth: 170 ,icon: <i class="fas fa-sort-down"></i>},
{ id: 'city', label: 'Thành phố', minWidth: 100 , icon: <i class="fas fa-sort-down"></i>},
{
id: 'street',
label: 'Đường',
minWidth: 170,
align: 'center',
format: (value) => value.toLocaleString('en-US'),
icon: <i class="fas fa-sort-down"></i>,
},
{
id: 'action',
label: 'Hành động',
maxWidth: 70,
align: 'right',
format: (value) => value.toLocaleString('en-US'),
isSorted: false,
},
];
export default function Pillar({ data, onDelete, onEdit, open, setOpen }) {
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(6);
const [sortField , setSortField] = React.useState("id");
const [sorting, setSorting] = useState(true);
const style = {
position: 'absolute',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
width: 400,
bgcolor: 'background.paper',
border: '2px solid #000',
boxShadow: 24,
p: 4,
};
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(+event.target.value);
setPage(0);
};
const handleOpen = () => setOpen(true);
const onClickEdit = (data) => {
}
function applySorting(data) {
if(data===sortField){
setSorting(!sorting)
} else (
setSortField(data)
)
}
return (
<>
<Container fluid style={{ height: "200px" }} className="header bg-gradient-info pb-8 pt-5 pt-md-8 ">
<Paper sx={{ width: '100%', overflow: 'hidden', padding: '10px' }}>
<div style={{ width: '100%', display: "flex", flexDirection: "row", alignItems: "center", }}>
<Button onClick={handleOpen} sx={{ padding: "10px 5px", marginRight: '2%', height: '3.2em', width: "15%" }} variant="contained" color="success">
Thêm địa chỉ
</Button>
{/* <TextField sx={{display: 'flex',padding: '7px 7px 3px 7px', width: '100%', borderRadius: '7px' }} id="outlined-basic" label="Search" variant="outlined" /> */}
<Paper sx={{ border: "1px solid #ddd", display: 'flex', padding: '7px 7px 3px 7px', width: '100%', borderRadius: '7px', '&:focus': { border: "1px solid blue" } }}>
<IconButton type="button" sx={{ p: '0px', }} aria-label="search">
<SearchIcon />
</IconButton>
<InputBase
sx={{ ml: 1, flex: 1, width: '90%', fontSize: '1.1em' }}
placeholder="Search Name Customer"
/>
</Paper>
</div>
{/* <TextField sx={{ mt: "7px", width: "400px" }} id="outlined-basic" label="Search" variant="outlined" /> */}
{/* stickyHeader */}
<TableContainer sx={{ minHeight: '29em' }}>
<Table aria-label="sticky table">
<TableHead>
<TableRow>
{columns.map((column) => (
<TableCell
onClick={() => applySorting(column.id)}
sx={{ color: 'black', fontWeight: '600', fontSize: '1em' }}
key={column.id}
align={column.align}
style={{ minWidth: column.minWidth, maxWidth: column.maxWidth }}
>
{column.label}
{sorting && column.id===sortField ? column.icon:<i class="fas fa-sort-up"></i>}
</TableCell>
))}
</TableRow>
</TableHead>
<TableBody>
{data
.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
.map((item, index) => (
<TableRow hover role="checkbox" key={index}>
<TableCell >{item.id}</TableCell>
<TableCell > {item.city} </TableCell>
<TableCell sx={{ textAlign: 'center' }}> {item.street} </TableCell>
<TableCell sx={{ textAlign: "right" }}>
<UncontrolledDropdown>
<DropdownToggle
className="btn-icon-only text-light"
href="#pablo"
role="button"
size="sm"
color=""
onClick={(e) => e.preventDefault()}
>
<i className="fas fa-ellipsis-v" />
</DropdownToggle>
<DropdownMenu className="dropdown-menu-arrow" right>
<DropdownItem
href="#pablo"
onClick={(e) => onDelete(item.id)}>
<DeleteIcon></DeleteIcon>
Delete
</DropdownItem>
<DropdownItem
href="#pablo"
onClick={(e) => onClickEdit(item)}>
<EditIcon></EditIcon>
Update
</DropdownItem>
</DropdownMenu>
</UncontrolledDropdown>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
<TablePagination
rowsPerPageOptions={[6, 10, 25, 100]}
component="div"
count={data.length}
rowsPerPage={rowsPerPage}
page={page}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
/>
</Paper>
</Container >
</>
)
}
Editor is loading...