Quitar basurilla
This commit is contained in:
parent
7f6dc09b7e
commit
32bbc96c51
@ -1,137 +0,0 @@
|
|||||||
import { SimpleSearchInput } from "@erp/core/components";
|
|
||||||
import { DataTable, SkeletonDataTable } from "@repo/rdx-ui/components";
|
|
||||||
import { useCallback, useState } from "react";
|
|
||||||
import { useNavigate } from "react-router-dom";
|
|
||||||
|
|
||||||
import { useTranslation } from "../../../i18n";
|
|
||||||
import type { CustomerSummaryFormData, CustomersPageFormData } from "../../schemas";
|
|
||||||
|
|
||||||
import { useCustomersListColumns } from "./use-customers-list-columns";
|
|
||||||
|
|
||||||
export type CustomerUpdateCompProps = {
|
|
||||||
customersPage: CustomersPageFormData;
|
|
||||||
loading?: boolean;
|
|
||||||
|
|
||||||
pageIndex: number;
|
|
||||||
pageSize: number;
|
|
||||||
onPageChange?: (pageNumber: number) => void;
|
|
||||||
onPageSizeChange?: (pageSize: number) => void;
|
|
||||||
|
|
||||||
searchValue: string;
|
|
||||||
onSearchChange: (value: string) => void;
|
|
||||||
|
|
||||||
onRowClick?: (
|
|
||||||
row: CustomerSummaryFormData,
|
|
||||||
index: number,
|
|
||||||
event: React.MouseEvent<HTMLTableRowElement>
|
|
||||||
) => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const CustomersListGrid = ({
|
|
||||||
customersPage,
|
|
||||||
loading,
|
|
||||||
pageIndex,
|
|
||||||
pageSize,
|
|
||||||
onPageChange,
|
|
||||||
onPageSizeChange,
|
|
||||||
searchValue,
|
|
||||||
onSearchChange,
|
|
||||||
onRowClick,
|
|
||||||
}: CustomerUpdateCompProps) => {
|
|
||||||
const { t } = useTranslation();
|
|
||||||
const navigate = useNavigate();
|
|
||||||
const { items, total_items } = customersPage;
|
|
||||||
|
|
||||||
const [statusFilter, setStatusFilter] = useState("todas");
|
|
||||||
|
|
||||||
const columns = useCustomersListColumns({
|
|
||||||
onEdit: (customer) => navigate(`/customers/${customer.id}/edit`),
|
|
||||||
onView: (customer) => navigate(`/customers/${customer.id}`),
|
|
||||||
onDelete: (customer) => null, //confirmDelete(inv.id),
|
|
||||||
});
|
|
||||||
|
|
||||||
// Navegación centralizada (click/teclado)
|
|
||||||
const goToRow = useCallback(
|
|
||||||
(id: string, newTab = false) => {
|
|
||||||
const url = `/customers/${id}`;
|
|
||||||
if (newTab) {
|
|
||||||
window.open(url, "_blank", "noopener,noreferrer");
|
|
||||||
} else {
|
|
||||||
navigate(url);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[navigate]
|
|
||||||
);
|
|
||||||
|
|
||||||
// Handlers de búsqueda
|
|
||||||
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) =>
|
|
||||||
onSearchChange(e.target.value);
|
|
||||||
const handleClear = () => onSearchChange("");
|
|
||||||
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
|
||||||
if (e.key === "Enter") {
|
|
||||||
// Envío inmediato: forzar “salto” del debounce
|
|
||||||
onSearchChange((e.target as HTMLInputElement).value);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*const handleRowClick = useCallback(
|
|
||||||
(customer: CustomerSummaryFormData, _i: number, e: React.MouseEvent) => {
|
|
||||||
const url = `/customer-invoices/${customer.id}/edit`;
|
|
||||||
if (e.metaKey || e.ctrlKey) { window.open(url, "_blank", "noopener,noreferrer"); return; }
|
|
||||||
preview.open(customer);
|
|
||||||
},
|
|
||||||
[preview]
|
|
||||||
);*/
|
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
return (
|
|
||||||
<div className="flex flex-col gap-4">
|
|
||||||
<SkeletonDataTable
|
|
||||||
columns={columns.length}
|
|
||||||
footerProps={{ pageIndex, pageSize, totalItems: total_items ?? 0 }}
|
|
||||||
rows={Math.max(6, pageSize)}
|
|
||||||
showFooter
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render principal
|
|
||||||
return (
|
|
||||||
<div className="flex flex-col gap-4">
|
|
||||||
{/* Barra de filtros */}
|
|
||||||
<div className="flex flex-col sm:flex-row gap-4 mb-6">
|
|
||||||
<SimpleSearchInput loading={loading} onSearchChange={onSearchChange} />
|
|
||||||
</div>
|
|
||||||
<div className="relative flex">
|
|
||||||
<div className={/*preview.isPinned ? "flex-1 mr-[500px]" : */ "flex-1"}>
|
|
||||||
<DataTable
|
|
||||||
columns={columns}
|
|
||||||
data={items}
|
|
||||||
enablePagination
|
|
||||||
enableRowSelection
|
|
||||||
manualPagination
|
|
||||||
onPageChange={onPageChange}
|
|
||||||
onPageSizeChange={onPageSizeChange}
|
|
||||||
onRowClick={() => null /*handleRowClick*/}
|
|
||||||
pageIndex={pageIndex}
|
|
||||||
pageSize={pageSize}
|
|
||||||
readOnly
|
|
||||||
totalItems={total_items}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/*<preview.Preview>
|
|
||||||
{({ item, isPinned, close, togglePin }) => (
|
|
||||||
<InvoicePreviewPanel
|
|
||||||
invoice={item}
|
|
||||||
isPinned={isPinned}
|
|
||||||
onClose={close}
|
|
||||||
onTogglePin={togglePin}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</preview.Preview>*/}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@ -1 +0,0 @@
|
|||||||
export * from "../../../list/ui/pages/list-customers-page";
|
|
||||||
Loading…
Reference in New Issue
Block a user