ivt
Version:
Ivt Components Library
79 lines (74 loc) • 3.06 kB
TypeScript
import { Table } from '@tanstack/react-table';
import React__default from 'react';
import { DefaultValues } from 'react-hook-form';
import { ZodObject, z } from 'zod';
import { BadgeVariants } from '../badge/index.js';
import * as react_jsx_runtime from 'react/jsx-runtime';
import 'class-variance-authority/types';
import 'class-variance-authority';
/** biome-ignore-all lint/suspicious/noExplicitAny: <any> */
type DefaultFilterSide = "top" | "bottom" | "left" | "right";
interface TableFilterBaseProps<TData> {
table: Table<TData>;
defaultSide?: DefaultFilterSide;
disabled?: boolean;
}
type FieldFilterType = "text" | "number" | "date" | "select" | "checkbox" | "cnpj" | "dateRange" | "numeric_range" | "multiselect" | "exactString" | "exactNumber";
type FieldConfig<TFormValues> = {
name: keyof TFormValues extends string ? keyof TFormValues | (string & {}) : string;
label: string;
placeholder: string;
type: FieldFilterType;
allowNegative?: boolean;
isCurrency?: boolean;
isPercent?: boolean;
filterType?: "currency";
currency?: "BRL";
options?: {
label: string;
value: any;
icon?: React__default.ReactNode;
}[];
items?: string[];
style?: "badge";
description?: string;
decimalScale?: number;
};
interface TableFilterProps<TData = unknown, TSchema extends ZodObject<any> = ZodObject<any>, TFormValues = z.infer<TSchema>> extends TableFilterBaseProps<TData> {
title: string;
schema: TSchema;
fieldConfigs: FieldConfig<TFormValues>[];
defaultFilterValues: DefaultValues<TFormValues>;
prepareFilterStorage?: (data: TFormValues) => TFormValues;
appliedFiltersCount?: number;
setAppliedFiltersCount?: (count: number) => void;
filterStorage?: any;
setFilterStorage?: (value: any) => void;
pagination?: {
pageIndex: number;
pageSize: number;
};
setPagination?: (value: {
pageIndex: number;
pageSize: number;
}) => void;
resetKey?: number;
applyFiltersOnMount?: boolean;
onClearFilters?: () => void;
/**
* Callback chamado quando filtros são aplicados.
* Use para filtragem server-side (API).
* Recebe os valores dos filtros após validação.
*/
onApplyFilters?: (filters: TFormValues) => void;
badgeMultiselectVariant?: BadgeVariants;
badgeMultiselectSubtle?: boolean;
}
type Operator = "eq" | "gt" | "lt" | "gte" | "lte";
type NumericFilterValue = {
operator: Operator;
value: number | null;
};
declare function TableFilter<TData, TSchema extends ZodObject<any>>({ table, defaultSide, disabled, title, schema, fieldConfigs, defaultFilterValues, appliedFiltersCount, setAppliedFiltersCount, applyFiltersOnMount, onClearFilters, onApplyFilters, badgeMultiselectVariant, badgeMultiselectSubtle, }: TableFilterProps<TData, TSchema>): react_jsx_runtime.JSX.Element;
export { TableFilter };
export type { DefaultFilterSide, FieldConfig, FieldFilterType, NumericFilterValue, Operator, TableFilterBaseProps, TableFilterProps };