From d5e9208de77fa1226faa8994244e1863c439529e Mon Sep 17 00:00:00 2001 From: Ajay Ghanwat Date: Tue, 11 Nov 2025 16:42:00 +0530 Subject: [PATCH] New Changes with Table --- scripts/make-dist.mjs | 4 +-- src/index.ts | 2 +- src/types/table/types.ts | 55 +++++++++++++++++++++++++++++++++++----- 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/scripts/make-dist.mjs b/scripts/make-dist.mjs index c6d7aa8..8e6c90e 100644 --- a/scripts/make-dist.mjs +++ b/scripts/make-dist.mjs @@ -32,7 +32,7 @@ export { default as Table } from "../src/components/Table.astro"; export { default as VideoPlayer } from "../src/components/VideoPlayer.astro"; export { default as WebRtcPlayer } from "../src/components/WebRtcPlayer.astro"; export { cn } from "../src/utils/cn.js"; -export { Column, TableProps, FetchTableRequest, FetchTableResponse } from "../src/types/table/types.js"; +export { Column, TableProps, TableResponse, TableRequestBody, ClientFetchOptions, ClientFilter, ClientJoin } from "../src/types/table/types.js"; `; const indexDts = `/* Auto-generated types (lightweight) */ @@ -63,7 +63,7 @@ export const Tooltip: any; export const VideoPlayer: any; export const WebRtcPlayer: any; export function cn(...classes: Array): string; -export type { Column, TableProps, FetchTableRequest, FetchTableResponse } from "../src/types/table/types.js"; +export type { Column, TableProps, TableResponse, TableRequestBody, ClientFetchOptions, ClientFilter, ClientJoin } from "../src/types/table/types.js"; `; fs.writeFileSync(path.join(distDir, "index.js"), indexJs, "utf8"); diff --git a/src/index.ts b/src/index.ts index 3821ed2..cd8a5a2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,4 +20,4 @@ export { default as TimePicker } from "./components/TimePicker.astro"; export { default as Table } from "./components/Table.astro"; export { default as Tooltip } from "./components/Tooltip.astro"; export { cn } from "./utils/cn.js"; -export type { Column, TableProps, FetchTableRequest, FetchTableResponse } from "./types/table/types.js"; \ No newline at end of file +export type { Column, TableProps, TableResponse, TableRequestBody, ClientFetchOptions, ClientFilter, ClientJoin } from "./types/table/types.js"; \ No newline at end of file diff --git a/src/types/table/types.ts b/src/types/table/types.ts index b5db779..2e6aed4 100644 --- a/src/types/table/types.ts +++ b/src/types/table/types.ts @@ -38,15 +38,56 @@ export interface TableProps { rowClick?: string; } -export type FetchTableRequest = { +export type ClientJoin = { + type?: "INNER" | "LEFT" | "RIGHT"; + table: string; + alias?: string; + on: string; + selectCols?: string[]; +}; + +export type ClientFilter = { + column: string; + operator: + | "=" | "!=" | ">" | "<" | ">=" | "<=" + | "ILIKE" | "LIKE" + | "IN" | "ANY" + | "@>" + | "IS NULL" | "IS NOT NULL"; + value?: unknown; + logical?: "AND" | "OR"; +}; + +export type ClientFetchOptions = { + table: string; + alias?: string; + columns: string[]; + joinSelectCols?: string[]; + joins?: ClientJoin[]; + sortable?: Record; + searchColumns?: string[]; + softDeleteCol?: string; + softDeleteOp?: "IS NULL" | "=" | "!="; + softDeleteValue?: unknown; + defaultFilters?: ClientFilter[]; +}; + +export type TableRequest = { page: number; pageSize: number; - sortKey: string; - sortOrder: string; - search: string; -} + sortKey?: string; + sortOrder?: "ASC" | "DESC"; + search?: string; + filters?: ClientFilter[]; +}; -export interface FetchTableResponse { +export type TableRequestBody = { + req: TableRequest; + opts: ClientFetchOptions; +}; + +export interface TableResponse { data: T[]; total: number; -} \ No newline at end of file +} +