From 1a2241c40e10193c5ff7008a7b7b36cc1d855d96 Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Tue, 25 Mar 2025 15:55:45 +0900 Subject: initial commit --- types/table.d.ts | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 types/table.d.ts (limited to 'types/table.d.ts') diff --git a/types/table.d.ts b/types/table.d.ts new file mode 100644 index 00000000..207a0c19 --- /dev/null +++ b/types/table.d.ts @@ -0,0 +1,78 @@ +import type { ColumnSort, Row } from "@tanstack/react-table" +import { type SQL } from "drizzle-orm" +import { type z } from "zod" + +import { type DataTableConfig } from "@/config/data-table" +import { type filterSchema } from "@/lib/parsers" + +export type Prettify = { + [K in keyof T]: T[K] +} & {} + +export type StringKeyOf = Extract + +export interface SearchParams { + [key: string]: string | string[] | undefined +} + +export interface Option { + label: string + value: string | number + icon?: React.ComponentType<{ className?: string }> + count?: number +} + +export interface ExtendedColumnSort extends Omit { + id: StringKeyOf +} + +export type ExtendedSortingState = ExtendedColumnSort[] + +export type ColumnType = DataTableConfig["columnTypes"][number] + +export type FilterOperator = DataTableConfig["globalOperators"][number] + +export type JoinOperator = DataTableConfig["joinOperators"][number]["value"] + +export interface DataTableFilterField { + id: StringKeyOf + label: string + placeholder?: string + options?: Option[] +} + +export interface DataTableAdvancedFilterField + extends DataTableFilterField { + type: ColumnType +} + +export type Filter = Prettify< + Omit, "id"> & { + id: StringKeyOf + } +> + +export interface DataTableRowAction { + row: Row + type: "responseDetail"|"signature"|"update" | "delete" | "user" | "pemission" | "invite" | "items" | "attachment" |"comments" | "open" | "select" | "files" +} + +export interface QueryBuilderOpts { + where?: SQL + orderBy?: SQL + distinct?: boolean + nullish?: boolean +} + + +declare module '@tanstack/react-table' { + interface ColumnMeta { + // Custom column meta properties + excelHeader?: string + group?: string + type?: string + paddingFactor?: number + minWidth?: number + maxWidth?: number + } +} -- cgit v1.2.3