Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 188x 188x 188x 188x 188x 188x 188x 2x 2x 2x 2x 2x 188x 7x 2x 5x 1x | import {Add, Close} from '@mui/icons-material'
import {Button, Dialog, DialogContent, DialogTitle, IconButton, Stack, TextField, Tooltip} from '@mui/material'
import {type KeyboardEvent, useContext, useState} from 'react'
import {AllCategories, CategoryEditContext} from './building'
import {CategoryEditor} from './categoryEditor'
export function CategoryAdder() {
const [menuOpen, setMenuOpen] = useState(false)
const toggleMenu = () => setMenuOpen(!menuOpen)
const categories = useContext(AllCategories)
const editCategories = useContext(CategoryEditContext)
const [name, setName] = useState('')
const [editingCategory, setEditingCategory] = useState('')
const add = () => {
Eif (name && -1 === categories.indexOf(name)) {
editCategories({type: 'add', cat: name})
setEditingCategory(name)
setName('')
setMenuOpen(false)
}
}
return (
<>
<Tooltip title="add category">
<IconButton
size="small"
aria-label="add category"
sx={{position: 'absolute', right: '-42px', top: '-4px', zIndex: 1}}
onClick={toggleMenu}
>
<Add />
</IconButton>
</Tooltip>
{menuOpen && (
<Dialog open={menuOpen} onClose={() => setMenuOpen(false)}>
<DialogTitle>Add Category</DialogTitle>
<IconButton
aria-label="close category adder"
onClick={toggleMenu}
sx={{
position: 'absolute',
right: 8,
top: 12,
}}
className="close-button"
>
<Close />
</IconButton>
<DialogContent>
<Stack direction="row">
<TextField
label="New Category Name"
size="small"
id="category_adder_input"
value={name}
onKeyDown={(e: KeyboardEvent) => {
if (e.code === 'Enter' || e.code === 'NumpadEnter') {
add()
}
}}
onChange={e => setName(e.target.value)}
></TextField>
<Button variant="contained" onClick={add}>
Add
</Button>
</Stack>
</DialogContent>
</Dialog>
)}
{editingCategory && <CategoryEditor category={editingCategory} onClose={() => setEditingCategory('')} />}
</>
)
}
|