import { Link, useLoaderData } from "react-router"; import { useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; import RowEditFetcher from "~/modules/rows/fetchers/RowEditFetcher"; import RowNewFetcher from "~/modules/rows/fetchers/RowNewFetcher"; import ExternalLinkEmptyIcon from "~/components/ui/icons/ExternalLinkEmptyIcon"; import SlideOverWideEmpty from "~/components/ui/slideOvers/SlideOverWideEmpty"; import { useAppOrAdminData } from "~/utils/data/useAppOrAdminData"; import { RowWithDetails } from "~/utils/db/entities/rows.db.server"; import EntityHelper from "~/utils/helpers/EntityHelper"; import RowHelper from "~/utils/helpers/RowHelper"; import { Rows_List } from "../routes/Rows_List.server"; import RowsViewRoute from "./RowsViewRoute"; import { getEntityPermission, getUserHasPermission } from "~/utils/helpers/PermissionsHelper"; import { translateEntityTitle } from "~/utils/i18n/translateLabel"; export default function RowsAllInOneRoute() { const data = useLoaderData(); const { t, i18n } = useTranslation(); const appOrAdminData = useAppOrAdminData(); const [adding, setAdding] = useState(false); const [editing, setEditing] = useState(); const [rows, setRows] = useState([]); useEffect(() => { setRows(data.rowsData.items); }, [data.rowsData.items]); function onCreated(row: RowWithDetails) { setRows([row, ...rows]); setAdding(false); } function onUpdated(row: RowWithDetails) { setRows(rows.map((r) => (r.id === row.id ? row : r))); setEditing(undefined); } function onDeleted(row: RowWithDetails | undefined) { if (row) { setRows(rows.filter((r) => r.id !== row.id)); setEditing(undefined); } } return (
setAdding(true)} onEditRow={(row) => setEditing(row)} saveCustomViews={true} permissions={{ create: getUserHasPermission(appOrAdminData, getEntityPermission(data.rowsData.entity, "create")), }} currentSession={{ user: appOrAdminData.user, isSuperAdmin: appOrAdminData.isSuperAdmin, }} /> setAdding(false)} > setEditing(undefined)} buttons={ <> {t("shared.openDetails")}
); }