add: more things

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-07-04 03:35:22 +08:00
parent 72298b86cd
commit b0f40e5133
78 changed files with 2116 additions and 1621 deletions
@@ -6,6 +6,7 @@ import { useTiers } from "@/contexts/AdminTiersContext";
import DataTable from "@/components/generic/Table/DataTable";
import { FilterSheet } from "@/components/generic/Sheet/FilterSheet";
import { RestoreDialog } from "@/components/generic/Dialogs/RestoreDialog";
import { PermanentDeleteDialog } from "@/components/generic/Dialogs/PermanentDeleteDialog";
import { buildDataColumns, columnPinning } from "../../config/tiers/plans/archive/columns.config";
import { buildToolbarActions } from "../../config/tiers/plans/archive/toolbar.config";
@@ -20,10 +21,13 @@ export default function ArchivedTierPlansTable() {
const {
plans, planAttributes, planPagination, setPlanPagination,
loading, fetchPlans, restorePlan, bulkRestorePlans,
permanentlyDeletePlan, bulkPermanentlyDeletePlans, fetchPlanPermanentDeleteImpact,
} = useTiers();
const [restoreTarget, setRestoreTarget] = useState(null);
const [restoreIds, setRestoreIds] = useState(null);
const [deleteTarget, setDeleteTarget] = useState(null);
const [deleteIds, setDeleteIds] = useState(null);
const tableRefsRef = useRef({
getFilters: () => [],
@@ -49,6 +53,7 @@ export default function ArchivedTierPlansTable() {
const rowActions = buildRowActions({
navigate,
onRestore: (row) => setRestoreTarget(row),
onDelete: (row) => setDeleteTarget(row),
});
const toolbarActions = buildToolbarActions({
@@ -65,6 +70,8 @@ export default function ArchivedTierPlansTable() {
exportConfig,
onRestore: (row) => setRestoreTarget(row),
onRestoreMany: (ids) => setRestoreIds(ids),
onDelete: (row) => setDeleteTarget(row),
onDeleteMany: (ids) => setDeleteIds(ids),
getTableInstance: () => tableRefsRef.current.tableInstance,
});
@@ -85,6 +92,18 @@ export default function ArchivedTierPlansTable() {
});
};
const handleDeleteSuccess = () => {
setDeleteTarget(null);
setDeleteIds(null);
tableRefsRef.current.resetSelection?.();
fetchArchived({
page: 1,
limit: planPagination?.limit ?? 10,
filters: tableRefsRef.current.getFilters(),
sort: tableRefsRef.current.getSort(),
});
};
return (
<>
<DataTable
@@ -135,6 +154,30 @@ export default function ArchivedTierPlansTable() {
loading={loading}
onSuccess={handleRestoreSuccess}
/>
{/* Single permanent delete */}
<PermanentDeleteDialog
open={!!deleteTarget}
onOpenChange={(v) => !v && setDeleteTarget(null)}
entity={deleteTarget}
entityLabel="Plan"
getName={(r) => r?.label}
onDelete={(entity) => permanentlyDeletePlan(entity?.plan_id)}
onImpactCheck={() => fetchPlanPermanentDeleteImpact(deleteTarget?.plan_id)}
loading={loading}
onSuccess={handleDeleteSuccess}
/>
{/* Bulk permanent delete */}
<PermanentDeleteDialog
open={!!deleteIds}
onOpenChange={(v) => !v && setDeleteIds(null)}
ids={deleteIds ?? []}
entityLabel="Plan"
onDelete={({ ids }) => bulkPermanentlyDeletePlans(ids)}
loading={loading}
onSuccess={handleDeleteSuccess}
/>
</>
);
}