diff options
Diffstat (limited to 'src/components/add-item.tsx')
| -rw-r--r-- | src/components/add-item.tsx | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/src/components/add-item.tsx b/src/components/add-item.tsx deleted file mode 100644 index cb433e3..0000000 --- a/src/components/add-item.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import React, { ChangeEvent, useMemo, useState } from "react"; -import { Button, Form, InputOnChangeData, Segment } from "semantic-ui-react"; -import { PantryItem } from "../model"; - -const defaultPantryItem = () => - ({ - name: "", - description: "", - quantity: 1, - quantityUnitType: "oz", - } as PantryItem); - -interface AddItemProps { - addItem: (item: PantryItem) => Promise<void>; -} - -const AddItem = ({ addItem }: AddItemProps) => { - const [additionItem, setAdditionItem] = useState<PantryItem | undefined>(); - const [additionItemLoading, setAdditionItemLoading] = useState(false); - - const handleItemChange = ( - _: ChangeEvent<HTMLInputElement>, - { name, value }: InputOnChangeData - ) => - setAdditionItem((item) => ({ - ...(item !== undefined ? item : defaultPantryItem()), - [name]: value, - })); - - const newItem = useMemo( - () => additionItem ?? defaultPantryItem(), - [additionItem] - ); - - return ( - <> - <Segment attached="top" hidden={additionItem !== undefined}> - <Button primary onClick={() => setAdditionItem(defaultPantryItem())}> - Add Item - </Button> - </Segment> - <Segment attached="top" hidden={additionItem === undefined}> - <Form - loading={additionItemLoading} - onSubmit={() => { - setAdditionItemLoading(true); - addItem(newItem).then(() => { - setAdditionItem(undefined); - setAdditionItemLoading(false); - }); - }} - > - <Form.Group widths="equal"> - <Form.Input - name="name" - label="Item Name" - placeholder="Item name" - value={newItem.name} - onChange={handleItemChange} - /> - <Form.Input - fluid - name="description" - label="Item Description" - placeholder="Item description" - value={newItem.description} - onChange={handleItemChange} - /> - <Form.Input - fluid - name="quantity" - label="Item Quantity" - placeholder="Item quantity" - value={newItem.quantity} - onChange={handleItemChange} - /> - <Form.Input - name="quantityUnitType" - label="Quantity Type" - placeholder="Quantity type" - value={newItem.quantityUnitType} - onChange={handleItemChange} - /> - </Form.Group> - <Form.Group> - <Form.Button primary content="Submit Item" type="submit" /> - <Form.Button - content="Cancel" - onClick={(e) => { - e.preventDefault(); - setAdditionItem(undefined); - }} - /> - </Form.Group> - </Form> - </Segment> - </> - ); -}; - -export default AddItem; |
