aboutsummaryrefslogtreecommitdiff
path: root/src/components/add-item.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/add-item.tsx')
-rw-r--r--src/components/add-item.tsx101
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;