This commit is contained in:
phaichayon
2026-06-23 22:13:08 +07:00
parent 99a4087099
commit c1ecd5ea50
32 changed files with 3503 additions and 150 deletions

View File

@@ -1,15 +1,15 @@
'use client';
"use client";
import { useMemo } from 'react';
import { parseAsInteger, parseAsString, useQueryStates } from 'nuqs';
import { useSuspenseQuery } from '@tanstack/react-query';
import { DataTable } from '@/components/ui/table/data-table';
import { DataTableToolbar } from '@/components/ui/table/data-table-toolbar';
import { useDataTable } from '@/hooks/use-data-table';
import { getSortingStateParser } from '@/lib/parsers';
import { enquiriesQueryOptions } from '../api/queries';
import type { EnquiryReferenceData } from '../api/types';
import { getEnquiryColumns } from './enquiry-columns';
import { useMemo } from "react";
import { parseAsInteger, parseAsString, useQueryStates } from "nuqs";
import { useSuspenseQuery } from "@tanstack/react-query";
import { DataTable } from "@/components/ui/table/data-table";
import { DataTableToolbar } from "@/components/ui/table/data-table-toolbar";
import { useDataTable } from "@/hooks/use-data-table";
import { getSortingStateParser } from "@/lib/parsers";
import { enquiriesQueryOptions } from "../api/queries";
import type { EnquiryReferenceData } from "../api/types";
import { getEnquiryColumns } from "./enquiry-columns";
export function EnquiriesTable({
referenceData,
@@ -17,20 +17,30 @@ export function EnquiriesTable({
canUpdate,
canDelete,
canAssign,
canReassign
canReassign,
}: {
referenceData: EnquiryReferenceData;
workspace: 'lead' | 'enquiry';
workspace: "lead" | "enquiry";
canUpdate: boolean;
canDelete: boolean;
canAssign: boolean;
canReassign: boolean;
}) {
const columns = useMemo(
() => getEnquiryColumns({ referenceData, workspace, canUpdate, canDelete, canAssign, canReassign }),
[referenceData, workspace, canUpdate, canDelete, canAssign, canReassign]
() =>
getEnquiryColumns({
referenceData,
workspace,
canUpdate,
canDelete,
canAssign,
canReassign,
}),
[referenceData, workspace, canUpdate, canDelete, canAssign, canReassign],
);
const columnIds = columns.map((column) => column.id).filter(Boolean) as string[];
const columnIds = columns
.map((column) => column.id)
.filter(Boolean) as string[];
const [params] = useQueryStates({
page: parseAsInteger.withDefault(1),
perPage: parseAsInteger.withDefault(10),
@@ -40,7 +50,7 @@ export function EnquiriesTable({
priority: parseAsString,
branch: parseAsString,
customer: parseAsString,
sort: getSortingStateParser(columnIds).withDefault([])
sort: getSortingStateParser(columnIds).withDefault([]),
});
const filters = {
@@ -53,10 +63,11 @@ export function EnquiriesTable({
...(params.priority && { priority: params.priority }),
...(params.branch && { branch: params.branch }),
...(params.customer && { customer: params.customer }),
...(params.sort.length > 0 && { sort: JSON.stringify(params.sort) })
...(params.sort.length > 0 && { sort: JSON.stringify(params.sort) }),
};
const { data } = useSuspenseQuery(enquiriesQueryOptions(filters));
console.log("data", data);
const pageCount = Math.ceil(data.totalItems / params.perPage);
const { table } = useDataTable({
data: data.items,
@@ -65,8 +76,8 @@ export function EnquiriesTable({
shallow: true,
debounceMs: 500,
initialState: {
columnPinning: { right: ['actions'] }
}
columnPinning: { right: ["actions"] },
},
});
return (