EditableSelect.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import * as React from 'react';
  2. import Box from "@mui/material/Box";
  3. import { Grid } from '@mui/material';
  4. import Tab from "@mui/material/Tab";
  5. import TabContext from "@mui/lab/TabContext";
  6. import TabList from "@mui/lab/TabList";
  7. import TabPanel from "@mui/lab/TabPanel";
  8. //registerPlugin(NestedRows);
  9. import Service from './Service';
  10. import {useLocation} from "react-router";
  11. import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
  12. import Typography from '@mui/material/Typography';
  13. import InputLabel from '@mui/material/InputLabel';
  14. import MenuItem from '@mui/material/MenuItem';
  15. import FormControl from '@mui/material/FormControl';
  16. import Select from '@mui/material/Select';
  17. import Accordion from '@mui/material/Accordion';
  18. import AccordionActions from '@mui/material/AccordionActions';
  19. import AccordionSummary from '@mui/material/AccordionSummary';
  20. import AccordionDetails from '@mui/material/AccordionDetails';
  21. import Stack from '@mui/material/Stack';
  22. import Button from '@mui/material/Button';
  23. import TextField from '@mui/material/TextField';
  24. export default function EditableSelect({ initialText, onChange }) {
  25. const [isEditing, setIsEditing] = React.useState(false);
  26. const [textValue, setTextValue] = React.useState(initialText);
  27. const handleChange = (event) => {
  28. setTextValue(event.target.value);
  29. setIsEditing(false);
  30. onChange(event.target.value);
  31. };
  32. React.useEffect(
  33. () => {
  34. setTextValue(initialText);
  35. setIsEditing(false);
  36. }, [initialText]
  37. );
  38. return (
  39. <Box>
  40. {isEditing ? (
  41. <FormControl sx={{ m: 1, minWidth: 100 }} size="small">
  42. <InputLabel id="demo-select-small-label">工程类别</InputLabel>
  43. <Select
  44. labelId="demo-select-small-label"
  45. id="demo-select-small"
  46. value={textValue}
  47. label="工程类别"
  48. onChange={handleChange}
  49. onBlur={()=>{
  50. setIsEditing(false);
  51. }}
  52. >
  53. <MenuItem value="">
  54. <em></em>
  55. </MenuItem>
  56. <MenuItem value={"一类工程"}>一类工程</MenuItem>
  57. <MenuItem value={"二类工程"}>二类工程</MenuItem>
  58. <MenuItem value={"三类工程"}>三类工程</MenuItem>
  59. </Select>
  60. </FormControl>
  61. ) : (
  62. <Button disableRipple variant="text" color="#000000"
  63. onDoubleClick={()=>{
  64. setIsEditing(true);
  65. }}
  66. >{textValue}</Button>
  67. )}
  68. </Box>
  69. );
  70. }