diff --git a/compass/components/Drawer/Drawer.tsx b/compass/components/Drawer/Drawer.tsx index 0313b89..17b4557 100644 --- a/compass/components/Drawer/Drawer.tsx +++ b/compass/components/Drawer/Drawer.tsx @@ -1,4 +1,4 @@ -import { FunctionComponent, ReactNode } from "react"; +import { Dispatch, FunctionComponent, ReactNode, SetStateAction } from "react"; import React, { useState } from "react"; import { ChevronDoubleLeftIcon } from "@heroicons/react/24/solid"; import { @@ -23,7 +23,7 @@ type DrawerProps = { editableContent?: any; onSave?: (content: any) => void; rowContent?: any; - onRowUpdate?: (content: any) => void; + setData: Dispatch>; }; interface EditContent { @@ -37,13 +37,23 @@ const Drawer: FunctionComponent = ({ onSave, editableContent, rowContent, - onRowUpdate, + setData, }) => { const [isOpen, setIsOpen] = useState(false); const [isFull, setIsFull] = useState(false); const [isFavorite, setIsFavorite] = useState(false); const [tempRowContent, setTempRowContent] = useState(rowContent); + const onRowUpdate = (updatedRow: any) => { + setData((prevData: any) => ( + prevData.map((row: any) => ( + row.id === updatedRow.id + ? updatedRow + : row + )) + )) + }; + const handleTempRowContentChange = (e) => { const { name, value } = e.target; console.log(name); diff --git a/compass/components/Table/ResourceTable.tsx b/compass/components/Table/ResourceTable.tsx index 5a9f93b..172f6d0 100644 --- a/compass/components/Table/ResourceTable.tsx +++ b/compass/components/Table/ResourceTable.tsx @@ -26,16 +26,6 @@ export default function ResourceTable({ data, setData }: ResourceTableProps ) { "employee", ]) - const handleRowUpdate = (updatedRow: Resource) => { - setData(prevData => ( - prevData.map(row => ( - row.id === updatedRow.id - ? updatedRow - : row - )) - )) - }; - const columns: ColumnDef[] = [ columnHelper.accessor("name", { header: () => ( @@ -47,7 +37,7 @@ export default function ResourceTable({ data, setData }: ResourceTableProps ) { ), }), diff --git a/compass/components/Table/RowOpenAction.tsx b/compass/components/Table/RowOpenAction.tsx index 970a8b8..0279b22 100644 --- a/compass/components/Table/RowOpenAction.tsx +++ b/compass/components/Table/RowOpenAction.tsx @@ -1,14 +1,14 @@ import Drawer from "@/components/Drawer/Drawer"; -import { useState } from "react"; -import { DataPoint } from "@/components/Table/Table"; +import DataPoint from "@/utils/models/DataPoint"; +import { Dispatch, SetStateAction, useState } from "react"; -type RowOpenActionProps = { +type RowOpenActionProps = { title: string, - rowData: DataPoint, - onRowUpdate: (updatedRow: DataPoint) => void; + rowData: T, + setData: Dispatch> } -export const RowOpenAction = ({ title, rowData, onRowUpdate }: RowOpenActionProps) => { +export function RowOpenAction({ title, rowData, setData }: RowOpenActionProps) { const [pageContent, setPageContent] = useState(""); const handleDrawerContentChange = (newContent: string) => { @@ -25,7 +25,7 @@ export const RowOpenAction = ({ title, rowData, onRowUpdate }: RowOpenActionProp editableContent={pageContent} rowContent={rowData} onSave={handleDrawerContentChange} - onRowUpdate={onRowUpdate} + setData={setData} > {pageContent} diff --git a/compass/components/Table/ServiceTable.tsx b/compass/components/Table/ServiceTable.tsx index bb91007..f029fca 100644 --- a/compass/components/Table/ServiceTable.tsx +++ b/compass/components/Table/ServiceTable.tsx @@ -27,16 +27,6 @@ export default function ServiceTable({ data, setData }: ServiceTableProps ) { "employee", ]) - const handleRowUpdate = (updatedRow: Service) => { - setData(prevData => ( - prevData.map(row => ( - row.id === updatedRow.id - ? updatedRow - : row - )) - )) - }; - const columns: ColumnDef[] = [ columnHelper.accessor("name", { header: () => ( @@ -48,7 +38,7 @@ export default function ServiceTable({ data, setData }: ServiceTableProps ) { ), }), @@ -106,5 +96,5 @@ export default function ServiceTable({ data, setData }: ServiceTableProps ) { }), ]; - return data={data} setData={setData} columns={columns} /> + return }; diff --git a/compass/components/Table/UserTable.tsx b/compass/components/Table/UserTable.tsx index 4cba982..20f0ca3 100644 --- a/compass/components/Table/UserTable.tsx +++ b/compass/components/Table/UserTable.tsx @@ -12,8 +12,6 @@ type UserTableProps = { setData: Dispatch> } -//TODO: Remove dependecy on `data`. Only `setData` is needed. Do for others as well - /** * Table componenet used for displaying users * @param props.users List of users to be displayed by the table @@ -48,7 +46,7 @@ export default function UserTable({ data, setData }: UserTableProps ) { ), }),