copper-ui
Version:
Modern React UI components library with TypeScript support, built on top of Ant Design
129 lines • 4.43 kB
TypeScript
import { ColumnDef } from '@tanstack/react-table';
import { DatePickerProps, InputNumberProps, InputProps, SelectProps } from 'antd';
import { RangePickerProps } from 'antd/es/date-picker';
import { CSSProperties, ReactNode } from '../../../../node_modules/.pnpm/react@19.1.1/node_modules/react';
import { TTableCell } from './cell.types';
import { TTableFilterOption, TTableFilterType } from './filter.types';
import { TTableSortOrder } from './sort.types';
import { TTableItem } from './table.types';
export type TTableColumnSort = {
enabled: boolean;
default?: TTableSortOrder;
id?: string;
};
export type TTableColumnFilterSelectProps = Omit<SelectProps, "value" | "onChange" | "options" | "className" | "style" | "styles">;
export type TTableColumnFilter = {
type: "multiselect";
options: TTableFilterOption[];
id?: string;
className?: string;
style?: CSSProperties;
styles?: SelectProps["styles"];
props?: Omit<SelectProps, "value" | "onChange" | "options" | "mode" | "className" | "style" | "styles">;
} | {
type: "select";
options: TTableFilterOption[];
id?: string;
className?: string;
style?: CSSProperties;
styles?: SelectProps["styles"];
props?: Omit<SelectProps, "value" | "onChange" | "options" | "className" | "style" | "styles">;
} | {
type: "date";
id?: string;
className?: string;
style?: CSSProperties;
styles?: DatePickerProps["styles"];
props?: Omit<DatePickerProps, "value" | "onChange" | "open" | "onOpenChange" | "className" | "style" | "styles" | "format"> & {
format: string;
};
} | {
type: "date-range";
id?: string;
className?: string;
style?: CSSProperties;
styles?: DatePickerProps["styles"];
props?: Omit<RangePickerProps, "value" | "onChange" | "open" | "onOpenChange" | "className" | "style" | "styles" | "format"> & {
format: string;
};
} | {
type: "input";
id?: string;
className?: string;
style?: CSSProperties;
styles?: CSSProperties;
props?: Omit<InputProps, "value" | "onChange" | "className" | "style">;
} | {
type: "input-number";
id?: string;
className?: string;
style?: CSSProperties;
styles?: CSSProperties;
props?: Omit<InputNumberProps, "value" | "onChange" | "className" | "style">;
} | {
type: Exclude<TTableFilterType, "multiselect" | "select" | "custom" | "date" | "date-range" | "input" | "input-number">;
id?: string;
className?: string;
style?: CSSProperties;
styles?: CSSProperties;
props?: Record<string, unknown>;
} | {
type: "custom";
isMultiple?: false;
render: (value: {
value: string;
label: string;
}, onChange: (value: {
value: string;
label: string;
}) => void, children: ReactNode) => ReactNode;
id?: string;
className?: string;
style?: CSSProperties;
styles?: CSSProperties;
props?: Record<string, unknown>;
} | {
type: "custom";
isMultiple: true;
render: (value: {
value: string;
label: string;
}[], onChange: (value: {
value: string;
label: string;
}[]) => void, children: ReactNode) => ReactNode;
id?: string;
className?: string;
style?: CSSProperties;
styles?: CSSProperties;
props?: Record<string, unknown>;
};
export type TTableColumnMapping = {
value: string | number;
label: string | number;
};
export type TTableColumn<TItem extends TTableItem> = {
sort?: TTableColumnSort;
filter?: TTableColumnFilter;
dataType?: "string" | "number";
definition: ColumnDef<TItem> & {
id: string;
cell: TTableCell<TItem>;
headerTooltip?: {
content: string;
};
mapping?: TTableColumnMapping[];
headerRightBorder?: boolean;
};
};
export type TTableColumnGroup<TItem extends TTableItem> = {
header: string;
headerTooltip?: {
content: string;
};
columns: readonly TTableColumnOrGroup<TItem>[];
};
export type TTableColumnOrGroup<TItem extends TTableItem> = TTableColumn<TItem> | TTableColumnGroup<TItem>;
export declare const isColumnGroup: <TItem extends TTableItem>(col: TTableColumnOrGroup<TItem>) => col is TTableColumnGroup<TItem>;
export declare const flattenColumns: <TItem extends TTableItem>(cols: readonly TTableColumnOrGroup<TItem>[]) => TTableColumn<TItem>[];
//# sourceMappingURL=col.types.d.ts.map